Imported Upstream version 0.26.1 sandbox/kevinthierry/upstream upstream upstream/0.26.1
authorKévin THIERRY <kevin.thierry@open.eurogiciel.org>
Mon, 22 Dec 2014 13:00:56 +0000 (14:00 +0100)
committerKévin THIERRY <kevin.thierry@open.eurogiciel.org>
Mon, 22 Dec 2014 13:00:56 +0000 (14:00 +0100)
390 files changed:
.tarball-version
.version
ChangeLog
Makefile.am
Makefile.common [new file with mode: 0644]
Makefile.in
NEWS
THANKS
ccode/Makefile.am
ccode/Makefile.in
ccode/ccode.vapi
ccode/valaccode.h
ccode/valaccodeassignment.c
ccode/valaccodebinaryexpression.c
ccode/valaccodeblock.c
ccode/valaccodebreakstatement.c
ccode/valaccodecasestatement.c
ccode/valaccodecastexpression.c
ccode/valaccodecommaexpression.c
ccode/valaccodecomment.c
ccode/valaccodeconditionalexpression.c
ccode/valaccodeconstant.c
ccode/valaccodecontinuestatement.c
ccode/valaccodedeclaration.c
ccode/valaccodedeclaration.vala
ccode/valaccodedeclarator.c
ccode/valaccodedostatement.c
ccode/valaccodeelementaccess.c
ccode/valaccodeemptystatement.c
ccode/valaccodeenum.c
ccode/valaccodeenumvalue.c
ccode/valaccodeexpression.c
ccode/valaccodeexpressionstatement.c
ccode/valaccodefile.c
ccode/valaccodeforstatement.c
ccode/valaccodefragment.c
ccode/valaccodefunction.c
ccode/valaccodefunction.vala
ccode/valaccodefunctioncall.c
ccode/valaccodefunctiondeclarator.c
ccode/valaccodegotostatement.c
ccode/valaccodeidentifier.c
ccode/valaccodeifsection.c
ccode/valaccodeifstatement.c
ccode/valaccodeincludedirective.c
ccode/valaccodeinitializerlist.c
ccode/valaccodeinvalidexpression.c
ccode/valaccodelabel.c
ccode/valaccodelinedirective.c
ccode/valaccodemacroreplacement.c
ccode/valaccodememberaccess.c
ccode/valaccodemodifiers.c
ccode/valaccodemodifiers.vala
ccode/valaccodenewline.c
ccode/valaccodenode.c
ccode/valaccodeoncesection.c
ccode/valaccodeparameter.c
ccode/valaccodeparenthesizedexpression.c
ccode/valaccodereturnstatement.c
ccode/valaccodestruct.c
ccode/valaccodestruct.vala
ccode/valaccodeswitchstatement.c
ccode/valaccodetypedefinition.c
ccode/valaccodeunaryexpression.c
ccode/valaccodevariabledeclarator.c
ccode/valaccodevariabledeclarator.vala
ccode/valaccodewhilestatement.c
ccode/valaccodewriter.c
codegen/Makefile.am
codegen/Makefile.in
codegen/codegen.vapi
codegen/valaccodearraymodule.c
codegen/valaccodearraymodule.vala
codegen/valaccodeassignmentmodule.c
codegen/valaccodeassignmentmodule.vala
codegen/valaccodeattribute.c
codegen/valaccodeattribute.vala
codegen/valaccodebasemodule.c
codegen/valaccodebasemodule.vala
codegen/valaccodecompiler.c
codegen/valaccodecompiler.vala
codegen/valaccodecontrolflowmodule.c
codegen/valaccodedelegatemodule.c
codegen/valaccodememberaccessmodule.c
codegen/valaccodemethodcallmodule.c
codegen/valaccodemethodmodule.c
codegen/valaccodemethodmodule.vala
codegen/valaccodestructmodule.c
codegen/valaccodestructmodule.vala
codegen/valaclassregisterfunction.c
codegen/valaclassregisterfunction.vala
codegen/valacodegen.h
codegen/valactype.c
codegen/valaenumregisterfunction.c
codegen/valagasyncmodule.c
codegen/valagasyncmodule.vala
codegen/valagdbusclientmodule.c
codegen/valagdbusclientmodule.vala
codegen/valagdbusmodule.c
codegen/valagdbusmodule.vala
codegen/valagdbusservermodule.c
codegen/valagdbusservermodule.vala
codegen/valagerrormodule.c
codegen/valagerrormodule.vala
codegen/valagirwriter.c
codegen/valagirwriter.vala
codegen/valagobjectmodule.c
codegen/valagobjectmodule.vala
codegen/valagsignalmodule.c
codegen/valagsignalmodule.vala
codegen/valagtkmodule.c
codegen/valagtkmodule.vala
codegen/valagtypemodule.c
codegen/valagtypemodule.vala
codegen/valagvariantmodule.c
codegen/valagvariantmodule.vala
codegen/valainterfaceregisterfunction.c
codegen/valastructregisterfunction.c
codegen/valatyperegisterfunction.c
codegen/valatyperegisterfunction.vala
compiler/Makefile.am
compiler/Makefile.in
compiler/valacompiler.c
compiler/valacompiler.vala
configure
configure.ac
doc/Makefile.am
doc/Makefile.in
doc/vala/Makefile.in
gee/Makefile.am
gee/Makefile.in
gee/arraylist.c
gee/collection.c
gee/hashmap.c
gee/hashmap.vala
gee/hashset.c
gee/iterable.c
gee/iterator.c
gee/list.c
gee/map.c
gee/mapiterator.c
gobject-introspection/Makefile.in
gobject-introspection/scannerlexer.c
libvala.pc.in
tests/Makefile.am
tests/Makefile.in
tests/basic-types/arrays.vala
tests/basic-types/bug571486.vala [new file with mode: 0644]
tests/basic-types/bug678791.vala [new file with mode: 0644]
tests/enums/flags.vala [new file with mode: 0644]
tests/errors/errors.vala
tests/methods/bug652098.vala [new file with mode: 0644]
tests/methods/bug736235.vala [new file with mode: 0644]
tests/objects/bug647018.vala [new file with mode: 0644]
tests/structs/structs.vala
vala.m4
vala/Makefile.am
vala/Makefile.in
vala/vala.h
vala/vala.vapi
vala/valaaddressofexpression.c
vala/valaarraycreationexpression.c
vala/valaarraycreationexpression.vala
vala/valaarraytype.c
vala/valaarraytype.vala
vala/valaassignment.c
vala/valaattribute.c
vala/valabaseaccess.c
vala/valabasicblock.c
vala/valabinaryexpression.c
vala/valabinaryexpression.vala
vala/valablock.c
vala/valabooleanliteral.c
vala/valabooleantype.c
vala/valabreakstatement.c
vala/valacastexpression.c
vala/valacatchclause.c
vala/valacharacterliteral.c
vala/valaclass.c
vala/valaclass.vala
vala/valaclasstype.c
vala/valacodecontext.c
vala/valacodecontext.vala
vala/valacodegenerator.c
vala/valacodenode.c
vala/valacodevisitor.c
vala/valacodewriter.c
vala/valacodewriter.vala
vala/valacomment.c
vala/valaconditionalexpression.c
vala/valaconstant.c
vala/valaconstructor.c
vala/valacontinuestatement.c
vala/valacreationmethod.c
vala/valadatatype.c
vala/valadeclarationstatement.c
vala/valadelegate.c
vala/valadelegatetype.c
vala/valadeletestatement.c
vala/valadestructor.c
vala/valadostatement.c
vala/valadynamicmethod.c
vala/valadynamicproperty.c
vala/valadynamicsignal.c
vala/valaelementaccess.c
vala/valaemptystatement.c
vala/valaenum.c
vala/valaenumvalue.c
vala/valaenumvaluetype.c
vala/valaerrorcode.c
vala/valaerrordomain.c
vala/valaerrortype.c
vala/valaexpression.c
vala/valaexpressionstatement.c
vala/valafield.c
vala/valafield.vala
vala/valafieldprototype.c
vala/valafloatingtype.c
vala/valaflowanalyzer.c
vala/valaforeachstatement.c
vala/valaforstatement.c
vala/valagenerictype.c
vala/valagenieparser.c
vala/valagenieparser.vala
vala/valageniescanner.c
vala/valagircomment.c
vala/valagirparser.c
vala/valagirparser.vala
vala/valaifstatement.c
vala/valainitializerlist.c
vala/valainitializerlist.vala
vala/valaintegerliteral.c
vala/valaintegertype.c
vala/valainterface.c
vala/valainterfacetype.c
vala/valainvalidtype.c
vala/valalambdaexpression.c
vala/valaliteral.c
vala/valalocalvariable.c
vala/valalockstatement.c
vala/valaloop.c
vala/valamarkupreader.c
vala/valamemberaccess.c
vala/valamemberaccess.vala
vala/valamemberinitializer.c
vala/valamemberinitializer.vala
vala/valamethod.c
vala/valamethod.vala
vala/valamethodcall.c
vala/valamethodcall.vala
vala/valamethodtype.c
vala/valanamedargument.c
vala/valanamespace.c
vala/valanullliteral.c
vala/valanulltype.c
vala/valaobjectcreationexpression.c
vala/valaobjectcreationexpression.vala
vala/valaobjecttype.c
vala/valaobjecttypesymbol.c
vala/valaparameter.c
vala/valaparser.c
vala/valaparser.vala
vala/valaphifunction.c
vala/valapointerindirection.c
vala/valapointertype.c
vala/valapostfixexpression.c
vala/valaproperty.c
vala/valapropertyaccessor.c
vala/valapropertyaccessor.vala
vala/valarealliteral.c
vala/valareferencetransferexpression.c
vala/valaregexliteral.c
vala/valaregexliteral.vala
vala/valareport.c
vala/valareturnstatement.c
vala/valascanner.c
vala/valascope.c
vala/valasemanticanalyzer.c
vala/valasemanticanalyzer.vala
vala/valasignal.c
vala/valasignaltype.c
vala/valasizeofexpression.c
vala/valasliceexpression.c
vala/valasourcefile.c
vala/valasourcereference.c
vala/valastatementlist.c
vala/valastringliteral.c
vala/valastruct.c
vala/valastruct.vala
vala/valastructvaluetype.c
vala/valasubroutine.c
vala/valaswitchlabel.c
vala/valaswitchsection.c
vala/valaswitchstatement.c
vala/valasymbol.c
vala/valasymbolresolver.c
vala/valasymbolresolver.vala
vala/valatargetvalue.c
vala/valatemplate.c
vala/valathrowstatement.c
vala/valatrystatement.c
vala/valatuple.c
vala/valatypecheck.c
vala/valatypeofexpression.c
vala/valatypeparameter.c
vala/valatypesymbol.c
vala/valaunaryexpression.c
vala/valaunlockstatement.c
vala/valaunresolvedsymbol.c
vala/valaunresolvedtype.c
vala/valausingdirective.c
vala/valavaluetype.c
vala/valavariable.c
vala/valavoidtype.c
vala/valawhilestatement.c
vala/valayieldstatement.c
vapi/Makefile.am
vapi/Makefile.in
vapi/atk.vapi
vapi/atspi-2.vapi
vapi/cairo-xcb.vapi
vapi/cairo.vapi
vapi/clutter-1.0.vapi
vapi/clutter-gst-1.0.deps
vapi/cogl-pango-1.0.vapi
vapi/gdk-3.0.vapi
vapi/gdk-pixbuf-2.0.vapi
vapi/gdl-3.0.vapi
vapi/geocode-glib-1.0.vapi
vapi/gio-2.0.vapi
vapi/gio-unix-2.0.vapi
vapi/glib-2.0.vapi
vapi/gobject-2.0.vapi
vapi/gobject-introspection-1.0.vapi
vapi/goocanvas.vapi
vapi/gstreamer-1.0.vapi
vapi/gstreamer-allocators-1.0.deps [new file with mode: 0644]
vapi/gstreamer-allocators-1.0.vapi [new file with mode: 0644]
vapi/gstreamer-app-1.0.vapi
vapi/gstreamer-audio-1.0.vapi
vapi/gstreamer-base-1.0.vapi
vapi/gstreamer-check-1.0.vapi
vapi/gstreamer-controller-1.0.vapi
vapi/gstreamer-fft-1.0.vapi
vapi/gstreamer-net-1.0.vapi
vapi/gstreamer-pbutils-1.0.vapi
vapi/gstreamer-riff-1.0.deps [new file with mode: 0644]
vapi/gstreamer-riff-1.0.vapi [new file with mode: 0644]
vapi/gstreamer-rtp-1.0.vapi
vapi/gstreamer-rtsp-1.0.vapi
vapi/gstreamer-rtsp-server-1.0.deps
vapi/gstreamer-rtsp-server-1.0.vapi
vapi/gstreamer-sdp-1.0.vapi
vapi/gstreamer-tag-1.0.vapi
vapi/gstreamer-video-1.0.vapi
vapi/gtk+-2.0.vapi
vapi/gtk+-3.0.vapi
vapi/gtksourceview-3.0.vapi
vapi/gudev-1.0.vapi
vapi/json-glib-1.0.vapi
vapi/libarchive.vapi
vapi/libgdata.vapi
vapi/libnotify.vapi
vapi/libpeas-1.0.vapi
vapi/libpq.vapi
vapi/librsvg-2.0.vapi
vapi/libsoup-2.4.vapi
vapi/libvala-0.26.vapi [moved from vapi/libvala-0.24.vapi with 99% similarity]
vapi/libwnck-3.0.vapi
vapi/linux.vapi
vapi/packagekit-glib2.vapi
vapi/pango.vapi
vapi/poppler-glib.vapi
vapi/posix.vapi
vapi/rest-0.7.deps
vapi/rest-0.7.vapi
vapi/webkit2gtk-4.0.deps [new file with mode: 0644]
vapi/webkit2gtk-4.0.vapi [new file with mode: 0644]
vapi/webkit2gtk-web-extension-4.0.deps [new file with mode: 0644]
vapi/webkit2gtk-web-extension-4.0.vapi [new file with mode: 0644]
vapi/x11.vapi
vapi/xcb-icccm.vapi
vapi/xcb.vapi
vapigen/Makefile.am
vapigen/Makefile.in
vapigen/vala-gen-introspect/Makefile.in
vapigen/valagidlparser.c
vapigen/valagidlparser.vala
vapigen/valavapicheck.c
vapigen/valavapigen.c

index 2094a10..30f6cf8 100644 (file)
@@ -1 +1 @@
-0.24.0
+0.26.1
index 2094a10..30f6cf8 100644 (file)
--- a/.version
+++ b/.version
@@ -1 +1 @@
-0.24.0
+0.26.1
index 9a859fe..a67f786 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2014-10-13  Jürg Billeter  <j@bitron.ch>
+
+       Release 0.26.1
+
+2014-10-06  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       cairo: Add some missing 1.12.x and pre 1.13.x bindings
+       (cherry picked from commit b2255376ab99c2947f86555a895fe6727d92ccad)
+
+2014-10-03  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+-3.0: Fix lost special includes for GtkIMContext/GtkPlug/GtkSocket
+       (cherry picked from commit 68f670a6cef5355227854b6dfdfd52a87d5c58dc)
+
+       gtk+-3.0: Update to 3.14.1
+       (cherry picked from commit 08254c8d82b0c9bc58716ccb5440461e4d806100)
+
+       gtk+-2.0, gtk+-3.0: Further syncing with introspection annotations
+       (cherry picked from commit 370cd5b6eccbe884457b42557b9b647c914f7c2f)
+
+2014-09-25  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       webkit2gtk-web-extension-4.0: Add libsoup-2.4 dependency
+       (cherry picked from commit e0dc209e355ae3a1dce8ba895ea68383ab688aec)
+
+       rest-0.7: Add libsoup-2.4 dependency
+       (cherry picked from commit a47fe16d0fee8e4e27dec9467a84f1b658765519)
+
+       gee: Fix HashMap destructor name
+       (cherry picked from commit d9ed3e03a634a546c89d4ca6349ed4821020a3a7)
+
+2014-09-22  Jürg Billeter  <j@bitron.ch>
+
+       Release 0.26.0
+
+2014-09-22  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       webkit2gtk-4.0: Update to 2.5.90
+
+2014-09-20  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       vapigen: Don't override VALAC and use the available one like the rest
+       There is no reason to special case vapigen while the rest of the source
+       is built with the available valac version. For a proper build bootstrapping
+       is required anyway.
+
+       For internal testing of the just-built valac the testsuite should suffice.
+
+2014-09-19  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       bindings: Update GIR-based bindings
+
+2014-09-19  Luca Bruno  <luca.bruno@immobiliare.it>
+
+       Revert "Fix regression when assigning owned expressions to unowned variables."
+       This reverts commit ba1fa0759989dcbb9046c7dfc06cce6c4aa23411.
+
+       Due to bug #736774
+
+2014-09-15  Jürg Billeter  <j@bitron.ch>
+
+       Release 0.25.4
+
+2014-09-14  Luca Bruno  <lucabru@src.gnome.org>
+
+       girwriter: Write accessor methods for interface properties
+       Fixes bug 733115
+
+2014-09-11  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+-3.0: Update to 3.13.9~
+
+       bindings: Update GIR-based bindings
+
+2014-09-09  Luca Bruno  <lucabru@src.gnome.org>
+
+       Resolve symbols in named arguments
+       Fixes bug 736235
+
+2014-09-07  Evan Nemerson  <evan@nemerson.com>
+
+       gtk+-2.0, gtk+-3.0: add missing GObject interface prerequisite
+
+2014-09-06  Luca Bruno  <lucabru@src.gnome.org>
+
+       Fix critical on method varargs introduced by 7b6ee1be
+       Fixes bug 736168
+
+2014-09-05  Luca Bruno  <luca.bruno@immobiliare.it>
+
+       Fix regression when assigning owned expressions to unowned variables.
+       The regression was introduced by db462e6f919da758fb.
+
+       Fixes bug 736016
+
+2014-09-03  Richard Wiedenhöft  <richard@wiedenhoeft.xyz>
+
+       Added option --vapi-comments to include comments in vapi-files
+
+2014-09-03  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       bindings: Update GIR-based bindings
+
+2014-09-02  Florian Brosch  <flo.brosch@gmail.com>
+
+       xcb: re-add GetPropertyReply.format
+
+       GirWriter: do not generate <errordomain> elements
+       Invalid:
+         <errordomain name="..." get-quark="..." codes="...">
+         <enumeration ...>
+
+       Valid:
+         <enumeration name="..." c:type=".." glib:error-domain="...">
+
+2014-09-01  Jürg Billeter  <j@bitron.ch>
+
+       Release 0.25.3
+
+2014-08-31  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+-2.0, gtk+-3.0: Revert Gtk.Widget "constructor" changes
+
+2014-08-29  Simon Werbeck  <simon.werbeck@gmail.com>
+
+       Forbid non-constant initializers for static fields in compact classes
+       Fixes bug 636509
+
+2014-08-29  Luca Bruno  <luca.bruno@immobiliare.it>
+
+       Fix critical when using binary expression in a generics context
+       Fixes bug 735117
+
+2014-08-29  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+-2.0, gtk+-3.0: Fix falsely "owned"-marked properties
+       https://bugzilla.gnome.org/show_bug.cgi?id=735538
+       https://bugzilla.gnome.org/show_bug.cgi?id=735640
+
+2014-08-29  Florian Brosch  <flo.brosch@gmail.com>
+
+       xcb: merge Xcb.GetPropertyReply and Xcb.GetPropertyReply
+
+2014-08-27  Florian Brosch  <flo.brosch@gmail.com>
+
+       glib-2.0: Environ.get_variable return value should not be owned
+
+2014-08-26  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       bindings: Update GIR-based bindings
+
+2014-08-26  Simon Werbeck  <simon.werbeck@gmail.com>
+
+       Fix critical for silent cast
+       Fixes bug 696110
+
+2014-08-24  Jürg Billeter  <j@bitron.ch>
+
+       Release 0.25.2
+
+2014-08-24  Simon Werbeck  <simon.werbeck@gmail.com>
+
+       Make sure type check expression has valid type
+       Fixes bug 696729
+
+2014-08-24  Jürg Billeter  <j@bitron.ch>
+
+       Test error type check
+
+2014-08-24  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+-2.0, gtk+-3.0: Fix gtk_target_list_find
+
+       gtk+-2.0, gtk+-3.0: GtkCssProviderError/GtkPrintError are errordomains
+
+       gtk+-2.0, gtk+-3.0: Gtk.get_default_language is unowned
+
+       gtk+-2.0, gtk+-3.0: Radio/ActionCallback are only vala-helper types
+
+       gtk+-2.0, gtk+-3.0: Make Widget.get/set_parent compatible with its property
+
+       gtk+-2.0, gtk+-3.0: more various fixes
+
+       gtk+-2.0, gtk+-3.0: port more annotations from the GIR version
+
+       gtk+-2.0: port "struct" annotations from the GIR version
+
+       gtk+-2.0, gtk+-3.0: Hide non-public symbols
+
+       gtk+-3.0: port "struct" annotations from the GIR version
+
+       gtk+-3.0: Add type_ids and abstract annotations for classes
+
+       gtk+-2.0, gtk+-3.0: port lots of annotations from the GIR version
+
+2014-08-24  Jürg Billeter  <j@bitron.ch>
+
+       codegen: Remove support for GLib < 2.24
+
+2014-08-24  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       Require and target GLib >= 2.24
+       The next stable release of vala will happen four years after the
+       release of GLib 2.24.0.
+
+       build: Generate only xz-tarballs
+
+       build: Make building vapigen non-optional
+
+       build: Avoid using ".." for referencing paths and reorganize valac-calls
+
+2014-08-23  Jürg Billeter  <j@bitron.ch>
+
+       D-Bus: Fix proxy creation in separate source file
+
+       D-Bus: Set g-interface-info when creating proxy objects
+
+       D-Bus: Move interface info definition from server to common module
+
+2014-08-23  Simon Werbeck  <simon.werbeck@gmail.com>
+
+       Error on non-const field initializer in namespace
+       Fixes bug 569259
+
+2014-08-22  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       bindings: Update GIR-based bindings
+
+2014-08-21  Luca Bruno  <lucabru@src.gnome.org>
+
+       Report warning instead of error for private struct fields
+
+2014-08-20  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtksourceview-3.0: Update to 3.13.90 and mark as deprecated
+
+2014-08-19  Evan Nemerson  <evan@nemerson.com>
+
+       gtk+-3.0: Application.get_menu_by_id return value should not be owned
+
+2014-08-19  Luca Bruno  <luca.bruno@immobiliare.it>
+
+       glib-2.0: fix Hmac.update bindings
+       Fixes bug 735041
+
+2014-08-17  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gobject-2.0: Add binding for g_value_init_from_instance
+
+       bindings: Update GIR-based bindings
+
+       gtk+-3.0: Update to 3.13.7
+
+2014-08-17  Evan Nemerson  <evan@nemerson.com>
+
+       gtk+-2.0, gtk+-3.0: mark test_display_button_window as variadic
+
+2014-08-14  Luca Bruno  <lucabru@src.gnome.org>
+
+       parser: Report error only for private instance fields in structs
+       Fixes bug 734787
+
+2014-08-13  Evan Nemerson  <evan@nemerson.com>
+
+       linux: improve backtrace bindings
+       Some minor improvements have been made to backtrace_symbols; we no
+       longer leak the return value and it is marked as nullable. This also
+       adds a Backtrace namespace for some better bindings which treat the
+       backtrace as an array of void* instead of just a void*.
+
+2014-08-12  XZS  <d.f.fischer@web.de>
+
+       glib-2.0: make VariantDict.end return a floating reference
+       The underlying implementation returns a floating reference. Reflecting
+       this in the vapi silences the warning about g_variant_unref called once
+       too many.
+
+       Fixes bug 734611
+
+       glib: make the parameter of VariantDict constructor nullable
+       The underlying glib implementation accepts null to initialize an empty
+       dictionary. The vapi now reflects this, defaulting the single parameter
+       to null.
+
+       Fixes bug 734612
+
+2014-08-11  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       webkit2gtk: Update to 2.5.2
+
+2014-08-11  Luca Bruno  <lucabru@src.gnome.org>
+
+       Report an error when parsing non-public struct fields
+       Fixes bug 683413
+
+       Add Simon Werbeck to THANKS
+
+2014-08-11  Simon Werbeck  <simon.werbeck@gmail.com>
+
+       Add some missing get_used_variables methods
+       Fixes bug 734315
+
+2014-08-10  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+-3.0: Update to 3.13.6~
+
+2014-08-05  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       poppler-glib: Update to 0.26.3
+
+2014-08-05  Evan Nemerson  <evan@nemerson.com>
+
+       bindings: Update GIR-based bindings
+
+2014-08-04  Evan Nemerson  <evan@nemerson.com>
+
+       Replace WebKit 3.0 bindings with 4.0.
+       WebKitGTK+ is bumping their API version to 4.0 starting with 2.5.1.
+       These bindings haven't been part of a stable Vala release, so it should
+       be safe to just bump the version we distribute, too, instead of adding
+       4.0 alongside 3.0.
+
+2014-08-03  Luca Bruno  <lucabru@src.gnome.org>
+
+       Add lvalue_access = false to Mutex and Cond
+       Fixes bug 733500
+
+2014-08-01  Andre Klapper  <a9016009@gmx.de>
+
+       doap: add <programming-language>
+
+2014-07-30  Olav Vitters  <olav@vitters.nl>
+
+       doap category core
+
+2014-07-23  Jürg Billeter  <j@bitron.ch>
+
+       Release 0.25.1
+
+2014-07-23  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+-3.0: Update to 3.13.5
+
+2014-07-14  Robert Ancell  <robert.ancell@canonical.com>
+
+       compiler: Support configurable pkg-config command so can cross compile
+       Fixes bug 690456
+
+2014-07-13  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+-3.0: Application.get_menu_by_id returns owned value
+
+2014-07-13  Florian Brosch  <flo.brosch@gmail.com>
+
+       Warn if -o is used in combination with -C
+
+       Warn if C files are used in combination with -C
+
+       Warn if --save-temps is used in combination with -C
+
+       Warn if -X is used in combination with -C
+
+2014-07-13  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+-3.0: Update to 3.13.4~f2c6b31e
+
+2014-07-12  Evan Nemerson  <evan@nemerson.com>
+
+       gstreamer-video-1.0: Info.finfo is unowned
+       Fixes bug 731895.
+
+2014-07-12  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>
+
+       clutter-gst-1.0: fix deps
+       ClutterGst.VideoSink subclasses Gst.Navigation since
+       commit 47305de837090f3bdb21183bcac51a056561b639
+
+       Fixes bug 732138.
+
+2014-07-12  Evan Nemerson  <evan@nemerson.com>
+
+       Add .dir-locals.el (emacs configuration file)
+       This just helps people using emacs use the correct settings when
+       working on vala.
+
+       gtk+-3.0: make TextIter.copy return value nullable
+       Fixes bug 732884.
+
+2014-07-10  Florian Brosch  <flo.brosch@gmail.com>
+
+       glib-2.0: Fix bindings for g_hash_table_size
+
+2014-07-09  Evan Nemerson  <evan@nemerson.com>
+
+       bindings: update GIR-based bindings to latest git
+
+       librsvg-2.0: remove from gir-bindings target
+       The librsvg bindings distributed with Vala have been deprecated in
+       favor of those distributed with librsvg for some time now.  By
+       removing them from the gir-bindings target we can avoid API changes
+       and keep CI working while still updating the GIR for valadoc.org.
+
+2014-07-07  Simon Werbeck  <simon.werbeck@gmail.com>
+
+       Detect format string errors when instancing errors
+       Fixes bug 732530
+
+2014-07-02  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+-3.0: Update to 3.13.4~b238d556
+
+2014-07-02  Evan Nemerson  <evan@nemerson.com>
+
+       codegen: cast instead of trying to guess *_CLASS macro name
+       Fixes bug 732413
+
+2014-07-01  Evan Nemerson  <evan@nemerson.com>
+
+       webkit2gtk-3.0, webkit2gtk-web-extension-3.0: update to 2.4.3
+
+2014-06-30  Jürg Billeter  <j@bitron.ch>
+
+       Mark regular expression literals as stable
+       Fixes part of bug 677022.
+
+2014-06-30  Simon Werbeck  <simon.werbeck@gmail.com>
+
+       Fix comparison of nullable value types
+       Fixes bug 678791
+
+2014-06-30  Evan Nemerson  <evan@nemerson.com>
+
+       gstreamer-rtsp-server-1.0: update to fix C header filename
+
+2014-06-29  Evan Nemerson  <evan@nemerson.com>
+
+       gstremaer-rtsp-server-1.0: add gstreamer-net-1.0 to deps
+
+2014-06-28  Simon Werbeck  <simon.werbeck@gmail.com>
+
+       Set G_SIGNAL_DEPRECATED on annotated signals
+       When using the [Deprecated] attribute on a signal, the corresponding
+       signal flag is now set upon signal creation. This requires that
+       --target-glib is set accordingly
+
+       Fixes bug 732381
+
+2014-06-28  Luca Bruno  <lucabru@src.gnome.org>
+
+       Fix previous 6c36eb4 commit
+
+       codewriter: Do not write (unowned string)[] for constants
+       The element type of a constant array is forced to be unowned
+       in the parser. Therefore we don't write (unowned string) to avoid
+       breaking vapi parsing uselessly with older valac versions.
+
+       Fixes bug 732080
+
+2014-06-27  Evan Nemerson  <evan@nemerson.com>
+
+       vala.m4: don't escape modules argument to VALA_CHECK_MODULES
+       Fixes bug 729495.
+
+2014-06-27  Luca Bruno  <lucabru@src.gnome.org>
+
+       Call g_signal_handlers_destroy on gtypeinstance finalizer
+       Fixes bug 708130
+
+2014-06-27  Evan Nemerson  <evan@nemerson.com>
+
+       girwriter: fall back on gir_namespace if GIR name is not available
+
+       girwriter: fix *Private type name for nested classes
+       Fixes bug 641559.
+
+       glib-2.0: change constructor for GenericArray with glib-2.0 >= 2.30
+       Fixes bug 732251.
+
+       glib-2.0: mark PtrArray as deprecated in favor of GenericArray
+       GenericArray is much nicer, and if you really want to use pointers
+       (which you don't) you can always do GenericArray<void*>.
+
+2014-06-26  Evan Nemerson  <evan@nemerson.com>
+
+       gstreamer-1.0: update bindings to latest git
+
+       gstreamer-rtsp-server-1.0: update bindings
+       The previous bindings only worked for an unstable pre-release version
+       of gstreamer-rtsp-server-1.0.  The new (stable) version is not
+       backwards compatible, so neither can the Vala bindings be.  Since we
+       had to break backwards compatibilitiy, why not go big?  I've taken the
+       opportunity to move the bindings into the Gst.RTSPServer namespace to
+       better match the other gstreamer bindings, as well as other assorted
+       less-disruptive clean-ups.
+
+       Fixes bug 723910.
+
+2014-06-26  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gdk-3.0, gtk+-3.0: Update to 3.13.3
+
+2014-06-22  Evan Nemerson  <evan@nemerson.com>
+
+       posix: the atexit callback does not have a target
+
+2014-06-18  Evan Nemerson  <evan@nemerson.com>
+
+       glib-2.0: add non-null support for string.joinv
+       Updated patch after fixing accessing .length of arrays
+       in the non-nullable semantics
+
+       Fixes bug 728656
+
+2014-06-18  Luca Bruno  <lucabru@src.gnome.org>
+
+       non-nullable: Accessing array methods is safe when the array is null
+       Partially fixes bug 728656
+
+2014-06-18  Evan Nemerson  <evan@nemerson.com>
+
+       Use ascii_up/down instead of utf8 up/down when generating identifiers
+       Fixes bug 731795.
+
+2014-06-15  Luca Bruno  <lucabru@src.gnome.org>
+
+       gvariant module: Fix memory leak when deserializing hashtables with gvariant
+       Fixes bug 698260
+
+2014-06-15  Evan Nemerson  <evan@nemerson.com>
+
+       glib-2.0: rename HashSet to GenericSet
+       There is a Gee.HashSet which was causing conflicts for projects
+       using "using Gee;" (specifically, folks and gnome-contacts).
+
+2014-06-14  Luca Bruno  <lucabru@src.gnome.org>
+
+       glib-2.0: support Variant objv
+       Fixes bug 729695
+
+2014-06-13  Evan Nemerson  <evan@nemerson.com>
+
+       cairo-xcb, xcb-iccm, xcb: deprecate in favor of vala-extra-vapis
+
+2014-06-12  Evan Nemerson  <evan@nemerson.com>
+
+       gio-2.0: maintain backwards compatibility with old ActionEntry binding
+
+       glib-2.0: add static methods back into Sequence, marked as deprecated
+       They are, it seems, usable by calling them as if they were instance
+       methods.  However, doing so causes a warning from valac ("Access to
+       static member ... with an instance reference").
+
+       glib-2.0: add HashTable.take and length
+
+       glib-2.0: add GLib.HashSet
+       This is basically just a convenience wrapper around GLib.HashTable
+       where the key and value are set to the same value, providing a set
+       data type instead of a map.
+
+       Fixes bug 686609.
+
+       gio-2.0: callbacks in ActionEntry must not have a target
+       Fixes bug 681896.
+
+       Revert "gobject-2.0: make ObjectClass.list_properties transfer container"
+       Breaks bootstrapping with valac <= 0.24
+
+       gobject-2.0: make TypeClass non-reference-counted
+       The ref function was always broken and would generate invalid C, so
+       this should be safe.
+
+       Fixes bug 679481.
+
+       glib-2.0: don't use the container type's generic in static methods
+       Fixes bug 669816.
+
+       glib-2.0: mark many constants as const instead of static
+       Fixes bug 646143.
+
+       gobject-2.0: make ObjectClass.list_properties transfer container
+       Fixes bug 620419.
+
+       gtk+-2.0: add WidgetClass.set_scroll_adjustments_signal binding
+       Fixes bug 611498.
+
+       gstreamer-1.0: update to 1.3.2.1~d99e6215
+       Fixes bug 730983.
+
+2014-06-11  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gio-unix-2.0: update to 2.41.0
+
+       gtk+-3.0: update to 3.13.3~200bdf1a
+
+       gobject-2.0: Bind G_PARAM_EXPLICIT_NOTIFY
+
+2014-06-11  Evan Nemerson  <evan@nemerson.com>
+
+       gtk+-3.0: set Editable type_cname
+       Fixes bug 731499.
+
+2014-06-05  Evan Nemerson  <evan@nemerson.com>
+
+       girparser: only replace ref/unref funcs with better matches
+
+2014-06-03  Luca Bruno  <luca.bruno@immobiliare.it>
+
+       girparser: use identifier prefix from GIR when appropriate
+       Fixes bug 731066
+
+       codegen: Simplify field initialization for struct types
+       Fixes bug 703996
+
+2014-06-01  Robert Ancell  <robert.ancell@canonical.com>
+
+       xcb: Replies are nullable and errors are optional
+       Also a few whitespace consistency changes thrown in.
+
+       xcb: Add helper methods for GetPropertyReply
+       Add helper methods for GetPropertyReply so you don't have to access a void
+       pointer.
+
+       https://bugzilla.gnome.org/show_bug.cgi?id=730230
+
+       xcb: Add more methods and use Vala types for accessing data
+       https://bugzilla.gnome.org/show_bug.cgi?id=730218
+
+2014-05-31  Luca Bruno  <lucabru@src.gnome.org>
+
+       gobject: Add Binding.unbind
+       Fixes bug 730967
+
+2014-05-31  Evan Nemerson  <evan@nemerson.com>
+
+       glib-2.0: remove HashTable.get_keys_as_array
+       This was causing a syntax error when trying to compile Vala with an
+       older version of valac (whatever is in gnome-continuous).  It looks
+       like we should hold off on adding stuff with this syntax until
+       next cycle.
+
+       glib-2.0: add HashTable.get_keys_as_array
+
+       girparser: handle multiple identifier-prefixes in namespaces
+
+2014-05-29  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       glib2.0: Mark StaticPrivate as deprecated
+
+2014-05-29  Timm Bäder  <mail@baedert.org>
+
+       gtkmodule: Error out on malformed signal definition
+       Connecting to a signal in a gtk composite template needs both the
+       signal's name and a handler function to connect to.
+
+2014-05-29  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gstreamer-1.0: Add gstreamer-allocators-1.0 and gstreamer-riff-1.0
+
+2014-05-29  Evan Nemerson  <evan@nemerson.com>
+
+       json-glib-1.0: update to 1.0.2
+
+2014-05-28  Evan Nemerson  <evan@nemerson.com>
+
+       girparser: don't deprecate children of deprecated containers
+       GObject Introspection doesn't support marking entire types as
+       deprecated, so we end up with a lot of places where the type isn't
+       deprecated, but every method, property, field, signal, etc. in it is,
+       which causes a lot of spew during compilation.  This patch allows us
+       to easily deprecate a type in metadata and any extra deprecation
+       information on child symbols will be omitted.
+
+       girparser: improve support for changing symbol types away from instance
+       This makes it possible to move a symbol from an instance method of one
+       type to a constructor of another, or to a static method.
+
+       girparser: support return_void metadata argument
+       This allows us to generate backwards compatible signatures for
+       functions with a void return value and a single out param for a struct
+       from metadata files instead of resorting to *-custom.vala.
+
+       Update GIR-based bindings.
+
+       gstreamer-1.0: update to latest git.
+       Using bindings some libraries, such as gstreamer-audio-1.0, will break
+       compatibility with gstreamer 1.0 since gstreamer didn't include
+       single-include headers until 1.2.
+
+       libsoup-2.4: deprecate Buffer.new and MessageBody.append
+       These functions require the user to correctly specify a Soup.MemoryUse
+       argument, but that's easy to get wrong without understanding how the
+       memory is managed.  Alternatives for these functions which will always
+       transfer ownership of the memory have been in place since 2.32, so
+       from now on we will emit a warning when someone tries to use the old
+       versions.
+
+2014-05-27  Raul Gutierrez Segales  <rgs@collabora.co.uk>
+
+       glib-2.0: add accessor for GArray's data field
+       Fixes bug 651505
+
+2014-05-27  Evan Nemerson  <evan@nemerson.com>
+
+       codegen: put exception checks inside of a G_UNLIKELY
+       Fixes bug 730702
+
+2014-05-24  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gdk-3.0, gtk+-3.0: update to 3.13.1~3f140d53
+
+2014-05-22  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gdk-3.0: update to 3.13.1~a61a11a4
+
+2014-05-21  Evan Nemerson  <evan@nemerson.com>
+
+       gdk-3.0: update to 3.13.1~701adf81
+
+2014-05-18  Luca Bruno  <lucabru@src.gnome.org>
+
+       Support explicit interface methods implementation
+       Fixes bug 652098
+
+2014-05-18  Evan Nemerson  <evan@nemerson.com>
+
+       gudev-1.0: update to latest git
+       Most of the metadata has been moved into annotations upstream.
+
+2014-05-17  Luca Bruno  <lucabru@src.gnome.org>
+
+       Fix gir and gidl bindings due to (unowned type)[] arrays
+
+       Revert "girparser: Make array element type owned by default"
+       This reverts commit 1c814e174d161102ea3288121f6b4c09c8b46482.
+
+       girparser: Make array element type owned by default
+
+       Fix writing vapis with (unowned type)[]
+
+       Support (unowned type)[] syntax for transfer-container arrays
+       Fixes bug 571486
+
+2014-05-17  Evan Nemerson  <evan@nemerson.com>
+
+       goocanvas: mark as deprecated
+
+       atk: update to 2.13.1~d44970bd
+
+       gdk-pixbuf-2.0: update to latest git
+
+2014-05-16  Evan Nemerson  <evan@nemerson.com>
+
+       webkitgtk-3.0: add metadata file
+
+2014-05-16  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+3.0: Update to 3.13.1+
+
+2014-05-16  Lasse Schuirmann  <lasse@schuirmann.net>
+
+       libarchive: Update to version 3
+       Fixes bug 668654
+
+2014-05-15  Robert Ancell  <robert.ancell@canonical.com>
+
+       xcb: Add drawing API
+       https://bugzilla.gnome.org/show_bug.cgi?id=730148
+
+       xcb: Add Xcb.Connection.create_pixmap
+       https://bugzilla.gnome.org/show_bug.cgi?id=730103
+
+2014-05-14  Evan Nemerson  <evan@nemerson.com>
+
+       Add webkit2gtk-3.0 and webkit2gtk-web-extension-3.0 bindings.
+       Fixes bug 676249.
+
+2014-05-14  Robert Ancell  <robert.ancell@canonical.com>
+
+       xcb: Add Xcb.Connection.get_atom_name
+       https://bugzilla.gnome.org/show_bug.cgi?id=730099
+
+       xcb: Missing EnterNotifyEvent, LeaveNotifyEvent, KeymapNotifyEvent, VisibilityNotifyEvent, ReparentNotifyEvent, GravityNotifyEvent, CirculateNotifyEvent, PropertyNotifyEvent, SelectionNotifyEvent, ColormapNotifyEvent, MappingNotifyEvent classes
+       https://bugzilla.gnome.org/show_bug.cgi?id=730097
+
+       xcb: Remove unnecessary padding fields
+       Some structures allow access to the padding fields from the C structures. Since
+       these don't do anything except make the memory be set out correctly there's no
+       reason to access them from Vala.
+
+       https://bugzilla.gnome.org/show_bug.cgi?id=730094
+
+       xcb: Add methods to access pixmap formats
+       https://bugzilla.gnome.org/show_bug.cgi?id=730092
+
+       xcb: Add missing fields to Xcb.Setup, Xcb.Screen and Xcb.VisualType
+       https://bugzilla.gnome.org/show_bug.cgi?id=730091
+
+       xcb: Fix depth iterator methods
+       https://bugzilla.gnome.org/show_bug.cgi?id=730089
+
+       xcb: Add binding for xcb_connection_has_error
+       https://bugzilla.gnome.org/show_bug.cgi?id=730088
+
+       xcb: Fix visuals iterator methods
+       https://bugzilla.gnome.org/show_bug.cgi?id=730090
+
+2014-05-13  Robert Ancell  <robert.ancell@canonical.com>
+
+       xcb: Set correct C name for Xcb.ScreenIterator.next
+       https://bugzilla.gnome.org/show_bug.cgi?id=730086
+
+2014-05-11  Christian Persch  <chpe@gnome.org>
+
+       glib-2.0: Allow null hooks for OptionGroup
+       Allow null pre-parse, post-parse, error and translation hooks.
+
+       Fixed bug #729954.
+
+2014-05-08  Evan Nemerson  <evan@nemerson.com>
+
+       pango: update to latest git
+
+2014-05-06  Ryan Lortie  <desrt@desrt.ca>
+
+       girparser: grok "nullable"
+       Understand the new "nullable" attribute in .gir files.
+
+       Presently, this is mostly an alias for allow-none='', but it will also
+       allows a new feature: we can explicitly mark out parameters as having a
+       nullable type (as a distinct concept from accepting 'NULL' as a
+       parameter to the C function call in order to ignore the result).
+
+       .gir may eventually want to remove allow-none='' some day, so make sure
+       we also accept nullable='' in all places that we accepted allow-none=''
+       to mean 'can be NULL'.
+
+       https://bugzilla.gnome.org/show_bug.cgi?id=660879
+
+2014-04-30  Al Thomas  <astavale@yahoo.co.uk>
+
+       codegen: Uppercase strings in ASCII, otherwise broken for some locales
+       Fixes bug 704468
+
+2014-04-29  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+-3.0: Perform missing rebuild
+       Fixes e657266432c73b292a17e5207184ebed4dd3ef44
+
+2014-04-29  Kyrylo Polezhaiev  <polezhaiev@ukr.net>
+
+       libpq: Fix syntax error
+       Fixes bug 729177
+
+2014-04-29  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gdk-3.0, gtk+3.0: Update to 3.13.1
+
+2014-04-28  Evan Nemerson  <evan@nemerson.com>
+
+       gio-unix-2.0: fix DesktopAppInfo.list_actions return value
+
+2014-04-24  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       gtk+3.0: Update to 3.13.0~
+
+       gio-2.0: Update to 2.41.0~
+
+2014-04-18  Ryan Lortie  <desrt@desrt.ca>
+
+       gtk+-3.0: add new GtkListBox selection API
+       metadata copied from the similar api on GtkFlowBox (which is where the
+       GtkListBox API itself was modelled from).
+
+       https://bugzilla.gnome.org/show_bug.cgi?id=728474
+
+       gtk+-3.0: fix flowbox selection foreach API
+       The callback doesn't have a destroy notify, so don't mark it 'owned'.
+       Additionally, it's not OK to pass a NULL callback to a foreach function.
+
+       https://bugzilla.gnome.org/show_bug.cgi?id=728474
+
+2014-04-14  Evan Nemerson  <evan@nemerson.com>
+
+       gtk+-3.0, gtk+-2.0: make TargetList constructor argument nullable
+       Fixes bug 728126.
+
+       glib-2.0: add OptionContext.parse_strv
+       Fixes bug 728111.
+
+2014-04-08  Evan Nemerson  <evan@nemerson.com>
+
+       gtksourceview-3.0: update to latest git
+
+2014-04-07  Luca Bruno  <lucabru@src.gnome.org>
+
+       gtk+3.0: fix Application.set_accels_for_action array parameter
+       Fixes bug 727752
+
+2014-04-06  Simon Werbeck  <simon.werbeck@gmail.com>
+
+       codegen: Fix local and field names starting with a digit
+       Fixes bug 647018
+
+2014-04-05  Luca Bruno  <lucabru@src.gnome.org>
+
+       girparser: reset cheader_filenames before parsing a gir
+       Remove gedit-2.20 from all-bindings due to a random bug.
+       Sometimes it's successful, sometimes it's not.
+
+       gobject-introspection-1.0: regenerate according to vala-girs
+
+       geocode-glib-1.0: update to 3.12.0-5-g7eb1490
+
+       Remove gedit from all-bindings as it will be shipped upstream
+
+       gdl-3.0: Update after the GdkEvent change from struct to class
+
+2014-04-05  Simon Werbeck  <simon.werbeck@gmail.com>
+
+       codegen: Do not generate generic destroy func for non-disposable structs
+       Fixes bug 727652
+
+2014-04-03  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       x11: Don't use camel-cased names for methods
+       In addition to d00ddbf098d50a4ccf81faec12d186be04c7f975
+
+2014-04-01  Luca Bruno  <lucabru@src.gnome.org>
+
+       libnotify: Updated to 0.7.6-3-gda49c8c
+       See https://bugzilla.gnome.org/show_bug.cgi?id=667904
+
+2014-04-01  Stefano Facchini  <stefano.facchini@gmail.com>
+
+       glib: Add G_SOURCE_CONTINUE/G_SOURCE_REMOVE
+
+2014-03-31  Luca Bruno  <lucabru@src.gnome.org>
+
+       girparser: Support interface aliases
+
+2014-03-31  Robert Ancell  <robert.ancell@canonical.com>
+
+       x11: Add some missing API
+       The functions:
+       XClearWindow
+       XCreatePixmap
+       XSetWindowBackgroundPixmap
+
+       The XSetCloseDownMode enumerations
+
+       The following events:
+       FocusChangeEvent
+       ExposeEvent
+       GraphicsExposeEvent
+       NoExposeEvent
+       VisibilityEvent
+       ResizeRequestEvent
+       SelectionClearEvent
+       SelectionRequestEvent
+       ColormapEvent
+       MappingEvent
+       ErrorEvent
+       KeymapEvent
+
+       Fixes bug 727113
+
+2014-03-30  Luca Bruno  <lucabru@src.gnome.org>
+
+       atk: Update and fix metadata
+       Fixes bug 727029
+
+2014-03-30  Simon  <simon.werbeck@gmail.com>
+
+       Support non-literal length in fixed-size arrays
+       Now any constant integer expression can be used as length
+       for fixed-size arrays.
+
+       Fixes bug 638993
+
+2014-03-26  Rico Tzschichholz  <ricotz@ubuntu.com>
+
+       Add tests for enums annotated with [Flags]
+
+2014-03-26  Rico Tzschichholz  <ricotz@t-online.de>
+
+       cairo: Update some enums and consts
+
+2014-03-25  Evan Nemerson  <evan@nemerson.com>
+
+       gdk-pixbuf-2.0: make Pixbuf.save_to_stream variadic
+
+2014-03-25  Jürg Billeter  <j@bitron.ch>
+
+       Bump version suffix
+
+2014-03-25  Rico Tzschichholz  <ricotz@t-online.de>
+
+       clutter-1.0: Update to 1.18.0
+
+       geocode-glib-1.0: Update to 3.12.0
+
+       gtk+-3.0: Update to 3.12.0
+
+2014-03-24  Maciej Piechotka  <uzytkownik2@gmail.com>
+
+       Hide internal methods in ABI
+       Fixes bug 700157
+
 2014-03-24  Jürg Billeter  <j@bitron.ch>
 
        Release 0.24.0
index b386a11..04dd1b0 100644 (file)
@@ -1,13 +1,6 @@
 ACLOCAL_AMFLAGS = -I m4
 NULL =
 
-if ENABLE_VAPIGEN
-VAPIGEN_SUBDIRS = \
-       gobject-introspection \
-       vapigen \
-       $(NULL)
-endif
-
 SUBDIRS = \
        gee \
        ccode \
@@ -17,18 +10,6 @@ SUBDIRS = \
        vapi \
        tests \
        doc \
-       $(VAPIGEN_SUBDIRS) \
-       $(NULL)
-
-DIST_SUBDIRS = \
-       gee \
-       ccode \
-       vala \
-       codegen \
-       compiler \
-       vapi \
-       tests \
-       doc \
        gobject-introspection \
        vapigen \
        $(NULL)
diff --git a/Makefile.common b/Makefile.common
new file mode 100644 (file)
index 0000000..5e9692f
--- /dev/null
@@ -0,0 +1,3 @@
+VALA_V = $(VALA_V_$(V))
+VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
+VALA_V_0 = @echo "  VALAC " $^;
index 8b2adf2..9358261 100644 (file)
@@ -189,6 +189,7 @@ am__define_uniq_tagged_files = \
 ETAGS = etags
 CTAGS = ctags
 CSCOPE = cscope
+DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -224,9 +225,9 @@ am__relativize = \
     dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
   done; \
   reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
 GZIP_ENV = --best
-DIST_TARGETS = dist-bzip2 dist-gzip
+DIST_ARCHIVES = $(distdir).tar.xz
+DIST_TARGETS = dist-xz
 distuninstallcheck_listfiles = find . -type f -print
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -339,7 +340,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -368,15 +368,8 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
 ACLOCAL_AMFLAGS = -I m4
 NULL = 
-@ENABLE_VAPIGEN_TRUE@VAPIGEN_SUBDIRS = \
-@ENABLE_VAPIGEN_TRUE@  gobject-introspection \
-@ENABLE_VAPIGEN_TRUE@  vapigen \
-@ENABLE_VAPIGEN_TRUE@  $(NULL)
-
 SUBDIRS = \
        gee \
        ccode \
@@ -386,18 +379,6 @@ SUBDIRS = \
        vapi \
        tests \
        doc \
-       $(VAPIGEN_SUBDIRS) \
-       $(NULL)
-
-DIST_SUBDIRS = \
-       gee \
-       ccode \
-       vala \
-       codegen \
-       compiler \
-       vapi \
-       tests \
-       doc \
        gobject-introspection \
        vapigen \
        $(NULL)
@@ -707,6 +688,7 @@ distdir: $(DISTFILES)
 dist-gzip: distdir
        tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
        $(am__post_remove_distdir)
+
 dist-bzip2: distdir
        tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
        $(am__post_remove_distdir)
@@ -714,7 +696,6 @@ dist-bzip2: distdir
 dist-lzip: distdir
        tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
        $(am__post_remove_distdir)
-
 dist-xz: distdir
        tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
        $(am__post_remove_distdir)
diff --git a/NEWS b/NEWS
index 1e01772..cf24d80 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,45 @@
+Vala 0.26.1
+===========
+
+ * Bug fixes and binding updates.
+
+Vala 0.26.0
+===========
+
+ * Bug fix and binding updates.
+
+Vala 0.25.4
+===========
+
+ * Add option --vapi-comments.
+ * Bug fixes and binding updates.
+
+Vala 0.25.3
+===========
+
+ * Bug fixes and binding updates.
+
+Vala 0.25.2
+===========
+
+ * Require and target GLib >= 2.24.
+ * Report warning for private struct fields.
+ * Replace webkit2gtk-3.0 bindings with webkit2gtk-4.0 bindings.
+ * Always build vapigen.
+ * Bug fixes and binding updates.
+
+Vala 0.25.1
+===========
+
+ * Support explicit interface method implementation.
+ * Support (unowned type)[] syntax.
+ * Support non-literal length in fixed-size arrays.
+ * Mark regular expression literals as stable.
+ * GIR parser updates.
+ * Add webkit2gtk-3.0 bindings.
+ * Add gstreamer-allocators-1.0 and gstreamer-riff-1.0 bindings.
+ * Bug fixes and binding updates.
+
 Vala 0.24.0
 ===========
 
diff --git a/THANKS b/THANKS
index 2a14358..6a39627 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -122,6 +122,7 @@ Sebastian Pölsterl
 Sebastian Spaeth
 Shawn Ferris
 Simon Wenner
+Simon Werbeck
 Stefano Debenedetti
 Stéphan Kochen
 Tai Chi Minh Ralph Eastwood
index eb25f9d..fd3186a 100644 (file)
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.common
+
 NULL =
 
 AM_CPPFLAGS = \
@@ -79,7 +81,16 @@ ccodeinclude_HEADERS = \
        $(NULL)
 
 ccode.vapi ccode.vala.stamp: $(libvalaccode_la_VALASOURCES)
-       $(VALA_V)$(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir $(srcdir)/../gee --pkg gee --pkg config -H valaccode.h --library ccode $^
+       $(VALA_V)$(VALAC) \
+               $(COVERAGE_VALAFLAGS) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi --pkg gobject-2.0 \
+               --vapidir $(top_srcdir)/gee --pkg gee \
+               --pkg config \
+               -H valaccode.h \
+               --library ccode \
+               $^
        touch $@
 
 libvalaccode_la_LIBADD = \
@@ -94,7 +105,3 @@ MAINTAINERCLEANFILES = \
        valaccode.h \
        $(libvalaccode_la_VALASOURCES:.vala=.c) \
        $(NULL)
-
-VALA_V = $(VALA_V_$(V))
-VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
-VALA_V_0 = @echo "  VALAC " $^;
index 62c605b..c50b4c2 100644 (file)
@@ -78,9 +78,10 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/Makefile.common $(srcdir)/Makefile.in \
+       $(srcdir)/Makefile.am $(top_srcdir)/build-aux/depcomp \
+       $(ccodeinclude_HEADERS)
 subdir = ccode
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/build-aux/depcomp $(ccodeinclude_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
        $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -327,7 +328,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -356,8 +356,9 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
+VALA_V = $(VALA_V_$(V))
+VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
+VALA_V_0 = @echo "  VALAC " $^;
 NULL = 
 AM_CPPFLAGS = \
        $(COVERAGE_CFLAGS) \
@@ -447,15 +448,12 @@ MAINTAINERCLEANFILES = \
        $(libvalaccode_la_VALASOURCES:.vala=.c) \
        $(NULL)
 
-VALA_V = $(VALA_V_$(V))
-VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
-VALA_V_0 = @echo "  VALAC " $^;
 all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.common $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -476,6 +474,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
+$(top_srcdir)/Makefile.common:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -820,7 +819,16 @@ uninstall-am: uninstall-ccodeincludeHEADERS
 
 
 ccode.vapi ccode.vala.stamp: $(libvalaccode_la_VALASOURCES)
-       $(VALA_V)$(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir $(srcdir)/../gee --pkg gee --pkg config -H valaccode.h --library ccode $^
+       $(VALA_V)$(VALAC) \
+               $(COVERAGE_VALAFLAGS) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi --pkg gobject-2.0 \
+               --vapidir $(top_srcdir)/gee --pkg gee \
+               --pkg config \
+               -H valaccode.h \
+               --library ccode \
+               $^
        touch $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
index 2d9224a..6e3d948 100644 (file)
@@ -96,6 +96,15 @@ namespace Vala {
                public virtual void write_initialization (Vala.CCodeWriter writer);
        }
        [CCode (cheader_filename = "valaccode.h")]
+       public class CCodeDeclaratorSuffix {
+               public bool array;
+               public Vala.CCodeExpression? array_length;
+               public bool deprecated;
+               public CCodeDeclaratorSuffix ();
+               public CCodeDeclaratorSuffix.with_array (Vala.CCodeExpression? array_length = null);
+               public void write (Vala.CCodeWriter writer);
+       }
+       [CCode (cheader_filename = "valaccode.h")]
        public class CCodeDoStatement : Vala.CCodeStatement {
                public CCodeDoStatement (Vala.CCodeStatement stmt, Vala.CCodeExpression cond);
                public override void write (Vala.CCodeWriter writer);
@@ -355,7 +364,7 @@ namespace Vala {
        public class CCodeStruct : Vala.CCodeNode {
                public CCodeStruct (string name);
                public void add_declaration (Vala.CCodeDeclaration decl);
-               public void add_field (string type_name, string name, string? declarator_suffix = null);
+               public void add_field (string type_name, string name, Vala.CCodeDeclaratorSuffix? declarator_suffix = null);
                public override void write (Vala.CCodeWriter writer);
                public bool deprecated { get; set; }
                public bool is_empty { get; }
@@ -386,12 +395,12 @@ namespace Vala {
        }
        [CCode (cheader_filename = "valaccode.h")]
        public class CCodeVariableDeclarator : Vala.CCodeDeclarator {
-               public CCodeVariableDeclarator (string name, Vala.CCodeExpression? initializer = null, string? declarator_suffix = null);
+               public CCodeVariableDeclarator (string name, Vala.CCodeExpression? initializer = null, Vala.CCodeDeclaratorSuffix? declarator_suffix = null);
                public override void write (Vala.CCodeWriter writer);
                public override void write_declaration (Vala.CCodeWriter writer);
                public override void write_initialization (Vala.CCodeWriter writer);
-               public CCodeVariableDeclarator.zero (string name, Vala.CCodeExpression? initializer, string? declarator_suffix = null);
-               public string? declarator_suffix { get; set; }
+               public CCodeVariableDeclarator.zero (string name, Vala.CCodeExpression? initializer, Vala.CCodeDeclaratorSuffix? declarator_suffix = null);
+               public Vala.CCodeDeclaratorSuffix? declarator_suffix { get; set; }
                public bool init0 { get; set; }
                public Vala.CCodeExpression? initializer { get; set; }
                public string name { get; set; }
@@ -463,7 +472,8 @@ namespace Vala {
                INLINE,
                VOLATILE,
                DEPRECATED,
-               THREAD_LOCAL
+               THREAD_LOCAL,
+               INTERNAL
        }
        [CCode (cheader_filename = "valaccode.h")]
        public enum CCodeUnaryOperator {
index edb73a9..5746197 100644 (file)
@@ -513,6 +513,16 @@ typedef struct _ValaCCodeStruct ValaCCodeStruct;
 typedef struct _ValaCCodeStructClass ValaCCodeStructClass;
 typedef struct _ValaCCodeStructPrivate ValaCCodeStructPrivate;
 
+#define VALA_TYPE_CCODE_DECLARATOR_SUFFIX (vala_ccode_declarator_suffix_get_type ())
+#define VALA_CCODE_DECLARATOR_SUFFIX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_DECLARATOR_SUFFIX, ValaCCodeDeclaratorSuffix))
+#define VALA_CCODE_DECLARATOR_SUFFIX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_DECLARATOR_SUFFIX, ValaCCodeDeclaratorSuffixClass))
+#define VALA_IS_CCODE_DECLARATOR_SUFFIX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_DECLARATOR_SUFFIX))
+#define VALA_IS_CCODE_DECLARATOR_SUFFIX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_DECLARATOR_SUFFIX))
+#define VALA_CCODE_DECLARATOR_SUFFIX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_DECLARATOR_SUFFIX, ValaCCodeDeclaratorSuffixClass))
+
+typedef struct _ValaCCodeDeclaratorSuffix ValaCCodeDeclaratorSuffix;
+typedef struct _ValaCCodeDeclaratorSuffixClass ValaCCodeDeclaratorSuffixClass;
+
 #define VALA_TYPE_CCODE_SWITCH_STATEMENT (vala_ccode_switch_statement_get_type ())
 #define VALA_CCODE_SWITCH_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_SWITCH_STATEMENT, ValaCCodeSwitchStatement))
 #define VALA_CCODE_SWITCH_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_SWITCH_STATEMENT, ValaCCodeSwitchStatementClass))
@@ -558,6 +568,7 @@ typedef struct _ValaCCodeUnaryExpressionPrivate ValaCCodeUnaryExpressionPrivate;
 typedef struct _ValaCCodeVariableDeclarator ValaCCodeVariableDeclarator;
 typedef struct _ValaCCodeVariableDeclaratorClass ValaCCodeVariableDeclaratorClass;
 typedef struct _ValaCCodeVariableDeclaratorPrivate ValaCCodeVariableDeclaratorPrivate;
+typedef struct _ValaCCodeDeclaratorSuffixPrivate ValaCCodeDeclaratorSuffixPrivate;
 
 #define VALA_TYPE_CCODE_WHILE_STATEMENT (vala_ccode_while_statement_get_type ())
 #define VALA_CCODE_WHILE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_WHILE_STATEMENT, ValaCCodeWhileStatement))
@@ -766,7 +777,8 @@ typedef enum  {
        VALA_CCODE_MODIFIERS_INLINE = 1 << 3,
        VALA_CCODE_MODIFIERS_VOLATILE = 1 << 4,
        VALA_CCODE_MODIFIERS_DEPRECATED = 1 << 5,
-       VALA_CCODE_MODIFIERS_THREAD_LOCAL = 1 << 6
+       VALA_CCODE_MODIFIERS_THREAD_LOCAL = 1 << 6,
+       VALA_CCODE_MODIFIERS_INTERNAL = 1 << 7
 } ValaCCodeModifiers;
 
 struct _ValaCCodeDeclarator {
@@ -1082,6 +1094,20 @@ struct _ValaCCodeVariableDeclaratorClass {
        ValaCCodeDeclaratorClass parent_class;
 };
 
+struct _ValaCCodeDeclaratorSuffix {
+       GTypeInstance parent_instance;
+       volatile int ref_count;
+       ValaCCodeDeclaratorSuffixPrivate * priv;
+       gboolean array;
+       ValaCCodeExpression* array_length;
+       gboolean deprecated;
+};
+
+struct _ValaCCodeDeclaratorSuffixClass {
+       GTypeClass parent_class;
+       void (*finalize) (ValaCCodeDeclaratorSuffix *self);
+};
+
 struct _ValaCCodeWhileStatement {
        ValaCCodeStatement parent_instance;
        ValaCCodeWhileStatementPrivate * priv;
@@ -1452,7 +1478,14 @@ GType vala_ccode_struct_get_type (void) G_GNUC_CONST;
 ValaCCodeStruct* vala_ccode_struct_new (const gchar* name);
 ValaCCodeStruct* vala_ccode_struct_construct (GType object_type, const gchar* name);
 void vala_ccode_struct_add_declaration (ValaCCodeStruct* self, ValaCCodeDeclaration* decl);
-void vala_ccode_struct_add_field (ValaCCodeStruct* self, const gchar* type_name, const gchar* name, const gchar* declarator_suffix);
+gpointer vala_ccode_declarator_suffix_ref (gpointer instance);
+void vala_ccode_declarator_suffix_unref (gpointer instance);
+GParamSpec* vala_param_spec_ccode_declarator_suffix (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void vala_value_set_ccode_declarator_suffix (GValue* value, gpointer v_object);
+void vala_value_take_ccode_declarator_suffix (GValue* value, gpointer v_object);
+gpointer vala_value_get_ccode_declarator_suffix (const GValue* value);
+GType vala_ccode_declarator_suffix_get_type (void) G_GNUC_CONST;
+void vala_ccode_struct_add_field (ValaCCodeStruct* self, const gchar* type_name, const gchar* name, ValaCCodeDeclaratorSuffix* declarator_suffix);
 const gchar* vala_ccode_struct_get_name (ValaCCodeStruct* self);
 void vala_ccode_struct_set_name (ValaCCodeStruct* self, const gchar* value);
 gboolean vala_ccode_struct_get_deprecated (ValaCCodeStruct* self);
@@ -1481,18 +1514,23 @@ void vala_ccode_unary_expression_set_operator (ValaCCodeUnaryExpression* self, V
 ValaCCodeExpression* vala_ccode_unary_expression_get_inner (ValaCCodeUnaryExpression* self);
 void vala_ccode_unary_expression_set_inner (ValaCCodeUnaryExpression* self, ValaCCodeExpression* value);
 GType vala_ccode_variable_declarator_get_type (void) G_GNUC_CONST;
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new (const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix);
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct (GType object_type, const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix);
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new_zero (const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix);
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct_zero (GType object_type, const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix);
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new (const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix);
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct (GType object_type, const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix);
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new_zero (const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix);
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct_zero (GType object_type, const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix);
 const gchar* vala_ccode_variable_declarator_get_name (ValaCCodeVariableDeclarator* self);
 void vala_ccode_variable_declarator_set_name (ValaCCodeVariableDeclarator* self, const gchar* value);
 ValaCCodeExpression* vala_ccode_variable_declarator_get_initializer (ValaCCodeVariableDeclarator* self);
 void vala_ccode_variable_declarator_set_initializer (ValaCCodeVariableDeclarator* self, ValaCCodeExpression* value);
-const gchar* vala_ccode_variable_declarator_get_declarator_suffix (ValaCCodeVariableDeclarator* self);
-void vala_ccode_variable_declarator_set_declarator_suffix (ValaCCodeVariableDeclarator* self, const gchar* value);
+ValaCCodeDeclaratorSuffix* vala_ccode_variable_declarator_get_declarator_suffix (ValaCCodeVariableDeclarator* self);
+void vala_ccode_variable_declarator_set_declarator_suffix (ValaCCodeVariableDeclarator* self, ValaCCodeDeclaratorSuffix* value);
 gboolean vala_ccode_variable_declarator_get_init0 (ValaCCodeVariableDeclarator* self);
 void vala_ccode_variable_declarator_set_init0 (ValaCCodeVariableDeclarator* self, gboolean value);
+ValaCCodeDeclaratorSuffix* vala_ccode_declarator_suffix_new_with_array (ValaCCodeExpression* array_length);
+ValaCCodeDeclaratorSuffix* vala_ccode_declarator_suffix_construct_with_array (GType object_type, ValaCCodeExpression* array_length);
+void vala_ccode_declarator_suffix_write (ValaCCodeDeclaratorSuffix* self, ValaCCodeWriter* writer);
+ValaCCodeDeclaratorSuffix* vala_ccode_declarator_suffix_new (void);
+ValaCCodeDeclaratorSuffix* vala_ccode_declarator_suffix_construct (GType object_type);
 GType vala_ccode_while_statement_get_type (void) G_GNUC_CONST;
 ValaCCodeWhileStatement* vala_ccode_while_statement_new (ValaCCodeExpression* cond, ValaCCodeStatement* stmt);
 ValaCCodeWhileStatement* vala_ccode_while_statement_construct (GType object_type, ValaCCodeExpression* cond, ValaCCodeStatement* stmt);
index 267d827..02a7376 100644 (file)
@@ -376,10 +376,10 @@ void vala_ccode_assignment_set_right (ValaCCodeAssignment* self, ValaCCodeExpres
 
 static void vala_ccode_assignment_class_init (ValaCCodeAssignmentClass * klass) {
        vala_ccode_assignment_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_assignment_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_assignment_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeAssignmentPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_assignment_real_write;
-       VALA_CCODE_EXPRESSION_CLASS (klass)->write_inner = vala_ccode_assignment_real_write_inner;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_assignment_real_write;
+       ((ValaCCodeExpressionClass *) klass)->write_inner = vala_ccode_assignment_real_write_inner;
 }
 
 
index 7593d99..0680199 100644 (file)
@@ -448,10 +448,10 @@ void vala_ccode_binary_expression_set_right (ValaCCodeBinaryExpression* self, Va
 
 static void vala_ccode_binary_expression_class_init (ValaCCodeBinaryExpressionClass * klass) {
        vala_ccode_binary_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_binary_expression_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_binary_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeBinaryExpressionPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_binary_expression_real_write;
-       VALA_CCODE_EXPRESSION_CLASS (klass)->write_inner = vala_ccode_binary_expression_real_write_inner;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_binary_expression_real_write;
+       ((ValaCCodeExpressionClass *) klass)->write_inner = vala_ccode_binary_expression_real_write_inner;
 }
 
 
index 68e220a..91be605 100644 (file)
@@ -455,9 +455,9 @@ void vala_ccode_block_set_suppress_newline (ValaCCodeBlock* self, gboolean value
 
 static void vala_ccode_block_class_init (ValaCCodeBlockClass * klass) {
        vala_ccode_block_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_block_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_block_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeBlockPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_block_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_block_real_write;
 }
 
 
index babcf38..eec3c52 100644 (file)
@@ -181,7 +181,7 @@ ValaCCodeBreakStatement* vala_ccode_break_statement_new (void) {
 
 static void vala_ccode_break_statement_class_init (ValaCCodeBreakStatementClass * klass) {
        vala_ccode_break_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_break_statement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_break_statement_real_write;
 }
 
 
index 3e2b5cd..5b28422 100644 (file)
@@ -240,9 +240,9 @@ void vala_ccode_case_statement_set_expression (ValaCCodeCaseStatement* self, Val
 
 static void vala_ccode_case_statement_class_init (ValaCCodeCaseStatementClass * klass) {
        vala_ccode_case_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_case_statement_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_case_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeCaseStatementPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_case_statement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_case_statement_real_write;
 }
 
 
index 875c036..acb4e38 100644 (file)
@@ -258,10 +258,10 @@ void vala_ccode_cast_expression_set_type_name (ValaCCodeCastExpression* self, co
 
 static void vala_ccode_cast_expression_class_init (ValaCCodeCastExpressionClass * klass) {
        vala_ccode_cast_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_cast_expression_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_cast_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeCastExpressionPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_cast_expression_real_write;
-       VALA_CCODE_EXPRESSION_CLASS (klass)->write_inner = vala_ccode_cast_expression_real_write_inner;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_cast_expression_real_write;
+       ((ValaCCodeExpressionClass *) klass)->write_inner = vala_ccode_cast_expression_real_write_inner;
 }
 
 
index 8f368ca..faa5000 100644 (file)
@@ -276,9 +276,9 @@ ValaCCodeCommaExpression* vala_ccode_comma_expression_new (void) {
 
 static void vala_ccode_comma_expression_class_init (ValaCCodeCommaExpressionClass * klass) {
        vala_ccode_comma_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_comma_expression_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_comma_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeCommaExpressionPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_comma_expression_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_comma_expression_real_write;
 }
 
 
index 2e638e7..57a1b58 100644 (file)
@@ -172,9 +172,9 @@ void vala_ccode_comment_set_text (ValaCCodeComment* self, const gchar* value) {
 
 static void vala_ccode_comment_class_init (ValaCCodeCommentClass * klass) {
        vala_ccode_comment_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_comment_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_comment_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeCommentPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_comment_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_comment_real_write;
 }
 
 
index 5b588d2..44b61f7 100644 (file)
@@ -290,10 +290,10 @@ void vala_ccode_conditional_expression_set_false_expression (ValaCCodeConditiona
 
 static void vala_ccode_conditional_expression_class_init (ValaCCodeConditionalExpressionClass * klass) {
        vala_ccode_conditional_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_conditional_expression_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_conditional_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeConditionalExpressionPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_conditional_expression_real_write;
-       VALA_CCODE_EXPRESSION_CLASS (klass)->write_inner = vala_ccode_conditional_expression_real_write_inner;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_conditional_expression_real_write;
+       ((ValaCCodeExpressionClass *) klass)->write_inner = vala_ccode_conditional_expression_real_write_inner;
 }
 
 
index 359c9a2..3321754 100644 (file)
@@ -455,9 +455,9 @@ void vala_ccode_constant_set_name (ValaCCodeConstant* self, const gchar* value)
 
 static void vala_ccode_constant_class_init (ValaCCodeConstantClass * klass) {
        vala_ccode_constant_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_constant_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_constant_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeConstantPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_constant_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_constant_real_write;
 }
 
 
index f31f72d..8cbc8bf 100644 (file)
@@ -181,7 +181,7 @@ ValaCCodeContinueStatement* vala_ccode_continue_statement_new (void) {
 
 static void vala_ccode_continue_statement_class_init (ValaCCodeContinueStatementClass * klass) {
        vala_ccode_continue_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_continue_statement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_continue_statement_real_write;
 }
 
 
index d182d28..e918505 100644 (file)
@@ -158,7 +158,8 @@ typedef enum  {
        VALA_CCODE_MODIFIERS_INLINE = 1 << 3,
        VALA_CCODE_MODIFIERS_VOLATILE = 1 << 4,
        VALA_CCODE_MODIFIERS_DEPRECATED = 1 << 5,
-       VALA_CCODE_MODIFIERS_THREAD_LOCAL = 1 << 6
+       VALA_CCODE_MODIFIERS_THREAD_LOCAL = 1 << 6,
+       VALA_CCODE_MODIFIERS_INTERNAL = 1 << 7
 } ValaCCodeModifiers;
 
 struct _ValaCCodeDeclarationPrivate {
@@ -260,7 +261,7 @@ static void vala_ccode_declaration_real_write (ValaCCodeNode* base, ValaCCodeWri
        self = (ValaCCodeDeclaration*) base;
        g_return_if_fail (writer != NULL);
        _tmp0_ = self->priv->_modifiers;
-       if ((_tmp0_ & (VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_EXTERN)) == 0) {
+       if ((_tmp0_ & ((VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_INTERNAL) | VALA_CCODE_MODIFIERS_EXTERN)) == 0) {
                {
                        ValaList* _decl_list = NULL;
                        ValaList* _tmp1_ = NULL;
@@ -394,212 +395,219 @@ static gboolean vala_ccode_declaration_has_initializer (ValaCCodeDeclaration* se
 static void vala_ccode_declaration_real_write_declaration (ValaCCodeNode* base, ValaCCodeWriter* writer) {
        ValaCCodeDeclaration * self;
        ValaCCodeModifiers _tmp0_ = 0;
-       ValaCCodeWriter* _tmp36_ = NULL;
-       ValaCCodeModifiers _tmp37_ = 0;
-       ValaCCodeWriter* _tmp39_ = NULL;
-       const gchar* _tmp40_ = NULL;
+       ValaCCodeWriter* _tmp38_ = NULL;
+       ValaCCodeModifiers _tmp39_ = 0;
        ValaCCodeWriter* _tmp41_ = NULL;
+       const gchar* _tmp42_ = NULL;
+       ValaCCodeWriter* _tmp43_ = NULL;
        gboolean first = FALSE;
-       ValaCCodeWriter* _tmp57_ = NULL;
-       ValaCCodeWriter* _tmp58_ = NULL;
+       ValaCCodeWriter* _tmp59_ = NULL;
+       ValaCCodeWriter* _tmp60_ = NULL;
        self = (ValaCCodeDeclaration*) base;
        g_return_if_fail (writer != NULL);
        _tmp0_ = self->priv->_modifiers;
-       if ((_tmp0_ & (VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_EXTERN)) != 0) {
+       if ((_tmp0_ & ((VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_INTERNAL) | VALA_CCODE_MODIFIERS_EXTERN)) != 0) {
                ValaCCodeWriter* _tmp1_ = NULL;
                ValaCCodeLineDirective* _tmp2_ = NULL;
                ValaCCodeLineDirective* _tmp3_ = NULL;
                ValaCCodeModifiers _tmp4_ = 0;
                ValaCCodeModifiers _tmp6_ = 0;
-               gboolean _tmp8_ = FALSE;
-               ValaCCodeModifiers _tmp9_ = 0;
-               ValaCCodeModifiers _tmp12_ = 0;
-               ValaCCodeWriter* _tmp14_ = NULL;
-               const gchar* _tmp15_ = NULL;
+               ValaCCodeModifiers _tmp8_ = 0;
+               gboolean _tmp10_ = FALSE;
+               ValaCCodeModifiers _tmp11_ = 0;
+               ValaCCodeModifiers _tmp14_ = 0;
                ValaCCodeWriter* _tmp16_ = NULL;
+               const gchar* _tmp17_ = NULL;
+               ValaCCodeWriter* _tmp18_ = NULL;
                gboolean first = FALSE;
-               ValaCCodeModifiers _tmp32_ = 0;
-               ValaCCodeWriter* _tmp34_ = NULL;
-               ValaCCodeWriter* _tmp35_ = NULL;
+               ValaCCodeModifiers _tmp34_ = 0;
+               ValaCCodeWriter* _tmp36_ = NULL;
+               ValaCCodeWriter* _tmp37_ = NULL;
                _tmp1_ = writer;
                _tmp2_ = vala_ccode_node_get_line ((ValaCCodeNode*) self);
                _tmp3_ = _tmp2_;
                vala_ccode_writer_write_indent (_tmp1_, _tmp3_);
                _tmp4_ = self->priv->_modifiers;
-               if ((_tmp4_ & VALA_CCODE_MODIFIERS_STATIC) != 0) {
+               if ((_tmp4_ & VALA_CCODE_MODIFIERS_INTERNAL) != 0) {
                        ValaCCodeWriter* _tmp5_ = NULL;
                        _tmp5_ = writer;
-                       vala_ccode_writer_write_string (_tmp5_, "static ");
+                       vala_ccode_writer_write_string (_tmp5_, "G_GNUC_INTERNAL ");
                }
                _tmp6_ = self->priv->_modifiers;
-               if ((_tmp6_ & VALA_CCODE_MODIFIERS_VOLATILE) != 0) {
+               if ((_tmp6_ & VALA_CCODE_MODIFIERS_STATIC) != 0) {
                        ValaCCodeWriter* _tmp7_ = NULL;
                        _tmp7_ = writer;
-                       vala_ccode_writer_write_string (_tmp7_, "volatile ");
+                       vala_ccode_writer_write_string (_tmp7_, "static ");
                }
-               _tmp9_ = self->priv->_modifiers;
-               if ((_tmp9_ & VALA_CCODE_MODIFIERS_EXTERN) != 0) {
-                       gboolean _tmp10_ = FALSE;
-                       _tmp10_ = vala_ccode_declaration_has_initializer (self);
-                       _tmp8_ = !_tmp10_;
-               } else {
-                       _tmp8_ = FALSE;
+               _tmp8_ = self->priv->_modifiers;
+               if ((_tmp8_ & VALA_CCODE_MODIFIERS_VOLATILE) != 0) {
+                       ValaCCodeWriter* _tmp9_ = NULL;
+                       _tmp9_ = writer;
+                       vala_ccode_writer_write_string (_tmp9_, "volatile ");
                }
-               if (_tmp8_) {
-                       ValaCCodeWriter* _tmp11_ = NULL;
-                       _tmp11_ = writer;
-                       vala_ccode_writer_write_string (_tmp11_, "extern ");
+               _tmp11_ = self->priv->_modifiers;
+               if ((_tmp11_ & VALA_CCODE_MODIFIERS_EXTERN) != 0) {
+                       gboolean _tmp12_ = FALSE;
+                       _tmp12_ = vala_ccode_declaration_has_initializer (self);
+                       _tmp10_ = !_tmp12_;
+               } else {
+                       _tmp10_ = FALSE;
                }
-               _tmp12_ = self->priv->_modifiers;
-               if ((_tmp12_ & VALA_CCODE_MODIFIERS_THREAD_LOCAL) != 0) {
+               if (_tmp10_) {
                        ValaCCodeWriter* _tmp13_ = NULL;
                        _tmp13_ = writer;
-                       vala_ccode_writer_write_string (_tmp13_, "thread_local ");
+                       vala_ccode_writer_write_string (_tmp13_, "extern ");
+               }
+               _tmp14_ = self->priv->_modifiers;
+               if ((_tmp14_ & VALA_CCODE_MODIFIERS_THREAD_LOCAL) != 0) {
+                       ValaCCodeWriter* _tmp15_ = NULL;
+                       _tmp15_ = writer;
+                       vala_ccode_writer_write_string (_tmp15_, "thread_local ");
                }
-               _tmp14_ = writer;
-               _tmp15_ = self->priv->_type_name;
-               vala_ccode_writer_write_string (_tmp14_, _tmp15_);
                _tmp16_ = writer;
-               vala_ccode_writer_write_string (_tmp16_, " ");
+               _tmp17_ = self->priv->_type_name;
+               vala_ccode_writer_write_string (_tmp16_, _tmp17_);
+               _tmp18_ = writer;
+               vala_ccode_writer_write_string (_tmp18_, " ");
                first = TRUE;
                {
                        ValaList* _decl_list = NULL;
-                       ValaList* _tmp17_ = NULL;
-                       ValaList* _tmp18_ = NULL;
-                       gint _decl_size = 0;
                        ValaList* _tmp19_ = NULL;
-                       gint _tmp20_ = 0;
-                       gint _tmp21_ = 0;
+                       ValaList* _tmp20_ = NULL;
+                       gint _decl_size = 0;
+                       ValaList* _tmp21_ = NULL;
+                       gint _tmp22_ = 0;
+                       gint _tmp23_ = 0;
                        gint _decl_index = 0;
-                       _tmp17_ = self->priv->declarators;
-                       _tmp18_ = _vala_iterable_ref0 (_tmp17_);
-                       _decl_list = _tmp18_;
-                       _tmp19_ = _decl_list;
-                       _tmp20_ = vala_collection_get_size ((ValaCollection*) _tmp19_);
-                       _tmp21_ = _tmp20_;
-                       _decl_size = _tmp21_;
+                       _tmp19_ = self->priv->declarators;
+                       _tmp20_ = _vala_iterable_ref0 (_tmp19_);
+                       _decl_list = _tmp20_;
+                       _tmp21_ = _decl_list;
+                       _tmp22_ = vala_collection_get_size ((ValaCollection*) _tmp21_);
+                       _tmp23_ = _tmp22_;
+                       _decl_size = _tmp23_;
                        _decl_index = -1;
                        while (TRUE) {
-                               gint _tmp22_ = 0;
-                               gint _tmp23_ = 0;
                                gint _tmp24_ = 0;
-                               ValaCCodeDeclarator* decl = NULL;
-                               ValaList* _tmp25_ = NULL;
+                               gint _tmp25_ = 0;
                                gint _tmp26_ = 0;
-                               gpointer _tmp27_ = NULL;
-                               gboolean _tmp28_ = FALSE;
-                               ValaCCodeDeclarator* _tmp30_ = NULL;
-                               ValaCCodeWriter* _tmp31_ = NULL;
-                               _tmp22_ = _decl_index;
-                               _decl_index = _tmp22_ + 1;
-                               _tmp23_ = _decl_index;
-                               _tmp24_ = _decl_size;
-                               if (!(_tmp23_ < _tmp24_)) {
+                               ValaCCodeDeclarator* decl = NULL;
+                               ValaList* _tmp27_ = NULL;
+                               gint _tmp28_ = 0;
+                               gpointer _tmp29_ = NULL;
+                               gboolean _tmp30_ = FALSE;
+                               ValaCCodeDeclarator* _tmp32_ = NULL;
+                               ValaCCodeWriter* _tmp33_ = NULL;
+                               _tmp24_ = _decl_index;
+                               _decl_index = _tmp24_ + 1;
+                               _tmp25_ = _decl_index;
+                               _tmp26_ = _decl_size;
+                               if (!(_tmp25_ < _tmp26_)) {
                                        break;
                                }
-                               _tmp25_ = _decl_list;
-                               _tmp26_ = _decl_index;
-                               _tmp27_ = vala_list_get (_tmp25_, _tmp26_);
-                               decl = (ValaCCodeDeclarator*) _tmp27_;
-                               _tmp28_ = first;
-                               if (!_tmp28_) {
-                                       ValaCCodeWriter* _tmp29_ = NULL;
-                                       _tmp29_ = writer;
-                                       vala_ccode_writer_write_string (_tmp29_, ", ");
+                               _tmp27_ = _decl_list;
+                               _tmp28_ = _decl_index;
+                               _tmp29_ = vala_list_get (_tmp27_, _tmp28_);
+                               decl = (ValaCCodeDeclarator*) _tmp29_;
+                               _tmp30_ = first;
+                               if (!_tmp30_) {
+                                       ValaCCodeWriter* _tmp31_ = NULL;
+                                       _tmp31_ = writer;
+                                       vala_ccode_writer_write_string (_tmp31_, ", ");
                                } else {
                                        first = FALSE;
                                }
-                               _tmp30_ = decl;
-                               _tmp31_ = writer;
-                               vala_ccode_node_write ((ValaCCodeNode*) _tmp30_, _tmp31_);
+                               _tmp32_ = decl;
+                               _tmp33_ = writer;
+                               vala_ccode_node_write ((ValaCCodeNode*) _tmp32_, _tmp33_);
                                _vala_ccode_node_unref0 (decl);
                        }
                        _vala_iterable_unref0 (_decl_list);
                }
-               _tmp32_ = self->priv->_modifiers;
-               if ((_tmp32_ & VALA_CCODE_MODIFIERS_DEPRECATED) == VALA_CCODE_MODIFIERS_DEPRECATED) {
-                       ValaCCodeWriter* _tmp33_ = NULL;
-                       _tmp33_ = writer;
-                       vala_ccode_writer_write_string (_tmp33_, " G_GNUC_DEPRECATED");
+               _tmp34_ = self->priv->_modifiers;
+               if ((_tmp34_ & VALA_CCODE_MODIFIERS_DEPRECATED) == VALA_CCODE_MODIFIERS_DEPRECATED) {
+                       ValaCCodeWriter* _tmp35_ = NULL;
+                       _tmp35_ = writer;
+                       vala_ccode_writer_write_string (_tmp35_, " G_GNUC_DEPRECATED");
                }
-               _tmp34_ = writer;
-               vala_ccode_writer_write_string (_tmp34_, ";");
-               _tmp35_ = writer;
-               vala_ccode_writer_write_newline (_tmp35_);
+               _tmp36_ = writer;
+               vala_ccode_writer_write_string (_tmp36_, ";");
+               _tmp37_ = writer;
+               vala_ccode_writer_write_newline (_tmp37_);
                return;
        }
-       _tmp36_ = writer;
-       vala_ccode_writer_write_indent (_tmp36_, NULL);
-       _tmp37_ = self->priv->_modifiers;
-       if ((_tmp37_ & VALA_CCODE_MODIFIERS_REGISTER) == VALA_CCODE_MODIFIERS_REGISTER) {
-               ValaCCodeWriter* _tmp38_ = NULL;
-               _tmp38_ = writer;
-               vala_ccode_writer_write_string (_tmp38_, "register ");
+       _tmp38_ = writer;
+       vala_ccode_writer_write_indent (_tmp38_, NULL);
+       _tmp39_ = self->priv->_modifiers;
+       if ((_tmp39_ & VALA_CCODE_MODIFIERS_REGISTER) == VALA_CCODE_MODIFIERS_REGISTER) {
+               ValaCCodeWriter* _tmp40_ = NULL;
+               _tmp40_ = writer;
+               vala_ccode_writer_write_string (_tmp40_, "register ");
        }
-       _tmp39_ = writer;
-       _tmp40_ = self->priv->_type_name;
-       vala_ccode_writer_write_string (_tmp39_, _tmp40_);
        _tmp41_ = writer;
-       vala_ccode_writer_write_string (_tmp41_, " ");
+       _tmp42_ = self->priv->_type_name;
+       vala_ccode_writer_write_string (_tmp41_, _tmp42_);
+       _tmp43_ = writer;
+       vala_ccode_writer_write_string (_tmp43_, " ");
        first = TRUE;
        {
                ValaList* _decl_list = NULL;
-               ValaList* _tmp42_ = NULL;
-               ValaList* _tmp43_ = NULL;
-               gint _decl_size = 0;
                ValaList* _tmp44_ = NULL;
-               gint _tmp45_ = 0;
-               gint _tmp46_ = 0;
+               ValaList* _tmp45_ = NULL;
+               gint _decl_size = 0;
+               ValaList* _tmp46_ = NULL;
+               gint _tmp47_ = 0;
+               gint _tmp48_ = 0;
                gint _decl_index = 0;
-               _tmp42_ = self->priv->declarators;
-               _tmp43_ = _vala_iterable_ref0 (_tmp42_);
-               _decl_list = _tmp43_;
-               _tmp44_ = _decl_list;
-               _tmp45_ = vala_collection_get_size ((ValaCollection*) _tmp44_);
-               _tmp46_ = _tmp45_;
-               _decl_size = _tmp46_;
+               _tmp44_ = self->priv->declarators;
+               _tmp45_ = _vala_iterable_ref0 (_tmp44_);
+               _decl_list = _tmp45_;
+               _tmp46_ = _decl_list;
+               _tmp47_ = vala_collection_get_size ((ValaCollection*) _tmp46_);
+               _tmp48_ = _tmp47_;
+               _decl_size = _tmp48_;
                _decl_index = -1;
                while (TRUE) {
-                       gint _tmp47_ = 0;
-                       gint _tmp48_ = 0;
                        gint _tmp49_ = 0;
-                       ValaCCodeDeclarator* decl = NULL;
-                       ValaList* _tmp50_ = NULL;
+                       gint _tmp50_ = 0;
                        gint _tmp51_ = 0;
-                       gpointer _tmp52_ = NULL;
-                       gboolean _tmp53_ = FALSE;
-                       ValaCCodeDeclarator* _tmp55_ = NULL;
-                       ValaCCodeWriter* _tmp56_ = NULL;
-                       _tmp47_ = _decl_index;
-                       _decl_index = _tmp47_ + 1;
-                       _tmp48_ = _decl_index;
-                       _tmp49_ = _decl_size;
-                       if (!(_tmp48_ < _tmp49_)) {
+                       ValaCCodeDeclarator* decl = NULL;
+                       ValaList* _tmp52_ = NULL;
+                       gint _tmp53_ = 0;
+                       gpointer _tmp54_ = NULL;
+                       gboolean _tmp55_ = FALSE;
+                       ValaCCodeDeclarator* _tmp57_ = NULL;
+                       ValaCCodeWriter* _tmp58_ = NULL;
+                       _tmp49_ = _decl_index;
+                       _decl_index = _tmp49_ + 1;
+                       _tmp50_ = _decl_index;
+                       _tmp51_ = _decl_size;
+                       if (!(_tmp50_ < _tmp51_)) {
                                break;
                        }
-                       _tmp50_ = _decl_list;
-                       _tmp51_ = _decl_index;
-                       _tmp52_ = vala_list_get (_tmp50_, _tmp51_);
-                       decl = (ValaCCodeDeclarator*) _tmp52_;
-                       _tmp53_ = first;
-                       if (!_tmp53_) {
-                               ValaCCodeWriter* _tmp54_ = NULL;
-                               _tmp54_ = writer;
-                               vala_ccode_writer_write_string (_tmp54_, ", ");
+                       _tmp52_ = _decl_list;
+                       _tmp53_ = _decl_index;
+                       _tmp54_ = vala_list_get (_tmp52_, _tmp53_);
+                       decl = (ValaCCodeDeclarator*) _tmp54_;
+                       _tmp55_ = first;
+                       if (!_tmp55_) {
+                               ValaCCodeWriter* _tmp56_ = NULL;
+                               _tmp56_ = writer;
+                               vala_ccode_writer_write_string (_tmp56_, ", ");
                        } else {
                                first = FALSE;
                        }
-                       _tmp55_ = decl;
-                       _tmp56_ = writer;
-                       vala_ccode_node_write_declaration ((ValaCCodeNode*) _tmp55_, _tmp56_);
+                       _tmp57_ = decl;
+                       _tmp58_ = writer;
+                       vala_ccode_node_write_declaration ((ValaCCodeNode*) _tmp57_, _tmp58_);
                        _vala_ccode_node_unref0 (decl);
                }
                _vala_iterable_unref0 (_decl_list);
        }
-       _tmp57_ = writer;
-       vala_ccode_writer_write_string (_tmp57_, ";");
-       _tmp58_ = writer;
-       vala_ccode_writer_write_newline (_tmp58_);
+       _tmp59_ = writer;
+       vala_ccode_writer_write_string (_tmp59_, ";");
+       _tmp60_ = writer;
+       vala_ccode_writer_write_newline (_tmp60_);
 }
 
 
@@ -644,10 +652,10 @@ void vala_ccode_declaration_set_modifiers (ValaCCodeDeclaration* self, ValaCCode
 
 static void vala_ccode_declaration_class_init (ValaCCodeDeclarationClass * klass) {
        vala_ccode_declaration_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_declaration_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_declaration_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeDeclarationPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_declaration_real_write;
-       VALA_CCODE_NODE_CLASS (klass)->write_declaration = vala_ccode_declaration_real_write_declaration;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_declaration_real_write;
+       ((ValaCCodeNodeClass *) klass)->write_declaration = vala_ccode_declaration_real_write_declaration;
 }
 
 
index 95216f8..24bda72 100644 (file)
@@ -52,7 +52,7 @@ public class Vala.CCodeDeclaration : CCodeStatement {
        }
        
        public override void write (CCodeWriter writer) {
-               if ((modifiers & (CCodeModifiers.STATIC | CCodeModifiers.EXTERN)) == 0) {
+               if ((modifiers & (CCodeModifiers.STATIC | CCodeModifiers.INTERNAL | CCodeModifiers.EXTERN)) == 0) {
                        foreach (CCodeDeclarator decl in declarators) {
                                decl.write_initialization (writer);
                        }
@@ -70,9 +70,12 @@ public class Vala.CCodeDeclaration : CCodeStatement {
        }
 
        public override void write_declaration (CCodeWriter writer) {
-               if ((modifiers & (CCodeModifiers.STATIC | CCodeModifiers.EXTERN)) != 0) {
+               if ((modifiers & (CCodeModifiers.STATIC | CCodeModifiers.INTERNAL | CCodeModifiers.EXTERN)) != 0) {
                        // combined declaration and initialization for static and extern variables
                        writer.write_indent (line);
+                       if ((modifiers & CCodeModifiers.INTERNAL) != 0) {
+                               writer.write_string ("G_GNUC_INTERNAL ");
+                       }
                        if ((modifiers & CCodeModifiers.STATIC) != 0) {
                                writer.write_string ("static ");
                        }
index b621e29..ab28d24 100644 (file)
@@ -136,7 +136,7 @@ ValaCCodeDeclarator* vala_ccode_declarator_construct (GType object_type) {
 
 static void vala_ccode_declarator_class_init (ValaCCodeDeclaratorClass * klass) {
        vala_ccode_declarator_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_DECLARATOR_CLASS (klass)->write_initialization = vala_ccode_declarator_real_write_initialization;
+       ((ValaCCodeDeclaratorClass *) klass)->write_initialization = vala_ccode_declarator_real_write_initialization;
 }
 
 
index 95ff59e..b606738 100644 (file)
@@ -298,9 +298,9 @@ void vala_ccode_do_statement_set_condition (ValaCCodeDoStatement* self, ValaCCod
 
 static void vala_ccode_do_statement_class_init (ValaCCodeDoStatementClass * klass) {
        vala_ccode_do_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_do_statement_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_do_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeDoStatementPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_do_statement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_do_statement_real_write;
 }
 
 
index 3153c6b..7932659 100644 (file)
@@ -242,9 +242,9 @@ void vala_ccode_element_access_set_index (ValaCCodeElementAccess* self, ValaCCod
 
 static void vala_ccode_element_access_class_init (ValaCCodeElementAccessClass * klass) {
        vala_ccode_element_access_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_element_access_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_element_access_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeElementAccessPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_element_access_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_element_access_real_write;
 }
 
 
index abaf9d1..74a8d98 100644 (file)
@@ -176,7 +176,7 @@ ValaCCodeEmptyStatement* vala_ccode_empty_statement_new (void) {
 
 static void vala_ccode_empty_statement_class_init (ValaCCodeEmptyStatementClass * klass) {
        vala_ccode_empty_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_empty_statement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_empty_statement_real_write;
 }
 
 
index 1f644b7..ba91cdd 100644 (file)
@@ -350,9 +350,9 @@ void vala_ccode_enum_set_deprecated (ValaCCodeEnum* self, gboolean value) {
 
 static void vala_ccode_enum_class_init (ValaCCodeEnumClass * klass) {
        vala_ccode_enum_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_enum_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_enum_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeEnumPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_enum_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_enum_real_write;
 }
 
 
index 20f49ec..e7fdb9b 100644 (file)
@@ -250,9 +250,9 @@ void vala_ccode_enum_value_set_value (ValaCCodeEnumValue* self, ValaCCodeExpress
 
 static void vala_ccode_enum_value_class_init (ValaCCodeEnumValueClass * klass) {
        vala_ccode_enum_value_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_enum_value_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_enum_value_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeEnumValuePrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_enum_value_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_enum_value_real_write;
 }
 
 
index 3803fb9..c648406 100644 (file)
@@ -134,7 +134,7 @@ ValaCCodeExpression* vala_ccode_expression_construct (GType object_type) {
 
 static void vala_ccode_expression_class_init (ValaCCodeExpressionClass * klass) {
        vala_ccode_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_EXPRESSION_CLASS (klass)->write_inner = vala_ccode_expression_real_write_inner;
+       ((ValaCCodeExpressionClass *) klass)->write_inner = vala_ccode_expression_real_write_inner;
 }
 
 
index 4db02f9..4ed121d 100644 (file)
@@ -357,9 +357,9 @@ void vala_ccode_expression_statement_set_expression (ValaCCodeExpressionStatemen
 
 static void vala_ccode_expression_statement_class_init (ValaCCodeExpressionStatementClass * klass) {
        vala_ccode_expression_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_expression_statement_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_expression_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeExpressionStatementPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_expression_statement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_expression_statement_real_write;
 }
 
 
index 5d624c7..53a14a2 100644 (file)
@@ -1004,7 +1004,7 @@ void vala_value_take_ccode_file (GValue* value, gpointer v_object) {
 
 static void vala_ccode_file_class_init (ValaCCodeFileClass * klass) {
        vala_ccode_file_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_FILE_CLASS (klass)->finalize = vala_ccode_file_finalize;
+       ((ValaCCodeFileClass *) klass)->finalize = vala_ccode_file_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeFilePrivate));
 }
 
@@ -1053,6 +1053,7 @@ static void vala_ccode_file_instance_init (ValaCCodeFile * self) {
 static void vala_ccode_file_finalize (ValaCCodeFile* obj) {
        ValaCCodeFile * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CCODE_FILE, ValaCCodeFile);
+       g_signal_handlers_destroy (self);
        _vala_iterable_unref0 (self->priv->declarations);
        _vala_iterable_unref0 (self->priv->includes);
        _vala_ccode_node_unref0 (self->priv->comments);
index aa433a1..7048556 100644 (file)
@@ -439,9 +439,9 @@ void vala_ccode_for_statement_set_body (ValaCCodeForStatement* self, ValaCCodeSt
 
 static void vala_ccode_for_statement_class_init (ValaCCodeForStatementClass * klass) {
        vala_ccode_for_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_for_statement_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_for_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeForStatementPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_for_statement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_for_statement_real_write;
 }
 
 
index ae701bc..8e38745 100644 (file)
@@ -333,11 +333,11 @@ ValaCCodeFragment* vala_ccode_fragment_new (void) {
 
 static void vala_ccode_fragment_class_init (ValaCCodeFragmentClass * klass) {
        vala_ccode_fragment_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_fragment_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_fragment_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeFragmentPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_fragment_real_write;
-       VALA_CCODE_NODE_CLASS (klass)->write_declaration = vala_ccode_fragment_real_write_declaration;
-       VALA_CCODE_NODE_CLASS (klass)->write_combined = vala_ccode_fragment_real_write_combined;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_fragment_real_write;
+       ((ValaCCodeNodeClass *) klass)->write_declaration = vala_ccode_fragment_real_write_declaration;
+       ((ValaCCodeNodeClass *) klass)->write_combined = vala_ccode_fragment_real_write_combined;
 }
 
 
index 6aea0dc..41459df 100644 (file)
@@ -291,7 +291,8 @@ typedef enum  {
        VALA_CCODE_MODIFIERS_INLINE = 1 << 3,
        VALA_CCODE_MODIFIERS_VOLATILE = 1 << 4,
        VALA_CCODE_MODIFIERS_DEPRECATED = 1 << 5,
-       VALA_CCODE_MODIFIERS_THREAD_LOCAL = 1 << 6
+       VALA_CCODE_MODIFIERS_THREAD_LOCAL = 1 << 6,
+       VALA_CCODE_MODIFIERS_INTERNAL = 1 << 7
 } ValaCCodeModifiers;
 
 struct _ValaCCodeFunctionPrivate {
@@ -644,18 +645,19 @@ static void vala_ccode_function_real_write (ValaCCodeNode* base, ValaCCodeWriter
        ValaCCodeLineDirective* _tmp2_ = NULL;
        ValaCCodeModifiers _tmp3_ = 0;
        ValaCCodeModifiers _tmp5_ = 0;
-       ValaCCodeWriter* _tmp7_ = NULL;
-       const gchar* _tmp8_ = NULL;
+       ValaCCodeModifiers _tmp7_ = 0;
        ValaCCodeWriter* _tmp9_ = NULL;
-       ValaCCodeWriter* _tmp10_ = NULL;
-       const gchar* _tmp11_ = NULL;
+       const gchar* _tmp10_ = NULL;
+       ValaCCodeWriter* _tmp11_ = NULL;
        ValaCCodeWriter* _tmp12_ = NULL;
+       const gchar* _tmp13_ = NULL;
+       ValaCCodeWriter* _tmp14_ = NULL;
        gboolean first = FALSE;
-       gboolean _tmp28_ = FALSE;
-       ValaCCodeWriter* _tmp30_ = NULL;
-       ValaCCodeModifiers _tmp31_ = 0;
-       gboolean _tmp33_ = FALSE;
-       ValaCCodeWriter* _tmp42_ = NULL;
+       gboolean _tmp30_ = FALSE;
+       ValaCCodeWriter* _tmp32_ = NULL;
+       ValaCCodeModifiers _tmp33_ = 0;
+       gboolean _tmp35_ = FALSE;
+       ValaCCodeWriter* _tmp44_ = NULL;
        self = (ValaCCodeFunction*) base;
        g_return_if_fail (writer != NULL);
        _tmp0_ = writer;
@@ -663,125 +665,131 @@ static void vala_ccode_function_real_write (ValaCCodeNode* base, ValaCCodeWriter
        _tmp2_ = _tmp1_;
        vala_ccode_writer_write_indent (_tmp0_, _tmp2_);
        _tmp3_ = self->priv->_modifiers;
-       if ((_tmp3_ & VALA_CCODE_MODIFIERS_STATIC) == VALA_CCODE_MODIFIERS_STATIC) {
+       if ((_tmp3_ & VALA_CCODE_MODIFIERS_INTERNAL) == VALA_CCODE_MODIFIERS_INTERNAL) {
                ValaCCodeWriter* _tmp4_ = NULL;
                _tmp4_ = writer;
-               vala_ccode_writer_write_string (_tmp4_, "static ");
+               vala_ccode_writer_write_string (_tmp4_, "G_GNUC_INTERNAL ");
        }
        _tmp5_ = self->priv->_modifiers;
-       if ((_tmp5_ & VALA_CCODE_MODIFIERS_INLINE) == VALA_CCODE_MODIFIERS_INLINE) {
+       if ((_tmp5_ & VALA_CCODE_MODIFIERS_STATIC) == VALA_CCODE_MODIFIERS_STATIC) {
                ValaCCodeWriter* _tmp6_ = NULL;
                _tmp6_ = writer;
-               vala_ccode_writer_write_string (_tmp6_, "inline ");
+               vala_ccode_writer_write_string (_tmp6_, "static ");
+       }
+       _tmp7_ = self->priv->_modifiers;
+       if ((_tmp7_ & VALA_CCODE_MODIFIERS_INLINE) == VALA_CCODE_MODIFIERS_INLINE) {
+               ValaCCodeWriter* _tmp8_ = NULL;
+               _tmp8_ = writer;
+               vala_ccode_writer_write_string (_tmp8_, "inline ");
        }
-       _tmp7_ = writer;
-       _tmp8_ = self->priv->_return_type;
-       vala_ccode_writer_write_string (_tmp7_, _tmp8_);
        _tmp9_ = writer;
-       vala_ccode_writer_write_string (_tmp9_, " ");
-       _tmp10_ = writer;
-       _tmp11_ = self->priv->_name;
-       vala_ccode_writer_write_string (_tmp10_, _tmp11_);
+       _tmp10_ = self->priv->_return_type;
+       vala_ccode_writer_write_string (_tmp9_, _tmp10_);
+       _tmp11_ = writer;
+       vala_ccode_writer_write_string (_tmp11_, " ");
        _tmp12_ = writer;
-       vala_ccode_writer_write_string (_tmp12_, " (");
+       _tmp13_ = self->priv->_name;
+       vala_ccode_writer_write_string (_tmp12_, _tmp13_);
+       _tmp14_ = writer;
+       vala_ccode_writer_write_string (_tmp14_, " (");
        first = TRUE;
        {
                ValaList* _param_list = NULL;
-               ValaList* _tmp13_ = NULL;
-               ValaList* _tmp14_ = NULL;
-               gint _param_size = 0;
                ValaList* _tmp15_ = NULL;
-               gint _tmp16_ = 0;
-               gint _tmp17_ = 0;
+               ValaList* _tmp16_ = NULL;
+               gint _param_size = 0;
+               ValaList* _tmp17_ = NULL;
+               gint _tmp18_ = 0;
+               gint _tmp19_ = 0;
                gint _param_index = 0;
-               _tmp13_ = self->priv->parameters;
-               _tmp14_ = _vala_iterable_ref0 (_tmp13_);
-               _param_list = _tmp14_;
-               _tmp15_ = _param_list;
-               _tmp16_ = vala_collection_get_size ((ValaCollection*) _tmp15_);
-               _tmp17_ = _tmp16_;
-               _param_size = _tmp17_;
+               _tmp15_ = self->priv->parameters;
+               _tmp16_ = _vala_iterable_ref0 (_tmp15_);
+               _param_list = _tmp16_;
+               _tmp17_ = _param_list;
+               _tmp18_ = vala_collection_get_size ((ValaCollection*) _tmp17_);
+               _tmp19_ = _tmp18_;
+               _param_size = _tmp19_;
                _param_index = -1;
                while (TRUE) {
-                       gint _tmp18_ = 0;
-                       gint _tmp19_ = 0;
                        gint _tmp20_ = 0;
-                       ValaCCodeParameter* param = NULL;
-                       ValaList* _tmp21_ = NULL;
+                       gint _tmp21_ = 0;
                        gint _tmp22_ = 0;
-                       gpointer _tmp23_ = NULL;
-                       gboolean _tmp24_ = FALSE;
-                       ValaCCodeParameter* _tmp26_ = NULL;
-                       ValaCCodeWriter* _tmp27_ = NULL;
-                       _tmp18_ = _param_index;
-                       _param_index = _tmp18_ + 1;
-                       _tmp19_ = _param_index;
-                       _tmp20_ = _param_size;
-                       if (!(_tmp19_ < _tmp20_)) {
+                       ValaCCodeParameter* param = NULL;
+                       ValaList* _tmp23_ = NULL;
+                       gint _tmp24_ = 0;
+                       gpointer _tmp25_ = NULL;
+                       gboolean _tmp26_ = FALSE;
+                       ValaCCodeParameter* _tmp28_ = NULL;
+                       ValaCCodeWriter* _tmp29_ = NULL;
+                       _tmp20_ = _param_index;
+                       _param_index = _tmp20_ + 1;
+                       _tmp21_ = _param_index;
+                       _tmp22_ = _param_size;
+                       if (!(_tmp21_ < _tmp22_)) {
                                break;
                        }
-                       _tmp21_ = _param_list;
-                       _tmp22_ = _param_index;
-                       _tmp23_ = vala_list_get (_tmp21_, _tmp22_);
-                       param = (ValaCCodeParameter*) _tmp23_;
-                       _tmp24_ = first;
-                       if (!_tmp24_) {
-                               ValaCCodeWriter* _tmp25_ = NULL;
-                               _tmp25_ = writer;
-                               vala_ccode_writer_write_string (_tmp25_, ", ");
+                       _tmp23_ = _param_list;
+                       _tmp24_ = _param_index;
+                       _tmp25_ = vala_list_get (_tmp23_, _tmp24_);
+                       param = (ValaCCodeParameter*) _tmp25_;
+                       _tmp26_ = first;
+                       if (!_tmp26_) {
+                               ValaCCodeWriter* _tmp27_ = NULL;
+                               _tmp27_ = writer;
+                               vala_ccode_writer_write_string (_tmp27_, ", ");
                        } else {
                                first = FALSE;
                        }
-                       _tmp26_ = param;
-                       _tmp27_ = writer;
-                       vala_ccode_node_write ((ValaCCodeNode*) _tmp26_, _tmp27_);
+                       _tmp28_ = param;
+                       _tmp29_ = writer;
+                       vala_ccode_node_write ((ValaCCodeNode*) _tmp28_, _tmp29_);
                        _vala_ccode_node_unref0 (param);
                }
                _vala_iterable_unref0 (_param_list);
        }
-       _tmp28_ = first;
-       if (_tmp28_) {
-               ValaCCodeWriter* _tmp29_ = NULL;
-               _tmp29_ = writer;
-               vala_ccode_writer_write_string (_tmp29_, "void");
+       _tmp30_ = first;
+       if (_tmp30_) {
+               ValaCCodeWriter* _tmp31_ = NULL;
+               _tmp31_ = writer;
+               vala_ccode_writer_write_string (_tmp31_, "void");
        }
-       _tmp30_ = writer;
-       vala_ccode_writer_write_string (_tmp30_, ")");
-       _tmp31_ = self->priv->_modifiers;
-       if ((_tmp31_ & VALA_CCODE_MODIFIERS_DEPRECATED) == VALA_CCODE_MODIFIERS_DEPRECATED) {
-               ValaCCodeWriter* _tmp32_ = NULL;
-               _tmp32_ = writer;
-               vala_ccode_writer_write_string (_tmp32_, " G_GNUC_DEPRECATED");
+       _tmp32_ = writer;
+       vala_ccode_writer_write_string (_tmp32_, ")");
+       _tmp33_ = self->priv->_modifiers;
+       if ((_tmp33_ & VALA_CCODE_MODIFIERS_DEPRECATED) == VALA_CCODE_MODIFIERS_DEPRECATED) {
+               ValaCCodeWriter* _tmp34_ = NULL;
+               _tmp34_ = writer;
+               vala_ccode_writer_write_string (_tmp34_, " G_GNUC_DEPRECATED");
        }
-       _tmp33_ = self->priv->_is_declaration;
-       if (_tmp33_) {
-               const gchar* _tmp34_ = NULL;
-               ValaCCodeWriter* _tmp38_ = NULL;
-               _tmp34_ = self->priv->_attributes;
-               if (_tmp34_ != NULL) {
-                       ValaCCodeWriter* _tmp35_ = NULL;
-                       ValaCCodeWriter* _tmp36_ = NULL;
-                       const gchar* _tmp37_ = NULL;
-                       _tmp35_ = writer;
-                       vala_ccode_writer_write_string (_tmp35_, " ");
-                       _tmp36_ = writer;
-                       _tmp37_ = self->priv->_attributes;
-                       vala_ccode_writer_write_string (_tmp36_, _tmp37_);
-               }
-               _tmp38_ = writer;
-               vala_ccode_writer_write_string (_tmp38_, ";");
-       } else {
-               ValaCCodeBlock* _tmp39_ = NULL;
+       _tmp35_ = self->priv->_is_declaration;
+       if (_tmp35_) {
+               const gchar* _tmp36_ = NULL;
                ValaCCodeWriter* _tmp40_ = NULL;
-               ValaCCodeWriter* _tmp41_ = NULL;
-               _tmp39_ = self->priv->_block;
+               _tmp36_ = self->priv->_attributes;
+               if (_tmp36_ != NULL) {
+                       ValaCCodeWriter* _tmp37_ = NULL;
+                       ValaCCodeWriter* _tmp38_ = NULL;
+                       const gchar* _tmp39_ = NULL;
+                       _tmp37_ = writer;
+                       vala_ccode_writer_write_string (_tmp37_, " ");
+                       _tmp38_ = writer;
+                       _tmp39_ = self->priv->_attributes;
+                       vala_ccode_writer_write_string (_tmp38_, _tmp39_);
+               }
                _tmp40_ = writer;
-               vala_ccode_node_write ((ValaCCodeNode*) _tmp39_, _tmp40_);
-               _tmp41_ = writer;
-               vala_ccode_writer_write_newline (_tmp41_);
+               vala_ccode_writer_write_string (_tmp40_, ";");
+       } else {
+               ValaCCodeBlock* _tmp41_ = NULL;
+               ValaCCodeWriter* _tmp42_ = NULL;
+               ValaCCodeWriter* _tmp43_ = NULL;
+               _tmp41_ = self->priv->_block;
+               _tmp42_ = writer;
+               vala_ccode_node_write ((ValaCCodeNode*) _tmp41_, _tmp42_);
+               _tmp43_ = writer;
+               vala_ccode_writer_write_newline (_tmp43_);
        }
-       _tmp42_ = writer;
-       vala_ccode_writer_write_newline (_tmp42_);
+       _tmp44_ = writer;
+       vala_ccode_writer_write_newline (_tmp44_);
 }
 
 
@@ -1406,9 +1414,9 @@ void vala_ccode_function_set_current_line (ValaCCodeFunction* self, ValaCCodeLin
 
 static void vala_ccode_function_class_init (ValaCCodeFunctionClass * klass) {
        vala_ccode_function_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_function_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_function_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeFunctionPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_function_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_function_real_write;
 }
 
 
index d54215b..7f3b3bb 100644 (file)
@@ -112,6 +112,9 @@ public class Vala.CCodeFunction : CCodeNode {
        
        public override void write (CCodeWriter writer) {
                writer.write_indent (line);
+               if (CCodeModifiers.INTERNAL in modifiers) {
+                       writer.write_string ("G_GNUC_INTERNAL ");
+               }
                if (CCodeModifiers.STATIC in modifiers) {
                        writer.write_string ("static ");
                }
index 8160949..84d5044 100644 (file)
@@ -323,9 +323,9 @@ void vala_ccode_function_call_set_call (ValaCCodeFunctionCall* self, ValaCCodeEx
 
 static void vala_ccode_function_call_class_init (ValaCCodeFunctionCallClass * klass) {
        vala_ccode_function_call_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_function_call_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_function_call_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeFunctionCallPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_function_call_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_function_call_real_write;
 }
 
 
index 785725b..3c26409 100644 (file)
@@ -309,10 +309,10 @@ void vala_ccode_function_declarator_set_name (ValaCCodeFunctionDeclarator* self,
 
 static void vala_ccode_function_declarator_class_init (ValaCCodeFunctionDeclaratorClass * klass) {
        vala_ccode_function_declarator_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_function_declarator_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_function_declarator_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeFunctionDeclaratorPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_function_declarator_real_write;
-       VALA_CCODE_NODE_CLASS (klass)->write_declaration = vala_ccode_function_declarator_real_write_declaration;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_function_declarator_real_write;
+       ((ValaCCodeNodeClass *) klass)->write_declaration = vala_ccode_function_declarator_real_write_declaration;
 }
 
 
index 2ef89e4..be73448 100644 (file)
@@ -218,9 +218,9 @@ void vala_ccode_goto_statement_set_name (ValaCCodeGotoStatement* self, const gch
 
 static void vala_ccode_goto_statement_class_init (ValaCCodeGotoStatementClass * klass) {
        vala_ccode_goto_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_goto_statement_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_goto_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeGotoStatementPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_goto_statement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_goto_statement_real_write;
 }
 
 
index a1d9750..589c08f 100644 (file)
@@ -194,9 +194,9 @@ void vala_ccode_identifier_set_name (ValaCCodeIdentifier* self, const gchar* val
 
 static void vala_ccode_identifier_class_init (ValaCCodeIdentifierClass * klass) {
        vala_ccode_identifier_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_identifier_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_identifier_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeIdentifierPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_identifier_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_identifier_real_write;
 }
 
 
index b722e91..70b657f 100644 (file)
@@ -260,10 +260,10 @@ void vala_ccode_if_section_set_expression (ValaCCodeIfSection* self, const gchar
 
 static void vala_ccode_if_section_class_init (ValaCCodeIfSectionClass * klass) {
        vala_ccode_if_section_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_if_section_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_if_section_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeIfSectionPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_if_section_real_write;
-       VALA_CCODE_NODE_CLASS (klass)->write_declaration = vala_ccode_if_section_real_write_declaration;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_if_section_real_write;
+       ((ValaCCodeNodeClass *) klass)->write_declaration = vala_ccode_if_section_real_write_declaration;
 }
 
 
index 8016c7a..6cf05d0 100644 (file)
@@ -405,9 +405,9 @@ void vala_ccode_if_statement_set_else_if (ValaCCodeIfStatement* self, gboolean v
 
 static void vala_ccode_if_statement_class_init (ValaCCodeIfStatementClass * klass) {
        vala_ccode_if_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_if_statement_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_if_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeIfStatementPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_if_statement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_if_statement_real_write;
 }
 
 
index f42683f..1e1f338 100644 (file)
@@ -240,9 +240,9 @@ void vala_ccode_include_directive_set_local (ValaCCodeIncludeDirective* self, gb
 
 static void vala_ccode_include_directive_class_init (ValaCCodeIncludeDirectiveClass * klass) {
        vala_ccode_include_directive_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_include_directive_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_include_directive_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeIncludeDirectivePrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_include_directive_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_include_directive_real_write;
 }
 
 
index 3ee55d6..4def487 100644 (file)
@@ -253,9 +253,9 @@ ValaCCodeInitializerList* vala_ccode_initializer_list_new (void) {
 
 static void vala_ccode_initializer_list_class_init (ValaCCodeInitializerListClass * klass) {
        vala_ccode_initializer_list_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_initializer_list_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_initializer_list_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeInitializerListPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_initializer_list_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_initializer_list_real_write;
 }
 
 
index 68250e2..df17583 100644 (file)
@@ -153,7 +153,7 @@ static void vala_ccode_invalid_expression_real_write (ValaCCodeNode* base, ValaC
 
 static void vala_ccode_invalid_expression_class_init (ValaCCodeInvalidExpressionClass * klass) {
        vala_ccode_invalid_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_invalid_expression_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_invalid_expression_real_write;
 }
 
 
index 2d200ff..d6e2c60 100644 (file)
@@ -215,9 +215,9 @@ void vala_ccode_label_set_name (ValaCCodeLabel* self, const gchar* value) {
 
 static void vala_ccode_label_class_init (ValaCCodeLabelClass * klass) {
        vala_ccode_label_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_label_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_label_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeLabelPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_label_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_label_real_write;
 }
 
 
index c79813b..1470d94 100644 (file)
@@ -219,9 +219,9 @@ void vala_ccode_line_directive_set_line_number (ValaCCodeLineDirective* self, gi
 
 static void vala_ccode_line_directive_class_init (ValaCCodeLineDirectiveClass * klass) {
        vala_ccode_line_directive_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_line_directive_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_line_directive_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeLineDirectivePrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_line_directive_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_line_directive_real_write;
 }
 
 
index cb75c93..8944670 100644 (file)
@@ -304,9 +304,9 @@ void vala_ccode_macro_replacement_set_replacement_expression (ValaCCodeMacroRepl
 
 static void vala_ccode_macro_replacement_class_init (ValaCCodeMacroReplacementClass * klass) {
        vala_ccode_macro_replacement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_macro_replacement_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_macro_replacement_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeMacroReplacementPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_macro_replacement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_macro_replacement_real_write;
 }
 
 
index 4c7425f..30e85ad 100644 (file)
@@ -292,9 +292,9 @@ void vala_ccode_member_access_set_is_pointer (ValaCCodeMemberAccess* self, gbool
 
 static void vala_ccode_member_access_class_init (ValaCCodeMemberAccessClass * klass) {
        vala_ccode_member_access_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_member_access_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_member_access_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeMemberAccessPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_member_access_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_member_access_real_write;
 }
 
 
index 2037c78..74c7b33 100644 (file)
@@ -39,7 +39,8 @@ typedef enum  {
        VALA_CCODE_MODIFIERS_INLINE = 1 << 3,
        VALA_CCODE_MODIFIERS_VOLATILE = 1 << 4,
        VALA_CCODE_MODIFIERS_DEPRECATED = 1 << 5,
-       VALA_CCODE_MODIFIERS_THREAD_LOCAL = 1 << 6
+       VALA_CCODE_MODIFIERS_THREAD_LOCAL = 1 << 6,
+       VALA_CCODE_MODIFIERS_INTERNAL = 1 << 7
 } ValaCCodeModifiers;
 
 
@@ -50,7 +51,7 @@ GType vala_ccode_modifiers_get_type (void) G_GNUC_CONST;
 GType vala_ccode_modifiers_get_type (void) {
        static volatile gsize vala_ccode_modifiers_type_id__volatile = 0;
        if (g_once_init_enter (&vala_ccode_modifiers_type_id__volatile)) {
-               static const GFlagsValue values[] = {{VALA_CCODE_MODIFIERS_NONE, "VALA_CCODE_MODIFIERS_NONE", "none"}, {VALA_CCODE_MODIFIERS_STATIC, "VALA_CCODE_MODIFIERS_STATIC", "static"}, {VALA_CCODE_MODIFIERS_REGISTER, "VALA_CCODE_MODIFIERS_REGISTER", "register"}, {VALA_CCODE_MODIFIERS_EXTERN, "VALA_CCODE_MODIFIERS_EXTERN", "extern"}, {VALA_CCODE_MODIFIERS_INLINE, "VALA_CCODE_MODIFIERS_INLINE", "inline"}, {VALA_CCODE_MODIFIERS_VOLATILE, "VALA_CCODE_MODIFIERS_VOLATILE", "volatile"}, {VALA_CCODE_MODIFIERS_DEPRECATED, "VALA_CCODE_MODIFIERS_DEPRECATED", "deprecated"}, {VALA_CCODE_MODIFIERS_THREAD_LOCAL, "VALA_CCODE_MODIFIERS_THREAD_LOCAL", "thread-local"}, {0, NULL, NULL}};
+               static const GFlagsValue values[] = {{VALA_CCODE_MODIFIERS_NONE, "VALA_CCODE_MODIFIERS_NONE", "none"}, {VALA_CCODE_MODIFIERS_STATIC, "VALA_CCODE_MODIFIERS_STATIC", "static"}, {VALA_CCODE_MODIFIERS_REGISTER, "VALA_CCODE_MODIFIERS_REGISTER", "register"}, {VALA_CCODE_MODIFIERS_EXTERN, "VALA_CCODE_MODIFIERS_EXTERN", "extern"}, {VALA_CCODE_MODIFIERS_INLINE, "VALA_CCODE_MODIFIERS_INLINE", "inline"}, {VALA_CCODE_MODIFIERS_VOLATILE, "VALA_CCODE_MODIFIERS_VOLATILE", "volatile"}, {VALA_CCODE_MODIFIERS_DEPRECATED, "VALA_CCODE_MODIFIERS_DEPRECATED", "deprecated"}, {VALA_CCODE_MODIFIERS_THREAD_LOCAL, "VALA_CCODE_MODIFIERS_THREAD_LOCAL", "thread-local"}, {VALA_CCODE_MODIFIERS_INTERNAL, "VALA_CCODE_MODIFIERS_INTERNAL", "internal"}, {0, NULL, NULL}};
                GType vala_ccode_modifiers_type_id;
                vala_ccode_modifiers_type_id = g_flags_register_static ("ValaCCodeModifiers", values);
                g_once_init_leave (&vala_ccode_modifiers_type_id__volatile, vala_ccode_modifiers_type_id);
index 4dd7455..600751d 100644 (file)
@@ -33,5 +33,6 @@ public enum Vala.CCodeModifiers {
        INLINE = 1 << 3,
        VOLATILE = 1 << 4,
        DEPRECATED = 1 << 5,
-       THREAD_LOCAL = 1 << 6
+       THREAD_LOCAL = 1 << 6,
+       INTERNAL = 1 << 7
 }
index c416bd7..e942e17 100644 (file)
@@ -134,7 +134,7 @@ ValaCCodeNewline* vala_ccode_newline_new (void) {
 
 static void vala_ccode_newline_class_init (ValaCCodeNewlineClass * klass) {
        vala_ccode_newline_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_newline_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_newline_real_write;
 }
 
 
index 3b9422f..11b287c 100644 (file)
@@ -320,11 +320,11 @@ void vala_value_take_ccode_node (GValue* value, gpointer v_object) {
 
 static void vala_ccode_node_class_init (ValaCCodeNodeClass * klass) {
        vala_ccode_node_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_node_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_node_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeNodePrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_node_real_write;
-       VALA_CCODE_NODE_CLASS (klass)->write_declaration = vala_ccode_node_real_write_declaration;
-       VALA_CCODE_NODE_CLASS (klass)->write_combined = vala_ccode_node_real_write_combined;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_node_real_write;
+       ((ValaCCodeNodeClass *) klass)->write_declaration = vala_ccode_node_real_write_declaration;
+       ((ValaCCodeNodeClass *) klass)->write_combined = vala_ccode_node_real_write_combined;
 }
 
 
@@ -337,6 +337,7 @@ static void vala_ccode_node_instance_init (ValaCCodeNode * self) {
 static void vala_ccode_node_finalize (ValaCCodeNode* obj) {
        ValaCCodeNode * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CCODE_NODE, ValaCCodeNode);
+       g_signal_handlers_destroy (self);
        _vala_ccode_node_unref0 (self->priv->_line);
 }
 
index c05712d..5ac1394 100644 (file)
@@ -292,10 +292,10 @@ void vala_ccode_once_section_set_define (ValaCCodeOnceSection* self, const gchar
 
 static void vala_ccode_once_section_class_init (ValaCCodeOnceSectionClass * klass) {
        vala_ccode_once_section_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_once_section_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_once_section_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeOnceSectionPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_once_section_real_write;
-       VALA_CCODE_NODE_CLASS (klass)->write_declaration = vala_ccode_once_section_real_write_declaration;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_once_section_real_write;
+       ((ValaCCodeNodeClass *) klass)->write_declaration = vala_ccode_once_section_real_write_declaration;
 }
 
 
index bd42e4c..5ecd99b 100644 (file)
@@ -252,9 +252,9 @@ void vala_ccode_parameter_set_ellipsis (ValaCCodeParameter* self, gboolean value
 
 static void vala_ccode_parameter_class_init (ValaCCodeParameterClass * klass) {
        vala_ccode_parameter_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_parameter_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_parameter_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeParameterPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_parameter_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_parameter_real_write;
 }
 
 
index aa3400e..3f712eb 100644 (file)
@@ -206,9 +206,9 @@ void vala_ccode_parenthesized_expression_set_inner (ValaCCodeParenthesizedExpres
 
 static void vala_ccode_parenthesized_expression_class_init (ValaCCodeParenthesizedExpressionClass * klass) {
        vala_ccode_parenthesized_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_parenthesized_expression_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_parenthesized_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeParenthesizedExpressionPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_parenthesized_expression_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_parenthesized_expression_real_write;
 }
 
 
index b32f09d..3fc38e3 100644 (file)
@@ -246,9 +246,9 @@ void vala_ccode_return_statement_set_return_expression (ValaCCodeReturnStatement
 
 static void vala_ccode_return_statement_class_init (ValaCCodeReturnStatementClass * klass) {
        vala_ccode_return_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_return_statement_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_return_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeReturnStatementPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_return_statement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_return_statement_real_write;
 }
 
 
index be2ddb7..bd11123 100644 (file)
@@ -84,6 +84,16 @@ typedef struct _ValaCCodeDeclarationClass ValaCCodeDeclarationClass;
 #define _g_free0(var) (var = (g_free (var), NULL))
 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
 
+#define VALA_TYPE_CCODE_DECLARATOR_SUFFIX (vala_ccode_declarator_suffix_get_type ())
+#define VALA_CCODE_DECLARATOR_SUFFIX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_DECLARATOR_SUFFIX, ValaCCodeDeclaratorSuffix))
+#define VALA_CCODE_DECLARATOR_SUFFIX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_DECLARATOR_SUFFIX, ValaCCodeDeclaratorSuffixClass))
+#define VALA_IS_CCODE_DECLARATOR_SUFFIX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_DECLARATOR_SUFFIX))
+#define VALA_IS_CCODE_DECLARATOR_SUFFIX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_DECLARATOR_SUFFIX))
+#define VALA_CCODE_DECLARATOR_SUFFIX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_DECLARATOR_SUFFIX, ValaCCodeDeclaratorSuffixClass))
+
+typedef struct _ValaCCodeDeclaratorSuffix ValaCCodeDeclaratorSuffix;
+typedef struct _ValaCCodeDeclaratorSuffixClass ValaCCodeDeclaratorSuffixClass;
+
 #define VALA_TYPE_CCODE_DECLARATOR (vala_ccode_declarator_get_type ())
 #define VALA_CCODE_DECLARATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_DECLARATOR, ValaCCodeDeclarator))
 #define VALA_CCODE_DECLARATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_DECLARATOR, ValaCCodeDeclaratorClass))
@@ -173,14 +183,21 @@ ValaCCodeStruct* vala_ccode_struct_construct (GType object_type, const gchar* na
 ValaCCodeNode* vala_ccode_node_construct (GType object_type);
 void vala_ccode_struct_set_name (ValaCCodeStruct* self, const gchar* value);
 void vala_ccode_struct_add_declaration (ValaCCodeStruct* self, ValaCCodeDeclaration* decl);
-void vala_ccode_struct_add_field (ValaCCodeStruct* self, const gchar* type_name, const gchar* name, const gchar* declarator_suffix);
+gpointer vala_ccode_declarator_suffix_ref (gpointer instance);
+void vala_ccode_declarator_suffix_unref (gpointer instance);
+GParamSpec* vala_param_spec_ccode_declarator_suffix (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void vala_value_set_ccode_declarator_suffix (GValue* value, gpointer v_object);
+void vala_value_take_ccode_declarator_suffix (GValue* value, gpointer v_object);
+gpointer vala_value_get_ccode_declarator_suffix (const GValue* value);
+GType vala_ccode_declarator_suffix_get_type (void) G_GNUC_CONST;
+void vala_ccode_struct_add_field (ValaCCodeStruct* self, const gchar* type_name, const gchar* name, ValaCCodeDeclaratorSuffix* declarator_suffix);
 ValaCCodeDeclaration* vala_ccode_declaration_new (const gchar* type_name);
 ValaCCodeDeclaration* vala_ccode_declaration_construct (GType object_type, const gchar* type_name);
 GType vala_ccode_declarator_get_type (void) G_GNUC_CONST;
 void vala_ccode_declaration_add_declarator (ValaCCodeDeclaration* self, ValaCCodeDeclarator* decl);
 GType vala_ccode_expression_get_type (void) G_GNUC_CONST;
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new (const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix);
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct (GType object_type, const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix);
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new (const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix);
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct (GType object_type, const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix);
 GType vala_ccode_variable_declarator_get_type (void) G_GNUC_CONST;
 static void vala_ccode_struct_real_write (ValaCCodeNode* base, ValaCCodeWriter* writer);
 void vala_ccode_writer_write_string (ValaCCodeWriter* self, const gchar* s);
@@ -233,12 +250,12 @@ void vala_ccode_struct_add_declaration (ValaCCodeStruct* self, ValaCCodeDeclarat
  * @param type_name field type
  * @param name      member name
  */
-void vala_ccode_struct_add_field (ValaCCodeStruct* self, const gchar* type_name, const gchar* name, const gchar* declarator_suffix) {
+void vala_ccode_struct_add_field (ValaCCodeStruct* self, const gchar* type_name, const gchar* name, ValaCCodeDeclaratorSuffix* declarator_suffix) {
        ValaCCodeDeclaration* decl = NULL;
        const gchar* _tmp0_ = NULL;
        ValaCCodeDeclaration* _tmp1_ = NULL;
        const gchar* _tmp2_ = NULL;
-       const gchar* _tmp3_ = NULL;
+       ValaCCodeDeclaratorSuffix* _tmp3_ = NULL;
        ValaCCodeVariableDeclarator* _tmp4_ = NULL;
        ValaCCodeVariableDeclarator* _tmp5_ = NULL;
        g_return_if_fail (self != NULL);
@@ -400,9 +417,9 @@ gboolean vala_ccode_struct_get_is_empty (ValaCCodeStruct* self) {
 
 static void vala_ccode_struct_class_init (ValaCCodeStructClass * klass) {
        vala_ccode_struct_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_struct_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_struct_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeStructPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_struct_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_struct_real_write;
 }
 
 
index 76f7679..96836ed 100644 (file)
@@ -59,7 +59,7 @@ public class Vala.CCodeStruct : CCodeNode {
         * @param type_name field type
         * @param name      member name
         */
-       public void add_field (string type_name, string name, string? declarator_suffix = null) {
+       public void add_field (string type_name, string name, CCodeDeclaratorSuffix? declarator_suffix = null) {
                var decl = new CCodeDeclaration (type_name);
                decl.add_declarator (new CCodeVariableDeclarator (name, null, declarator_suffix));
                add_declaration (decl);
index fef277f..2a4cb7d 100644 (file)
@@ -261,9 +261,9 @@ void vala_ccode_switch_statement_set_expression (ValaCCodeSwitchStatement* self,
 
 static void vala_ccode_switch_statement_class_init (ValaCCodeSwitchStatementClass * klass) {
        vala_ccode_switch_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_switch_statement_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_switch_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeSwitchStatementPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_switch_statement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_switch_statement_real_write;
 }
 
 
index 0ca0196..6c6800b 100644 (file)
@@ -287,10 +287,10 @@ void vala_ccode_type_definition_set_deprecated (ValaCCodeTypeDefinition* self, g
 
 static void vala_ccode_type_definition_class_init (ValaCCodeTypeDefinitionClass * klass) {
        vala_ccode_type_definition_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_type_definition_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_type_definition_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeTypeDefinitionPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_type_definition_real_write;
-       VALA_CCODE_NODE_CLASS (klass)->write_declaration = vala_ccode_type_definition_real_write_declaration;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_type_definition_real_write;
+       ((ValaCCodeNodeClass *) klass)->write_declaration = vala_ccode_type_definition_real_write_declaration;
 }
 
 
index 80cfbaf..33a2a59 100644 (file)
@@ -396,10 +396,10 @@ void vala_ccode_unary_expression_set_inner (ValaCCodeUnaryExpression* self, Vala
 
 static void vala_ccode_unary_expression_class_init (ValaCCodeUnaryExpressionClass * klass) {
        vala_ccode_unary_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_unary_expression_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_unary_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeUnaryExpressionPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_unary_expression_real_write;
-       VALA_CCODE_EXPRESSION_CLASS (klass)->write_inner = vala_ccode_unary_expression_real_write_inner;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_unary_expression_real_write;
+       ((ValaCCodeExpressionClass *) klass)->write_inner = vala_ccode_unary_expression_real_write_inner;
 }
 
 
index 8850cbb..8ec6156 100644 (file)
@@ -27,6 +27,7 @@
 #include <glib-object.h>
 #include <stdlib.h>
 #include <string.h>
+#include <gobject/gvaluecollector.h>
 
 
 #define VALA_TYPE_CCODE_NODE (vala_ccode_node_get_type ())
@@ -81,8 +82,19 @@ typedef struct _ValaCCodeVariableDeclaratorPrivate ValaCCodeVariableDeclaratorPr
 
 typedef struct _ValaCCodeExpression ValaCCodeExpression;
 typedef struct _ValaCCodeExpressionClass ValaCCodeExpressionClass;
+
+#define VALA_TYPE_CCODE_DECLARATOR_SUFFIX (vala_ccode_declarator_suffix_get_type ())
+#define VALA_CCODE_DECLARATOR_SUFFIX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_DECLARATOR_SUFFIX, ValaCCodeDeclaratorSuffix))
+#define VALA_CCODE_DECLARATOR_SUFFIX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CCODE_DECLARATOR_SUFFIX, ValaCCodeDeclaratorSuffixClass))
+#define VALA_IS_CCODE_DECLARATOR_SUFFIX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CCODE_DECLARATOR_SUFFIX))
+#define VALA_IS_CCODE_DECLARATOR_SUFFIX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CCODE_DECLARATOR_SUFFIX))
+#define VALA_CCODE_DECLARATOR_SUFFIX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CCODE_DECLARATOR_SUFFIX, ValaCCodeDeclaratorSuffixClass))
+
+typedef struct _ValaCCodeDeclaratorSuffix ValaCCodeDeclaratorSuffix;
+typedef struct _ValaCCodeDeclaratorSuffixClass ValaCCodeDeclaratorSuffixClass;
 #define _g_free0(var) (var = (g_free (var), NULL))
 #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
+#define _vala_ccode_declarator_suffix_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_declarator_suffix_unref (var), NULL)))
 
 #define VALA_TYPE_CCODE_LINE_DIRECTIVE (vala_ccode_line_directive_get_type ())
 #define VALA_CCODE_LINE_DIRECTIVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CCODE_LINE_DIRECTIVE, ValaCCodeLineDirective))
@@ -93,6 +105,8 @@ typedef struct _ValaCCodeExpressionClass ValaCCodeExpressionClass;
 
 typedef struct _ValaCCodeLineDirective ValaCCodeLineDirective;
 typedef struct _ValaCCodeLineDirectiveClass ValaCCodeLineDirectiveClass;
+typedef struct _ValaCCodeDeclaratorSuffixPrivate ValaCCodeDeclaratorSuffixPrivate;
+typedef struct _ValaParamSpecCCodeDeclaratorSuffix ValaParamSpecCCodeDeclaratorSuffix;
 
 struct _ValaCCodeNode {
        GTypeInstance parent_instance;
@@ -130,12 +144,31 @@ struct _ValaCCodeVariableDeclaratorClass {
 struct _ValaCCodeVariableDeclaratorPrivate {
        gchar* _name;
        ValaCCodeExpression* _initializer;
-       gchar* _declarator_suffix;
+       ValaCCodeDeclaratorSuffix* _declarator_suffix;
        gboolean _init0;
 };
 
+struct _ValaCCodeDeclaratorSuffix {
+       GTypeInstance parent_instance;
+       volatile int ref_count;
+       ValaCCodeDeclaratorSuffixPrivate * priv;
+       gboolean array;
+       ValaCCodeExpression* array_length;
+       gboolean deprecated;
+};
+
+struct _ValaCCodeDeclaratorSuffixClass {
+       GTypeClass parent_class;
+       void (*finalize) (ValaCCodeDeclaratorSuffix *self);
+};
+
+struct _ValaParamSpecCCodeDeclaratorSuffix {
+       GParamSpec parent_instance;
+};
+
 
 static gpointer vala_ccode_variable_declarator_parent_class = NULL;
+static gpointer vala_ccode_declarator_suffix_parent_class = NULL;
 
 gpointer vala_ccode_node_ref (gpointer instance);
 void vala_ccode_node_unref (gpointer instance);
@@ -154,23 +187,31 @@ GType vala_ccode_writer_get_type (void) G_GNUC_CONST;
 GType vala_ccode_declarator_get_type (void) G_GNUC_CONST;
 GType vala_ccode_variable_declarator_get_type (void) G_GNUC_CONST;
 GType vala_ccode_expression_get_type (void) G_GNUC_CONST;
+gpointer vala_ccode_declarator_suffix_ref (gpointer instance);
+void vala_ccode_declarator_suffix_unref (gpointer instance);
+GParamSpec* vala_param_spec_ccode_declarator_suffix (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void vala_value_set_ccode_declarator_suffix (GValue* value, gpointer v_object);
+void vala_value_take_ccode_declarator_suffix (GValue* value, gpointer v_object);
+gpointer vala_value_get_ccode_declarator_suffix (const GValue* value);
+GType vala_ccode_declarator_suffix_get_type (void) G_GNUC_CONST;
 #define VALA_CCODE_VARIABLE_DECLARATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_CCODE_VARIABLE_DECLARATOR, ValaCCodeVariableDeclaratorPrivate))
 enum  {
        VALA_CCODE_VARIABLE_DECLARATOR_DUMMY_PROPERTY
 };
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new (const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix);
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct (GType object_type, const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix);
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new (const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix);
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct (GType object_type, const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix);
 ValaCCodeDeclarator* vala_ccode_declarator_construct (GType object_type);
 void vala_ccode_variable_declarator_set_name (ValaCCodeVariableDeclarator* self, const gchar* value);
 void vala_ccode_variable_declarator_set_initializer (ValaCCodeVariableDeclarator* self, ValaCCodeExpression* value);
-void vala_ccode_variable_declarator_set_declarator_suffix (ValaCCodeVariableDeclarator* self, const gchar* value);
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new_zero (const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix);
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct_zero (GType object_type, const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix);
+void vala_ccode_variable_declarator_set_declarator_suffix (ValaCCodeVariableDeclarator* self, ValaCCodeDeclaratorSuffix* value);
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new_zero (const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix);
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct_zero (GType object_type, const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix);
 void vala_ccode_variable_declarator_set_init0 (ValaCCodeVariableDeclarator* self, gboolean value);
 static void vala_ccode_variable_declarator_real_write (ValaCCodeNode* base, ValaCCodeWriter* writer);
 void vala_ccode_writer_write_string (ValaCCodeWriter* self, const gchar* s);
 const gchar* vala_ccode_variable_declarator_get_name (ValaCCodeVariableDeclarator* self);
-const gchar* vala_ccode_variable_declarator_get_declarator_suffix (ValaCCodeVariableDeclarator* self);
+ValaCCodeDeclaratorSuffix* vala_ccode_variable_declarator_get_declarator_suffix (ValaCCodeVariableDeclarator* self);
+void vala_ccode_declarator_suffix_write (ValaCCodeDeclaratorSuffix* self, ValaCCodeWriter* writer);
 ValaCCodeExpression* vala_ccode_variable_declarator_get_initializer (ValaCCodeVariableDeclarator* self);
 void vala_ccode_node_write (ValaCCodeNode* self, ValaCCodeWriter* writer);
 static void vala_ccode_variable_declarator_real_write_declaration (ValaCCodeNode* base, ValaCCodeWriter* writer);
@@ -181,13 +222,21 @@ void vala_ccode_writer_write_indent (ValaCCodeWriter* self, ValaCCodeLineDirecti
 ValaCCodeLineDirective* vala_ccode_node_get_line (ValaCCodeNode* self);
 void vala_ccode_writer_write_newline (ValaCCodeWriter* self);
 static void vala_ccode_variable_declarator_finalize (ValaCCodeNode* obj);
+enum  {
+       VALA_CCODE_DECLARATOR_SUFFIX_DUMMY_PROPERTY
+};
+ValaCCodeDeclaratorSuffix* vala_ccode_declarator_suffix_new_with_array (ValaCCodeExpression* array_length);
+ValaCCodeDeclaratorSuffix* vala_ccode_declarator_suffix_construct_with_array (GType object_type, ValaCCodeExpression* array_length);
+ValaCCodeDeclaratorSuffix* vala_ccode_declarator_suffix_new (void);
+ValaCCodeDeclaratorSuffix* vala_ccode_declarator_suffix_construct (GType object_type);
+static void vala_ccode_declarator_suffix_finalize (ValaCCodeDeclaratorSuffix* obj);
 
 
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct (GType object_type, const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix) {
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct (GType object_type, const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix) {
        ValaCCodeVariableDeclarator* self = NULL;
        const gchar* _tmp0_ = NULL;
        ValaCCodeExpression* _tmp1_ = NULL;
-       const gchar* _tmp2_ = NULL;
+       ValaCCodeDeclaratorSuffix* _tmp2_ = NULL;
        g_return_val_if_fail (name != NULL, NULL);
        self = (ValaCCodeVariableDeclarator*) vala_ccode_declarator_construct (object_type);
        _tmp0_ = name;
@@ -200,16 +249,16 @@ ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct (GType obj
 }
 
 
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new (const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix) {
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new (const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix) {
        return vala_ccode_variable_declarator_construct (VALA_TYPE_CCODE_VARIABLE_DECLARATOR, name, initializer, declarator_suffix);
 }
 
 
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct_zero (GType object_type, const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix) {
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct_zero (GType object_type, const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix) {
        ValaCCodeVariableDeclarator* self = NULL;
        const gchar* _tmp0_ = NULL;
        ValaCCodeExpression* _tmp1_ = NULL;
-       const gchar* _tmp2_ = NULL;
+       ValaCCodeDeclaratorSuffix* _tmp2_ = NULL;
        g_return_val_if_fail (name != NULL, NULL);
        self = (ValaCCodeVariableDeclarator*) vala_ccode_declarator_construct (object_type);
        _tmp0_ = name;
@@ -223,7 +272,7 @@ ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_construct_zero (GTyp
 }
 
 
-ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new_zero (const gchar* name, ValaCCodeExpression* initializer, const gchar* declarator_suffix) {
+ValaCCodeVariableDeclarator* vala_ccode_variable_declarator_new_zero (const gchar* name, ValaCCodeExpression* initializer, ValaCCodeDeclaratorSuffix* declarator_suffix) {
        return vala_ccode_variable_declarator_construct_zero (VALA_TYPE_CCODE_VARIABLE_DECLARATOR, name, initializer, declarator_suffix);
 }
 
@@ -232,7 +281,7 @@ static void vala_ccode_variable_declarator_real_write (ValaCCodeNode* base, Vala
        ValaCCodeVariableDeclarator * self;
        ValaCCodeWriter* _tmp0_ = NULL;
        const gchar* _tmp1_ = NULL;
-       const gchar* _tmp2_ = NULL;
+       ValaCCodeDeclaratorSuffix* _tmp2_ = NULL;
        ValaCCodeExpression* _tmp5_ = NULL;
        self = (ValaCCodeVariableDeclarator*) base;
        g_return_if_fail (writer != NULL);
@@ -241,11 +290,11 @@ static void vala_ccode_variable_declarator_real_write (ValaCCodeNode* base, Vala
        vala_ccode_writer_write_string (_tmp0_, _tmp1_);
        _tmp2_ = self->priv->_declarator_suffix;
        if (_tmp2_ != NULL) {
-               ValaCCodeWriter* _tmp3_ = NULL;
-               const gchar* _tmp4_ = NULL;
-               _tmp3_ = writer;
-               _tmp4_ = self->priv->_declarator_suffix;
-               vala_ccode_writer_write_string (_tmp3_, _tmp4_);
+               ValaCCodeDeclaratorSuffix* _tmp3_ = NULL;
+               ValaCCodeWriter* _tmp4_ = NULL;
+               _tmp3_ = self->priv->_declarator_suffix;
+               _tmp4_ = writer;
+               vala_ccode_declarator_suffix_write (_tmp3_, _tmp4_);
        }
        _tmp5_ = self->priv->_initializer;
        if (_tmp5_ != NULL) {
@@ -265,7 +314,7 @@ static void vala_ccode_variable_declarator_real_write_declaration (ValaCCodeNode
        ValaCCodeVariableDeclarator * self;
        ValaCCodeWriter* _tmp0_ = NULL;
        const gchar* _tmp1_ = NULL;
-       const gchar* _tmp2_ = NULL;
+       ValaCCodeDeclaratorSuffix* _tmp2_ = NULL;
        gboolean _tmp5_ = FALSE;
        ValaCCodeExpression* _tmp6_ = NULL;
        self = (ValaCCodeVariableDeclarator*) base;
@@ -275,11 +324,11 @@ static void vala_ccode_variable_declarator_real_write_declaration (ValaCCodeNode
        vala_ccode_writer_write_string (_tmp0_, _tmp1_);
        _tmp2_ = self->priv->_declarator_suffix;
        if (_tmp2_ != NULL) {
-               ValaCCodeWriter* _tmp3_ = NULL;
-               const gchar* _tmp4_ = NULL;
-               _tmp3_ = writer;
-               _tmp4_ = self->priv->_declarator_suffix;
-               vala_ccode_writer_write_string (_tmp3_, _tmp4_);
+               ValaCCodeDeclaratorSuffix* _tmp3_ = NULL;
+               ValaCCodeWriter* _tmp4_ = NULL;
+               _tmp3_ = self->priv->_declarator_suffix;
+               _tmp4_ = writer;
+               vala_ccode_declarator_suffix_write (_tmp3_, _tmp4_);
        }
        _tmp6_ = self->priv->_initializer;
        if (_tmp6_ != NULL) {
@@ -394,9 +443,9 @@ void vala_ccode_variable_declarator_set_initializer (ValaCCodeVariableDeclarator
 }
 
 
-const gchar* vala_ccode_variable_declarator_get_declarator_suffix (ValaCCodeVariableDeclarator* self) {
-       const gchar* result;
-       const gchar* _tmp0_ = NULL;
+ValaCCodeDeclaratorSuffix* vala_ccode_variable_declarator_get_declarator_suffix (ValaCCodeVariableDeclarator* self) {
+       ValaCCodeDeclaratorSuffix* result;
+       ValaCCodeDeclaratorSuffix* _tmp0_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        _tmp0_ = self->priv->_declarator_suffix;
        result = _tmp0_;
@@ -404,13 +453,18 @@ const gchar* vala_ccode_variable_declarator_get_declarator_suffix (ValaCCodeVari
 }
 
 
-void vala_ccode_variable_declarator_set_declarator_suffix (ValaCCodeVariableDeclarator* self, const gchar* value) {
-       const gchar* _tmp0_ = NULL;
-       gchar* _tmp1_ = NULL;
+static gpointer _vala_ccode_declarator_suffix_ref0 (gpointer self) {
+       return self ? vala_ccode_declarator_suffix_ref (self) : NULL;
+}
+
+
+void vala_ccode_variable_declarator_set_declarator_suffix (ValaCCodeVariableDeclarator* self, ValaCCodeDeclaratorSuffix* value) {
+       ValaCCodeDeclaratorSuffix* _tmp0_ = NULL;
+       ValaCCodeDeclaratorSuffix* _tmp1_ = NULL;
        g_return_if_fail (self != NULL);
        _tmp0_ = value;
-       _tmp1_ = g_strdup (_tmp0_);
-       _g_free0 (self->priv->_declarator_suffix);
+       _tmp1_ = _vala_ccode_declarator_suffix_ref0 (_tmp0_);
+       _vala_ccode_declarator_suffix_unref0 (self->priv->_declarator_suffix);
        self->priv->_declarator_suffix = _tmp1_;
 }
 
@@ -435,11 +489,11 @@ void vala_ccode_variable_declarator_set_init0 (ValaCCodeVariableDeclarator* self
 
 static void vala_ccode_variable_declarator_class_init (ValaCCodeVariableDeclaratorClass * klass) {
        vala_ccode_variable_declarator_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_variable_declarator_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_variable_declarator_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeVariableDeclaratorPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_variable_declarator_real_write;
-       VALA_CCODE_NODE_CLASS (klass)->write_declaration = vala_ccode_variable_declarator_real_write_declaration;
-       VALA_CCODE_DECLARATOR_CLASS (klass)->write_initialization = vala_ccode_variable_declarator_real_write_initialization;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_variable_declarator_real_write;
+       ((ValaCCodeNodeClass *) klass)->write_declaration = vala_ccode_variable_declarator_real_write_declaration;
+       ((ValaCCodeDeclaratorClass *) klass)->write_initialization = vala_ccode_variable_declarator_real_write_initialization;
 }
 
 
@@ -453,7 +507,7 @@ static void vala_ccode_variable_declarator_finalize (ValaCCodeNode* obj) {
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CCODE_VARIABLE_DECLARATOR, ValaCCodeVariableDeclarator);
        _g_free0 (self->priv->_name);
        _vala_ccode_node_unref0 (self->priv->_initializer);
-       _g_free0 (self->priv->_declarator_suffix);
+       _vala_ccode_declarator_suffix_unref0 (self->priv->_declarator_suffix);
        VALA_CCODE_NODE_CLASS (vala_ccode_variable_declarator_parent_class)->finalize (obj);
 }
 
@@ -473,4 +527,228 @@ GType vala_ccode_variable_declarator_get_type (void) {
 }
 
 
+ValaCCodeDeclaratorSuffix* vala_ccode_declarator_suffix_construct_with_array (GType object_type, ValaCCodeExpression* array_length) {
+       ValaCCodeDeclaratorSuffix* self = NULL;
+       ValaCCodeExpression* _tmp0_ = NULL;
+       ValaCCodeExpression* _tmp1_ = NULL;
+       self = (ValaCCodeDeclaratorSuffix*) g_type_create_instance (object_type);
+       _tmp0_ = array_length;
+       _tmp1_ = _vala_ccode_node_ref0 (_tmp0_);
+       _vala_ccode_node_unref0 (self->array_length);
+       self->array_length = _tmp1_;
+       self->array = TRUE;
+       return self;
+}
+
+
+ValaCCodeDeclaratorSuffix* vala_ccode_declarator_suffix_new_with_array (ValaCCodeExpression* array_length) {
+       return vala_ccode_declarator_suffix_construct_with_array (VALA_TYPE_CCODE_DECLARATOR_SUFFIX, array_length);
+}
+
+
+void vala_ccode_declarator_suffix_write (ValaCCodeDeclaratorSuffix* self, ValaCCodeWriter* writer) {
+       gboolean _tmp0_ = FALSE;
+       gboolean _tmp6_ = FALSE;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (writer != NULL);
+       _tmp0_ = self->array;
+       if (_tmp0_) {
+               ValaCCodeWriter* _tmp1_ = NULL;
+               ValaCCodeExpression* _tmp2_ = NULL;
+               ValaCCodeWriter* _tmp5_ = NULL;
+               _tmp1_ = writer;
+               vala_ccode_writer_write_string (_tmp1_, "[");
+               _tmp2_ = self->array_length;
+               if (_tmp2_ != NULL) {
+                       ValaCCodeExpression* _tmp3_ = NULL;
+                       ValaCCodeWriter* _tmp4_ = NULL;
+                       _tmp3_ = self->array_length;
+                       _tmp4_ = writer;
+                       vala_ccode_node_write ((ValaCCodeNode*) _tmp3_, _tmp4_);
+               }
+               _tmp5_ = writer;
+               vala_ccode_writer_write_string (_tmp5_, "]");
+       }
+       _tmp6_ = self->deprecated;
+       if (_tmp6_) {
+               ValaCCodeWriter* _tmp7_ = NULL;
+               _tmp7_ = writer;
+               vala_ccode_writer_write_string (_tmp7_, " G_GNUC_DEPRECATED");
+       }
+}
+
+
+ValaCCodeDeclaratorSuffix* vala_ccode_declarator_suffix_construct (GType object_type) {
+       ValaCCodeDeclaratorSuffix* self = NULL;
+       self = (ValaCCodeDeclaratorSuffix*) g_type_create_instance (object_type);
+       return self;
+}
+
+
+ValaCCodeDeclaratorSuffix* vala_ccode_declarator_suffix_new (void) {
+       return vala_ccode_declarator_suffix_construct (VALA_TYPE_CCODE_DECLARATOR_SUFFIX);
+}
+
+
+static void vala_value_ccode_declarator_suffix_init (GValue* value) {
+       value->data[0].v_pointer = NULL;
+}
+
+
+static void vala_value_ccode_declarator_suffix_free_value (GValue* value) {
+       if (value->data[0].v_pointer) {
+               vala_ccode_declarator_suffix_unref (value->data[0].v_pointer);
+       }
+}
+
+
+static void vala_value_ccode_declarator_suffix_copy_value (const GValue* src_value, GValue* dest_value) {
+       if (src_value->data[0].v_pointer) {
+               dest_value->data[0].v_pointer = vala_ccode_declarator_suffix_ref (src_value->data[0].v_pointer);
+       } else {
+               dest_value->data[0].v_pointer = NULL;
+       }
+}
+
+
+static gpointer vala_value_ccode_declarator_suffix_peek_pointer (const GValue* value) {
+       return value->data[0].v_pointer;
+}
+
+
+static gchar* vala_value_ccode_declarator_suffix_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+       if (collect_values[0].v_pointer) {
+               ValaCCodeDeclaratorSuffix* object;
+               object = collect_values[0].v_pointer;
+               if (object->parent_instance.g_class == NULL) {
+                       return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+               } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
+                       return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
+               }
+               value->data[0].v_pointer = vala_ccode_declarator_suffix_ref (object);
+       } else {
+               value->data[0].v_pointer = NULL;
+       }
+       return NULL;
+}
+
+
+static gchar* vala_value_ccode_declarator_suffix_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+       ValaCCodeDeclaratorSuffix** object_p;
+       object_p = collect_values[0].v_pointer;
+       if (!object_p) {
+               return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
+       }
+       if (!value->data[0].v_pointer) {
+               *object_p = NULL;
+       } else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
+               *object_p = value->data[0].v_pointer;
+       } else {
+               *object_p = vala_ccode_declarator_suffix_ref (value->data[0].v_pointer);
+       }
+       return NULL;
+}
+
+
+GParamSpec* vala_param_spec_ccode_declarator_suffix (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
+       ValaParamSpecCCodeDeclaratorSuffix* spec;
+       g_return_val_if_fail (g_type_is_a (object_type, VALA_TYPE_CCODE_DECLARATOR_SUFFIX), NULL);
+       spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
+       G_PARAM_SPEC (spec)->value_type = object_type;
+       return G_PARAM_SPEC (spec);
+}
+
+
+gpointer vala_value_get_ccode_declarator_suffix (const GValue* value) {
+       g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALA_TYPE_CCODE_DECLARATOR_SUFFIX), NULL);
+       return value->data[0].v_pointer;
+}
+
+
+void vala_value_set_ccode_declarator_suffix (GValue* value, gpointer v_object) {
+       ValaCCodeDeclaratorSuffix* old;
+       g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALA_TYPE_CCODE_DECLARATOR_SUFFIX));
+       old = value->data[0].v_pointer;
+       if (v_object) {
+               g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, VALA_TYPE_CCODE_DECLARATOR_SUFFIX));
+               g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
+               value->data[0].v_pointer = v_object;
+               vala_ccode_declarator_suffix_ref (value->data[0].v_pointer);
+       } else {
+               value->data[0].v_pointer = NULL;
+       }
+       if (old) {
+               vala_ccode_declarator_suffix_unref (old);
+       }
+}
+
+
+void vala_value_take_ccode_declarator_suffix (GValue* value, gpointer v_object) {
+       ValaCCodeDeclaratorSuffix* old;
+       g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, VALA_TYPE_CCODE_DECLARATOR_SUFFIX));
+       old = value->data[0].v_pointer;
+       if (v_object) {
+               g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, VALA_TYPE_CCODE_DECLARATOR_SUFFIX));
+               g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
+               value->data[0].v_pointer = v_object;
+       } else {
+               value->data[0].v_pointer = NULL;
+       }
+       if (old) {
+               vala_ccode_declarator_suffix_unref (old);
+       }
+}
+
+
+static void vala_ccode_declarator_suffix_class_init (ValaCCodeDeclaratorSuffixClass * klass) {
+       vala_ccode_declarator_suffix_parent_class = g_type_class_peek_parent (klass);
+       ((ValaCCodeDeclaratorSuffixClass *) klass)->finalize = vala_ccode_declarator_suffix_finalize;
+}
+
+
+static void vala_ccode_declarator_suffix_instance_init (ValaCCodeDeclaratorSuffix * self) {
+       self->ref_count = 1;
+}
+
+
+static void vala_ccode_declarator_suffix_finalize (ValaCCodeDeclaratorSuffix* obj) {
+       ValaCCodeDeclaratorSuffix * self;
+       self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CCODE_DECLARATOR_SUFFIX, ValaCCodeDeclaratorSuffix);
+       g_signal_handlers_destroy (self);
+       _vala_ccode_node_unref0 (self->array_length);
+}
+
+
+GType vala_ccode_declarator_suffix_get_type (void) {
+       static volatile gsize vala_ccode_declarator_suffix_type_id__volatile = 0;
+       if (g_once_init_enter (&vala_ccode_declarator_suffix_type_id__volatile)) {
+               static const GTypeValueTable g_define_type_value_table = { vala_value_ccode_declarator_suffix_init, vala_value_ccode_declarator_suffix_free_value, vala_value_ccode_declarator_suffix_copy_value, vala_value_ccode_declarator_suffix_peek_pointer, "p", vala_value_ccode_declarator_suffix_collect_value, "p", vala_value_ccode_declarator_suffix_lcopy_value };
+               static const GTypeInfo g_define_type_info = { sizeof (ValaCCodeDeclaratorSuffixClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_ccode_declarator_suffix_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaCCodeDeclaratorSuffix), 0, (GInstanceInitFunc) vala_ccode_declarator_suffix_instance_init, &g_define_type_value_table };
+               static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
+               GType vala_ccode_declarator_suffix_type_id;
+               vala_ccode_declarator_suffix_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ValaCCodeDeclaratorSuffix", &g_define_type_info, &g_define_type_fundamental_info, 0);
+               g_once_init_leave (&vala_ccode_declarator_suffix_type_id__volatile, vala_ccode_declarator_suffix_type_id);
+       }
+       return vala_ccode_declarator_suffix_type_id__volatile;
+}
+
+
+gpointer vala_ccode_declarator_suffix_ref (gpointer instance) {
+       ValaCCodeDeclaratorSuffix* self;
+       self = instance;
+       g_atomic_int_inc (&self->ref_count);
+       return instance;
+}
+
+
+void vala_ccode_declarator_suffix_unref (gpointer instance) {
+       ValaCCodeDeclaratorSuffix* self;
+       self = instance;
+       if (g_atomic_int_dec_and_test (&self->ref_count)) {
+               VALA_CCODE_DECLARATOR_SUFFIX_GET_CLASS (self)->finalize (self);
+               g_type_free_instance ((GTypeInstance *) self);
+       }
+}
+
+
 
index 863ec83..c8dd874 100644 (file)
@@ -39,7 +39,7 @@ public class Vala.CCodeVariableDeclarator : CCodeDeclarator {
        /**
         * The optional declarator suffix.
         */
-       public string? declarator_suffix { get; set; }
+       public CCodeDeclaratorSuffix? declarator_suffix { get; set; }
 
        /**
         * Initializer only used to zero memory, safe to initialize as part
@@ -47,13 +47,13 @@ public class Vala.CCodeVariableDeclarator : CCodeDeclarator {
         */
        public bool init0 { get; set; }
 
-       public CCodeVariableDeclarator (string name, CCodeExpression? initializer = null, string? declarator_suffix = null) {
+       public CCodeVariableDeclarator (string name, CCodeExpression? initializer = null, CCodeDeclaratorSuffix? declarator_suffix = null) {
                this.name = name;
                this.initializer = initializer;
                this.declarator_suffix = declarator_suffix;
        }
 
-       public CCodeVariableDeclarator.zero (string name, CCodeExpression? initializer, string? declarator_suffix = null) {
+       public CCodeVariableDeclarator.zero (string name, CCodeExpression? initializer, CCodeDeclaratorSuffix? declarator_suffix = null) {
                this.name = name;
                this.initializer = initializer;
                this.declarator_suffix = declarator_suffix;
@@ -62,8 +62,9 @@ public class Vala.CCodeVariableDeclarator : CCodeDeclarator {
 
        public override void write (CCodeWriter writer) {
                writer.write_string (name);
+
                if (declarator_suffix != null) {
-                       writer.write_string (declarator_suffix);
+                       declarator_suffix.write (writer);
                }
 
                if (initializer != null) {
@@ -74,8 +75,9 @@ public class Vala.CCodeVariableDeclarator : CCodeDeclarator {
 
        public override void write_declaration (CCodeWriter writer) {
                writer.write_string (name);
+
                if (declarator_suffix != null) {
-                       writer.write_string (declarator_suffix);
+                       declarator_suffix.write (writer);
                }
 
                if (initializer != null && init0) {
@@ -97,3 +99,28 @@ public class Vala.CCodeVariableDeclarator : CCodeDeclarator {
                }
        }
 }
+
+public class Vala.CCodeDeclaratorSuffix {
+       public bool array;
+       public CCodeExpression? array_length;
+       public bool deprecated;
+
+       public CCodeDeclaratorSuffix.with_array (CCodeExpression? array_length = null) {
+               this.array_length = array_length;
+               array = true;
+       }
+
+       public void write (CCodeWriter writer) {
+               if (array) {
+                       writer.write_string ("[");
+                       if (array_length != null) {
+                               array_length.write (writer);
+                       }
+                       writer.write_string ("]");
+               }
+
+               if (deprecated) {
+                       writer.write_string (" G_GNUC_DEPRECATED");
+               }
+       }
+}
index 24dda02..7099a01 100644 (file)
@@ -268,9 +268,9 @@ void vala_ccode_while_statement_set_body (ValaCCodeWhileStatement* self, ValaCCo
 
 static void vala_ccode_while_statement_class_init (ValaCCodeWhileStatementClass * klass) {
        vala_ccode_while_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_NODE_CLASS (klass)->finalize = vala_ccode_while_statement_finalize;
+       ((ValaCCodeNodeClass *) klass)->finalize = vala_ccode_while_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeWhileStatementPrivate));
-       VALA_CCODE_NODE_CLASS (klass)->write = vala_ccode_while_statement_real_write;
+       ((ValaCCodeNodeClass *) klass)->write = vala_ccode_while_statement_real_write;
 }
 
 
index cd1dae2..2f82ef8 100644 (file)
@@ -45,7 +45,7 @@ typedef struct _ValaCCodeWriterClass ValaCCodeWriterClass;
 typedef struct _ValaCCodeWriterPrivate ValaCCodeWriterPrivate;
 #define _g_free0(var) (var = (g_free (var), NULL))
 #define _fclose0(var) ((var == NULL) ? NULL : (var = (fclose (var), NULL)))
-#define _g_mapped_file_free0(var) ((var == NULL) ? NULL : (var = (g_mapped_file_free (var), NULL)))
+#define _g_mapped_file_unref0(var) ((var == NULL) ? NULL : (var = (g_mapped_file_unref (var), NULL)))
 #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
 
 #define VALA_TYPE_CCODE_NODE (vala_ccode_node_get_type ())
@@ -311,7 +311,7 @@ void vala_ccode_writer_close (ValaCCodeWriter* self) {
                        _tmp1_ = self->priv->_filename;
                        _tmp2_ = g_mapped_file_new (_tmp1_, FALSE, &_inner_error_);
                        old_file = _tmp2_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == G_FILE_ERROR) {
                                        goto __catch0_g_file_error;
                                }
@@ -322,12 +322,12 @@ void vala_ccode_writer_close (ValaCCodeWriter* self) {
                        _tmp3_ = self->priv->temp_filename;
                        _tmp4_ = g_mapped_file_new (_tmp3_, FALSE, &_inner_error_);
                        new_file = _tmp4_;
-                       if (_inner_error_ != NULL) {
-                               _g_mapped_file_free0 (old_file);
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
+                               _g_mapped_file_unref0 (old_file);
                                if (_inner_error_->domain == G_FILE_ERROR) {
                                        goto __catch0_g_file_error;
                                }
-                               _g_mapped_file_free0 (old_file);
+                               _g_mapped_file_unref0 (old_file);
                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return;
@@ -355,12 +355,12 @@ void vala_ccode_writer_close (ValaCCodeWriter* self) {
                                        changed = FALSE;
                                }
                        }
-                       _g_mapped_file_free0 (old_file);
+                       _g_mapped_file_unref0 (old_file);
                        old_file = NULL;
-                       _g_mapped_file_free0 (new_file);
+                       _g_mapped_file_unref0 (new_file);
                        new_file = NULL;
-                       _g_mapped_file_free0 (new_file);
-                       _g_mapped_file_free0 (old_file);
+                       _g_mapped_file_unref0 (new_file);
+                       _g_mapped_file_unref0 (old_file);
                }
                goto __finally0;
                __catch0_g_file_error:
@@ -371,7 +371,7 @@ void vala_ccode_writer_close (ValaCCodeWriter* self) {
                        _g_error_free0 (e);
                }
                __finally0:
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
                        return;
@@ -573,7 +573,7 @@ void vala_ccode_writer_write_comment (ValaCCodeWriter* self, const gchar* text)
                first = TRUE;
                _tmp1_ = g_regex_new ("^\t+", 0, 0, &_inner_error_);
                regex = _tmp1_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch1_g_regex_error;
                        }
@@ -625,7 +625,7 @@ void vala_ccode_writer_write_comment (ValaCCodeWriter* self, const gchar* text)
                                        _tmp10_ = line;
                                        _tmp11_ = g_regex_replace_literal (_tmp9_, _tmp10_, (gssize) (-1), 0, "", 0, &_inner_error_);
                                        _tmp8_ = _tmp11_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _g_free0 (line);
                                                lines = (_vala_array_free (lines, lines_length1, (GDestroyNotify) g_free), NULL);
                                                _g_regex_unref0 (regex);
@@ -721,7 +721,7 @@ void vala_ccode_writer_write_comment (ValaCCodeWriter* self, const gchar* text)
                _g_error_free0 (e);
        }
        __finally1:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return;
@@ -890,7 +890,7 @@ void vala_value_take_ccode_writer (GValue* value, gpointer v_object) {
 
 static void vala_ccode_writer_class_init (ValaCCodeWriterClass * klass) {
        vala_ccode_writer_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_WRITER_CLASS (klass)->finalize = vala_ccode_writer_finalize;
+       ((ValaCCodeWriterClass *) klass)->finalize = vala_ccode_writer_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeWriterPrivate));
 }
 
@@ -906,6 +906,7 @@ static void vala_ccode_writer_instance_init (ValaCCodeWriter * self) {
 static void vala_ccode_writer_finalize (ValaCCodeWriter* obj) {
        ValaCCodeWriter * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CCODE_WRITER, ValaCCodeWriter);
+       g_signal_handlers_destroy (self);
        _g_free0 (self->priv->_filename);
        _g_free0 (self->priv->source_filename);
        _g_free0 (self->priv->temp_filename);
index 33e0c1a..a20e24f 100644 (file)
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.common
+
 NULL =
 
 AM_CPPFLAGS = \
@@ -57,7 +59,17 @@ codegeninclude_HEADERS = \
        $(NULL)
 
 codegen.vapi codegen.vala.stamp: $(libvala_la_VALASOURCES)
-       $(VALA_V)$(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir $(srcdir)/../gee --pkg gee --vapidir $(srcdir)/../ccode --pkg ccode --vapidir $(srcdir)/../vala --pkg vala -H valacodegen.h --library codegen $^
+       $(VALA_V)$(VALAC) \
+               $(COVERAGE_VALAFLAGS) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi --pkg gobject-2.0 \
+               --vapidir $(top_srcdir)/gee --pkg gee \
+               --vapidir $(top_srcdir)/ccode --pkg ccode \
+               --vapidir $(top_srcdir)/vala --pkg vala \
+               -H valacodegen.h \
+               --library codegen \
+               $^
        @touch $@
 
 libvala@PACKAGE_SUFFIX@_la_LDFLAGS = -no-undefined
@@ -65,8 +77,8 @@ libvala@PACKAGE_SUFFIX@_la_LDFLAGS = -no-undefined
 libvala@PACKAGE_SUFFIX@_la_LIBADD = \
        $(COVERAGE_LIBS) \
        $(GLIB_LIBS) \
-       ../vala/libvalacore.la \
-       ../ccode/libvalaccode.la \
+       $(top_builddir)/vala/libvalacore.la \
+       $(top_builddir)/ccode/libvalaccode.la \
        $(NULL)
 
 EXTRA_DIST = $(libvala_la_VALASOURCES) codegen.vapi codegen.vala.stamp
@@ -76,8 +88,3 @@ MAINTAINERCLEANFILES = \
        valacodegen.h \
        $(libvala_la_VALASOURCES:.vala=.c) \
        $(NULL)
-
-VALA_V = $(VALA_V_$(V))
-VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
-VALA_V_0 = @echo "  VALAC " $^;
-
index fa0f7a5..2110348 100644 (file)
@@ -78,9 +78,10 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/Makefile.common $(srcdir)/Makefile.in \
+       $(srcdir)/Makefile.am $(top_srcdir)/build-aux/depcomp \
+       $(codegeninclude_HEADERS)
 subdir = codegen
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/build-aux/depcomp $(codegeninclude_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
        $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -124,8 +125,8 @@ am__installdirs = "$(DESTDIR)$(libdir)" \
 LTLIBRARIES = $(lib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libvala@PACKAGE_SUFFIX@_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_1) ../vala/libvalacore.la \
-       ../ccode/libvalaccode.la $(am__DEPENDENCIES_1)
+       $(am__DEPENDENCIES_1) $(top_builddir)/vala/libvalacore.la \
+       $(top_builddir)/ccode/libvalaccode.la $(am__DEPENDENCIES_1)
 am__objects_1 =
 am__objects_2 = valaccodearraymodule.lo valaccodeassignmentmodule.lo \
        valaccodeattribute.lo valaccodebasemodule.lo \
@@ -322,7 +323,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -351,8 +351,9 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
+VALA_V = $(VALA_V_$(V))
+VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
+VALA_V_0 = @echo "  VALAC " $^;
 NULL = 
 AM_CPPFLAGS = \
        $(COVERAGE_CFLAGS) \
@@ -412,8 +413,8 @@ libvala@PACKAGE_SUFFIX@_la_LDFLAGS = -no-undefined
 libvala@PACKAGE_SUFFIX@_la_LIBADD = \
        $(COVERAGE_LIBS) \
        $(GLIB_LIBS) \
-       ../vala/libvalacore.la \
-       ../ccode/libvalaccode.la \
+       $(top_builddir)/vala/libvalacore.la \
+       $(top_builddir)/ccode/libvalaccode.la \
        $(NULL)
 
 EXTRA_DIST = $(libvala_la_VALASOURCES) codegen.vapi codegen.vala.stamp
@@ -423,15 +424,12 @@ MAINTAINERCLEANFILES = \
        $(libvala_la_VALASOURCES:.vala=.c) \
        $(NULL)
 
-VALA_V = $(VALA_V_$(V))
-VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
-VALA_V_0 = @echo "  VALAC " $^;
 all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.common $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -452,6 +450,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
+$(top_srcdir)/Makefile.common:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -797,7 +796,17 @@ uninstall-am: uninstall-codegenincludeHEADERS uninstall-libLTLIBRARIES
 
 
 codegen.vapi codegen.vala.stamp: $(libvala_la_VALASOURCES)
-       $(VALA_V)$(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir $(srcdir)/../gee --pkg gee --vapidir $(srcdir)/../ccode --pkg ccode --vapidir $(srcdir)/../vala --pkg vala -H valacodegen.h --library codegen $^
+       $(VALA_V)$(VALAC) \
+               $(COVERAGE_VALAFLAGS) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi --pkg gobject-2.0 \
+               --vapidir $(top_srcdir)/gee --pkg gee \
+               --vapidir $(top_srcdir)/ccode --pkg ccode \
+               --vapidir $(top_srcdir)/vala --pkg vala \
+               -H valacodegen.h \
+               --library codegen \
+               $^
        @touch $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
index ec400ce..ae9fb52 100644 (file)
@@ -239,7 +239,7 @@ namespace Vala {
                public static string get_ccode_const_name (Vala.CodeNode node);
                public static string get_ccode_constructv_name (Vala.CreationMethod m);
                public static string get_ccode_copy_function (Vala.TypeSymbol sym);
-               public static string get_ccode_declarator_suffix (Vala.DataType type);
+               public Vala.CCodeDeclaratorSuffix? get_ccode_declarator_suffix (Vala.DataType type);
                public static string get_ccode_default_value (Vala.TypeSymbol sym);
                public static bool get_ccode_delegate_target (Vala.CodeNode node);
                public static string get_ccode_delegate_target_name (Vala.Variable variable);
@@ -322,6 +322,7 @@ namespace Vala {
                public virtual string get_parameter_array_length_cname (Vala.Parameter param, int dim);
                public abstract Vala.TargetValue get_parameter_cvalue (Vala.Parameter param);
                public Vala.CCodeConstant get_property_canonical_cconstant (Vala.Property prop);
+               public static string get_quark_name (Vala.ErrorDomain edomain);
                public Vala.CCodeExpression get_result_cexpression (string cname = "result");
                public Vala.CCodeConstant get_signal_canonical_constant (Vala.Signal sig, string? detail = null);
                public virtual Vala.CCodeFunctionCall get_signal_creation (Vala.Signal sig, Vala.TypeSymbol type);
@@ -439,7 +440,7 @@ namespace Vala {
        [CCode (cheader_filename = "valacodegen.h")]
        public class CCodeCompiler {
                public CCodeCompiler ();
-               public void compile (Vala.CodeContext context, string? cc_command, string[] cc_options);
+               public void compile (Vala.CodeContext context, string? cc_command, string[] cc_options, string? pkg_config_command = null);
        }
        [CCode (cheader_filename = "valacodegen.h")]
        public abstract class CCodeControlFlowModule : Vala.CCodeMethodModule {
@@ -568,20 +569,23 @@ namespace Vala {
        public class GDBusModule : Vala.GVariantModule {
                public GDBusModule ();
                public bool dbus_method_uses_file_descriptor (Vala.Method method);
+               public static string dbus_result_name (Vala.Method m);
                public static string? get_dbus_name (Vala.TypeSymbol symbol);
                public static string get_dbus_name_for_member (Vala.Symbol symbol);
+               protected Vala.CCodeExpression get_interface_info (Vala.ObjectTypeSymbol sym);
                public static bool is_dbus_no_reply (Vala.Method m);
+               public static bool is_dbus_visible (Vala.CodeNode node);
                public void receive_dbus_value (Vala.DataType type, Vala.CCodeExpression message_expr, Vala.CCodeExpression iter_expr, Vala.CCodeExpression target_expr, Vala.Symbol? sym, Vala.CCodeExpression? error_expr = null, out bool may_fail = null);
                public void send_dbus_value (Vala.DataType type, Vala.CCodeExpression builder_expr, Vala.CCodeExpression expr, Vala.Symbol? sym);
+               public override void visit_class (Vala.Class cl);
                public override void visit_error_domain (Vala.ErrorDomain edomain);
+               public override void visit_interface (Vala.Interface iface);
        }
        [CCode (cheader_filename = "valacodegen.h")]
        public class GDBusServerModule : Vala.GDBusClientModule {
                public GDBusServerModule ();
-               public static string dbus_result_name (Vala.Method m);
                public override void generate_class_declaration (Vala.Class cl, Vala.CCodeFile decl_space);
                public override void generate_interface_declaration (Vala.Interface iface, Vala.CCodeFile decl_space);
-               public static bool is_dbus_visible (Vala.CodeNode node);
                public override void register_dbus_info (Vala.CCodeBlock block, Vala.ObjectTypeSymbol sym);
                public override void visit_class (Vala.Class cl);
                public override void visit_interface (Vala.Interface iface);
index 25def31..5d1cbe8 100644 (file)
@@ -418,6 +418,7 @@ gchar* vala_ccode_base_module_get_variable_cname (ValaCCodeBaseModule* self, con
 static ValaCCodeExpression* vala_ccode_array_module_real_get_array_length_cexpression (ValaCCodeBaseModule* base, ValaExpression* array_expr, gint dim);
 ValaCCodeExpression* vala_ccode_base_module_get_array_length_cvalue (ValaCCodeBaseModule* self, ValaTargetValue* value, gint dim);
 static ValaCCodeExpression* vala_ccode_array_module_real_get_array_length_cvalue (ValaCCodeBaseModule* base, ValaTargetValue* value, gint dim);
+ValaCCodeExpression* vala_ccode_base_module_get_ccodenode (ValaCCodeBaseModule* self, ValaExpression* node);
 GType vala_glib_value_get_type (void) G_GNUC_CONST;
 static gchar* vala_ccode_array_module_real_get_array_size_cname (ValaCCodeBaseModule* base, const gchar* array_cname);
 static void vala_ccode_array_module_real_visit_element_access (ValaCodeVisitor* base, ValaElementAccess* expr);
@@ -972,16 +973,16 @@ static ValaCCodeExpression* vala_ccode_array_module_real_get_array_length_cvalue
        ValaArrayType* _tmp3_ = NULL;
        gboolean _tmp4_ = FALSE;
        ValaArrayType* _tmp5_ = NULL;
-       gint _tmp16_ = 0;
+       gint _tmp13_ = 0;
        ValaList* size = NULL;
-       ValaTargetValue* _tmp36_ = NULL;
+       ValaTargetValue* _tmp33_ = NULL;
+       ValaList* _tmp34_ = NULL;
+       ValaList* _tmp35_ = NULL;
+       gboolean _tmp36_ = FALSE;
        ValaList* _tmp37_ = NULL;
-       ValaList* _tmp38_ = NULL;
-       gboolean _tmp39_ = FALSE;
-       ValaList* _tmp40_ = NULL;
-       ValaList* _tmp45_ = NULL;
-       gint _tmp46_ = 0;
-       gpointer _tmp47_ = NULL;
+       ValaList* _tmp42_ = NULL;
+       gint _tmp43_ = 0;
+       gpointer _tmp44_ = NULL;
        self = (ValaCCodeArrayModule*) base;
        g_return_val_if_fail (value != NULL, NULL);
        _tmp0_ = value;
@@ -1003,84 +1004,77 @@ static ValaCCodeExpression* vala_ccode_array_module_real_get_array_length_cvalue
        }
        if (_tmp4_) {
                ValaArrayType* _tmp9_ = NULL;
-               gint _tmp10_ = 0;
-               gint _tmp11_ = 0;
-               gchar* _tmp12_ = NULL;
-               gchar* _tmp13_ = NULL;
-               ValaCCodeConstant* _tmp14_ = NULL;
-               ValaCCodeExpression* _tmp15_ = NULL;
+               ValaExpression* _tmp10_ = NULL;
+               ValaExpression* _tmp11_ = NULL;
+               ValaCCodeExpression* _tmp12_ = NULL;
                _tmp9_ = array_type;
                _tmp10_ = vala_array_type_get_length (_tmp9_);
                _tmp11_ = _tmp10_;
-               _tmp12_ = g_strdup_printf ("%i", _tmp11_);
-               _tmp13_ = _tmp12_;
-               _tmp14_ = vala_ccode_constant_new (_tmp13_);
-               _tmp15_ = (ValaCCodeExpression*) _tmp14_;
-               _g_free0 (_tmp13_);
-               result = _tmp15_;
+               _tmp12_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp11_);
+               result = _tmp12_;
                _vala_code_node_unref0 (array_type);
                return result;
        }
-       _tmp16_ = dim;
-       if (_tmp16_ == (-1)) {
-               gboolean _tmp17_ = FALSE;
-               ValaArrayType* _tmp18_ = NULL;
-               _tmp18_ = array_type;
-               if (_tmp18_ != NULL) {
-                       ValaArrayType* _tmp19_ = NULL;
-                       gint _tmp20_ = 0;
-                       gint _tmp21_ = 0;
-                       _tmp19_ = array_type;
-                       _tmp20_ = vala_array_type_get_rank (_tmp19_);
-                       _tmp21_ = _tmp20_;
-                       _tmp17_ = _tmp21_ > 1;
+       _tmp13_ = dim;
+       if (_tmp13_ == (-1)) {
+               gboolean _tmp14_ = FALSE;
+               ValaArrayType* _tmp15_ = NULL;
+               _tmp15_ = array_type;
+               if (_tmp15_ != NULL) {
+                       ValaArrayType* _tmp16_ = NULL;
+                       gint _tmp17_ = 0;
+                       gint _tmp18_ = 0;
+                       _tmp16_ = array_type;
+                       _tmp17_ = vala_array_type_get_rank (_tmp16_);
+                       _tmp18_ = _tmp17_;
+                       _tmp14_ = _tmp18_ > 1;
                } else {
-                       _tmp17_ = FALSE;
+                       _tmp14_ = FALSE;
                }
-               if (_tmp17_) {
+               if (_tmp14_) {
                        ValaCCodeExpression* cexpr = NULL;
-                       ValaTargetValue* _tmp22_ = NULL;
-                       ValaCCodeExpression* _tmp23_ = NULL;
-                       _tmp22_ = value;
-                       _tmp23_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp22_, 1);
-                       cexpr = _tmp23_;
+                       ValaTargetValue* _tmp19_ = NULL;
+                       ValaCCodeExpression* _tmp20_ = NULL;
+                       _tmp19_ = value;
+                       _tmp20_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp19_, 1);
+                       cexpr = _tmp20_;
                        {
-                               gboolean _tmp24_ = FALSE;
+                               gboolean _tmp21_ = FALSE;
                                dim = 2;
-                               _tmp24_ = TRUE;
+                               _tmp21_ = TRUE;
                                while (TRUE) {
+                                       gint _tmp23_ = 0;
+                                       ValaArrayType* _tmp24_ = NULL;
+                                       gint _tmp25_ = 0;
                                        gint _tmp26_ = 0;
-                                       ValaArrayType* _tmp27_ = NULL;
-                                       gint _tmp28_ = 0;
+                                       ValaCCodeExpression* _tmp27_ = NULL;
+                                       ValaTargetValue* _tmp28_ = NULL;
                                        gint _tmp29_ = 0;
                                        ValaCCodeExpression* _tmp30_ = NULL;
-                                       ValaTargetValue* _tmp31_ = NULL;
-                                       gint _tmp32_ = 0;
-                                       ValaCCodeExpression* _tmp33_ = NULL;
-                                       ValaCCodeExpression* _tmp34_ = NULL;
-                                       ValaCCodeBinaryExpression* _tmp35_ = NULL;
-                                       if (!_tmp24_) {
-                                               gint _tmp25_ = 0;
-                                               _tmp25_ = dim;
-                                               dim = _tmp25_ + 1;
+                                       ValaCCodeExpression* _tmp31_ = NULL;
+                                       ValaCCodeBinaryExpression* _tmp32_ = NULL;
+                                       if (!_tmp21_) {
+                                               gint _tmp22_ = 0;
+                                               _tmp22_ = dim;
+                                               dim = _tmp22_ + 1;
                                        }
-                                       _tmp24_ = FALSE;
-                                       _tmp26_ = dim;
-                                       _tmp27_ = array_type;
-                                       _tmp28_ = vala_array_type_get_rank (_tmp27_);
-                                       _tmp29_ = _tmp28_;
-                                       if (!(_tmp26_ <= _tmp29_)) {
+                                       _tmp21_ = FALSE;
+                                       _tmp23_ = dim;
+                                       _tmp24_ = array_type;
+                                       _tmp25_ = vala_array_type_get_rank (_tmp24_);
+                                       _tmp26_ = _tmp25_;
+                                       if (!(_tmp23_ <= _tmp26_)) {
                                                break;
                                        }
-                                       _tmp30_ = cexpr;
-                                       _tmp31_ = value;
-                                       _tmp32_ = dim;
-                                       _tmp33_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp31_, _tmp32_);
-                                       _tmp34_ = _tmp33_;
-                                       _tmp35_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MUL, _tmp30_, _tmp34_);
+                                       _tmp27_ = cexpr;
+                                       _tmp28_ = value;
+                                       _tmp29_ = dim;
+                                       _tmp30_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp28_, _tmp29_);
+                                       _tmp31_ = _tmp30_;
+                                       _tmp32_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MUL, _tmp27_, _tmp31_);
                                        _vala_ccode_node_unref0 (cexpr);
-                                       cexpr = (ValaCCodeExpression*) _tmp35_;
-                                       _vala_ccode_node_unref0 (_tmp34_);
+                                       cexpr = (ValaCCodeExpression*) _tmp32_;
+                                       _vala_ccode_node_unref0 (_tmp31_);
                                }
                        }
                        result = cexpr;
@@ -1090,29 +1084,29 @@ static ValaCCodeExpression* vala_ccode_array_module_real_get_array_length_cvalue
                        dim = 1;
                }
        }
-       _tmp36_ = value;
-       _tmp37_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->array_length_cvalues;
-       _tmp38_ = _vala_iterable_ref0 (_tmp37_);
-       size = _tmp38_;
-       _tmp40_ = size;
-       if (_tmp40_ != NULL) {
-               ValaList* _tmp41_ = NULL;
-               gint _tmp42_ = 0;
-               gint _tmp43_ = 0;
-               gint _tmp44_ = 0;
-               _tmp41_ = size;
-               _tmp42_ = vala_collection_get_size ((ValaCollection*) _tmp41_);
-               _tmp43_ = _tmp42_;
-               _tmp44_ = dim;
-               _tmp39_ = _tmp43_ >= _tmp44_;
+       _tmp33_ = value;
+       _tmp34_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp33_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->array_length_cvalues;
+       _tmp35_ = _vala_iterable_ref0 (_tmp34_);
+       size = _tmp35_;
+       _tmp37_ = size;
+       if (_tmp37_ != NULL) {
+               ValaList* _tmp38_ = NULL;
+               gint _tmp39_ = 0;
+               gint _tmp40_ = 0;
+               gint _tmp41_ = 0;
+               _tmp38_ = size;
+               _tmp39_ = vala_collection_get_size ((ValaCollection*) _tmp38_);
+               _tmp40_ = _tmp39_;
+               _tmp41_ = dim;
+               _tmp36_ = _tmp40_ >= _tmp41_;
        } else {
-               _tmp39_ = FALSE;
+               _tmp36_ = FALSE;
        }
-       _vala_assert (_tmp39_, "size != null && size.size >= dim");
-       _tmp45_ = size;
-       _tmp46_ = dim;
-       _tmp47_ = vala_list_get (_tmp45_, _tmp46_ - 1);
-       result = (ValaCCodeExpression*) _tmp47_;
+       _vala_assert (_tmp36_, "size != null && size.size >= dim");
+       _tmp42_ = size;
+       _tmp43_ = dim;
+       _tmp44_ = vala_list_get (_tmp42_, _tmp43_ - 1);
+       result = (ValaCCodeExpression*) _tmp44_;
        _vala_iterable_unref0 (size);
        _vala_code_node_unref0 (array_type);
        return result;
@@ -2708,20 +2702,18 @@ static ValaCCodeExpression* vala_ccode_array_module_real_destroy_value (ValaCCod
                ValaCCodeExpression* _tmp24_ = NULL;
                ValaCCodeFunctionCall* _tmp25_ = NULL;
                ValaArrayType* _tmp26_ = NULL;
-               gint _tmp27_ = 0;
-               gint _tmp28_ = 0;
-               gchar* _tmp29_ = NULL;
-               gchar* _tmp30_ = NULL;
-               ValaCCodeConstant* _tmp31_ = NULL;
-               ValaCCodeConstant* _tmp32_ = NULL;
-               ValaCCodeFunctionCall* _tmp33_ = NULL;
-               ValaArrayType* _tmp34_ = NULL;
-               ValaDataType* _tmp35_ = NULL;
-               ValaDataType* _tmp36_ = NULL;
-               ValaCCodeExpression* _tmp37_ = NULL;
-               ValaCCodeExpression* _tmp38_ = NULL;
-               ValaCCodeCastExpression* _tmp39_ = NULL;
-               ValaCCodeCastExpression* _tmp40_ = NULL;
+               ValaExpression* _tmp27_ = NULL;
+               ValaExpression* _tmp28_ = NULL;
+               ValaCCodeExpression* _tmp29_ = NULL;
+               ValaCCodeExpression* _tmp30_ = NULL;
+               ValaCCodeFunctionCall* _tmp31_ = NULL;
+               ValaArrayType* _tmp32_ = NULL;
+               ValaDataType* _tmp33_ = NULL;
+               ValaDataType* _tmp34_ = NULL;
+               ValaCCodeExpression* _tmp35_ = NULL;
+               ValaCCodeExpression* _tmp36_ = NULL;
+               ValaCCodeCastExpression* _tmp37_ = NULL;
+               ValaCCodeCastExpression* _tmp38_ = NULL;
                _tmp5_ = type;
                _tmp6_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
                array_type = _tmp6_;
@@ -2764,36 +2756,33 @@ static ValaCCodeExpression* vala_ccode_array_module_real_destroy_value (ValaCCod
                _tmp26_ = array_type;
                _tmp27_ = vala_array_type_get_length (_tmp26_);
                _tmp28_ = _tmp27_;
-               _tmp29_ = g_strdup_printf ("%d", _tmp28_);
+               _tmp29_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp28_);
                _tmp30_ = _tmp29_;
-               _tmp31_ = vala_ccode_constant_new (_tmp30_);
-               _tmp32_ = _tmp31_;
-               vala_ccode_function_call_add_argument (_tmp25_, (ValaCCodeExpression*) _tmp32_);
-               _vala_ccode_node_unref0 (_tmp32_);
-               _g_free0 (_tmp30_);
-               _tmp33_ = ccall;
-               _tmp34_ = array_type;
-               _tmp35_ = vala_array_type_get_element_type (_tmp34_);
+               vala_ccode_function_call_add_argument (_tmp25_, _tmp30_);
+               _vala_ccode_node_unref0 (_tmp30_);
+               _tmp31_ = ccall;
+               _tmp32_ = array_type;
+               _tmp33_ = vala_array_type_get_element_type (_tmp32_);
+               _tmp34_ = _tmp33_;
+               _tmp35_ = vala_ccode_base_module_get_destroy_func_expression ((ValaCCodeBaseModule*) self, _tmp34_, FALSE);
                _tmp36_ = _tmp35_;
-               _tmp37_ = vala_ccode_base_module_get_destroy_func_expression ((ValaCCodeBaseModule*) self, _tmp36_, FALSE);
+               _tmp37_ = vala_ccode_cast_expression_new (_tmp36_, "GDestroyNotify");
                _tmp38_ = _tmp37_;
-               _tmp39_ = vala_ccode_cast_expression_new (_tmp38_, "GDestroyNotify");
-               _tmp40_ = _tmp39_;
-               vala_ccode_function_call_add_argument (_tmp33_, (ValaCCodeExpression*) _tmp40_);
-               _vala_ccode_node_unref0 (_tmp40_);
+               vala_ccode_function_call_add_argument (_tmp31_, (ValaCCodeExpression*) _tmp38_);
                _vala_ccode_node_unref0 (_tmp38_);
+               _vala_ccode_node_unref0 (_tmp36_);
                result = (ValaCCodeExpression*) ccall;
                _vala_code_node_unref0 (array_type);
                _vala_code_node_unref0 (type);
                return result;
        } else {
-               ValaTargetValue* _tmp41_ = NULL;
-               gboolean _tmp42_ = FALSE;
-               ValaCCodeExpression* _tmp43_ = NULL;
-               _tmp41_ = value;
-               _tmp42_ = is_macro_definition;
-               _tmp43_ = VALA_CCODE_BASE_MODULE_CLASS (vala_ccode_array_module_parent_class)->destroy_value ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_CCODE_METHOD_CALL_MODULE, ValaCCodeMethodCallModule), _tmp41_, _tmp42_);
-               result = _tmp43_;
+               ValaTargetValue* _tmp39_ = NULL;
+               gboolean _tmp40_ = FALSE;
+               ValaCCodeExpression* _tmp41_ = NULL;
+               _tmp39_ = value;
+               _tmp40_ = is_macro_definition;
+               _tmp41_ = VALA_CCODE_BASE_MODULE_CLASS (vala_ccode_array_module_parent_class)->destroy_value ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_CCODE_METHOD_CALL_MODULE, ValaCCodeMethodCallModule), _tmp39_, _tmp40_);
+               result = _tmp41_;
                _vala_code_node_unref0 (type);
                return result;
        }
@@ -3293,10 +3282,10 @@ static gchar* vala_ccode_array_module_generate_array_copy_wrapper (ValaCCodeArra
        ValaDataType* _tmp28_ = NULL;
        ValaDataType* _tmp29_ = NULL;
        gboolean _tmp30_ = FALSE;
-       ValaCCodeFile* _tmp119_ = NULL;
-       ValaCCodeFunction* _tmp120_ = NULL;
-       ValaCCodeFile* _tmp121_ = NULL;
-       ValaCCodeFunction* _tmp122_ = NULL;
+       ValaCCodeFile* _tmp115_ = NULL;
+       ValaCCodeFunction* _tmp116_ = NULL;
+       ValaCCodeFile* _tmp117_ = NULL;
+       ValaCCodeFunction* _tmp118_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (array_type != NULL, NULL);
        _tmp0_ = self->priv->next_array_dup_id;
@@ -3365,42 +3354,40 @@ static gchar* vala_ccode_array_module_generate_array_copy_wrapper (ValaCCodeArra
                ValaCCodeIdentifier* _tmp43_ = NULL;
                ValaCCodeIdentifier* _tmp44_ = NULL;
                ValaArrayType* _tmp45_ = NULL;
-               gint _tmp46_ = 0;
-               gint _tmp47_ = 0;
-               gchar* _tmp48_ = NULL;
-               gchar* _tmp49_ = NULL;
-               ValaCCodeConstant* _tmp50_ = NULL;
-               ValaCCodeConstant* _tmp51_ = NULL;
-               ValaCCodeBinaryExpression* _tmp52_ = NULL;
-               ValaCCodeBinaryExpression* _tmp53_ = NULL;
-               ValaCCodeIdentifier* _tmp54_ = NULL;
-               ValaCCodeIdentifier* _tmp55_ = NULL;
-               ValaCCodeUnaryExpression* _tmp56_ = NULL;
-               ValaCCodeUnaryExpression* _tmp57_ = NULL;
-               ValaCCodeFunction* _tmp58_ = NULL;
-               ValaCCodeFunction* _tmp59_ = NULL;
+               ValaExpression* _tmp46_ = NULL;
+               ValaExpression* _tmp47_ = NULL;
+               ValaCCodeExpression* _tmp48_ = NULL;
+               ValaCCodeExpression* _tmp49_ = NULL;
+               ValaCCodeBinaryExpression* _tmp50_ = NULL;
+               ValaCCodeBinaryExpression* _tmp51_ = NULL;
+               ValaCCodeIdentifier* _tmp52_ = NULL;
+               ValaCCodeIdentifier* _tmp53_ = NULL;
+               ValaCCodeUnaryExpression* _tmp54_ = NULL;
+               ValaCCodeUnaryExpression* _tmp55_ = NULL;
+               ValaCCodeFunction* _tmp56_ = NULL;
+               ValaCCodeFunction* _tmp57_ = NULL;
+               ValaCCodeIdentifier* _tmp58_ = NULL;
+               ValaCCodeIdentifier* _tmp59_ = NULL;
                ValaCCodeIdentifier* _tmp60_ = NULL;
                ValaCCodeIdentifier* _tmp61_ = NULL;
-               ValaCCodeIdentifier* _tmp62_ = NULL;
-               ValaCCodeIdentifier* _tmp63_ = NULL;
-               ValaCCodeElementAccess* _tmp64_ = NULL;
-               ValaCCodeElementAccess* _tmp65_ = NULL;
-               ValaArrayType* _tmp66_ = NULL;
-               ValaDataType* _tmp67_ = NULL;
-               ValaDataType* _tmp68_ = NULL;
+               ValaCCodeElementAccess* _tmp62_ = NULL;
+               ValaCCodeElementAccess* _tmp63_ = NULL;
+               ValaArrayType* _tmp64_ = NULL;
+               ValaDataType* _tmp65_ = NULL;
+               ValaDataType* _tmp66_ = NULL;
+               ValaCCodeIdentifier* _tmp67_ = NULL;
+               ValaCCodeIdentifier* _tmp68_ = NULL;
                ValaCCodeIdentifier* _tmp69_ = NULL;
                ValaCCodeIdentifier* _tmp70_ = NULL;
-               ValaCCodeIdentifier* _tmp71_ = NULL;
-               ValaCCodeIdentifier* _tmp72_ = NULL;
-               ValaCCodeElementAccess* _tmp73_ = NULL;
-               ValaCCodeElementAccess* _tmp74_ = NULL;
-               ValaGLibValue* _tmp75_ = NULL;
-               ValaGLibValue* _tmp76_ = NULL;
-               ValaArrayType* _tmp77_ = NULL;
-               ValaTargetValue* _tmp78_ = NULL;
-               ValaTargetValue* _tmp79_ = NULL;
-               ValaCCodeExpression* _tmp80_ = NULL;
-               ValaCCodeExpression* _tmp81_ = NULL;
+               ValaCCodeElementAccess* _tmp71_ = NULL;
+               ValaCCodeElementAccess* _tmp72_ = NULL;
+               ValaGLibValue* _tmp73_ = NULL;
+               ValaGLibValue* _tmp74_ = NULL;
+               ValaArrayType* _tmp75_ = NULL;
+               ValaTargetValue* _tmp76_ = NULL;
+               ValaTargetValue* _tmp77_ = NULL;
+               ValaCCodeExpression* _tmp78_ = NULL;
+               ValaCCodeExpression* _tmp79_ = NULL;
                _tmp31_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                _tmp32_ = _tmp31_;
                _tmp33_ = vala_ccode_variable_declarator_new ("i", NULL, NULL);
@@ -3420,163 +3407,155 @@ static gchar* vala_ccode_array_module_generate_array_copy_wrapper (ValaCCodeArra
                _tmp45_ = array_type;
                _tmp46_ = vala_array_type_get_length (_tmp45_);
                _tmp47_ = _tmp46_;
-               _tmp48_ = g_strdup_printf ("%d", _tmp47_);
+               _tmp48_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp47_);
                _tmp49_ = _tmp48_;
-               _tmp50_ = vala_ccode_constant_new (_tmp49_);
+               _tmp50_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_LESS_THAN, (ValaCCodeExpression*) _tmp44_, _tmp49_);
                _tmp51_ = _tmp50_;
-               _tmp52_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_LESS_THAN, (ValaCCodeExpression*) _tmp44_, (ValaCCodeExpression*) _tmp51_);
+               _tmp52_ = vala_ccode_identifier_new ("i");
                _tmp53_ = _tmp52_;
-               _tmp54_ = vala_ccode_identifier_new ("i");
+               _tmp54_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, (ValaCCodeExpression*) _tmp53_);
                _tmp55_ = _tmp54_;
-               _tmp56_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, (ValaCCodeExpression*) _tmp55_);
-               _tmp57_ = _tmp56_;
-               vala_ccode_function_open_for (_tmp36_, (ValaCCodeExpression*) _tmp42_, (ValaCCodeExpression*) _tmp53_, (ValaCCodeExpression*) _tmp57_);
-               _vala_ccode_node_unref0 (_tmp57_);
+               vala_ccode_function_open_for (_tmp36_, (ValaCCodeExpression*) _tmp42_, (ValaCCodeExpression*) _tmp51_, (ValaCCodeExpression*) _tmp55_);
                _vala_ccode_node_unref0 (_tmp55_);
                _vala_ccode_node_unref0 (_tmp53_);
                _vala_ccode_node_unref0 (_tmp51_);
-               _g_free0 (_tmp49_);
+               _vala_ccode_node_unref0 (_tmp49_);
                _vala_ccode_node_unref0 (_tmp44_);
                _vala_ccode_node_unref0 (_tmp42_);
                _vala_ccode_node_unref0 (_tmp40_);
                _vala_ccode_node_unref0 (_tmp38_);
-               _tmp58_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp56_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp57_ = _tmp56_;
+               _tmp58_ = vala_ccode_identifier_new ("dest");
                _tmp59_ = _tmp58_;
-               _tmp60_ = vala_ccode_identifier_new ("dest");
+               _tmp60_ = vala_ccode_identifier_new ("i");
                _tmp61_ = _tmp60_;
-               _tmp62_ = vala_ccode_identifier_new ("i");
+               _tmp62_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp59_, (ValaCCodeExpression*) _tmp61_);
                _tmp63_ = _tmp62_;
-               _tmp64_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp61_, (ValaCCodeExpression*) _tmp63_);
-               _tmp65_ = _tmp64_;
-               _tmp66_ = array_type;
-               _tmp67_ = vala_array_type_get_element_type (_tmp66_);
+               _tmp64_ = array_type;
+               _tmp65_ = vala_array_type_get_element_type (_tmp64_);
+               _tmp66_ = _tmp65_;
+               _tmp67_ = vala_ccode_identifier_new ("self");
                _tmp68_ = _tmp67_;
-               _tmp69_ = vala_ccode_identifier_new ("self");
+               _tmp69_ = vala_ccode_identifier_new ("i");
                _tmp70_ = _tmp69_;
-               _tmp71_ = vala_ccode_identifier_new ("i");
+               _tmp71_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp68_, (ValaCCodeExpression*) _tmp70_);
                _tmp72_ = _tmp71_;
-               _tmp73_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp70_, (ValaCCodeExpression*) _tmp72_);
+               _tmp73_ = vala_glib_value_new (_tmp66_, (ValaCCodeExpression*) _tmp72_, TRUE);
                _tmp74_ = _tmp73_;
-               _tmp75_ = vala_glib_value_new (_tmp68_, (ValaCCodeExpression*) _tmp74_, TRUE);
-               _tmp76_ = _tmp75_;
-               _tmp77_ = array_type;
-               _tmp78_ = vala_ccode_base_module_copy_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp76_, (ValaCodeNode*) _tmp77_);
+               _tmp75_ = array_type;
+               _tmp76_ = vala_ccode_base_module_copy_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp74_, (ValaCodeNode*) _tmp75_);
+               _tmp77_ = _tmp76_;
+               _tmp78_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp77_);
                _tmp79_ = _tmp78_;
-               _tmp80_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp79_);
-               _tmp81_ = _tmp80_;
-               vala_ccode_function_add_assignment (_tmp59_, (ValaCCodeExpression*) _tmp65_, _tmp81_);
-               _vala_ccode_node_unref0 (_tmp81_);
-               _vala_target_value_unref0 (_tmp79_);
-               _vala_target_value_unref0 (_tmp76_);
-               _vala_ccode_node_unref0 (_tmp74_);
+               vala_ccode_function_add_assignment (_tmp57_, (ValaCCodeExpression*) _tmp63_, _tmp79_);
+               _vala_ccode_node_unref0 (_tmp79_);
+               _vala_target_value_unref0 (_tmp77_);
+               _vala_target_value_unref0 (_tmp74_);
                _vala_ccode_node_unref0 (_tmp72_);
                _vala_ccode_node_unref0 (_tmp70_);
-               _vala_ccode_node_unref0 (_tmp65_);
+               _vala_ccode_node_unref0 (_tmp68_);
                _vala_ccode_node_unref0 (_tmp63_);
                _vala_ccode_node_unref0 (_tmp61_);
+               _vala_ccode_node_unref0 (_tmp59_);
        } else {
-               ValaCCodeFile* _tmp82_ = NULL;
+               ValaCCodeFile* _tmp80_ = NULL;
                ValaCCodeFunctionCall* dup_call = NULL;
-               ValaCCodeIdentifier* _tmp83_ = NULL;
-               ValaCCodeIdentifier* _tmp84_ = NULL;
+               ValaCCodeIdentifier* _tmp81_ = NULL;
+               ValaCCodeIdentifier* _tmp82_ = NULL;
+               ValaCCodeFunctionCall* _tmp83_ = NULL;
+               ValaCCodeFunctionCall* _tmp84_ = NULL;
                ValaCCodeFunctionCall* _tmp85_ = NULL;
-               ValaCCodeFunctionCall* _tmp86_ = NULL;
-               ValaCCodeFunctionCall* _tmp87_ = NULL;
-               ValaCCodeIdentifier* _tmp88_ = NULL;
+               ValaCCodeIdentifier* _tmp86_ = NULL;
+               ValaCCodeIdentifier* _tmp87_ = NULL;
+               ValaCCodeFunctionCall* _tmp88_ = NULL;
                ValaCCodeIdentifier* _tmp89_ = NULL;
-               ValaCCodeFunctionCall* _tmp90_ = NULL;
+               ValaCCodeIdentifier* _tmp90_ = NULL;
+               ValaCCodeFunctionCall* sizeof_call = NULL;
                ValaCCodeIdentifier* _tmp91_ = NULL;
                ValaCCodeIdentifier* _tmp92_ = NULL;
-               ValaCCodeFunctionCall* sizeof_call = NULL;
-               ValaCCodeIdentifier* _tmp93_ = NULL;
-               ValaCCodeIdentifier* _tmp94_ = NULL;
+               ValaCCodeFunctionCall* _tmp93_ = NULL;
+               ValaCCodeFunctionCall* _tmp94_ = NULL;
                ValaCCodeFunctionCall* _tmp95_ = NULL;
-               ValaCCodeFunctionCall* _tmp96_ = NULL;
-               ValaCCodeFunctionCall* _tmp97_ = NULL;
-               ValaArrayType* _tmp98_ = NULL;
-               ValaDataType* _tmp99_ = NULL;
-               ValaDataType* _tmp100_ = NULL;
-               gchar* _tmp101_ = NULL;
-               gchar* _tmp102_ = NULL;
-               ValaCCodeIdentifier* _tmp103_ = NULL;
-               ValaCCodeIdentifier* _tmp104_ = NULL;
-               ValaCCodeFunctionCall* _tmp105_ = NULL;
-               ValaArrayType* _tmp106_ = NULL;
-               gint _tmp107_ = 0;
-               gint _tmp108_ = 0;
-               gchar* _tmp109_ = NULL;
-               gchar* _tmp110_ = NULL;
-               ValaCCodeConstant* _tmp111_ = NULL;
-               ValaCCodeConstant* _tmp112_ = NULL;
-               ValaCCodeFunctionCall* _tmp113_ = NULL;
-               ValaCCodeBinaryExpression* _tmp114_ = NULL;
-               ValaCCodeBinaryExpression* _tmp115_ = NULL;
-               ValaCCodeFunction* _tmp116_ = NULL;
-               ValaCCodeFunction* _tmp117_ = NULL;
-               ValaCCodeFunctionCall* _tmp118_ = NULL;
-               _tmp82_ = ((ValaCCodeBaseModule*) self)->cfile;
-               vala_ccode_file_add_include (_tmp82_, "string.h", FALSE);
-               _tmp83_ = vala_ccode_identifier_new ("memcpy");
+               ValaArrayType* _tmp96_ = NULL;
+               ValaDataType* _tmp97_ = NULL;
+               ValaDataType* _tmp98_ = NULL;
+               gchar* _tmp99_ = NULL;
+               gchar* _tmp100_ = NULL;
+               ValaCCodeIdentifier* _tmp101_ = NULL;
+               ValaCCodeIdentifier* _tmp102_ = NULL;
+               ValaCCodeFunctionCall* _tmp103_ = NULL;
+               ValaArrayType* _tmp104_ = NULL;
+               ValaExpression* _tmp105_ = NULL;
+               ValaExpression* _tmp106_ = NULL;
+               ValaCCodeExpression* _tmp107_ = NULL;
+               ValaCCodeExpression* _tmp108_ = NULL;
+               ValaCCodeFunctionCall* _tmp109_ = NULL;
+               ValaCCodeBinaryExpression* _tmp110_ = NULL;
+               ValaCCodeBinaryExpression* _tmp111_ = NULL;
+               ValaCCodeFunction* _tmp112_ = NULL;
+               ValaCCodeFunction* _tmp113_ = NULL;
+               ValaCCodeFunctionCall* _tmp114_ = NULL;
+               _tmp80_ = ((ValaCCodeBaseModule*) self)->cfile;
+               vala_ccode_file_add_include (_tmp80_, "string.h", FALSE);
+               _tmp81_ = vala_ccode_identifier_new ("memcpy");
+               _tmp82_ = _tmp81_;
+               _tmp83_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp82_);
                _tmp84_ = _tmp83_;
-               _tmp85_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp84_);
-               _tmp86_ = _tmp85_;
-               _vala_ccode_node_unref0 (_tmp84_);
-               dup_call = _tmp86_;
-               _tmp87_ = dup_call;
-               _tmp88_ = vala_ccode_identifier_new ("dest");
-               _tmp89_ = _tmp88_;
-               vala_ccode_function_call_add_argument (_tmp87_, (ValaCCodeExpression*) _tmp89_);
-               _vala_ccode_node_unref0 (_tmp89_);
-               _tmp90_ = dup_call;
-               _tmp91_ = vala_ccode_identifier_new ("self");
+               _vala_ccode_node_unref0 (_tmp82_);
+               dup_call = _tmp84_;
+               _tmp85_ = dup_call;
+               _tmp86_ = vala_ccode_identifier_new ("dest");
+               _tmp87_ = _tmp86_;
+               vala_ccode_function_call_add_argument (_tmp85_, (ValaCCodeExpression*) _tmp87_);
+               _vala_ccode_node_unref0 (_tmp87_);
+               _tmp88_ = dup_call;
+               _tmp89_ = vala_ccode_identifier_new ("self");
+               _tmp90_ = _tmp89_;
+               vala_ccode_function_call_add_argument (_tmp88_, (ValaCCodeExpression*) _tmp90_);
+               _vala_ccode_node_unref0 (_tmp90_);
+               _tmp91_ = vala_ccode_identifier_new ("sizeof");
                _tmp92_ = _tmp91_;
-               vala_ccode_function_call_add_argument (_tmp90_, (ValaCCodeExpression*) _tmp92_);
-               _vala_ccode_node_unref0 (_tmp92_);
-               _tmp93_ = vala_ccode_identifier_new ("sizeof");
+               _tmp93_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp92_);
                _tmp94_ = _tmp93_;
-               _tmp95_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp94_);
-               _tmp96_ = _tmp95_;
-               _vala_ccode_node_unref0 (_tmp94_);
-               sizeof_call = _tmp96_;
-               _tmp97_ = sizeof_call;
-               _tmp98_ = array_type;
-               _tmp99_ = vala_array_type_get_element_type (_tmp98_);
+               _vala_ccode_node_unref0 (_tmp92_);
+               sizeof_call = _tmp94_;
+               _tmp95_ = sizeof_call;
+               _tmp96_ = array_type;
+               _tmp97_ = vala_array_type_get_element_type (_tmp96_);
+               _tmp98_ = _tmp97_;
+               _tmp99_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp98_);
                _tmp100_ = _tmp99_;
-               _tmp101_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp100_);
+               _tmp101_ = vala_ccode_identifier_new (_tmp100_);
                _tmp102_ = _tmp101_;
-               _tmp103_ = vala_ccode_identifier_new (_tmp102_);
-               _tmp104_ = _tmp103_;
-               vala_ccode_function_call_add_argument (_tmp97_, (ValaCCodeExpression*) _tmp104_);
-               _vala_ccode_node_unref0 (_tmp104_);
-               _g_free0 (_tmp102_);
-               _tmp105_ = dup_call;
-               _tmp106_ = array_type;
-               _tmp107_ = vala_array_type_get_length (_tmp106_);
+               vala_ccode_function_call_add_argument (_tmp95_, (ValaCCodeExpression*) _tmp102_);
+               _vala_ccode_node_unref0 (_tmp102_);
+               _g_free0 (_tmp100_);
+               _tmp103_ = dup_call;
+               _tmp104_ = array_type;
+               _tmp105_ = vala_array_type_get_length (_tmp104_);
+               _tmp106_ = _tmp105_;
+               _tmp107_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp106_);
                _tmp108_ = _tmp107_;
-               _tmp109_ = g_strdup_printf ("%d", _tmp108_);
-               _tmp110_ = _tmp109_;
-               _tmp111_ = vala_ccode_constant_new (_tmp110_);
-               _tmp112_ = _tmp111_;
-               _tmp113_ = sizeof_call;
-               _tmp114_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MUL, (ValaCCodeExpression*) _tmp112_, (ValaCCodeExpression*) _tmp113_);
-               _tmp115_ = _tmp114_;
-               vala_ccode_function_call_add_argument (_tmp105_, (ValaCCodeExpression*) _tmp115_);
-               _vala_ccode_node_unref0 (_tmp115_);
-               _vala_ccode_node_unref0 (_tmp112_);
-               _g_free0 (_tmp110_);
-               _tmp116_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp117_ = _tmp116_;
-               _tmp118_ = dup_call;
-               vala_ccode_function_add_expression (_tmp117_, (ValaCCodeExpression*) _tmp118_);
+               _tmp109_ = sizeof_call;
+               _tmp110_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MUL, _tmp108_, (ValaCCodeExpression*) _tmp109_);
+               _tmp111_ = _tmp110_;
+               vala_ccode_function_call_add_argument (_tmp103_, (ValaCCodeExpression*) _tmp111_);
+               _vala_ccode_node_unref0 (_tmp111_);
+               _vala_ccode_node_unref0 (_tmp108_);
+               _tmp112_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp113_ = _tmp112_;
+               _tmp114_ = dup_call;
+               vala_ccode_function_add_expression (_tmp113_, (ValaCCodeExpression*) _tmp114_);
                _vala_ccode_node_unref0 (sizeof_call);
                _vala_ccode_node_unref0 (dup_call);
        }
-       _tmp119_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp120_ = function;
-       vala_ccode_file_add_function_declaration (_tmp119_, _tmp120_);
-       _tmp121_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp122_ = function;
-       vala_ccode_file_add_function (_tmp121_, _tmp122_);
+       _tmp115_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp116_ = function;
+       vala_ccode_file_add_function_declaration (_tmp115_, _tmp116_);
+       _tmp117_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp118_ = function;
+       vala_ccode_file_add_function (_tmp117_, _tmp118_);
        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
        result = dup_func;
        _vala_ccode_node_unref0 (function);
@@ -4556,25 +4535,25 @@ ValaCCodeArrayModule* vala_ccode_array_module_new (void) {
 
 static void vala_ccode_array_module_class_init (ValaCCodeArrayModuleClass * klass) {
        vala_ccode_array_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_ccode_array_module_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_ccode_array_module_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeArrayModulePrivate));
-       VALA_CODE_VISITOR_CLASS (klass)->visit_array_creation_expression = vala_ccode_array_module_real_visit_array_creation_expression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_length_cname = vala_ccode_array_module_real_get_array_length_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_parameter_array_length_cname = vala_ccode_array_module_real_get_parameter_array_length_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_length_cexpression = vala_ccode_array_module_real_get_array_length_cexpression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_length_cvalue = vala_ccode_array_module_real_get_array_length_cvalue;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_size_cname = vala_ccode_array_module_real_get_array_size_cname;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_element_access = vala_ccode_array_module_real_visit_element_access;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_slice_expression = vala_ccode_array_module_real_visit_slice_expression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->append_struct_array_free = vala_ccode_array_module_real_append_struct_array_free;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->append_vala_array_free = vala_ccode_array_module_real_append_vala_array_free;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->append_vala_array_move = vala_ccode_array_module_real_append_vala_array_move;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->append_vala_array_length = vala_ccode_array_module_real_append_vala_array_length;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->copy_value = vala_ccode_array_module_real_copy_value;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dup_func_expression = vala_ccode_array_module_real_get_dup_func_expression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->destroy_value = vala_ccode_array_module_real_destroy_value;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_assignment = vala_ccode_array_module_real_visit_assignment;
-       VALA_CCODE_METHOD_MODULE_CLASS (klass)->generate_parameter = vala_ccode_array_module_real_generate_parameter;
+       ((ValaCodeVisitorClass *) klass)->visit_array_creation_expression = vala_ccode_array_module_real_visit_array_creation_expression;
+       ((ValaCCodeBaseModuleClass *) klass)->get_array_length_cname = vala_ccode_array_module_real_get_array_length_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_parameter_array_length_cname = vala_ccode_array_module_real_get_parameter_array_length_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_array_length_cexpression = vala_ccode_array_module_real_get_array_length_cexpression;
+       ((ValaCCodeBaseModuleClass *) klass)->get_array_length_cvalue = vala_ccode_array_module_real_get_array_length_cvalue;
+       ((ValaCCodeBaseModuleClass *) klass)->get_array_size_cname = vala_ccode_array_module_real_get_array_size_cname;
+       ((ValaCodeVisitorClass *) klass)->visit_element_access = vala_ccode_array_module_real_visit_element_access;
+       ((ValaCodeVisitorClass *) klass)->visit_slice_expression = vala_ccode_array_module_real_visit_slice_expression;
+       ((ValaCCodeBaseModuleClass *) klass)->append_struct_array_free = vala_ccode_array_module_real_append_struct_array_free;
+       ((ValaCCodeBaseModuleClass *) klass)->append_vala_array_free = vala_ccode_array_module_real_append_vala_array_free;
+       ((ValaCCodeBaseModuleClass *) klass)->append_vala_array_move = vala_ccode_array_module_real_append_vala_array_move;
+       ((ValaCCodeBaseModuleClass *) klass)->append_vala_array_length = vala_ccode_array_module_real_append_vala_array_length;
+       ((ValaCCodeBaseModuleClass *) klass)->copy_value = vala_ccode_array_module_real_copy_value;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dup_func_expression = vala_ccode_array_module_real_get_dup_func_expression;
+       ((ValaCCodeBaseModuleClass *) klass)->destroy_value = vala_ccode_array_module_real_destroy_value;
+       ((ValaCodeVisitorClass *) klass)->visit_assignment = vala_ccode_array_module_real_visit_assignment;
+       ((ValaCCodeMethodModuleClass *) klass)->generate_parameter = vala_ccode_array_module_real_generate_parameter;
 }
 
 
index 7bf6826..8922464 100644 (file)
@@ -117,7 +117,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
                var array_type = value.value_type as ArrayType;
 
                if (array_type != null && array_type.fixed_length) {
-                       return new CCodeConstant (array_type.length.to_string ());
+                       return get_ccodenode (array_type.length);
                }
 
                // dim == -1 => total size over all dimensions
@@ -452,7 +452,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
 
                        ccall = new CCodeFunctionCall (new CCodeIdentifier ("_vala_array_destroy"));
                        ccall.add_argument (get_cvalue_ (value));
-                       ccall.add_argument (new CCodeConstant ("%d".printf (array_type.length)));
+                       ccall.add_argument (get_ccodenode (array_type.length));
                        ccall.add_argument (new CCodeCastExpression (get_destroy_func_expression (array_type.element_type), "GDestroyNotify"));
 
                        return ccall;
@@ -559,7 +559,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
                        ccode.add_declaration ("int", new CCodeVariableDeclarator ("i"));
 
                        ccode.open_for (new CCodeAssignment (new CCodeIdentifier ("i"), new CCodeConstant ("0")),
-                                          new CCodeBinaryExpression (CCodeBinaryOperator.LESS_THAN, new CCodeIdentifier ("i"), new CCodeConstant ("%d".printf (array_type.length))),
+                                          new CCodeBinaryExpression (CCodeBinaryOperator.LESS_THAN, new CCodeIdentifier ("i"), get_ccodenode (array_type.length)),
                                           new CCodeUnaryExpression (CCodeUnaryOperator.POSTFIX_INCREMENT, new CCodeIdentifier ("i")));
 
 
@@ -573,7 +573,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
 
                        var sizeof_call = new CCodeFunctionCall (new CCodeIdentifier ("sizeof"));
                        sizeof_call.add_argument (new CCodeIdentifier (get_ccode_name (array_type.element_type)));
-                       dup_call.add_argument (new CCodeBinaryExpression (CCodeBinaryOperator.MUL, new CCodeConstant ("%d".printf (array_type.length)), sizeof_call));
+                       dup_call.add_argument (new CCodeBinaryExpression (CCodeBinaryOperator.MUL, get_ccodenode (array_type.length), sizeof_call));
 
                        ccode.add_expression (dup_call);
                }
index ad60ba2..23eb5b9 100644 (file)
@@ -360,6 +360,7 @@ void vala_ccode_base_module_store_property (ValaCCodeBaseModule* self, ValaPrope
 gboolean vala_ccode_base_module_is_simple_struct_creation (ValaCCodeBaseModule* self, ValaVariable* variable, ValaExpression* expr);
 static void vala_ccode_assignment_module_real_store_value (ValaCCodeBaseModule* base, ValaTargetValue* lvalue, ValaTargetValue* value);
 gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node);
+ValaCCodeExpression* vala_ccode_base_module_get_ccodenode (ValaCCodeBaseModule* self, ValaExpression* node);
 ValaCCodeExpression* vala_ccode_base_module_get_cvalue_ (ValaCCodeBaseModule* self, ValaTargetValue* value);
 gchar* vala_ccode_base_module_get_ctype (ValaCCodeBaseModule* self, ValaTargetValue* value);
 GType vala_glib_value_get_type (void) G_GNUC_CONST;
@@ -856,27 +857,27 @@ static void vala_ccode_assignment_module_real_store_value (ValaCCodeBaseModule*
        gboolean _tmp4_ = FALSE;
        ValaArrayType* _tmp5_ = NULL;
        ValaCCodeExpression* cexpr = NULL;
+       ValaTargetValue* _tmp47_ = NULL;
+       ValaCCodeExpression* _tmp48_ = NULL;
        ValaTargetValue* _tmp49_ = NULL;
-       ValaCCodeExpression* _tmp50_ = NULL;
-       ValaTargetValue* _tmp51_ = NULL;
-       gchar* _tmp52_ = NULL;
-       gchar* _tmp53_ = NULL;
-       gboolean _tmp54_ = FALSE;
-       ValaCCodeFunction* _tmp60_ = NULL;
-       ValaCCodeFunction* _tmp61_ = NULL;
-       ValaTargetValue* _tmp62_ = NULL;
+       gchar* _tmp50_ = NULL;
+       gchar* _tmp51_ = NULL;
+       gboolean _tmp52_ = FALSE;
+       ValaCCodeFunction* _tmp58_ = NULL;
+       ValaCCodeFunction* _tmp59_ = NULL;
+       ValaTargetValue* _tmp60_ = NULL;
+       ValaCCodeExpression* _tmp61_ = NULL;
+       ValaCCodeExpression* _tmp62_ = NULL;
        ValaCCodeExpression* _tmp63_ = NULL;
-       ValaCCodeExpression* _tmp64_ = NULL;
-       ValaCCodeExpression* _tmp65_ = NULL;
-       gboolean _tmp66_ = FALSE;
-       ValaArrayType* _tmp67_ = NULL;
+       gboolean _tmp64_ = FALSE;
+       ValaArrayType* _tmp65_ = NULL;
        ValaDelegateType* delegate_type = NULL;
-       ValaTargetValue* _tmp135_ = NULL;
-       ValaDataType* _tmp136_ = NULL;
-       ValaDataType* _tmp137_ = NULL;
+       ValaTargetValue* _tmp133_ = NULL;
+       ValaDataType* _tmp134_ = NULL;
+       ValaDataType* _tmp135_ = NULL;
+       ValaDelegateType* _tmp136_ = NULL;
+       gboolean _tmp137_ = FALSE;
        ValaDelegateType* _tmp138_ = NULL;
-       gboolean _tmp139_ = FALSE;
-       ValaDelegateType* _tmp140_ = NULL;
        self = (ValaCCodeAssignmentModule*) base;
        g_return_if_fail (lvalue != NULL);
        g_return_if_fail (value != NULL);
@@ -914,33 +915,31 @@ static void vala_ccode_assignment_module_real_store_value (ValaCCodeBaseModule*
                ValaCCodeIdentifier* _tmp21_ = NULL;
                ValaCCodeBinaryExpression* size = NULL;
                ValaArrayType* _tmp22_ = NULL;
-               gint _tmp23_ = 0;
-               gint _tmp24_ = 0;
-               gchar* _tmp25_ = NULL;
-               gchar* _tmp26_ = NULL;
-               ValaCCodeConstant* _tmp27_ = NULL;
-               ValaCCodeConstant* _tmp28_ = NULL;
-               ValaCCodeFunctionCall* _tmp29_ = NULL;
-               ValaCCodeBinaryExpression* _tmp30_ = NULL;
-               ValaCCodeBinaryExpression* _tmp31_ = NULL;
+               ValaExpression* _tmp23_ = NULL;
+               ValaExpression* _tmp24_ = NULL;
+               ValaCCodeExpression* _tmp25_ = NULL;
+               ValaCCodeExpression* _tmp26_ = NULL;
+               ValaCCodeFunctionCall* _tmp27_ = NULL;
+               ValaCCodeBinaryExpression* _tmp28_ = NULL;
+               ValaCCodeBinaryExpression* _tmp29_ = NULL;
                ValaCCodeFunctionCall* ccopy = NULL;
-               ValaCCodeIdentifier* _tmp32_ = NULL;
-               ValaCCodeIdentifier* _tmp33_ = NULL;
+               ValaCCodeIdentifier* _tmp30_ = NULL;
+               ValaCCodeIdentifier* _tmp31_ = NULL;
+               ValaCCodeFunctionCall* _tmp32_ = NULL;
+               ValaCCodeFunctionCall* _tmp33_ = NULL;
                ValaCCodeFunctionCall* _tmp34_ = NULL;
-               ValaCCodeFunctionCall* _tmp35_ = NULL;
-               ValaCCodeFunctionCall* _tmp36_ = NULL;
-               ValaTargetValue* _tmp37_ = NULL;
-               ValaCCodeExpression* _tmp38_ = NULL;
-               ValaCCodeExpression* _tmp39_ = NULL;
-               ValaCCodeFunctionCall* _tmp40_ = NULL;
-               ValaTargetValue* _tmp41_ = NULL;
-               ValaCCodeExpression* _tmp42_ = NULL;
-               ValaCCodeExpression* _tmp43_ = NULL;
-               ValaCCodeFunctionCall* _tmp44_ = NULL;
-               ValaCCodeBinaryExpression* _tmp45_ = NULL;
-               ValaCCodeFunction* _tmp46_ = NULL;
-               ValaCCodeFunction* _tmp47_ = NULL;
-               ValaCCodeFunctionCall* _tmp48_ = NULL;
+               ValaTargetValue* _tmp35_ = NULL;
+               ValaCCodeExpression* _tmp36_ = NULL;
+               ValaCCodeExpression* _tmp37_ = NULL;
+               ValaCCodeFunctionCall* _tmp38_ = NULL;
+               ValaTargetValue* _tmp39_ = NULL;
+               ValaCCodeExpression* _tmp40_ = NULL;
+               ValaCCodeExpression* _tmp41_ = NULL;
+               ValaCCodeFunctionCall* _tmp42_ = NULL;
+               ValaCCodeBinaryExpression* _tmp43_ = NULL;
+               ValaCCodeFunction* _tmp44_ = NULL;
+               ValaCCodeFunction* _tmp45_ = NULL;
+               ValaCCodeFunctionCall* _tmp46_ = NULL;
                _tmp9_ = ((ValaCCodeBaseModule*) self)->cfile;
                vala_ccode_file_add_include (_tmp9_, "string.h", FALSE);
                _tmp10_ = vala_ccode_identifier_new ("sizeof");
@@ -963,375 +962,372 @@ static void vala_ccode_assignment_module_real_store_value (ValaCCodeBaseModule*
                _tmp22_ = array_type;
                _tmp23_ = vala_array_type_get_length (_tmp22_);
                _tmp24_ = _tmp23_;
-               _tmp25_ = g_strdup_printf ("%d", _tmp24_);
+               _tmp25_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp24_);
                _tmp26_ = _tmp25_;
-               _tmp27_ = vala_ccode_constant_new (_tmp26_);
-               _tmp28_ = _tmp27_;
-               _tmp29_ = sizeof_call;
-               _tmp30_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MUL, (ValaCCodeExpression*) _tmp28_, (ValaCCodeExpression*) _tmp29_);
+               _tmp27_ = sizeof_call;
+               _tmp28_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MUL, _tmp26_, (ValaCCodeExpression*) _tmp27_);
+               _tmp29_ = _tmp28_;
+               _vala_ccode_node_unref0 (_tmp26_);
+               size = _tmp29_;
+               _tmp30_ = vala_ccode_identifier_new ("memcpy");
                _tmp31_ = _tmp30_;
-               _vala_ccode_node_unref0 (_tmp28_);
-               _g_free0 (_tmp26_);
-               size = _tmp31_;
-               _tmp32_ = vala_ccode_identifier_new ("memcpy");
+               _tmp32_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp31_);
                _tmp33_ = _tmp32_;
-               _tmp34_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp33_);
-               _tmp35_ = _tmp34_;
-               _vala_ccode_node_unref0 (_tmp33_);
-               ccopy = _tmp35_;
-               _tmp36_ = ccopy;
-               _tmp37_ = lvalue;
-               _tmp38_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp37_);
-               _tmp39_ = _tmp38_;
-               vala_ccode_function_call_add_argument (_tmp36_, _tmp39_);
-               _vala_ccode_node_unref0 (_tmp39_);
-               _tmp40_ = ccopy;
-               _tmp41_ = value;
-               _tmp42_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp41_);
-               _tmp43_ = _tmp42_;
-               vala_ccode_function_call_add_argument (_tmp40_, _tmp43_);
-               _vala_ccode_node_unref0 (_tmp43_);
-               _tmp44_ = ccopy;
-               _tmp45_ = size;
-               vala_ccode_function_call_add_argument (_tmp44_, (ValaCCodeExpression*) _tmp45_);
-               _tmp46_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp47_ = _tmp46_;
-               _tmp48_ = ccopy;
-               vala_ccode_function_add_expression (_tmp47_, (ValaCCodeExpression*) _tmp48_);
+               _vala_ccode_node_unref0 (_tmp31_);
+               ccopy = _tmp33_;
+               _tmp34_ = ccopy;
+               _tmp35_ = lvalue;
+               _tmp36_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp35_);
+               _tmp37_ = _tmp36_;
+               vala_ccode_function_call_add_argument (_tmp34_, _tmp37_);
+               _vala_ccode_node_unref0 (_tmp37_);
+               _tmp38_ = ccopy;
+               _tmp39_ = value;
+               _tmp40_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp39_);
+               _tmp41_ = _tmp40_;
+               vala_ccode_function_call_add_argument (_tmp38_, _tmp41_);
+               _vala_ccode_node_unref0 (_tmp41_);
+               _tmp42_ = ccopy;
+               _tmp43_ = size;
+               vala_ccode_function_call_add_argument (_tmp42_, (ValaCCodeExpression*) _tmp43_);
+               _tmp44_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp45_ = _tmp44_;
+               _tmp46_ = ccopy;
+               vala_ccode_function_add_expression (_tmp45_, (ValaCCodeExpression*) _tmp46_);
                _vala_ccode_node_unref0 (ccopy);
                _vala_ccode_node_unref0 (size);
                _vala_ccode_node_unref0 (sizeof_call);
                _vala_code_node_unref0 (array_type);
                return;
        }
-       _tmp49_ = value;
-       _tmp50_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp49_);
-       cexpr = _tmp50_;
-       _tmp51_ = lvalue;
-       _tmp52_ = vala_ccode_base_module_get_ctype ((ValaCCodeBaseModule*) self, _tmp51_);
-       _tmp53_ = _tmp52_;
-       _tmp54_ = _tmp53_ != NULL;
-       _g_free0 (_tmp53_);
-       if (_tmp54_) {
-               ValaCCodeExpression* _tmp55_ = NULL;
-               ValaTargetValue* _tmp56_ = NULL;
-               gchar* _tmp57_ = NULL;
-               gchar* _tmp58_ = NULL;
-               ValaCCodeCastExpression* _tmp59_ = NULL;
-               _tmp55_ = cexpr;
-               _tmp56_ = lvalue;
-               _tmp57_ = vala_ccode_base_module_get_ctype ((ValaCCodeBaseModule*) self, _tmp56_);
-               _tmp58_ = _tmp57_;
-               _tmp59_ = vala_ccode_cast_expression_new (_tmp55_, _tmp58_);
+       _tmp47_ = value;
+       _tmp48_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp47_);
+       cexpr = _tmp48_;
+       _tmp49_ = lvalue;
+       _tmp50_ = vala_ccode_base_module_get_ctype ((ValaCCodeBaseModule*) self, _tmp49_);
+       _tmp51_ = _tmp50_;
+       _tmp52_ = _tmp51_ != NULL;
+       _g_free0 (_tmp51_);
+       if (_tmp52_) {
+               ValaCCodeExpression* _tmp53_ = NULL;
+               ValaTargetValue* _tmp54_ = NULL;
+               gchar* _tmp55_ = NULL;
+               gchar* _tmp56_ = NULL;
+               ValaCCodeCastExpression* _tmp57_ = NULL;
+               _tmp53_ = cexpr;
+               _tmp54_ = lvalue;
+               _tmp55_ = vala_ccode_base_module_get_ctype ((ValaCCodeBaseModule*) self, _tmp54_);
+               _tmp56_ = _tmp55_;
+               _tmp57_ = vala_ccode_cast_expression_new (_tmp53_, _tmp56_);
                _vala_ccode_node_unref0 (cexpr);
-               cexpr = (ValaCCodeExpression*) _tmp59_;
-               _g_free0 (_tmp58_);
+               cexpr = (ValaCCodeExpression*) _tmp57_;
+               _g_free0 (_tmp56_);
        }
-       _tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp61_ = _tmp60_;
-       _tmp62_ = lvalue;
-       _tmp63_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp62_);
-       _tmp64_ = _tmp63_;
-       _tmp65_ = cexpr;
-       vala_ccode_function_add_assignment (_tmp61_, _tmp64_, _tmp65_);
-       _vala_ccode_node_unref0 (_tmp64_);
-       _tmp67_ = array_type;
-       if (_tmp67_ != NULL) {
-               ValaTargetValue* _tmp68_ = NULL;
-               ValaList* _tmp69_ = NULL;
-               _tmp68_ = lvalue;
-               _tmp69_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp68_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->array_length_cvalues;
-               _tmp66_ = _tmp69_ != NULL;
+       _tmp58_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp59_ = _tmp58_;
+       _tmp60_ = lvalue;
+       _tmp61_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp60_);
+       _tmp62_ = _tmp61_;
+       _tmp63_ = cexpr;
+       vala_ccode_function_add_assignment (_tmp59_, _tmp62_, _tmp63_);
+       _vala_ccode_node_unref0 (_tmp62_);
+       _tmp65_ = array_type;
+       if (_tmp65_ != NULL) {
+               ValaTargetValue* _tmp66_ = NULL;
+               ValaList* _tmp67_ = NULL;
+               _tmp66_ = lvalue;
+               _tmp67_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp66_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->array_length_cvalues;
+               _tmp64_ = _tmp67_ != NULL;
        } else {
-               _tmp66_ = FALSE;
+               _tmp64_ = FALSE;
        }
-       if (_tmp66_) {
+       if (_tmp64_) {
                ValaGLibValue* glib_value = NULL;
-               ValaTargetValue* _tmp70_ = NULL;
-               ValaGLibValue* _tmp71_ = NULL;
-               ValaGLibValue* _tmp72_ = NULL;
-               ValaList* _tmp73_ = NULL;
-               gboolean _tmp120_ = FALSE;
-               ValaArrayType* _tmp121_ = NULL;
-               gint _tmp122_ = 0;
-               gint _tmp123_ = 0;
-               _tmp70_ = value;
-               _tmp71_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp70_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
-               glib_value = _tmp71_;
-               _tmp72_ = glib_value;
-               _tmp73_ = _tmp72_->array_length_cvalues;
-               if (_tmp73_ != NULL) {
+               ValaTargetValue* _tmp68_ = NULL;
+               ValaGLibValue* _tmp69_ = NULL;
+               ValaGLibValue* _tmp70_ = NULL;
+               ValaList* _tmp71_ = NULL;
+               gboolean _tmp118_ = FALSE;
+               ValaArrayType* _tmp119_ = NULL;
+               gint _tmp120_ = 0;
+               gint _tmp121_ = 0;
+               _tmp68_ = value;
+               _tmp69_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp68_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
+               glib_value = _tmp69_;
+               _tmp70_ = glib_value;
+               _tmp71_ = _tmp70_->array_length_cvalues;
+               if (_tmp71_ != NULL) {
                        {
                                gint dim = 0;
                                dim = 1;
                                {
-                                       gboolean _tmp74_ = FALSE;
-                                       _tmp74_ = TRUE;
+                                       gboolean _tmp72_ = FALSE;
+                                       _tmp72_ = TRUE;
                                        while (TRUE) {
+                                               gint _tmp74_ = 0;
+                                               ValaArrayType* _tmp75_ = NULL;
                                                gint _tmp76_ = 0;
-                                               ValaArrayType* _tmp77_ = NULL;
-                                               gint _tmp78_ = 0;
-                                               gint _tmp79_ = 0;
-                                               ValaCCodeFunction* _tmp80_ = NULL;
-                                               ValaCCodeFunction* _tmp81_ = NULL;
-                                               ValaTargetValue* _tmp82_ = NULL;
-                                               gint _tmp83_ = 0;
-                                               ValaCCodeExpression* _tmp84_ = NULL;
-                                               ValaCCodeExpression* _tmp85_ = NULL;
-                                               ValaTargetValue* _tmp86_ = NULL;
-                                               gint _tmp87_ = 0;
-                                               ValaCCodeExpression* _tmp88_ = NULL;
-                                               ValaCCodeExpression* _tmp89_ = NULL;
-                                               if (!_tmp74_) {
-                                                       gint _tmp75_ = 0;
-                                                       _tmp75_ = dim;
-                                                       dim = _tmp75_ + 1;
+                                               gint _tmp77_ = 0;
+                                               ValaCCodeFunction* _tmp78_ = NULL;
+                                               ValaCCodeFunction* _tmp79_ = NULL;
+                                               ValaTargetValue* _tmp80_ = NULL;
+                                               gint _tmp81_ = 0;
+                                               ValaCCodeExpression* _tmp82_ = NULL;
+                                               ValaCCodeExpression* _tmp83_ = NULL;
+                                               ValaTargetValue* _tmp84_ = NULL;
+                                               gint _tmp85_ = 0;
+                                               ValaCCodeExpression* _tmp86_ = NULL;
+                                               ValaCCodeExpression* _tmp87_ = NULL;
+                                               if (!_tmp72_) {
+                                                       gint _tmp73_ = 0;
+                                                       _tmp73_ = dim;
+                                                       dim = _tmp73_ + 1;
                                                }
-                                               _tmp74_ = FALSE;
-                                               _tmp76_ = dim;
-                                               _tmp77_ = array_type;
-                                               _tmp78_ = vala_array_type_get_rank (_tmp77_);
-                                               _tmp79_ = _tmp78_;
-                                               if (!(_tmp76_ <= _tmp79_)) {
+                                               _tmp72_ = FALSE;
+                                               _tmp74_ = dim;
+                                               _tmp75_ = array_type;
+                                               _tmp76_ = vala_array_type_get_rank (_tmp75_);
+                                               _tmp77_ = _tmp76_;
+                                               if (!(_tmp74_ <= _tmp77_)) {
                                                        break;
                                                }
-                                               _tmp80_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                               _tmp81_ = _tmp80_;
-                                               _tmp82_ = lvalue;
-                                               _tmp83_ = dim;
-                                               _tmp84_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp82_, _tmp83_);
-                                               _tmp85_ = _tmp84_;
-                                               _tmp86_ = value;
-                                               _tmp87_ = dim;
-                                               _tmp88_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp86_, _tmp87_);
-                                               _tmp89_ = _tmp88_;
-                                               vala_ccode_function_add_assignment (_tmp81_, _tmp85_, _tmp89_);
-                                               _vala_ccode_node_unref0 (_tmp89_);
-                                               _vala_ccode_node_unref0 (_tmp85_);
+                                               _tmp78_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                               _tmp79_ = _tmp78_;
+                                               _tmp80_ = lvalue;
+                                               _tmp81_ = dim;
+                                               _tmp82_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp80_, _tmp81_);
+                                               _tmp83_ = _tmp82_;
+                                               _tmp84_ = value;
+                                               _tmp85_ = dim;
+                                               _tmp86_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp84_, _tmp85_);
+                                               _tmp87_ = _tmp86_;
+                                               vala_ccode_function_add_assignment (_tmp79_, _tmp83_, _tmp87_);
+                                               _vala_ccode_node_unref0 (_tmp87_);
+                                               _vala_ccode_node_unref0 (_tmp83_);
                                        }
                                }
                        }
                } else {
-                       ValaGLibValue* _tmp90_ = NULL;
-                       gboolean _tmp91_ = FALSE;
-                       _tmp90_ = glib_value;
-                       _tmp91_ = _tmp90_->array_null_terminated;
-                       if (_tmp91_) {
+                       ValaGLibValue* _tmp88_ = NULL;
+                       gboolean _tmp89_ = FALSE;
+                       _tmp88_ = glib_value;
+                       _tmp89_ = _tmp88_->array_null_terminated;
+                       if (_tmp89_) {
                                ValaCCodeFunctionCall* len_call = NULL;
-                               ValaCCodeIdentifier* _tmp92_ = NULL;
-                               ValaCCodeIdentifier* _tmp93_ = NULL;
+                               ValaCCodeIdentifier* _tmp90_ = NULL;
+                               ValaCCodeIdentifier* _tmp91_ = NULL;
+                               ValaCCodeFunctionCall* _tmp92_ = NULL;
+                               ValaCCodeFunctionCall* _tmp93_ = NULL;
                                ValaCCodeFunctionCall* _tmp94_ = NULL;
-                               ValaCCodeFunctionCall* _tmp95_ = NULL;
-                               ValaCCodeFunctionCall* _tmp96_ = NULL;
-                               ValaTargetValue* _tmp97_ = NULL;
-                               ValaCCodeExpression* _tmp98_ = NULL;
-                               ValaCCodeExpression* _tmp99_ = NULL;
-                               ValaCCodeFunction* _tmp100_ = NULL;
-                               ValaCCodeFunction* _tmp101_ = NULL;
-                               ValaTargetValue* _tmp102_ = NULL;
-                               ValaCCodeExpression* _tmp103_ = NULL;
-                               ValaCCodeExpression* _tmp104_ = NULL;
-                               ValaCCodeFunctionCall* _tmp105_ = NULL;
+                               ValaTargetValue* _tmp95_ = NULL;
+                               ValaCCodeExpression* _tmp96_ = NULL;
+                               ValaCCodeExpression* _tmp97_ = NULL;
+                               ValaCCodeFunction* _tmp98_ = NULL;
+                               ValaCCodeFunction* _tmp99_ = NULL;
+                               ValaTargetValue* _tmp100_ = NULL;
+                               ValaCCodeExpression* _tmp101_ = NULL;
+                               ValaCCodeExpression* _tmp102_ = NULL;
+                               ValaCCodeFunctionCall* _tmp103_ = NULL;
                                ((ValaCCodeBaseModule*) self)->requires_array_length = TRUE;
-                               _tmp92_ = vala_ccode_identifier_new ("_vala_array_length");
+                               _tmp90_ = vala_ccode_identifier_new ("_vala_array_length");
+                               _tmp91_ = _tmp90_;
+                               _tmp92_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp91_);
                                _tmp93_ = _tmp92_;
-                               _tmp94_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp93_);
-                               _tmp95_ = _tmp94_;
-                               _vala_ccode_node_unref0 (_tmp93_);
-                               len_call = _tmp95_;
-                               _tmp96_ = len_call;
-                               _tmp97_ = value;
-                               _tmp98_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp97_);
+                               _vala_ccode_node_unref0 (_tmp91_);
+                               len_call = _tmp93_;
+                               _tmp94_ = len_call;
+                               _tmp95_ = value;
+                               _tmp96_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp95_);
+                               _tmp97_ = _tmp96_;
+                               vala_ccode_function_call_add_argument (_tmp94_, _tmp97_);
+                               _vala_ccode_node_unref0 (_tmp97_);
+                               _tmp98_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                _tmp99_ = _tmp98_;
-                               vala_ccode_function_call_add_argument (_tmp96_, _tmp99_);
-                               _vala_ccode_node_unref0 (_tmp99_);
-                               _tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp101_ = _tmp100_;
-                               _tmp102_ = lvalue;
-                               _tmp103_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp102_, 1);
-                               _tmp104_ = _tmp103_;
-                               _tmp105_ = len_call;
-                               vala_ccode_function_add_assignment (_tmp101_, _tmp104_, (ValaCCodeExpression*) _tmp105_);
-                               _vala_ccode_node_unref0 (_tmp104_);
+                               _tmp100_ = lvalue;
+                               _tmp101_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp100_, 1);
+                               _tmp102_ = _tmp101_;
+                               _tmp103_ = len_call;
+                               vala_ccode_function_add_assignment (_tmp99_, _tmp102_, (ValaCCodeExpression*) _tmp103_);
+                               _vala_ccode_node_unref0 (_tmp102_);
                                _vala_ccode_node_unref0 (len_call);
                        } else {
                                {
                                        gint dim = 0;
                                        dim = 1;
                                        {
-                                               gboolean _tmp106_ = FALSE;
-                                               _tmp106_ = TRUE;
+                                               gboolean _tmp104_ = FALSE;
+                                               _tmp104_ = TRUE;
                                                while (TRUE) {
+                                                       gint _tmp106_ = 0;
+                                                       ValaArrayType* _tmp107_ = NULL;
                                                        gint _tmp108_ = 0;
-                                                       ValaArrayType* _tmp109_ = NULL;
-                                                       gint _tmp110_ = 0;
-                                                       gint _tmp111_ = 0;
-                                                       ValaCCodeFunction* _tmp112_ = NULL;
-                                                       ValaCCodeFunction* _tmp113_ = NULL;
-                                                       ValaTargetValue* _tmp114_ = NULL;
-                                                       gint _tmp115_ = 0;
-                                                       ValaCCodeExpression* _tmp116_ = NULL;
-                                                       ValaCCodeExpression* _tmp117_ = NULL;
-                                                       ValaCCodeConstant* _tmp118_ = NULL;
-                                                       ValaCCodeConstant* _tmp119_ = NULL;
-                                                       if (!_tmp106_) {
-                                                               gint _tmp107_ = 0;
-                                                               _tmp107_ = dim;
-                                                               dim = _tmp107_ + 1;
+                                                       gint _tmp109_ = 0;
+                                                       ValaCCodeFunction* _tmp110_ = NULL;
+                                                       ValaCCodeFunction* _tmp111_ = NULL;
+                                                       ValaTargetValue* _tmp112_ = NULL;
+                                                       gint _tmp113_ = 0;
+                                                       ValaCCodeExpression* _tmp114_ = NULL;
+                                                       ValaCCodeExpression* _tmp115_ = NULL;
+                                                       ValaCCodeConstant* _tmp116_ = NULL;
+                                                       ValaCCodeConstant* _tmp117_ = NULL;
+                                                       if (!_tmp104_) {
+                                                               gint _tmp105_ = 0;
+                                                               _tmp105_ = dim;
+                                                               dim = _tmp105_ + 1;
                                                        }
-                                                       _tmp106_ = FALSE;
-                                                       _tmp108_ = dim;
-                                                       _tmp109_ = array_type;
-                                                       _tmp110_ = vala_array_type_get_rank (_tmp109_);
-                                                       _tmp111_ = _tmp110_;
-                                                       if (!(_tmp108_ <= _tmp111_)) {
+                                                       _tmp104_ = FALSE;
+                                                       _tmp106_ = dim;
+                                                       _tmp107_ = array_type;
+                                                       _tmp108_ = vala_array_type_get_rank (_tmp107_);
+                                                       _tmp109_ = _tmp108_;
+                                                       if (!(_tmp106_ <= _tmp109_)) {
                                                                break;
                                                        }
-                                                       _tmp112_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                                       _tmp113_ = _tmp112_;
-                                                       _tmp114_ = lvalue;
-                                                       _tmp115_ = dim;
-                                                       _tmp116_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp114_, _tmp115_);
+                                                       _tmp110_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                       _tmp111_ = _tmp110_;
+                                                       _tmp112_ = lvalue;
+                                                       _tmp113_ = dim;
+                                                       _tmp114_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp112_, _tmp113_);
+                                                       _tmp115_ = _tmp114_;
+                                                       _tmp116_ = vala_ccode_constant_new ("-1");
                                                        _tmp117_ = _tmp116_;
-                                                       _tmp118_ = vala_ccode_constant_new ("-1");
-                                                       _tmp119_ = _tmp118_;
-                                                       vala_ccode_function_add_assignment (_tmp113_, _tmp117_, (ValaCCodeExpression*) _tmp119_);
-                                                       _vala_ccode_node_unref0 (_tmp119_);
+                                                       vala_ccode_function_add_assignment (_tmp111_, _tmp115_, (ValaCCodeExpression*) _tmp117_);
                                                        _vala_ccode_node_unref0 (_tmp117_);
+                                                       _vala_ccode_node_unref0 (_tmp115_);
                                                }
                                        }
                                }
                        }
                }
-               _tmp121_ = array_type;
-               _tmp122_ = vala_array_type_get_rank (_tmp121_);
-               _tmp123_ = _tmp122_;
-               if (_tmp123_ == 1) {
-                       ValaTargetValue* _tmp124_ = NULL;
-                       ValaCCodeExpression* _tmp125_ = NULL;
-                       ValaCCodeExpression* _tmp126_ = NULL;
-                       _tmp124_ = lvalue;
-                       _tmp125_ = vala_ccode_base_module_get_array_size_cvalue ((ValaCCodeBaseModule*) self, _tmp124_);
-                       _tmp126_ = _tmp125_;
-                       _tmp120_ = _tmp126_ != NULL;
-                       _vala_ccode_node_unref0 (_tmp126_);
+               _tmp119_ = array_type;
+               _tmp120_ = vala_array_type_get_rank (_tmp119_);
+               _tmp121_ = _tmp120_;
+               if (_tmp121_ == 1) {
+                       ValaTargetValue* _tmp122_ = NULL;
+                       ValaCCodeExpression* _tmp123_ = NULL;
+                       ValaCCodeExpression* _tmp124_ = NULL;
+                       _tmp122_ = lvalue;
+                       _tmp123_ = vala_ccode_base_module_get_array_size_cvalue ((ValaCCodeBaseModule*) self, _tmp122_);
+                       _tmp124_ = _tmp123_;
+                       _tmp118_ = _tmp124_ != NULL;
+                       _vala_ccode_node_unref0 (_tmp124_);
                } else {
-                       _tmp120_ = FALSE;
+                       _tmp118_ = FALSE;
                }
-               if (_tmp120_) {
-                       ValaCCodeFunction* _tmp127_ = NULL;
-                       ValaCCodeFunction* _tmp128_ = NULL;
-                       ValaTargetValue* _tmp129_ = NULL;
-                       ValaCCodeExpression* _tmp130_ = NULL;
+               if (_tmp118_) {
+                       ValaCCodeFunction* _tmp125_ = NULL;
+                       ValaCCodeFunction* _tmp126_ = NULL;
+                       ValaTargetValue* _tmp127_ = NULL;
+                       ValaCCodeExpression* _tmp128_ = NULL;
+                       ValaCCodeExpression* _tmp129_ = NULL;
+                       ValaTargetValue* _tmp130_ = NULL;
                        ValaCCodeExpression* _tmp131_ = NULL;
-                       ValaTargetValue* _tmp132_ = NULL;
-                       ValaCCodeExpression* _tmp133_ = NULL;
-                       ValaCCodeExpression* _tmp134_ = NULL;
-                       _tmp127_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp128_ = _tmp127_;
-                       _tmp129_ = lvalue;
-                       _tmp130_ = vala_ccode_base_module_get_array_size_cvalue ((ValaCCodeBaseModule*) self, _tmp129_);
-                       _tmp131_ = _tmp130_;
-                       _tmp132_ = lvalue;
-                       _tmp133_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp132_, 1);
-                       _tmp134_ = _tmp133_;
-                       vala_ccode_function_add_assignment (_tmp128_, _tmp131_, _tmp134_);
-                       _vala_ccode_node_unref0 (_tmp134_);
-                       _vala_ccode_node_unref0 (_tmp131_);
+                       ValaCCodeExpression* _tmp132_ = NULL;
+                       _tmp125_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp126_ = _tmp125_;
+                       _tmp127_ = lvalue;
+                       _tmp128_ = vala_ccode_base_module_get_array_size_cvalue ((ValaCCodeBaseModule*) self, _tmp127_);
+                       _tmp129_ = _tmp128_;
+                       _tmp130_ = lvalue;
+                       _tmp131_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, _tmp130_, 1);
+                       _tmp132_ = _tmp131_;
+                       vala_ccode_function_add_assignment (_tmp126_, _tmp129_, _tmp132_);
+                       _vala_ccode_node_unref0 (_tmp132_);
+                       _vala_ccode_node_unref0 (_tmp129_);
                }
                _vala_target_value_unref0 (glib_value);
        }
-       _tmp135_ = lvalue;
-       _tmp136_ = vala_target_value_get_value_type (_tmp135_);
-       _tmp137_ = _tmp136_;
-       _tmp138_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp137_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp137_) : NULL);
-       delegate_type = _tmp138_;
-       _tmp140_ = delegate_type;
-       if (_tmp140_ != NULL) {
-               ValaDelegateType* _tmp141_ = NULL;
-               ValaDelegate* _tmp142_ = NULL;
-               ValaDelegate* _tmp143_ = NULL;
-               gboolean _tmp144_ = FALSE;
-               gboolean _tmp145_ = FALSE;
-               _tmp141_ = delegate_type;
-               _tmp142_ = vala_delegate_type_get_delegate_symbol (_tmp141_);
+       _tmp133_ = lvalue;
+       _tmp134_ = vala_target_value_get_value_type (_tmp133_);
+       _tmp135_ = _tmp134_;
+       _tmp136_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp135_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp135_) : NULL);
+       delegate_type = _tmp136_;
+       _tmp138_ = delegate_type;
+       if (_tmp138_ != NULL) {
+               ValaDelegateType* _tmp139_ = NULL;
+               ValaDelegate* _tmp140_ = NULL;
+               ValaDelegate* _tmp141_ = NULL;
+               gboolean _tmp142_ = FALSE;
+               gboolean _tmp143_ = FALSE;
+               _tmp139_ = delegate_type;
+               _tmp140_ = vala_delegate_type_get_delegate_symbol (_tmp139_);
+               _tmp141_ = _tmp140_;
+               _tmp142_ = vala_delegate_get_has_target (_tmp141_);
                _tmp143_ = _tmp142_;
-               _tmp144_ = vala_delegate_get_has_target (_tmp143_);
-               _tmp145_ = _tmp144_;
-               _tmp139_ = _tmp145_;
+               _tmp137_ = _tmp143_;
        } else {
-               _tmp139_ = FALSE;
+               _tmp137_ = FALSE;
        }
-       if (_tmp139_) {
-               ValaTargetValue* _tmp146_ = NULL;
-               ValaCCodeExpression* _tmp147_ = NULL;
-               ValaCCodeExpression* _tmp148_ = NULL;
-               gboolean _tmp149_ = FALSE;
-               _tmp146_ = lvalue;
-               _tmp147_ = vala_ccode_base_module_get_delegate_target_cvalue ((ValaCCodeBaseModule*) self, _tmp146_);
-               _tmp148_ = _tmp147_;
-               _tmp149_ = _tmp148_ != NULL;
-               _vala_ccode_node_unref0 (_tmp148_);
-               if (_tmp149_) {
-                       ValaCCodeFunction* _tmp150_ = NULL;
-                       ValaCCodeFunction* _tmp151_ = NULL;
-                       ValaTargetValue* _tmp152_ = NULL;
-                       ValaCCodeExpression* _tmp153_ = NULL;
+       if (_tmp137_) {
+               ValaTargetValue* _tmp144_ = NULL;
+               ValaCCodeExpression* _tmp145_ = NULL;
+               ValaCCodeExpression* _tmp146_ = NULL;
+               gboolean _tmp147_ = FALSE;
+               _tmp144_ = lvalue;
+               _tmp145_ = vala_ccode_base_module_get_delegate_target_cvalue ((ValaCCodeBaseModule*) self, _tmp144_);
+               _tmp146_ = _tmp145_;
+               _tmp147_ = _tmp146_ != NULL;
+               _vala_ccode_node_unref0 (_tmp146_);
+               if (_tmp147_) {
+                       ValaCCodeFunction* _tmp148_ = NULL;
+                       ValaCCodeFunction* _tmp149_ = NULL;
+                       ValaTargetValue* _tmp150_ = NULL;
+                       ValaCCodeExpression* _tmp151_ = NULL;
+                       ValaCCodeExpression* _tmp152_ = NULL;
+                       ValaTargetValue* _tmp153_ = NULL;
                        ValaCCodeExpression* _tmp154_ = NULL;
-                       ValaTargetValue* _tmp155_ = NULL;
-                       ValaCCodeExpression* _tmp156_ = NULL;
-                       ValaCCodeExpression* _tmp157_ = NULL;
+                       ValaCCodeExpression* _tmp155_ = NULL;
                        ValaCCodeExpression* lvalue_destroy_notify = NULL;
+                       ValaTargetValue* _tmp156_ = NULL;
+                       ValaCCodeExpression* _tmp157_ = NULL;
+                       ValaCCodeExpression* rvalue_destroy_notify = NULL;
                        ValaTargetValue* _tmp158_ = NULL;
                        ValaCCodeExpression* _tmp159_ = NULL;
-                       ValaCCodeExpression* rvalue_destroy_notify = NULL;
-                       ValaTargetValue* _tmp160_ = NULL;
-                       ValaCCodeExpression* _tmp161_ = NULL;
-                       ValaCCodeExpression* _tmp162_ = NULL;
-                       _tmp150_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp151_ = _tmp150_;
-                       _tmp152_ = lvalue;
-                       _tmp153_ = vala_ccode_base_module_get_delegate_target_cvalue ((ValaCCodeBaseModule*) self, _tmp152_);
-                       _tmp154_ = _tmp153_;
-                       _tmp155_ = value;
-                       _tmp156_ = vala_ccode_base_module_get_delegate_target_cvalue ((ValaCCodeBaseModule*) self, _tmp155_);
-                       _tmp157_ = _tmp156_;
-                       vala_ccode_function_add_assignment (_tmp151_, _tmp154_, _tmp157_);
-                       _vala_ccode_node_unref0 (_tmp157_);
-                       _vala_ccode_node_unref0 (_tmp154_);
-                       _tmp158_ = lvalue;
+                       ValaCCodeExpression* _tmp160_ = NULL;
+                       _tmp148_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp149_ = _tmp148_;
+                       _tmp150_ = lvalue;
+                       _tmp151_ = vala_ccode_base_module_get_delegate_target_cvalue ((ValaCCodeBaseModule*) self, _tmp150_);
+                       _tmp152_ = _tmp151_;
+                       _tmp153_ = value;
+                       _tmp154_ = vala_ccode_base_module_get_delegate_target_cvalue ((ValaCCodeBaseModule*) self, _tmp153_);
+                       _tmp155_ = _tmp154_;
+                       vala_ccode_function_add_assignment (_tmp149_, _tmp152_, _tmp155_);
+                       _vala_ccode_node_unref0 (_tmp155_);
+                       _vala_ccode_node_unref0 (_tmp152_);
+                       _tmp156_ = lvalue;
+                       _tmp157_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue ((ValaCCodeBaseModule*) self, _tmp156_);
+                       lvalue_destroy_notify = _tmp157_;
+                       _tmp158_ = value;
                        _tmp159_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue ((ValaCCodeBaseModule*) self, _tmp158_);
-                       lvalue_destroy_notify = _tmp159_;
-                       _tmp160_ = value;
-                       _tmp161_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cvalue ((ValaCCodeBaseModule*) self, _tmp160_);
-                       rvalue_destroy_notify = _tmp161_;
-                       _tmp162_ = lvalue_destroy_notify;
-                       if (_tmp162_ != NULL) {
-                               ValaCCodeExpression* _tmp163_ = NULL;
-                               _tmp163_ = rvalue_destroy_notify;
-                               if (_tmp163_ != NULL) {
-                                       ValaCCodeFunction* _tmp164_ = NULL;
-                                       ValaCCodeFunction* _tmp165_ = NULL;
-                                       ValaCCodeExpression* _tmp166_ = NULL;
-                                       ValaCCodeExpression* _tmp167_ = NULL;
-                                       _tmp164_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp165_ = _tmp164_;
-                                       _tmp166_ = lvalue_destroy_notify;
-                                       _tmp167_ = rvalue_destroy_notify;
-                                       vala_ccode_function_add_assignment (_tmp165_, _tmp166_, _tmp167_);
+                       rvalue_destroy_notify = _tmp159_;
+                       _tmp160_ = lvalue_destroy_notify;
+                       if (_tmp160_ != NULL) {
+                               ValaCCodeExpression* _tmp161_ = NULL;
+                               _tmp161_ = rvalue_destroy_notify;
+                               if (_tmp161_ != NULL) {
+                                       ValaCCodeFunction* _tmp162_ = NULL;
+                                       ValaCCodeFunction* _tmp163_ = NULL;
+                                       ValaCCodeExpression* _tmp164_ = NULL;
+                                       ValaCCodeExpression* _tmp165_ = NULL;
+                                       _tmp162_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp163_ = _tmp162_;
+                                       _tmp164_ = lvalue_destroy_notify;
+                                       _tmp165_ = rvalue_destroy_notify;
+                                       vala_ccode_function_add_assignment (_tmp163_, _tmp164_, _tmp165_);
                                } else {
-                                       ValaCCodeFunction* _tmp168_ = NULL;
-                                       ValaCCodeFunction* _tmp169_ = NULL;
-                                       ValaCCodeExpression* _tmp170_ = NULL;
-                                       ValaCCodeConstant* _tmp171_ = NULL;
-                                       ValaCCodeConstant* _tmp172_ = NULL;
-                                       _tmp168_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp169_ = _tmp168_;
-                                       _tmp170_ = lvalue_destroy_notify;
-                                       _tmp171_ = vala_ccode_constant_new ("NULL");
-                                       _tmp172_ = _tmp171_;
-                                       vala_ccode_function_add_assignment (_tmp169_, _tmp170_, (ValaCCodeExpression*) _tmp172_);
-                                       _vala_ccode_node_unref0 (_tmp172_);
+                                       ValaCCodeFunction* _tmp166_ = NULL;
+                                       ValaCCodeFunction* _tmp167_ = NULL;
+                                       ValaCCodeExpression* _tmp168_ = NULL;
+                                       ValaCCodeConstant* _tmp169_ = NULL;
+                                       ValaCCodeConstant* _tmp170_ = NULL;
+                                       _tmp166_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp167_ = _tmp166_;
+                                       _tmp168_ = lvalue_destroy_notify;
+                                       _tmp169_ = vala_ccode_constant_new ("NULL");
+                                       _tmp170_ = _tmp169_;
+                                       vala_ccode_function_add_assignment (_tmp167_, _tmp168_, (ValaCCodeExpression*) _tmp170_);
+                                       _vala_ccode_node_unref0 (_tmp170_);
                                }
                        }
                        _vala_ccode_node_unref0 (rvalue_destroy_notify);
@@ -1624,11 +1620,11 @@ ValaCCodeAssignmentModule* vala_ccode_assignment_module_new (void) {
 
 static void vala_ccode_assignment_module_class_init (ValaCCodeAssignmentModuleClass * klass) {
        vala_ccode_assignment_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->visit_assignment = vala_ccode_assignment_module_real_visit_assignment;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->store_value = vala_ccode_assignment_module_real_store_value;
-       VALA_CODE_GENERATOR_CLASS (klass)->store_local = vala_ccode_assignment_module_real_store_local;
-       VALA_CODE_GENERATOR_CLASS (klass)->store_parameter = vala_ccode_assignment_module_real_store_parameter;
-       VALA_CODE_GENERATOR_CLASS (klass)->store_field = vala_ccode_assignment_module_real_store_field;
+       ((ValaCodeVisitorClass *) klass)->visit_assignment = vala_ccode_assignment_module_real_visit_assignment;
+       ((ValaCCodeBaseModuleClass *) klass)->store_value = vala_ccode_assignment_module_real_store_value;
+       ((ValaCodeGeneratorClass *) klass)->store_local = vala_ccode_assignment_module_real_store_local;
+       ((ValaCodeGeneratorClass *) klass)->store_parameter = vala_ccode_assignment_module_real_store_parameter;
+       ((ValaCodeGeneratorClass *) klass)->store_field = vala_ccode_assignment_module_real_store_field;
 }
 
 
index 67be9c9..76004f7 100644 (file)
@@ -104,7 +104,7 @@ public class Vala.CCodeAssignmentModule : CCodeMemberAccessModule {
                        // simple assignments do not work in C
                        var sizeof_call = new CCodeFunctionCall (new CCodeIdentifier ("sizeof"));
                        sizeof_call.add_argument (new CCodeIdentifier (get_ccode_name (array_type.element_type)));
-                       var size = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, new CCodeConstant ("%d".printf (array_type.length)), sizeof_call);
+                       var size = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, get_ccodenode (array_type.length), sizeof_call);
 
                        var ccopy = new CCodeFunctionCall (new CCodeIdentifier ("memcpy"));
                        ccopy.add_argument (get_cvalue_ (lvalue));
index 058715b..331a84a 100644 (file)
@@ -327,6 +327,18 @@ static gpointer _vala_code_node_ref0 (gpointer self) {
 }
 
 
+static gchar string_get (const gchar* self, glong index) {
+       gchar result = '\0';
+       glong _tmp0_ = 0L;
+       gchar _tmp1_ = '\0';
+       g_return_val_if_fail (self != NULL, '\0');
+       _tmp0_ = index;
+       _tmp1_ = ((gchar*) self)[_tmp0_];
+       result = _tmp1_;
+       return result;
+}
+
+
 static glong string_strnlen (gchar* str, glong maxlen) {
        glong result = 0L;
        gchar* end = NULL;
@@ -504,132 +516,152 @@ static gchar* vala_ccode_attribute_get_default_name (ValaCCodeAttribute* self) {
                        ValaSymbol* _tmp25_ = NULL;
                        _tmp25_ = sym;
                        if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_FIELD)) {
+                               gchar* cname = NULL;
                                ValaSymbol* _tmp26_ = NULL;
-                               ValaMemberBinding _tmp27_ = 0;
-                               ValaMemberBinding _tmp28_ = 0;
+                               const gchar* _tmp27_ = NULL;
+                               const gchar* _tmp28_ = NULL;
+                               gchar* _tmp29_ = NULL;
+                               ValaSymbol* _tmp30_ = NULL;
+                               ValaMemberBinding _tmp31_ = 0;
+                               ValaMemberBinding _tmp32_ = 0;
+                               const gchar* _tmp42_ = NULL;
+                               gchar _tmp43_ = '\0';
+                               gboolean _tmp44_ = FALSE;
                                _tmp26_ = sym;
-                               _tmp27_ = vala_field_get_binding (G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, VALA_TYPE_FIELD, ValaField));
+                               _tmp27_ = vala_symbol_get_name (_tmp26_);
                                _tmp28_ = _tmp27_;
-                               if (_tmp28_ == VALA_MEMBER_BINDING_STATIC) {
-                                       ValaSymbol* _tmp29_ = NULL;
-                                       ValaSymbol* _tmp30_ = NULL;
-                                       ValaSymbol* _tmp31_ = NULL;
-                                       gchar* _tmp32_ = NULL;
-                                       gchar* _tmp33_ = NULL;
+                               _tmp29_ = g_strdup (_tmp28_);
+                               cname = _tmp29_;
+                               _tmp30_ = sym;
+                               _tmp31_ = vala_field_get_binding (G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, VALA_TYPE_FIELD, ValaField));
+                               _tmp32_ = _tmp31_;
+                               if (_tmp32_ == VALA_MEMBER_BINDING_STATIC) {
+                                       ValaSymbol* _tmp33_ = NULL;
                                        ValaSymbol* _tmp34_ = NULL;
-                                       const gchar* _tmp35_ = NULL;
-                                       const gchar* _tmp36_ = NULL;
+                                       ValaSymbol* _tmp35_ = NULL;
+                                       gchar* _tmp36_ = NULL;
                                        gchar* _tmp37_ = NULL;
-                                       gchar* _tmp38_ = NULL;
-                                       _tmp29_ = sym;
-                                       _tmp30_ = vala_symbol_get_parent_symbol (_tmp29_);
-                                       _tmp31_ = _tmp30_;
-                                       _tmp32_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp31_);
-                                       _tmp33_ = _tmp32_;
-                                       _tmp34_ = sym;
-                                       _tmp35_ = vala_symbol_get_name (_tmp34_);
-                                       _tmp36_ = _tmp35_;
-                                       _tmp37_ = g_strdup_printf ("%s%s", _tmp33_, _tmp36_);
-                                       _tmp38_ = _tmp37_;
-                                       _g_free0 (_tmp33_);
-                                       result = _tmp38_;
-                                       _vala_code_node_unref0 (sym);
-                                       return result;
-                               } else {
-                                       ValaSymbol* _tmp39_ = NULL;
+                                       ValaSymbol* _tmp38_ = NULL;
+                                       const gchar* _tmp39_ = NULL;
                                        const gchar* _tmp40_ = NULL;
-                                       const gchar* _tmp41_ = NULL;
-                                       gchar* _tmp42_ = NULL;
-                                       _tmp39_ = sym;
-                                       _tmp40_ = vala_symbol_get_name (_tmp39_);
-                                       _tmp41_ = _tmp40_;
-                                       _tmp42_ = g_strdup (_tmp41_);
-                                       result = _tmp42_;
+                                       gchar* _tmp41_ = NULL;
+                                       _tmp33_ = sym;
+                                       _tmp34_ = vala_symbol_get_parent_symbol (_tmp33_);
+                                       _tmp35_ = _tmp34_;
+                                       _tmp36_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp35_);
+                                       _tmp37_ = _tmp36_;
+                                       _tmp38_ = sym;
+                                       _tmp39_ = vala_symbol_get_name (_tmp38_);
+                                       _tmp40_ = _tmp39_;
+                                       _tmp41_ = g_strdup_printf ("%s%s", _tmp37_, _tmp40_);
+                                       _g_free0 (cname);
+                                       cname = _tmp41_;
+                                       _g_free0 (_tmp37_);
+                               }
+                               _tmp42_ = cname;
+                               _tmp43_ = string_get (_tmp42_, (glong) 0);
+                               _tmp44_ = g_ascii_isdigit (_tmp43_);
+                               if (_tmp44_) {
+                                       ValaCodeNode* _tmp45_ = NULL;
+                                       ValaSourceReference* _tmp46_ = NULL;
+                                       ValaSourceReference* _tmp47_ = NULL;
+                                       gchar* _tmp48_ = NULL;
+                                       _tmp45_ = self->priv->node;
+                                       _tmp46_ = vala_code_node_get_source_reference (_tmp45_);
+                                       _tmp47_ = _tmp46_;
+                                       vala_report_error (_tmp47_, "Field name starts with a digit. Use the `cname' attribute to provide a" \
+" valid C name if intended");
+                                       _tmp48_ = g_strdup ("");
+                                       result = _tmp48_;
+                                       _g_free0 (cname);
                                        _vala_code_node_unref0 (sym);
                                        return result;
                                }
+                               result = cname;
+                               _vala_code_node_unref0 (sym);
+                               return result;
                        } else {
-                               ValaSymbol* _tmp43_ = NULL;
-                               _tmp43_ = sym;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp43_, VALA_TYPE_CREATION_METHOD)) {
+                               ValaSymbol* _tmp49_ = NULL;
+                               _tmp49_ = sym;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp49_, VALA_TYPE_CREATION_METHOD)) {
                                        ValaCreationMethod* m = NULL;
-                                       ValaSymbol* _tmp44_ = NULL;
-                                       ValaCreationMethod* _tmp45_ = NULL;
-                                       gchar* infix = NULL;
-                                       ValaCreationMethod* _tmp46_ = NULL;
-                                       ValaSymbol* _tmp47_ = NULL;
-                                       ValaSymbol* _tmp48_ = NULL;
+                                       ValaSymbol* _tmp50_ = NULL;
                                        ValaCreationMethod* _tmp51_ = NULL;
-                                       const gchar* _tmp52_ = NULL;
-                                       const gchar* _tmp53_ = NULL;
-                                       _tmp44_ = sym;
-                                       _tmp45_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp44_, VALA_TYPE_CREATION_METHOD, ValaCreationMethod));
-                                       m = _tmp45_;
-                                       _tmp46_ = m;
-                                       _tmp47_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp46_);
-                                       _tmp48_ = _tmp47_;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp48_, VALA_TYPE_STRUCT)) {
-                                               gchar* _tmp49_ = NULL;
-                                               _tmp49_ = g_strdup ("init");
+                                       gchar* infix = NULL;
+                                       ValaCreationMethod* _tmp52_ = NULL;
+                                       ValaSymbol* _tmp53_ = NULL;
+                                       ValaSymbol* _tmp54_ = NULL;
+                                       ValaCreationMethod* _tmp57_ = NULL;
+                                       const gchar* _tmp58_ = NULL;
+                                       const gchar* _tmp59_ = NULL;
+                                       _tmp50_ = sym;
+                                       _tmp51_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, VALA_TYPE_CREATION_METHOD, ValaCreationMethod));
+                                       m = _tmp51_;
+                                       _tmp52_ = m;
+                                       _tmp53_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp52_);
+                                       _tmp54_ = _tmp53_;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp54_, VALA_TYPE_STRUCT)) {
+                                               gchar* _tmp55_ = NULL;
+                                               _tmp55_ = g_strdup ("init");
                                                _g_free0 (infix);
-                                               infix = _tmp49_;
+                                               infix = _tmp55_;
                                        } else {
-                                               gchar* _tmp50_ = NULL;
-                                               _tmp50_ = g_strdup ("new");
+                                               gchar* _tmp56_ = NULL;
+                                               _tmp56_ = g_strdup ("new");
                                                _g_free0 (infix);
-                                               infix = _tmp50_;
+                                               infix = _tmp56_;
                                        }
-                                       _tmp51_ = m;
-                                       _tmp52_ = vala_symbol_get_name ((ValaSymbol*) _tmp51_);
-                                       _tmp53_ = _tmp52_;
-                                       if (g_strcmp0 (_tmp53_, ".new") == 0) {
-                                               ValaCreationMethod* _tmp54_ = NULL;
-                                               ValaSymbol* _tmp55_ = NULL;
-                                               ValaSymbol* _tmp56_ = NULL;
-                                               gchar* _tmp57_ = NULL;
-                                               gchar* _tmp58_ = NULL;
-                                               const gchar* _tmp59_ = NULL;
-                                               gchar* _tmp60_ = NULL;
-                                               gchar* _tmp61_ = NULL;
-                                               _tmp54_ = m;
-                                               _tmp55_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp54_);
-                                               _tmp56_ = _tmp55_;
-                                               _tmp57_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp56_);
-                                               _tmp58_ = _tmp57_;
-                                               _tmp59_ = infix;
-                                               _tmp60_ = g_strdup_printf ("%s%s", _tmp58_, _tmp59_);
-                                               _tmp61_ = _tmp60_;
-                                               _g_free0 (_tmp58_);
-                                               result = _tmp61_;
+                                       _tmp57_ = m;
+                                       _tmp58_ = vala_symbol_get_name ((ValaSymbol*) _tmp57_);
+                                       _tmp59_ = _tmp58_;
+                                       if (g_strcmp0 (_tmp59_, ".new") == 0) {
+                                               ValaCreationMethod* _tmp60_ = NULL;
+                                               ValaSymbol* _tmp61_ = NULL;
+                                               ValaSymbol* _tmp62_ = NULL;
+                                               gchar* _tmp63_ = NULL;
+                                               gchar* _tmp64_ = NULL;
+                                               const gchar* _tmp65_ = NULL;
+                                               gchar* _tmp66_ = NULL;
+                                               gchar* _tmp67_ = NULL;
+                                               _tmp60_ = m;
+                                               _tmp61_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp60_);
+                                               _tmp62_ = _tmp61_;
+                                               _tmp63_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp62_);
+                                               _tmp64_ = _tmp63_;
+                                               _tmp65_ = infix;
+                                               _tmp66_ = g_strdup_printf ("%s%s", _tmp64_, _tmp65_);
+                                               _tmp67_ = _tmp66_;
+                                               _g_free0 (_tmp64_);
+                                               result = _tmp67_;
                                                _g_free0 (infix);
                                                _vala_code_node_unref0 (m);
                                                _vala_code_node_unref0 (sym);
                                                return result;
                                        } else {
-                                               ValaCreationMethod* _tmp62_ = NULL;
-                                               ValaSymbol* _tmp63_ = NULL;
-                                               ValaSymbol* _tmp64_ = NULL;
-                                               gchar* _tmp65_ = NULL;
-                                               gchar* _tmp66_ = NULL;
-                                               const gchar* _tmp67_ = NULL;
                                                ValaCreationMethod* _tmp68_ = NULL;
-                                               const gchar* _tmp69_ = NULL;
-                                               const gchar* _tmp70_ = NULL;
+                                               ValaSymbol* _tmp69_ = NULL;
+                                               ValaSymbol* _tmp70_ = NULL;
                                                gchar* _tmp71_ = NULL;
                                                gchar* _tmp72_ = NULL;
-                                               _tmp62_ = m;
-                                               _tmp63_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp62_);
-                                               _tmp64_ = _tmp63_;
-                                               _tmp65_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp64_);
-                                               _tmp66_ = _tmp65_;
-                                               _tmp67_ = infix;
+                                               const gchar* _tmp73_ = NULL;
+                                               ValaCreationMethod* _tmp74_ = NULL;
+                                               const gchar* _tmp75_ = NULL;
+                                               const gchar* _tmp76_ = NULL;
+                                               gchar* _tmp77_ = NULL;
+                                               gchar* _tmp78_ = NULL;
                                                _tmp68_ = m;
-                                               _tmp69_ = vala_symbol_get_name ((ValaSymbol*) _tmp68_);
+                                               _tmp69_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp68_);
                                                _tmp70_ = _tmp69_;
-                                               _tmp71_ = g_strdup_printf ("%s%s_%s", _tmp66_, _tmp67_, _tmp70_);
+                                               _tmp71_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp70_);
                                                _tmp72_ = _tmp71_;
-                                               _g_free0 (_tmp66_);
-                                               result = _tmp72_;
+                                               _tmp73_ = infix;
+                                               _tmp74_ = m;
+                                               _tmp75_ = vala_symbol_get_name ((ValaSymbol*) _tmp74_);
+                                               _tmp76_ = _tmp75_;
+                                               _tmp77_ = g_strdup_printf ("%s%s_%s", _tmp72_, _tmp73_, _tmp76_);
+                                               _tmp78_ = _tmp77_;
+                                               _g_free0 (_tmp72_);
+                                               result = _tmp78_;
                                                _g_free0 (infix);
                                                _vala_code_node_unref0 (m);
                                                _vala_code_node_unref0 (sym);
@@ -638,152 +670,152 @@ static gchar* vala_ccode_attribute_get_default_name (ValaCCodeAttribute* self) {
                                        _g_free0 (infix);
                                        _vala_code_node_unref0 (m);
                                } else {
-                                       ValaSymbol* _tmp73_ = NULL;
-                                       _tmp73_ = sym;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp73_, VALA_TYPE_DYNAMIC_METHOD)) {
-                                               ValaSymbol* _tmp74_ = NULL;
-                                               const gchar* _tmp75_ = NULL;
-                                               const gchar* _tmp76_ = NULL;
-                                               gint _tmp77_ = 0;
-                                               gchar* _tmp78_ = NULL;
-                                               _tmp74_ = sym;
-                                               _tmp75_ = vala_symbol_get_name (_tmp74_);
-                                               _tmp76_ = _tmp75_;
-                                               _tmp77_ = vala_ccode_attribute_dynamic_method_id;
-                                               vala_ccode_attribute_dynamic_method_id = _tmp77_ + 1;
-                                               _tmp78_ = g_strdup_printf ("_dynamic_%s%d", _tmp76_, _tmp77_);
-                                               result = _tmp78_;
+                                       ValaSymbol* _tmp79_ = NULL;
+                                       _tmp79_ = sym;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp79_, VALA_TYPE_DYNAMIC_METHOD)) {
+                                               ValaSymbol* _tmp80_ = NULL;
+                                               const gchar* _tmp81_ = NULL;
+                                               const gchar* _tmp82_ = NULL;
+                                               gint _tmp83_ = 0;
+                                               gchar* _tmp84_ = NULL;
+                                               _tmp80_ = sym;
+                                               _tmp81_ = vala_symbol_get_name (_tmp80_);
+                                               _tmp82_ = _tmp81_;
+                                               _tmp83_ = vala_ccode_attribute_dynamic_method_id;
+                                               vala_ccode_attribute_dynamic_method_id = _tmp83_ + 1;
+                                               _tmp84_ = g_strdup_printf ("_dynamic_%s%d", _tmp82_, _tmp83_);
+                                               result = _tmp84_;
                                                _vala_code_node_unref0 (sym);
                                                return result;
                                        } else {
-                                               ValaSymbol* _tmp79_ = NULL;
-                                               _tmp79_ = sym;
-                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp79_, VALA_TYPE_METHOD)) {
+                                               ValaSymbol* _tmp85_ = NULL;
+                                               _tmp85_ = sym;
+                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp85_, VALA_TYPE_METHOD)) {
                                                        ValaMethod* m = NULL;
-                                                       ValaSymbol* _tmp80_ = NULL;
-                                                       ValaMethod* _tmp81_ = NULL;
-                                                       ValaMethod* _tmp82_ = NULL;
-                                                       gboolean _tmp83_ = FALSE;
-                                                       gboolean _tmp84_ = FALSE;
-                                                       gboolean _tmp92_ = FALSE;
-                                                       ValaSymbol* _tmp93_ = NULL;
-                                                       const gchar* _tmp94_ = NULL;
-                                                       const gchar* _tmp95_ = NULL;
-                                                       _tmp80_ = sym;
-                                                       _tmp81_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp80_, VALA_TYPE_METHOD, ValaMethod));
-                                                       m = _tmp81_;
-                                                       _tmp82_ = m;
-                                                       _tmp83_ = vala_method_get_is_async_callback (_tmp82_);
-                                                       _tmp84_ = _tmp83_;
-                                                       if (_tmp84_) {
-                                                               ValaMethod* _tmp85_ = NULL;
-                                                               ValaSymbol* _tmp86_ = NULL;
-                                                               ValaSymbol* _tmp87_ = NULL;
-                                                               gchar* _tmp88_ = NULL;
-                                                               gchar* _tmp89_ = NULL;
-                                                               gchar* _tmp90_ = NULL;
-                                                               gchar* _tmp91_ = NULL;
-                                                               _tmp85_ = m;
-                                                               _tmp86_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp85_);
-                                                               _tmp87_ = _tmp86_;
-                                                               _tmp88_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) G_TYPE_CHECK_INSTANCE_CAST (_tmp87_, VALA_TYPE_METHOD, ValaMethod));
-                                                               _tmp89_ = _tmp88_;
-                                                               _tmp90_ = g_strdup_printf ("%s_co", _tmp89_);
-                                                               _tmp91_ = _tmp90_;
-                                                               _g_free0 (_tmp89_);
-                                                               result = _tmp91_;
+                                                       ValaSymbol* _tmp86_ = NULL;
+                                                       ValaMethod* _tmp87_ = NULL;
+                                                       ValaMethod* _tmp88_ = NULL;
+                                                       gboolean _tmp89_ = FALSE;
+                                                       gboolean _tmp90_ = FALSE;
+                                                       gboolean _tmp98_ = FALSE;
+                                                       ValaSymbol* _tmp99_ = NULL;
+                                                       const gchar* _tmp100_ = NULL;
+                                                       const gchar* _tmp101_ = NULL;
+                                                       _tmp86_ = sym;
+                                                       _tmp87_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp86_, VALA_TYPE_METHOD, ValaMethod));
+                                                       m = _tmp87_;
+                                                       _tmp88_ = m;
+                                                       _tmp89_ = vala_method_get_is_async_callback (_tmp88_);
+                                                       _tmp90_ = _tmp89_;
+                                                       if (_tmp90_) {
+                                                               ValaMethod* _tmp91_ = NULL;
+                                                               ValaSymbol* _tmp92_ = NULL;
+                                                               ValaSymbol* _tmp93_ = NULL;
+                                                               gchar* _tmp94_ = NULL;
+                                                               gchar* _tmp95_ = NULL;
+                                                               gchar* _tmp96_ = NULL;
+                                                               gchar* _tmp97_ = NULL;
+                                                               _tmp91_ = m;
+                                                               _tmp92_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp91_);
+                                                               _tmp93_ = _tmp92_;
+                                                               _tmp94_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) G_TYPE_CHECK_INSTANCE_CAST (_tmp93_, VALA_TYPE_METHOD, ValaMethod));
+                                                               _tmp95_ = _tmp94_;
+                                                               _tmp96_ = g_strdup_printf ("%s_co", _tmp95_);
+                                                               _tmp97_ = _tmp96_;
+                                                               _g_free0 (_tmp95_);
+                                                               result = _tmp97_;
                                                                _vala_code_node_unref0 (m);
                                                                _vala_code_node_unref0 (sym);
                                                                return result;
                                                        }
-                                                       _tmp93_ = sym;
-                                                       _tmp94_ = vala_symbol_get_name (_tmp93_);
-                                                       _tmp95_ = _tmp94_;
-                                                       if (g_strcmp0 (_tmp95_, "main") == 0) {
-                                                               ValaSymbol* _tmp96_ = NULL;
-                                                               ValaSymbol* _tmp97_ = NULL;
-                                                               ValaSymbol* _tmp98_ = NULL;
-                                                               const gchar* _tmp99_ = NULL;
-                                                               const gchar* _tmp100_ = NULL;
-                                                               _tmp96_ = sym;
-                                                               _tmp97_ = vala_symbol_get_parent_symbol (_tmp96_);
-                                                               _tmp98_ = _tmp97_;
-                                                               _tmp99_ = vala_symbol_get_name (_tmp98_);
-                                                               _tmp100_ = _tmp99_;
-                                                               _tmp92_ = _tmp100_ == NULL;
+                                                       _tmp99_ = sym;
+                                                       _tmp100_ = vala_symbol_get_name (_tmp99_);
+                                                       _tmp101_ = _tmp100_;
+                                                       if (g_strcmp0 (_tmp101_, "main") == 0) {
+                                                               ValaSymbol* _tmp102_ = NULL;
+                                                               ValaSymbol* _tmp103_ = NULL;
+                                                               ValaSymbol* _tmp104_ = NULL;
+                                                               const gchar* _tmp105_ = NULL;
+                                                               const gchar* _tmp106_ = NULL;
+                                                               _tmp102_ = sym;
+                                                               _tmp103_ = vala_symbol_get_parent_symbol (_tmp102_);
+                                                               _tmp104_ = _tmp103_;
+                                                               _tmp105_ = vala_symbol_get_name (_tmp104_);
+                                                               _tmp106_ = _tmp105_;
+                                                               _tmp98_ = _tmp106_ == NULL;
                                                        } else {
-                                                               _tmp92_ = FALSE;
+                                                               _tmp98_ = FALSE;
                                                        }
-                                                       if (_tmp92_) {
-                                                               gchar* _tmp101_ = NULL;
-                                                               _tmp101_ = g_strdup ("_vala_main");
-                                                               result = _tmp101_;
+                                                       if (_tmp98_) {
+                                                               gchar* _tmp107_ = NULL;
+                                                               _tmp107_ = g_strdup ("_vala_main");
+                                                               result = _tmp107_;
                                                                _vala_code_node_unref0 (m);
                                                                _vala_code_node_unref0 (sym);
                                                                return result;
                                                        } else {
-                                                               ValaSymbol* _tmp102_ = NULL;
-                                                               const gchar* _tmp103_ = NULL;
-                                                               const gchar* _tmp104_ = NULL;
-                                                               gboolean _tmp105_ = FALSE;
-                                                               _tmp102_ = sym;
-                                                               _tmp103_ = vala_symbol_get_name (_tmp102_);
-                                                               _tmp104_ = _tmp103_;
-                                                               _tmp105_ = g_str_has_prefix (_tmp104_, "_");
-                                                               if (_tmp105_) {
-                                                                       ValaSymbol* _tmp106_ = NULL;
-                                                                       ValaSymbol* _tmp107_ = NULL;
-                                                                       ValaSymbol* _tmp108_ = NULL;
-                                                                       gchar* _tmp109_ = NULL;
-                                                                       gchar* _tmp110_ = NULL;
-                                                                       ValaSymbol* _tmp111_ = NULL;
-                                                                       const gchar* _tmp112_ = NULL;
-                                                                       const gchar* _tmp113_ = NULL;
-                                                                       gchar* _tmp114_ = NULL;
+                                                               ValaSymbol* _tmp108_ = NULL;
+                                                               const gchar* _tmp109_ = NULL;
+                                                               const gchar* _tmp110_ = NULL;
+                                                               gboolean _tmp111_ = FALSE;
+                                                               _tmp108_ = sym;
+                                                               _tmp109_ = vala_symbol_get_name (_tmp108_);
+                                                               _tmp110_ = _tmp109_;
+                                                               _tmp111_ = g_str_has_prefix (_tmp110_, "_");
+                                                               if (_tmp111_) {
+                                                                       ValaSymbol* _tmp112_ = NULL;
+                                                                       ValaSymbol* _tmp113_ = NULL;
+                                                                       ValaSymbol* _tmp114_ = NULL;
                                                                        gchar* _tmp115_ = NULL;
                                                                        gchar* _tmp116_ = NULL;
-                                                                       gchar* _tmp117_ = NULL;
-                                                                       _tmp106_ = sym;
-                                                                       _tmp107_ = vala_symbol_get_parent_symbol (_tmp106_);
-                                                                       _tmp108_ = _tmp107_;
-                                                                       _tmp109_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp108_);
-                                                                       _tmp110_ = _tmp109_;
-                                                                       _tmp111_ = sym;
-                                                                       _tmp112_ = vala_symbol_get_name (_tmp111_);
-                                                                       _tmp113_ = _tmp112_;
-                                                                       _tmp114_ = string_substring (_tmp113_, (glong) 1, (glong) (-1));
-                                                                       _tmp115_ = _tmp114_;
-                                                                       _tmp116_ = g_strdup_printf ("_%s%s", _tmp110_, _tmp115_);
-                                                                       _tmp117_ = _tmp116_;
-                                                                       _g_free0 (_tmp115_);
-                                                                       _g_free0 (_tmp110_);
-                                                                       result = _tmp117_;
+                                                                       ValaSymbol* _tmp117_ = NULL;
+                                                                       const gchar* _tmp118_ = NULL;
+                                                                       const gchar* _tmp119_ = NULL;
+                                                                       gchar* _tmp120_ = NULL;
+                                                                       gchar* _tmp121_ = NULL;
+                                                                       gchar* _tmp122_ = NULL;
+                                                                       gchar* _tmp123_ = NULL;
+                                                                       _tmp112_ = sym;
+                                                                       _tmp113_ = vala_symbol_get_parent_symbol (_tmp112_);
+                                                                       _tmp114_ = _tmp113_;
+                                                                       _tmp115_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp114_);
+                                                                       _tmp116_ = _tmp115_;
+                                                                       _tmp117_ = sym;
+                                                                       _tmp118_ = vala_symbol_get_name (_tmp117_);
+                                                                       _tmp119_ = _tmp118_;
+                                                                       _tmp120_ = string_substring (_tmp119_, (glong) 1, (glong) (-1));
+                                                                       _tmp121_ = _tmp120_;
+                                                                       _tmp122_ = g_strdup_printf ("_%s%s", _tmp116_, _tmp121_);
+                                                                       _tmp123_ = _tmp122_;
+                                                                       _g_free0 (_tmp121_);
+                                                                       _g_free0 (_tmp116_);
+                                                                       result = _tmp123_;
                                                                        _vala_code_node_unref0 (m);
                                                                        _vala_code_node_unref0 (sym);
                                                                        return result;
                                                                } else {
-                                                                       ValaSymbol* _tmp118_ = NULL;
-                                                                       ValaSymbol* _tmp119_ = NULL;
-                                                                       ValaSymbol* _tmp120_ = NULL;
-                                                                       gchar* _tmp121_ = NULL;
-                                                                       gchar* _tmp122_ = NULL;
-                                                                       ValaSymbol* _tmp123_ = NULL;
-                                                                       const gchar* _tmp124_ = NULL;
-                                                                       const gchar* _tmp125_ = NULL;
-                                                                       gchar* _tmp126_ = NULL;
+                                                                       ValaSymbol* _tmp124_ = NULL;
+                                                                       ValaSymbol* _tmp125_ = NULL;
+                                                                       ValaSymbol* _tmp126_ = NULL;
                                                                        gchar* _tmp127_ = NULL;
-                                                                       _tmp118_ = sym;
-                                                                       _tmp119_ = vala_symbol_get_parent_symbol (_tmp118_);
-                                                                       _tmp120_ = _tmp119_;
-                                                                       _tmp121_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp120_);
-                                                                       _tmp122_ = _tmp121_;
-                                                                       _tmp123_ = sym;
-                                                                       _tmp124_ = vala_symbol_get_name (_tmp123_);
-                                                                       _tmp125_ = _tmp124_;
-                                                                       _tmp126_ = g_strdup_printf ("%s%s", _tmp122_, _tmp125_);
-                                                                       _tmp127_ = _tmp126_;
-                                                                       _g_free0 (_tmp122_);
-                                                                       result = _tmp127_;
+                                                                       gchar* _tmp128_ = NULL;
+                                                                       ValaSymbol* _tmp129_ = NULL;
+                                                                       const gchar* _tmp130_ = NULL;
+                                                                       const gchar* _tmp131_ = NULL;
+                                                                       gchar* _tmp132_ = NULL;
+                                                                       gchar* _tmp133_ = NULL;
+                                                                       _tmp124_ = sym;
+                                                                       _tmp125_ = vala_symbol_get_parent_symbol (_tmp124_);
+                                                                       _tmp126_ = _tmp125_;
+                                                                       _tmp127_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp126_);
+                                                                       _tmp128_ = _tmp127_;
+                                                                       _tmp129_ = sym;
+                                                                       _tmp130_ = vala_symbol_get_name (_tmp129_);
+                                                                       _tmp131_ = _tmp130_;
+                                                                       _tmp132_ = g_strdup_printf ("%s%s", _tmp128_, _tmp131_);
+                                                                       _tmp133_ = _tmp132_;
+                                                                       _g_free0 (_tmp128_);
+                                                                       result = _tmp133_;
                                                                        _vala_code_node_unref0 (m);
                                                                        _vala_code_node_unref0 (sym);
                                                                        return result;
@@ -791,85 +823,85 @@ static gchar* vala_ccode_attribute_get_default_name (ValaCCodeAttribute* self) {
                                                        }
                                                        _vala_code_node_unref0 (m);
                                                } else {
-                                                       ValaSymbol* _tmp128_ = NULL;
-                                                       _tmp128_ = sym;
-                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp128_, VALA_TYPE_PROPERTY_ACCESSOR)) {
+                                                       ValaSymbol* _tmp134_ = NULL;
+                                                       _tmp134_ = sym;
+                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp134_, VALA_TYPE_PROPERTY_ACCESSOR)) {
                                                                ValaPropertyAccessor* acc = NULL;
-                                                               ValaSymbol* _tmp129_ = NULL;
-                                                               ValaPropertyAccessor* _tmp130_ = NULL;
-                                                               ValaTypeSymbol* t = NULL;
-                                                               ValaPropertyAccessor* _tmp131_ = NULL;
-                                                               ValaProperty* _tmp132_ = NULL;
-                                                               ValaProperty* _tmp133_ = NULL;
-                                                               ValaSymbol* _tmp134_ = NULL;
                                                                ValaSymbol* _tmp135_ = NULL;
-                                                               ValaTypeSymbol* _tmp136_ = NULL;
+                                                               ValaPropertyAccessor* _tmp136_ = NULL;
+                                                               ValaTypeSymbol* t = NULL;
                                                                ValaPropertyAccessor* _tmp137_ = NULL;
-                                                               gboolean _tmp138_ = FALSE;
-                                                               gboolean _tmp139_ = FALSE;
-                                                               _tmp129_ = sym;
-                                                               _tmp130_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp129_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
-                                                               acc = _tmp130_;
-                                                               _tmp131_ = acc;
-                                                               _tmp132_ = vala_property_accessor_get_prop (_tmp131_);
-                                                               _tmp133_ = _tmp132_;
-                                                               _tmp134_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp133_);
-                                                               _tmp135_ = _tmp134_;
-                                                               _tmp136_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp135_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
-                                                               t = _tmp136_;
+                                                               ValaProperty* _tmp138_ = NULL;
+                                                               ValaProperty* _tmp139_ = NULL;
+                                                               ValaSymbol* _tmp140_ = NULL;
+                                                               ValaSymbol* _tmp141_ = NULL;
+                                                               ValaTypeSymbol* _tmp142_ = NULL;
+                                                               ValaPropertyAccessor* _tmp143_ = NULL;
+                                                               gboolean _tmp144_ = FALSE;
+                                                               gboolean _tmp145_ = FALSE;
+                                                               _tmp135_ = sym;
+                                                               _tmp136_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp135_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
+                                                               acc = _tmp136_;
                                                                _tmp137_ = acc;
-                                                               _tmp138_ = vala_property_accessor_get_readable (_tmp137_);
+                                                               _tmp138_ = vala_property_accessor_get_prop (_tmp137_);
                                                                _tmp139_ = _tmp138_;
-                                                               if (_tmp139_) {
-                                                                       ValaTypeSymbol* _tmp140_ = NULL;
-                                                                       gchar* _tmp141_ = NULL;
-                                                                       gchar* _tmp142_ = NULL;
-                                                                       ValaPropertyAccessor* _tmp143_ = NULL;
-                                                                       ValaProperty* _tmp144_ = NULL;
-                                                                       ValaProperty* _tmp145_ = NULL;
-                                                                       const gchar* _tmp146_ = NULL;
-                                                                       const gchar* _tmp147_ = NULL;
+                                                               _tmp140_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp139_);
+                                                               _tmp141_ = _tmp140_;
+                                                               _tmp142_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp141_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+                                                               t = _tmp142_;
+                                                               _tmp143_ = acc;
+                                                               _tmp144_ = vala_property_accessor_get_readable (_tmp143_);
+                                                               _tmp145_ = _tmp144_;
+                                                               if (_tmp145_) {
+                                                                       ValaTypeSymbol* _tmp146_ = NULL;
+                                                                       gchar* _tmp147_ = NULL;
                                                                        gchar* _tmp148_ = NULL;
-                                                                       gchar* _tmp149_ = NULL;
-                                                                       _tmp140_ = t;
-                                                                       _tmp141_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp140_);
-                                                                       _tmp142_ = _tmp141_;
-                                                                       _tmp143_ = acc;
-                                                                       _tmp144_ = vala_property_accessor_get_prop (_tmp143_);
-                                                                       _tmp145_ = _tmp144_;
-                                                                       _tmp146_ = vala_symbol_get_name ((ValaSymbol*) _tmp145_);
-                                                                       _tmp147_ = _tmp146_;
-                                                                       _tmp148_ = g_strdup_printf ("%sget_%s", _tmp142_, _tmp147_);
-                                                                       _tmp149_ = _tmp148_;
-                                                                       _g_free0 (_tmp142_);
-                                                                       result = _tmp149_;
+                                                                       ValaPropertyAccessor* _tmp149_ = NULL;
+                                                                       ValaProperty* _tmp150_ = NULL;
+                                                                       ValaProperty* _tmp151_ = NULL;
+                                                                       const gchar* _tmp152_ = NULL;
+                                                                       const gchar* _tmp153_ = NULL;
+                                                                       gchar* _tmp154_ = NULL;
+                                                                       gchar* _tmp155_ = NULL;
+                                                                       _tmp146_ = t;
+                                                                       _tmp147_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp146_);
+                                                                       _tmp148_ = _tmp147_;
+                                                                       _tmp149_ = acc;
+                                                                       _tmp150_ = vala_property_accessor_get_prop (_tmp149_);
+                                                                       _tmp151_ = _tmp150_;
+                                                                       _tmp152_ = vala_symbol_get_name ((ValaSymbol*) _tmp151_);
+                                                                       _tmp153_ = _tmp152_;
+                                                                       _tmp154_ = g_strdup_printf ("%sget_%s", _tmp148_, _tmp153_);
+                                                                       _tmp155_ = _tmp154_;
+                                                                       _g_free0 (_tmp148_);
+                                                                       result = _tmp155_;
                                                                        _vala_code_node_unref0 (t);
                                                                        _vala_code_node_unref0 (acc);
                                                                        _vala_code_node_unref0 (sym);
                                                                        return result;
                                                                } else {
-                                                                       ValaTypeSymbol* _tmp150_ = NULL;
-                                                                       gchar* _tmp151_ = NULL;
-                                                                       gchar* _tmp152_ = NULL;
-                                                                       ValaPropertyAccessor* _tmp153_ = NULL;
-                                                                       ValaProperty* _tmp154_ = NULL;
-                                                                       ValaProperty* _tmp155_ = NULL;
-                                                                       const gchar* _tmp156_ = NULL;
-                                                                       const gchar* _tmp157_ = NULL;
+                                                                       ValaTypeSymbol* _tmp156_ = NULL;
+                                                                       gchar* _tmp157_ = NULL;
                                                                        gchar* _tmp158_ = NULL;
-                                                                       gchar* _tmp159_ = NULL;
-                                                                       _tmp150_ = t;
-                                                                       _tmp151_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp150_);
-                                                                       _tmp152_ = _tmp151_;
-                                                                       _tmp153_ = acc;
-                                                                       _tmp154_ = vala_property_accessor_get_prop (_tmp153_);
-                                                                       _tmp155_ = _tmp154_;
-                                                                       _tmp156_ = vala_symbol_get_name ((ValaSymbol*) _tmp155_);
-                                                                       _tmp157_ = _tmp156_;
-                                                                       _tmp158_ = g_strdup_printf ("%sset_%s", _tmp152_, _tmp157_);
-                                                                       _tmp159_ = _tmp158_;
-                                                                       _g_free0 (_tmp152_);
-                                                                       result = _tmp159_;
+                                                                       ValaPropertyAccessor* _tmp159_ = NULL;
+                                                                       ValaProperty* _tmp160_ = NULL;
+                                                                       ValaProperty* _tmp161_ = NULL;
+                                                                       const gchar* _tmp162_ = NULL;
+                                                                       const gchar* _tmp163_ = NULL;
+                                                                       gchar* _tmp164_ = NULL;
+                                                                       gchar* _tmp165_ = NULL;
+                                                                       _tmp156_ = t;
+                                                                       _tmp157_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp156_);
+                                                                       _tmp158_ = _tmp157_;
+                                                                       _tmp159_ = acc;
+                                                                       _tmp160_ = vala_property_accessor_get_prop (_tmp159_);
+                                                                       _tmp161_ = _tmp160_;
+                                                                       _tmp162_ = vala_symbol_get_name ((ValaSymbol*) _tmp161_);
+                                                                       _tmp163_ = _tmp162_;
+                                                                       _tmp164_ = g_strdup_printf ("%sset_%s", _tmp158_, _tmp163_);
+                                                                       _tmp165_ = _tmp164_;
+                                                                       _g_free0 (_tmp158_);
+                                                                       result = _tmp165_;
                                                                        _vala_code_node_unref0 (t);
                                                                        _vala_code_node_unref0 (acc);
                                                                        _vala_code_node_unref0 (sym);
@@ -878,66 +910,66 @@ static gchar* vala_ccode_attribute_get_default_name (ValaCCodeAttribute* self) {
                                                                _vala_code_node_unref0 (t);
                                                                _vala_code_node_unref0 (acc);
                                                        } else {
-                                                               ValaSymbol* _tmp160_ = NULL;
-                                                               _tmp160_ = sym;
-                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp160_, VALA_TYPE_SIGNAL)) {
-                                                                       ValaSymbol* _tmp161_ = NULL;
-                                                                       const gchar* _tmp162_ = NULL;
-                                                                       const gchar* _tmp163_ = NULL;
-                                                                       gchar* _tmp164_ = NULL;
-                                                                       _tmp161_ = sym;
-                                                                       _tmp162_ = vala_symbol_get_name (_tmp161_);
-                                                                       _tmp163_ = _tmp162_;
-                                                                       _tmp164_ = vala_symbol_camel_case_to_lower_case (_tmp163_);
-                                                                       result = _tmp164_;
+                                                               ValaSymbol* _tmp166_ = NULL;
+                                                               _tmp166_ = sym;
+                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp166_, VALA_TYPE_SIGNAL)) {
+                                                                       ValaSymbol* _tmp167_ = NULL;
+                                                                       const gchar* _tmp168_ = NULL;
+                                                                       const gchar* _tmp169_ = NULL;
+                                                                       gchar* _tmp170_ = NULL;
+                                                                       _tmp167_ = sym;
+                                                                       _tmp168_ = vala_symbol_get_name (_tmp167_);
+                                                                       _tmp169_ = _tmp168_;
+                                                                       _tmp170_ = vala_symbol_camel_case_to_lower_case (_tmp169_);
+                                                                       result = _tmp170_;
                                                                        _vala_code_node_unref0 (sym);
                                                                        return result;
                                                                } else {
-                                                                       gboolean _tmp165_ = FALSE;
-                                                                       ValaSymbol* _tmp166_ = NULL;
-                                                                       _tmp166_ = sym;
-                                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp166_, VALA_TYPE_LOCAL_VARIABLE)) {
-                                                                               _tmp165_ = TRUE;
+                                                                       gboolean _tmp171_ = FALSE;
+                                                                       ValaSymbol* _tmp172_ = NULL;
+                                                                       _tmp172_ = sym;
+                                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp172_, VALA_TYPE_LOCAL_VARIABLE)) {
+                                                                               _tmp171_ = TRUE;
                                                                        } else {
-                                                                               ValaSymbol* _tmp167_ = NULL;
-                                                                               _tmp167_ = sym;
-                                                                               _tmp165_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp167_, VALA_TYPE_PARAMETER);
+                                                                               ValaSymbol* _tmp173_ = NULL;
+                                                                               _tmp173_ = sym;
+                                                                               _tmp171_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp173_, VALA_TYPE_PARAMETER);
                                                                        }
-                                                                       if (_tmp165_) {
-                                                                               ValaSymbol* _tmp168_ = NULL;
-                                                                               const gchar* _tmp169_ = NULL;
-                                                                               const gchar* _tmp170_ = NULL;
-                                                                               gchar* _tmp171_ = NULL;
-                                                                               _tmp168_ = sym;
-                                                                               _tmp169_ = vala_symbol_get_name (_tmp168_);
-                                                                               _tmp170_ = _tmp169_;
-                                                                               _tmp171_ = g_strdup (_tmp170_);
-                                                                               result = _tmp171_;
+                                                                       if (_tmp171_) {
+                                                                               ValaSymbol* _tmp174_ = NULL;
+                                                                               const gchar* _tmp175_ = NULL;
+                                                                               const gchar* _tmp176_ = NULL;
+                                                                               gchar* _tmp177_ = NULL;
+                                                                               _tmp174_ = sym;
+                                                                               _tmp175_ = vala_symbol_get_name (_tmp174_);
+                                                                               _tmp176_ = _tmp175_;
+                                                                               _tmp177_ = g_strdup (_tmp176_);
+                                                                               result = _tmp177_;
                                                                                _vala_code_node_unref0 (sym);
                                                                                return result;
                                                                        } else {
-                                                                               ValaSymbol* _tmp172_ = NULL;
-                                                                               ValaSymbol* _tmp173_ = NULL;
-                                                                               ValaSymbol* _tmp174_ = NULL;
-                                                                               gchar* _tmp175_ = NULL;
-                                                                               gchar* _tmp176_ = NULL;
-                                                                               ValaSymbol* _tmp177_ = NULL;
-                                                                               const gchar* _tmp178_ = NULL;
-                                                                               const gchar* _tmp179_ = NULL;
-                                                                               gchar* _tmp180_ = NULL;
+                                                                               ValaSymbol* _tmp178_ = NULL;
+                                                                               ValaSymbol* _tmp179_ = NULL;
+                                                                               ValaSymbol* _tmp180_ = NULL;
                                                                                gchar* _tmp181_ = NULL;
-                                                                               _tmp172_ = sym;
-                                                                               _tmp173_ = vala_symbol_get_parent_symbol (_tmp172_);
-                                                                               _tmp174_ = _tmp173_;
-                                                                               _tmp175_ = vala_ccode_base_module_get_ccode_prefix (_tmp174_);
-                                                                               _tmp176_ = _tmp175_;
-                                                                               _tmp177_ = sym;
-                                                                               _tmp178_ = vala_symbol_get_name (_tmp177_);
-                                                                               _tmp179_ = _tmp178_;
-                                                                               _tmp180_ = g_strdup_printf ("%s%s", _tmp176_, _tmp179_);
-                                                                               _tmp181_ = _tmp180_;
-                                                                               _g_free0 (_tmp176_);
-                                                                               result = _tmp181_;
+                                                                               gchar* _tmp182_ = NULL;
+                                                                               ValaSymbol* _tmp183_ = NULL;
+                                                                               const gchar* _tmp184_ = NULL;
+                                                                               const gchar* _tmp185_ = NULL;
+                                                                               gchar* _tmp186_ = NULL;
+                                                                               gchar* _tmp187_ = NULL;
+                                                                               _tmp178_ = sym;
+                                                                               _tmp179_ = vala_symbol_get_parent_symbol (_tmp178_);
+                                                                               _tmp180_ = _tmp179_;
+                                                                               _tmp181_ = vala_ccode_base_module_get_ccode_prefix (_tmp180_);
+                                                                               _tmp182_ = _tmp181_;
+                                                                               _tmp183_ = sym;
+                                                                               _tmp184_ = vala_symbol_get_name (_tmp183_);
+                                                                               _tmp185_ = _tmp184_;
+                                                                               _tmp186_ = g_strdup_printf ("%s%s", _tmp182_, _tmp185_);
+                                                                               _tmp187_ = _tmp186_;
+                                                                               _g_free0 (_tmp182_);
+                                                                               result = _tmp187_;
                                                                                _vala_code_node_unref0 (sym);
                                                                                return result;
                                                                        }
@@ -949,91 +981,91 @@ static gchar* vala_ccode_attribute_get_default_name (ValaCCodeAttribute* self) {
                        }
                }
        } else {
-               ValaCodeNode* _tmp182_ = NULL;
-               _tmp182_ = self->priv->node;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp182_, VALA_TYPE_OBJECT_TYPE)) {
+               ValaCodeNode* _tmp188_ = NULL;
+               _tmp188_ = self->priv->node;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp188_, VALA_TYPE_OBJECT_TYPE)) {
                        ValaObjectType* type = NULL;
-                       ValaCodeNode* _tmp183_ = NULL;
-                       ValaObjectType* _tmp184_ = NULL;
+                       ValaCodeNode* _tmp189_ = NULL;
+                       ValaObjectType* _tmp190_ = NULL;
                        gchar* cname = NULL;
-                       ValaObjectType* _tmp185_ = NULL;
-                       gboolean _tmp186_ = FALSE;
-                       gboolean _tmp187_ = FALSE;
-                       const gchar* _tmp196_ = NULL;
-                       gchar* _tmp197_ = NULL;
-                       _tmp183_ = self->priv->node;
-                       _tmp184_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp183_, VALA_TYPE_OBJECT_TYPE, ValaObjectType));
-                       type = _tmp184_;
-                       _tmp185_ = type;
-                       _tmp186_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp185_);
-                       _tmp187_ = _tmp186_;
-                       if (!_tmp187_) {
-                               ValaObjectType* _tmp188_ = NULL;
-                               ValaObjectTypeSymbol* _tmp189_ = NULL;
-                               ValaObjectTypeSymbol* _tmp190_ = NULL;
-                               gchar* _tmp191_ = NULL;
-                               _tmp188_ = type;
-                               _tmp189_ = vala_object_type_get_type_symbol (_tmp188_);
-                               _tmp190_ = _tmp189_;
-                               _tmp191_ = vala_ccode_base_module_get_ccode_const_name ((ValaCodeNode*) _tmp190_);
+                       ValaObjectType* _tmp191_ = NULL;
+                       gboolean _tmp192_ = FALSE;
+                       gboolean _tmp193_ = FALSE;
+                       const gchar* _tmp202_ = NULL;
+                       gchar* _tmp203_ = NULL;
+                       _tmp189_ = self->priv->node;
+                       _tmp190_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp189_, VALA_TYPE_OBJECT_TYPE, ValaObjectType));
+                       type = _tmp190_;
+                       _tmp191_ = type;
+                       _tmp192_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp191_);
+                       _tmp193_ = _tmp192_;
+                       if (!_tmp193_) {
+                               ValaObjectType* _tmp194_ = NULL;
+                               ValaObjectTypeSymbol* _tmp195_ = NULL;
+                               ValaObjectTypeSymbol* _tmp196_ = NULL;
+                               gchar* _tmp197_ = NULL;
+                               _tmp194_ = type;
+                               _tmp195_ = vala_object_type_get_type_symbol (_tmp194_);
+                               _tmp196_ = _tmp195_;
+                               _tmp197_ = vala_ccode_base_module_get_ccode_const_name ((ValaCodeNode*) _tmp196_);
                                _g_free0 (cname);
-                               cname = _tmp191_;
+                               cname = _tmp197_;
                        } else {
-                               ValaObjectType* _tmp192_ = NULL;
-                               ValaObjectTypeSymbol* _tmp193_ = NULL;
-                               ValaObjectTypeSymbol* _tmp194_ = NULL;
-                               gchar* _tmp195_ = NULL;
-                               _tmp192_ = type;
-                               _tmp193_ = vala_object_type_get_type_symbol (_tmp192_);
-                               _tmp194_ = _tmp193_;
-                               _tmp195_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp194_);
+                               ValaObjectType* _tmp198_ = NULL;
+                               ValaObjectTypeSymbol* _tmp199_ = NULL;
+                               ValaObjectTypeSymbol* _tmp200_ = NULL;
+                               gchar* _tmp201_ = NULL;
+                               _tmp198_ = type;
+                               _tmp199_ = vala_object_type_get_type_symbol (_tmp198_);
+                               _tmp200_ = _tmp199_;
+                               _tmp201_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp200_);
                                _g_free0 (cname);
-                               cname = _tmp195_;
+                               cname = _tmp201_;
                        }
-                       _tmp196_ = cname;
-                       _tmp197_ = g_strdup_printf ("%s*", _tmp196_);
-                       result = _tmp197_;
+                       _tmp202_ = cname;
+                       _tmp203_ = g_strdup_printf ("%s*", _tmp202_);
+                       result = _tmp203_;
                        _g_free0 (cname);
                        _vala_code_node_unref0 (type);
                        _vala_code_node_unref0 (sym);
                        return result;
                } else {
-                       ValaCodeNode* _tmp198_ = NULL;
-                       _tmp198_ = self->priv->node;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp198_, VALA_TYPE_ARRAY_TYPE)) {
+                       ValaCodeNode* _tmp204_ = NULL;
+                       _tmp204_ = self->priv->node;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp204_, VALA_TYPE_ARRAY_TYPE)) {
                                ValaArrayType* type = NULL;
-                               ValaCodeNode* _tmp199_ = NULL;
-                               ValaArrayType* _tmp200_ = NULL;
+                               ValaCodeNode* _tmp205_ = NULL;
+                               ValaArrayType* _tmp206_ = NULL;
                                gchar* cname = NULL;
-                               ValaArrayType* _tmp201_ = NULL;
-                               ValaDataType* _tmp202_ = NULL;
-                               ValaDataType* _tmp203_ = NULL;
-                               gchar* _tmp204_ = NULL;
-                               ValaArrayType* _tmp205_ = NULL;
-                               gboolean _tmp206_ = FALSE;
-                               gboolean _tmp207_ = FALSE;
-                               _tmp199_ = self->priv->node;
-                               _tmp200_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp199_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                               type = _tmp200_;
-                               _tmp201_ = type;
-                               _tmp202_ = vala_array_type_get_element_type (_tmp201_);
-                               _tmp203_ = _tmp202_;
-                               _tmp204_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp203_);
-                               cname = _tmp204_;
-                               _tmp205_ = type;
-                               _tmp206_ = vala_array_type_get_inline_allocated (_tmp205_);
-                               _tmp207_ = _tmp206_;
-                               if (_tmp207_) {
+                               ValaArrayType* _tmp207_ = NULL;
+                               ValaDataType* _tmp208_ = NULL;
+                               ValaDataType* _tmp209_ = NULL;
+                               gchar* _tmp210_ = NULL;
+                               ValaArrayType* _tmp211_ = NULL;
+                               gboolean _tmp212_ = FALSE;
+                               gboolean _tmp213_ = FALSE;
+                               _tmp205_ = self->priv->node;
+                               _tmp206_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp205_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                               type = _tmp206_;
+                               _tmp207_ = type;
+                               _tmp208_ = vala_array_type_get_element_type (_tmp207_);
+                               _tmp209_ = _tmp208_;
+                               _tmp210_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp209_);
+                               cname = _tmp210_;
+                               _tmp211_ = type;
+                               _tmp212_ = vala_array_type_get_inline_allocated (_tmp211_);
+                               _tmp213_ = _tmp212_;
+                               if (_tmp213_) {
                                        result = cname;
                                        _vala_code_node_unref0 (type);
                                        _vala_code_node_unref0 (sym);
                                        return result;
                                } else {
-                                       const gchar* _tmp208_ = NULL;
-                                       gchar* _tmp209_ = NULL;
-                                       _tmp208_ = cname;
-                                       _tmp209_ = g_strdup_printf ("%s*", _tmp208_);
-                                       result = _tmp209_;
+                                       const gchar* _tmp214_ = NULL;
+                                       gchar* _tmp215_ = NULL;
+                                       _tmp214_ = cname;
+                                       _tmp215_ = g_strdup_printf ("%s*", _tmp214_);
+                                       result = _tmp215_;
                                        _g_free0 (cname);
                                        _vala_code_node_unref0 (type);
                                        _vala_code_node_unref0 (sym);
@@ -1042,258 +1074,258 @@ static gchar* vala_ccode_attribute_get_default_name (ValaCCodeAttribute* self) {
                                _g_free0 (cname);
                                _vala_code_node_unref0 (type);
                        } else {
-                               ValaCodeNode* _tmp210_ = NULL;
-                               _tmp210_ = self->priv->node;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp210_, VALA_TYPE_DELEGATE_TYPE)) {
+                               ValaCodeNode* _tmp216_ = NULL;
+                               _tmp216_ = self->priv->node;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp216_, VALA_TYPE_DELEGATE_TYPE)) {
                                        ValaDelegateType* type = NULL;
-                                       ValaCodeNode* _tmp211_ = NULL;
-                                       ValaDelegateType* _tmp212_ = NULL;
-                                       ValaDelegateType* _tmp213_ = NULL;
-                                       ValaDelegate* _tmp214_ = NULL;
-                                       ValaDelegate* _tmp215_ = NULL;
-                                       gchar* _tmp216_ = NULL;
-                                       _tmp211_ = self->priv->node;
-                                       _tmp212_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp211_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                                       type = _tmp212_;
-                                       _tmp213_ = type;
-                                       _tmp214_ = vala_delegate_type_get_delegate_symbol (_tmp213_);
-                                       _tmp215_ = _tmp214_;
-                                       _tmp216_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp215_);
-                                       result = _tmp216_;
+                                       ValaCodeNode* _tmp217_ = NULL;
+                                       ValaDelegateType* _tmp218_ = NULL;
+                                       ValaDelegateType* _tmp219_ = NULL;
+                                       ValaDelegate* _tmp220_ = NULL;
+                                       ValaDelegate* _tmp221_ = NULL;
+                                       gchar* _tmp222_ = NULL;
+                                       _tmp217_ = self->priv->node;
+                                       _tmp218_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp217_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                                       type = _tmp218_;
+                                       _tmp219_ = type;
+                                       _tmp220_ = vala_delegate_type_get_delegate_symbol (_tmp219_);
+                                       _tmp221_ = _tmp220_;
+                                       _tmp222_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp221_);
+                                       result = _tmp222_;
                                        _vala_code_node_unref0 (type);
                                        _vala_code_node_unref0 (sym);
                                        return result;
                                } else {
-                                       ValaCodeNode* _tmp217_ = NULL;
-                                       _tmp217_ = self->priv->node;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp217_, VALA_TYPE_ERROR_TYPE)) {
-                                               gchar* _tmp218_ = NULL;
-                                               _tmp218_ = g_strdup ("GError*");
-                                               result = _tmp218_;
+                                       ValaCodeNode* _tmp223_ = NULL;
+                                       _tmp223_ = self->priv->node;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp223_, VALA_TYPE_ERROR_TYPE)) {
+                                               gchar* _tmp224_ = NULL;
+                                               _tmp224_ = g_strdup ("GError*");
+                                               result = _tmp224_;
                                                _vala_code_node_unref0 (sym);
                                                return result;
                                        } else {
-                                               ValaCodeNode* _tmp219_ = NULL;
-                                               _tmp219_ = self->priv->node;
-                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp219_, VALA_TYPE_GENERIC_TYPE)) {
+                                               ValaCodeNode* _tmp225_ = NULL;
+                                               _tmp225_ = self->priv->node;
+                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp225_, VALA_TYPE_GENERIC_TYPE)) {
                                                        ValaGenericType* type = NULL;
-                                                       ValaCodeNode* _tmp220_ = NULL;
-                                                       ValaGenericType* _tmp221_ = NULL;
-                                                       ValaGenericType* _tmp222_ = NULL;
-                                                       gboolean _tmp223_ = FALSE;
-                                                       gboolean _tmp224_ = FALSE;
-                                                       _tmp220_ = self->priv->node;
-                                                       _tmp221_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp220_, VALA_TYPE_GENERIC_TYPE, ValaGenericType));
-                                                       type = _tmp221_;
-                                                       _tmp222_ = type;
-                                                       _tmp223_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp222_);
-                                                       _tmp224_ = _tmp223_;
-                                                       if (_tmp224_) {
-                                                               gchar* _tmp225_ = NULL;
-                                                               _tmp225_ = g_strdup ("gpointer");
-                                                               result = _tmp225_;
+                                                       ValaCodeNode* _tmp226_ = NULL;
+                                                       ValaGenericType* _tmp227_ = NULL;
+                                                       ValaGenericType* _tmp228_ = NULL;
+                                                       gboolean _tmp229_ = FALSE;
+                                                       gboolean _tmp230_ = FALSE;
+                                                       _tmp226_ = self->priv->node;
+                                                       _tmp227_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp226_, VALA_TYPE_GENERIC_TYPE, ValaGenericType));
+                                                       type = _tmp227_;
+                                                       _tmp228_ = type;
+                                                       _tmp229_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp228_);
+                                                       _tmp230_ = _tmp229_;
+                                                       if (_tmp230_) {
+                                                               gchar* _tmp231_ = NULL;
+                                                               _tmp231_ = g_strdup ("gpointer");
+                                                               result = _tmp231_;
                                                                _vala_code_node_unref0 (type);
                                                                _vala_code_node_unref0 (sym);
                                                                return result;
                                                        } else {
-                                                               gchar* _tmp226_ = NULL;
-                                                               _tmp226_ = g_strdup ("gconstpointer");
-                                                               result = _tmp226_;
+                                                               gchar* _tmp232_ = NULL;
+                                                               _tmp232_ = g_strdup ("gconstpointer");
+                                                               result = _tmp232_;
                                                                _vala_code_node_unref0 (type);
                                                                _vala_code_node_unref0 (sym);
                                                                return result;
                                                        }
                                                        _vala_code_node_unref0 (type);
                                                } else {
-                                                       ValaCodeNode* _tmp227_ = NULL;
-                                                       _tmp227_ = self->priv->node;
-                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp227_, VALA_TYPE_METHOD_TYPE)) {
-                                                               gchar* _tmp228_ = NULL;
-                                                               _tmp228_ = g_strdup ("gpointer");
-                                                               result = _tmp228_;
+                                                       ValaCodeNode* _tmp233_ = NULL;
+                                                       _tmp233_ = self->priv->node;
+                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp233_, VALA_TYPE_METHOD_TYPE)) {
+                                                               gchar* _tmp234_ = NULL;
+                                                               _tmp234_ = g_strdup ("gpointer");
+                                                               result = _tmp234_;
                                                                _vala_code_node_unref0 (sym);
                                                                return result;
                                                        } else {
-                                                               ValaCodeNode* _tmp229_ = NULL;
-                                                               _tmp229_ = self->priv->node;
-                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp229_, VALA_TYPE_NULL_TYPE)) {
-                                                                       gchar* _tmp230_ = NULL;
-                                                                       _tmp230_ = g_strdup ("gpointer");
-                                                                       result = _tmp230_;
+                                                               ValaCodeNode* _tmp235_ = NULL;
+                                                               _tmp235_ = self->priv->node;
+                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp235_, VALA_TYPE_NULL_TYPE)) {
+                                                                       gchar* _tmp236_ = NULL;
+                                                                       _tmp236_ = g_strdup ("gpointer");
+                                                                       result = _tmp236_;
                                                                        _vala_code_node_unref0 (sym);
                                                                        return result;
                                                                } else {
-                                                                       ValaCodeNode* _tmp231_ = NULL;
-                                                                       _tmp231_ = self->priv->node;
-                                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp231_, VALA_TYPE_POINTER_TYPE)) {
+                                                                       ValaCodeNode* _tmp237_ = NULL;
+                                                                       _tmp237_ = self->priv->node;
+                                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp237_, VALA_TYPE_POINTER_TYPE)) {
                                                                                ValaPointerType* type = NULL;
-                                                                               ValaCodeNode* _tmp232_ = NULL;
-                                                                               ValaPointerType* _tmp233_ = NULL;
-                                                                               gboolean _tmp234_ = FALSE;
-                                                                               ValaPointerType* _tmp235_ = NULL;
-                                                                               ValaDataType* _tmp236_ = NULL;
-                                                                               ValaDataType* _tmp237_ = NULL;
-                                                                               ValaTypeSymbol* _tmp238_ = NULL;
-                                                                               ValaTypeSymbol* _tmp239_ = NULL;
-                                                                               _tmp232_ = self->priv->node;
-                                                                               _tmp233_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp232_, VALA_TYPE_POINTER_TYPE, ValaPointerType));
-                                                                               type = _tmp233_;
-                                                                               _tmp235_ = type;
-                                                                               _tmp236_ = vala_pointer_type_get_base_type (_tmp235_);
-                                                                               _tmp237_ = _tmp236_;
-                                                                               _tmp238_ = vala_data_type_get_data_type (_tmp237_);
-                                                                               _tmp239_ = _tmp238_;
-                                                                               if (_tmp239_ != NULL) {
-                                                                                       ValaPointerType* _tmp240_ = NULL;
-                                                                                       ValaDataType* _tmp241_ = NULL;
-                                                                                       ValaDataType* _tmp242_ = NULL;
-                                                                                       ValaTypeSymbol* _tmp243_ = NULL;
-                                                                                       ValaTypeSymbol* _tmp244_ = NULL;
-                                                                                       gboolean _tmp245_ = FALSE;
-                                                                                       _tmp240_ = type;
-                                                                                       _tmp241_ = vala_pointer_type_get_base_type (_tmp240_);
-                                                                                       _tmp242_ = _tmp241_;
-                                                                                       _tmp243_ = vala_data_type_get_data_type (_tmp242_);
-                                                                                       _tmp244_ = _tmp243_;
-                                                                                       _tmp245_ = vala_typesymbol_is_reference_type (_tmp244_);
-                                                                                       _tmp234_ = _tmp245_;
-                                                                               } else {
-                                                                                       _tmp234_ = FALSE;
-                                                                               }
-                                                                               if (_tmp234_) {
+                                                                               ValaCodeNode* _tmp238_ = NULL;
+                                                                               ValaPointerType* _tmp239_ = NULL;
+                                                                               gboolean _tmp240_ = FALSE;
+                                                                               ValaPointerType* _tmp241_ = NULL;
+                                                                               ValaDataType* _tmp242_ = NULL;
+                                                                               ValaDataType* _tmp243_ = NULL;
+                                                                               ValaTypeSymbol* _tmp244_ = NULL;
+                                                                               ValaTypeSymbol* _tmp245_ = NULL;
+                                                                               _tmp238_ = self->priv->node;
+                                                                               _tmp239_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp238_, VALA_TYPE_POINTER_TYPE, ValaPointerType));
+                                                                               type = _tmp239_;
+                                                                               _tmp241_ = type;
+                                                                               _tmp242_ = vala_pointer_type_get_base_type (_tmp241_);
+                                                                               _tmp243_ = _tmp242_;
+                                                                               _tmp244_ = vala_data_type_get_data_type (_tmp243_);
+                                                                               _tmp245_ = _tmp244_;
+                                                                               if (_tmp245_ != NULL) {
                                                                                        ValaPointerType* _tmp246_ = NULL;
                                                                                        ValaDataType* _tmp247_ = NULL;
                                                                                        ValaDataType* _tmp248_ = NULL;
-                                                                                       gchar* _tmp249_ = NULL;
+                                                                                       ValaTypeSymbol* _tmp249_ = NULL;
+                                                                                       ValaTypeSymbol* _tmp250_ = NULL;
+                                                                                       gboolean _tmp251_ = FALSE;
                                                                                        _tmp246_ = type;
                                                                                        _tmp247_ = vala_pointer_type_get_base_type (_tmp246_);
                                                                                        _tmp248_ = _tmp247_;
-                                                                                       _tmp249_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp248_);
-                                                                                       result = _tmp249_;
+                                                                                       _tmp249_ = vala_data_type_get_data_type (_tmp248_);
+                                                                                       _tmp250_ = _tmp249_;
+                                                                                       _tmp251_ = vala_typesymbol_is_reference_type (_tmp250_);
+                                                                                       _tmp240_ = _tmp251_;
+                                                                               } else {
+                                                                                       _tmp240_ = FALSE;
+                                                                               }
+                                                                               if (_tmp240_) {
+                                                                                       ValaPointerType* _tmp252_ = NULL;
+                                                                                       ValaDataType* _tmp253_ = NULL;
+                                                                                       ValaDataType* _tmp254_ = NULL;
+                                                                                       gchar* _tmp255_ = NULL;
+                                                                                       _tmp252_ = type;
+                                                                                       _tmp253_ = vala_pointer_type_get_base_type (_tmp252_);
+                                                                                       _tmp254_ = _tmp253_;
+                                                                                       _tmp255_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp254_);
+                                                                                       result = _tmp255_;
                                                                                        _vala_code_node_unref0 (type);
                                                                                        _vala_code_node_unref0 (sym);
                                                                                        return result;
                                                                                } else {
-                                                                                       ValaPointerType* _tmp250_ = NULL;
-                                                                                       ValaDataType* _tmp251_ = NULL;
-                                                                                       ValaDataType* _tmp252_ = NULL;
-                                                                                       gchar* _tmp253_ = NULL;
-                                                                                       gchar* _tmp254_ = NULL;
-                                                                                       gchar* _tmp255_ = NULL;
-                                                                                       gchar* _tmp256_ = NULL;
-                                                                                       _tmp250_ = type;
-                                                                                       _tmp251_ = vala_pointer_type_get_base_type (_tmp250_);
-                                                                                       _tmp252_ = _tmp251_;
-                                                                                       _tmp253_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp252_);
-                                                                                       _tmp254_ = _tmp253_;
-                                                                                       _tmp255_ = g_strdup_printf ("%s*", _tmp254_);
-                                                                                       _tmp256_ = _tmp255_;
-                                                                                       _g_free0 (_tmp254_);
-                                                                                       result = _tmp256_;
+                                                                                       ValaPointerType* _tmp256_ = NULL;
+                                                                                       ValaDataType* _tmp257_ = NULL;
+                                                                                       ValaDataType* _tmp258_ = NULL;
+                                                                                       gchar* _tmp259_ = NULL;
+                                                                                       gchar* _tmp260_ = NULL;
+                                                                                       gchar* _tmp261_ = NULL;
+                                                                                       gchar* _tmp262_ = NULL;
+                                                                                       _tmp256_ = type;
+                                                                                       _tmp257_ = vala_pointer_type_get_base_type (_tmp256_);
+                                                                                       _tmp258_ = _tmp257_;
+                                                                                       _tmp259_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp258_);
+                                                                                       _tmp260_ = _tmp259_;
+                                                                                       _tmp261_ = g_strdup_printf ("%s*", _tmp260_);
+                                                                                       _tmp262_ = _tmp261_;
+                                                                                       _g_free0 (_tmp260_);
+                                                                                       result = _tmp262_;
                                                                                        _vala_code_node_unref0 (type);
                                                                                        _vala_code_node_unref0 (sym);
                                                                                        return result;
                                                                                }
                                                                                _vala_code_node_unref0 (type);
                                                                        } else {
-                                                                               ValaCodeNode* _tmp257_ = NULL;
-                                                                               _tmp257_ = self->priv->node;
-                                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp257_, VALA_TYPE_VOID_TYPE)) {
-                                                                                       gchar* _tmp258_ = NULL;
-                                                                                       _tmp258_ = g_strdup ("void");
-                                                                                       result = _tmp258_;
+                                                                               ValaCodeNode* _tmp263_ = NULL;
+                                                                               _tmp263_ = self->priv->node;
+                                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp263_, VALA_TYPE_VOID_TYPE)) {
+                                                                                       gchar* _tmp264_ = NULL;
+                                                                                       _tmp264_ = g_strdup ("void");
+                                                                                       result = _tmp264_;
                                                                                        _vala_code_node_unref0 (sym);
                                                                                        return result;
                                                                                } else {
-                                                                                       ValaCodeNode* _tmp259_ = NULL;
-                                                                                       _tmp259_ = self->priv->node;
-                                                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp259_, VALA_TYPE_CLASS_TYPE)) {
+                                                                                       ValaCodeNode* _tmp265_ = NULL;
+                                                                                       _tmp265_ = self->priv->node;
+                                                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp265_, VALA_TYPE_CLASS_TYPE)) {
                                                                                                ValaClassType* type = NULL;
-                                                                                               ValaCodeNode* _tmp260_ = NULL;
-                                                                                               ValaClassType* _tmp261_ = NULL;
-                                                                                               ValaClassType* _tmp262_ = NULL;
-                                                                                               ValaClass* _tmp263_ = NULL;
-                                                                                               ValaClass* _tmp264_ = NULL;
-                                                                                               gchar* _tmp265_ = NULL;
-                                                                                               gchar* _tmp266_ = NULL;
-                                                                                               gchar* _tmp267_ = NULL;
-                                                                                               gchar* _tmp268_ = NULL;
-                                                                                               _tmp260_ = self->priv->node;
-                                                                                               _tmp261_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp260_, VALA_TYPE_CLASS_TYPE, ValaClassType));
-                                                                                               type = _tmp261_;
-                                                                                               _tmp262_ = type;
-                                                                                               _tmp263_ = vala_class_type_get_class_symbol (_tmp262_);
-                                                                                               _tmp264_ = _tmp263_;
-                                                                                               _tmp265_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp264_);
-                                                                                               _tmp266_ = _tmp265_;
-                                                                                               _tmp267_ = g_strdup_printf ("%sClass*", _tmp266_);
-                                                                                               _tmp268_ = _tmp267_;
-                                                                                               _g_free0 (_tmp266_);
-                                                                                               result = _tmp268_;
+                                                                                               ValaCodeNode* _tmp266_ = NULL;
+                                                                                               ValaClassType* _tmp267_ = NULL;
+                                                                                               ValaClassType* _tmp268_ = NULL;
+                                                                                               ValaClass* _tmp269_ = NULL;
+                                                                                               ValaClass* _tmp270_ = NULL;
+                                                                                               gchar* _tmp271_ = NULL;
+                                                                                               gchar* _tmp272_ = NULL;
+                                                                                               gchar* _tmp273_ = NULL;
+                                                                                               gchar* _tmp274_ = NULL;
+                                                                                               _tmp266_ = self->priv->node;
+                                                                                               _tmp267_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp266_, VALA_TYPE_CLASS_TYPE, ValaClassType));
+                                                                                               type = _tmp267_;
+                                                                                               _tmp268_ = type;
+                                                                                               _tmp269_ = vala_class_type_get_class_symbol (_tmp268_);
+                                                                                               _tmp270_ = _tmp269_;
+                                                                                               _tmp271_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp270_);
+                                                                                               _tmp272_ = _tmp271_;
+                                                                                               _tmp273_ = g_strdup_printf ("%sClass*", _tmp272_);
+                                                                                               _tmp274_ = _tmp273_;
+                                                                                               _g_free0 (_tmp272_);
+                                                                                               result = _tmp274_;
                                                                                                _vala_code_node_unref0 (type);
                                                                                                _vala_code_node_unref0 (sym);
                                                                                                return result;
                                                                                        } else {
-                                                                                               ValaCodeNode* _tmp269_ = NULL;
-                                                                                               _tmp269_ = self->priv->node;
-                                                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp269_, VALA_TYPE_INTERFACE_TYPE)) {
+                                                                                               ValaCodeNode* _tmp275_ = NULL;
+                                                                                               _tmp275_ = self->priv->node;
+                                                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp275_, VALA_TYPE_INTERFACE_TYPE)) {
                                                                                                        ValaInterfaceType* type = NULL;
-                                                                                                       ValaCodeNode* _tmp270_ = NULL;
-                                                                                                       ValaInterfaceType* _tmp271_ = NULL;
-                                                                                                       ValaInterfaceType* _tmp272_ = NULL;
-                                                                                                       ValaInterface* _tmp273_ = NULL;
-                                                                                                       ValaInterface* _tmp274_ = NULL;
-                                                                                                       gchar* _tmp275_ = NULL;
-                                                                                                       gchar* _tmp276_ = NULL;
-                                                                                                       gchar* _tmp277_ = NULL;
-                                                                                                       gchar* _tmp278_ = NULL;
-                                                                                                       _tmp270_ = self->priv->node;
-                                                                                                       _tmp271_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp270_, VALA_TYPE_INTERFACE_TYPE, ValaInterfaceType));
-                                                                                                       type = _tmp271_;
-                                                                                                       _tmp272_ = type;
-                                                                                                       _tmp273_ = vala_interface_type_get_interface_symbol (_tmp272_);
-                                                                                                       _tmp274_ = _tmp273_;
-                                                                                                       _tmp275_ = vala_ccode_base_module_get_ccode_type_name (_tmp274_);
-                                                                                                       _tmp276_ = _tmp275_;
-                                                                                                       _tmp277_ = g_strdup_printf ("%s*", _tmp276_);
-                                                                                                       _tmp278_ = _tmp277_;
-                                                                                                       _g_free0 (_tmp276_);
-                                                                                                       result = _tmp278_;
+                                                                                                       ValaCodeNode* _tmp276_ = NULL;
+                                                                                                       ValaInterfaceType* _tmp277_ = NULL;
+                                                                                                       ValaInterfaceType* _tmp278_ = NULL;
+                                                                                                       ValaInterface* _tmp279_ = NULL;
+                                                                                                       ValaInterface* _tmp280_ = NULL;
+                                                                                                       gchar* _tmp281_ = NULL;
+                                                                                                       gchar* _tmp282_ = NULL;
+                                                                                                       gchar* _tmp283_ = NULL;
+                                                                                                       gchar* _tmp284_ = NULL;
+                                                                                                       _tmp276_ = self->priv->node;
+                                                                                                       _tmp277_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp276_, VALA_TYPE_INTERFACE_TYPE, ValaInterfaceType));
+                                                                                                       type = _tmp277_;
+                                                                                                       _tmp278_ = type;
+                                                                                                       _tmp279_ = vala_interface_type_get_interface_symbol (_tmp278_);
+                                                                                                       _tmp280_ = _tmp279_;
+                                                                                                       _tmp281_ = vala_ccode_base_module_get_ccode_type_name (_tmp280_);
+                                                                                                       _tmp282_ = _tmp281_;
+                                                                                                       _tmp283_ = g_strdup_printf ("%s*", _tmp282_);
+                                                                                                       _tmp284_ = _tmp283_;
+                                                                                                       _g_free0 (_tmp282_);
+                                                                                                       result = _tmp284_;
                                                                                                        _vala_code_node_unref0 (type);
                                                                                                        _vala_code_node_unref0 (sym);
                                                                                                        return result;
                                                                                                } else {
-                                                                                                       ValaCodeNode* _tmp279_ = NULL;
-                                                                                                       _tmp279_ = self->priv->node;
-                                                                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp279_, VALA_TYPE_VALUE_TYPE)) {
+                                                                                                       ValaCodeNode* _tmp285_ = NULL;
+                                                                                                       _tmp285_ = self->priv->node;
+                                                                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp285_, VALA_TYPE_VALUE_TYPE)) {
                                                                                                                ValaValueType* type = NULL;
-                                                                                                               ValaCodeNode* _tmp280_ = NULL;
-                                                                                                               ValaValueType* _tmp281_ = NULL;
+                                                                                                               ValaCodeNode* _tmp286_ = NULL;
+                                                                                                               ValaValueType* _tmp287_ = NULL;
                                                                                                                gchar* cname = NULL;
-                                                                                                               ValaValueType* _tmp282_ = NULL;
-                                                                                                               ValaTypeSymbol* _tmp283_ = NULL;
-                                                                                                               ValaTypeSymbol* _tmp284_ = NULL;
-                                                                                                               gchar* _tmp285_ = NULL;
-                                                                                                               ValaValueType* _tmp286_ = NULL;
-                                                                                                               gboolean _tmp287_ = FALSE;
-                                                                                                               gboolean _tmp288_ = FALSE;
-                                                                                                               _tmp280_ = self->priv->node;
-                                                                                                               _tmp281_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp280_, VALA_TYPE_VALUE_TYPE, ValaValueType));
-                                                                                                               type = _tmp281_;
-                                                                                                               _tmp282_ = type;
-                                                                                                               _tmp283_ = vala_value_type_get_type_symbol (_tmp282_);
-                                                                                                               _tmp284_ = _tmp283_;
-                                                                                                               _tmp285_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp284_);
-                                                                                                               cname = _tmp285_;
-                                                                                                               _tmp286_ = type;
-                                                                                                               _tmp287_ = vala_data_type_get_nullable ((ValaDataType*) _tmp286_);
-                                                                                                               _tmp288_ = _tmp287_;
-                                                                                                               if (_tmp288_) {
-                                                                                                                       const gchar* _tmp289_ = NULL;
-                                                                                                                       gchar* _tmp290_ = NULL;
-                                                                                                                       _tmp289_ = cname;
-                                                                                                                       _tmp290_ = g_strdup_printf ("%s*", _tmp289_);
-                                                                                                                       result = _tmp290_;
+                                                                                                               ValaValueType* _tmp288_ = NULL;
+                                                                                                               ValaTypeSymbol* _tmp289_ = NULL;
+                                                                                                               ValaTypeSymbol* _tmp290_ = NULL;
+                                                                                                               gchar* _tmp291_ = NULL;
+                                                                                                               ValaValueType* _tmp292_ = NULL;
+                                                                                                               gboolean _tmp293_ = FALSE;
+                                                                                                               gboolean _tmp294_ = FALSE;
+                                                                                                               _tmp286_ = self->priv->node;
+                                                                                                               _tmp287_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp286_, VALA_TYPE_VALUE_TYPE, ValaValueType));
+                                                                                                               type = _tmp287_;
+                                                                                                               _tmp288_ = type;
+                                                                                                               _tmp289_ = vala_value_type_get_type_symbol (_tmp288_);
+                                                                                                               _tmp290_ = _tmp289_;
+                                                                                                               _tmp291_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp290_);
+                                                                                                               cname = _tmp291_;
+                                                                                                               _tmp292_ = type;
+                                                                                                               _tmp293_ = vala_data_type_get_nullable ((ValaDataType*) _tmp292_);
+                                                                                                               _tmp294_ = _tmp293_;
+                                                                                                               if (_tmp294_) {
+                                                                                                                       const gchar* _tmp295_ = NULL;
+                                                                                                                       gchar* _tmp296_ = NULL;
+                                                                                                                       _tmp295_ = cname;
+                                                                                                                       _tmp296_ = g_strdup_printf ("%s*", _tmp295_);
+                                                                                                                       result = _tmp296_;
                                                                                                                        _g_free0 (cname);
                                                                                                                        _vala_code_node_unref0 (type);
                                                                                                                        _vala_code_node_unref0 (sym);
@@ -1307,31 +1339,31 @@ static gchar* vala_ccode_attribute_get_default_name (ValaCCodeAttribute* self) {
                                                                                                                _g_free0 (cname);
                                                                                                                _vala_code_node_unref0 (type);
                                                                                                        } else {
-                                                                                                               ValaCodeNode* _tmp291_ = NULL;
-                                                                                                               _tmp291_ = self->priv->node;
-                                                                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp291_, VALA_TYPE_CTYPE)) {
-                                                                                                                       ValaCodeNode* _tmp292_ = NULL;
-                                                                                                                       const gchar* _tmp293_ = NULL;
-                                                                                                                       const gchar* _tmp294_ = NULL;
-                                                                                                                       gchar* _tmp295_ = NULL;
-                                                                                                                       _tmp292_ = self->priv->node;
-                                                                                                                       _tmp293_ = vala_ctype_get_ctype_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp292_, VALA_TYPE_CTYPE, ValaCType));
-                                                                                                                       _tmp294_ = _tmp293_;
-                                                                                                                       _tmp295_ = g_strdup (_tmp294_);
-                                                                                                                       result = _tmp295_;
+                                                                                                               ValaCodeNode* _tmp297_ = NULL;
+                                                                                                               _tmp297_ = self->priv->node;
+                                                                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp297_, VALA_TYPE_CTYPE)) {
+                                                                                                                       ValaCodeNode* _tmp298_ = NULL;
+                                                                                                                       const gchar* _tmp299_ = NULL;
+                                                                                                                       const gchar* _tmp300_ = NULL;
+                                                                                                                       gchar* _tmp301_ = NULL;
+                                                                                                                       _tmp298_ = self->priv->node;
+                                                                                                                       _tmp299_ = vala_ctype_get_ctype_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp298_, VALA_TYPE_CTYPE, ValaCType));
+                                                                                                                       _tmp300_ = _tmp299_;
+                                                                                                                       _tmp301_ = g_strdup (_tmp300_);
+                                                                                                                       result = _tmp301_;
                                                                                                                        _vala_code_node_unref0 (sym);
                                                                                                                        return result;
                                                                                                                } else {
-                                                                                                                       ValaCodeNode* _tmp296_ = NULL;
-                                                                                                                       ValaSourceReference* _tmp297_ = NULL;
-                                                                                                                       ValaSourceReference* _tmp298_ = NULL;
-                                                                                                                       gchar* _tmp299_ = NULL;
-                                                                                                                       _tmp296_ = self->priv->node;
-                                                                                                                       _tmp297_ = vala_code_node_get_source_reference (_tmp296_);
-                                                                                                                       _tmp298_ = _tmp297_;
-                                                                                                                       vala_report_error (_tmp298_, "Unresolved type reference");
-                                                                                                                       _tmp299_ = g_strdup ("");
-                                                                                                                       result = _tmp299_;
+                                                                                                                       ValaCodeNode* _tmp302_ = NULL;
+                                                                                                                       ValaSourceReference* _tmp303_ = NULL;
+                                                                                                                       ValaSourceReference* _tmp304_ = NULL;
+                                                                                                                       gchar* _tmp305_ = NULL;
+                                                                                                                       _tmp302_ = self->priv->node;
+                                                                                                                       _tmp303_ = vala_code_node_get_source_reference (_tmp302_);
+                                                                                                                       _tmp304_ = _tmp303_;
+                                                                                                                       vala_report_error (_tmp304_, "Unresolved type reference");
+                                                                                                                       _tmp305_ = g_strdup ("");
+                                                                                                                       result = _tmp305_;
                                                                                                                        _vala_code_node_unref0 (sym);
                                                                                                                        return result;
                                                                                                                }
@@ -4434,147 +4466,195 @@ static gchar* vala_ccode_attribute_get_default_real_name (ValaCCodeAttribute* se
                        }
                        if (_tmp37_) {
                                ValaMethod* _tmp44_ = NULL;
-                               ValaSymbol* _tmp45_ = NULL;
-                               ValaSymbol* _tmp46_ = NULL;
-                               gchar* _tmp47_ = NULL;
-                               gchar* _tmp48_ = NULL;
-                               ValaMethod* _tmp49_ = NULL;
-                               const gchar* _tmp50_ = NULL;
-                               const gchar* _tmp51_ = NULL;
-                               gchar* _tmp52_ = NULL;
-                               gchar* _tmp53_ = NULL;
+                               ValaDataType* _tmp45_ = NULL;
+                               ValaDataType* _tmp46_ = NULL;
                                _tmp44_ = m;
-                               _tmp45_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp44_);
+                               _tmp45_ = vala_method_get_base_interface_type (_tmp44_);
                                _tmp46_ = _tmp45_;
-                               _tmp47_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp46_);
-                               _tmp48_ = _tmp47_;
-                               _tmp49_ = m;
-                               _tmp50_ = vala_symbol_get_name ((ValaSymbol*) _tmp49_);
-                               _tmp51_ = _tmp50_;
-                               _tmp52_ = g_strdup_printf ("%sreal_%s", _tmp48_, _tmp51_);
-                               _tmp53_ = _tmp52_;
-                               _g_free0 (_tmp48_);
-                               result = _tmp53_;
-                               _vala_code_node_unref0 (m);
-                               return result;
+                               if (_tmp46_ != NULL) {
+                                       ValaMethod* _tmp47_ = NULL;
+                                       ValaSymbol* _tmp48_ = NULL;
+                                       ValaSymbol* _tmp49_ = NULL;
+                                       gchar* _tmp50_ = NULL;
+                                       gchar* _tmp51_ = NULL;
+                                       ValaMethod* _tmp52_ = NULL;
+                                       ValaDataType* _tmp53_ = NULL;
+                                       ValaDataType* _tmp54_ = NULL;
+                                       ValaTypeSymbol* _tmp55_ = NULL;
+                                       ValaTypeSymbol* _tmp56_ = NULL;
+                                       gchar* _tmp57_ = NULL;
+                                       gchar* _tmp58_ = NULL;
+                                       ValaMethod* _tmp59_ = NULL;
+                                       const gchar* _tmp60_ = NULL;
+                                       const gchar* _tmp61_ = NULL;
+                                       gchar* _tmp62_ = NULL;
+                                       gchar* _tmp63_ = NULL;
+                                       _tmp47_ = m;
+                                       _tmp48_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp47_);
+                                       _tmp49_ = _tmp48_;
+                                       _tmp50_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp49_);
+                                       _tmp51_ = _tmp50_;
+                                       _tmp52_ = m;
+                                       _tmp53_ = vala_method_get_base_interface_type (_tmp52_);
+                                       _tmp54_ = _tmp53_;
+                                       _tmp55_ = vala_data_type_get_data_type (_tmp54_);
+                                       _tmp56_ = _tmp55_;
+                                       _tmp57_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp56_);
+                                       _tmp58_ = _tmp57_;
+                                       _tmp59_ = m;
+                                       _tmp60_ = vala_symbol_get_name ((ValaSymbol*) _tmp59_);
+                                       _tmp61_ = _tmp60_;
+                                       _tmp62_ = g_strdup_printf ("%sreal_%s%s", _tmp51_, _tmp58_, _tmp61_);
+                                       _tmp63_ = _tmp62_;
+                                       _g_free0 (_tmp58_);
+                                       _g_free0 (_tmp51_);
+                                       result = _tmp63_;
+                                       _vala_code_node_unref0 (m);
+                                       return result;
+                               } else {
+                                       ValaMethod* _tmp64_ = NULL;
+                                       ValaSymbol* _tmp65_ = NULL;
+                                       ValaSymbol* _tmp66_ = NULL;
+                                       gchar* _tmp67_ = NULL;
+                                       gchar* _tmp68_ = NULL;
+                                       ValaMethod* _tmp69_ = NULL;
+                                       const gchar* _tmp70_ = NULL;
+                                       const gchar* _tmp71_ = NULL;
+                                       gchar* _tmp72_ = NULL;
+                                       gchar* _tmp73_ = NULL;
+                                       _tmp64_ = m;
+                                       _tmp65_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp64_);
+                                       _tmp66_ = _tmp65_;
+                                       _tmp67_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp66_);
+                                       _tmp68_ = _tmp67_;
+                                       _tmp69_ = m;
+                                       _tmp70_ = vala_symbol_get_name ((ValaSymbol*) _tmp69_);
+                                       _tmp71_ = _tmp70_;
+                                       _tmp72_ = g_strdup_printf ("%sreal_%s", _tmp68_, _tmp71_);
+                                       _tmp73_ = _tmp72_;
+                                       _g_free0 (_tmp68_);
+                                       result = _tmp73_;
+                                       _vala_code_node_unref0 (m);
+                                       return result;
+                               }
                        } else {
-                               const gchar* _tmp54_ = NULL;
-                               const gchar* _tmp55_ = NULL;
-                               gchar* _tmp56_ = NULL;
-                               _tmp54_ = vala_ccode_attribute_get_name (self);
-                               _tmp55_ = _tmp54_;
-                               _tmp56_ = g_strdup (_tmp55_);
-                               result = _tmp56_;
+                               const gchar* _tmp74_ = NULL;
+                               const gchar* _tmp75_ = NULL;
+                               gchar* _tmp76_ = NULL;
+                               _tmp74_ = vala_ccode_attribute_get_name (self);
+                               _tmp75_ = _tmp74_;
+                               _tmp76_ = g_strdup (_tmp75_);
+                               result = _tmp76_;
                                _vala_code_node_unref0 (m);
                                return result;
                        }
                        _vala_code_node_unref0 (m);
                } else {
-                       ValaSymbol* _tmp57_ = NULL;
-                       _tmp57_ = self->priv->sym;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp57_, VALA_TYPE_PROPERTY_ACCESSOR)) {
+                       ValaSymbol* _tmp77_ = NULL;
+                       _tmp77_ = self->priv->sym;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp77_, VALA_TYPE_PROPERTY_ACCESSOR)) {
                                ValaPropertyAccessor* acc = NULL;
-                               ValaSymbol* _tmp58_ = NULL;
-                               ValaPropertyAccessor* _tmp59_ = NULL;
+                               ValaSymbol* _tmp78_ = NULL;
+                               ValaPropertyAccessor* _tmp79_ = NULL;
                                ValaProperty* prop = NULL;
-                               ValaPropertyAccessor* _tmp60_ = NULL;
-                               ValaProperty* _tmp61_ = NULL;
-                               ValaProperty* _tmp62_ = NULL;
-                               ValaProperty* _tmp63_ = NULL;
-                               gboolean _tmp64_ = FALSE;
-                               ValaProperty* _tmp65_ = NULL;
-                               ValaProperty* _tmp66_ = NULL;
-                               ValaProperty* _tmp67_ = NULL;
-                               _tmp58_ = self->priv->sym;
-                               _tmp59_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp58_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
-                               acc = _tmp59_;
-                               _tmp60_ = acc;
-                               _tmp61_ = vala_property_accessor_get_prop (_tmp60_);
-                               _tmp62_ = _tmp61_;
-                               _tmp63_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp62_, VALA_TYPE_PROPERTY, ValaProperty));
-                               prop = _tmp63_;
-                               _tmp65_ = prop;
-                               _tmp66_ = vala_property_get_base_property (_tmp65_);
-                               _tmp67_ = _tmp66_;
-                               if (_tmp67_ != NULL) {
-                                       _tmp64_ = TRUE;
+                               ValaPropertyAccessor* _tmp80_ = NULL;
+                               ValaProperty* _tmp81_ = NULL;
+                               ValaProperty* _tmp82_ = NULL;
+                               ValaProperty* _tmp83_ = NULL;
+                               gboolean _tmp84_ = FALSE;
+                               ValaProperty* _tmp85_ = NULL;
+                               ValaProperty* _tmp86_ = NULL;
+                               ValaProperty* _tmp87_ = NULL;
+                               _tmp78_ = self->priv->sym;
+                               _tmp79_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp78_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
+                               acc = _tmp79_;
+                               _tmp80_ = acc;
+                               _tmp81_ = vala_property_accessor_get_prop (_tmp80_);
+                               _tmp82_ = _tmp81_;
+                               _tmp83_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp82_, VALA_TYPE_PROPERTY, ValaProperty));
+                               prop = _tmp83_;
+                               _tmp85_ = prop;
+                               _tmp86_ = vala_property_get_base_property (_tmp85_);
+                               _tmp87_ = _tmp86_;
+                               if (_tmp87_ != NULL) {
+                                       _tmp84_ = TRUE;
                                } else {
-                                       ValaProperty* _tmp68_ = NULL;
-                                       ValaProperty* _tmp69_ = NULL;
-                                       ValaProperty* _tmp70_ = NULL;
-                                       _tmp68_ = prop;
-                                       _tmp69_ = vala_property_get_base_interface_property (_tmp68_);
-                                       _tmp70_ = _tmp69_;
-                                       _tmp64_ = _tmp70_ != NULL;
+                                       ValaProperty* _tmp88_ = NULL;
+                                       ValaProperty* _tmp89_ = NULL;
+                                       ValaProperty* _tmp90_ = NULL;
+                                       _tmp88_ = prop;
+                                       _tmp89_ = vala_property_get_base_interface_property (_tmp88_);
+                                       _tmp90_ = _tmp89_;
+                                       _tmp84_ = _tmp90_ != NULL;
                                }
-                               if (_tmp64_) {
-                                       ValaPropertyAccessor* _tmp71_ = NULL;
-                                       gboolean _tmp72_ = FALSE;
-                                       gboolean _tmp73_ = FALSE;
-                                       _tmp71_ = acc;
-                                       _tmp72_ = vala_property_accessor_get_readable (_tmp71_);
-                                       _tmp73_ = _tmp72_;
-                                       if (_tmp73_) {
-                                               ValaProperty* _tmp74_ = NULL;
-                                               ValaSymbol* _tmp75_ = NULL;
-                                               ValaSymbol* _tmp76_ = NULL;
-                                               gchar* _tmp77_ = NULL;
-                                               gchar* _tmp78_ = NULL;
-                                               ValaProperty* _tmp79_ = NULL;
-                                               const gchar* _tmp80_ = NULL;
-                                               const gchar* _tmp81_ = NULL;
-                                               gchar* _tmp82_ = NULL;
-                                               gchar* _tmp83_ = NULL;
-                                               _tmp74_ = prop;
-                                               _tmp75_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp74_);
-                                               _tmp76_ = _tmp75_;
-                                               _tmp77_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp76_);
-                                               _tmp78_ = _tmp77_;
-                                               _tmp79_ = prop;
-                                               _tmp80_ = vala_symbol_get_name ((ValaSymbol*) _tmp79_);
-                                               _tmp81_ = _tmp80_;
-                                               _tmp82_ = g_strdup_printf ("%sreal_get_%s", _tmp78_, _tmp81_);
-                                               _tmp83_ = _tmp82_;
-                                               _g_free0 (_tmp78_);
-                                               result = _tmp83_;
+                               if (_tmp84_) {
+                                       ValaPropertyAccessor* _tmp91_ = NULL;
+                                       gboolean _tmp92_ = FALSE;
+                                       gboolean _tmp93_ = FALSE;
+                                       _tmp91_ = acc;
+                                       _tmp92_ = vala_property_accessor_get_readable (_tmp91_);
+                                       _tmp93_ = _tmp92_;
+                                       if (_tmp93_) {
+                                               ValaProperty* _tmp94_ = NULL;
+                                               ValaSymbol* _tmp95_ = NULL;
+                                               ValaSymbol* _tmp96_ = NULL;
+                                               gchar* _tmp97_ = NULL;
+                                               gchar* _tmp98_ = NULL;
+                                               ValaProperty* _tmp99_ = NULL;
+                                               const gchar* _tmp100_ = NULL;
+                                               const gchar* _tmp101_ = NULL;
+                                               gchar* _tmp102_ = NULL;
+                                               gchar* _tmp103_ = NULL;
+                                               _tmp94_ = prop;
+                                               _tmp95_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp94_);
+                                               _tmp96_ = _tmp95_;
+                                               _tmp97_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp96_);
+                                               _tmp98_ = _tmp97_;
+                                               _tmp99_ = prop;
+                                               _tmp100_ = vala_symbol_get_name ((ValaSymbol*) _tmp99_);
+                                               _tmp101_ = _tmp100_;
+                                               _tmp102_ = g_strdup_printf ("%sreal_get_%s", _tmp98_, _tmp101_);
+                                               _tmp103_ = _tmp102_;
+                                               _g_free0 (_tmp98_);
+                                               result = _tmp103_;
                                                _vala_code_node_unref0 (prop);
                                                _vala_code_node_unref0 (acc);
                                                return result;
                                        } else {
-                                               ValaProperty* _tmp84_ = NULL;
-                                               ValaSymbol* _tmp85_ = NULL;
-                                               ValaSymbol* _tmp86_ = NULL;
-                                               gchar* _tmp87_ = NULL;
-                                               gchar* _tmp88_ = NULL;
-                                               ValaProperty* _tmp89_ = NULL;
-                                               const gchar* _tmp90_ = NULL;
-                                               const gchar* _tmp91_ = NULL;
-                                               gchar* _tmp92_ = NULL;
-                                               gchar* _tmp93_ = NULL;
-                                               _tmp84_ = prop;
-                                               _tmp85_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp84_);
-                                               _tmp86_ = _tmp85_;
-                                               _tmp87_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp86_);
-                                               _tmp88_ = _tmp87_;
-                                               _tmp89_ = prop;
-                                               _tmp90_ = vala_symbol_get_name ((ValaSymbol*) _tmp89_);
-                                               _tmp91_ = _tmp90_;
-                                               _tmp92_ = g_strdup_printf ("%sreal_set_%s", _tmp88_, _tmp91_);
-                                               _tmp93_ = _tmp92_;
-                                               _g_free0 (_tmp88_);
-                                               result = _tmp93_;
+                                               ValaProperty* _tmp104_ = NULL;
+                                               ValaSymbol* _tmp105_ = NULL;
+                                               ValaSymbol* _tmp106_ = NULL;
+                                               gchar* _tmp107_ = NULL;
+                                               gchar* _tmp108_ = NULL;
+                                               ValaProperty* _tmp109_ = NULL;
+                                               const gchar* _tmp110_ = NULL;
+                                               const gchar* _tmp111_ = NULL;
+                                               gchar* _tmp112_ = NULL;
+                                               gchar* _tmp113_ = NULL;
+                                               _tmp104_ = prop;
+                                               _tmp105_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp104_);
+                                               _tmp106_ = _tmp105_;
+                                               _tmp107_ = vala_ccode_base_module_get_ccode_lower_case_prefix (_tmp106_);
+                                               _tmp108_ = _tmp107_;
+                                               _tmp109_ = prop;
+                                               _tmp110_ = vala_symbol_get_name ((ValaSymbol*) _tmp109_);
+                                               _tmp111_ = _tmp110_;
+                                               _tmp112_ = g_strdup_printf ("%sreal_set_%s", _tmp108_, _tmp111_);
+                                               _tmp113_ = _tmp112_;
+                                               _g_free0 (_tmp108_);
+                                               result = _tmp113_;
                                                _vala_code_node_unref0 (prop);
                                                _vala_code_node_unref0 (acc);
                                                return result;
                                        }
                                } else {
-                                       const gchar* _tmp94_ = NULL;
-                                       const gchar* _tmp95_ = NULL;
-                                       gchar* _tmp96_ = NULL;
-                                       _tmp94_ = vala_ccode_attribute_get_name (self);
-                                       _tmp95_ = _tmp94_;
-                                       _tmp96_ = g_strdup (_tmp95_);
-                                       result = _tmp96_;
+                                       const gchar* _tmp114_ = NULL;
+                                       const gchar* _tmp115_ = NULL;
+                                       gchar* _tmp116_ = NULL;
+                                       _tmp114_ = vala_ccode_attribute_get_name (self);
+                                       _tmp115_ = _tmp114_;
+                                       _tmp116_ = g_strdup (_tmp115_);
+                                       result = _tmp116_;
                                        _vala_code_node_unref0 (prop);
                                        _vala_code_node_unref0 (acc);
                                        return result;
@@ -6367,7 +6447,7 @@ static void vala_ccode_attribute_set_sentinel (ValaCCodeAttribute* self, const g
 
 static void vala_ccode_attribute_class_init (ValaCCodeAttributeClass * klass) {
        vala_ccode_attribute_parent_class = g_type_class_peek_parent (klass);
-       VALA_ATTRIBUTE_CACHE_CLASS (klass)->finalize = vala_ccode_attribute_finalize;
+       ((ValaAttributeCacheClass *) klass)->finalize = vala_ccode_attribute_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeAttributePrivate));
 }
 
index ce1dcc7..03ace0b 100644 (file)
@@ -575,11 +575,15 @@ public class Vala.CCodeAttribute : AttributeCache {
                                }
                                return "%s%s".printf (CCodeBaseModule.get_ccode_lower_case_prefix (sym.parent_symbol).up (), sym.name);
                        } else if (sym is Field) {
+                               var cname = sym.name;
                                if (((Field) sym).binding == MemberBinding.STATIC) {
-                                       return "%s%s".printf (CCodeBaseModule.get_ccode_lower_case_prefix (sym.parent_symbol), sym.name);
-                               } else {
-                                       return sym.name;
+                                       cname = "%s%s".printf (CCodeBaseModule.get_ccode_lower_case_prefix (sym.parent_symbol), sym.name);
+                               }
+                               if (cname[0].isdigit ()) {
+                                       Report.error (node.source_reference, "Field name starts with a digit. Use the `cname' attribute to provide a valid C name if intended");
+                                       return "";
                                }
+                               return cname;
                        } else if (sym is CreationMethod) {
                                var m = (CreationMethod) sym;
                                string infix;
@@ -1250,7 +1254,13 @@ public class Vala.CCodeAttribute : AttributeCache {
                } else if (sym is Method) {
                        var m = (Method) sym;
                        if (m.base_method != null || m.base_interface_method != null) {
-                               return "%sreal_%s".printf (CCodeBaseModule.get_ccode_lower_case_prefix (m.parent_symbol), m.name);
+                               if (m.base_interface_type != null) {
+                                       return "%sreal_%s%s".printf (CCodeBaseModule.get_ccode_lower_case_prefix (m.parent_symbol),
+                                                                                                CCodeBaseModule.get_ccode_lower_case_prefix (m.base_interface_type.data_type),
+                                                                                                m.name);
+                               } else {
+                                       return "%sreal_%s".printf (CCodeBaseModule.get_ccode_lower_case_prefix (m.parent_symbol), m.name);
+                               }
                        } else {
                                return name;
                        }
index dacc9d7..b0616e7 100644 (file)
@@ -71,6 +71,7 @@ typedef struct _ValaCCodeBaseModuleEmitContextClass ValaCCodeBaseModuleEmitConte
 #define _fclose0(var) ((var == NULL) ? NULL : (var = (fclose (var), NULL)))
 typedef struct _ValaCCodeBaseModuleEmitContextPrivate ValaCCodeBaseModuleEmitContextPrivate;
 #define _vala_comment_unref0(var) ((var == NULL) ? NULL : (var = (vala_comment_unref (var), NULL)))
+#define _vala_ccode_declarator_suffix_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_declarator_suffix_unref (var), NULL)))
 #define _vala_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_unref (var), NULL)))
 
 #define VALA_TYPE_GLIB_VALUE (vala_glib_value_get_type ())
@@ -366,13 +367,14 @@ void vala_ccode_base_module_generate_type_declaration (ValaCCodeBaseModule* self
 gchar* vala_ccode_base_module_get_ccode_const_name (ValaCodeNode* node);
 static void vala_ccode_base_module_real_visit_constant (ValaCodeVisitor* base, ValaConstant* c);
 void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* self, ValaField* f, ValaCCodeFile* decl_space);
-gchar* vala_ccode_base_module_get_ccode_declarator_suffix (ValaDataType* type);
+ValaCCodeDeclaratorSuffix* vala_ccode_base_module_get_ccode_declarator_suffix (ValaCCodeBaseModule* self, ValaDataType* type);
 gboolean vala_ccode_base_module_get_ccode_array_length (ValaCodeNode* node);
 gchar* vala_ccode_base_module_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim);
 gchar* vala_ccode_base_module_get_ccode_delegate_target_name (ValaVariable* variable);
 gchar* vala_ccode_base_module_get_delegate_target_destroy_notify_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname);
 static void vala_ccode_base_module_real_visit_field (ValaCodeVisitor* base, ValaField* f);
 void vala_ccode_base_module_check_type (ValaCCodeBaseModule* self, ValaDataType* type);
+gboolean vala_ccode_base_module_is_simple_struct_creation (ValaCCodeBaseModule* self, ValaVariable* variable, ValaExpression* expr);
 ValaTargetValue* vala_ccode_base_module_get_field_cvalue (ValaCCodeBaseModule* self, ValaField* field, ValaTargetValue* instance);
 ValaTargetValue* vala_ccode_base_module_load_this_parameter (ValaCCodeBaseModule* self, ValaTypeSymbol* sym);
 GType vala_glib_value_get_type (void) G_GNUC_CONST;
@@ -445,7 +447,6 @@ ValaCCodeExpression* vala_ccode_base_module_get_this_cexpression (ValaCCodeBaseM
 ValaMap* vala_ccode_base_module_get_variable_name_map (ValaCCodeBaseModule* self);
 gint vala_ccode_base_module_get_next_temp_var_id (ValaCCodeBaseModule* self);
 void vala_ccode_base_module_set_next_temp_var_id (ValaCCodeBaseModule* self, gint value);
-gboolean vala_ccode_base_module_is_simple_struct_creation (ValaCCodeBaseModule* self, ValaVariable* variable, ValaExpression* expr);
 static gboolean vala_ccode_base_module_is_foreach_element_variable (ValaCCodeBaseModule* self, ValaLocalVariable* local);
 static void vala_ccode_base_module_real_visit_local_variable (ValaCodeVisitor* base, ValaLocalVariable* local);
 void vala_ccode_base_module_emit_temp_var (ValaCCodeBaseModule* self, ValaLocalVariable* local);
@@ -625,6 +626,7 @@ const gchar* vala_ccode_attribute_get_prefix (ValaCCodeAttribute* self);
 const gchar* vala_ccode_attribute_get_lower_case_prefix (ValaCCodeAttribute* self);
 const gchar* vala_ccode_attribute_get_lower_case_suffix (ValaCCodeAttribute* self);
 const gchar* vala_ccode_attribute_get_ref_function (ValaCCodeAttribute* self);
+gchar* vala_ccode_base_module_get_quark_name (ValaErrorDomain* edomain);
 gboolean vala_ccode_attribute_get_ref_function_void (ValaCCodeAttribute* self);
 gboolean vala_ccode_attribute_get_free_function_address_of (ValaCCodeAttribute* self);
 const gchar* vala_ccode_attribute_get_unref_function (ValaCCodeAttribute* self);
@@ -3343,10 +3345,9 @@ static gboolean vala_ccode_base_module_real_generate_enum_declaration (ValaCCode
        ValaCCodeFunction* _tmp90_ = NULL;
        ValaCCodeFunction* _tmp91_ = NULL;
        ValaEnum* _tmp92_ = NULL;
-       ValaSymbolAccessibility _tmp93_ = 0;
-       ValaSymbolAccessibility _tmp94_ = 0;
-       ValaCCodeFile* _tmp97_ = NULL;
-       ValaCCodeFunction* _tmp98_ = NULL;
+       gboolean _tmp93_ = FALSE;
+       ValaCCodeFile* _tmp108_ = NULL;
+       ValaCCodeFunction* _tmp109_ = NULL;
        g_return_val_if_fail (en != NULL, FALSE);
        g_return_val_if_fail (decl_space != NULL, FALSE);
        _tmp0_ = decl_space;
@@ -3555,19 +3556,51 @@ static gboolean vala_ccode_base_module_real_generate_enum_declaration (ValaCCode
        _tmp91_ = regfun;
        vala_ccode_function_set_attributes (_tmp91_, "G_GNUC_CONST");
        _tmp92_ = en;
-       _tmp93_ = vala_symbol_get_access ((ValaSymbol*) _tmp92_);
-       _tmp94_ = _tmp93_;
-       if (_tmp94_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
+       _tmp93_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp92_);
+       if (_tmp93_) {
+               ValaCCodeFunction* _tmp94_ = NULL;
                ValaCCodeFunction* _tmp95_ = NULL;
                ValaCCodeFunction* _tmp96_ = NULL;
+               const gchar* _tmp97_ = NULL;
+               const gchar* _tmp98_ = NULL;
+               gchar* _tmp99_ = NULL;
+               gchar* _tmp100_ = NULL;
+               _tmp94_ = regfun;
+               vala_ccode_function_set_modifiers (_tmp94_, VALA_CCODE_MODIFIERS_STATIC);
                _tmp95_ = regfun;
-               vala_ccode_function_set_modifiers (_tmp95_, VALA_CCODE_MODIFIERS_STATIC);
                _tmp96_ = regfun;
-               vala_ccode_function_set_attributes (_tmp96_, "G_GNUC_UNUSED");
+               _tmp97_ = vala_ccode_function_get_attributes (_tmp96_);
+               _tmp98_ = _tmp97_;
+               _tmp99_ = g_strconcat (_tmp98_, " G_GNUC_UNUSED", NULL);
+               _tmp100_ = _tmp99_;
+               vala_ccode_function_set_attributes (_tmp96_, _tmp100_);
+               _g_free0 (_tmp100_);
+       } else {
+               gboolean _tmp101_ = FALSE;
+               ValaCodeContext* _tmp102_ = NULL;
+               gboolean _tmp103_ = FALSE;
+               gboolean _tmp104_ = FALSE;
+               _tmp102_ = self->priv->_context;
+               _tmp103_ = vala_code_context_get_hide_internal (_tmp102_);
+               _tmp104_ = _tmp103_;
+               if (_tmp104_) {
+                       ValaEnum* _tmp105_ = NULL;
+                       gboolean _tmp106_ = FALSE;
+                       _tmp105_ = en;
+                       _tmp106_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp105_);
+                       _tmp101_ = _tmp106_;
+               } else {
+                       _tmp101_ = FALSE;
+               }
+               if (_tmp101_) {
+                       ValaCCodeFunction* _tmp107_ = NULL;
+                       _tmp107_ = regfun;
+                       vala_ccode_function_set_modifiers (_tmp107_, VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp97_ = decl_space;
-       _tmp98_ = regfun;
-       vala_ccode_file_add_function_declaration (_tmp97_, _tmp98_);
+       _tmp108_ = decl_space;
+       _tmp109_ = regfun;
+       vala_ccode_file_add_function_declaration (_tmp108_, _tmp109_);
        result = TRUE;
        _vala_ccode_node_unref0 (regfun);
        _g_free0 (fun_name);
@@ -4320,8 +4353,8 @@ void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* sel
        ValaField* _tmp26_ = NULL;
        ValaDataType* _tmp27_ = NULL;
        ValaDataType* _tmp28_ = NULL;
-       gchar* _tmp29_ = NULL;
-       gchar* _tmp30_ = NULL;
+       ValaCCodeDeclaratorSuffix* _tmp29_ = NULL;
+       ValaCCodeDeclaratorSuffix* _tmp30_ = NULL;
        ValaCCodeVariableDeclarator* _tmp31_ = NULL;
        ValaCCodeVariableDeclarator* _tmp32_ = NULL;
        ValaField* _tmp33_ = NULL;
@@ -4333,10 +4366,10 @@ void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* sel
        ValaCCodeDeclaration* _tmp45_ = NULL;
        ValaField* _tmp46_ = NULL;
        gboolean _tmp47_ = FALSE;
-       gboolean _tmp70_ = FALSE;
-       ValaField* _tmp71_ = NULL;
-       ValaDataType* _tmp72_ = NULL;
-       ValaDataType* _tmp73_ = NULL;
+       gboolean _tmp77_ = FALSE;
+       ValaField* _tmp78_ = NULL;
+       ValaDataType* _tmp79_ = NULL;
+       ValaDataType* _tmp80_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (f != NULL);
        g_return_if_fail (decl_space != NULL);
@@ -4382,13 +4415,13 @@ void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* sel
        _tmp26_ = f;
        _tmp27_ = vala_variable_get_variable_type ((ValaVariable*) _tmp26_);
        _tmp28_ = _tmp27_;
-       _tmp29_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp28_);
+       _tmp29_ = vala_ccode_base_module_get_ccode_declarator_suffix (self, _tmp28_);
        _tmp30_ = _tmp29_;
        _tmp31_ = vala_ccode_variable_declarator_new (_tmp25_, NULL, _tmp30_);
        _tmp32_ = _tmp31_;
        vala_ccode_declaration_add_declarator (_tmp22_, (ValaCCodeDeclarator*) _tmp32_);
        _vala_ccode_node_unref0 (_tmp32_);
-       _g_free0 (_tmp30_);
+       _vala_ccode_declarator_suffix_unref0 (_tmp30_);
        _g_free0 (_tmp25_);
        _tmp33_ = f;
        _tmp34_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp33_);
@@ -4441,8 +4474,8 @@ void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* sel
                ValaCCodeVariableDeclarator* _tmp63_ = NULL;
                ValaField* _tmp64_ = NULL;
                gboolean _tmp65_ = FALSE;
-               ValaCCodeFile* _tmp68_ = NULL;
-               ValaCCodeDeclaration* _tmp69_ = NULL;
+               ValaCCodeFile* _tmp75_ = NULL;
+               ValaCCodeDeclaration* _tmp76_ = NULL;
                _tmp48_ = self->mutex_type;
                _tmp49_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp48_);
                _tmp50_ = _tmp49_;
@@ -4473,127 +4506,171 @@ void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* sel
                        _tmp66_ = flock;
                        vala_ccode_declaration_set_modifiers (_tmp66_, VALA_CCODE_MODIFIERS_STATIC);
                } else {
-                       ValaCCodeDeclaration* _tmp67_ = NULL;
-                       _tmp67_ = flock;
-                       vala_ccode_declaration_set_modifiers (_tmp67_, VALA_CCODE_MODIFIERS_EXTERN);
+                       gboolean _tmp67_ = FALSE;
+                       ValaCodeContext* _tmp68_ = NULL;
+                       gboolean _tmp69_ = FALSE;
+                       gboolean _tmp70_ = FALSE;
+                       _tmp68_ = self->priv->_context;
+                       _tmp69_ = vala_code_context_get_hide_internal (_tmp68_);
+                       _tmp70_ = _tmp69_;
+                       if (_tmp70_) {
+                               ValaField* _tmp71_ = NULL;
+                               gboolean _tmp72_ = FALSE;
+                               _tmp71_ = f;
+                               _tmp72_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp71_);
+                               _tmp67_ = _tmp72_;
+                       } else {
+                               _tmp67_ = FALSE;
+                       }
+                       if (_tmp67_) {
+                               ValaCCodeDeclaration* _tmp73_ = NULL;
+                               _tmp73_ = flock;
+                               vala_ccode_declaration_set_modifiers (_tmp73_, VALA_CCODE_MODIFIERS_INTERNAL);
+                       } else {
+                               ValaCCodeDeclaration* _tmp74_ = NULL;
+                               _tmp74_ = flock;
+                               vala_ccode_declaration_set_modifiers (_tmp74_, VALA_CCODE_MODIFIERS_EXTERN);
+                       }
                }
-               _tmp68_ = decl_space;
-               _tmp69_ = flock;
-               vala_ccode_file_add_type_member_declaration (_tmp68_, (ValaCCodeNode*) _tmp69_);
+               _tmp75_ = decl_space;
+               _tmp76_ = flock;
+               vala_ccode_file_add_type_member_declaration (_tmp75_, (ValaCCodeNode*) _tmp76_);
                _vala_ccode_node_unref0 (flock_decl);
                _vala_ccode_node_unref0 (flock);
        }
-       _tmp71_ = f;
-       _tmp72_ = vala_variable_get_variable_type ((ValaVariable*) _tmp71_);
-       _tmp73_ = _tmp72_;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp73_, VALA_TYPE_ARRAY_TYPE)) {
-               ValaField* _tmp74_ = NULL;
-               gboolean _tmp75_ = FALSE;
-               _tmp74_ = f;
-               _tmp75_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp74_);
-               _tmp70_ = _tmp75_;
+       _tmp78_ = f;
+       _tmp79_ = vala_variable_get_variable_type ((ValaVariable*) _tmp78_);
+       _tmp80_ = _tmp79_;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp80_, VALA_TYPE_ARRAY_TYPE)) {
+               ValaField* _tmp81_ = NULL;
+               gboolean _tmp82_ = FALSE;
+               _tmp81_ = f;
+               _tmp82_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp81_);
+               _tmp77_ = _tmp82_;
        } else {
-               _tmp70_ = FALSE;
+               _tmp77_ = FALSE;
        }
-       if (_tmp70_) {
+       if (_tmp77_) {
                ValaArrayType* array_type = NULL;
-               ValaField* _tmp76_ = NULL;
-               ValaDataType* _tmp77_ = NULL;
-               ValaDataType* _tmp78_ = NULL;
-               ValaArrayType* _tmp79_ = NULL;
-               ValaArrayType* _tmp80_ = NULL;
-               gboolean _tmp81_ = FALSE;
-               gboolean _tmp82_ = FALSE;
-               _tmp76_ = f;
-               _tmp77_ = vala_variable_get_variable_type ((ValaVariable*) _tmp76_);
-               _tmp78_ = _tmp77_;
-               _tmp79_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp78_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-               array_type = _tmp79_;
-               _tmp80_ = array_type;
-               _tmp81_ = vala_array_type_get_fixed_length (_tmp80_);
-               _tmp82_ = _tmp81_;
-               if (!_tmp82_) {
+               ValaField* _tmp83_ = NULL;
+               ValaDataType* _tmp84_ = NULL;
+               ValaDataType* _tmp85_ = NULL;
+               ValaArrayType* _tmp86_ = NULL;
+               ValaArrayType* _tmp87_ = NULL;
+               gboolean _tmp88_ = FALSE;
+               gboolean _tmp89_ = FALSE;
+               _tmp83_ = f;
+               _tmp84_ = vala_variable_get_variable_type ((ValaVariable*) _tmp83_);
+               _tmp85_ = _tmp84_;
+               _tmp86_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp85_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+               array_type = _tmp86_;
+               _tmp87_ = array_type;
+               _tmp88_ = vala_array_type_get_fixed_length (_tmp87_);
+               _tmp89_ = _tmp88_;
+               if (!_tmp89_) {
                        {
                                gint dim = 0;
                                dim = 1;
                                {
-                                       gboolean _tmp83_ = FALSE;
-                                       _tmp83_ = TRUE;
+                                       gboolean _tmp90_ = FALSE;
+                                       _tmp90_ = TRUE;
                                        while (TRUE) {
-                                               gint _tmp85_ = 0;
-                                               ValaArrayType* _tmp86_ = NULL;
-                                               gint _tmp87_ = 0;
-                                               gint _tmp88_ = 0;
+                                               gint _tmp92_ = 0;
+                                               ValaArrayType* _tmp93_ = NULL;
+                                               gint _tmp94_ = 0;
+                                               gint _tmp95_ = 0;
                                                ValaDataType* len_type = NULL;
-                                               ValaDataType* _tmp89_ = NULL;
-                                               ValaDataType* _tmp90_ = NULL;
-                                               ValaDataType* _tmp91_ = NULL;
-                                               gchar* _tmp92_ = NULL;
-                                               gchar* _tmp93_ = NULL;
-                                               ValaCCodeDeclaration* _tmp94_ = NULL;
-                                               ValaCCodeDeclaration* _tmp95_ = NULL;
-                                               ValaField* _tmp96_ = NULL;
-                                               gchar* _tmp97_ = NULL;
-                                               gchar* _tmp98_ = NULL;
-                                               gint _tmp99_ = 0;
+                                               ValaDataType* _tmp96_ = NULL;
+                                               ValaDataType* _tmp97_ = NULL;
+                                               ValaDataType* _tmp98_ = NULL;
+                                               gchar* _tmp99_ = NULL;
                                                gchar* _tmp100_ = NULL;
-                                               gchar* _tmp101_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp102_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp103_ = NULL;
-                                               ValaField* _tmp104_ = NULL;
-                                               gboolean _tmp105_ = FALSE;
-                                               ValaCCodeFile* _tmp108_ = NULL;
-                                               ValaCCodeDeclaration* _tmp109_ = NULL;
-                                               if (!_tmp83_) {
-                                                       gint _tmp84_ = 0;
-                                                       _tmp84_ = dim;
-                                                       dim = _tmp84_ + 1;
+                                               ValaCCodeDeclaration* _tmp101_ = NULL;
+                                               ValaCCodeDeclaration* _tmp102_ = NULL;
+                                               ValaField* _tmp103_ = NULL;
+                                               gchar* _tmp104_ = NULL;
+                                               gchar* _tmp105_ = NULL;
+                                               gint _tmp106_ = 0;
+                                               gchar* _tmp107_ = NULL;
+                                               gchar* _tmp108_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp109_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp110_ = NULL;
+                                               ValaField* _tmp111_ = NULL;
+                                               gboolean _tmp112_ = FALSE;
+                                               ValaCCodeFile* _tmp122_ = NULL;
+                                               ValaCCodeDeclaration* _tmp123_ = NULL;
+                                               if (!_tmp90_) {
+                                                       gint _tmp91_ = 0;
+                                                       _tmp91_ = dim;
+                                                       dim = _tmp91_ + 1;
                                                }
-                                               _tmp83_ = FALSE;
-                                               _tmp85_ = dim;
-                                               _tmp86_ = array_type;
-                                               _tmp87_ = vala_array_type_get_rank (_tmp86_);
-                                               _tmp88_ = _tmp87_;
-                                               if (!(_tmp85_ <= _tmp88_)) {
+                                               _tmp90_ = FALSE;
+                                               _tmp92_ = dim;
+                                               _tmp93_ = array_type;
+                                               _tmp94_ = vala_array_type_get_rank (_tmp93_);
+                                               _tmp95_ = _tmp94_;
+                                               if (!(_tmp92_ <= _tmp95_)) {
                                                        break;
                                                }
-                                               _tmp89_ = self->int_type;
-                                               _tmp90_ = vala_data_type_copy (_tmp89_);
-                                               len_type = _tmp90_;
-                                               _tmp91_ = len_type;
-                                               _tmp92_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp91_);
-                                               _tmp93_ = _tmp92_;
-                                               _tmp94_ = vala_ccode_declaration_new (_tmp93_);
+                                               _tmp96_ = self->int_type;
+                                               _tmp97_ = vala_data_type_copy (_tmp96_);
+                                               len_type = _tmp97_;
+                                               _tmp98_ = len_type;
+                                               _tmp99_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp98_);
+                                               _tmp100_ = _tmp99_;
+                                               _tmp101_ = vala_ccode_declaration_new (_tmp100_);
                                                _vala_ccode_node_unref0 (_cdecl_);
-                                               _cdecl_ = _tmp94_;
-                                               _g_free0 (_tmp93_);
-                                               _tmp95_ = _cdecl_;
-                                               _tmp96_ = f;
-                                               _tmp97_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp96_);
-                                               _tmp98_ = _tmp97_;
-                                               _tmp99_ = dim;
-                                               _tmp100_ = vala_ccode_base_module_get_array_length_cname (self, _tmp98_, _tmp99_);
-                                               _tmp101_ = _tmp100_;
-                                               _tmp102_ = vala_ccode_variable_declarator_new (_tmp101_, NULL, NULL);
-                                               _tmp103_ = _tmp102_;
-                                               vala_ccode_declaration_add_declarator (_tmp95_, (ValaCCodeDeclarator*) _tmp103_);
-                                               _vala_ccode_node_unref0 (_tmp103_);
-                                               _g_free0 (_tmp101_);
-                                               _g_free0 (_tmp98_);
-                                               _tmp104_ = f;
-                                               _tmp105_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp104_);
-                                               if (_tmp105_) {
-                                                       ValaCCodeDeclaration* _tmp106_ = NULL;
-                                                       _tmp106_ = _cdecl_;
-                                                       vala_ccode_declaration_set_modifiers (_tmp106_, VALA_CCODE_MODIFIERS_STATIC);
+                                               _cdecl_ = _tmp101_;
+                                               _g_free0 (_tmp100_);
+                                               _tmp102_ = _cdecl_;
+                                               _tmp103_ = f;
+                                               _tmp104_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp103_);
+                                               _tmp105_ = _tmp104_;
+                                               _tmp106_ = dim;
+                                               _tmp107_ = vala_ccode_base_module_get_array_length_cname (self, _tmp105_, _tmp106_);
+                                               _tmp108_ = _tmp107_;
+                                               _tmp109_ = vala_ccode_variable_declarator_new (_tmp108_, NULL, NULL);
+                                               _tmp110_ = _tmp109_;
+                                               vala_ccode_declaration_add_declarator (_tmp102_, (ValaCCodeDeclarator*) _tmp110_);
+                                               _vala_ccode_node_unref0 (_tmp110_);
+                                               _g_free0 (_tmp108_);
+                                               _g_free0 (_tmp105_);
+                                               _tmp111_ = f;
+                                               _tmp112_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp111_);
+                                               if (_tmp112_) {
+                                                       ValaCCodeDeclaration* _tmp113_ = NULL;
+                                                       _tmp113_ = _cdecl_;
+                                                       vala_ccode_declaration_set_modifiers (_tmp113_, VALA_CCODE_MODIFIERS_STATIC);
                                                } else {
-                                                       ValaCCodeDeclaration* _tmp107_ = NULL;
-                                                       _tmp107_ = _cdecl_;
-                                                       vala_ccode_declaration_set_modifiers (_tmp107_, VALA_CCODE_MODIFIERS_EXTERN);
+                                                       gboolean _tmp114_ = FALSE;
+                                                       ValaCodeContext* _tmp115_ = NULL;
+                                                       gboolean _tmp116_ = FALSE;
+                                                       gboolean _tmp117_ = FALSE;
+                                                       _tmp115_ = self->priv->_context;
+                                                       _tmp116_ = vala_code_context_get_hide_internal (_tmp115_);
+                                                       _tmp117_ = _tmp116_;
+                                                       if (_tmp117_) {
+                                                               ValaField* _tmp118_ = NULL;
+                                                               gboolean _tmp119_ = FALSE;
+                                                               _tmp118_ = f;
+                                                               _tmp119_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp118_);
+                                                               _tmp114_ = _tmp119_;
+                                                       } else {
+                                                               _tmp114_ = FALSE;
+                                                       }
+                                                       if (_tmp114_) {
+                                                               ValaCCodeDeclaration* _tmp120_ = NULL;
+                                                               _tmp120_ = _cdecl_;
+                                                               vala_ccode_declaration_set_modifiers (_tmp120_, VALA_CCODE_MODIFIERS_INTERNAL);
+                                                       } else {
+                                                               ValaCCodeDeclaration* _tmp121_ = NULL;
+                                                               _tmp121_ = _cdecl_;
+                                                               vala_ccode_declaration_set_modifiers (_tmp121_, VALA_CCODE_MODIFIERS_EXTERN);
+                                                       }
                                                }
-                                               _tmp108_ = decl_space;
-                                               _tmp109_ = _cdecl_;
-                                               vala_ccode_file_add_type_member_declaration (_tmp108_, (ValaCCodeNode*) _tmp109_);
+                                               _tmp122_ = decl_space;
+                                               _tmp123_ = _cdecl_;
+                                               vala_ccode_file_add_type_member_declaration (_tmp122_, (ValaCCodeNode*) _tmp123_);
                                                _vala_code_node_unref0 (len_type);
                                        }
                                }
@@ -4601,132 +4678,176 @@ void vala_ccode_base_module_generate_field_declaration (ValaCCodeBaseModule* sel
                }
                _vala_code_node_unref0 (array_type);
        } else {
-               ValaField* _tmp110_ = NULL;
-               ValaDataType* _tmp111_ = NULL;
-               ValaDataType* _tmp112_ = NULL;
-               _tmp110_ = f;
-               _tmp111_ = vala_variable_get_variable_type ((ValaVariable*) _tmp110_);
-               _tmp112_ = _tmp111_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp112_, VALA_TYPE_DELEGATE_TYPE)) {
+               ValaField* _tmp124_ = NULL;
+               ValaDataType* _tmp125_ = NULL;
+               ValaDataType* _tmp126_ = NULL;
+               _tmp124_ = f;
+               _tmp125_ = vala_variable_get_variable_type ((ValaVariable*) _tmp124_);
+               _tmp126_ = _tmp125_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp126_, VALA_TYPE_DELEGATE_TYPE)) {
                        ValaDelegateType* delegate_type = NULL;
-                       ValaField* _tmp113_ = NULL;
-                       ValaDataType* _tmp114_ = NULL;
-                       ValaDataType* _tmp115_ = NULL;
-                       ValaDelegateType* _tmp116_ = NULL;
-                       ValaDelegateType* _tmp117_ = NULL;
-                       ValaDelegate* _tmp118_ = NULL;
-                       ValaDelegate* _tmp119_ = NULL;
-                       gboolean _tmp120_ = FALSE;
-                       gboolean _tmp121_ = FALSE;
-                       _tmp113_ = f;
-                       _tmp114_ = vala_variable_get_variable_type ((ValaVariable*) _tmp113_);
-                       _tmp115_ = _tmp114_;
-                       _tmp116_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp115_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                       delegate_type = _tmp116_;
-                       _tmp117_ = delegate_type;
-                       _tmp118_ = vala_delegate_type_get_delegate_symbol (_tmp117_);
-                       _tmp119_ = _tmp118_;
-                       _tmp120_ = vala_delegate_get_has_target (_tmp119_);
-                       _tmp121_ = _tmp120_;
-                       if (_tmp121_) {
-                               ValaCCodeDeclaration* _tmp122_ = NULL;
-                               ValaCCodeDeclaration* _tmp123_ = NULL;
-                               ValaField* _tmp124_ = NULL;
-                               gchar* _tmp125_ = NULL;
-                               gchar* _tmp126_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp127_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp128_ = NULL;
-                               ValaField* _tmp129_ = NULL;
-                               gboolean _tmp130_ = FALSE;
-                               ValaCCodeFile* _tmp133_ = NULL;
-                               ValaCCodeDeclaration* _tmp134_ = NULL;
-                               gboolean _tmp135_ = FALSE;
-                               ValaDelegateType* _tmp136_ = NULL;
-                               gboolean _tmp137_ = FALSE;
-                               gboolean _tmp138_ = FALSE;
-                               _tmp122_ = vala_ccode_declaration_new ("gpointer");
+                       ValaField* _tmp127_ = NULL;
+                       ValaDataType* _tmp128_ = NULL;
+                       ValaDataType* _tmp129_ = NULL;
+                       ValaDelegateType* _tmp130_ = NULL;
+                       ValaDelegateType* _tmp131_ = NULL;
+                       ValaDelegate* _tmp132_ = NULL;
+                       ValaDelegate* _tmp133_ = NULL;
+                       gboolean _tmp134_ = FALSE;
+                       gboolean _tmp135_ = FALSE;
+                       _tmp127_ = f;
+                       _tmp128_ = vala_variable_get_variable_type ((ValaVariable*) _tmp127_);
+                       _tmp129_ = _tmp128_;
+                       _tmp130_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp129_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                       delegate_type = _tmp130_;
+                       _tmp131_ = delegate_type;
+                       _tmp132_ = vala_delegate_type_get_delegate_symbol (_tmp131_);
+                       _tmp133_ = _tmp132_;
+                       _tmp134_ = vala_delegate_get_has_target (_tmp133_);
+                       _tmp135_ = _tmp134_;
+                       if (_tmp135_) {
+                               ValaCCodeDeclaration* _tmp136_ = NULL;
+                               ValaCCodeDeclaration* _tmp137_ = NULL;
+                               ValaField* _tmp138_ = NULL;
+                               gchar* _tmp139_ = NULL;
+                               gchar* _tmp140_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp141_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp142_ = NULL;
+                               ValaField* _tmp143_ = NULL;
+                               gboolean _tmp144_ = FALSE;
+                               ValaCCodeFile* _tmp154_ = NULL;
+                               ValaCCodeDeclaration* _tmp155_ = NULL;
+                               gboolean _tmp156_ = FALSE;
+                               ValaDelegateType* _tmp157_ = NULL;
+                               gboolean _tmp158_ = FALSE;
+                               gboolean _tmp159_ = FALSE;
+                               _tmp136_ = vala_ccode_declaration_new ("gpointer");
                                _vala_ccode_node_unref0 (_cdecl_);
-                               _cdecl_ = _tmp122_;
-                               _tmp123_ = _cdecl_;
-                               _tmp124_ = f;
-                               _tmp125_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp124_);
-                               _tmp126_ = _tmp125_;
-                               _tmp127_ = vala_ccode_variable_declarator_new (_tmp126_, NULL, NULL);
-                               _tmp128_ = _tmp127_;
-                               vala_ccode_declaration_add_declarator (_tmp123_, (ValaCCodeDeclarator*) _tmp128_);
-                               _vala_ccode_node_unref0 (_tmp128_);
-                               _g_free0 (_tmp126_);
-                               _tmp129_ = f;
-                               _tmp130_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp129_);
-                               if (_tmp130_) {
-                                       ValaCCodeDeclaration* _tmp131_ = NULL;
-                                       _tmp131_ = _cdecl_;
-                                       vala_ccode_declaration_set_modifiers (_tmp131_, VALA_CCODE_MODIFIERS_STATIC);
+                               _cdecl_ = _tmp136_;
+                               _tmp137_ = _cdecl_;
+                               _tmp138_ = f;
+                               _tmp139_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp138_);
+                               _tmp140_ = _tmp139_;
+                               _tmp141_ = vala_ccode_variable_declarator_new (_tmp140_, NULL, NULL);
+                               _tmp142_ = _tmp141_;
+                               vala_ccode_declaration_add_declarator (_tmp137_, (ValaCCodeDeclarator*) _tmp142_);
+                               _vala_ccode_node_unref0 (_tmp142_);
+                               _g_free0 (_tmp140_);
+                               _tmp143_ = f;
+                               _tmp144_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp143_);
+                               if (_tmp144_) {
+                                       ValaCCodeDeclaration* _tmp145_ = NULL;
+                                       _tmp145_ = _cdecl_;
+                                       vala_ccode_declaration_set_modifiers (_tmp145_, VALA_CCODE_MODIFIERS_STATIC);
                                } else {
-                                       ValaCCodeDeclaration* _tmp132_ = NULL;
-                                       _tmp132_ = _cdecl_;
-                                       vala_ccode_declaration_set_modifiers (_tmp132_, VALA_CCODE_MODIFIERS_EXTERN);
+                                       gboolean _tmp146_ = FALSE;
+                                       ValaCodeContext* _tmp147_ = NULL;
+                                       gboolean _tmp148_ = FALSE;
+                                       gboolean _tmp149_ = FALSE;
+                                       _tmp147_ = self->priv->_context;
+                                       _tmp148_ = vala_code_context_get_hide_internal (_tmp147_);
+                                       _tmp149_ = _tmp148_;
+                                       if (_tmp149_) {
+                                               ValaField* _tmp150_ = NULL;
+                                               gboolean _tmp151_ = FALSE;
+                                               _tmp150_ = f;
+                                               _tmp151_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp150_);
+                                               _tmp146_ = _tmp151_;
+                                       } else {
+                                               _tmp146_ = FALSE;
+                                       }
+                                       if (_tmp146_) {
+                                               ValaCCodeDeclaration* _tmp152_ = NULL;
+                                               _tmp152_ = _cdecl_;
+                                               vala_ccode_declaration_set_modifiers (_tmp152_, VALA_CCODE_MODIFIERS_INTERNAL);
+                                       } else {
+                                               ValaCCodeDeclaration* _tmp153_ = NULL;
+                                               _tmp153_ = _cdecl_;
+                                               vala_ccode_declaration_set_modifiers (_tmp153_, VALA_CCODE_MODIFIERS_EXTERN);
+                                       }
                                }
-                               _tmp133_ = decl_space;
-                               _tmp134_ = _cdecl_;
-                               vala_ccode_file_add_type_member_declaration (_tmp133_, (ValaCCodeNode*) _tmp134_);
-                               _tmp136_ = delegate_type;
-                               _tmp137_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp136_);
-                               _tmp138_ = _tmp137_;
-                               if (_tmp138_) {
-                                       ValaDelegateType* _tmp139_ = NULL;
-                                       gboolean _tmp140_ = FALSE;
-                                       gboolean _tmp141_ = FALSE;
-                                       _tmp139_ = delegate_type;
-                                       _tmp140_ = vala_delegate_type_get_is_called_once (_tmp139_);
-                                       _tmp141_ = _tmp140_;
-                                       _tmp135_ = !_tmp141_;
+                               _tmp154_ = decl_space;
+                               _tmp155_ = _cdecl_;
+                               vala_ccode_file_add_type_member_declaration (_tmp154_, (ValaCCodeNode*) _tmp155_);
+                               _tmp157_ = delegate_type;
+                               _tmp158_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp157_);
+                               _tmp159_ = _tmp158_;
+                               if (_tmp159_) {
+                                       ValaDelegateType* _tmp160_ = NULL;
+                                       gboolean _tmp161_ = FALSE;
+                                       gboolean _tmp162_ = FALSE;
+                                       _tmp160_ = delegate_type;
+                                       _tmp161_ = vala_delegate_type_get_is_called_once (_tmp160_);
+                                       _tmp162_ = _tmp161_;
+                                       _tmp156_ = !_tmp162_;
                                } else {
-                                       _tmp135_ = FALSE;
+                                       _tmp156_ = FALSE;
                                }
-                               if (_tmp135_) {
-                                       ValaCCodeDeclaration* _tmp142_ = NULL;
-                                       ValaCCodeDeclaration* _tmp143_ = NULL;
-                                       ValaField* _tmp144_ = NULL;
-                                       gchar* _tmp145_ = NULL;
-                                       gchar* _tmp146_ = NULL;
-                                       gchar* _tmp147_ = NULL;
-                                       gchar* _tmp148_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp149_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp150_ = NULL;
-                                       ValaField* _tmp151_ = NULL;
-                                       gboolean _tmp152_ = FALSE;
-                                       ValaCCodeFile* _tmp155_ = NULL;
-                                       ValaCCodeDeclaration* _tmp156_ = NULL;
-                                       _tmp142_ = vala_ccode_declaration_new ("GDestroyNotify");
+                               if (_tmp156_) {
+                                       ValaCCodeDeclaration* _tmp163_ = NULL;
+                                       ValaCCodeDeclaration* _tmp164_ = NULL;
+                                       ValaField* _tmp165_ = NULL;
+                                       gchar* _tmp166_ = NULL;
+                                       gchar* _tmp167_ = NULL;
+                                       gchar* _tmp168_ = NULL;
+                                       gchar* _tmp169_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp170_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp171_ = NULL;
+                                       ValaField* _tmp172_ = NULL;
+                                       gboolean _tmp173_ = FALSE;
+                                       ValaCCodeFile* _tmp183_ = NULL;
+                                       ValaCCodeDeclaration* _tmp184_ = NULL;
+                                       _tmp163_ = vala_ccode_declaration_new ("GDestroyNotify");
                                        _vala_ccode_node_unref0 (_cdecl_);
-                                       _cdecl_ = _tmp142_;
-                                       _tmp143_ = _cdecl_;
-                                       _tmp144_ = f;
-                                       _tmp145_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp144_);
-                                       _tmp146_ = _tmp145_;
-                                       _tmp147_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp146_);
-                                       _tmp148_ = _tmp147_;
-                                       _tmp149_ = vala_ccode_variable_declarator_new (_tmp148_, NULL, NULL);
-                                       _tmp150_ = _tmp149_;
-                                       vala_ccode_declaration_add_declarator (_tmp143_, (ValaCCodeDeclarator*) _tmp150_);
-                                       _vala_ccode_node_unref0 (_tmp150_);
-                                       _g_free0 (_tmp148_);
-                                       _g_free0 (_tmp146_);
-                                       _tmp151_ = f;
-                                       _tmp152_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp151_);
-                                       if (_tmp152_) {
-                                               ValaCCodeDeclaration* _tmp153_ = NULL;
-                                               _tmp153_ = _cdecl_;
-                                               vala_ccode_declaration_set_modifiers (_tmp153_, VALA_CCODE_MODIFIERS_STATIC);
+                                       _cdecl_ = _tmp163_;
+                                       _tmp164_ = _cdecl_;
+                                       _tmp165_ = f;
+                                       _tmp166_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp165_);
+                                       _tmp167_ = _tmp166_;
+                                       _tmp168_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp167_);
+                                       _tmp169_ = _tmp168_;
+                                       _tmp170_ = vala_ccode_variable_declarator_new (_tmp169_, NULL, NULL);
+                                       _tmp171_ = _tmp170_;
+                                       vala_ccode_declaration_add_declarator (_tmp164_, (ValaCCodeDeclarator*) _tmp171_);
+                                       _vala_ccode_node_unref0 (_tmp171_);
+                                       _g_free0 (_tmp169_);
+                                       _g_free0 (_tmp167_);
+                                       _tmp172_ = f;
+                                       _tmp173_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp172_);
+                                       if (_tmp173_) {
+                                               ValaCCodeDeclaration* _tmp174_ = NULL;
+                                               _tmp174_ = _cdecl_;
+                                               vala_ccode_declaration_set_modifiers (_tmp174_, VALA_CCODE_MODIFIERS_STATIC);
                                        } else {
-                                               ValaCCodeDeclaration* _tmp154_ = NULL;
-                                               _tmp154_ = _cdecl_;
-                                               vala_ccode_declaration_set_modifiers (_tmp154_, VALA_CCODE_MODIFIERS_EXTERN);
+                                               gboolean _tmp175_ = FALSE;
+                                               ValaCodeContext* _tmp176_ = NULL;
+                                               gboolean _tmp177_ = FALSE;
+                                               gboolean _tmp178_ = FALSE;
+                                               _tmp176_ = self->priv->_context;
+                                               _tmp177_ = vala_code_context_get_hide_internal (_tmp176_);
+                                               _tmp178_ = _tmp177_;
+                                               if (_tmp178_) {
+                                                       ValaField* _tmp179_ = NULL;
+                                                       gboolean _tmp180_ = FALSE;
+                                                       _tmp179_ = f;
+                                                       _tmp180_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp179_);
+                                                       _tmp175_ = _tmp180_;
+                                               } else {
+                                                       _tmp175_ = FALSE;
+                                               }
+                                               if (_tmp175_) {
+                                                       ValaCCodeDeclaration* _tmp181_ = NULL;
+                                                       _tmp181_ = _cdecl_;
+                                                       vala_ccode_declaration_set_modifiers (_tmp181_, VALA_CCODE_MODIFIERS_INTERNAL);
+                                               } else {
+                                                       ValaCCodeDeclaration* _tmp182_ = NULL;
+                                                       _tmp182_ = _cdecl_;
+                                                       vala_ccode_declaration_set_modifiers (_tmp182_, VALA_CCODE_MODIFIERS_EXTERN);
+                                               }
                                        }
-                                       _tmp155_ = decl_space;
-                                       _tmp156_ = _cdecl_;
-                                       vala_ccode_file_add_type_member_declaration (_tmp155_, (ValaCCodeNode*) _tmp156_);
+                                       _tmp183_ = decl_space;
+                                       _tmp184_ = _cdecl_;
+                                       vala_ccode_file_add_type_member_declaration (_tmp183_, (ValaCCodeNode*) _tmp184_);
                                }
                        }
                        _vala_code_node_unref0 (delegate_type);
@@ -4827,11 +4948,11 @@ static void vala_ccode_base_module_real_visit_field (ValaCodeVisitor* base, Vala
                ValaField* _tmp47_ = NULL;
                ValaExpression* _tmp48_ = NULL;
                ValaExpression* _tmp49_ = NULL;
-               gboolean _tmp167_ = FALSE;
-               ValaField* _tmp168_ = NULL;
-               ValaDataType* _tmp169_ = NULL;
-               ValaDataType* _tmp170_ = NULL;
-               gboolean _tmp171_ = FALSE;
+               gboolean _tmp172_ = FALSE;
+               ValaField* _tmp173_ = NULL;
+               ValaDataType* _tmp174_ = NULL;
+               ValaDataType* _tmp175_ = NULL;
+               gboolean _tmp176_ = FALSE;
                _tmp29_ = is_gtypeinstance;
                if (_tmp29_) {
                        ValaField* _tmp30_ = NULL;
@@ -4897,16 +5018,13 @@ static void vala_ccode_base_module_real_visit_field (ValaCodeVisitor* base, Vala
                        ValaExpression* _tmp55_ = NULL;
                        ValaExpression* _tmp56_ = NULL;
                        ValaCCodeExpression* _tmp57_ = NULL;
-                       ValaCCodeFunction* _tmp58_ = NULL;
-                       ValaCCodeFunction* _tmp59_ = NULL;
-                       ValaCCodeExpression* _tmp60_ = NULL;
-                       ValaCCodeExpression* _tmp61_ = NULL;
+                       ValaField* _tmp58_ = NULL;
+                       ValaField* _tmp59_ = NULL;
+                       ValaExpression* _tmp60_ = NULL;
+                       ValaExpression* _tmp61_ = NULL;
                        gboolean _tmp62_ = FALSE;
-                       ValaField* _tmp63_ = NULL;
-                       ValaDataType* _tmp64_ = NULL;
-                       ValaDataType* _tmp65_ = NULL;
-                       ValaArrayList* _tmp165_ = NULL;
-                       ValaArrayList* _tmp166_ = NULL;
+                       ValaArrayList* _tmp170_ = NULL;
+                       ValaArrayList* _tmp171_ = NULL;
                        _tmp50_ = self->instance_init_context;
                        vala_ccode_base_module_push_context (self, _tmp50_);
                        _tmp51_ = f;
@@ -4918,1046 +5036,1061 @@ static void vala_ccode_base_module_real_visit_field (ValaCodeVisitor* base, Vala
                        _tmp56_ = _tmp55_;
                        _tmp57_ = vala_ccode_base_module_get_cvalue (self, _tmp56_);
                        rhs = _tmp57_;
-                       _tmp58_ = vala_ccode_base_module_get_ccode (self);
-                       _tmp59_ = _tmp58_;
-                       _tmp60_ = lhs;
-                       _tmp61_ = rhs;
-                       vala_ccode_function_add_assignment (_tmp59_, _tmp60_, _tmp61_);
-                       _tmp63_ = f;
-                       _tmp64_ = vala_variable_get_variable_type ((ValaVariable*) _tmp63_);
-                       _tmp65_ = _tmp64_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp65_, VALA_TYPE_ARRAY_TYPE)) {
-                               ValaField* _tmp66_ = NULL;
+                       _tmp58_ = f;
+                       _tmp59_ = f;
+                       _tmp60_ = vala_variable_get_initializer ((ValaVariable*) _tmp59_);
+                       _tmp61_ = _tmp60_;
+                       _tmp62_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp58_, _tmp61_);
+                       if (!_tmp62_) {
+                               ValaCCodeFunction* _tmp63_ = NULL;
+                               ValaCCodeFunction* _tmp64_ = NULL;
+                               ValaCCodeExpression* _tmp65_ = NULL;
+                               ValaCCodeExpression* _tmp66_ = NULL;
                                gboolean _tmp67_ = FALSE;
-                               _tmp66_ = f;
-                               _tmp67_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp66_);
-                               _tmp62_ = _tmp67_;
-                       } else {
-                               _tmp62_ = FALSE;
-                       }
-                       if (_tmp62_) {
-                               ValaArrayType* array_type = NULL;
                                ValaField* _tmp68_ = NULL;
                                ValaDataType* _tmp69_ = NULL;
                                ValaDataType* _tmp70_ = NULL;
-                               ValaArrayType* _tmp71_ = NULL;
-                               ValaTargetValue* field_value = NULL;
-                               ValaField* _tmp72_ = NULL;
-                               ValaField* _tmp73_ = NULL;
-                               ValaSymbol* _tmp74_ = NULL;
-                               ValaSymbol* _tmp75_ = NULL;
-                               ValaTargetValue* _tmp76_ = NULL;
-                               ValaTargetValue* _tmp77_ = NULL;
-                               ValaTargetValue* _tmp78_ = NULL;
-                               ValaTargetValue* _tmp79_ = NULL;
-                               ValaGLibValue* glib_value = NULL;
-                               ValaField* _tmp80_ = NULL;
-                               ValaExpression* _tmp81_ = NULL;
-                               ValaExpression* _tmp82_ = NULL;
-                               ValaTargetValue* _tmp83_ = NULL;
-                               ValaTargetValue* _tmp84_ = NULL;
-                               ValaGLibValue* _tmp85_ = NULL;
-                               ValaGLibValue* _tmp86_ = NULL;
-                               ValaList* _tmp87_ = NULL;
-                               gboolean _tmp134_ = FALSE;
-                               ValaArrayType* _tmp135_ = NULL;
-                               gint _tmp136_ = 0;
-                               gint _tmp137_ = 0;
+                               _tmp63_ = vala_ccode_base_module_get_ccode (self);
+                               _tmp64_ = _tmp63_;
+                               _tmp65_ = lhs;
+                               _tmp66_ = rhs;
+                               vala_ccode_function_add_assignment (_tmp64_, _tmp65_, _tmp66_);
                                _tmp68_ = f;
                                _tmp69_ = vala_variable_get_variable_type ((ValaVariable*) _tmp68_);
                                _tmp70_ = _tmp69_;
-                               _tmp71_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp70_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                               array_type = _tmp71_;
-                               _tmp72_ = f;
-                               _tmp73_ = f;
-                               _tmp74_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp73_);
-                               _tmp75_ = _tmp74_;
-                               _tmp76_ = vala_ccode_base_module_load_this_parameter (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp75_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
-                               _tmp77_ = _tmp76_;
-                               _tmp78_ = vala_ccode_base_module_get_field_cvalue (self, _tmp72_, _tmp77_);
-                               _tmp79_ = _tmp78_;
-                               _vala_target_value_unref0 (_tmp77_);
-                               field_value = _tmp79_;
-                               _tmp80_ = f;
-                               _tmp81_ = vala_variable_get_initializer ((ValaVariable*) _tmp80_);
-                               _tmp82_ = _tmp81_;
-                               _tmp83_ = vala_expression_get_target_value (_tmp82_);
-                               _tmp84_ = _tmp83_;
-                               _tmp85_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp84_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
-                               glib_value = _tmp85_;
-                               _tmp86_ = glib_value;
-                               _tmp87_ = _tmp86_->array_length_cvalues;
-                               if (_tmp87_ != NULL) {
-                                       {
-                                               gint dim = 0;
-                                               dim = 1;
-                                               {
-                                                       gboolean _tmp88_ = FALSE;
-                                                       _tmp88_ = TRUE;
-                                                       while (TRUE) {
-                                                               gint _tmp90_ = 0;
-                                                               ValaArrayType* _tmp91_ = NULL;
-                                                               gint _tmp92_ = 0;
-                                                               gint _tmp93_ = 0;
-                                                               ValaCCodeExpression* array_len_lhs = NULL;
-                                                               ValaTargetValue* _tmp94_ = NULL;
-                                                               gint _tmp95_ = 0;
-                                                               ValaCCodeExpression* _tmp96_ = NULL;
-                                                               ValaCCodeFunction* _tmp97_ = NULL;
-                                                               ValaCCodeFunction* _tmp98_ = NULL;
-                                                               ValaCCodeExpression* _tmp99_ = NULL;
-                                                               ValaGLibValue* _tmp100_ = NULL;
-                                                               gint _tmp101_ = 0;
-                                                               ValaCCodeExpression* _tmp102_ = NULL;
-                                                               ValaCCodeExpression* _tmp103_ = NULL;
-                                                               if (!_tmp88_) {
-                                                                       gint _tmp89_ = 0;
-                                                                       _tmp89_ = dim;
-                                                                       dim = _tmp89_ + 1;
-                                                               }
-                                                               _tmp88_ = FALSE;
-                                                               _tmp90_ = dim;
-                                                               _tmp91_ = array_type;
-                                                               _tmp92_ = vala_array_type_get_rank (_tmp91_);
-                                                               _tmp93_ = _tmp92_;
-                                                               if (!(_tmp90_ <= _tmp93_)) {
-                                                                       break;
-                                                               }
-                                                               _tmp94_ = field_value;
-                                                               _tmp95_ = dim;
-                                                               _tmp96_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp94_, _tmp95_);
-                                                               array_len_lhs = _tmp96_;
-                                                               _tmp97_ = vala_ccode_base_module_get_ccode (self);
-                                                               _tmp98_ = _tmp97_;
-                                                               _tmp99_ = array_len_lhs;
-                                                               _tmp100_ = glib_value;
-                                                               _tmp101_ = dim;
-                                                               _tmp102_ = vala_ccode_base_module_get_array_length_cvalue (self, (ValaTargetValue*) _tmp100_, _tmp101_);
-                                                               _tmp103_ = _tmp102_;
-                                                               vala_ccode_function_add_assignment (_tmp98_, _tmp99_, _tmp103_);
-                                                               _vala_ccode_node_unref0 (_tmp103_);
-                                                               _vala_ccode_node_unref0 (array_len_lhs);
-                                                       }
-                                               }
-                                       }
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp70_, VALA_TYPE_ARRAY_TYPE)) {
+                                       ValaField* _tmp71_ = NULL;
+                                       gboolean _tmp72_ = FALSE;
+                                       _tmp71_ = f;
+                                       _tmp72_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp71_);
+                                       _tmp67_ = _tmp72_;
                                } else {
-                                       ValaGLibValue* _tmp104_ = NULL;
-                                       gboolean _tmp105_ = FALSE;
-                                       _tmp104_ = glib_value;
-                                       _tmp105_ = _tmp104_->array_null_terminated;
-                                       if (_tmp105_) {
-                                               ValaCCodeFunctionCall* len_call = NULL;
-                                               ValaCCodeIdentifier* _tmp106_ = NULL;
-                                               ValaCCodeIdentifier* _tmp107_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp108_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp109_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp110_ = NULL;
-                                               ValaGLibValue* _tmp111_ = NULL;
-                                               ValaCCodeExpression* _tmp112_ = NULL;
-                                               ValaCCodeExpression* _tmp113_ = NULL;
-                                               ValaCCodeFunction* _tmp114_ = NULL;
-                                               ValaCCodeFunction* _tmp115_ = NULL;
-                                               ValaTargetValue* _tmp116_ = NULL;
-                                               ValaCCodeExpression* _tmp117_ = NULL;
-                                               ValaCCodeExpression* _tmp118_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp119_ = NULL;
-                                               self->requires_array_length = TRUE;
-                                               _tmp106_ = vala_ccode_identifier_new ("_vala_array_length");
-                                               _tmp107_ = _tmp106_;
-                                               _tmp108_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp107_);
-                                               _tmp109_ = _tmp108_;
-                                               _vala_ccode_node_unref0 (_tmp107_);
-                                               len_call = _tmp109_;
-                                               _tmp110_ = len_call;
-                                               _tmp111_ = glib_value;
-                                               _tmp112_ = vala_ccode_base_module_get_cvalue_ (self, (ValaTargetValue*) _tmp111_);
-                                               _tmp113_ = _tmp112_;
-                                               vala_ccode_function_call_add_argument (_tmp110_, _tmp113_);
-                                               _vala_ccode_node_unref0 (_tmp113_);
-                                               _tmp114_ = vala_ccode_base_module_get_ccode (self);
-                                               _tmp115_ = _tmp114_;
-                                               _tmp116_ = field_value;
-                                               _tmp117_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp116_, 1);
-                                               _tmp118_ = _tmp117_;
-                                               _tmp119_ = len_call;
-                                               vala_ccode_function_add_assignment (_tmp115_, _tmp118_, (ValaCCodeExpression*) _tmp119_);
-                                               _vala_ccode_node_unref0 (_tmp118_);
-                                               _vala_ccode_node_unref0 (len_call);
-                                       } else {
+                                       _tmp67_ = FALSE;
+                               }
+                               if (_tmp67_) {
+                                       ValaArrayType* array_type = NULL;
+                                       ValaField* _tmp73_ = NULL;
+                                       ValaDataType* _tmp74_ = NULL;
+                                       ValaDataType* _tmp75_ = NULL;
+                                       ValaArrayType* _tmp76_ = NULL;
+                                       ValaTargetValue* field_value = NULL;
+                                       ValaField* _tmp77_ = NULL;
+                                       ValaField* _tmp78_ = NULL;
+                                       ValaSymbol* _tmp79_ = NULL;
+                                       ValaSymbol* _tmp80_ = NULL;
+                                       ValaTargetValue* _tmp81_ = NULL;
+                                       ValaTargetValue* _tmp82_ = NULL;
+                                       ValaTargetValue* _tmp83_ = NULL;
+                                       ValaTargetValue* _tmp84_ = NULL;
+                                       ValaGLibValue* glib_value = NULL;
+                                       ValaField* _tmp85_ = NULL;
+                                       ValaExpression* _tmp86_ = NULL;
+                                       ValaExpression* _tmp87_ = NULL;
+                                       ValaTargetValue* _tmp88_ = NULL;
+                                       ValaTargetValue* _tmp89_ = NULL;
+                                       ValaGLibValue* _tmp90_ = NULL;
+                                       ValaGLibValue* _tmp91_ = NULL;
+                                       ValaList* _tmp92_ = NULL;
+                                       gboolean _tmp139_ = FALSE;
+                                       ValaArrayType* _tmp140_ = NULL;
+                                       gint _tmp141_ = 0;
+                                       gint _tmp142_ = 0;
+                                       _tmp73_ = f;
+                                       _tmp74_ = vala_variable_get_variable_type ((ValaVariable*) _tmp73_);
+                                       _tmp75_ = _tmp74_;
+                                       _tmp76_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp75_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                       array_type = _tmp76_;
+                                       _tmp77_ = f;
+                                       _tmp78_ = f;
+                                       _tmp79_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp78_);
+                                       _tmp80_ = _tmp79_;
+                                       _tmp81_ = vala_ccode_base_module_load_this_parameter (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp80_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+                                       _tmp82_ = _tmp81_;
+                                       _tmp83_ = vala_ccode_base_module_get_field_cvalue (self, _tmp77_, _tmp82_);
+                                       _tmp84_ = _tmp83_;
+                                       _vala_target_value_unref0 (_tmp82_);
+                                       field_value = _tmp84_;
+                                       _tmp85_ = f;
+                                       _tmp86_ = vala_variable_get_initializer ((ValaVariable*) _tmp85_);
+                                       _tmp87_ = _tmp86_;
+                                       _tmp88_ = vala_expression_get_target_value (_tmp87_);
+                                       _tmp89_ = _tmp88_;
+                                       _tmp90_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp89_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
+                                       glib_value = _tmp90_;
+                                       _tmp91_ = glib_value;
+                                       _tmp92_ = _tmp91_->array_length_cvalues;
+                                       if (_tmp92_ != NULL) {
                                                {
                                                        gint dim = 0;
                                                        dim = 1;
                                                        {
-                                                               gboolean _tmp120_ = FALSE;
-                                                               _tmp120_ = TRUE;
+                                                               gboolean _tmp93_ = FALSE;
+                                                               _tmp93_ = TRUE;
                                                                while (TRUE) {
-                                                                       gint _tmp122_ = 0;
-                                                                       ValaArrayType* _tmp123_ = NULL;
-                                                                       gint _tmp124_ = 0;
-                                                                       gint _tmp125_ = 0;
-                                                                       ValaCCodeFunction* _tmp126_ = NULL;
-                                                                       ValaCCodeFunction* _tmp127_ = NULL;
-                                                                       ValaTargetValue* _tmp128_ = NULL;
-                                                                       gint _tmp129_ = 0;
-                                                                       ValaCCodeExpression* _tmp130_ = NULL;
-                                                                       ValaCCodeExpression* _tmp131_ = NULL;
-                                                                       ValaCCodeConstant* _tmp132_ = NULL;
-                                                                       ValaCCodeConstant* _tmp133_ = NULL;
-                                                                       if (!_tmp120_) {
-                                                                               gint _tmp121_ = 0;
-                                                                               _tmp121_ = dim;
-                                                                               dim = _tmp121_ + 1;
+                                                                       gint _tmp95_ = 0;
+                                                                       ValaArrayType* _tmp96_ = NULL;
+                                                                       gint _tmp97_ = 0;
+                                                                       gint _tmp98_ = 0;
+                                                                       ValaCCodeExpression* array_len_lhs = NULL;
+                                                                       ValaTargetValue* _tmp99_ = NULL;
+                                                                       gint _tmp100_ = 0;
+                                                                       ValaCCodeExpression* _tmp101_ = NULL;
+                                                                       ValaCCodeFunction* _tmp102_ = NULL;
+                                                                       ValaCCodeFunction* _tmp103_ = NULL;
+                                                                       ValaCCodeExpression* _tmp104_ = NULL;
+                                                                       ValaGLibValue* _tmp105_ = NULL;
+                                                                       gint _tmp106_ = 0;
+                                                                       ValaCCodeExpression* _tmp107_ = NULL;
+                                                                       ValaCCodeExpression* _tmp108_ = NULL;
+                                                                       if (!_tmp93_) {
+                                                                               gint _tmp94_ = 0;
+                                                                               _tmp94_ = dim;
+                                                                               dim = _tmp94_ + 1;
                                                                        }
-                                                                       _tmp120_ = FALSE;
-                                                                       _tmp122_ = dim;
-                                                                       _tmp123_ = array_type;
-                                                                       _tmp124_ = vala_array_type_get_rank (_tmp123_);
-                                                                       _tmp125_ = _tmp124_;
-                                                                       if (!(_tmp122_ <= _tmp125_)) {
+                                                                       _tmp93_ = FALSE;
+                                                                       _tmp95_ = dim;
+                                                                       _tmp96_ = array_type;
+                                                                       _tmp97_ = vala_array_type_get_rank (_tmp96_);
+                                                                       _tmp98_ = _tmp97_;
+                                                                       if (!(_tmp95_ <= _tmp98_)) {
                                                                                break;
                                                                        }
-                                                                       _tmp126_ = vala_ccode_base_module_get_ccode (self);
-                                                                       _tmp127_ = _tmp126_;
-                                                                       _tmp128_ = field_value;
-                                                                       _tmp129_ = dim;
-                                                                       _tmp130_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp128_, _tmp129_);
-                                                                       _tmp131_ = _tmp130_;
-                                                                       _tmp132_ = vala_ccode_constant_new ("-1");
-                                                                       _tmp133_ = _tmp132_;
-                                                                       vala_ccode_function_add_assignment (_tmp127_, _tmp131_, (ValaCCodeExpression*) _tmp133_);
-                                                                       _vala_ccode_node_unref0 (_tmp133_);
-                                                                       _vala_ccode_node_unref0 (_tmp131_);
+                                                                       _tmp99_ = field_value;
+                                                                       _tmp100_ = dim;
+                                                                       _tmp101_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp99_, _tmp100_);
+                                                                       array_len_lhs = _tmp101_;
+                                                                       _tmp102_ = vala_ccode_base_module_get_ccode (self);
+                                                                       _tmp103_ = _tmp102_;
+                                                                       _tmp104_ = array_len_lhs;
+                                                                       _tmp105_ = glib_value;
+                                                                       _tmp106_ = dim;
+                                                                       _tmp107_ = vala_ccode_base_module_get_array_length_cvalue (self, (ValaTargetValue*) _tmp105_, _tmp106_);
+                                                                       _tmp108_ = _tmp107_;
+                                                                       vala_ccode_function_add_assignment (_tmp103_, _tmp104_, _tmp108_);
+                                                                       _vala_ccode_node_unref0 (_tmp108_);
+                                                                       _vala_ccode_node_unref0 (array_len_lhs);
+                                                               }
+                                                       }
+                                               }
+                                       } else {
+                                               ValaGLibValue* _tmp109_ = NULL;
+                                               gboolean _tmp110_ = FALSE;
+                                               _tmp109_ = glib_value;
+                                               _tmp110_ = _tmp109_->array_null_terminated;
+                                               if (_tmp110_) {
+                                                       ValaCCodeFunctionCall* len_call = NULL;
+                                                       ValaCCodeIdentifier* _tmp111_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp112_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp113_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp114_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp115_ = NULL;
+                                                       ValaGLibValue* _tmp116_ = NULL;
+                                                       ValaCCodeExpression* _tmp117_ = NULL;
+                                                       ValaCCodeExpression* _tmp118_ = NULL;
+                                                       ValaCCodeFunction* _tmp119_ = NULL;
+                                                       ValaCCodeFunction* _tmp120_ = NULL;
+                                                       ValaTargetValue* _tmp121_ = NULL;
+                                                       ValaCCodeExpression* _tmp122_ = NULL;
+                                                       ValaCCodeExpression* _tmp123_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp124_ = NULL;
+                                                       self->requires_array_length = TRUE;
+                                                       _tmp111_ = vala_ccode_identifier_new ("_vala_array_length");
+                                                       _tmp112_ = _tmp111_;
+                                                       _tmp113_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp112_);
+                                                       _tmp114_ = _tmp113_;
+                                                       _vala_ccode_node_unref0 (_tmp112_);
+                                                       len_call = _tmp114_;
+                                                       _tmp115_ = len_call;
+                                                       _tmp116_ = glib_value;
+                                                       _tmp117_ = vala_ccode_base_module_get_cvalue_ (self, (ValaTargetValue*) _tmp116_);
+                                                       _tmp118_ = _tmp117_;
+                                                       vala_ccode_function_call_add_argument (_tmp115_, _tmp118_);
+                                                       _vala_ccode_node_unref0 (_tmp118_);
+                                                       _tmp119_ = vala_ccode_base_module_get_ccode (self);
+                                                       _tmp120_ = _tmp119_;
+                                                       _tmp121_ = field_value;
+                                                       _tmp122_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp121_, 1);
+                                                       _tmp123_ = _tmp122_;
+                                                       _tmp124_ = len_call;
+                                                       vala_ccode_function_add_assignment (_tmp120_, _tmp123_, (ValaCCodeExpression*) _tmp124_);
+                                                       _vala_ccode_node_unref0 (_tmp123_);
+                                                       _vala_ccode_node_unref0 (len_call);
+                                               } else {
+                                                       {
+                                                               gint dim = 0;
+                                                               dim = 1;
+                                                               {
+                                                                       gboolean _tmp125_ = FALSE;
+                                                                       _tmp125_ = TRUE;
+                                                                       while (TRUE) {
+                                                                               gint _tmp127_ = 0;
+                                                                               ValaArrayType* _tmp128_ = NULL;
+                                                                               gint _tmp129_ = 0;
+                                                                               gint _tmp130_ = 0;
+                                                                               ValaCCodeFunction* _tmp131_ = NULL;
+                                                                               ValaCCodeFunction* _tmp132_ = NULL;
+                                                                               ValaTargetValue* _tmp133_ = NULL;
+                                                                               gint _tmp134_ = 0;
+                                                                               ValaCCodeExpression* _tmp135_ = NULL;
+                                                                               ValaCCodeExpression* _tmp136_ = NULL;
+                                                                               ValaCCodeConstant* _tmp137_ = NULL;
+                                                                               ValaCCodeConstant* _tmp138_ = NULL;
+                                                                               if (!_tmp125_) {
+                                                                                       gint _tmp126_ = 0;
+                                                                                       _tmp126_ = dim;
+                                                                                       dim = _tmp126_ + 1;
+                                                                               }
+                                                                               _tmp125_ = FALSE;
+                                                                               _tmp127_ = dim;
+                                                                               _tmp128_ = array_type;
+                                                                               _tmp129_ = vala_array_type_get_rank (_tmp128_);
+                                                                               _tmp130_ = _tmp129_;
+                                                                               if (!(_tmp127_ <= _tmp130_)) {
+                                                                                       break;
+                                                                               }
+                                                                               _tmp131_ = vala_ccode_base_module_get_ccode (self);
+                                                                               _tmp132_ = _tmp131_;
+                                                                               _tmp133_ = field_value;
+                                                                               _tmp134_ = dim;
+                                                                               _tmp135_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp133_, _tmp134_);
+                                                                               _tmp136_ = _tmp135_;
+                                                                               _tmp137_ = vala_ccode_constant_new ("-1");
+                                                                               _tmp138_ = _tmp137_;
+                                                                               vala_ccode_function_add_assignment (_tmp132_, _tmp136_, (ValaCCodeExpression*) _tmp138_);
+                                                                               _vala_ccode_node_unref0 (_tmp138_);
+                                                                               _vala_ccode_node_unref0 (_tmp136_);
+                                                                       }
                                                                }
                                                        }
                                                }
                                        }
+                                       _tmp140_ = array_type;
+                                       _tmp141_ = vala_array_type_get_rank (_tmp140_);
+                                       _tmp142_ = _tmp141_;
+                                       if (_tmp142_ == 1) {
+                                               ValaField* _tmp143_ = NULL;
+                                               gboolean _tmp144_ = FALSE;
+                                               _tmp143_ = f;
+                                               _tmp144_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp143_);
+                                               _tmp139_ = _tmp144_;
+                                       } else {
+                                               _tmp139_ = FALSE;
+                                       }
+                                       if (_tmp139_) {
+                                               ValaCCodeExpression* lhs_array_size = NULL;
+                                               ValaTargetValue* _tmp145_ = NULL;
+                                               ValaCCodeExpression* _tmp146_ = NULL;
+                                               ValaCCodeExpression* rhs_array_len = NULL;
+                                               ValaTargetValue* _tmp147_ = NULL;
+                                               ValaCCodeExpression* _tmp148_ = NULL;
+                                               ValaCCodeFunction* _tmp149_ = NULL;
+                                               ValaCCodeFunction* _tmp150_ = NULL;
+                                               ValaCCodeExpression* _tmp151_ = NULL;
+                                               ValaCCodeExpression* _tmp152_ = NULL;
+                                               _tmp145_ = field_value;
+                                               _tmp146_ = vala_ccode_base_module_get_array_size_cvalue (self, _tmp145_);
+                                               lhs_array_size = _tmp146_;
+                                               _tmp147_ = field_value;
+                                               _tmp148_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp147_, 1);
+                                               rhs_array_len = _tmp148_;
+                                               _tmp149_ = vala_ccode_base_module_get_ccode (self);
+                                               _tmp150_ = _tmp149_;
+                                               _tmp151_ = lhs_array_size;
+                                               _tmp152_ = rhs_array_len;
+                                               vala_ccode_function_add_assignment (_tmp150_, _tmp151_, _tmp152_);
+                                               _vala_ccode_node_unref0 (rhs_array_len);
+                                               _vala_ccode_node_unref0 (lhs_array_size);
+                                       }
+                                       _vala_target_value_unref0 (glib_value);
+                                       _vala_target_value_unref0 (field_value);
+                                       _vala_code_node_unref0 (array_type);
                                }
-                               _tmp135_ = array_type;
-                               _tmp136_ = vala_array_type_get_rank (_tmp135_);
-                               _tmp137_ = _tmp136_;
-                               if (_tmp137_ == 1) {
-                                       ValaField* _tmp138_ = NULL;
-                                       gboolean _tmp139_ = FALSE;
-                                       _tmp138_ = f;
-                                       _tmp139_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp138_);
-                                       _tmp134_ = _tmp139_;
-                               } else {
-                                       _tmp134_ = FALSE;
-                               }
-                               if (_tmp134_) {
-                                       ValaCCodeExpression* lhs_array_size = NULL;
-                                       ValaTargetValue* _tmp140_ = NULL;
-                                       ValaCCodeExpression* _tmp141_ = NULL;
-                                       ValaCCodeExpression* rhs_array_len = NULL;
-                                       ValaTargetValue* _tmp142_ = NULL;
-                                       ValaCCodeExpression* _tmp143_ = NULL;
-                                       ValaCCodeFunction* _tmp144_ = NULL;
-                                       ValaCCodeFunction* _tmp145_ = NULL;
-                                       ValaCCodeExpression* _tmp146_ = NULL;
-                                       ValaCCodeExpression* _tmp147_ = NULL;
-                                       _tmp140_ = field_value;
-                                       _tmp141_ = vala_ccode_base_module_get_array_size_cvalue (self, _tmp140_);
-                                       lhs_array_size = _tmp141_;
-                                       _tmp142_ = field_value;
-                                       _tmp143_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp142_, 1);
-                                       rhs_array_len = _tmp143_;
-                                       _tmp144_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp145_ = _tmp144_;
-                                       _tmp146_ = lhs_array_size;
-                                       _tmp147_ = rhs_array_len;
-                                       vala_ccode_function_add_assignment (_tmp145_, _tmp146_, _tmp147_);
-                                       _vala_ccode_node_unref0 (rhs_array_len);
-                                       _vala_ccode_node_unref0 (lhs_array_size);
-                               }
-                               _vala_target_value_unref0 (glib_value);
-                               _vala_target_value_unref0 (field_value);
-                               _vala_code_node_unref0 (array_type);
                        }
                        {
                                ValaArrayList* _value_list = NULL;
-                               ValaArrayList* _tmp148_ = NULL;
-                               ValaArrayList* _tmp149_ = NULL;
-                               ValaArrayList* _tmp150_ = NULL;
+                               ValaArrayList* _tmp153_ = NULL;
+                               ValaArrayList* _tmp154_ = NULL;
+                               ValaArrayList* _tmp155_ = NULL;
                                gint _value_size = 0;
-                               ValaArrayList* _tmp151_ = NULL;
-                               gint _tmp152_ = 0;
-                               gint _tmp153_ = 0;
+                               ValaArrayList* _tmp156_ = NULL;
+                               gint _tmp157_ = 0;
+                               gint _tmp158_ = 0;
                                gint _value_index = 0;
-                               _tmp148_ = vala_ccode_base_module_get_temp_ref_values (self);
-                               _tmp149_ = _tmp148_;
-                               _tmp150_ = _vala_iterable_ref0 (_tmp149_);
-                               _value_list = _tmp150_;
-                               _tmp151_ = _value_list;
-                               _tmp152_ = vala_collection_get_size ((ValaCollection*) _tmp151_);
-                               _tmp153_ = _tmp152_;
-                               _value_size = _tmp153_;
+                               _tmp153_ = vala_ccode_base_module_get_temp_ref_values (self);
+                               _tmp154_ = _tmp153_;
+                               _tmp155_ = _vala_iterable_ref0 (_tmp154_);
+                               _value_list = _tmp155_;
+                               _tmp156_ = _value_list;
+                               _tmp157_ = vala_collection_get_size ((ValaCollection*) _tmp156_);
+                               _tmp158_ = _tmp157_;
+                               _value_size = _tmp158_;
                                _value_index = -1;
                                while (TRUE) {
-                                       gint _tmp154_ = 0;
-                                       gint _tmp155_ = 0;
-                                       gint _tmp156_ = 0;
+                                       gint _tmp159_ = 0;
+                                       gint _tmp160_ = 0;
+                                       gint _tmp161_ = 0;
                                        ValaTargetValue* value = NULL;
-                                       ValaArrayList* _tmp157_ = NULL;
-                                       gint _tmp158_ = 0;
-                                       gpointer _tmp159_ = NULL;
-                                       ValaCCodeFunction* _tmp160_ = NULL;
-                                       ValaCCodeFunction* _tmp161_ = NULL;
-                                       ValaTargetValue* _tmp162_ = NULL;
-                                       ValaCCodeExpression* _tmp163_ = NULL;
-                                       ValaCCodeExpression* _tmp164_ = NULL;
-                                       _tmp154_ = _value_index;
-                                       _value_index = _tmp154_ + 1;
-                                       _tmp155_ = _value_index;
-                                       _tmp156_ = _value_size;
-                                       if (!(_tmp155_ < _tmp156_)) {
+                                       ValaArrayList* _tmp162_ = NULL;
+                                       gint _tmp163_ = 0;
+                                       gpointer _tmp164_ = NULL;
+                                       ValaCCodeFunction* _tmp165_ = NULL;
+                                       ValaCCodeFunction* _tmp166_ = NULL;
+                                       ValaTargetValue* _tmp167_ = NULL;
+                                       ValaCCodeExpression* _tmp168_ = NULL;
+                                       ValaCCodeExpression* _tmp169_ = NULL;
+                                       _tmp159_ = _value_index;
+                                       _value_index = _tmp159_ + 1;
+                                       _tmp160_ = _value_index;
+                                       _tmp161_ = _value_size;
+                                       if (!(_tmp160_ < _tmp161_)) {
                                                break;
                                        }
-                                       _tmp157_ = _value_list;
-                                       _tmp158_ = _value_index;
-                                       _tmp159_ = vala_list_get ((ValaList*) _tmp157_, _tmp158_);
-                                       value = (ValaTargetValue*) _tmp159_;
-                                       _tmp160_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp161_ = _tmp160_;
-                                       _tmp162_ = value;
-                                       _tmp163_ = vala_ccode_base_module_destroy_value (self, _tmp162_, FALSE);
-                                       _tmp164_ = _tmp163_;
-                                       vala_ccode_function_add_expression (_tmp161_, _tmp164_);
-                                       _vala_ccode_node_unref0 (_tmp164_);
+                                       _tmp162_ = _value_list;
+                                       _tmp163_ = _value_index;
+                                       _tmp164_ = vala_list_get ((ValaList*) _tmp162_, _tmp163_);
+                                       value = (ValaTargetValue*) _tmp164_;
+                                       _tmp165_ = vala_ccode_base_module_get_ccode (self);
+                                       _tmp166_ = _tmp165_;
+                                       _tmp167_ = value;
+                                       _tmp168_ = vala_ccode_base_module_destroy_value (self, _tmp167_, FALSE);
+                                       _tmp169_ = _tmp168_;
+                                       vala_ccode_function_add_expression (_tmp166_, _tmp169_);
+                                       _vala_ccode_node_unref0 (_tmp169_);
                                        _vala_target_value_unref0 (value);
                                }
                                _vala_iterable_unref0 (_value_list);
                        }
-                       _tmp165_ = vala_ccode_base_module_get_temp_ref_values (self);
-                       _tmp166_ = _tmp165_;
-                       vala_collection_clear ((ValaCollection*) _tmp166_);
+                       _tmp170_ = vala_ccode_base_module_get_temp_ref_values (self);
+                       _tmp171_ = _tmp170_;
+                       vala_collection_clear ((ValaCollection*) _tmp171_);
                        vala_ccode_base_module_pop_context (self);
                        _vala_ccode_node_unref0 (rhs);
                }
-               _tmp168_ = f;
-               _tmp169_ = vala_variable_get_variable_type ((ValaVariable*) _tmp168_);
-               _tmp170_ = _tmp169_;
-               _tmp171_ = vala_ccode_base_module_requires_destroy (self, _tmp170_);
-               if (_tmp171_) {
-                       ValaCCodeBaseModuleEmitContext* _tmp172_ = NULL;
-                       _tmp172_ = self->instance_finalize_context;
-                       _tmp167_ = _tmp172_ != NULL;
+               _tmp173_ = f;
+               _tmp174_ = vala_variable_get_variable_type ((ValaVariable*) _tmp173_);
+               _tmp175_ = _tmp174_;
+               _tmp176_ = vala_ccode_base_module_requires_destroy (self, _tmp175_);
+               if (_tmp176_) {
+                       ValaCCodeBaseModuleEmitContext* _tmp177_ = NULL;
+                       _tmp177_ = self->instance_finalize_context;
+                       _tmp172_ = _tmp177_ != NULL;
                } else {
-                       _tmp167_ = FALSE;
+                       _tmp172_ = FALSE;
                }
-               if (_tmp167_) {
-                       ValaCCodeBaseModuleEmitContext* _tmp173_ = NULL;
-                       ValaCCodeFunction* _tmp174_ = NULL;
-                       ValaCCodeFunction* _tmp175_ = NULL;
-                       ValaField* _tmp176_ = NULL;
-                       ValaField* _tmp177_ = NULL;
-                       ValaSymbol* _tmp178_ = NULL;
-                       ValaSymbol* _tmp179_ = NULL;
-                       ValaTargetValue* _tmp180_ = NULL;
-                       ValaTargetValue* _tmp181_ = NULL;
-                       ValaCCodeExpression* _tmp182_ = NULL;
-                       ValaCCodeExpression* _tmp183_ = NULL;
-                       _tmp173_ = self->instance_finalize_context;
-                       vala_ccode_base_module_push_context (self, _tmp173_);
-                       _tmp174_ = vala_ccode_base_module_get_ccode (self);
-                       _tmp175_ = _tmp174_;
-                       _tmp176_ = f;
-                       _tmp177_ = f;
-                       _tmp178_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp177_);
-                       _tmp179_ = _tmp178_;
-                       _tmp180_ = vala_ccode_base_module_load_this_parameter (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp179_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
-                       _tmp181_ = _tmp180_;
-                       _tmp182_ = vala_ccode_base_module_destroy_field (self, _tmp176_, _tmp181_);
-                       _tmp183_ = _tmp182_;
-                       vala_ccode_function_add_expression (_tmp175_, _tmp183_);
-                       _vala_ccode_node_unref0 (_tmp183_);
-                       _vala_target_value_unref0 (_tmp181_);
+               if (_tmp172_) {
+                       ValaCCodeBaseModuleEmitContext* _tmp178_ = NULL;
+                       ValaCCodeFunction* _tmp179_ = NULL;
+                       ValaCCodeFunction* _tmp180_ = NULL;
+                       ValaField* _tmp181_ = NULL;
+                       ValaField* _tmp182_ = NULL;
+                       ValaSymbol* _tmp183_ = NULL;
+                       ValaSymbol* _tmp184_ = NULL;
+                       ValaTargetValue* _tmp185_ = NULL;
+                       ValaTargetValue* _tmp186_ = NULL;
+                       ValaCCodeExpression* _tmp187_ = NULL;
+                       ValaCCodeExpression* _tmp188_ = NULL;
+                       _tmp178_ = self->instance_finalize_context;
+                       vala_ccode_base_module_push_context (self, _tmp178_);
+                       _tmp179_ = vala_ccode_base_module_get_ccode (self);
+                       _tmp180_ = _tmp179_;
+                       _tmp181_ = f;
+                       _tmp182_ = f;
+                       _tmp183_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp182_);
+                       _tmp184_ = _tmp183_;
+                       _tmp185_ = vala_ccode_base_module_load_this_parameter (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp184_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+                       _tmp186_ = _tmp185_;
+                       _tmp187_ = vala_ccode_base_module_destroy_field (self, _tmp181_, _tmp186_);
+                       _tmp188_ = _tmp187_;
+                       vala_ccode_function_add_expression (_tmp180_, _tmp188_);
+                       _vala_ccode_node_unref0 (_tmp188_);
+                       _vala_target_value_unref0 (_tmp186_);
                        vala_ccode_base_module_pop_context (self);
                }
        } else {
-               ValaField* _tmp184_ = NULL;
-               ValaMemberBinding _tmp185_ = 0;
-               ValaMemberBinding _tmp186_ = 0;
-               _tmp184_ = f;
-               _tmp185_ = vala_field_get_binding (_tmp184_);
-               _tmp186_ = _tmp185_;
-               if (_tmp186_ == VALA_MEMBER_BINDING_CLASS) {
-                       gboolean _tmp187_ = FALSE;
-                       ValaField* _tmp192_ = NULL;
-                       ValaSymbolAccessibility _tmp193_ = 0;
-                       ValaSymbolAccessibility _tmp194_ = 0;
-                       ValaField* _tmp218_ = NULL;
-                       ValaExpression* _tmp219_ = NULL;
-                       ValaExpression* _tmp220_ = NULL;
-                       _tmp187_ = is_gtypeinstance;
-                       if (!_tmp187_) {
-                               ValaField* _tmp188_ = NULL;
-                               ValaSourceReference* _tmp189_ = NULL;
-                               ValaSourceReference* _tmp190_ = NULL;
-                               ValaField* _tmp191_ = NULL;
-                               _tmp188_ = f;
-                               _tmp189_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp188_);
-                               _tmp190_ = _tmp189_;
-                               vala_report_error (_tmp190_, "class fields are not supported in compact classes");
-                               _tmp191_ = f;
-                               vala_code_node_set_error ((ValaCodeNode*) _tmp191_, TRUE);
+               ValaField* _tmp189_ = NULL;
+               ValaMemberBinding _tmp190_ = 0;
+               ValaMemberBinding _tmp191_ = 0;
+               _tmp189_ = f;
+               _tmp190_ = vala_field_get_binding (_tmp189_);
+               _tmp191_ = _tmp190_;
+               if (_tmp191_ == VALA_MEMBER_BINDING_CLASS) {
+                       gboolean _tmp192_ = FALSE;
+                       ValaField* _tmp197_ = NULL;
+                       ValaSymbolAccessibility _tmp198_ = 0;
+                       ValaSymbolAccessibility _tmp199_ = 0;
+                       ValaField* _tmp223_ = NULL;
+                       ValaExpression* _tmp224_ = NULL;
+                       ValaExpression* _tmp225_ = NULL;
+                       _tmp192_ = is_gtypeinstance;
+                       if (!_tmp192_) {
+                               ValaField* _tmp193_ = NULL;
+                               ValaSourceReference* _tmp194_ = NULL;
+                               ValaSourceReference* _tmp195_ = NULL;
+                               ValaField* _tmp196_ = NULL;
+                               _tmp193_ = f;
+                               _tmp194_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp193_);
+                               _tmp195_ = _tmp194_;
+                               vala_report_error (_tmp195_, "class fields are not supported in compact classes");
+                               _tmp196_ = f;
+                               vala_code_node_set_error ((ValaCodeNode*) _tmp196_, TRUE);
                                _g_free0 (field_ctype);
                                _vala_ccode_node_unref0 (lhs);
                                _vala_code_node_unref0 (cl);
                                return;
                        }
-                       _tmp192_ = f;
-                       _tmp193_ = vala_symbol_get_access ((ValaSymbol*) _tmp192_);
-                       _tmp194_ = _tmp193_;
-                       if (_tmp194_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
+                       _tmp197_ = f;
+                       _tmp198_ = vala_symbol_get_access ((ValaSymbol*) _tmp197_);
+                       _tmp199_ = _tmp198_;
+                       if (_tmp199_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
                                ValaCCodeFunctionCall* ccall = NULL;
-                               ValaClass* _tmp195_ = NULL;
-                               gchar* _tmp196_ = NULL;
-                               gchar* _tmp197_ = NULL;
-                               gchar* _tmp198_ = NULL;
-                               gchar* _tmp199_ = NULL;
-                               ValaCCodeIdentifier* _tmp200_ = NULL;
-                               ValaCCodeIdentifier* _tmp201_ = NULL;
-                               ValaCCodeFunctionCall* _tmp202_ = NULL;
-                               ValaCCodeFunctionCall* _tmp203_ = NULL;
-                               ValaCCodeFunctionCall* _tmp204_ = NULL;
+                               ValaClass* _tmp200_ = NULL;
+                               gchar* _tmp201_ = NULL;
+                               gchar* _tmp202_ = NULL;
+                               gchar* _tmp203_ = NULL;
+                               gchar* _tmp204_ = NULL;
                                ValaCCodeIdentifier* _tmp205_ = NULL;
                                ValaCCodeIdentifier* _tmp206_ = NULL;
                                ValaCCodeFunctionCall* _tmp207_ = NULL;
-                               ValaField* _tmp208_ = NULL;
-                               gchar* _tmp209_ = NULL;
-                               gchar* _tmp210_ = NULL;
-                               ValaCCodeMemberAccess* _tmp211_ = NULL;
-                               _tmp195_ = cl;
-                               _tmp196_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp195_, NULL);
-                               _tmp197_ = _tmp196_;
-                               _tmp198_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp197_);
-                               _tmp199_ = _tmp198_;
-                               _tmp200_ = vala_ccode_identifier_new (_tmp199_);
-                               _tmp201_ = _tmp200_;
-                               _tmp202_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp201_);
-                               _tmp203_ = _tmp202_;
-                               _vala_ccode_node_unref0 (_tmp201_);
-                               _g_free0 (_tmp199_);
-                               _g_free0 (_tmp197_);
-                               ccall = _tmp203_;
-                               _tmp204_ = ccall;
-                               _tmp205_ = vala_ccode_identifier_new ("klass");
+                               ValaCCodeFunctionCall* _tmp208_ = NULL;
+                               ValaCCodeFunctionCall* _tmp209_ = NULL;
+                               ValaCCodeIdentifier* _tmp210_ = NULL;
+                               ValaCCodeIdentifier* _tmp211_ = NULL;
+                               ValaCCodeFunctionCall* _tmp212_ = NULL;
+                               ValaField* _tmp213_ = NULL;
+                               gchar* _tmp214_ = NULL;
+                               gchar* _tmp215_ = NULL;
+                               ValaCCodeMemberAccess* _tmp216_ = NULL;
+                               _tmp200_ = cl;
+                               _tmp201_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp200_, NULL);
+                               _tmp202_ = _tmp201_;
+                               _tmp203_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp202_);
+                               _tmp204_ = _tmp203_;
+                               _tmp205_ = vala_ccode_identifier_new (_tmp204_);
                                _tmp206_ = _tmp205_;
-                               vala_ccode_function_call_add_argument (_tmp204_, (ValaCCodeExpression*) _tmp206_);
+                               _tmp207_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp206_);
+                               _tmp208_ = _tmp207_;
                                _vala_ccode_node_unref0 (_tmp206_);
-                               _tmp207_ = ccall;
-                               _tmp208_ = f;
-                               _tmp209_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp208_);
-                               _tmp210_ = _tmp209_;
-                               _tmp211_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp207_, _tmp210_, TRUE);
+                               _g_free0 (_tmp204_);
+                               _g_free0 (_tmp202_);
+                               ccall = _tmp208_;
+                               _tmp209_ = ccall;
+                               _tmp210_ = vala_ccode_identifier_new ("klass");
+                               _tmp211_ = _tmp210_;
+                               vala_ccode_function_call_add_argument (_tmp209_, (ValaCCodeExpression*) _tmp211_);
+                               _vala_ccode_node_unref0 (_tmp211_);
+                               _tmp212_ = ccall;
+                               _tmp213_ = f;
+                               _tmp214_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp213_);
+                               _tmp215_ = _tmp214_;
+                               _tmp216_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp212_, _tmp215_, TRUE);
                                _vala_ccode_node_unref0 (lhs);
-                               lhs = (ValaCCodeExpression*) _tmp211_;
-                               _g_free0 (_tmp210_);
+                               lhs = (ValaCCodeExpression*) _tmp216_;
+                               _g_free0 (_tmp215_);
                                _vala_ccode_node_unref0 (ccall);
                        } else {
-                               ValaCCodeIdentifier* _tmp212_ = NULL;
-                               ValaCCodeIdentifier* _tmp213_ = NULL;
-                               ValaField* _tmp214_ = NULL;
-                               gchar* _tmp215_ = NULL;
-                               gchar* _tmp216_ = NULL;
-                               ValaCCodeMemberAccess* _tmp217_ = NULL;
-                               _tmp212_ = vala_ccode_identifier_new ("klass");
-                               _tmp213_ = _tmp212_;
-                               _tmp214_ = f;
-                               _tmp215_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp214_);
-                               _tmp216_ = _tmp215_;
-                               _tmp217_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp213_, _tmp216_, TRUE);
+                               ValaCCodeIdentifier* _tmp217_ = NULL;
+                               ValaCCodeIdentifier* _tmp218_ = NULL;
+                               ValaField* _tmp219_ = NULL;
+                               gchar* _tmp220_ = NULL;
+                               gchar* _tmp221_ = NULL;
+                               ValaCCodeMemberAccess* _tmp222_ = NULL;
+                               _tmp217_ = vala_ccode_identifier_new ("klass");
+                               _tmp218_ = _tmp217_;
+                               _tmp219_ = f;
+                               _tmp220_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp219_);
+                               _tmp221_ = _tmp220_;
+                               _tmp222_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp218_, _tmp221_, TRUE);
                                _vala_ccode_node_unref0 (lhs);
-                               lhs = (ValaCCodeExpression*) _tmp217_;
-                               _g_free0 (_tmp216_);
-                               _vala_ccode_node_unref0 (_tmp213_);
+                               lhs = (ValaCCodeExpression*) _tmp222_;
+                               _g_free0 (_tmp221_);
+                               _vala_ccode_node_unref0 (_tmp218_);
                        }
-                       _tmp218_ = f;
-                       _tmp219_ = vala_variable_get_initializer ((ValaVariable*) _tmp218_);
-                       _tmp220_ = _tmp219_;
-                       if (_tmp220_ != NULL) {
-                               ValaCCodeBaseModuleEmitContext* _tmp221_ = NULL;
-                               ValaField* _tmp222_ = NULL;
-                               ValaExpression* _tmp223_ = NULL;
-                               ValaExpression* _tmp224_ = NULL;
+                       _tmp223_ = f;
+                       _tmp224_ = vala_variable_get_initializer ((ValaVariable*) _tmp223_);
+                       _tmp225_ = _tmp224_;
+                       if (_tmp225_ != NULL) {
+                               ValaCCodeBaseModuleEmitContext* _tmp226_ = NULL;
+                               ValaField* _tmp227_ = NULL;
+                               ValaExpression* _tmp228_ = NULL;
+                               ValaExpression* _tmp229_ = NULL;
                                ValaCCodeExpression* rhs = NULL;
-                               ValaField* _tmp225_ = NULL;
-                               ValaExpression* _tmp226_ = NULL;
-                               ValaExpression* _tmp227_ = NULL;
-                               ValaCCodeExpression* _tmp228_ = NULL;
-                               ValaCCodeFunction* _tmp229_ = NULL;
-                               ValaCCodeFunction* _tmp230_ = NULL;
-                               ValaCCodeExpression* _tmp231_ = NULL;
-                               ValaCCodeExpression* _tmp232_ = NULL;
-                               ValaArrayList* _tmp250_ = NULL;
-                               ValaArrayList* _tmp251_ = NULL;
-                               _tmp221_ = self->class_init_context;
-                               vala_ccode_base_module_push_context (self, _tmp221_);
-                               _tmp222_ = f;
-                               _tmp223_ = vala_variable_get_initializer ((ValaVariable*) _tmp222_);
-                               _tmp224_ = _tmp223_;
-                               vala_code_node_emit ((ValaCodeNode*) _tmp224_, (ValaCodeGenerator*) self);
-                               _tmp225_ = f;
-                               _tmp226_ = vala_variable_get_initializer ((ValaVariable*) _tmp225_);
-                               _tmp227_ = _tmp226_;
-                               _tmp228_ = vala_ccode_base_module_get_cvalue (self, _tmp227_);
-                               rhs = _tmp228_;
-                               _tmp229_ = vala_ccode_base_module_get_ccode (self);
-                               _tmp230_ = _tmp229_;
-                               _tmp231_ = lhs;
-                               _tmp232_ = rhs;
-                               vala_ccode_function_add_assignment (_tmp230_, _tmp231_, _tmp232_);
+                               ValaField* _tmp230_ = NULL;
+                               ValaExpression* _tmp231_ = NULL;
+                               ValaExpression* _tmp232_ = NULL;
+                               ValaCCodeExpression* _tmp233_ = NULL;
+                               ValaCCodeFunction* _tmp234_ = NULL;
+                               ValaCCodeFunction* _tmp235_ = NULL;
+                               ValaCCodeExpression* _tmp236_ = NULL;
+                               ValaCCodeExpression* _tmp237_ = NULL;
+                               ValaArrayList* _tmp255_ = NULL;
+                               ValaArrayList* _tmp256_ = NULL;
+                               _tmp226_ = self->class_init_context;
+                               vala_ccode_base_module_push_context (self, _tmp226_);
+                               _tmp227_ = f;
+                               _tmp228_ = vala_variable_get_initializer ((ValaVariable*) _tmp227_);
+                               _tmp229_ = _tmp228_;
+                               vala_code_node_emit ((ValaCodeNode*) _tmp229_, (ValaCodeGenerator*) self);
+                               _tmp230_ = f;
+                               _tmp231_ = vala_variable_get_initializer ((ValaVariable*) _tmp230_);
+                               _tmp232_ = _tmp231_;
+                               _tmp233_ = vala_ccode_base_module_get_cvalue (self, _tmp232_);
+                               rhs = _tmp233_;
+                               _tmp234_ = vala_ccode_base_module_get_ccode (self);
+                               _tmp235_ = _tmp234_;
+                               _tmp236_ = lhs;
+                               _tmp237_ = rhs;
+                               vala_ccode_function_add_assignment (_tmp235_, _tmp236_, _tmp237_);
                                {
                                        ValaArrayList* _value_list = NULL;
-                                       ValaArrayList* _tmp233_ = NULL;
-                                       ValaArrayList* _tmp234_ = NULL;
-                                       ValaArrayList* _tmp235_ = NULL;
+                                       ValaArrayList* _tmp238_ = NULL;
+                                       ValaArrayList* _tmp239_ = NULL;
+                                       ValaArrayList* _tmp240_ = NULL;
                                        gint _value_size = 0;
-                                       ValaArrayList* _tmp236_ = NULL;
-                                       gint _tmp237_ = 0;
-                                       gint _tmp238_ = 0;
+                                       ValaArrayList* _tmp241_ = NULL;
+                                       gint _tmp242_ = 0;
+                                       gint _tmp243_ = 0;
                                        gint _value_index = 0;
-                                       _tmp233_ = vala_ccode_base_module_get_temp_ref_values (self);
-                                       _tmp234_ = _tmp233_;
-                                       _tmp235_ = _vala_iterable_ref0 (_tmp234_);
-                                       _value_list = _tmp235_;
-                                       _tmp236_ = _value_list;
-                                       _tmp237_ = vala_collection_get_size ((ValaCollection*) _tmp236_);
-                                       _tmp238_ = _tmp237_;
-                                       _value_size = _tmp238_;
+                                       _tmp238_ = vala_ccode_base_module_get_temp_ref_values (self);
+                                       _tmp239_ = _tmp238_;
+                                       _tmp240_ = _vala_iterable_ref0 (_tmp239_);
+                                       _value_list = _tmp240_;
+                                       _tmp241_ = _value_list;
+                                       _tmp242_ = vala_collection_get_size ((ValaCollection*) _tmp241_);
+                                       _tmp243_ = _tmp242_;
+                                       _value_size = _tmp243_;
                                        _value_index = -1;
                                        while (TRUE) {
-                                               gint _tmp239_ = 0;
-                                               gint _tmp240_ = 0;
-                                               gint _tmp241_ = 0;
+                                               gint _tmp244_ = 0;
+                                               gint _tmp245_ = 0;
+                                               gint _tmp246_ = 0;
                                                ValaTargetValue* value = NULL;
-                                               ValaArrayList* _tmp242_ = NULL;
-                                               gint _tmp243_ = 0;
-                                               gpointer _tmp244_ = NULL;
-                                               ValaCCodeFunction* _tmp245_ = NULL;
-                                               ValaCCodeFunction* _tmp246_ = NULL;
-                                               ValaTargetValue* _tmp247_ = NULL;
-                                               ValaCCodeExpression* _tmp248_ = NULL;
-                                               ValaCCodeExpression* _tmp249_ = NULL;
-                                               _tmp239_ = _value_index;
-                                               _value_index = _tmp239_ + 1;
-                                               _tmp240_ = _value_index;
-                                               _tmp241_ = _value_size;
-                                               if (!(_tmp240_ < _tmp241_)) {
+                                               ValaArrayList* _tmp247_ = NULL;
+                                               gint _tmp248_ = 0;
+                                               gpointer _tmp249_ = NULL;
+                                               ValaCCodeFunction* _tmp250_ = NULL;
+                                               ValaCCodeFunction* _tmp251_ = NULL;
+                                               ValaTargetValue* _tmp252_ = NULL;
+                                               ValaCCodeExpression* _tmp253_ = NULL;
+                                               ValaCCodeExpression* _tmp254_ = NULL;
+                                               _tmp244_ = _value_index;
+                                               _value_index = _tmp244_ + 1;
+                                               _tmp245_ = _value_index;
+                                               _tmp246_ = _value_size;
+                                               if (!(_tmp245_ < _tmp246_)) {
                                                        break;
                                                }
-                                               _tmp242_ = _value_list;
-                                               _tmp243_ = _value_index;
-                                               _tmp244_ = vala_list_get ((ValaList*) _tmp242_, _tmp243_);
-                                               value = (ValaTargetValue*) _tmp244_;
-                                               _tmp245_ = vala_ccode_base_module_get_ccode (self);
-                                               _tmp246_ = _tmp245_;
-                                               _tmp247_ = value;
-                                               _tmp248_ = vala_ccode_base_module_destroy_value (self, _tmp247_, FALSE);
-                                               _tmp249_ = _tmp248_;
-                                               vala_ccode_function_add_expression (_tmp246_, _tmp249_);
-                                               _vala_ccode_node_unref0 (_tmp249_);
+                                               _tmp247_ = _value_list;
+                                               _tmp248_ = _value_index;
+                                               _tmp249_ = vala_list_get ((ValaList*) _tmp247_, _tmp248_);
+                                               value = (ValaTargetValue*) _tmp249_;
+                                               _tmp250_ = vala_ccode_base_module_get_ccode (self);
+                                               _tmp251_ = _tmp250_;
+                                               _tmp252_ = value;
+                                               _tmp253_ = vala_ccode_base_module_destroy_value (self, _tmp252_, FALSE);
+                                               _tmp254_ = _tmp253_;
+                                               vala_ccode_function_add_expression (_tmp251_, _tmp254_);
+                                               _vala_ccode_node_unref0 (_tmp254_);
                                                _vala_target_value_unref0 (value);
                                        }
                                        _vala_iterable_unref0 (_value_list);
                                }
-                               _tmp250_ = vala_ccode_base_module_get_temp_ref_values (self);
-                               _tmp251_ = _tmp250_;
-                               vala_collection_clear ((ValaCollection*) _tmp251_);
+                               _tmp255_ = vala_ccode_base_module_get_temp_ref_values (self);
+                               _tmp256_ = _tmp255_;
+                               vala_collection_clear ((ValaCollection*) _tmp256_);
                                vala_ccode_base_module_pop_context (self);
                                _vala_ccode_node_unref0 (rhs);
                        }
                } else {
-                       ValaField* _tmp252_ = NULL;
-                       ValaCCodeFile* _tmp253_ = NULL;
-                       ValaField* _tmp254_ = NULL;
-                       gboolean _tmp255_ = FALSE;
-                       ValaField* _tmp258_ = NULL;
-                       gboolean _tmp259_ = FALSE;
-                       ValaField* _tmp262_ = NULL;
-                       gboolean _tmp263_ = FALSE;
+                       ValaField* _tmp257_ = NULL;
+                       ValaCCodeFile* _tmp258_ = NULL;
+                       ValaField* _tmp259_ = NULL;
+                       gboolean _tmp260_ = FALSE;
+                       ValaField* _tmp263_ = NULL;
                        gboolean _tmp264_ = FALSE;
-                       _tmp252_ = f;
-                       _tmp253_ = self->cfile;
-                       vala_ccode_base_module_generate_field_declaration (self, _tmp252_, _tmp253_);
-                       _tmp254_ = f;
-                       _tmp255_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp254_);
-                       if (!_tmp255_) {
-                               ValaField* _tmp256_ = NULL;
-                               ValaCCodeFile* _tmp257_ = NULL;
-                               _tmp256_ = f;
-                               _tmp257_ = self->header_file;
-                               vala_ccode_base_module_generate_field_declaration (self, _tmp256_, _tmp257_);
+                       ValaField* _tmp267_ = NULL;
+                       gboolean _tmp268_ = FALSE;
+                       gboolean _tmp269_ = FALSE;
+                       _tmp257_ = f;
+                       _tmp258_ = self->cfile;
+                       vala_ccode_base_module_generate_field_declaration (self, _tmp257_, _tmp258_);
+                       _tmp259_ = f;
+                       _tmp260_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp259_);
+                       if (!_tmp260_) {
+                               ValaField* _tmp261_ = NULL;
+                               ValaCCodeFile* _tmp262_ = NULL;
+                               _tmp261_ = f;
+                               _tmp262_ = self->header_file;
+                               vala_ccode_base_module_generate_field_declaration (self, _tmp261_, _tmp262_);
                        }
-                       _tmp258_ = f;
-                       _tmp259_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp258_);
-                       if (!_tmp259_) {
-                               ValaField* _tmp260_ = NULL;
-                               ValaCCodeFile* _tmp261_ = NULL;
-                               _tmp260_ = f;
-                               _tmp261_ = self->internal_header_file;
-                               vala_ccode_base_module_generate_field_declaration (self, _tmp260_, _tmp261_);
-                       }
-                       _tmp262_ = f;
-                       _tmp263_ = vala_symbol_get_external ((ValaSymbol*) _tmp262_);
-                       _tmp264_ = _tmp263_;
+                       _tmp263_ = f;
+                       _tmp264_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp263_);
                        if (!_tmp264_) {
                                ValaField* _tmp265_ = NULL;
-                               gchar* _tmp266_ = NULL;
-                               gchar* _tmp267_ = NULL;
-                               ValaCCodeIdentifier* _tmp268_ = NULL;
-                               ValaCCodeVariableDeclarator* var_decl = NULL;
-                               ValaField* _tmp269_ = NULL;
-                               gchar* _tmp270_ = NULL;
+                               ValaCCodeFile* _tmp266_ = NULL;
+                               _tmp265_ = f;
+                               _tmp266_ = self->internal_header_file;
+                               vala_ccode_base_module_generate_field_declaration (self, _tmp265_, _tmp266_);
+                       }
+                       _tmp267_ = f;
+                       _tmp268_ = vala_symbol_get_external ((ValaSymbol*) _tmp267_);
+                       _tmp269_ = _tmp268_;
+                       if (!_tmp269_) {
+                               ValaField* _tmp270_ = NULL;
                                gchar* _tmp271_ = NULL;
-                               ValaField* _tmp272_ = NULL;
-                               ValaDataType* _tmp273_ = NULL;
-                               ValaDataType* _tmp274_ = NULL;
+                               gchar* _tmp272_ = NULL;
+                               ValaCCodeIdentifier* _tmp273_ = NULL;
+                               ValaCCodeVariableDeclarator* var_decl = NULL;
+                               ValaField* _tmp274_ = NULL;
                                gchar* _tmp275_ = NULL;
                                gchar* _tmp276_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp277_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp278_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp279_ = NULL;
-                               ValaField* _tmp280_ = NULL;
-                               ValaDataType* _tmp281_ = NULL;
-                               ValaDataType* _tmp282_ = NULL;
-                               ValaCCodeExpression* _tmp283_ = NULL;
-                               ValaCCodeExpression* _tmp284_ = NULL;
-                               ValaCCodeBaseModuleEmitContext* _tmp285_ = NULL;
-                               ValaField* _tmp289_ = NULL;
-                               ValaExpression* _tmp290_ = NULL;
-                               ValaExpression* _tmp291_ = NULL;
+                               ValaField* _tmp277_ = NULL;
+                               ValaDataType* _tmp278_ = NULL;
+                               ValaDataType* _tmp279_ = NULL;
+                               ValaCCodeDeclaratorSuffix* _tmp280_ = NULL;
+                               ValaCCodeDeclaratorSuffix* _tmp281_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp282_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp283_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp284_ = NULL;
+                               ValaField* _tmp285_ = NULL;
+                               ValaDataType* _tmp286_ = NULL;
+                               ValaDataType* _tmp287_ = NULL;
+                               ValaCCodeExpression* _tmp288_ = NULL;
+                               ValaCCodeExpression* _tmp289_ = NULL;
+                               ValaCCodeBaseModuleEmitContext* _tmp290_ = NULL;
+                               ValaField* _tmp294_ = NULL;
+                               ValaExpression* _tmp295_ = NULL;
+                               ValaExpression* _tmp296_ = NULL;
                                ValaCCodeDeclaration* var_def = NULL;
-                               const gchar* _tmp303_ = NULL;
-                               ValaCCodeDeclaration* _tmp304_ = NULL;
-                               ValaCCodeDeclaration* _tmp305_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp306_ = NULL;
-                               ValaField* _tmp307_ = NULL;
-                               gboolean _tmp308_ = FALSE;
-                               ValaCCodeFile* _tmp311_ = NULL;
-                               ValaCCodeDeclaration* _tmp312_ = NULL;
+                               const gchar* _tmp308_ = NULL;
+                               ValaCCodeDeclaration* _tmp309_ = NULL;
+                               ValaCCodeDeclaration* _tmp310_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp311_ = NULL;
+                               ValaField* _tmp312_ = NULL;
                                gboolean _tmp313_ = FALSE;
-                               ValaField* _tmp314_ = NULL;
-                               ValaDataType* _tmp315_ = NULL;
-                               ValaDataType* _tmp316_ = NULL;
-                               ValaField* _tmp428_ = NULL;
-                               ValaExpression* _tmp429_ = NULL;
-                               ValaExpression* _tmp430_ = NULL;
-                               _tmp265_ = f;
-                               _tmp266_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp265_);
-                               _tmp267_ = _tmp266_;
-                               _tmp268_ = vala_ccode_identifier_new (_tmp267_);
+                               ValaCCodeFile* _tmp316_ = NULL;
+                               ValaCCodeDeclaration* _tmp317_ = NULL;
+                               gboolean _tmp318_ = FALSE;
+                               ValaField* _tmp319_ = NULL;
+                               ValaDataType* _tmp320_ = NULL;
+                               ValaDataType* _tmp321_ = NULL;
+                               ValaField* _tmp433_ = NULL;
+                               ValaExpression* _tmp434_ = NULL;
+                               ValaExpression* _tmp435_ = NULL;
+                               _tmp270_ = f;
+                               _tmp271_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp270_);
+                               _tmp272_ = _tmp271_;
+                               _tmp273_ = vala_ccode_identifier_new (_tmp272_);
                                _vala_ccode_node_unref0 (lhs);
-                               lhs = (ValaCCodeExpression*) _tmp268_;
-                               _g_free0 (_tmp267_);
-                               _tmp269_ = f;
-                               _tmp270_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp269_);
-                               _tmp271_ = _tmp270_;
-                               _tmp272_ = f;
-                               _tmp273_ = vala_variable_get_variable_type ((ValaVariable*) _tmp272_);
-                               _tmp274_ = _tmp273_;
-                               _tmp275_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp274_);
+                               lhs = (ValaCCodeExpression*) _tmp273_;
+                               _g_free0 (_tmp272_);
+                               _tmp274_ = f;
+                               _tmp275_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp274_);
                                _tmp276_ = _tmp275_;
-                               _tmp277_ = vala_ccode_variable_declarator_new (_tmp271_, NULL, _tmp276_);
-                               _tmp278_ = _tmp277_;
+                               _tmp277_ = f;
+                               _tmp278_ = vala_variable_get_variable_type ((ValaVariable*) _tmp277_);
+                               _tmp279_ = _tmp278_;
+                               _tmp280_ = vala_ccode_base_module_get_ccode_declarator_suffix (self, _tmp279_);
+                               _tmp281_ = _tmp280_;
+                               _tmp282_ = vala_ccode_variable_declarator_new (_tmp276_, NULL, _tmp281_);
+                               _tmp283_ = _tmp282_;
+                               _vala_ccode_declarator_suffix_unref0 (_tmp281_);
                                _g_free0 (_tmp276_);
-                               _g_free0 (_tmp271_);
-                               var_decl = _tmp278_;
-                               _tmp279_ = var_decl;
-                               _tmp280_ = f;
-                               _tmp281_ = vala_variable_get_variable_type ((ValaVariable*) _tmp280_);
-                               _tmp282_ = _tmp281_;
-                               _tmp283_ = vala_ccode_base_module_default_value_for_type (self, _tmp282_, TRUE);
-                               _tmp284_ = _tmp283_;
-                               vala_ccode_variable_declarator_set_initializer (_tmp279_, _tmp284_);
-                               _vala_ccode_node_unref0 (_tmp284_);
-                               _tmp285_ = self->class_init_context;
-                               if (_tmp285_ != NULL) {
-                                       ValaCCodeBaseModuleEmitContext* _tmp286_ = NULL;
-                                       _tmp286_ = self->class_init_context;
-                                       vala_ccode_base_module_push_context (self, _tmp286_);
+                               var_decl = _tmp283_;
+                               _tmp284_ = var_decl;
+                               _tmp285_ = f;
+                               _tmp286_ = vala_variable_get_variable_type ((ValaVariable*) _tmp285_);
+                               _tmp287_ = _tmp286_;
+                               _tmp288_ = vala_ccode_base_module_default_value_for_type (self, _tmp287_, TRUE);
+                               _tmp289_ = _tmp288_;
+                               vala_ccode_variable_declarator_set_initializer (_tmp284_, _tmp289_);
+                               _vala_ccode_node_unref0 (_tmp289_);
+                               _tmp290_ = self->class_init_context;
+                               if (_tmp290_ != NULL) {
+                                       ValaCCodeBaseModuleEmitContext* _tmp291_ = NULL;
+                                       _tmp291_ = self->class_init_context;
+                                       vala_ccode_base_module_push_context (self, _tmp291_);
                                } else {
-                                       ValaCCodeBaseModuleEmitContext* _tmp287_ = NULL;
-                                       ValaCCodeBaseModuleEmitContext* _tmp288_ = NULL;
-                                       _tmp287_ = vala_ccode_base_module_emit_context_new (NULL);
-                                       _tmp288_ = _tmp287_;
-                                       vala_ccode_base_module_push_context (self, _tmp288_);
-                                       _vala_ccode_base_module_emit_context_unref0 (_tmp288_);
+                                       ValaCCodeBaseModuleEmitContext* _tmp292_ = NULL;
+                                       ValaCCodeBaseModuleEmitContext* _tmp293_ = NULL;
+                                       _tmp292_ = vala_ccode_base_module_emit_context_new (NULL);
+                                       _tmp293_ = _tmp292_;
+                                       vala_ccode_base_module_push_context (self, _tmp293_);
+                                       _vala_ccode_base_module_emit_context_unref0 (_tmp293_);
                                }
-                               _tmp289_ = f;
-                               _tmp290_ = vala_variable_get_initializer ((ValaVariable*) _tmp289_);
-                               _tmp291_ = _tmp290_;
-                               if (_tmp291_ != NULL) {
-                                       ValaField* _tmp292_ = NULL;
-                                       ValaExpression* _tmp293_ = NULL;
-                                       ValaExpression* _tmp294_ = NULL;
+                               _tmp294_ = f;
+                               _tmp295_ = vala_variable_get_initializer ((ValaVariable*) _tmp294_);
+                               _tmp296_ = _tmp295_;
+                               if (_tmp296_ != NULL) {
+                                       ValaField* _tmp297_ = NULL;
+                                       ValaExpression* _tmp298_ = NULL;
+                                       ValaExpression* _tmp299_ = NULL;
                                        ValaCCodeExpression* init = NULL;
-                                       ValaField* _tmp295_ = NULL;
-                                       ValaExpression* _tmp296_ = NULL;
-                                       ValaExpression* _tmp297_ = NULL;
-                                       ValaCCodeExpression* _tmp298_ = NULL;
-                                       ValaCCodeExpression* _tmp299_ = NULL;
-                                       gboolean _tmp300_ = FALSE;
-                                       _tmp292_ = f;
-                                       _tmp293_ = vala_variable_get_initializer ((ValaVariable*) _tmp292_);
-                                       _tmp294_ = _tmp293_;
-                                       vala_code_node_emit ((ValaCodeNode*) _tmp294_, (ValaCodeGenerator*) self);
-                                       _tmp295_ = f;
-                                       _tmp296_ = vala_variable_get_initializer ((ValaVariable*) _tmp295_);
-                                       _tmp297_ = _tmp296_;
-                                       _tmp298_ = vala_ccode_base_module_get_cvalue (self, _tmp297_);
-                                       init = _tmp298_;
-                                       _tmp299_ = init;
-                                       _tmp300_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp299_);
-                                       if (_tmp300_) {
-                                               ValaCCodeVariableDeclarator* _tmp301_ = NULL;
-                                               ValaCCodeExpression* _tmp302_ = NULL;
-                                               _tmp301_ = var_decl;
-                                               _tmp302_ = init;
-                                               vala_ccode_variable_declarator_set_initializer (_tmp301_, _tmp302_);
+                                       ValaField* _tmp300_ = NULL;
+                                       ValaExpression* _tmp301_ = NULL;
+                                       ValaExpression* _tmp302_ = NULL;
+                                       ValaCCodeExpression* _tmp303_ = NULL;
+                                       ValaCCodeExpression* _tmp304_ = NULL;
+                                       gboolean _tmp305_ = FALSE;
+                                       _tmp297_ = f;
+                                       _tmp298_ = vala_variable_get_initializer ((ValaVariable*) _tmp297_);
+                                       _tmp299_ = _tmp298_;
+                                       vala_code_node_emit ((ValaCodeNode*) _tmp299_, (ValaCodeGenerator*) self);
+                                       _tmp300_ = f;
+                                       _tmp301_ = vala_variable_get_initializer ((ValaVariable*) _tmp300_);
+                                       _tmp302_ = _tmp301_;
+                                       _tmp303_ = vala_ccode_base_module_get_cvalue (self, _tmp302_);
+                                       init = _tmp303_;
+                                       _tmp304_ = init;
+                                       _tmp305_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp304_);
+                                       if (_tmp305_) {
+                                               ValaCCodeVariableDeclarator* _tmp306_ = NULL;
+                                               ValaCCodeExpression* _tmp307_ = NULL;
+                                               _tmp306_ = var_decl;
+                                               _tmp307_ = init;
+                                               vala_ccode_variable_declarator_set_initializer (_tmp306_, _tmp307_);
                                        }
                                        _vala_ccode_node_unref0 (init);
                                }
-                               _tmp303_ = field_ctype;
-                               _tmp304_ = vala_ccode_declaration_new (_tmp303_);
-                               var_def = _tmp304_;
-                               _tmp305_ = var_def;
-                               _tmp306_ = var_decl;
-                               vala_ccode_declaration_add_declarator (_tmp305_, (ValaCCodeDeclarator*) _tmp306_);
-                               _tmp307_ = f;
-                               _tmp308_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp307_);
-                               if (!_tmp308_) {
-                                       ValaCCodeDeclaration* _tmp309_ = NULL;
-                                       _tmp309_ = var_def;
-                                       vala_ccode_declaration_set_modifiers (_tmp309_, VALA_CCODE_MODIFIERS_EXTERN);
+                               _tmp308_ = field_ctype;
+                               _tmp309_ = vala_ccode_declaration_new (_tmp308_);
+                               var_def = _tmp309_;
+                               _tmp310_ = var_def;
+                               _tmp311_ = var_decl;
+                               vala_ccode_declaration_add_declarator (_tmp310_, (ValaCCodeDeclarator*) _tmp311_);
+                               _tmp312_ = f;
+                               _tmp313_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp312_);
+                               if (!_tmp313_) {
+                                       ValaCCodeDeclaration* _tmp314_ = NULL;
+                                       _tmp314_ = var_def;
+                                       vala_ccode_declaration_set_modifiers (_tmp314_, VALA_CCODE_MODIFIERS_EXTERN);
                                } else {
-                                       ValaCCodeDeclaration* _tmp310_ = NULL;
-                                       _tmp310_ = var_def;
-                                       vala_ccode_declaration_set_modifiers (_tmp310_, VALA_CCODE_MODIFIERS_STATIC);
+                                       ValaCCodeDeclaration* _tmp315_ = NULL;
+                                       _tmp315_ = var_def;
+                                       vala_ccode_declaration_set_modifiers (_tmp315_, VALA_CCODE_MODIFIERS_STATIC);
                                }
-                               _tmp311_ = self->cfile;
-                               _tmp312_ = var_def;
-                               vala_ccode_file_add_type_member_declaration (_tmp311_, (ValaCCodeNode*) _tmp312_);
-                               _tmp314_ = f;
-                               _tmp315_ = vala_variable_get_variable_type ((ValaVariable*) _tmp314_);
-                               _tmp316_ = _tmp315_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp316_, VALA_TYPE_ARRAY_TYPE)) {
-                                       ValaField* _tmp317_ = NULL;
-                                       gboolean _tmp318_ = FALSE;
-                                       _tmp317_ = f;
-                                       _tmp318_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp317_);
-                                       _tmp313_ = _tmp318_;
+                               _tmp316_ = self->cfile;
+                               _tmp317_ = var_def;
+                               vala_ccode_file_add_type_member_declaration (_tmp316_, (ValaCCodeNode*) _tmp317_);
+                               _tmp319_ = f;
+                               _tmp320_ = vala_variable_get_variable_type ((ValaVariable*) _tmp319_);
+                               _tmp321_ = _tmp320_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp321_, VALA_TYPE_ARRAY_TYPE)) {
+                                       ValaField* _tmp322_ = NULL;
+                                       gboolean _tmp323_ = FALSE;
+                                       _tmp322_ = f;
+                                       _tmp323_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp322_);
+                                       _tmp318_ = _tmp323_;
                                } else {
-                                       _tmp313_ = FALSE;
+                                       _tmp318_ = FALSE;
                                }
-                               if (_tmp313_) {
+                               if (_tmp318_) {
                                        ValaArrayType* array_type = NULL;
-                                       ValaField* _tmp319_ = NULL;
-                                       ValaDataType* _tmp320_ = NULL;
-                                       ValaDataType* _tmp321_ = NULL;
-                                       ValaArrayType* _tmp322_ = NULL;
-                                       ValaArrayType* _tmp323_ = NULL;
-                                       gboolean _tmp324_ = FALSE;
-                                       gboolean _tmp325_ = FALSE;
-                                       _tmp319_ = f;
-                                       _tmp320_ = vala_variable_get_variable_type ((ValaVariable*) _tmp319_);
-                                       _tmp321_ = _tmp320_;
-                                       _tmp322_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp321_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                       array_type = _tmp322_;
-                                       _tmp323_ = array_type;
-                                       _tmp324_ = vala_array_type_get_fixed_length (_tmp323_);
-                                       _tmp325_ = _tmp324_;
-                                       if (!_tmp325_) {
-                                               gboolean _tmp356_ = FALSE;
-                                               ValaArrayType* _tmp357_ = NULL;
-                                               gint _tmp358_ = 0;
-                                               gint _tmp359_ = 0;
+                                       ValaField* _tmp324_ = NULL;
+                                       ValaDataType* _tmp325_ = NULL;
+                                       ValaDataType* _tmp326_ = NULL;
+                                       ValaArrayType* _tmp327_ = NULL;
+                                       ValaArrayType* _tmp328_ = NULL;
+                                       gboolean _tmp329_ = FALSE;
+                                       gboolean _tmp330_ = FALSE;
+                                       _tmp324_ = f;
+                                       _tmp325_ = vala_variable_get_variable_type ((ValaVariable*) _tmp324_);
+                                       _tmp326_ = _tmp325_;
+                                       _tmp327_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp326_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                       array_type = _tmp327_;
+                                       _tmp328_ = array_type;
+                                       _tmp329_ = vala_array_type_get_fixed_length (_tmp328_);
+                                       _tmp330_ = _tmp329_;
+                                       if (!_tmp330_) {
+                                               gboolean _tmp361_ = FALSE;
+                                               ValaArrayType* _tmp362_ = NULL;
+                                               gint _tmp363_ = 0;
+                                               gint _tmp364_ = 0;
                                                {
                                                        gint dim = 0;
                                                        dim = 1;
                                                        {
-                                                               gboolean _tmp326_ = FALSE;
-                                                               _tmp326_ = TRUE;
+                                                               gboolean _tmp331_ = FALSE;
+                                                               _tmp331_ = TRUE;
                                                                while (TRUE) {
-                                                                       gint _tmp328_ = 0;
-                                                                       ValaArrayType* _tmp329_ = NULL;
-                                                                       gint _tmp330_ = 0;
-                                                                       gint _tmp331_ = 0;
+                                                                       gint _tmp333_ = 0;
+                                                                       ValaArrayType* _tmp334_ = NULL;
+                                                                       gint _tmp335_ = 0;
+                                                                       gint _tmp336_ = 0;
                                                                        ValaDataType* len_type = NULL;
-                                                                       ValaDataType* _tmp332_ = NULL;
-                                                                       ValaDataType* _tmp333_ = NULL;
+                                                                       ValaDataType* _tmp337_ = NULL;
+                                                                       ValaDataType* _tmp338_ = NULL;
                                                                        ValaCCodeDeclaration* len_def = NULL;
-                                                                       ValaDataType* _tmp334_ = NULL;
-                                                                       gchar* _tmp335_ = NULL;
-                                                                       gchar* _tmp336_ = NULL;
-                                                                       ValaCCodeDeclaration* _tmp337_ = NULL;
-                                                                       ValaCCodeDeclaration* _tmp338_ = NULL;
-                                                                       ValaCCodeDeclaration* _tmp339_ = NULL;
-                                                                       ValaField* _tmp340_ = NULL;
+                                                                       ValaDataType* _tmp339_ = NULL;
+                                                                       gchar* _tmp340_ = NULL;
                                                                        gchar* _tmp341_ = NULL;
-                                                                       gchar* _tmp342_ = NULL;
-                                                                       gint _tmp343_ = 0;
-                                                                       gchar* _tmp344_ = NULL;
-                                                                       gchar* _tmp345_ = NULL;
-                                                                       ValaCCodeConstant* _tmp346_ = NULL;
-                                                                       ValaCCodeConstant* _tmp347_ = NULL;
-                                                                       ValaCCodeVariableDeclarator* _tmp348_ = NULL;
-                                                                       ValaCCodeVariableDeclarator* _tmp349_ = NULL;
-                                                                       ValaField* _tmp350_ = NULL;
-                                                                       gboolean _tmp351_ = FALSE;
-                                                                       ValaCCodeFile* _tmp354_ = NULL;
-                                                                       ValaCCodeDeclaration* _tmp355_ = NULL;
-                                                                       if (!_tmp326_) {
-                                                                               gint _tmp327_ = 0;
-                                                                               _tmp327_ = dim;
-                                                                               dim = _tmp327_ + 1;
+                                                                       ValaCCodeDeclaration* _tmp342_ = NULL;
+                                                                       ValaCCodeDeclaration* _tmp343_ = NULL;
+                                                                       ValaCCodeDeclaration* _tmp344_ = NULL;
+                                                                       ValaField* _tmp345_ = NULL;
+                                                                       gchar* _tmp346_ = NULL;
+                                                                       gchar* _tmp347_ = NULL;
+                                                                       gint _tmp348_ = 0;
+                                                                       gchar* _tmp349_ = NULL;
+                                                                       gchar* _tmp350_ = NULL;
+                                                                       ValaCCodeConstant* _tmp351_ = NULL;
+                                                                       ValaCCodeConstant* _tmp352_ = NULL;
+                                                                       ValaCCodeVariableDeclarator* _tmp353_ = NULL;
+                                                                       ValaCCodeVariableDeclarator* _tmp354_ = NULL;
+                                                                       ValaField* _tmp355_ = NULL;
+                                                                       gboolean _tmp356_ = FALSE;
+                                                                       ValaCCodeFile* _tmp359_ = NULL;
+                                                                       ValaCCodeDeclaration* _tmp360_ = NULL;
+                                                                       if (!_tmp331_) {
+                                                                               gint _tmp332_ = 0;
+                                                                               _tmp332_ = dim;
+                                                                               dim = _tmp332_ + 1;
                                                                        }
-                                                                       _tmp326_ = FALSE;
-                                                                       _tmp328_ = dim;
-                                                                       _tmp329_ = array_type;
-                                                                       _tmp330_ = vala_array_type_get_rank (_tmp329_);
-                                                                       _tmp331_ = _tmp330_;
-                                                                       if (!(_tmp328_ <= _tmp331_)) {
+                                                                       _tmp331_ = FALSE;
+                                                                       _tmp333_ = dim;
+                                                                       _tmp334_ = array_type;
+                                                                       _tmp335_ = vala_array_type_get_rank (_tmp334_);
+                                                                       _tmp336_ = _tmp335_;
+                                                                       if (!(_tmp333_ <= _tmp336_)) {
                                                                                break;
                                                                        }
-                                                                       _tmp332_ = self->int_type;
-                                                                       _tmp333_ = vala_data_type_copy (_tmp332_);
-                                                                       len_type = _tmp333_;
-                                                                       _tmp334_ = len_type;
-                                                                       _tmp335_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp334_);
-                                                                       _tmp336_ = _tmp335_;
-                                                                       _tmp337_ = vala_ccode_declaration_new (_tmp336_);
-                                                                       _tmp338_ = _tmp337_;
-                                                                       _g_free0 (_tmp336_);
-                                                                       len_def = _tmp338_;
-                                                                       _tmp339_ = len_def;
-                                                                       _tmp340_ = f;
-                                                                       _tmp341_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp340_);
-                                                                       _tmp342_ = _tmp341_;
-                                                                       _tmp343_ = dim;
-                                                                       _tmp344_ = vala_ccode_base_module_get_array_length_cname (self, _tmp342_, _tmp343_);
-                                                                       _tmp345_ = _tmp344_;
-                                                                       _tmp346_ = vala_ccode_constant_new ("0");
+                                                                       _tmp337_ = self->int_type;
+                                                                       _tmp338_ = vala_data_type_copy (_tmp337_);
+                                                                       len_type = _tmp338_;
+                                                                       _tmp339_ = len_type;
+                                                                       _tmp340_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp339_);
+                                                                       _tmp341_ = _tmp340_;
+                                                                       _tmp342_ = vala_ccode_declaration_new (_tmp341_);
+                                                                       _tmp343_ = _tmp342_;
+                                                                       _g_free0 (_tmp341_);
+                                                                       len_def = _tmp343_;
+                                                                       _tmp344_ = len_def;
+                                                                       _tmp345_ = f;
+                                                                       _tmp346_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp345_);
                                                                        _tmp347_ = _tmp346_;
-                                                                       _tmp348_ = vala_ccode_variable_declarator_new (_tmp345_, (ValaCCodeExpression*) _tmp347_, NULL);
-                                                                       _tmp349_ = _tmp348_;
-                                                                       vala_ccode_declaration_add_declarator (_tmp339_, (ValaCCodeDeclarator*) _tmp349_);
-                                                                       _vala_ccode_node_unref0 (_tmp349_);
-                                                                       _vala_ccode_node_unref0 (_tmp347_);
-                                                                       _g_free0 (_tmp345_);
-                                                                       _g_free0 (_tmp342_);
-                                                                       _tmp350_ = f;
-                                                                       _tmp351_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp350_);
-                                                                       if (!_tmp351_) {
-                                                                               ValaCCodeDeclaration* _tmp352_ = NULL;
-                                                                               _tmp352_ = len_def;
-                                                                               vala_ccode_declaration_set_modifiers (_tmp352_, VALA_CCODE_MODIFIERS_EXTERN);
+                                                                       _tmp348_ = dim;
+                                                                       _tmp349_ = vala_ccode_base_module_get_array_length_cname (self, _tmp347_, _tmp348_);
+                                                                       _tmp350_ = _tmp349_;
+                                                                       _tmp351_ = vala_ccode_constant_new ("0");
+                                                                       _tmp352_ = _tmp351_;
+                                                                       _tmp353_ = vala_ccode_variable_declarator_new (_tmp350_, (ValaCCodeExpression*) _tmp352_, NULL);
+                                                                       _tmp354_ = _tmp353_;
+                                                                       vala_ccode_declaration_add_declarator (_tmp344_, (ValaCCodeDeclarator*) _tmp354_);
+                                                                       _vala_ccode_node_unref0 (_tmp354_);
+                                                                       _vala_ccode_node_unref0 (_tmp352_);
+                                                                       _g_free0 (_tmp350_);
+                                                                       _g_free0 (_tmp347_);
+                                                                       _tmp355_ = f;
+                                                                       _tmp356_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp355_);
+                                                                       if (!_tmp356_) {
+                                                                               ValaCCodeDeclaration* _tmp357_ = NULL;
+                                                                               _tmp357_ = len_def;
+                                                                               vala_ccode_declaration_set_modifiers (_tmp357_, VALA_CCODE_MODIFIERS_EXTERN);
                                                                        } else {
-                                                                               ValaCCodeDeclaration* _tmp353_ = NULL;
-                                                                               _tmp353_ = len_def;
-                                                                               vala_ccode_declaration_set_modifiers (_tmp353_, VALA_CCODE_MODIFIERS_STATIC);
+                                                                               ValaCCodeDeclaration* _tmp358_ = NULL;
+                                                                               _tmp358_ = len_def;
+                                                                               vala_ccode_declaration_set_modifiers (_tmp358_, VALA_CCODE_MODIFIERS_STATIC);
                                                                        }
-                                                                       _tmp354_ = self->cfile;
-                                                                       _tmp355_ = len_def;
-                                                                       vala_ccode_file_add_type_member_declaration (_tmp354_, (ValaCCodeNode*) _tmp355_);
+                                                                       _tmp359_ = self->cfile;
+                                                                       _tmp360_ = len_def;
+                                                                       vala_ccode_file_add_type_member_declaration (_tmp359_, (ValaCCodeNode*) _tmp360_);
                                                                        _vala_ccode_node_unref0 (len_def);
                                                                        _vala_code_node_unref0 (len_type);
                                                                }
                                                        }
                                                }
-                                               _tmp357_ = array_type;
-                                               _tmp358_ = vala_array_type_get_rank (_tmp357_);
-                                               _tmp359_ = _tmp358_;
-                                               if (_tmp359_ == 1) {
-                                                       ValaField* _tmp360_ = NULL;
-                                                       gboolean _tmp361_ = FALSE;
-                                                       _tmp360_ = f;
-                                                       _tmp361_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp360_);
-                                                       _tmp356_ = _tmp361_;
+                                               _tmp362_ = array_type;
+                                               _tmp363_ = vala_array_type_get_rank (_tmp362_);
+                                               _tmp364_ = _tmp363_;
+                                               if (_tmp364_ == 1) {
+                                                       ValaField* _tmp365_ = NULL;
+                                                       gboolean _tmp366_ = FALSE;
+                                                       _tmp365_ = f;
+                                                       _tmp366_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp365_);
+                                                       _tmp361_ = _tmp366_;
                                                } else {
-                                                       _tmp356_ = FALSE;
+                                                       _tmp361_ = FALSE;
                                                }
-                                               if (_tmp356_) {
+                                               if (_tmp361_) {
                                                        ValaDataType* len_type = NULL;
-                                                       ValaDataType* _tmp362_ = NULL;
-                                                       ValaDataType* _tmp363_ = NULL;
+                                                       ValaDataType* _tmp367_ = NULL;
+                                                       ValaDataType* _tmp368_ = NULL;
                                                        ValaCCodeDeclaration* _cdecl_ = NULL;
-                                                       ValaDataType* _tmp364_ = NULL;
-                                                       gchar* _tmp365_ = NULL;
-                                                       gchar* _tmp366_ = NULL;
-                                                       ValaCCodeDeclaration* _tmp367_ = NULL;
-                                                       ValaCCodeDeclaration* _tmp368_ = NULL;
-                                                       ValaCCodeDeclaration* _tmp369_ = NULL;
-                                                       ValaField* _tmp370_ = NULL;
+                                                       ValaDataType* _tmp369_ = NULL;
+                                                       gchar* _tmp370_ = NULL;
                                                        gchar* _tmp371_ = NULL;
-                                                       gchar* _tmp372_ = NULL;
-                                                       gchar* _tmp373_ = NULL;
-                                                       gchar* _tmp374_ = NULL;
-                                                       ValaCCodeConstant* _tmp375_ = NULL;
-                                                       ValaCCodeConstant* _tmp376_ = NULL;
-                                                       ValaCCodeVariableDeclarator* _tmp377_ = NULL;
-                                                       ValaCCodeVariableDeclarator* _tmp378_ = NULL;
-                                                       ValaCCodeDeclaration* _tmp379_ = NULL;
-                                                       ValaCCodeFile* _tmp380_ = NULL;
-                                                       ValaCCodeDeclaration* _tmp381_ = NULL;
-                                                       _tmp362_ = self->int_type;
-                                                       _tmp363_ = vala_data_type_copy (_tmp362_);
-                                                       len_type = _tmp363_;
-                                                       _tmp364_ = len_type;
-                                                       _tmp365_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp364_);
-                                                       _tmp366_ = _tmp365_;
-                                                       _tmp367_ = vala_ccode_declaration_new (_tmp366_);
-                                                       _tmp368_ = _tmp367_;
-                                                       _g_free0 (_tmp366_);
-                                                       _cdecl_ = _tmp368_;
-                                                       _tmp369_ = _cdecl_;
-                                                       _tmp370_ = f;
-                                                       _tmp371_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp370_);
-                                                       _tmp372_ = _tmp371_;
-                                                       _tmp373_ = vala_ccode_base_module_get_array_size_cname (self, _tmp372_);
-                                                       _tmp374_ = _tmp373_;
-                                                       _tmp375_ = vala_ccode_constant_new ("0");
-                                                       _tmp376_ = _tmp375_;
-                                                       _tmp377_ = vala_ccode_variable_declarator_new (_tmp374_, (ValaCCodeExpression*) _tmp376_, NULL);
-                                                       _tmp378_ = _tmp377_;
-                                                       vala_ccode_declaration_add_declarator (_tmp369_, (ValaCCodeDeclarator*) _tmp378_);
-                                                       _vala_ccode_node_unref0 (_tmp378_);
-                                                       _vala_ccode_node_unref0 (_tmp376_);
-                                                       _g_free0 (_tmp374_);
-                                                       _g_free0 (_tmp372_);
-                                                       _tmp379_ = _cdecl_;
-                                                       vala_ccode_declaration_set_modifiers (_tmp379_, VALA_CCODE_MODIFIERS_STATIC);
-                                                       _tmp380_ = self->cfile;
-                                                       _tmp381_ = _cdecl_;
-                                                       vala_ccode_file_add_type_member_declaration (_tmp380_, (ValaCCodeNode*) _tmp381_);
+                                                       ValaCCodeDeclaration* _tmp372_ = NULL;
+                                                       ValaCCodeDeclaration* _tmp373_ = NULL;
+                                                       ValaCCodeDeclaration* _tmp374_ = NULL;
+                                                       ValaField* _tmp375_ = NULL;
+                                                       gchar* _tmp376_ = NULL;
+                                                       gchar* _tmp377_ = NULL;
+                                                       gchar* _tmp378_ = NULL;
+                                                       gchar* _tmp379_ = NULL;
+                                                       ValaCCodeConstant* _tmp380_ = NULL;
+                                                       ValaCCodeConstant* _tmp381_ = NULL;
+                                                       ValaCCodeVariableDeclarator* _tmp382_ = NULL;
+                                                       ValaCCodeVariableDeclarator* _tmp383_ = NULL;
+                                                       ValaCCodeDeclaration* _tmp384_ = NULL;
+                                                       ValaCCodeFile* _tmp385_ = NULL;
+                                                       ValaCCodeDeclaration* _tmp386_ = NULL;
+                                                       _tmp367_ = self->int_type;
+                                                       _tmp368_ = vala_data_type_copy (_tmp367_);
+                                                       len_type = _tmp368_;
+                                                       _tmp369_ = len_type;
+                                                       _tmp370_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp369_);
+                                                       _tmp371_ = _tmp370_;
+                                                       _tmp372_ = vala_ccode_declaration_new (_tmp371_);
+                                                       _tmp373_ = _tmp372_;
+                                                       _g_free0 (_tmp371_);
+                                                       _cdecl_ = _tmp373_;
+                                                       _tmp374_ = _cdecl_;
+                                                       _tmp375_ = f;
+                                                       _tmp376_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp375_);
+                                                       _tmp377_ = _tmp376_;
+                                                       _tmp378_ = vala_ccode_base_module_get_array_size_cname (self, _tmp377_);
+                                                       _tmp379_ = _tmp378_;
+                                                       _tmp380_ = vala_ccode_constant_new ("0");
+                                                       _tmp381_ = _tmp380_;
+                                                       _tmp382_ = vala_ccode_variable_declarator_new (_tmp379_, (ValaCCodeExpression*) _tmp381_, NULL);
+                                                       _tmp383_ = _tmp382_;
+                                                       vala_ccode_declaration_add_declarator (_tmp374_, (ValaCCodeDeclarator*) _tmp383_);
+                                                       _vala_ccode_node_unref0 (_tmp383_);
+                                                       _vala_ccode_node_unref0 (_tmp381_);
+                                                       _g_free0 (_tmp379_);
+                                                       _g_free0 (_tmp377_);
+                                                       _tmp384_ = _cdecl_;
+                                                       vala_ccode_declaration_set_modifiers (_tmp384_, VALA_CCODE_MODIFIERS_STATIC);
+                                                       _tmp385_ = self->cfile;
+                                                       _tmp386_ = _cdecl_;
+                                                       vala_ccode_file_add_type_member_declaration (_tmp385_, (ValaCCodeNode*) _tmp386_);
                                                        _vala_ccode_node_unref0 (_cdecl_);
                                                        _vala_code_node_unref0 (len_type);
                                                }
                                        }
                                        _vala_code_node_unref0 (array_type);
                                } else {
-                                       ValaField* _tmp382_ = NULL;
-                                       ValaDataType* _tmp383_ = NULL;
-                                       ValaDataType* _tmp384_ = NULL;
-                                       _tmp382_ = f;
-                                       _tmp383_ = vala_variable_get_variable_type ((ValaVariable*) _tmp382_);
-                                       _tmp384_ = _tmp383_;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp384_, VALA_TYPE_DELEGATE_TYPE)) {
+                                       ValaField* _tmp387_ = NULL;
+                                       ValaDataType* _tmp388_ = NULL;
+                                       ValaDataType* _tmp389_ = NULL;
+                                       _tmp387_ = f;
+                                       _tmp388_ = vala_variable_get_variable_type ((ValaVariable*) _tmp387_);
+                                       _tmp389_ = _tmp388_;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp389_, VALA_TYPE_DELEGATE_TYPE)) {
                                                ValaDelegateType* delegate_type = NULL;
-                                               ValaField* _tmp385_ = NULL;
-                                               ValaDataType* _tmp386_ = NULL;
-                                               ValaDataType* _tmp387_ = NULL;
-                                               ValaDelegateType* _tmp388_ = NULL;
-                                               ValaDelegateType* _tmp389_ = NULL;
-                                               ValaDelegate* _tmp390_ = NULL;
-                                               ValaDelegate* _tmp391_ = NULL;
-                                               gboolean _tmp392_ = FALSE;
-                                               gboolean _tmp393_ = FALSE;
-                                               _tmp385_ = f;
-                                               _tmp386_ = vala_variable_get_variable_type ((ValaVariable*) _tmp385_);
-                                               _tmp387_ = _tmp386_;
-                                               _tmp388_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp387_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                                               delegate_type = _tmp388_;
-                                               _tmp389_ = delegate_type;
-                                               _tmp390_ = vala_delegate_type_get_delegate_symbol (_tmp389_);
-                                               _tmp391_ = _tmp390_;
-                                               _tmp392_ = vala_delegate_get_has_target (_tmp391_);
-                                               _tmp393_ = _tmp392_;
-                                               if (_tmp393_) {
+                                               ValaField* _tmp390_ = NULL;
+                                               ValaDataType* _tmp391_ = NULL;
+                                               ValaDataType* _tmp392_ = NULL;
+                                               ValaDelegateType* _tmp393_ = NULL;
+                                               ValaDelegateType* _tmp394_ = NULL;
+                                               ValaDelegate* _tmp395_ = NULL;
+                                               ValaDelegate* _tmp396_ = NULL;
+                                               gboolean _tmp397_ = FALSE;
+                                               gboolean _tmp398_ = FALSE;
+                                               _tmp390_ = f;
+                                               _tmp391_ = vala_variable_get_variable_type ((ValaVariable*) _tmp390_);
+                                               _tmp392_ = _tmp391_;
+                                               _tmp393_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp392_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                                               delegate_type = _tmp393_;
+                                               _tmp394_ = delegate_type;
+                                               _tmp395_ = vala_delegate_type_get_delegate_symbol (_tmp394_);
+                                               _tmp396_ = _tmp395_;
+                                               _tmp397_ = vala_delegate_get_has_target (_tmp396_);
+                                               _tmp398_ = _tmp397_;
+                                               if (_tmp398_) {
                                                        ValaCCodeDeclaration* target_def = NULL;
-                                                       ValaCCodeDeclaration* _tmp394_ = NULL;
-                                                       ValaCCodeDeclaration* _tmp395_ = NULL;
-                                                       ValaField* _tmp396_ = NULL;
-                                                       gchar* _tmp397_ = NULL;
-                                                       gchar* _tmp398_ = NULL;
-                                                       ValaCCodeConstant* _tmp399_ = NULL;
-                                                       ValaCCodeConstant* _tmp400_ = NULL;
-                                                       ValaCCodeVariableDeclarator* _tmp401_ = NULL;
-                                                       ValaCCodeVariableDeclarator* _tmp402_ = NULL;
-                                                       ValaField* _tmp403_ = NULL;
-                                                       gboolean _tmp404_ = FALSE;
-                                                       ValaCCodeFile* _tmp407_ = NULL;
-                                                       ValaCCodeDeclaration* _tmp408_ = NULL;
-                                                       ValaDelegateType* _tmp409_ = NULL;
-                                                       gboolean _tmp410_ = FALSE;
-                                                       _tmp394_ = vala_ccode_declaration_new ("gpointer");
-                                                       target_def = _tmp394_;
-                                                       _tmp395_ = target_def;
-                                                       _tmp396_ = f;
-                                                       _tmp397_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp396_);
-                                                       _tmp398_ = _tmp397_;
-                                                       _tmp399_ = vala_ccode_constant_new ("NULL");
-                                                       _tmp400_ = _tmp399_;
-                                                       _tmp401_ = vala_ccode_variable_declarator_new (_tmp398_, (ValaCCodeExpression*) _tmp400_, NULL);
-                                                       _tmp402_ = _tmp401_;
-                                                       vala_ccode_declaration_add_declarator (_tmp395_, (ValaCCodeDeclarator*) _tmp402_);
-                                                       _vala_ccode_node_unref0 (_tmp402_);
-                                                       _vala_ccode_node_unref0 (_tmp400_);
-                                                       _g_free0 (_tmp398_);
-                                                       _tmp403_ = f;
-                                                       _tmp404_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp403_);
-                                                       if (!_tmp404_) {
-                                                               ValaCCodeDeclaration* _tmp405_ = NULL;
-                                                               _tmp405_ = target_def;
-                                                               vala_ccode_declaration_set_modifiers (_tmp405_, VALA_CCODE_MODIFIERS_EXTERN);
+                                                       ValaCCodeDeclaration* _tmp399_ = NULL;
+                                                       ValaCCodeDeclaration* _tmp400_ = NULL;
+                                                       ValaField* _tmp401_ = NULL;
+                                                       gchar* _tmp402_ = NULL;
+                                                       gchar* _tmp403_ = NULL;
+                                                       ValaCCodeConstant* _tmp404_ = NULL;
+                                                       ValaCCodeConstant* _tmp405_ = NULL;
+                                                       ValaCCodeVariableDeclarator* _tmp406_ = NULL;
+                                                       ValaCCodeVariableDeclarator* _tmp407_ = NULL;
+                                                       ValaField* _tmp408_ = NULL;
+                                                       gboolean _tmp409_ = FALSE;
+                                                       ValaCCodeFile* _tmp412_ = NULL;
+                                                       ValaCCodeDeclaration* _tmp413_ = NULL;
+                                                       ValaDelegateType* _tmp414_ = NULL;
+                                                       gboolean _tmp415_ = FALSE;
+                                                       _tmp399_ = vala_ccode_declaration_new ("gpointer");
+                                                       target_def = _tmp399_;
+                                                       _tmp400_ = target_def;
+                                                       _tmp401_ = f;
+                                                       _tmp402_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp401_);
+                                                       _tmp403_ = _tmp402_;
+                                                       _tmp404_ = vala_ccode_constant_new ("NULL");
+                                                       _tmp405_ = _tmp404_;
+                                                       _tmp406_ = vala_ccode_variable_declarator_new (_tmp403_, (ValaCCodeExpression*) _tmp405_, NULL);
+                                                       _tmp407_ = _tmp406_;
+                                                       vala_ccode_declaration_add_declarator (_tmp400_, (ValaCCodeDeclarator*) _tmp407_);
+                                                       _vala_ccode_node_unref0 (_tmp407_);
+                                                       _vala_ccode_node_unref0 (_tmp405_);
+                                                       _g_free0 (_tmp403_);
+                                                       _tmp408_ = f;
+                                                       _tmp409_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp408_);
+                                                       if (!_tmp409_) {
+                                                               ValaCCodeDeclaration* _tmp410_ = NULL;
+                                                               _tmp410_ = target_def;
+                                                               vala_ccode_declaration_set_modifiers (_tmp410_, VALA_CCODE_MODIFIERS_EXTERN);
                                                        } else {
-                                                               ValaCCodeDeclaration* _tmp406_ = NULL;
-                                                               _tmp406_ = target_def;
-                                                               vala_ccode_declaration_set_modifiers (_tmp406_, VALA_CCODE_MODIFIERS_STATIC);
+                                                               ValaCCodeDeclaration* _tmp411_ = NULL;
+                                                               _tmp411_ = target_def;
+                                                               vala_ccode_declaration_set_modifiers (_tmp411_, VALA_CCODE_MODIFIERS_STATIC);
                                                        }
-                                                       _tmp407_ = self->cfile;
-                                                       _tmp408_ = target_def;
-                                                       vala_ccode_file_add_type_member_declaration (_tmp407_, (ValaCCodeNode*) _tmp408_);
-                                                       _tmp409_ = delegate_type;
-                                                       _tmp410_ = vala_data_type_is_disposable ((ValaDataType*) _tmp409_);
-                                                       if (_tmp410_) {
+                                                       _tmp412_ = self->cfile;
+                                                       _tmp413_ = target_def;
+                                                       vala_ccode_file_add_type_member_declaration (_tmp412_, (ValaCCodeNode*) _tmp413_);
+                                                       _tmp414_ = delegate_type;
+                                                       _tmp415_ = vala_data_type_is_disposable ((ValaDataType*) _tmp414_);
+                                                       if (_tmp415_) {
                                                                ValaCCodeDeclaration* target_destroy_notify_def = NULL;
-                                                               ValaCCodeDeclaration* _tmp411_ = NULL;
-                                                               ValaCCodeDeclaration* _tmp412_ = NULL;
-                                                               ValaField* _tmp413_ = NULL;
-                                                               gchar* _tmp414_ = NULL;
-                                                               gchar* _tmp415_ = NULL;
-                                                               gchar* _tmp416_ = NULL;
-                                                               gchar* _tmp417_ = NULL;
-                                                               ValaCCodeConstant* _tmp418_ = NULL;
-                                                               ValaCCodeConstant* _tmp419_ = NULL;
-                                                               ValaCCodeVariableDeclarator* _tmp420_ = NULL;
-                                                               ValaCCodeVariableDeclarator* _tmp421_ = NULL;
-                                                               ValaField* _tmp422_ = NULL;
-                                                               gboolean _tmp423_ = FALSE;
-                                                               ValaCCodeFile* _tmp426_ = NULL;
-                                                               ValaCCodeDeclaration* _tmp427_ = NULL;
-                                                               _tmp411_ = vala_ccode_declaration_new ("GDestroyNotify");
-                                                               target_destroy_notify_def = _tmp411_;
-                                                               _tmp412_ = target_destroy_notify_def;
-                                                               _tmp413_ = f;
-                                                               _tmp414_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp413_);
-                                                               _tmp415_ = _tmp414_;
-                                                               _tmp416_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp415_);
-                                                               _tmp417_ = _tmp416_;
-                                                               _tmp418_ = vala_ccode_constant_new ("NULL");
-                                                               _tmp419_ = _tmp418_;
-                                                               _tmp420_ = vala_ccode_variable_declarator_new (_tmp417_, (ValaCCodeExpression*) _tmp419_, NULL);
-                                                               _tmp421_ = _tmp420_;
-                                                               vala_ccode_declaration_add_declarator (_tmp412_, (ValaCCodeDeclarator*) _tmp421_);
-                                                               _vala_ccode_node_unref0 (_tmp421_);
-                                                               _vala_ccode_node_unref0 (_tmp419_);
-                                                               _g_free0 (_tmp417_);
-                                                               _g_free0 (_tmp415_);
-                                                               _tmp422_ = f;
-                                                               _tmp423_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp422_);
-                                                               if (!_tmp423_) {
-                                                                       ValaCCodeDeclaration* _tmp424_ = NULL;
-                                                                       _tmp424_ = target_destroy_notify_def;
-                                                                       vala_ccode_declaration_set_modifiers (_tmp424_, VALA_CCODE_MODIFIERS_EXTERN);
+                                                               ValaCCodeDeclaration* _tmp416_ = NULL;
+                                                               ValaCCodeDeclaration* _tmp417_ = NULL;
+                                                               ValaField* _tmp418_ = NULL;
+                                                               gchar* _tmp419_ = NULL;
+                                                               gchar* _tmp420_ = NULL;
+                                                               gchar* _tmp421_ = NULL;
+                                                               gchar* _tmp422_ = NULL;
+                                                               ValaCCodeConstant* _tmp423_ = NULL;
+                                                               ValaCCodeConstant* _tmp424_ = NULL;
+                                                               ValaCCodeVariableDeclarator* _tmp425_ = NULL;
+                                                               ValaCCodeVariableDeclarator* _tmp426_ = NULL;
+                                                               ValaField* _tmp427_ = NULL;
+                                                               gboolean _tmp428_ = FALSE;
+                                                               ValaCCodeFile* _tmp431_ = NULL;
+                                                               ValaCCodeDeclaration* _tmp432_ = NULL;
+                                                               _tmp416_ = vala_ccode_declaration_new ("GDestroyNotify");
+                                                               target_destroy_notify_def = _tmp416_;
+                                                               _tmp417_ = target_destroy_notify_def;
+                                                               _tmp418_ = f;
+                                                               _tmp419_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp418_);
+                                                               _tmp420_ = _tmp419_;
+                                                               _tmp421_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp420_);
+                                                               _tmp422_ = _tmp421_;
+                                                               _tmp423_ = vala_ccode_constant_new ("NULL");
+                                                               _tmp424_ = _tmp423_;
+                                                               _tmp425_ = vala_ccode_variable_declarator_new (_tmp422_, (ValaCCodeExpression*) _tmp424_, NULL);
+                                                               _tmp426_ = _tmp425_;
+                                                               vala_ccode_declaration_add_declarator (_tmp417_, (ValaCCodeDeclarator*) _tmp426_);
+                                                               _vala_ccode_node_unref0 (_tmp426_);
+                                                               _vala_ccode_node_unref0 (_tmp424_);
+                                                               _g_free0 (_tmp422_);
+                                                               _g_free0 (_tmp420_);
+                                                               _tmp427_ = f;
+                                                               _tmp428_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp427_);
+                                                               if (!_tmp428_) {
+                                                                       ValaCCodeDeclaration* _tmp429_ = NULL;
+                                                                       _tmp429_ = target_destroy_notify_def;
+                                                                       vala_ccode_declaration_set_modifiers (_tmp429_, VALA_CCODE_MODIFIERS_EXTERN);
                                                                } else {
-                                                                       ValaCCodeDeclaration* _tmp425_ = NULL;
-                                                                       _tmp425_ = target_destroy_notify_def;
-                                                                       vala_ccode_declaration_set_modifiers (_tmp425_, VALA_CCODE_MODIFIERS_STATIC);
+                                                                       ValaCCodeDeclaration* _tmp430_ = NULL;
+                                                                       _tmp430_ = target_destroy_notify_def;
+                                                                       vala_ccode_declaration_set_modifiers (_tmp430_, VALA_CCODE_MODIFIERS_STATIC);
                                                                }
-                                                               _tmp426_ = self->cfile;
-                                                               _tmp427_ = target_destroy_notify_def;
-                                                               vala_ccode_file_add_type_member_declaration (_tmp426_, (ValaCCodeNode*) _tmp427_);
+                                                               _tmp431_ = self->cfile;
+                                                               _tmp432_ = target_destroy_notify_def;
+                                                               vala_ccode_file_add_type_member_declaration (_tmp431_, (ValaCCodeNode*) _tmp432_);
                                                                _vala_ccode_node_unref0 (target_destroy_notify_def);
                                                        }
                                                        _vala_ccode_node_unref0 (target_def);
@@ -5965,316 +6098,316 @@ static void vala_ccode_base_module_real_visit_field (ValaCodeVisitor* base, Vala
                                                _vala_code_node_unref0 (delegate_type);
                                        }
                                }
-                               _tmp428_ = f;
-                               _tmp429_ = vala_variable_get_initializer ((ValaVariable*) _tmp428_);
-                               _tmp430_ = _tmp429_;
-                               if (_tmp430_ != NULL) {
+                               _tmp433_ = f;
+                               _tmp434_ = vala_variable_get_initializer ((ValaVariable*) _tmp433_);
+                               _tmp435_ = _tmp434_;
+                               if (_tmp435_ != NULL) {
                                        ValaCCodeExpression* rhs = NULL;
-                                       ValaField* _tmp431_ = NULL;
-                                       ValaExpression* _tmp432_ = NULL;
-                                       ValaExpression* _tmp433_ = NULL;
-                                       ValaCCodeExpression* _tmp434_ = NULL;
-                                       ValaCCodeExpression* _tmp435_ = NULL;
-                                       gboolean _tmp436_ = FALSE;
-                                       _tmp431_ = f;
-                                       _tmp432_ = vala_variable_get_initializer ((ValaVariable*) _tmp431_);
-                                       _tmp433_ = _tmp432_;
-                                       _tmp434_ = vala_ccode_base_module_get_cvalue (self, _tmp433_);
-                                       rhs = _tmp434_;
-                                       _tmp435_ = rhs;
-                                       _tmp436_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp435_);
-                                       if (!_tmp436_) {
-                                               gboolean _tmp437_ = FALSE;
-                                               _tmp437_ = is_gtypeinstance;
-                                               if (_tmp437_) {
-                                                       ValaField* _tmp438_ = NULL;
-                                                       ValaExpression* _tmp439_ = NULL;
-                                                       ValaExpression* _tmp440_ = NULL;
-                                                       gboolean _tmp477_ = FALSE;
-                                                       ValaField* _tmp478_ = NULL;
-                                                       ValaDataType* _tmp479_ = NULL;
-                                                       ValaDataType* _tmp480_ = NULL;
-                                                       _tmp438_ = f;
-                                                       _tmp439_ = vala_variable_get_initializer ((ValaVariable*) _tmp438_);
-                                                       _tmp440_ = _tmp439_;
-                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp440_, VALA_TYPE_INITIALIZER_LIST)) {
-                                                               ValaCCodeFunction* _tmp441_ = NULL;
-                                                               ValaCCodeFunction* _tmp442_ = NULL;
+                                       ValaField* _tmp436_ = NULL;
+                                       ValaExpression* _tmp437_ = NULL;
+                                       ValaExpression* _tmp438_ = NULL;
+                                       ValaCCodeExpression* _tmp439_ = NULL;
+                                       ValaCCodeExpression* _tmp440_ = NULL;
+                                       gboolean _tmp441_ = FALSE;
+                                       _tmp436_ = f;
+                                       _tmp437_ = vala_variable_get_initializer ((ValaVariable*) _tmp436_);
+                                       _tmp438_ = _tmp437_;
+                                       _tmp439_ = vala_ccode_base_module_get_cvalue (self, _tmp438_);
+                                       rhs = _tmp439_;
+                                       _tmp440_ = rhs;
+                                       _tmp441_ = vala_ccode_base_module_is_constant_ccode_expression (self, _tmp440_);
+                                       if (!_tmp441_) {
+                                               gboolean _tmp442_ = FALSE;
+                                               _tmp442_ = is_gtypeinstance;
+                                               if (_tmp442_) {
+                                                       ValaField* _tmp443_ = NULL;
+                                                       ValaExpression* _tmp444_ = NULL;
+                                                       ValaExpression* _tmp445_ = NULL;
+                                                       gboolean _tmp482_ = FALSE;
+                                                       ValaField* _tmp483_ = NULL;
+                                                       ValaDataType* _tmp484_ = NULL;
+                                                       ValaDataType* _tmp485_ = NULL;
+                                                       _tmp443_ = f;
+                                                       _tmp444_ = vala_variable_get_initializer ((ValaVariable*) _tmp443_);
+                                                       _tmp445_ = _tmp444_;
+                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp445_, VALA_TYPE_INITIALIZER_LIST)) {
+                                                               ValaCCodeFunction* _tmp446_ = NULL;
+                                                               ValaCCodeFunction* _tmp447_ = NULL;
                                                                ValaLocalVariable* temp_decl = NULL;
-                                                               ValaField* _tmp443_ = NULL;
-                                                               ValaDataType* _tmp444_ = NULL;
-                                                               ValaDataType* _tmp445_ = NULL;
-                                                               ValaLocalVariable* _tmp446_ = NULL;
+                                                               ValaField* _tmp448_ = NULL;
+                                                               ValaDataType* _tmp449_ = NULL;
+                                                               ValaDataType* _tmp450_ = NULL;
+                                                               ValaLocalVariable* _tmp451_ = NULL;
                                                                ValaCCodeVariableDeclarator* vardecl = NULL;
-                                                               ValaLocalVariable* _tmp447_ = NULL;
-                                                               const gchar* _tmp448_ = NULL;
-                                                               const gchar* _tmp449_ = NULL;
-                                                               ValaCCodeExpression* _tmp450_ = NULL;
-                                                               ValaCCodeVariableDeclarator* _tmp451_ = NULL;
-                                                               ValaCCodeFunction* _tmp452_ = NULL;
-                                                               ValaCCodeFunction* _tmp453_ = NULL;
-                                                               ValaLocalVariable* _tmp454_ = NULL;
-                                                               ValaDataType* _tmp455_ = NULL;
-                                                               ValaDataType* _tmp456_ = NULL;
-                                                               gchar* _tmp457_ = NULL;
-                                                               gchar* _tmp458_ = NULL;
-                                                               ValaCCodeVariableDeclarator* _tmp459_ = NULL;
-                                                               ValaCCodeExpression* tmp = NULL;
-                                                               ValaLocalVariable* _tmp460_ = NULL;
-                                                               const gchar* _tmp461_ = NULL;
-                                                               const gchar* _tmp462_ = NULL;
+                                                               ValaLocalVariable* _tmp452_ = NULL;
+                                                               const gchar* _tmp453_ = NULL;
+                                                               const gchar* _tmp454_ = NULL;
+                                                               ValaCCodeExpression* _tmp455_ = NULL;
+                                                               ValaCCodeVariableDeclarator* _tmp456_ = NULL;
+                                                               ValaCCodeFunction* _tmp457_ = NULL;
+                                                               ValaCCodeFunction* _tmp458_ = NULL;
+                                                               ValaLocalVariable* _tmp459_ = NULL;
+                                                               ValaDataType* _tmp460_ = NULL;
+                                                               ValaDataType* _tmp461_ = NULL;
+                                                               gchar* _tmp462_ = NULL;
                                                                gchar* _tmp463_ = NULL;
-                                                               gchar* _tmp464_ = NULL;
-                                                               ValaCCodeExpression* _tmp465_ = NULL;
-                                                               ValaCCodeExpression* _tmp466_ = NULL;
-                                                               ValaCCodeFunction* _tmp467_ = NULL;
-                                                               ValaCCodeFunction* _tmp468_ = NULL;
-                                                               ValaCCodeExpression* _tmp469_ = NULL;
+                                                               ValaCCodeVariableDeclarator* _tmp464_ = NULL;
+                                                               ValaCCodeExpression* tmp = NULL;
+                                                               ValaLocalVariable* _tmp465_ = NULL;
+                                                               const gchar* _tmp466_ = NULL;
+                                                               const gchar* _tmp467_ = NULL;
+                                                               gchar* _tmp468_ = NULL;
+                                                               gchar* _tmp469_ = NULL;
                                                                ValaCCodeExpression* _tmp470_ = NULL;
-                                                               ValaCCodeFunction* _tmp471_ = NULL;
+                                                               ValaCCodeExpression* _tmp471_ = NULL;
                                                                ValaCCodeFunction* _tmp472_ = NULL;
-                                                               _tmp441_ = vala_ccode_base_module_get_ccode (self);
-                                                               _tmp442_ = _tmp441_;
-                                                               vala_ccode_function_open_block (_tmp442_);
-                                                               _tmp443_ = f;
-                                                               _tmp444_ = vala_variable_get_variable_type ((ValaVariable*) _tmp443_);
-                                                               _tmp445_ = _tmp444_;
-                                                               _tmp446_ = vala_ccode_base_module_get_temp_variable (self, _tmp445_, TRUE, NULL, TRUE);
-                                                               temp_decl = _tmp446_;
-                                                               _tmp447_ = temp_decl;
-                                                               _tmp448_ = vala_symbol_get_name ((ValaSymbol*) _tmp447_);
-                                                               _tmp449_ = _tmp448_;
-                                                               _tmp450_ = rhs;
-                                                               _tmp451_ = vala_ccode_variable_declarator_new_zero (_tmp449_, _tmp450_, NULL);
-                                                               vardecl = _tmp451_;
-                                                               _tmp452_ = vala_ccode_base_module_get_ccode (self);
-                                                               _tmp453_ = _tmp452_;
-                                                               _tmp454_ = temp_decl;
-                                                               _tmp455_ = vala_variable_get_variable_type ((ValaVariable*) _tmp454_);
-                                                               _tmp456_ = _tmp455_;
-                                                               _tmp457_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp456_);
+                                                               ValaCCodeFunction* _tmp473_ = NULL;
+                                                               ValaCCodeExpression* _tmp474_ = NULL;
+                                                               ValaCCodeExpression* _tmp475_ = NULL;
+                                                               ValaCCodeFunction* _tmp476_ = NULL;
+                                                               ValaCCodeFunction* _tmp477_ = NULL;
+                                                               _tmp446_ = vala_ccode_base_module_get_ccode (self);
+                                                               _tmp447_ = _tmp446_;
+                                                               vala_ccode_function_open_block (_tmp447_);
+                                                               _tmp448_ = f;
+                                                               _tmp449_ = vala_variable_get_variable_type ((ValaVariable*) _tmp448_);
+                                                               _tmp450_ = _tmp449_;
+                                                               _tmp451_ = vala_ccode_base_module_get_temp_variable (self, _tmp450_, TRUE, NULL, TRUE);
+                                                               temp_decl = _tmp451_;
+                                                               _tmp452_ = temp_decl;
+                                                               _tmp453_ = vala_symbol_get_name ((ValaSymbol*) _tmp452_);
+                                                               _tmp454_ = _tmp453_;
+                                                               _tmp455_ = rhs;
+                                                               _tmp456_ = vala_ccode_variable_declarator_new_zero (_tmp454_, _tmp455_, NULL);
+                                                               vardecl = _tmp456_;
+                                                               _tmp457_ = vala_ccode_base_module_get_ccode (self);
                                                                _tmp458_ = _tmp457_;
-                                                               _tmp459_ = vardecl;
-                                                               vala_ccode_function_add_declaration (_tmp453_, _tmp458_, (ValaCCodeDeclarator*) _tmp459_, 0);
-                                                               _g_free0 (_tmp458_);
-                                                               _tmp460_ = temp_decl;
-                                                               _tmp461_ = vala_symbol_get_name ((ValaSymbol*) _tmp460_);
-                                                               _tmp462_ = _tmp461_;
-                                                               _tmp463_ = vala_ccode_base_module_get_variable_cname (self, _tmp462_);
-                                                               _tmp464_ = _tmp463_;
-                                                               _tmp465_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp464_);
-                                                               _tmp466_ = _tmp465_;
-                                                               _g_free0 (_tmp464_);
-                                                               tmp = _tmp466_;
-                                                               _tmp467_ = vala_ccode_base_module_get_ccode (self);
-                                                               _tmp468_ = _tmp467_;
-                                                               _tmp469_ = lhs;
-                                                               _tmp470_ = tmp;
-                                                               vala_ccode_function_add_assignment (_tmp468_, _tmp469_, _tmp470_);
-                                                               _tmp471_ = vala_ccode_base_module_get_ccode (self);
-                                                               _tmp472_ = _tmp471_;
-                                                               vala_ccode_function_close (_tmp472_);
+                                                               _tmp459_ = temp_decl;
+                                                               _tmp460_ = vala_variable_get_variable_type ((ValaVariable*) _tmp459_);
+                                                               _tmp461_ = _tmp460_;
+                                                               _tmp462_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp461_);
+                                                               _tmp463_ = _tmp462_;
+                                                               _tmp464_ = vardecl;
+                                                               vala_ccode_function_add_declaration (_tmp458_, _tmp463_, (ValaCCodeDeclarator*) _tmp464_, 0);
+                                                               _g_free0 (_tmp463_);
+                                                               _tmp465_ = temp_decl;
+                                                               _tmp466_ = vala_symbol_get_name ((ValaSymbol*) _tmp465_);
+                                                               _tmp467_ = _tmp466_;
+                                                               _tmp468_ = vala_ccode_base_module_get_variable_cname (self, _tmp467_);
+                                                               _tmp469_ = _tmp468_;
+                                                               _tmp470_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp469_);
+                                                               _tmp471_ = _tmp470_;
+                                                               _g_free0 (_tmp469_);
+                                                               tmp = _tmp471_;
+                                                               _tmp472_ = vala_ccode_base_module_get_ccode (self);
+                                                               _tmp473_ = _tmp472_;
+                                                               _tmp474_ = lhs;
+                                                               _tmp475_ = tmp;
+                                                               vala_ccode_function_add_assignment (_tmp473_, _tmp474_, _tmp475_);
+                                                               _tmp476_ = vala_ccode_base_module_get_ccode (self);
+                                                               _tmp477_ = _tmp476_;
+                                                               vala_ccode_function_close (_tmp477_);
                                                                _vala_ccode_node_unref0 (tmp);
                                                                _vala_ccode_node_unref0 (vardecl);
                                                                _vala_code_node_unref0 (temp_decl);
                                                        } else {
-                                                               ValaCCodeFunction* _tmp473_ = NULL;
-                                                               ValaCCodeFunction* _tmp474_ = NULL;
-                                                               ValaCCodeExpression* _tmp475_ = NULL;
-                                                               ValaCCodeExpression* _tmp476_ = NULL;
-                                                               _tmp473_ = vala_ccode_base_module_get_ccode (self);
-                                                               _tmp474_ = _tmp473_;
-                                                               _tmp475_ = lhs;
-                                                               _tmp476_ = rhs;
-                                                               vala_ccode_function_add_assignment (_tmp474_, _tmp475_, _tmp476_);
+                                                               ValaCCodeFunction* _tmp478_ = NULL;
+                                                               ValaCCodeFunction* _tmp479_ = NULL;
+                                                               ValaCCodeExpression* _tmp480_ = NULL;
+                                                               ValaCCodeExpression* _tmp481_ = NULL;
+                                                               _tmp478_ = vala_ccode_base_module_get_ccode (self);
+                                                               _tmp479_ = _tmp478_;
+                                                               _tmp480_ = lhs;
+                                                               _tmp481_ = rhs;
+                                                               vala_ccode_function_add_assignment (_tmp479_, _tmp480_, _tmp481_);
                                                        }
-                                                       _tmp478_ = f;
-                                                       _tmp479_ = vala_variable_get_variable_type ((ValaVariable*) _tmp478_);
-                                                       _tmp480_ = _tmp479_;
-                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp480_, VALA_TYPE_ARRAY_TYPE)) {
-                                                               ValaField* _tmp481_ = NULL;
-                                                               gboolean _tmp482_ = FALSE;
-                                                               _tmp481_ = f;
-                                                               _tmp482_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp481_);
-                                                               _tmp477_ = _tmp482_;
+                                                       _tmp483_ = f;
+                                                       _tmp484_ = vala_variable_get_variable_type ((ValaVariable*) _tmp483_);
+                                                       _tmp485_ = _tmp484_;
+                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp485_, VALA_TYPE_ARRAY_TYPE)) {
+                                                               ValaField* _tmp486_ = NULL;
+                                                               gboolean _tmp487_ = FALSE;
+                                                               _tmp486_ = f;
+                                                               _tmp487_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp486_);
+                                                               _tmp482_ = _tmp487_;
                                                        } else {
-                                                               _tmp477_ = FALSE;
+                                                               _tmp482_ = FALSE;
                                                        }
-                                                       if (_tmp477_) {
+                                                       if (_tmp482_) {
                                                                ValaArrayType* array_type = NULL;
-                                                               ValaField* _tmp483_ = NULL;
-                                                               ValaDataType* _tmp484_ = NULL;
-                                                               ValaDataType* _tmp485_ = NULL;
-                                                               ValaArrayType* _tmp486_ = NULL;
+                                                               ValaField* _tmp488_ = NULL;
+                                                               ValaDataType* _tmp489_ = NULL;
+                                                               ValaDataType* _tmp490_ = NULL;
+                                                               ValaArrayType* _tmp491_ = NULL;
                                                                ValaTargetValue* field_value = NULL;
-                                                               ValaField* _tmp487_ = NULL;
-                                                               ValaTargetValue* _tmp488_ = NULL;
-                                                               ValaGLibValue* glib_value = NULL;
-                                                               ValaField* _tmp489_ = NULL;
-                                                               ValaExpression* _tmp490_ = NULL;
-                                                               ValaExpression* _tmp491_ = NULL;
-                                                               ValaTargetValue* _tmp492_ = NULL;
+                                                               ValaField* _tmp492_ = NULL;
                                                                ValaTargetValue* _tmp493_ = NULL;
-                                                               ValaGLibValue* _tmp494_ = NULL;
-                                                               ValaGLibValue* _tmp495_ = NULL;
-                                                               ValaList* _tmp496_ = NULL;
-                                                               _tmp483_ = f;
-                                                               _tmp484_ = vala_variable_get_variable_type ((ValaVariable*) _tmp483_);
-                                                               _tmp485_ = _tmp484_;
-                                                               _tmp486_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp485_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                                               array_type = _tmp486_;
-                                                               _tmp487_ = f;
-                                                               _tmp488_ = vala_ccode_base_module_get_field_cvalue (self, _tmp487_, NULL);
-                                                               field_value = _tmp488_;
-                                                               _tmp489_ = f;
-                                                               _tmp490_ = vala_variable_get_initializer ((ValaVariable*) _tmp489_);
-                                                               _tmp491_ = _tmp490_;
-                                                               _tmp492_ = vala_expression_get_target_value (_tmp491_);
-                                                               _tmp493_ = _tmp492_;
-                                                               _tmp494_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp493_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
-                                                               glib_value = _tmp494_;
-                                                               _tmp495_ = glib_value;
-                                                               _tmp496_ = _tmp495_->array_length_cvalues;
-                                                               if (_tmp496_ != NULL) {
+                                                               ValaGLibValue* glib_value = NULL;
+                                                               ValaField* _tmp494_ = NULL;
+                                                               ValaExpression* _tmp495_ = NULL;
+                                                               ValaExpression* _tmp496_ = NULL;
+                                                               ValaTargetValue* _tmp497_ = NULL;
+                                                               ValaTargetValue* _tmp498_ = NULL;
+                                                               ValaGLibValue* _tmp499_ = NULL;
+                                                               ValaGLibValue* _tmp500_ = NULL;
+                                                               ValaList* _tmp501_ = NULL;
+                                                               _tmp488_ = f;
+                                                               _tmp489_ = vala_variable_get_variable_type ((ValaVariable*) _tmp488_);
+                                                               _tmp490_ = _tmp489_;
+                                                               _tmp491_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp490_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                                               array_type = _tmp491_;
+                                                               _tmp492_ = f;
+                                                               _tmp493_ = vala_ccode_base_module_get_field_cvalue (self, _tmp492_, NULL);
+                                                               field_value = _tmp493_;
+                                                               _tmp494_ = f;
+                                                               _tmp495_ = vala_variable_get_initializer ((ValaVariable*) _tmp494_);
+                                                               _tmp496_ = _tmp495_;
+                                                               _tmp497_ = vala_expression_get_target_value (_tmp496_);
+                                                               _tmp498_ = _tmp497_;
+                                                               _tmp499_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp498_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
+                                                               glib_value = _tmp499_;
+                                                               _tmp500_ = glib_value;
+                                                               _tmp501_ = _tmp500_->array_length_cvalues;
+                                                               if (_tmp501_ != NULL) {
                                                                        {
                                                                                gint dim = 0;
                                                                                dim = 1;
                                                                                {
-                                                                                       gboolean _tmp497_ = FALSE;
-                                                                                       _tmp497_ = TRUE;
+                                                                                       gboolean _tmp502_ = FALSE;
+                                                                                       _tmp502_ = TRUE;
                                                                                        while (TRUE) {
-                                                                                               gint _tmp499_ = 0;
-                                                                                               ValaArrayType* _tmp500_ = NULL;
-                                                                                               gint _tmp501_ = 0;
-                                                                                               gint _tmp502_ = 0;
-                                                                                               ValaCCodeExpression* array_len_lhs = NULL;
-                                                                                               ValaTargetValue* _tmp503_ = NULL;
                                                                                                gint _tmp504_ = 0;
-                                                                                               ValaCCodeExpression* _tmp505_ = NULL;
-                                                                                               ValaCCodeFunction* _tmp506_ = NULL;
-                                                                                               ValaCCodeFunction* _tmp507_ = NULL;
-                                                                                               ValaCCodeExpression* _tmp508_ = NULL;
-                                                                                               ValaGLibValue* _tmp509_ = NULL;
-                                                                                               gint _tmp510_ = 0;
-                                                                                               ValaCCodeExpression* _tmp511_ = NULL;
-                                                                                               ValaCCodeExpression* _tmp512_ = NULL;
-                                                                                               if (!_tmp497_) {
-                                                                                                       gint _tmp498_ = 0;
-                                                                                                       _tmp498_ = dim;
-                                                                                                       dim = _tmp498_ + 1;
-                                                                                               }
-                                                                                               _tmp497_ = FALSE;
-                                                                                               _tmp499_ = dim;
-                                                                                               _tmp500_ = array_type;
-                                                                                               _tmp501_ = vala_array_type_get_rank (_tmp500_);
-                                                                                               _tmp502_ = _tmp501_;
-                                                                                               if (!(_tmp499_ <= _tmp502_)) {
-                                                                                                       break;
+                                                                                               ValaArrayType* _tmp505_ = NULL;
+                                                                                               gint _tmp506_ = 0;
+                                                                                               gint _tmp507_ = 0;
+                                                                                               ValaCCodeExpression* array_len_lhs = NULL;
+                                                                                               ValaTargetValue* _tmp508_ = NULL;
+                                                                                               gint _tmp509_ = 0;
+                                                                                               ValaCCodeExpression* _tmp510_ = NULL;
+                                                                                               ValaCCodeFunction* _tmp511_ = NULL;
+                                                                                               ValaCCodeFunction* _tmp512_ = NULL;
+                                                                                               ValaCCodeExpression* _tmp513_ = NULL;
+                                                                                               ValaGLibValue* _tmp514_ = NULL;
+                                                                                               gint _tmp515_ = 0;
+                                                                                               ValaCCodeExpression* _tmp516_ = NULL;
+                                                                                               ValaCCodeExpression* _tmp517_ = NULL;
+                                                                                               if (!_tmp502_) {
+                                                                                                       gint _tmp503_ = 0;
+                                                                                                       _tmp503_ = dim;
+                                                                                                       dim = _tmp503_ + 1;
                                                                                                }
-                                                                                               _tmp503_ = field_value;
+                                                                                               _tmp502_ = FALSE;
                                                                                                _tmp504_ = dim;
-                                                                                               _tmp505_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp503_, _tmp504_);
-                                                                                               array_len_lhs = _tmp505_;
-                                                                                               _tmp506_ = vala_ccode_base_module_get_ccode (self);
+                                                                                               _tmp505_ = array_type;
+                                                                                               _tmp506_ = vala_array_type_get_rank (_tmp505_);
                                                                                                _tmp507_ = _tmp506_;
-                                                                                               _tmp508_ = array_len_lhs;
-                                                                                               _tmp509_ = glib_value;
-                                                                                               _tmp510_ = dim;
-                                                                                               _tmp511_ = vala_ccode_base_module_get_array_length_cvalue (self, (ValaTargetValue*) _tmp509_, _tmp510_);
+                                                                                               if (!(_tmp504_ <= _tmp507_)) {
+                                                                                                       break;
+                                                                                               }
+                                                                                               _tmp508_ = field_value;
+                                                                                               _tmp509_ = dim;
+                                                                                               _tmp510_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp508_, _tmp509_);
+                                                                                               array_len_lhs = _tmp510_;
+                                                                                               _tmp511_ = vala_ccode_base_module_get_ccode (self);
                                                                                                _tmp512_ = _tmp511_;
-                                                                                               vala_ccode_function_add_assignment (_tmp507_, _tmp508_, _tmp512_);
-                                                                                               _vala_ccode_node_unref0 (_tmp512_);
+                                                                                               _tmp513_ = array_len_lhs;
+                                                                                               _tmp514_ = glib_value;
+                                                                                               _tmp515_ = dim;
+                                                                                               _tmp516_ = vala_ccode_base_module_get_array_length_cvalue (self, (ValaTargetValue*) _tmp514_, _tmp515_);
+                                                                                               _tmp517_ = _tmp516_;
+                                                                                               vala_ccode_function_add_assignment (_tmp512_, _tmp513_, _tmp517_);
+                                                                                               _vala_ccode_node_unref0 (_tmp517_);
                                                                                                _vala_ccode_node_unref0 (array_len_lhs);
                                                                                        }
                                                                                }
                                                                        }
                                                                } else {
-                                                                       ValaGLibValue* _tmp513_ = NULL;
-                                                                       gboolean _tmp514_ = FALSE;
-                                                                       _tmp513_ = glib_value;
-                                                                       _tmp514_ = _tmp513_->array_null_terminated;
-                                                                       if (_tmp514_) {
+                                                                       ValaGLibValue* _tmp518_ = NULL;
+                                                                       gboolean _tmp519_ = FALSE;
+                                                                       _tmp518_ = glib_value;
+                                                                       _tmp519_ = _tmp518_->array_null_terminated;
+                                                                       if (_tmp519_) {
                                                                                ValaCCodeFunctionCall* len_call = NULL;
-                                                                               ValaCCodeIdentifier* _tmp515_ = NULL;
-                                                                               ValaCCodeIdentifier* _tmp516_ = NULL;
-                                                                               ValaCCodeFunctionCall* _tmp517_ = NULL;
-                                                                               ValaCCodeFunctionCall* _tmp518_ = NULL;
-                                                                               ValaCCodeFunctionCall* _tmp519_ = NULL;
-                                                                               ValaGLibValue* _tmp520_ = NULL;
-                                                                               ValaCCodeExpression* _tmp521_ = NULL;
-                                                                               ValaCCodeExpression* _tmp522_ = NULL;
-                                                                               ValaCCodeFunction* _tmp523_ = NULL;
-                                                                               ValaCCodeFunction* _tmp524_ = NULL;
-                                                                               ValaTargetValue* _tmp525_ = NULL;
+                                                                               ValaCCodeIdentifier* _tmp520_ = NULL;
+                                                                               ValaCCodeIdentifier* _tmp521_ = NULL;
+                                                                               ValaCCodeFunctionCall* _tmp522_ = NULL;
+                                                                               ValaCCodeFunctionCall* _tmp523_ = NULL;
+                                                                               ValaCCodeFunctionCall* _tmp524_ = NULL;
+                                                                               ValaGLibValue* _tmp525_ = NULL;
                                                                                ValaCCodeExpression* _tmp526_ = NULL;
                                                                                ValaCCodeExpression* _tmp527_ = NULL;
-                                                                               ValaCCodeFunctionCall* _tmp528_ = NULL;
+                                                                               ValaCCodeFunction* _tmp528_ = NULL;
+                                                                               ValaCCodeFunction* _tmp529_ = NULL;
+                                                                               ValaTargetValue* _tmp530_ = NULL;
+                                                                               ValaCCodeExpression* _tmp531_ = NULL;
+                                                                               ValaCCodeExpression* _tmp532_ = NULL;
+                                                                               ValaCCodeFunctionCall* _tmp533_ = NULL;
                                                                                self->requires_array_length = TRUE;
-                                                                               _tmp515_ = vala_ccode_identifier_new ("_vala_array_length");
-                                                                               _tmp516_ = _tmp515_;
-                                                                               _tmp517_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp516_);
-                                                                               _tmp518_ = _tmp517_;
-                                                                               _vala_ccode_node_unref0 (_tmp516_);
-                                                                               len_call = _tmp518_;
-                                                                               _tmp519_ = len_call;
-                                                                               _tmp520_ = glib_value;
-                                                                               _tmp521_ = vala_ccode_base_module_get_cvalue_ (self, (ValaTargetValue*) _tmp520_);
-                                                                               _tmp522_ = _tmp521_;
-                                                                               vala_ccode_function_call_add_argument (_tmp519_, _tmp522_);
-                                                                               _vala_ccode_node_unref0 (_tmp522_);
-                                                                               _tmp523_ = vala_ccode_base_module_get_ccode (self);
-                                                                               _tmp524_ = _tmp523_;
-                                                                               _tmp525_ = field_value;
-                                                                               _tmp526_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp525_, 1);
+                                                                               _tmp520_ = vala_ccode_identifier_new ("_vala_array_length");
+                                                                               _tmp521_ = _tmp520_;
+                                                                               _tmp522_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp521_);
+                                                                               _tmp523_ = _tmp522_;
+                                                                               _vala_ccode_node_unref0 (_tmp521_);
+                                                                               len_call = _tmp523_;
+                                                                               _tmp524_ = len_call;
+                                                                               _tmp525_ = glib_value;
+                                                                               _tmp526_ = vala_ccode_base_module_get_cvalue_ (self, (ValaTargetValue*) _tmp525_);
                                                                                _tmp527_ = _tmp526_;
-                                                                               _tmp528_ = len_call;
-                                                                               vala_ccode_function_add_assignment (_tmp524_, _tmp527_, (ValaCCodeExpression*) _tmp528_);
+                                                                               vala_ccode_function_call_add_argument (_tmp524_, _tmp527_);
                                                                                _vala_ccode_node_unref0 (_tmp527_);
+                                                                               _tmp528_ = vala_ccode_base_module_get_ccode (self);
+                                                                               _tmp529_ = _tmp528_;
+                                                                               _tmp530_ = field_value;
+                                                                               _tmp531_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp530_, 1);
+                                                                               _tmp532_ = _tmp531_;
+                                                                               _tmp533_ = len_call;
+                                                                               vala_ccode_function_add_assignment (_tmp529_, _tmp532_, (ValaCCodeExpression*) _tmp533_);
+                                                                               _vala_ccode_node_unref0 (_tmp532_);
                                                                                _vala_ccode_node_unref0 (len_call);
                                                                        } else {
                                                                                {
                                                                                        gint dim = 0;
                                                                                        dim = 1;
                                                                                        {
-                                                                                               gboolean _tmp529_ = FALSE;
-                                                                                               _tmp529_ = TRUE;
+                                                                                               gboolean _tmp534_ = FALSE;
+                                                                                               _tmp534_ = TRUE;
                                                                                                while (TRUE) {
-                                                                                                       gint _tmp531_ = 0;
-                                                                                                       ValaArrayType* _tmp532_ = NULL;
-                                                                                                       gint _tmp533_ = 0;
-                                                                                                       gint _tmp534_ = 0;
-                                                                                                       ValaCCodeFunction* _tmp535_ = NULL;
-                                                                                                       ValaCCodeFunction* _tmp536_ = NULL;
-                                                                                                       ValaTargetValue* _tmp537_ = NULL;
+                                                                                                       gint _tmp536_ = 0;
+                                                                                                       ValaArrayType* _tmp537_ = NULL;
                                                                                                        gint _tmp538_ = 0;
-                                                                                                       ValaCCodeExpression* _tmp539_ = NULL;
-                                                                                                       ValaCCodeExpression* _tmp540_ = NULL;
-                                                                                                       ValaCCodeConstant* _tmp541_ = NULL;
-                                                                                                       ValaCCodeConstant* _tmp542_ = NULL;
-                                                                                                       if (!_tmp529_) {
-                                                                                                               gint _tmp530_ = 0;
-                                                                                                               _tmp530_ = dim;
-                                                                                                               dim = _tmp530_ + 1;
+                                                                                                       gint _tmp539_ = 0;
+                                                                                                       ValaCCodeFunction* _tmp540_ = NULL;
+                                                                                                       ValaCCodeFunction* _tmp541_ = NULL;
+                                                                                                       ValaTargetValue* _tmp542_ = NULL;
+                                                                                                       gint _tmp543_ = 0;
+                                                                                                       ValaCCodeExpression* _tmp544_ = NULL;
+                                                                                                       ValaCCodeExpression* _tmp545_ = NULL;
+                                                                                                       ValaCCodeConstant* _tmp546_ = NULL;
+                                                                                                       ValaCCodeConstant* _tmp547_ = NULL;
+                                                                                                       if (!_tmp534_) {
+                                                                                                               gint _tmp535_ = 0;
+                                                                                                               _tmp535_ = dim;
+                                                                                                               dim = _tmp535_ + 1;
                                                                                                        }
-                                                                                                       _tmp529_ = FALSE;
-                                                                                                       _tmp531_ = dim;
-                                                                                                       _tmp532_ = array_type;
-                                                                                                       _tmp533_ = vala_array_type_get_rank (_tmp532_);
-                                                                                                       _tmp534_ = _tmp533_;
-                                                                                                       if (!(_tmp531_ <= _tmp534_)) {
+                                                                                                       _tmp534_ = FALSE;
+                                                                                                       _tmp536_ = dim;
+                                                                                                       _tmp537_ = array_type;
+                                                                                                       _tmp538_ = vala_array_type_get_rank (_tmp537_);
+                                                                                                       _tmp539_ = _tmp538_;
+                                                                                                       if (!(_tmp536_ <= _tmp539_)) {
                                                                                                                break;
                                                                                                        }
-                                                                                                       _tmp535_ = vala_ccode_base_module_get_ccode (self);
-                                                                                                       _tmp536_ = _tmp535_;
-                                                                                                       _tmp537_ = field_value;
-                                                                                                       _tmp538_ = dim;
-                                                                                                       _tmp539_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp537_, _tmp538_);
-                                                                                                       _tmp540_ = _tmp539_;
-                                                                                                       _tmp541_ = vala_ccode_constant_new ("-1");
-                                                                                                       _tmp542_ = _tmp541_;
-                                                                                                       vala_ccode_function_add_assignment (_tmp536_, _tmp540_, (ValaCCodeExpression*) _tmp542_);
-                                                                                                       _vala_ccode_node_unref0 (_tmp542_);
-                                                                                                       _vala_ccode_node_unref0 (_tmp540_);
+                                                                                                       _tmp540_ = vala_ccode_base_module_get_ccode (self);
+                                                                                                       _tmp541_ = _tmp540_;
+                                                                                                       _tmp542_ = field_value;
+                                                                                                       _tmp543_ = dim;
+                                                                                                       _tmp544_ = vala_ccode_base_module_get_array_length_cvalue (self, _tmp542_, _tmp543_);
+                                                                                                       _tmp545_ = _tmp544_;
+                                                                                                       _tmp546_ = vala_ccode_constant_new ("-1");
+                                                                                                       _tmp547_ = _tmp546_;
+                                                                                                       vala_ccode_function_add_assignment (_tmp541_, _tmp545_, (ValaCCodeExpression*) _tmp547_);
+                                                                                                       _vala_ccode_node_unref0 (_tmp547_);
+                                                                                                       _vala_ccode_node_unref0 (_tmp545_);
                                                                                                }
                                                                                        }
                                                                                }
@@ -6285,16 +6418,16 @@ static void vala_ccode_base_module_real_visit_field (ValaCodeVisitor* base, Vala
                                                                _vala_code_node_unref0 (array_type);
                                                        }
                                                } else {
-                                                       ValaField* _tmp543_ = NULL;
-                                                       ValaField* _tmp544_ = NULL;
-                                                       ValaSourceReference* _tmp545_ = NULL;
-                                                       ValaSourceReference* _tmp546_ = NULL;
-                                                       _tmp543_ = f;
-                                                       vala_code_node_set_error ((ValaCodeNode*) _tmp543_, TRUE);
-                                                       _tmp544_ = f;
-                                                       _tmp545_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp544_);
-                                                       _tmp546_ = _tmp545_;
-                                                       vala_report_error (_tmp546_, "Non-constant field initializers not supported in this context");
+                                                       ValaField* _tmp548_ = NULL;
+                                                       ValaField* _tmp549_ = NULL;
+                                                       ValaSourceReference* _tmp550_ = NULL;
+                                                       ValaSourceReference* _tmp551_ = NULL;
+                                                       _tmp548_ = f;
+                                                       vala_code_node_set_error ((ValaCodeNode*) _tmp548_, TRUE);
+                                                       _tmp549_ = f;
+                                                       _tmp550_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp549_);
+                                                       _tmp551_ = _tmp550_;
+                                                       vala_report_error (_tmp551_, "Non-constant field initializers not supported in this context");
                                                        _vala_ccode_node_unref0 (rhs);
                                                        _vala_ccode_node_unref0 (var_def);
                                                        _vala_ccode_node_unref0 (var_decl);
@@ -7029,8 +7162,8 @@ void vala_ccode_base_module_generate_property_accessor_declaration (ValaCCodeBas
        gboolean _tmp179_ = FALSE;
        ValaProperty* _tmp180_ = NULL;
        gboolean _tmp181_ = FALSE;
-       ValaCCodeFile* _tmp196_ = NULL;
-       ValaCCodeFunction* _tmp197_ = NULL;
+       ValaCCodeFile* _tmp210_ = NULL;
+       ValaCCodeFunction* _tmp211_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (acc != NULL);
        g_return_if_fail (decl_space != NULL);
@@ -7541,10 +7674,50 @@ void vala_ccode_base_module_generate_property_accessor_declaration (ValaCCodeBas
                _tmp194_ = vala_ccode_function_get_modifiers (_tmp193_);
                _tmp195_ = _tmp194_;
                vala_ccode_function_set_modifiers (_tmp193_, _tmp195_ | VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp196_ = FALSE;
+               ValaCodeContext* _tmp197_ = NULL;
+               gboolean _tmp198_ = FALSE;
+               gboolean _tmp199_ = FALSE;
+               _tmp197_ = self->priv->_context;
+               _tmp198_ = vala_code_context_get_hide_internal (_tmp197_);
+               _tmp199_ = _tmp198_;
+               if (_tmp199_) {
+                       gboolean _tmp200_ = FALSE;
+                       ValaProperty* _tmp201_ = NULL;
+                       gboolean _tmp202_ = FALSE;
+                       _tmp201_ = prop;
+                       _tmp202_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp201_);
+                       if (_tmp202_) {
+                               _tmp200_ = TRUE;
+                       } else {
+                               ValaPropertyAccessor* _tmp203_ = NULL;
+                               ValaSymbolAccessibility _tmp204_ = 0;
+                               ValaSymbolAccessibility _tmp205_ = 0;
+                               _tmp203_ = acc;
+                               _tmp204_ = vala_symbol_get_access ((ValaSymbol*) _tmp203_);
+                               _tmp205_ = _tmp204_;
+                               _tmp200_ = _tmp205_ == VALA_SYMBOL_ACCESSIBILITY_INTERNAL;
+                       }
+                       _tmp196_ = _tmp200_;
+               } else {
+                       _tmp196_ = FALSE;
+               }
+               if (_tmp196_) {
+                       ValaCCodeFunction* _tmp206_ = NULL;
+                       ValaCCodeFunction* _tmp207_ = NULL;
+                       ValaCCodeModifiers _tmp208_ = 0;
+                       ValaCCodeModifiers _tmp209_ = 0;
+                       _tmp206_ = function;
+                       _tmp207_ = function;
+                       _tmp208_ = vala_ccode_function_get_modifiers (_tmp207_);
+                       _tmp209_ = _tmp208_;
+                       vala_ccode_function_set_modifiers (_tmp207_, _tmp209_ | VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp196_ = decl_space;
-       _tmp197_ = function;
-       vala_ccode_file_add_function_declaration (_tmp196_, _tmp197_);
+       _tmp210_ = decl_space;
+       _tmp211_ = function;
+       vala_ccode_file_add_function_declaration (_tmp210_, _tmp211_);
        _vala_ccode_node_unref0 (function);
        _vala_ccode_node_unref0 (cvalueparam);
        _vala_code_node_unref0 (prop);
@@ -7609,10 +7782,10 @@ static void vala_ccode_base_module_real_visit_property_accessor (ValaCodeVisitor
        ValaProperty* _tmp156_ = NULL;
        gboolean _tmp157_ = FALSE;
        gboolean _tmp158_ = FALSE;
-       gboolean _tmp453_ = FALSE;
-       ValaProperty* _tmp454_ = NULL;
-       gboolean _tmp455_ = FALSE;
-       gboolean _tmp456_ = FALSE;
+       gboolean _tmp467_ = FALSE;
+       ValaProperty* _tmp468_ = NULL;
+       gboolean _tmp469_ = FALSE;
+       gboolean _tmp470_ = FALSE;
        self = (ValaCCodeBaseModule*) base;
        g_return_if_fail (acc != NULL);
        _tmp0_ = acc;
@@ -8030,22 +8203,22 @@ static void vala_ccode_base_module_real_visit_property_accessor (ValaCodeVisitor
                gboolean _tmp260_ = FALSE;
                ValaProperty* _tmp261_ = NULL;
                gboolean _tmp262_ = FALSE;
-               ValaCCodeFunction* _tmp277_ = NULL;
-               ValaProperty* _tmp278_ = NULL;
-               ValaMemberBinding _tmp279_ = 0;
-               ValaMemberBinding _tmp280_ = 0;
+               ValaCCodeFunction* _tmp291_ = NULL;
+               ValaProperty* _tmp292_ = NULL;
+               ValaMemberBinding _tmp293_ = 0;
+               ValaMemberBinding _tmp294_ = 0;
                ValaCCodeFunctionCall* vcast = NULL;
-               ValaProperty* _tmp290_ = NULL;
-               ValaSymbol* _tmp291_ = NULL;
-               ValaSymbol* _tmp292_ = NULL;
-               ValaCCodeFunctionCall* _tmp317_ = NULL;
-               ValaCCodeIdentifier* _tmp318_ = NULL;
-               ValaCCodeIdentifier* _tmp319_ = NULL;
-               ValaPropertyAccessor* _tmp320_ = NULL;
-               gboolean _tmp321_ = FALSE;
-               gboolean _tmp322_ = FALSE;
-               ValaCCodeFile* _tmp451_ = NULL;
-               ValaCCodeFunction* _tmp452_ = NULL;
+               ValaProperty* _tmp304_ = NULL;
+               ValaSymbol* _tmp305_ = NULL;
+               ValaSymbol* _tmp306_ = NULL;
+               ValaCCodeFunctionCall* _tmp331_ = NULL;
+               ValaCCodeIdentifier* _tmp332_ = NULL;
+               ValaCCodeIdentifier* _tmp333_ = NULL;
+               ValaPropertyAccessor* _tmp334_ = NULL;
+               gboolean _tmp335_ = FALSE;
+               gboolean _tmp336_ = FALSE;
+               ValaCCodeFile* _tmp465_ = NULL;
+               ValaCCodeFunction* _tmp466_ = NULL;
                _tmp163_ = acc;
                _tmp164_ = vala_property_accessor_get_readable (_tmp163_);
                _tmp165_ = _tmp164_;
@@ -8359,1239 +8532,1319 @@ static void vala_ccode_base_module_real_visit_property_accessor (ValaCodeVisitor
                        _tmp275_ = vala_ccode_function_get_modifiers (_tmp274_);
                        _tmp276_ = _tmp275_;
                        vala_ccode_function_set_modifiers (_tmp274_, _tmp276_ | VALA_CCODE_MODIFIERS_STATIC);
+               } else {
+                       gboolean _tmp277_ = FALSE;
+                       ValaCodeContext* _tmp278_ = NULL;
+                       gboolean _tmp279_ = FALSE;
+                       gboolean _tmp280_ = FALSE;
+                       _tmp278_ = self->priv->_context;
+                       _tmp279_ = vala_code_context_get_hide_internal (_tmp278_);
+                       _tmp280_ = _tmp279_;
+                       if (_tmp280_) {
+                               gboolean _tmp281_ = FALSE;
+                               ValaProperty* _tmp282_ = NULL;
+                               gboolean _tmp283_ = FALSE;
+                               _tmp282_ = prop;
+                               _tmp283_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp282_);
+                               if (_tmp283_) {
+                                       _tmp281_ = TRUE;
+                               } else {
+                                       ValaPropertyAccessor* _tmp284_ = NULL;
+                                       ValaSymbolAccessibility _tmp285_ = 0;
+                                       ValaSymbolAccessibility _tmp286_ = 0;
+                                       _tmp284_ = acc;
+                                       _tmp285_ = vala_symbol_get_access ((ValaSymbol*) _tmp284_);
+                                       _tmp286_ = _tmp285_;
+                                       _tmp281_ = _tmp286_ == VALA_SYMBOL_ACCESSIBILITY_INTERNAL;
+                               }
+                               _tmp277_ = _tmp281_;
+                       } else {
+                               _tmp277_ = FALSE;
+                       }
+                       if (_tmp277_) {
+                               ValaCCodeFunction* _tmp287_ = NULL;
+                               ValaCCodeFunction* _tmp288_ = NULL;
+                               ValaCCodeModifiers _tmp289_ = 0;
+                               ValaCCodeModifiers _tmp290_ = 0;
+                               _tmp287_ = function;
+                               _tmp288_ = function;
+                               _tmp289_ = vala_ccode_function_get_modifiers (_tmp288_);
+                               _tmp290_ = _tmp289_;
+                               vala_ccode_function_set_modifiers (_tmp288_, _tmp290_ | VALA_CCODE_MODIFIERS_INTERNAL);
+                       }
                }
-               _tmp277_ = function;
-               vala_ccode_base_module_push_function (self, _tmp277_);
-               _tmp278_ = prop;
-               _tmp279_ = vala_property_get_binding (_tmp278_);
-               _tmp280_ = _tmp279_;
-               if (_tmp280_ == VALA_MEMBER_BINDING_INSTANCE) {
-                       gboolean _tmp281_ = FALSE;
-                       ValaPropertyAccessor* _tmp282_ = NULL;
-                       gboolean _tmp283_ = FALSE;
-                       gboolean _tmp284_ = FALSE;
-                       _tmp282_ = acc;
-                       _tmp283_ = vala_property_accessor_get_readable (_tmp282_);
-                       _tmp284_ = _tmp283_;
-                       if (!_tmp284_) {
-                               _tmp281_ = TRUE;
+               _tmp291_ = function;
+               vala_ccode_base_module_push_function (self, _tmp291_);
+               _tmp292_ = prop;
+               _tmp293_ = vala_property_get_binding (_tmp292_);
+               _tmp294_ = _tmp293_;
+               if (_tmp294_ == VALA_MEMBER_BINDING_INSTANCE) {
+                       gboolean _tmp295_ = FALSE;
+                       ValaPropertyAccessor* _tmp296_ = NULL;
+                       gboolean _tmp297_ = FALSE;
+                       gboolean _tmp298_ = FALSE;
+                       _tmp296_ = acc;
+                       _tmp297_ = vala_property_accessor_get_readable (_tmp296_);
+                       _tmp298_ = _tmp297_;
+                       if (!_tmp298_) {
+                               _tmp295_ = TRUE;
                        } else {
-                               gboolean _tmp285_ = FALSE;
-                               _tmp285_ = returns_real_struct;
-                               _tmp281_ = _tmp285_;
+                               gboolean _tmp299_ = FALSE;
+                               _tmp299_ = returns_real_struct;
+                               _tmp295_ = _tmp299_;
                        }
-                       if (_tmp281_) {
-                               ValaProperty* _tmp286_ = NULL;
-                               ValaTypeSymbol* _tmp287_ = NULL;
-                               _tmp286_ = prop;
-                               _tmp287_ = t;
-                               vala_ccode_base_module_create_property_type_check_statement (self, _tmp286_, FALSE, _tmp287_, TRUE, "self");
+                       if (_tmp295_) {
+                               ValaProperty* _tmp300_ = NULL;
+                               ValaTypeSymbol* _tmp301_ = NULL;
+                               _tmp300_ = prop;
+                               _tmp301_ = t;
+                               vala_ccode_base_module_create_property_type_check_statement (self, _tmp300_, FALSE, _tmp301_, TRUE, "self");
                        } else {
-                               ValaProperty* _tmp288_ = NULL;
-                               ValaTypeSymbol* _tmp289_ = NULL;
-                               _tmp288_ = prop;
-                               _tmp289_ = t;
-                               vala_ccode_base_module_create_property_type_check_statement (self, _tmp288_, TRUE, _tmp289_, TRUE, "self");
+                               ValaProperty* _tmp302_ = NULL;
+                               ValaTypeSymbol* _tmp303_ = NULL;
+                               _tmp302_ = prop;
+                               _tmp303_ = t;
+                               vala_ccode_base_module_create_property_type_check_statement (self, _tmp302_, TRUE, _tmp303_, TRUE, "self");
                        }
                }
                vcast = NULL;
-               _tmp290_ = prop;
-               _tmp291_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp290_);
-               _tmp292_ = _tmp291_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp292_, VALA_TYPE_INTERFACE)) {
+               _tmp304_ = prop;
+               _tmp305_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp304_);
+               _tmp306_ = _tmp305_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp306_, VALA_TYPE_INTERFACE)) {
                        ValaInterface* iface = NULL;
-                       ValaProperty* _tmp293_ = NULL;
-                       ValaSymbol* _tmp294_ = NULL;
-                       ValaSymbol* _tmp295_ = NULL;
-                       ValaInterface* _tmp296_ = NULL;
-                       ValaInterface* _tmp297_ = NULL;
-                       gchar* _tmp298_ = NULL;
-                       gchar* _tmp299_ = NULL;
-                       gchar* _tmp300_ = NULL;
-                       gchar* _tmp301_ = NULL;
-                       ValaCCodeIdentifier* _tmp302_ = NULL;
-                       ValaCCodeIdentifier* _tmp303_ = NULL;
-                       ValaCCodeFunctionCall* _tmp304_ = NULL;
-                       _tmp293_ = prop;
-                       _tmp294_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp293_);
-                       _tmp295_ = _tmp294_;
-                       _tmp296_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp295_, VALA_TYPE_INTERFACE, ValaInterface));
-                       iface = _tmp296_;
-                       _tmp297_ = iface;
-                       _tmp298_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp297_, NULL);
-                       _tmp299_ = _tmp298_;
-                       _tmp300_ = g_strdup_printf ("%s_GET_INTERFACE", _tmp299_);
-                       _tmp301_ = _tmp300_;
-                       _tmp302_ = vala_ccode_identifier_new (_tmp301_);
-                       _tmp303_ = _tmp302_;
-                       _tmp304_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp303_);
-                       _vala_ccode_node_unref0 (vcast);
-                       vcast = _tmp304_;
-                       _vala_ccode_node_unref0 (_tmp303_);
-                       _g_free0 (_tmp301_);
-                       _g_free0 (_tmp299_);
-                       _vala_code_node_unref0 (iface);
-               } else {
-                       ValaClass* cl = NULL;
-                       ValaProperty* _tmp305_ = NULL;
-                       ValaSymbol* _tmp306_ = NULL;
-                       ValaSymbol* _tmp307_ = NULL;
-                       ValaClass* _tmp308_ = NULL;
-                       ValaClass* _tmp309_ = NULL;
-                       gchar* _tmp310_ = NULL;
-                       gchar* _tmp311_ = NULL;
+                       ValaProperty* _tmp307_ = NULL;
+                       ValaSymbol* _tmp308_ = NULL;
+                       ValaSymbol* _tmp309_ = NULL;
+                       ValaInterface* _tmp310_ = NULL;
+                       ValaInterface* _tmp311_ = NULL;
                        gchar* _tmp312_ = NULL;
                        gchar* _tmp313_ = NULL;
-                       ValaCCodeIdentifier* _tmp314_ = NULL;
-                       ValaCCodeIdentifier* _tmp315_ = NULL;
-                       ValaCCodeFunctionCall* _tmp316_ = NULL;
-                       _tmp305_ = prop;
-                       _tmp306_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp305_);
-                       _tmp307_ = _tmp306_;
-                       _tmp308_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp307_, VALA_TYPE_CLASS, ValaClass));
-                       cl = _tmp308_;
-                       _tmp309_ = cl;
-                       _tmp310_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp309_, NULL);
-                       _tmp311_ = _tmp310_;
-                       _tmp312_ = g_strdup_printf ("%s_GET_CLASS", _tmp311_);
+                       gchar* _tmp314_ = NULL;
+                       gchar* _tmp315_ = NULL;
+                       ValaCCodeIdentifier* _tmp316_ = NULL;
+                       ValaCCodeIdentifier* _tmp317_ = NULL;
+                       ValaCCodeFunctionCall* _tmp318_ = NULL;
+                       _tmp307_ = prop;
+                       _tmp308_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp307_);
+                       _tmp309_ = _tmp308_;
+                       _tmp310_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp309_, VALA_TYPE_INTERFACE, ValaInterface));
+                       iface = _tmp310_;
+                       _tmp311_ = iface;
+                       _tmp312_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp311_, NULL);
                        _tmp313_ = _tmp312_;
-                       _tmp314_ = vala_ccode_identifier_new (_tmp313_);
+                       _tmp314_ = g_strdup_printf ("%s_GET_INTERFACE", _tmp313_);
                        _tmp315_ = _tmp314_;
-                       _tmp316_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp315_);
+                       _tmp316_ = vala_ccode_identifier_new (_tmp315_);
+                       _tmp317_ = _tmp316_;
+                       _tmp318_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp317_);
                        _vala_ccode_node_unref0 (vcast);
-                       vcast = _tmp316_;
-                       _vala_ccode_node_unref0 (_tmp315_);
+                       vcast = _tmp318_;
+                       _vala_ccode_node_unref0 (_tmp317_);
+                       _g_free0 (_tmp315_);
                        _g_free0 (_tmp313_);
-                       _g_free0 (_tmp311_);
+                       _vala_code_node_unref0 (iface);
+               } else {
+                       ValaClass* cl = NULL;
+                       ValaProperty* _tmp319_ = NULL;
+                       ValaSymbol* _tmp320_ = NULL;
+                       ValaSymbol* _tmp321_ = NULL;
+                       ValaClass* _tmp322_ = NULL;
+                       ValaClass* _tmp323_ = NULL;
+                       gchar* _tmp324_ = NULL;
+                       gchar* _tmp325_ = NULL;
+                       gchar* _tmp326_ = NULL;
+                       gchar* _tmp327_ = NULL;
+                       ValaCCodeIdentifier* _tmp328_ = NULL;
+                       ValaCCodeIdentifier* _tmp329_ = NULL;
+                       ValaCCodeFunctionCall* _tmp330_ = NULL;
+                       _tmp319_ = prop;
+                       _tmp320_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp319_);
+                       _tmp321_ = _tmp320_;
+                       _tmp322_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp321_, VALA_TYPE_CLASS, ValaClass));
+                       cl = _tmp322_;
+                       _tmp323_ = cl;
+                       _tmp324_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp323_, NULL);
+                       _tmp325_ = _tmp324_;
+                       _tmp326_ = g_strdup_printf ("%s_GET_CLASS", _tmp325_);
+                       _tmp327_ = _tmp326_;
+                       _tmp328_ = vala_ccode_identifier_new (_tmp327_);
+                       _tmp329_ = _tmp328_;
+                       _tmp330_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp329_);
+                       _vala_ccode_node_unref0 (vcast);
+                       vcast = _tmp330_;
+                       _vala_ccode_node_unref0 (_tmp329_);
+                       _g_free0 (_tmp327_);
+                       _g_free0 (_tmp325_);
                        _vala_code_node_unref0 (cl);
                }
-               _tmp317_ = vcast;
-               _tmp318_ = vala_ccode_identifier_new ("self");
-               _tmp319_ = _tmp318_;
-               vala_ccode_function_call_add_argument (_tmp317_, (ValaCCodeExpression*) _tmp319_);
-               _vala_ccode_node_unref0 (_tmp319_);
-               _tmp320_ = acc;
-               _tmp321_ = vala_property_accessor_get_readable (_tmp320_);
-               _tmp322_ = _tmp321_;
-               if (_tmp322_) {
+               _tmp331_ = vcast;
+               _tmp332_ = vala_ccode_identifier_new ("self");
+               _tmp333_ = _tmp332_;
+               vala_ccode_function_call_add_argument (_tmp331_, (ValaCCodeExpression*) _tmp333_);
+               _vala_ccode_node_unref0 (_tmp333_);
+               _tmp334_ = acc;
+               _tmp335_ = vala_property_accessor_get_readable (_tmp334_);
+               _tmp336_ = _tmp335_;
+               if (_tmp336_) {
                        ValaCCodeFunctionCall* vcall = NULL;
-                       ValaCCodeFunctionCall* _tmp323_ = NULL;
-                       ValaProperty* _tmp324_ = NULL;
-                       const gchar* _tmp325_ = NULL;
-                       const gchar* _tmp326_ = NULL;
-                       gchar* _tmp327_ = NULL;
-                       gchar* _tmp328_ = NULL;
-                       ValaCCodeMemberAccess* _tmp329_ = NULL;
-                       ValaCCodeMemberAccess* _tmp330_ = NULL;
-                       ValaCCodeFunctionCall* _tmp331_ = NULL;
-                       ValaCCodeFunctionCall* _tmp332_ = NULL;
-                       ValaCCodeFunctionCall* _tmp333_ = NULL;
-                       ValaCCodeIdentifier* _tmp334_ = NULL;
-                       ValaCCodeIdentifier* _tmp335_ = NULL;
-                       gboolean _tmp336_ = FALSE;
-                       _tmp323_ = vcast;
-                       _tmp324_ = prop;
-                       _tmp325_ = vala_symbol_get_name ((ValaSymbol*) _tmp324_);
-                       _tmp326_ = _tmp325_;
-                       _tmp327_ = g_strdup_printf ("get_%s", _tmp326_);
-                       _tmp328_ = _tmp327_;
-                       _tmp329_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp323_, _tmp328_);
-                       _tmp330_ = _tmp329_;
-                       _tmp331_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp330_);
-                       _tmp332_ = _tmp331_;
-                       _vala_ccode_node_unref0 (_tmp330_);
-                       _g_free0 (_tmp328_);
-                       vcall = _tmp332_;
-                       _tmp333_ = vcall;
-                       _tmp334_ = vala_ccode_identifier_new ("self");
-                       _tmp335_ = _tmp334_;
-                       vala_ccode_function_call_add_argument (_tmp333_, (ValaCCodeExpression*) _tmp335_);
-                       _vala_ccode_node_unref0 (_tmp335_);
-                       _tmp336_ = returns_real_struct;
-                       if (_tmp336_) {
-                               ValaCCodeFunctionCall* _tmp337_ = NULL;
-                               ValaCCodeIdentifier* _tmp338_ = NULL;
-                               ValaCCodeIdentifier* _tmp339_ = NULL;
-                               ValaCCodeFunction* _tmp340_ = NULL;
-                               ValaCCodeFunction* _tmp341_ = NULL;
-                               ValaCCodeFunctionCall* _tmp342_ = NULL;
-                               _tmp337_ = vcall;
-                               _tmp338_ = vala_ccode_identifier_new ("result");
-                               _tmp339_ = _tmp338_;
-                               vala_ccode_function_call_add_argument (_tmp337_, (ValaCCodeExpression*) _tmp339_);
-                               _vala_ccode_node_unref0 (_tmp339_);
-                               _tmp340_ = vala_ccode_base_module_get_ccode (self);
-                               _tmp341_ = _tmp340_;
-                               _tmp342_ = vcall;
-                               vala_ccode_function_add_expression (_tmp341_, (ValaCCodeExpression*) _tmp342_);
+                       ValaCCodeFunctionCall* _tmp337_ = NULL;
+                       ValaProperty* _tmp338_ = NULL;
+                       const gchar* _tmp339_ = NULL;
+                       const gchar* _tmp340_ = NULL;
+                       gchar* _tmp341_ = NULL;
+                       gchar* _tmp342_ = NULL;
+                       ValaCCodeMemberAccess* _tmp343_ = NULL;
+                       ValaCCodeMemberAccess* _tmp344_ = NULL;
+                       ValaCCodeFunctionCall* _tmp345_ = NULL;
+                       ValaCCodeFunctionCall* _tmp346_ = NULL;
+                       ValaCCodeFunctionCall* _tmp347_ = NULL;
+                       ValaCCodeIdentifier* _tmp348_ = NULL;
+                       ValaCCodeIdentifier* _tmp349_ = NULL;
+                       gboolean _tmp350_ = FALSE;
+                       _tmp337_ = vcast;
+                       _tmp338_ = prop;
+                       _tmp339_ = vala_symbol_get_name ((ValaSymbol*) _tmp338_);
+                       _tmp340_ = _tmp339_;
+                       _tmp341_ = g_strdup_printf ("get_%s", _tmp340_);
+                       _tmp342_ = _tmp341_;
+                       _tmp343_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp337_, _tmp342_);
+                       _tmp344_ = _tmp343_;
+                       _tmp345_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp344_);
+                       _tmp346_ = _tmp345_;
+                       _vala_ccode_node_unref0 (_tmp344_);
+                       _g_free0 (_tmp342_);
+                       vcall = _tmp346_;
+                       _tmp347_ = vcall;
+                       _tmp348_ = vala_ccode_identifier_new ("self");
+                       _tmp349_ = _tmp348_;
+                       vala_ccode_function_call_add_argument (_tmp347_, (ValaCCodeExpression*) _tmp349_);
+                       _vala_ccode_node_unref0 (_tmp349_);
+                       _tmp350_ = returns_real_struct;
+                       if (_tmp350_) {
+                               ValaCCodeFunctionCall* _tmp351_ = NULL;
+                               ValaCCodeIdentifier* _tmp352_ = NULL;
+                               ValaCCodeIdentifier* _tmp353_ = NULL;
+                               ValaCCodeFunction* _tmp354_ = NULL;
+                               ValaCCodeFunction* _tmp355_ = NULL;
+                               ValaCCodeFunctionCall* _tmp356_ = NULL;
+                               _tmp351_ = vcall;
+                               _tmp352_ = vala_ccode_identifier_new ("result");
+                               _tmp353_ = _tmp352_;
+                               vala_ccode_function_call_add_argument (_tmp351_, (ValaCCodeExpression*) _tmp353_);
+                               _vala_ccode_node_unref0 (_tmp353_);
+                               _tmp354_ = vala_ccode_base_module_get_ccode (self);
+                               _tmp355_ = _tmp354_;
+                               _tmp356_ = vcall;
+                               vala_ccode_function_add_expression (_tmp355_, (ValaCCodeExpression*) _tmp356_);
                        } else {
-                               ValaPropertyAccessor* _tmp343_ = NULL;
-                               ValaDataType* _tmp344_ = NULL;
-                               ValaDataType* _tmp345_ = NULL;
-                               ValaCCodeFunction* _tmp379_ = NULL;
-                               ValaCCodeFunction* _tmp380_ = NULL;
-                               ValaCCodeFunctionCall* _tmp381_ = NULL;
-                               _tmp343_ = acc;
-                               _tmp344_ = vala_property_accessor_get_value_type (_tmp343_);
-                               _tmp345_ = _tmp344_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp345_, VALA_TYPE_ARRAY_TYPE)) {
+                               ValaPropertyAccessor* _tmp357_ = NULL;
+                               ValaDataType* _tmp358_ = NULL;
+                               ValaDataType* _tmp359_ = NULL;
+                               ValaCCodeFunction* _tmp393_ = NULL;
+                               ValaCCodeFunction* _tmp394_ = NULL;
+                               ValaCCodeFunctionCall* _tmp395_ = NULL;
+                               _tmp357_ = acc;
+                               _tmp358_ = vala_property_accessor_get_value_type (_tmp357_);
+                               _tmp359_ = _tmp358_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp359_, VALA_TYPE_ARRAY_TYPE)) {
                                        ValaArrayType* array_type = NULL;
-                                       ValaPropertyAccessor* _tmp346_ = NULL;
-                                       ValaDataType* _tmp347_ = NULL;
-                                       ValaDataType* _tmp348_ = NULL;
-                                       ValaArrayType* _tmp349_ = NULL;
-                                       _tmp346_ = acc;
-                                       _tmp347_ = vala_property_accessor_get_value_type (_tmp346_);
-                                       _tmp348_ = _tmp347_;
-                                       _tmp349_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp348_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                       array_type = _tmp349_;
+                                       ValaPropertyAccessor* _tmp360_ = NULL;
+                                       ValaDataType* _tmp361_ = NULL;
+                                       ValaDataType* _tmp362_ = NULL;
+                                       ValaArrayType* _tmp363_ = NULL;
+                                       _tmp360_ = acc;
+                                       _tmp361_ = vala_property_accessor_get_value_type (_tmp360_);
+                                       _tmp362_ = _tmp361_;
+                                       _tmp363_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp362_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                       array_type = _tmp363_;
                                        {
                                                gint dim = 0;
                                                dim = 1;
                                                {
-                                                       gboolean _tmp350_ = FALSE;
-                                                       _tmp350_ = TRUE;
+                                                       gboolean _tmp364_ = FALSE;
+                                                       _tmp364_ = TRUE;
                                                        while (TRUE) {
-                                                               gint _tmp352_ = 0;
-                                                               ValaArrayType* _tmp353_ = NULL;
-                                                               gint _tmp354_ = 0;
-                                                               gint _tmp355_ = 0;
+                                                               gint _tmp366_ = 0;
+                                                               ValaArrayType* _tmp367_ = NULL;
+                                                               gint _tmp368_ = 0;
+                                                               gint _tmp369_ = 0;
                                                                ValaCCodeIdentifier* len_expr = NULL;
-                                                               gint _tmp356_ = 0;
-                                                               gchar* _tmp357_ = NULL;
-                                                               gchar* _tmp358_ = NULL;
-                                                               ValaCCodeIdentifier* _tmp359_ = NULL;
-                                                               ValaCCodeIdentifier* _tmp360_ = NULL;
-                                                               ValaCCodeFunctionCall* _tmp361_ = NULL;
-                                                               ValaCCodeIdentifier* _tmp362_ = NULL;
-                                                               if (!_tmp350_) {
-                                                                       gint _tmp351_ = 0;
-                                                                       _tmp351_ = dim;
-                                                                       dim = _tmp351_ + 1;
+                                                               gint _tmp370_ = 0;
+                                                               gchar* _tmp371_ = NULL;
+                                                               gchar* _tmp372_ = NULL;
+                                                               ValaCCodeIdentifier* _tmp373_ = NULL;
+                                                               ValaCCodeIdentifier* _tmp374_ = NULL;
+                                                               ValaCCodeFunctionCall* _tmp375_ = NULL;
+                                                               ValaCCodeIdentifier* _tmp376_ = NULL;
+                                                               if (!_tmp364_) {
+                                                                       gint _tmp365_ = 0;
+                                                                       _tmp365_ = dim;
+                                                                       dim = _tmp365_ + 1;
                                                                }
-                                                               _tmp350_ = FALSE;
-                                                               _tmp352_ = dim;
-                                                               _tmp353_ = array_type;
-                                                               _tmp354_ = vala_array_type_get_rank (_tmp353_);
-                                                               _tmp355_ = _tmp354_;
-                                                               if (!(_tmp352_ <= _tmp355_)) {
+                                                               _tmp364_ = FALSE;
+                                                               _tmp366_ = dim;
+                                                               _tmp367_ = array_type;
+                                                               _tmp368_ = vala_array_type_get_rank (_tmp367_);
+                                                               _tmp369_ = _tmp368_;
+                                                               if (!(_tmp366_ <= _tmp369_)) {
                                                                        break;
                                                                }
-                                                               _tmp356_ = dim;
-                                                               _tmp357_ = vala_ccode_base_module_get_array_length_cname (self, "result", _tmp356_);
-                                                               _tmp358_ = _tmp357_;
-                                                               _tmp359_ = vala_ccode_identifier_new (_tmp358_);
-                                                               _tmp360_ = _tmp359_;
-                                                               _g_free0 (_tmp358_);
-                                                               len_expr = _tmp360_;
-                                                               _tmp361_ = vcall;
-                                                               _tmp362_ = len_expr;
-                                                               vala_ccode_function_call_add_argument (_tmp361_, (ValaCCodeExpression*) _tmp362_);
+                                                               _tmp370_ = dim;
+                                                               _tmp371_ = vala_ccode_base_module_get_array_length_cname (self, "result", _tmp370_);
+                                                               _tmp372_ = _tmp371_;
+                                                               _tmp373_ = vala_ccode_identifier_new (_tmp372_);
+                                                               _tmp374_ = _tmp373_;
+                                                               _g_free0 (_tmp372_);
+                                                               len_expr = _tmp374_;
+                                                               _tmp375_ = vcall;
+                                                               _tmp376_ = len_expr;
+                                                               vala_ccode_function_call_add_argument (_tmp375_, (ValaCCodeExpression*) _tmp376_);
                                                                _vala_ccode_node_unref0 (len_expr);
                                                        }
                                                }
                                        }
                                        _vala_code_node_unref0 (array_type);
                                } else {
-                                       gboolean _tmp363_ = FALSE;
-                                       ValaPropertyAccessor* _tmp364_ = NULL;
-                                       ValaDataType* _tmp365_ = NULL;
-                                       ValaDataType* _tmp366_ = NULL;
-                                       _tmp364_ = acc;
-                                       _tmp365_ = vala_property_accessor_get_value_type (_tmp364_);
-                                       _tmp366_ = _tmp365_;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp366_, VALA_TYPE_DELEGATE_TYPE)) {
-                                               ValaPropertyAccessor* _tmp367_ = NULL;
-                                               ValaDataType* _tmp368_ = NULL;
-                                               ValaDataType* _tmp369_ = NULL;
-                                               ValaDelegate* _tmp370_ = NULL;
-                                               ValaDelegate* _tmp371_ = NULL;
-                                               gboolean _tmp372_ = FALSE;
-                                               gboolean _tmp373_ = FALSE;
-                                               _tmp367_ = acc;
-                                               _tmp368_ = vala_property_accessor_get_value_type (_tmp367_);
-                                               _tmp369_ = _tmp368_;
-                                               _tmp370_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp369_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                                               _tmp371_ = _tmp370_;
-                                               _tmp372_ = vala_delegate_get_has_target (_tmp371_);
-                                               _tmp373_ = _tmp372_;
-                                               _tmp363_ = _tmp373_;
+                                       gboolean _tmp377_ = FALSE;
+                                       ValaPropertyAccessor* _tmp378_ = NULL;
+                                       ValaDataType* _tmp379_ = NULL;
+                                       ValaDataType* _tmp380_ = NULL;
+                                       _tmp378_ = acc;
+                                       _tmp379_ = vala_property_accessor_get_value_type (_tmp378_);
+                                       _tmp380_ = _tmp379_;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp380_, VALA_TYPE_DELEGATE_TYPE)) {
+                                               ValaPropertyAccessor* _tmp381_ = NULL;
+                                               ValaDataType* _tmp382_ = NULL;
+                                               ValaDataType* _tmp383_ = NULL;
+                                               ValaDelegate* _tmp384_ = NULL;
+                                               ValaDelegate* _tmp385_ = NULL;
+                                               gboolean _tmp386_ = FALSE;
+                                               gboolean _tmp387_ = FALSE;
+                                               _tmp381_ = acc;
+                                               _tmp382_ = vala_property_accessor_get_value_type (_tmp381_);
+                                               _tmp383_ = _tmp382_;
+                                               _tmp384_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp383_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                                               _tmp385_ = _tmp384_;
+                                               _tmp386_ = vala_delegate_get_has_target (_tmp385_);
+                                               _tmp387_ = _tmp386_;
+                                               _tmp377_ = _tmp387_;
                                        } else {
-                                               _tmp363_ = FALSE;
+                                               _tmp377_ = FALSE;
                                        }
-                                       if (_tmp363_) {
-                                               ValaCCodeFunctionCall* _tmp374_ = NULL;
-                                               gchar* _tmp375_ = NULL;
-                                               gchar* _tmp376_ = NULL;
-                                               ValaCCodeIdentifier* _tmp377_ = NULL;
-                                               ValaCCodeIdentifier* _tmp378_ = NULL;
-                                               _tmp374_ = vcall;
-                                               _tmp375_ = vala_ccode_base_module_get_delegate_target_cname (self, "result");
-                                               _tmp376_ = _tmp375_;
-                                               _tmp377_ = vala_ccode_identifier_new (_tmp376_);
-                                               _tmp378_ = _tmp377_;
-                                               vala_ccode_function_call_add_argument (_tmp374_, (ValaCCodeExpression*) _tmp378_);
-                                               _vala_ccode_node_unref0 (_tmp378_);
-                                               _g_free0 (_tmp376_);
+                                       if (_tmp377_) {
+                                               ValaCCodeFunctionCall* _tmp388_ = NULL;
+                                               gchar* _tmp389_ = NULL;
+                                               gchar* _tmp390_ = NULL;
+                                               ValaCCodeIdentifier* _tmp391_ = NULL;
+                                               ValaCCodeIdentifier* _tmp392_ = NULL;
+                                               _tmp388_ = vcall;
+                                               _tmp389_ = vala_ccode_base_module_get_delegate_target_cname (self, "result");
+                                               _tmp390_ = _tmp389_;
+                                               _tmp391_ = vala_ccode_identifier_new (_tmp390_);
+                                               _tmp392_ = _tmp391_;
+                                               vala_ccode_function_call_add_argument (_tmp388_, (ValaCCodeExpression*) _tmp392_);
+                                               _vala_ccode_node_unref0 (_tmp392_);
+                                               _g_free0 (_tmp390_);
                                        }
                                }
-                               _tmp379_ = vala_ccode_base_module_get_ccode (self);
-                               _tmp380_ = _tmp379_;
-                               _tmp381_ = vcall;
-                               vala_ccode_function_add_return (_tmp380_, (ValaCCodeExpression*) _tmp381_);
+                               _tmp393_ = vala_ccode_base_module_get_ccode (self);
+                               _tmp394_ = _tmp393_;
+                               _tmp395_ = vcall;
+                               vala_ccode_function_add_return (_tmp394_, (ValaCCodeExpression*) _tmp395_);
                        }
                        _vala_ccode_node_unref0 (vcall);
                } else {
                        ValaCCodeFunctionCall* vcall = NULL;
-                       ValaCCodeFunctionCall* _tmp382_ = NULL;
-                       ValaProperty* _tmp383_ = NULL;
-                       const gchar* _tmp384_ = NULL;
-                       const gchar* _tmp385_ = NULL;
-                       gchar* _tmp386_ = NULL;
-                       gchar* _tmp387_ = NULL;
-                       ValaCCodeMemberAccess* _tmp388_ = NULL;
-                       ValaCCodeMemberAccess* _tmp389_ = NULL;
-                       ValaCCodeFunctionCall* _tmp390_ = NULL;
-                       ValaCCodeFunctionCall* _tmp391_ = NULL;
-                       ValaCCodeFunctionCall* _tmp392_ = NULL;
-                       ValaCCodeIdentifier* _tmp393_ = NULL;
-                       ValaCCodeIdentifier* _tmp394_ = NULL;
-                       ValaCCodeFunctionCall* _tmp395_ = NULL;
-                       ValaCCodeIdentifier* _tmp396_ = NULL;
-                       ValaCCodeIdentifier* _tmp397_ = NULL;
-                       ValaPropertyAccessor* _tmp398_ = NULL;
-                       ValaDataType* _tmp399_ = NULL;
-                       ValaDataType* _tmp400_ = NULL;
-                       ValaCCodeFunction* _tmp448_ = NULL;
-                       ValaCCodeFunction* _tmp449_ = NULL;
-                       ValaCCodeFunctionCall* _tmp450_ = NULL;
-                       _tmp382_ = vcast;
-                       _tmp383_ = prop;
-                       _tmp384_ = vala_symbol_get_name ((ValaSymbol*) _tmp383_);
-                       _tmp385_ = _tmp384_;
-                       _tmp386_ = g_strdup_printf ("set_%s", _tmp385_);
-                       _tmp387_ = _tmp386_;
-                       _tmp388_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp382_, _tmp387_);
-                       _tmp389_ = _tmp388_;
-                       _tmp390_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp389_);
-                       _tmp391_ = _tmp390_;
-                       _vala_ccode_node_unref0 (_tmp389_);
-                       _g_free0 (_tmp387_);
-                       vcall = _tmp391_;
-                       _tmp392_ = vcall;
-                       _tmp393_ = vala_ccode_identifier_new ("self");
-                       _tmp394_ = _tmp393_;
-                       vala_ccode_function_call_add_argument (_tmp392_, (ValaCCodeExpression*) _tmp394_);
-                       _vala_ccode_node_unref0 (_tmp394_);
-                       _tmp395_ = vcall;
-                       _tmp396_ = vala_ccode_identifier_new ("value");
-                       _tmp397_ = _tmp396_;
-                       vala_ccode_function_call_add_argument (_tmp395_, (ValaCCodeExpression*) _tmp397_);
-                       _vala_ccode_node_unref0 (_tmp397_);
-                       _tmp398_ = acc;
-                       _tmp399_ = vala_property_accessor_get_value_type (_tmp398_);
-                       _tmp400_ = _tmp399_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp400_, VALA_TYPE_ARRAY_TYPE)) {
+                       ValaCCodeFunctionCall* _tmp396_ = NULL;
+                       ValaProperty* _tmp397_ = NULL;
+                       const gchar* _tmp398_ = NULL;
+                       const gchar* _tmp399_ = NULL;
+                       gchar* _tmp400_ = NULL;
+                       gchar* _tmp401_ = NULL;
+                       ValaCCodeMemberAccess* _tmp402_ = NULL;
+                       ValaCCodeMemberAccess* _tmp403_ = NULL;
+                       ValaCCodeFunctionCall* _tmp404_ = NULL;
+                       ValaCCodeFunctionCall* _tmp405_ = NULL;
+                       ValaCCodeFunctionCall* _tmp406_ = NULL;
+                       ValaCCodeIdentifier* _tmp407_ = NULL;
+                       ValaCCodeIdentifier* _tmp408_ = NULL;
+                       ValaCCodeFunctionCall* _tmp409_ = NULL;
+                       ValaCCodeIdentifier* _tmp410_ = NULL;
+                       ValaCCodeIdentifier* _tmp411_ = NULL;
+                       ValaPropertyAccessor* _tmp412_ = NULL;
+                       ValaDataType* _tmp413_ = NULL;
+                       ValaDataType* _tmp414_ = NULL;
+                       ValaCCodeFunction* _tmp462_ = NULL;
+                       ValaCCodeFunction* _tmp463_ = NULL;
+                       ValaCCodeFunctionCall* _tmp464_ = NULL;
+                       _tmp396_ = vcast;
+                       _tmp397_ = prop;
+                       _tmp398_ = vala_symbol_get_name ((ValaSymbol*) _tmp397_);
+                       _tmp399_ = _tmp398_;
+                       _tmp400_ = g_strdup_printf ("set_%s", _tmp399_);
+                       _tmp401_ = _tmp400_;
+                       _tmp402_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp396_, _tmp401_);
+                       _tmp403_ = _tmp402_;
+                       _tmp404_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp403_);
+                       _tmp405_ = _tmp404_;
+                       _vala_ccode_node_unref0 (_tmp403_);
+                       _g_free0 (_tmp401_);
+                       vcall = _tmp405_;
+                       _tmp406_ = vcall;
+                       _tmp407_ = vala_ccode_identifier_new ("self");
+                       _tmp408_ = _tmp407_;
+                       vala_ccode_function_call_add_argument (_tmp406_, (ValaCCodeExpression*) _tmp408_);
+                       _vala_ccode_node_unref0 (_tmp408_);
+                       _tmp409_ = vcall;
+                       _tmp410_ = vala_ccode_identifier_new ("value");
+                       _tmp411_ = _tmp410_;
+                       vala_ccode_function_call_add_argument (_tmp409_, (ValaCCodeExpression*) _tmp411_);
+                       _vala_ccode_node_unref0 (_tmp411_);
+                       _tmp412_ = acc;
+                       _tmp413_ = vala_property_accessor_get_value_type (_tmp412_);
+                       _tmp414_ = _tmp413_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp414_, VALA_TYPE_ARRAY_TYPE)) {
                                ValaArrayType* array_type = NULL;
-                               ValaPropertyAccessor* _tmp401_ = NULL;
-                               ValaDataType* _tmp402_ = NULL;
-                               ValaDataType* _tmp403_ = NULL;
-                               ValaArrayType* _tmp404_ = NULL;
-                               _tmp401_ = acc;
-                               _tmp402_ = vala_property_accessor_get_value_type (_tmp401_);
-                               _tmp403_ = _tmp402_;
-                               _tmp404_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp403_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                               array_type = _tmp404_;
+                               ValaPropertyAccessor* _tmp415_ = NULL;
+                               ValaDataType* _tmp416_ = NULL;
+                               ValaDataType* _tmp417_ = NULL;
+                               ValaArrayType* _tmp418_ = NULL;
+                               _tmp415_ = acc;
+                               _tmp416_ = vala_property_accessor_get_value_type (_tmp415_);
+                               _tmp417_ = _tmp416_;
+                               _tmp418_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp417_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                               array_type = _tmp418_;
                                {
                                        gint dim = 0;
                                        dim = 1;
                                        {
-                                               gboolean _tmp405_ = FALSE;
-                                               _tmp405_ = TRUE;
+                                               gboolean _tmp419_ = FALSE;
+                                               _tmp419_ = TRUE;
                                                while (TRUE) {
-                                                       gint _tmp407_ = 0;
-                                                       ValaArrayType* _tmp408_ = NULL;
-                                                       gint _tmp409_ = 0;
-                                                       gint _tmp410_ = 0;
+                                                       gint _tmp421_ = 0;
+                                                       ValaArrayType* _tmp422_ = NULL;
+                                                       gint _tmp423_ = 0;
+                                                       gint _tmp424_ = 0;
                                                        ValaCCodeIdentifier* len_expr = NULL;
-                                                       gint _tmp411_ = 0;
-                                                       gchar* _tmp412_ = NULL;
-                                                       gchar* _tmp413_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp414_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp415_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp416_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp417_ = NULL;
-                                                       if (!_tmp405_) {
-                                                               gint _tmp406_ = 0;
-                                                               _tmp406_ = dim;
-                                                               dim = _tmp406_ + 1;
+                                                       gint _tmp425_ = 0;
+                                                       gchar* _tmp426_ = NULL;
+                                                       gchar* _tmp427_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp428_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp429_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp430_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp431_ = NULL;
+                                                       if (!_tmp419_) {
+                                                               gint _tmp420_ = 0;
+                                                               _tmp420_ = dim;
+                                                               dim = _tmp420_ + 1;
                                                        }
-                                                       _tmp405_ = FALSE;
-                                                       _tmp407_ = dim;
-                                                       _tmp408_ = array_type;
-                                                       _tmp409_ = vala_array_type_get_rank (_tmp408_);
-                                                       _tmp410_ = _tmp409_;
-                                                       if (!(_tmp407_ <= _tmp410_)) {
+                                                       _tmp419_ = FALSE;
+                                                       _tmp421_ = dim;
+                                                       _tmp422_ = array_type;
+                                                       _tmp423_ = vala_array_type_get_rank (_tmp422_);
+                                                       _tmp424_ = _tmp423_;
+                                                       if (!(_tmp421_ <= _tmp424_)) {
                                                                break;
                                                        }
-                                                       _tmp411_ = dim;
-                                                       _tmp412_ = vala_ccode_base_module_get_array_length_cname (self, "value", _tmp411_);
-                                                       _tmp413_ = _tmp412_;
-                                                       _tmp414_ = vala_ccode_identifier_new (_tmp413_);
-                                                       _tmp415_ = _tmp414_;
-                                                       _g_free0 (_tmp413_);
-                                                       len_expr = _tmp415_;
-                                                       _tmp416_ = vcall;
-                                                       _tmp417_ = len_expr;
-                                                       vala_ccode_function_call_add_argument (_tmp416_, (ValaCCodeExpression*) _tmp417_);
+                                                       _tmp425_ = dim;
+                                                       _tmp426_ = vala_ccode_base_module_get_array_length_cname (self, "value", _tmp425_);
+                                                       _tmp427_ = _tmp426_;
+                                                       _tmp428_ = vala_ccode_identifier_new (_tmp427_);
+                                                       _tmp429_ = _tmp428_;
+                                                       _g_free0 (_tmp427_);
+                                                       len_expr = _tmp429_;
+                                                       _tmp430_ = vcall;
+                                                       _tmp431_ = len_expr;
+                                                       vala_ccode_function_call_add_argument (_tmp430_, (ValaCCodeExpression*) _tmp431_);
                                                        _vala_ccode_node_unref0 (len_expr);
                                                }
                                        }
                                }
                                _vala_code_node_unref0 (array_type);
                        } else {
-                               gboolean _tmp418_ = FALSE;
-                               ValaPropertyAccessor* _tmp419_ = NULL;
-                               ValaDataType* _tmp420_ = NULL;
-                               ValaDataType* _tmp421_ = NULL;
-                               _tmp419_ = acc;
-                               _tmp420_ = vala_property_accessor_get_value_type (_tmp419_);
-                               _tmp421_ = _tmp420_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp421_, VALA_TYPE_DELEGATE_TYPE)) {
-                                       ValaPropertyAccessor* _tmp422_ = NULL;
-                                       ValaDataType* _tmp423_ = NULL;
-                                       ValaDataType* _tmp424_ = NULL;
-                                       ValaDelegate* _tmp425_ = NULL;
-                                       ValaDelegate* _tmp426_ = NULL;
-                                       gboolean _tmp427_ = FALSE;
-                                       gboolean _tmp428_ = FALSE;
-                                       _tmp422_ = acc;
-                                       _tmp423_ = vala_property_accessor_get_value_type (_tmp422_);
-                                       _tmp424_ = _tmp423_;
-                                       _tmp425_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp424_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                                       _tmp426_ = _tmp425_;
-                                       _tmp427_ = vala_delegate_get_has_target (_tmp426_);
-                                       _tmp428_ = _tmp427_;
-                                       _tmp418_ = _tmp428_;
+                               gboolean _tmp432_ = FALSE;
+                               ValaPropertyAccessor* _tmp433_ = NULL;
+                               ValaDataType* _tmp434_ = NULL;
+                               ValaDataType* _tmp435_ = NULL;
+                               _tmp433_ = acc;
+                               _tmp434_ = vala_property_accessor_get_value_type (_tmp433_);
+                               _tmp435_ = _tmp434_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp435_, VALA_TYPE_DELEGATE_TYPE)) {
+                                       ValaPropertyAccessor* _tmp436_ = NULL;
+                                       ValaDataType* _tmp437_ = NULL;
+                                       ValaDataType* _tmp438_ = NULL;
+                                       ValaDelegate* _tmp439_ = NULL;
+                                       ValaDelegate* _tmp440_ = NULL;
+                                       gboolean _tmp441_ = FALSE;
+                                       gboolean _tmp442_ = FALSE;
+                                       _tmp436_ = acc;
+                                       _tmp437_ = vala_property_accessor_get_value_type (_tmp436_);
+                                       _tmp438_ = _tmp437_;
+                                       _tmp439_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp438_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                                       _tmp440_ = _tmp439_;
+                                       _tmp441_ = vala_delegate_get_has_target (_tmp440_);
+                                       _tmp442_ = _tmp441_;
+                                       _tmp432_ = _tmp442_;
                                } else {
-                                       _tmp418_ = FALSE;
+                                       _tmp432_ = FALSE;
                                }
-                               if (_tmp418_) {
-                                       ValaCCodeFunctionCall* _tmp429_ = NULL;
-                                       gchar* _tmp430_ = NULL;
-                                       gchar* _tmp431_ = NULL;
-                                       ValaCCodeIdentifier* _tmp432_ = NULL;
-                                       ValaCCodeIdentifier* _tmp433_ = NULL;
-                                       gboolean _tmp434_ = FALSE;
-                                       ValaPropertyAccessor* _tmp435_ = NULL;
-                                       gboolean _tmp436_ = FALSE;
-                                       gboolean _tmp437_ = FALSE;
-                                       _tmp429_ = vcall;
-                                       _tmp430_ = vala_ccode_base_module_get_delegate_target_cname (self, "value");
-                                       _tmp431_ = _tmp430_;
-                                       _tmp432_ = vala_ccode_identifier_new (_tmp431_);
-                                       _tmp433_ = _tmp432_;
-                                       vala_ccode_function_call_add_argument (_tmp429_, (ValaCCodeExpression*) _tmp433_);
-                                       _vala_ccode_node_unref0 (_tmp433_);
-                                       _g_free0 (_tmp431_);
-                                       _tmp435_ = acc;
-                                       _tmp436_ = vala_property_accessor_get_readable (_tmp435_);
-                                       _tmp437_ = _tmp436_;
-                                       if (!_tmp437_) {
-                                               ValaPropertyAccessor* _tmp438_ = NULL;
-                                               ValaDataType* _tmp439_ = NULL;
-                                               ValaDataType* _tmp440_ = NULL;
-                                               gboolean _tmp441_ = FALSE;
-                                               gboolean _tmp442_ = FALSE;
-                                               _tmp438_ = acc;
-                                               _tmp439_ = vala_property_accessor_get_value_type (_tmp438_);
-                                               _tmp440_ = _tmp439_;
-                                               _tmp441_ = vala_data_type_get_value_owned (_tmp440_);
-                                               _tmp442_ = _tmp441_;
-                                               _tmp434_ = _tmp442_;
+                               if (_tmp432_) {
+                                       ValaCCodeFunctionCall* _tmp443_ = NULL;
+                                       gchar* _tmp444_ = NULL;
+                                       gchar* _tmp445_ = NULL;
+                                       ValaCCodeIdentifier* _tmp446_ = NULL;
+                                       ValaCCodeIdentifier* _tmp447_ = NULL;
+                                       gboolean _tmp448_ = FALSE;
+                                       ValaPropertyAccessor* _tmp449_ = NULL;
+                                       gboolean _tmp450_ = FALSE;
+                                       gboolean _tmp451_ = FALSE;
+                                       _tmp443_ = vcall;
+                                       _tmp444_ = vala_ccode_base_module_get_delegate_target_cname (self, "value");
+                                       _tmp445_ = _tmp444_;
+                                       _tmp446_ = vala_ccode_identifier_new (_tmp445_);
+                                       _tmp447_ = _tmp446_;
+                                       vala_ccode_function_call_add_argument (_tmp443_, (ValaCCodeExpression*) _tmp447_);
+                                       _vala_ccode_node_unref0 (_tmp447_);
+                                       _g_free0 (_tmp445_);
+                                       _tmp449_ = acc;
+                                       _tmp450_ = vala_property_accessor_get_readable (_tmp449_);
+                                       _tmp451_ = _tmp450_;
+                                       if (!_tmp451_) {
+                                               ValaPropertyAccessor* _tmp452_ = NULL;
+                                               ValaDataType* _tmp453_ = NULL;
+                                               ValaDataType* _tmp454_ = NULL;
+                                               gboolean _tmp455_ = FALSE;
+                                               gboolean _tmp456_ = FALSE;
+                                               _tmp452_ = acc;
+                                               _tmp453_ = vala_property_accessor_get_value_type (_tmp452_);
+                                               _tmp454_ = _tmp453_;
+                                               _tmp455_ = vala_data_type_get_value_owned (_tmp454_);
+                                               _tmp456_ = _tmp455_;
+                                               _tmp448_ = _tmp456_;
                                        } else {
-                                               _tmp434_ = FALSE;
+                                               _tmp448_ = FALSE;
                                        }
-                                       if (_tmp434_) {
-                                               ValaCCodeFunctionCall* _tmp443_ = NULL;
-                                               gchar* _tmp444_ = NULL;
-                                               gchar* _tmp445_ = NULL;
-                                               ValaCCodeIdentifier* _tmp446_ = NULL;
-                                               ValaCCodeIdentifier* _tmp447_ = NULL;
-                                               _tmp443_ = vcall;
-                                               _tmp444_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "value");
-                                               _tmp445_ = _tmp444_;
-                                               _tmp446_ = vala_ccode_identifier_new (_tmp445_);
-                                               _tmp447_ = _tmp446_;
-                                               vala_ccode_function_call_add_argument (_tmp443_, (ValaCCodeExpression*) _tmp447_);
-                                               _vala_ccode_node_unref0 (_tmp447_);
-                                               _g_free0 (_tmp445_);
+                                       if (_tmp448_) {
+                                               ValaCCodeFunctionCall* _tmp457_ = NULL;
+                                               gchar* _tmp458_ = NULL;
+                                               gchar* _tmp459_ = NULL;
+                                               ValaCCodeIdentifier* _tmp460_ = NULL;
+                                               ValaCCodeIdentifier* _tmp461_ = NULL;
+                                               _tmp457_ = vcall;
+                                               _tmp458_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "value");
+                                               _tmp459_ = _tmp458_;
+                                               _tmp460_ = vala_ccode_identifier_new (_tmp459_);
+                                               _tmp461_ = _tmp460_;
+                                               vala_ccode_function_call_add_argument (_tmp457_, (ValaCCodeExpression*) _tmp461_);
+                                               _vala_ccode_node_unref0 (_tmp461_);
+                                               _g_free0 (_tmp459_);
                                        }
                                }
                        }
-                       _tmp448_ = vala_ccode_base_module_get_ccode (self);
-                       _tmp449_ = _tmp448_;
-                       _tmp450_ = vcall;
-                       vala_ccode_function_add_expression (_tmp449_, (ValaCCodeExpression*) _tmp450_);
+                       _tmp462_ = vala_ccode_base_module_get_ccode (self);
+                       _tmp463_ = _tmp462_;
+                       _tmp464_ = vcall;
+                       vala_ccode_function_add_expression (_tmp463_, (ValaCCodeExpression*) _tmp464_);
                        _vala_ccode_node_unref0 (vcall);
                }
                vala_ccode_base_module_pop_function (self);
-               _tmp451_ = self->cfile;
-               _tmp452_ = function;
-               vala_ccode_file_add_function (_tmp451_, _tmp452_);
+               _tmp465_ = self->cfile;
+               _tmp466_ = function;
+               vala_ccode_file_add_function (_tmp465_, _tmp466_);
                _vala_ccode_node_unref0 (vcast);
                _vala_ccode_node_unref0 (function);
        }
-       _tmp454_ = prop;
-       _tmp455_ = vala_property_get_is_abstract (_tmp454_);
-       _tmp456_ = _tmp455_;
-       if (!_tmp456_) {
-               ValaPropertyAccessor* _tmp457_ = NULL;
-               ValaBlock* _tmp458_ = NULL;
-               ValaBlock* _tmp459_ = NULL;
-               _tmp457_ = acc;
-               _tmp458_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp457_);
-               _tmp459_ = _tmp458_;
-               _tmp453_ = _tmp459_ != NULL;
+       _tmp468_ = prop;
+       _tmp469_ = vala_property_get_is_abstract (_tmp468_);
+       _tmp470_ = _tmp469_;
+       if (!_tmp470_) {
+               ValaPropertyAccessor* _tmp471_ = NULL;
+               ValaBlock* _tmp472_ = NULL;
+               ValaBlock* _tmp473_ = NULL;
+               _tmp471_ = acc;
+               _tmp472_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp471_);
+               _tmp473_ = _tmp472_;
+               _tmp467_ = _tmp473_ != NULL;
        } else {
-               _tmp453_ = FALSE;
+               _tmp467_ = FALSE;
        }
-       if (_tmp453_) {
-               gboolean _tmp460_ = FALSE;
-               ValaProperty* _tmp461_ = NULL;
-               ValaProperty* _tmp462_ = NULL;
-               ValaProperty* _tmp463_ = NULL;
+       if (_tmp467_) {
+               gboolean _tmp474_ = FALSE;
+               ValaProperty* _tmp475_ = NULL;
+               ValaProperty* _tmp476_ = NULL;
+               ValaProperty* _tmp477_ = NULL;
                gboolean is_virtual = FALSE;
                gchar* cname = NULL;
-               ValaPropertyAccessor* _tmp467_ = NULL;
-               gchar* _tmp468_ = NULL;
+               ValaPropertyAccessor* _tmp481_ = NULL;
+               gchar* _tmp482_ = NULL;
                ValaCCodeFunction* function = NULL;
-               gboolean _tmp469_ = FALSE;
-               gboolean _tmp470_ = FALSE;
-               ValaPropertyAccessor* _tmp471_ = NULL;
-               gboolean _tmp472_ = FALSE;
-               gboolean _tmp473_ = FALSE;
+               gboolean _tmp483_ = FALSE;
+               gboolean _tmp484_ = FALSE;
+               ValaPropertyAccessor* _tmp485_ = NULL;
+               gboolean _tmp486_ = FALSE;
+               gboolean _tmp487_ = FALSE;
                ValaObjectType* base_type = NULL;
-               ValaProperty* _tmp487_ = NULL;
-               ValaMemberBinding _tmp488_ = 0;
-               ValaMemberBinding _tmp489_ = 0;
-               gboolean _tmp521_ = FALSE;
-               gboolean _tmp522_ = FALSE;
-               ValaPropertyAccessor* _tmp523_ = NULL;
-               gboolean _tmp524_ = FALSE;
-               gboolean _tmp525_ = FALSE;
-               ValaPropertyAccessor* _tmp532_ = NULL;
-               ValaDataType* _tmp533_ = NULL;
-               ValaDataType* _tmp534_ = NULL;
-               gboolean _tmp599_ = FALSE;
-               ValaCCodeFunction* _tmp618_ = NULL;
-               gboolean _tmp619_ = FALSE;
-               ValaProperty* _tmp620_ = NULL;
-               ValaMemberBinding _tmp621_ = 0;
-               ValaMemberBinding _tmp622_ = 0;
-               gboolean _tmp633_ = FALSE;
-               ValaPropertyAccessor* _tmp634_ = NULL;
-               gboolean _tmp635_ = FALSE;
-               gboolean _tmp636_ = FALSE;
-               gboolean _tmp658_ = FALSE;
-               ValaPropertyAccessor* _tmp681_ = NULL;
-               ValaBlock* _tmp682_ = NULL;
-               ValaBlock* _tmp683_ = NULL;
-               gboolean _tmp684_ = FALSE;
-               gboolean _tmp685_ = FALSE;
-               gboolean _tmp692_ = FALSE;
-               gboolean _tmp693_ = FALSE;
-               ValaProperty* _tmp694_ = NULL;
-               gboolean _tmp695_ = FALSE;
-               ValaCCodeFile* _tmp721_ = NULL;
-               ValaCCodeFunction* _tmp722_ = NULL;
-               _tmp461_ = prop;
-               _tmp462_ = vala_property_get_base_property (_tmp461_);
-               _tmp463_ = _tmp462_;
-               if (_tmp463_ != NULL) {
-                       _tmp460_ = TRUE;
+               ValaProperty* _tmp501_ = NULL;
+               ValaMemberBinding _tmp502_ = 0;
+               ValaMemberBinding _tmp503_ = 0;
+               gboolean _tmp535_ = FALSE;
+               gboolean _tmp536_ = FALSE;
+               ValaPropertyAccessor* _tmp537_ = NULL;
+               gboolean _tmp538_ = FALSE;
+               gboolean _tmp539_ = FALSE;
+               ValaPropertyAccessor* _tmp546_ = NULL;
+               ValaDataType* _tmp547_ = NULL;
+               ValaDataType* _tmp548_ = NULL;
+               gboolean _tmp613_ = FALSE;
+               ValaCCodeFunction* _tmp646_ = NULL;
+               gboolean _tmp647_ = FALSE;
+               ValaProperty* _tmp648_ = NULL;
+               ValaMemberBinding _tmp649_ = 0;
+               ValaMemberBinding _tmp650_ = 0;
+               gboolean _tmp661_ = FALSE;
+               ValaPropertyAccessor* _tmp662_ = NULL;
+               gboolean _tmp663_ = FALSE;
+               gboolean _tmp664_ = FALSE;
+               gboolean _tmp686_ = FALSE;
+               ValaPropertyAccessor* _tmp709_ = NULL;
+               ValaBlock* _tmp710_ = NULL;
+               ValaBlock* _tmp711_ = NULL;
+               gboolean _tmp712_ = FALSE;
+               gboolean _tmp713_ = FALSE;
+               gboolean _tmp720_ = FALSE;
+               gboolean _tmp721_ = FALSE;
+               ValaProperty* _tmp722_ = NULL;
+               gboolean _tmp723_ = FALSE;
+               ValaCCodeFile* _tmp749_ = NULL;
+               ValaCCodeFunction* _tmp750_ = NULL;
+               _tmp475_ = prop;
+               _tmp476_ = vala_property_get_base_property (_tmp475_);
+               _tmp477_ = _tmp476_;
+               if (_tmp477_ != NULL) {
+                       _tmp474_ = TRUE;
                } else {
-                       ValaProperty* _tmp464_ = NULL;
-                       ValaProperty* _tmp465_ = NULL;
-                       ValaProperty* _tmp466_ = NULL;
-                       _tmp464_ = prop;
-                       _tmp465_ = vala_property_get_base_interface_property (_tmp464_);
-                       _tmp466_ = _tmp465_;
-                       _tmp460_ = _tmp466_ != NULL;
-               }
-               is_virtual = _tmp460_;
-               _tmp467_ = acc;
-               _tmp468_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp467_);
-               cname = _tmp468_;
-               _tmp471_ = acc;
-               _tmp472_ = vala_property_accessor_get_writable (_tmp471_);
-               _tmp473_ = _tmp472_;
-               if (_tmp473_) {
-                       _tmp470_ = TRUE;
+                       ValaProperty* _tmp478_ = NULL;
+                       ValaProperty* _tmp479_ = NULL;
+                       ValaProperty* _tmp480_ = NULL;
+                       _tmp478_ = prop;
+                       _tmp479_ = vala_property_get_base_interface_property (_tmp478_);
+                       _tmp480_ = _tmp479_;
+                       _tmp474_ = _tmp480_ != NULL;
+               }
+               is_virtual = _tmp474_;
+               _tmp481_ = acc;
+               _tmp482_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp481_);
+               cname = _tmp482_;
+               _tmp485_ = acc;
+               _tmp486_ = vala_property_accessor_get_writable (_tmp485_);
+               _tmp487_ = _tmp486_;
+               if (_tmp487_) {
+                       _tmp484_ = TRUE;
                } else {
-                       ValaPropertyAccessor* _tmp474_ = NULL;
-                       gboolean _tmp475_ = FALSE;
-                       gboolean _tmp476_ = FALSE;
-                       _tmp474_ = acc;
-                       _tmp475_ = vala_property_accessor_get_construction (_tmp474_);
-                       _tmp476_ = _tmp475_;
-                       _tmp470_ = _tmp476_;
-               }
-               if (_tmp470_) {
-                       _tmp469_ = TRUE;
+                       ValaPropertyAccessor* _tmp488_ = NULL;
+                       gboolean _tmp489_ = FALSE;
+                       gboolean _tmp490_ = FALSE;
+                       _tmp488_ = acc;
+                       _tmp489_ = vala_property_accessor_get_construction (_tmp488_);
+                       _tmp490_ = _tmp489_;
+                       _tmp484_ = _tmp490_;
+               }
+               if (_tmp484_) {
+                       _tmp483_ = TRUE;
                } else {
-                       gboolean _tmp477_ = FALSE;
-                       _tmp477_ = returns_real_struct;
-                       _tmp469_ = _tmp477_;
-               }
-               if (_tmp469_) {
-                       const gchar* _tmp478_ = NULL;
-                       ValaCCodeFunction* _tmp479_ = NULL;
-                       _tmp478_ = cname;
-                       _tmp479_ = vala_ccode_function_new (_tmp478_, "void");
+                       gboolean _tmp491_ = FALSE;
+                       _tmp491_ = returns_real_struct;
+                       _tmp483_ = _tmp491_;
+               }
+               if (_tmp483_) {
+                       const gchar* _tmp492_ = NULL;
+                       ValaCCodeFunction* _tmp493_ = NULL;
+                       _tmp492_ = cname;
+                       _tmp493_ = vala_ccode_function_new (_tmp492_, "void");
                        _vala_ccode_node_unref0 (function);
-                       function = _tmp479_;
+                       function = _tmp493_;
                } else {
-                       const gchar* _tmp480_ = NULL;
-                       ValaPropertyAccessor* _tmp481_ = NULL;
-                       ValaDataType* _tmp482_ = NULL;
-                       ValaDataType* _tmp483_ = NULL;
-                       gchar* _tmp484_ = NULL;
-                       gchar* _tmp485_ = NULL;
-                       ValaCCodeFunction* _tmp486_ = NULL;
-                       _tmp480_ = cname;
-                       _tmp481_ = acc;
-                       _tmp482_ = vala_property_accessor_get_value_type (_tmp481_);
-                       _tmp483_ = _tmp482_;
-                       _tmp484_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp483_);
-                       _tmp485_ = _tmp484_;
-                       _tmp486_ = vala_ccode_function_new (_tmp480_, _tmp485_);
+                       const gchar* _tmp494_ = NULL;
+                       ValaPropertyAccessor* _tmp495_ = NULL;
+                       ValaDataType* _tmp496_ = NULL;
+                       ValaDataType* _tmp497_ = NULL;
+                       gchar* _tmp498_ = NULL;
+                       gchar* _tmp499_ = NULL;
+                       ValaCCodeFunction* _tmp500_ = NULL;
+                       _tmp494_ = cname;
+                       _tmp495_ = acc;
+                       _tmp496_ = vala_property_accessor_get_value_type (_tmp495_);
+                       _tmp497_ = _tmp496_;
+                       _tmp498_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp497_);
+                       _tmp499_ = _tmp498_;
+                       _tmp500_ = vala_ccode_function_new (_tmp494_, _tmp499_);
                        _vala_ccode_node_unref0 (function);
-                       function = _tmp486_;
-                       _g_free0 (_tmp485_);
+                       function = _tmp500_;
+                       _g_free0 (_tmp499_);
                }
                base_type = NULL;
-               _tmp487_ = prop;
-               _tmp488_ = vala_property_get_binding (_tmp487_);
-               _tmp489_ = _tmp488_;
-               if (_tmp489_ == VALA_MEMBER_BINDING_INSTANCE) {
-                       gboolean _tmp490_ = FALSE;
-                       _tmp490_ = is_virtual;
-                       if (_tmp490_) {
-                               ValaProperty* _tmp491_ = NULL;
-                               ValaProperty* _tmp492_ = NULL;
-                               ValaProperty* _tmp493_ = NULL;
-                               ValaCCodeFunction* _tmp509_ = NULL;
-                               ValaCCodeFunction* _tmp510_ = NULL;
-                               ValaCCodeModifiers _tmp511_ = 0;
-                               ValaCCodeModifiers _tmp512_ = 0;
-                               ValaCCodeFunction* _tmp513_ = NULL;
-                               ValaObjectType* _tmp514_ = NULL;
-                               gchar* _tmp515_ = NULL;
-                               gchar* _tmp516_ = NULL;
-                               ValaCCodeParameter* _tmp517_ = NULL;
-                               ValaCCodeParameter* _tmp518_ = NULL;
-                               _tmp491_ = prop;
-                               _tmp492_ = vala_property_get_base_property (_tmp491_);
-                               _tmp493_ = _tmp492_;
-                               if (_tmp493_ != NULL) {
-                                       ValaProperty* _tmp494_ = NULL;
-                                       ValaProperty* _tmp495_ = NULL;
-                                       ValaProperty* _tmp496_ = NULL;
-                                       ValaSymbol* _tmp497_ = NULL;
-                                       ValaSymbol* _tmp498_ = NULL;
-                                       ValaObjectType* _tmp499_ = NULL;
-                                       _tmp494_ = prop;
-                                       _tmp495_ = vala_property_get_base_property (_tmp494_);
-                                       _tmp496_ = _tmp495_;
-                                       _tmp497_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp496_);
-                                       _tmp498_ = _tmp497_;
-                                       _tmp499_ = vala_object_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp498_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
+               _tmp501_ = prop;
+               _tmp502_ = vala_property_get_binding (_tmp501_);
+               _tmp503_ = _tmp502_;
+               if (_tmp503_ == VALA_MEMBER_BINDING_INSTANCE) {
+                       gboolean _tmp504_ = FALSE;
+                       _tmp504_ = is_virtual;
+                       if (_tmp504_) {
+                               ValaProperty* _tmp505_ = NULL;
+                               ValaProperty* _tmp506_ = NULL;
+                               ValaProperty* _tmp507_ = NULL;
+                               ValaCCodeFunction* _tmp523_ = NULL;
+                               ValaCCodeFunction* _tmp524_ = NULL;
+                               ValaCCodeModifiers _tmp525_ = 0;
+                               ValaCCodeModifiers _tmp526_ = 0;
+                               ValaCCodeFunction* _tmp527_ = NULL;
+                               ValaObjectType* _tmp528_ = NULL;
+                               gchar* _tmp529_ = NULL;
+                               gchar* _tmp530_ = NULL;
+                               ValaCCodeParameter* _tmp531_ = NULL;
+                               ValaCCodeParameter* _tmp532_ = NULL;
+                               _tmp505_ = prop;
+                               _tmp506_ = vala_property_get_base_property (_tmp505_);
+                               _tmp507_ = _tmp506_;
+                               if (_tmp507_ != NULL) {
+                                       ValaProperty* _tmp508_ = NULL;
+                                       ValaProperty* _tmp509_ = NULL;
+                                       ValaProperty* _tmp510_ = NULL;
+                                       ValaSymbol* _tmp511_ = NULL;
+                                       ValaSymbol* _tmp512_ = NULL;
+                                       ValaObjectType* _tmp513_ = NULL;
+                                       _tmp508_ = prop;
+                                       _tmp509_ = vala_property_get_base_property (_tmp508_);
+                                       _tmp510_ = _tmp509_;
+                                       _tmp511_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp510_);
+                                       _tmp512_ = _tmp511_;
+                                       _tmp513_ = vala_object_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp512_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
                                        _vala_code_node_unref0 (base_type);
-                                       base_type = _tmp499_;
+                                       base_type = _tmp513_;
                                } else {
-                                       ValaProperty* _tmp500_ = NULL;
-                                       ValaProperty* _tmp501_ = NULL;
-                                       ValaProperty* _tmp502_ = NULL;
-                                       _tmp500_ = prop;
-                                       _tmp501_ = vala_property_get_base_interface_property (_tmp500_);
-                                       _tmp502_ = _tmp501_;
-                                       if (_tmp502_ != NULL) {
-                                               ValaProperty* _tmp503_ = NULL;
-                                               ValaProperty* _tmp504_ = NULL;
-                                               ValaProperty* _tmp505_ = NULL;
-                                               ValaSymbol* _tmp506_ = NULL;
-                                               ValaSymbol* _tmp507_ = NULL;
-                                               ValaObjectType* _tmp508_ = NULL;
-                                               _tmp503_ = prop;
-                                               _tmp504_ = vala_property_get_base_interface_property (_tmp503_);
-                                               _tmp505_ = _tmp504_;
-                                               _tmp506_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp505_);
-                                               _tmp507_ = _tmp506_;
-                                               _tmp508_ = vala_object_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp507_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
+                                       ValaProperty* _tmp514_ = NULL;
+                                       ValaProperty* _tmp515_ = NULL;
+                                       ValaProperty* _tmp516_ = NULL;
+                                       _tmp514_ = prop;
+                                       _tmp515_ = vala_property_get_base_interface_property (_tmp514_);
+                                       _tmp516_ = _tmp515_;
+                                       if (_tmp516_ != NULL) {
+                                               ValaProperty* _tmp517_ = NULL;
+                                               ValaProperty* _tmp518_ = NULL;
+                                               ValaProperty* _tmp519_ = NULL;
+                                               ValaSymbol* _tmp520_ = NULL;
+                                               ValaSymbol* _tmp521_ = NULL;
+                                               ValaObjectType* _tmp522_ = NULL;
+                                               _tmp517_ = prop;
+                                               _tmp518_ = vala_property_get_base_interface_property (_tmp517_);
+                                               _tmp519_ = _tmp518_;
+                                               _tmp520_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp519_);
+                                               _tmp521_ = _tmp520_;
+                                               _tmp522_ = vala_object_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp521_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
                                                _vala_code_node_unref0 (base_type);
-                                               base_type = _tmp508_;
+                                               base_type = _tmp522_;
                                        }
                                }
-                               _tmp509_ = function;
-                               _tmp510_ = function;
-                               _tmp511_ = vala_ccode_function_get_modifiers (_tmp510_);
-                               _tmp512_ = _tmp511_;
-                               vala_ccode_function_set_modifiers (_tmp510_, _tmp512_ | VALA_CCODE_MODIFIERS_STATIC);
-                               _tmp513_ = function;
-                               _tmp514_ = base_type;
-                               _tmp515_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp514_);
-                               _tmp516_ = _tmp515_;
-                               _tmp517_ = vala_ccode_parameter_new ("base", _tmp516_);
-                               _tmp518_ = _tmp517_;
-                               vala_ccode_function_add_parameter (_tmp513_, _tmp518_);
-                               _vala_ccode_node_unref0 (_tmp518_);
-                               _g_free0 (_tmp516_);
+                               _tmp523_ = function;
+                               _tmp524_ = function;
+                               _tmp525_ = vala_ccode_function_get_modifiers (_tmp524_);
+                               _tmp526_ = _tmp525_;
+                               vala_ccode_function_set_modifiers (_tmp524_, _tmp526_ | VALA_CCODE_MODIFIERS_STATIC);
+                               _tmp527_ = function;
+                               _tmp528_ = base_type;
+                               _tmp529_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp528_);
+                               _tmp530_ = _tmp529_;
+                               _tmp531_ = vala_ccode_parameter_new ("base", _tmp530_);
+                               _tmp532_ = _tmp531_;
+                               vala_ccode_function_add_parameter (_tmp527_, _tmp532_);
+                               _vala_ccode_node_unref0 (_tmp532_);
+                               _g_free0 (_tmp530_);
                        } else {
-                               ValaCCodeFunction* _tmp519_ = NULL;
-                               ValaCCodeParameter* _tmp520_ = NULL;
-                               _tmp519_ = function;
-                               _tmp520_ = cselfparam;
-                               vala_ccode_function_add_parameter (_tmp519_, _tmp520_);
+                               ValaCCodeFunction* _tmp533_ = NULL;
+                               ValaCCodeParameter* _tmp534_ = NULL;
+                               _tmp533_ = function;
+                               _tmp534_ = cselfparam;
+                               vala_ccode_function_add_parameter (_tmp533_, _tmp534_);
                        }
                }
-               _tmp523_ = acc;
-               _tmp524_ = vala_property_accessor_get_writable (_tmp523_);
-               _tmp525_ = _tmp524_;
-               if (_tmp525_) {
-                       _tmp522_ = TRUE;
-               } else {
-                       ValaPropertyAccessor* _tmp526_ = NULL;
-                       gboolean _tmp527_ = FALSE;
-                       gboolean _tmp528_ = FALSE;
-                       _tmp526_ = acc;
-                       _tmp527_ = vala_property_accessor_get_construction (_tmp526_);
-                       _tmp528_ = _tmp527_;
-                       _tmp522_ = _tmp528_;
-               }
-               if (_tmp522_) {
-                       _tmp521_ = TRUE;
+               _tmp537_ = acc;
+               _tmp538_ = vala_property_accessor_get_writable (_tmp537_);
+               _tmp539_ = _tmp538_;
+               if (_tmp539_) {
+                       _tmp536_ = TRUE;
                } else {
-                       gboolean _tmp529_ = FALSE;
-                       _tmp529_ = returns_real_struct;
-                       _tmp521_ = _tmp529_;
-               }
-               if (_tmp521_) {
-                       ValaCCodeFunction* _tmp530_ = NULL;
-                       ValaCCodeParameter* _tmp531_ = NULL;
-                       _tmp530_ = function;
-                       _tmp531_ = cvalueparam;
-                       vala_ccode_function_add_parameter (_tmp530_, _tmp531_);
-               }
-               _tmp532_ = acc;
-               _tmp533_ = vala_property_accessor_get_value_type (_tmp532_);
-               _tmp534_ = _tmp533_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp534_, VALA_TYPE_ARRAY_TYPE)) {
-                       ValaArrayType* array_type = NULL;
-                       ValaPropertyAccessor* _tmp535_ = NULL;
-                       ValaDataType* _tmp536_ = NULL;
-                       ValaDataType* _tmp537_ = NULL;
-                       ValaArrayType* _tmp538_ = NULL;
-                       gchar* length_ctype = NULL;
-                       gchar* _tmp539_ = NULL;
                        ValaPropertyAccessor* _tmp540_ = NULL;
                        gboolean _tmp541_ = FALSE;
                        gboolean _tmp542_ = FALSE;
-                       _tmp535_ = acc;
-                       _tmp536_ = vala_property_accessor_get_value_type (_tmp535_);
-                       _tmp537_ = _tmp536_;
-                       _tmp538_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp537_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                       array_type = _tmp538_;
-                       _tmp539_ = g_strdup ("int");
-                       length_ctype = _tmp539_;
                        _tmp540_ = acc;
-                       _tmp541_ = vala_property_accessor_get_readable (_tmp540_);
+                       _tmp541_ = vala_property_accessor_get_construction (_tmp540_);
                        _tmp542_ = _tmp541_;
-                       if (_tmp542_) {
-                               gchar* _tmp543_ = NULL;
-                               _tmp543_ = g_strdup ("int*");
+                       _tmp536_ = _tmp542_;
+               }
+               if (_tmp536_) {
+                       _tmp535_ = TRUE;
+               } else {
+                       gboolean _tmp543_ = FALSE;
+                       _tmp543_ = returns_real_struct;
+                       _tmp535_ = _tmp543_;
+               }
+               if (_tmp535_) {
+                       ValaCCodeFunction* _tmp544_ = NULL;
+                       ValaCCodeParameter* _tmp545_ = NULL;
+                       _tmp544_ = function;
+                       _tmp545_ = cvalueparam;
+                       vala_ccode_function_add_parameter (_tmp544_, _tmp545_);
+               }
+               _tmp546_ = acc;
+               _tmp547_ = vala_property_accessor_get_value_type (_tmp546_);
+               _tmp548_ = _tmp547_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp548_, VALA_TYPE_ARRAY_TYPE)) {
+                       ValaArrayType* array_type = NULL;
+                       ValaPropertyAccessor* _tmp549_ = NULL;
+                       ValaDataType* _tmp550_ = NULL;
+                       ValaDataType* _tmp551_ = NULL;
+                       ValaArrayType* _tmp552_ = NULL;
+                       gchar* length_ctype = NULL;
+                       gchar* _tmp553_ = NULL;
+                       ValaPropertyAccessor* _tmp554_ = NULL;
+                       gboolean _tmp555_ = FALSE;
+                       gboolean _tmp556_ = FALSE;
+                       _tmp549_ = acc;
+                       _tmp550_ = vala_property_accessor_get_value_type (_tmp549_);
+                       _tmp551_ = _tmp550_;
+                       _tmp552_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp551_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                       array_type = _tmp552_;
+                       _tmp553_ = g_strdup ("int");
+                       length_ctype = _tmp553_;
+                       _tmp554_ = acc;
+                       _tmp555_ = vala_property_accessor_get_readable (_tmp554_);
+                       _tmp556_ = _tmp555_;
+                       if (_tmp556_) {
+                               gchar* _tmp557_ = NULL;
+                               _tmp557_ = g_strdup ("int*");
                                _g_free0 (length_ctype);
-                               length_ctype = _tmp543_;
+                               length_ctype = _tmp557_;
                        }
                        {
                                gint dim = 0;
                                dim = 1;
                                {
-                                       gboolean _tmp544_ = FALSE;
-                                       _tmp544_ = TRUE;
+                                       gboolean _tmp558_ = FALSE;
+                                       _tmp558_ = TRUE;
                                        while (TRUE) {
-                                               gint _tmp546_ = 0;
-                                               ValaArrayType* _tmp547_ = NULL;
-                                               gint _tmp548_ = 0;
-                                               gint _tmp549_ = 0;
-                                               const gchar* _tmp550_ = NULL;
-                                               ValaPropertyAccessor* _tmp551_ = NULL;
-                                               gboolean _tmp552_ = FALSE;
-                                               gboolean _tmp553_ = FALSE;
-                                               ValaCCodeFunction* _tmp554_ = NULL;
-                                               gint _tmp555_ = 0;
-                                               gchar* _tmp556_ = NULL;
-                                               gchar* _tmp557_ = NULL;
-                                               const gchar* _tmp558_ = NULL;
-                                               ValaCCodeParameter* _tmp559_ = NULL;
-                                               ValaCCodeParameter* _tmp560_ = NULL;
-                                               if (!_tmp544_) {
-                                                       gint _tmp545_ = 0;
-                                                       _tmp545_ = dim;
-                                                       dim = _tmp545_ + 1;
+                                               gint _tmp560_ = 0;
+                                               ValaArrayType* _tmp561_ = NULL;
+                                               gint _tmp562_ = 0;
+                                               gint _tmp563_ = 0;
+                                               const gchar* _tmp564_ = NULL;
+                                               ValaPropertyAccessor* _tmp565_ = NULL;
+                                               gboolean _tmp566_ = FALSE;
+                                               gboolean _tmp567_ = FALSE;
+                                               ValaCCodeFunction* _tmp568_ = NULL;
+                                               gint _tmp569_ = 0;
+                                               gchar* _tmp570_ = NULL;
+                                               gchar* _tmp571_ = NULL;
+                                               const gchar* _tmp572_ = NULL;
+                                               ValaCCodeParameter* _tmp573_ = NULL;
+                                               ValaCCodeParameter* _tmp574_ = NULL;
+                                               if (!_tmp558_) {
+                                                       gint _tmp559_ = 0;
+                                                       _tmp559_ = dim;
+                                                       dim = _tmp559_ + 1;
                                                }
-                                               _tmp544_ = FALSE;
-                                               _tmp546_ = dim;
-                                               _tmp547_ = array_type;
-                                               _tmp548_ = vala_array_type_get_rank (_tmp547_);
-                                               _tmp549_ = _tmp548_;
-                                               if (!(_tmp546_ <= _tmp549_)) {
+                                               _tmp558_ = FALSE;
+                                               _tmp560_ = dim;
+                                               _tmp561_ = array_type;
+                                               _tmp562_ = vala_array_type_get_rank (_tmp561_);
+                                               _tmp563_ = _tmp562_;
+                                               if (!(_tmp560_ <= _tmp563_)) {
                                                        break;
                                                }
-                                               _tmp551_ = acc;
-                                               _tmp552_ = vala_property_accessor_get_readable (_tmp551_);
-                                               _tmp553_ = _tmp552_;
-                                               if (_tmp553_) {
-                                                       _tmp550_ = "result";
+                                               _tmp565_ = acc;
+                                               _tmp566_ = vala_property_accessor_get_readable (_tmp565_);
+                                               _tmp567_ = _tmp566_;
+                                               if (_tmp567_) {
+                                                       _tmp564_ = "result";
                                                } else {
-                                                       _tmp550_ = "value";
+                                                       _tmp564_ = "value";
                                                }
-                                               _tmp554_ = function;
-                                               _tmp555_ = dim;
-                                               _tmp556_ = vala_ccode_base_module_get_array_length_cname (self, _tmp550_, _tmp555_);
-                                               _tmp557_ = _tmp556_;
-                                               _tmp558_ = length_ctype;
-                                               _tmp559_ = vala_ccode_parameter_new (_tmp557_, _tmp558_);
-                                               _tmp560_ = _tmp559_;
-                                               vala_ccode_function_add_parameter (_tmp554_, _tmp560_);
-                                               _vala_ccode_node_unref0 (_tmp560_);
-                                               _g_free0 (_tmp557_);
+                                               _tmp568_ = function;
+                                               _tmp569_ = dim;
+                                               _tmp570_ = vala_ccode_base_module_get_array_length_cname (self, _tmp564_, _tmp569_);
+                                               _tmp571_ = _tmp570_;
+                                               _tmp572_ = length_ctype;
+                                               _tmp573_ = vala_ccode_parameter_new (_tmp571_, _tmp572_);
+                                               _tmp574_ = _tmp573_;
+                                               vala_ccode_function_add_parameter (_tmp568_, _tmp574_);
+                                               _vala_ccode_node_unref0 (_tmp574_);
+                                               _g_free0 (_tmp571_);
                                        }
                                }
                        }
                        _g_free0 (length_ctype);
                        _vala_code_node_unref0 (array_type);
                } else {
-                       gboolean _tmp561_ = FALSE;
-                       ValaPropertyAccessor* _tmp562_ = NULL;
-                       ValaDataType* _tmp563_ = NULL;
-                       ValaDataType* _tmp564_ = NULL;
-                       _tmp562_ = acc;
-                       _tmp563_ = vala_property_accessor_get_value_type (_tmp562_);
-                       _tmp564_ = _tmp563_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp564_, VALA_TYPE_DELEGATE_TYPE)) {
-                               ValaPropertyAccessor* _tmp565_ = NULL;
-                               ValaDataType* _tmp566_ = NULL;
-                               ValaDataType* _tmp567_ = NULL;
-                               ValaDelegate* _tmp568_ = NULL;
-                               ValaDelegate* _tmp569_ = NULL;
-                               gboolean _tmp570_ = FALSE;
-                               gboolean _tmp571_ = FALSE;
-                               _tmp565_ = acc;
-                               _tmp566_ = vala_property_accessor_get_value_type (_tmp565_);
-                               _tmp567_ = _tmp566_;
-                               _tmp568_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp567_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                               _tmp569_ = _tmp568_;
-                               _tmp570_ = vala_delegate_get_has_target (_tmp569_);
-                               _tmp571_ = _tmp570_;
-                               _tmp561_ = _tmp571_;
+                       gboolean _tmp575_ = FALSE;
+                       ValaPropertyAccessor* _tmp576_ = NULL;
+                       ValaDataType* _tmp577_ = NULL;
+                       ValaDataType* _tmp578_ = NULL;
+                       _tmp576_ = acc;
+                       _tmp577_ = vala_property_accessor_get_value_type (_tmp576_);
+                       _tmp578_ = _tmp577_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp578_, VALA_TYPE_DELEGATE_TYPE)) {
+                               ValaPropertyAccessor* _tmp579_ = NULL;
+                               ValaDataType* _tmp580_ = NULL;
+                               ValaDataType* _tmp581_ = NULL;
+                               ValaDelegate* _tmp582_ = NULL;
+                               ValaDelegate* _tmp583_ = NULL;
+                               gboolean _tmp584_ = FALSE;
+                               gboolean _tmp585_ = FALSE;
+                               _tmp579_ = acc;
+                               _tmp580_ = vala_property_accessor_get_value_type (_tmp579_);
+                               _tmp581_ = _tmp580_;
+                               _tmp582_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp581_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                               _tmp583_ = _tmp582_;
+                               _tmp584_ = vala_delegate_get_has_target (_tmp583_);
+                               _tmp585_ = _tmp584_;
+                               _tmp575_ = _tmp585_;
                        } else {
-                               _tmp561_ = FALSE;
+                               _tmp575_ = FALSE;
                        }
-                       if (_tmp561_) {
-                               const gchar* _tmp572_ = NULL;
-                               ValaPropertyAccessor* _tmp573_ = NULL;
-                               gboolean _tmp574_ = FALSE;
-                               gboolean _tmp575_ = FALSE;
-                               const gchar* _tmp576_ = NULL;
-                               ValaPropertyAccessor* _tmp577_ = NULL;
-                               gboolean _tmp578_ = FALSE;
-                               gboolean _tmp579_ = FALSE;
-                               ValaCCodeFunction* _tmp580_ = NULL;
-                               gchar* _tmp581_ = NULL;
-                               gchar* _tmp582_ = NULL;
-                               ValaCCodeParameter* _tmp583_ = NULL;
-                               ValaCCodeParameter* _tmp584_ = NULL;
-                               gboolean _tmp585_ = FALSE;
-                               ValaPropertyAccessor* _tmp586_ = NULL;
-                               gboolean _tmp587_ = FALSE;
+                       if (_tmp575_) {
+                               const gchar* _tmp586_ = NULL;
+                               ValaPropertyAccessor* _tmp587_ = NULL;
                                gboolean _tmp588_ = FALSE;
-                               _tmp573_ = acc;
-                               _tmp574_ = vala_property_accessor_get_readable (_tmp573_);
-                               _tmp575_ = _tmp574_;
-                               if (_tmp575_) {
-                                       _tmp572_ = "result";
+                               gboolean _tmp589_ = FALSE;
+                               const gchar* _tmp590_ = NULL;
+                               ValaPropertyAccessor* _tmp591_ = NULL;
+                               gboolean _tmp592_ = FALSE;
+                               gboolean _tmp593_ = FALSE;
+                               ValaCCodeFunction* _tmp594_ = NULL;
+                               gchar* _tmp595_ = NULL;
+                               gchar* _tmp596_ = NULL;
+                               ValaCCodeParameter* _tmp597_ = NULL;
+                               ValaCCodeParameter* _tmp598_ = NULL;
+                               gboolean _tmp599_ = FALSE;
+                               ValaPropertyAccessor* _tmp600_ = NULL;
+                               gboolean _tmp601_ = FALSE;
+                               gboolean _tmp602_ = FALSE;
+                               _tmp587_ = acc;
+                               _tmp588_ = vala_property_accessor_get_readable (_tmp587_);
+                               _tmp589_ = _tmp588_;
+                               if (_tmp589_) {
+                                       _tmp586_ = "result";
                                } else {
-                                       _tmp572_ = "value";
+                                       _tmp586_ = "value";
                                }
-                               _tmp577_ = acc;
-                               _tmp578_ = vala_property_accessor_get_readable (_tmp577_);
-                               _tmp579_ = _tmp578_;
-                               if (_tmp579_) {
-                                       _tmp576_ = "gpointer*";
+                               _tmp591_ = acc;
+                               _tmp592_ = vala_property_accessor_get_readable (_tmp591_);
+                               _tmp593_ = _tmp592_;
+                               if (_tmp593_) {
+                                       _tmp590_ = "gpointer*";
                                } else {
-                                       _tmp576_ = "gpointer";
+                                       _tmp590_ = "gpointer";
                                }
-                               _tmp580_ = function;
-                               _tmp581_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp572_);
-                               _tmp582_ = _tmp581_;
-                               _tmp583_ = vala_ccode_parameter_new (_tmp582_, _tmp576_);
-                               _tmp584_ = _tmp583_;
-                               vala_ccode_function_add_parameter (_tmp580_, _tmp584_);
-                               _vala_ccode_node_unref0 (_tmp584_);
-                               _g_free0 (_tmp582_);
-                               _tmp586_ = acc;
-                               _tmp587_ = vala_property_accessor_get_readable (_tmp586_);
-                               _tmp588_ = _tmp587_;
-                               if (!_tmp588_) {
-                                       ValaPropertyAccessor* _tmp589_ = NULL;
-                                       ValaDataType* _tmp590_ = NULL;
-                                       ValaDataType* _tmp591_ = NULL;
-                                       gboolean _tmp592_ = FALSE;
-                                       gboolean _tmp593_ = FALSE;
-                                       _tmp589_ = acc;
-                                       _tmp590_ = vala_property_accessor_get_value_type (_tmp589_);
-                                       _tmp591_ = _tmp590_;
-                                       _tmp592_ = vala_data_type_get_value_owned (_tmp591_);
-                                       _tmp593_ = _tmp592_;
-                                       _tmp585_ = _tmp593_;
+                               _tmp594_ = function;
+                               _tmp595_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp586_);
+                               _tmp596_ = _tmp595_;
+                               _tmp597_ = vala_ccode_parameter_new (_tmp596_, _tmp590_);
+                               _tmp598_ = _tmp597_;
+                               vala_ccode_function_add_parameter (_tmp594_, _tmp598_);
+                               _vala_ccode_node_unref0 (_tmp598_);
+                               _g_free0 (_tmp596_);
+                               _tmp600_ = acc;
+                               _tmp601_ = vala_property_accessor_get_readable (_tmp600_);
+                               _tmp602_ = _tmp601_;
+                               if (!_tmp602_) {
+                                       ValaPropertyAccessor* _tmp603_ = NULL;
+                                       ValaDataType* _tmp604_ = NULL;
+                                       ValaDataType* _tmp605_ = NULL;
+                                       gboolean _tmp606_ = FALSE;
+                                       gboolean _tmp607_ = FALSE;
+                                       _tmp603_ = acc;
+                                       _tmp604_ = vala_property_accessor_get_value_type (_tmp603_);
+                                       _tmp605_ = _tmp604_;
+                                       _tmp606_ = vala_data_type_get_value_owned (_tmp605_);
+                                       _tmp607_ = _tmp606_;
+                                       _tmp599_ = _tmp607_;
                                } else {
-                                       _tmp585_ = FALSE;
+                                       _tmp599_ = FALSE;
                                }
-                               if (_tmp585_) {
-                                       ValaCCodeFunction* _tmp594_ = NULL;
-                                       gchar* _tmp595_ = NULL;
-                                       gchar* _tmp596_ = NULL;
-                                       ValaCCodeParameter* _tmp597_ = NULL;
-                                       ValaCCodeParameter* _tmp598_ = NULL;
-                                       _tmp594_ = function;
-                                       _tmp595_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "value");
-                                       _tmp596_ = _tmp595_;
-                                       _tmp597_ = vala_ccode_parameter_new (_tmp596_, "GDestroyNotify");
-                                       _tmp598_ = _tmp597_;
-                                       vala_ccode_function_add_parameter (_tmp594_, _tmp598_);
-                                       _vala_ccode_node_unref0 (_tmp598_);
-                                       _g_free0 (_tmp596_);
+                               if (_tmp599_) {
+                                       ValaCCodeFunction* _tmp608_ = NULL;
+                                       gchar* _tmp609_ = NULL;
+                                       gchar* _tmp610_ = NULL;
+                                       ValaCCodeParameter* _tmp611_ = NULL;
+                                       ValaCCodeParameter* _tmp612_ = NULL;
+                                       _tmp608_ = function;
+                                       _tmp609_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, "value");
+                                       _tmp610_ = _tmp609_;
+                                       _tmp611_ = vala_ccode_parameter_new (_tmp610_, "GDestroyNotify");
+                                       _tmp612_ = _tmp611_;
+                                       vala_ccode_function_add_parameter (_tmp608_, _tmp612_);
+                                       _vala_ccode_node_unref0 (_tmp612_);
+                                       _g_free0 (_tmp610_);
                                }
                        }
                }
-               _tmp599_ = is_virtual;
-               if (!_tmp599_) {
-                       gboolean _tmp600_ = FALSE;
-                       gboolean _tmp601_ = FALSE;
-                       ValaProperty* _tmp602_ = NULL;
-                       gboolean _tmp603_ = FALSE;
-                       _tmp602_ = prop;
-                       _tmp603_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp602_);
-                       if (_tmp603_) {
-                               _tmp601_ = TRUE;
+               _tmp613_ = is_virtual;
+               if (!_tmp613_) {
+                       gboolean _tmp614_ = FALSE;
+                       gboolean _tmp615_ = FALSE;
+                       ValaProperty* _tmp616_ = NULL;
+                       gboolean _tmp617_ = FALSE;
+                       _tmp616_ = prop;
+                       _tmp617_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp616_);
+                       if (_tmp617_) {
+                               _tmp615_ = TRUE;
                        } else {
-                               gboolean _tmp604_ = FALSE;
-                               ValaPropertyAccessor* _tmp605_ = NULL;
-                               gboolean _tmp606_ = FALSE;
-                               gboolean _tmp607_ = FALSE;
-                               _tmp605_ = acc;
-                               _tmp606_ = vala_property_accessor_get_readable (_tmp605_);
-                               _tmp607_ = _tmp606_;
-                               if (_tmp607_) {
-                                       _tmp604_ = TRUE;
+                               gboolean _tmp618_ = FALSE;
+                               ValaPropertyAccessor* _tmp619_ = NULL;
+                               gboolean _tmp620_ = FALSE;
+                               gboolean _tmp621_ = FALSE;
+                               _tmp619_ = acc;
+                               _tmp620_ = vala_property_accessor_get_readable (_tmp619_);
+                               _tmp621_ = _tmp620_;
+                               if (_tmp621_) {
+                                       _tmp618_ = TRUE;
                                } else {
-                                       ValaPropertyAccessor* _tmp608_ = NULL;
-                                       gboolean _tmp609_ = FALSE;
-                                       gboolean _tmp610_ = FALSE;
-                                       _tmp608_ = acc;
-                                       _tmp609_ = vala_property_accessor_get_writable (_tmp608_);
-                                       _tmp610_ = _tmp609_;
-                                       _tmp604_ = _tmp610_;
+                                       ValaPropertyAccessor* _tmp622_ = NULL;
+                                       gboolean _tmp623_ = FALSE;
+                                       gboolean _tmp624_ = FALSE;
+                                       _tmp622_ = acc;
+                                       _tmp623_ = vala_property_accessor_get_writable (_tmp622_);
+                                       _tmp624_ = _tmp623_;
+                                       _tmp618_ = _tmp624_;
                                }
-                               _tmp601_ = !_tmp604_;
+                               _tmp615_ = !_tmp618_;
                        }
-                       if (_tmp601_) {
-                               _tmp600_ = TRUE;
+                       if (_tmp615_) {
+                               _tmp614_ = TRUE;
                        } else {
-                               ValaPropertyAccessor* _tmp611_ = NULL;
-                               ValaSymbolAccessibility _tmp612_ = 0;
-                               ValaSymbolAccessibility _tmp613_ = 0;
-                               _tmp611_ = acc;
-                               _tmp612_ = vala_symbol_get_access ((ValaSymbol*) _tmp611_);
-                               _tmp613_ = _tmp612_;
-                               _tmp600_ = _tmp613_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
+                               ValaPropertyAccessor* _tmp625_ = NULL;
+                               ValaSymbolAccessibility _tmp626_ = 0;
+                               ValaSymbolAccessibility _tmp627_ = 0;
+                               _tmp625_ = acc;
+                               _tmp626_ = vala_symbol_get_access ((ValaSymbol*) _tmp625_);
+                               _tmp627_ = _tmp626_;
+                               _tmp614_ = _tmp627_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
                        }
-                       if (_tmp600_) {
-                               ValaCCodeFunction* _tmp614_ = NULL;
-                               ValaCCodeFunction* _tmp615_ = NULL;
-                               ValaCCodeModifiers _tmp616_ = 0;
-                               ValaCCodeModifiers _tmp617_ = 0;
-                               _tmp614_ = function;
-                               _tmp615_ = function;
-                               _tmp616_ = vala_ccode_function_get_modifiers (_tmp615_);
-                               _tmp617_ = _tmp616_;
-                               vala_ccode_function_set_modifiers (_tmp615_, _tmp617_ | VALA_CCODE_MODIFIERS_STATIC);
+                       if (_tmp614_) {
+                               ValaCCodeFunction* _tmp628_ = NULL;
+                               ValaCCodeFunction* _tmp629_ = NULL;
+                               ValaCCodeModifiers _tmp630_ = 0;
+                               ValaCCodeModifiers _tmp631_ = 0;
+                               _tmp628_ = function;
+                               _tmp629_ = function;
+                               _tmp630_ = vala_ccode_function_get_modifiers (_tmp629_);
+                               _tmp631_ = _tmp630_;
+                               vala_ccode_function_set_modifiers (_tmp629_, _tmp631_ | VALA_CCODE_MODIFIERS_STATIC);
+                       } else {
+                               gboolean _tmp632_ = FALSE;
+                               ValaCodeContext* _tmp633_ = NULL;
+                               gboolean _tmp634_ = FALSE;
+                               gboolean _tmp635_ = FALSE;
+                               _tmp633_ = self->priv->_context;
+                               _tmp634_ = vala_code_context_get_hide_internal (_tmp633_);
+                               _tmp635_ = _tmp634_;
+                               if (_tmp635_) {
+                                       gboolean _tmp636_ = FALSE;
+                                       ValaProperty* _tmp637_ = NULL;
+                                       gboolean _tmp638_ = FALSE;
+                                       _tmp637_ = prop;
+                                       _tmp638_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp637_);
+                                       if (_tmp638_) {
+                                               _tmp636_ = TRUE;
+                                       } else {
+                                               ValaPropertyAccessor* _tmp639_ = NULL;
+                                               ValaSymbolAccessibility _tmp640_ = 0;
+                                               ValaSymbolAccessibility _tmp641_ = 0;
+                                               _tmp639_ = acc;
+                                               _tmp640_ = vala_symbol_get_access ((ValaSymbol*) _tmp639_);
+                                               _tmp641_ = _tmp640_;
+                                               _tmp636_ = _tmp641_ == VALA_SYMBOL_ACCESSIBILITY_INTERNAL;
+                                       }
+                                       _tmp632_ = _tmp636_;
+                               } else {
+                                       _tmp632_ = FALSE;
+                               }
+                               if (_tmp632_) {
+                                       ValaCCodeFunction* _tmp642_ = NULL;
+                                       ValaCCodeFunction* _tmp643_ = NULL;
+                                       ValaCCodeModifiers _tmp644_ = 0;
+                                       ValaCCodeModifiers _tmp645_ = 0;
+                                       _tmp642_ = function;
+                                       _tmp643_ = function;
+                                       _tmp644_ = vala_ccode_function_get_modifiers (_tmp643_);
+                                       _tmp645_ = _tmp644_;
+                                       vala_ccode_function_set_modifiers (_tmp643_, _tmp645_ | VALA_CCODE_MODIFIERS_INTERNAL);
+                               }
                        }
                }
-               _tmp618_ = function;
-               vala_ccode_base_module_push_function (self, _tmp618_);
-               _tmp620_ = prop;
-               _tmp621_ = vala_property_get_binding (_tmp620_);
-               _tmp622_ = _tmp621_;
-               if (_tmp622_ == VALA_MEMBER_BINDING_INSTANCE) {
-                       gboolean _tmp623_ = FALSE;
-                       _tmp623_ = is_virtual;
-                       _tmp619_ = !_tmp623_;
+               _tmp646_ = function;
+               vala_ccode_base_module_push_function (self, _tmp646_);
+               _tmp648_ = prop;
+               _tmp649_ = vala_property_get_binding (_tmp648_);
+               _tmp650_ = _tmp649_;
+               if (_tmp650_ == VALA_MEMBER_BINDING_INSTANCE) {
+                       gboolean _tmp651_ = FALSE;
+                       _tmp651_ = is_virtual;
+                       _tmp647_ = !_tmp651_;
                } else {
-                       _tmp619_ = FALSE;
-               }
-               if (_tmp619_) {
-                       gboolean _tmp624_ = FALSE;
-                       ValaPropertyAccessor* _tmp625_ = NULL;
-                       gboolean _tmp626_ = FALSE;
-                       gboolean _tmp627_ = FALSE;
-                       _tmp625_ = acc;
-                       _tmp626_ = vala_property_accessor_get_readable (_tmp625_);
-                       _tmp627_ = _tmp626_;
-                       if (!_tmp627_) {
-                               _tmp624_ = TRUE;
+                       _tmp647_ = FALSE;
+               }
+               if (_tmp647_) {
+                       gboolean _tmp652_ = FALSE;
+                       ValaPropertyAccessor* _tmp653_ = NULL;
+                       gboolean _tmp654_ = FALSE;
+                       gboolean _tmp655_ = FALSE;
+                       _tmp653_ = acc;
+                       _tmp654_ = vala_property_accessor_get_readable (_tmp653_);
+                       _tmp655_ = _tmp654_;
+                       if (!_tmp655_) {
+                               _tmp652_ = TRUE;
                        } else {
-                               gboolean _tmp628_ = FALSE;
-                               _tmp628_ = returns_real_struct;
-                               _tmp624_ = _tmp628_;
+                               gboolean _tmp656_ = FALSE;
+                               _tmp656_ = returns_real_struct;
+                               _tmp652_ = _tmp656_;
                        }
-                       if (_tmp624_) {
-                               ValaProperty* _tmp629_ = NULL;
-                               ValaTypeSymbol* _tmp630_ = NULL;
-                               _tmp629_ = prop;
-                               _tmp630_ = t;
-                               vala_ccode_base_module_create_property_type_check_statement (self, _tmp629_, FALSE, _tmp630_, TRUE, "self");
+                       if (_tmp652_) {
+                               ValaProperty* _tmp657_ = NULL;
+                               ValaTypeSymbol* _tmp658_ = NULL;
+                               _tmp657_ = prop;
+                               _tmp658_ = t;
+                               vala_ccode_base_module_create_property_type_check_statement (self, _tmp657_, FALSE, _tmp658_, TRUE, "self");
                        } else {
-                               ValaProperty* _tmp631_ = NULL;
-                               ValaTypeSymbol* _tmp632_ = NULL;
-                               _tmp631_ = prop;
-                               _tmp632_ = t;
-                               vala_ccode_base_module_create_property_type_check_statement (self, _tmp631_, TRUE, _tmp632_, TRUE, "self");
+                               ValaProperty* _tmp659_ = NULL;
+                               ValaTypeSymbol* _tmp660_ = NULL;
+                               _tmp659_ = prop;
+                               _tmp660_ = t;
+                               vala_ccode_base_module_create_property_type_check_statement (self, _tmp659_, TRUE, _tmp660_, TRUE, "self");
                        }
                }
-               _tmp634_ = acc;
-               _tmp635_ = vala_property_accessor_get_readable (_tmp634_);
-               _tmp636_ = _tmp635_;
-               if (_tmp636_) {
-                       gboolean _tmp637_ = FALSE;
-                       _tmp637_ = returns_real_struct;
-                       _tmp633_ = !_tmp637_;
+               _tmp662_ = acc;
+               _tmp663_ = vala_property_accessor_get_readable (_tmp662_);
+               _tmp664_ = _tmp663_;
+               if (_tmp664_) {
+                       gboolean _tmp665_ = FALSE;
+                       _tmp665_ = returns_real_struct;
+                       _tmp661_ = !_tmp665_;
                } else {
-                       _tmp633_ = FALSE;
-               }
-               if (_tmp633_) {
-                       gboolean _tmp638_ = FALSE;
-                       ValaPropertyAccessor* _tmp639_ = NULL;
-                       ValaBasicBlock* _tmp640_ = NULL;
-                       ValaBasicBlock* _tmp641_ = NULL;
-                       _tmp639_ = acc;
-                       _tmp640_ = vala_subroutine_get_return_block ((ValaSubroutine*) _tmp639_);
-                       _tmp641_ = _tmp640_;
-                       if (_tmp641_ == NULL) {
-                               _tmp638_ = TRUE;
+                       _tmp661_ = FALSE;
+               }
+               if (_tmp661_) {
+                       gboolean _tmp666_ = FALSE;
+                       ValaPropertyAccessor* _tmp667_ = NULL;
+                       ValaBasicBlock* _tmp668_ = NULL;
+                       ValaBasicBlock* _tmp669_ = NULL;
+                       _tmp667_ = acc;
+                       _tmp668_ = vala_subroutine_get_return_block ((ValaSubroutine*) _tmp667_);
+                       _tmp669_ = _tmp668_;
+                       if (_tmp669_ == NULL) {
+                               _tmp666_ = TRUE;
                        } else {
-                               ValaPropertyAccessor* _tmp642_ = NULL;
-                               ValaBasicBlock* _tmp643_ = NULL;
-                               ValaBasicBlock* _tmp644_ = NULL;
-                               ValaList* _tmp645_ = NULL;
-                               ValaList* _tmp646_ = NULL;
-                               gint _tmp647_ = 0;
-                               gint _tmp648_ = 0;
-                               _tmp642_ = acc;
-                               _tmp643_ = vala_subroutine_get_return_block ((ValaSubroutine*) _tmp642_);
-                               _tmp644_ = _tmp643_;
-                               _tmp645_ = vala_basic_block_get_predecessors (_tmp644_);
-                               _tmp646_ = _tmp645_;
-                               _tmp647_ = vala_collection_get_size ((ValaCollection*) _tmp646_);
-                               _tmp648_ = _tmp647_;
-                               _tmp638_ = _tmp648_ > 0;
-                               _vala_iterable_unref0 (_tmp646_);
+                               ValaPropertyAccessor* _tmp670_ = NULL;
+                               ValaBasicBlock* _tmp671_ = NULL;
+                               ValaBasicBlock* _tmp672_ = NULL;
+                               ValaList* _tmp673_ = NULL;
+                               ValaList* _tmp674_ = NULL;
+                               gint _tmp675_ = 0;
+                               gint _tmp676_ = 0;
+                               _tmp670_ = acc;
+                               _tmp671_ = vala_subroutine_get_return_block ((ValaSubroutine*) _tmp670_);
+                               _tmp672_ = _tmp671_;
+                               _tmp673_ = vala_basic_block_get_predecessors (_tmp672_);
+                               _tmp674_ = _tmp673_;
+                               _tmp675_ = vala_collection_get_size ((ValaCollection*) _tmp674_);
+                               _tmp676_ = _tmp675_;
+                               _tmp666_ = _tmp676_ > 0;
+                               _vala_iterable_unref0 (_tmp674_);
                        }
-                       if (_tmp638_) {
-                               ValaCCodeFunction* _tmp649_ = NULL;
-                               ValaCCodeFunction* _tmp650_ = NULL;
-                               ValaPropertyAccessor* _tmp651_ = NULL;
-                               ValaDataType* _tmp652_ = NULL;
-                               ValaDataType* _tmp653_ = NULL;
-                               gchar* _tmp654_ = NULL;
-                               gchar* _tmp655_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp656_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp657_ = NULL;
-                               _tmp649_ = vala_ccode_base_module_get_ccode (self);
-                               _tmp650_ = _tmp649_;
-                               _tmp651_ = acc;
-                               _tmp652_ = vala_property_accessor_get_value_type (_tmp651_);
-                               _tmp653_ = _tmp652_;
-                               _tmp654_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp653_);
-                               _tmp655_ = _tmp654_;
-                               _tmp656_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
-                               _tmp657_ = _tmp656_;
-                               vala_ccode_function_add_declaration (_tmp650_, _tmp655_, (ValaCCodeDeclarator*) _tmp657_, 0);
-                               _vala_ccode_node_unref0 (_tmp657_);
-                               _g_free0 (_tmp655_);
+                       if (_tmp666_) {
+                               ValaCCodeFunction* _tmp677_ = NULL;
+                               ValaCCodeFunction* _tmp678_ = NULL;
+                               ValaPropertyAccessor* _tmp679_ = NULL;
+                               ValaDataType* _tmp680_ = NULL;
+                               ValaDataType* _tmp681_ = NULL;
+                               gchar* _tmp682_ = NULL;
+                               gchar* _tmp683_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp684_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp685_ = NULL;
+                               _tmp677_ = vala_ccode_base_module_get_ccode (self);
+                               _tmp678_ = _tmp677_;
+                               _tmp679_ = acc;
+                               _tmp680_ = vala_property_accessor_get_value_type (_tmp679_);
+                               _tmp681_ = _tmp680_;
+                               _tmp682_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp681_);
+                               _tmp683_ = _tmp682_;
+                               _tmp684_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
+                               _tmp685_ = _tmp684_;
+                               vala_ccode_function_add_declaration (_tmp678_, _tmp683_, (ValaCCodeDeclarator*) _tmp685_, 0);
+                               _vala_ccode_node_unref0 (_tmp685_);
+                               _g_free0 (_tmp683_);
                        }
                }
-               _tmp658_ = is_virtual;
-               if (_tmp658_) {
-                       ValaCCodeFunction* _tmp659_ = NULL;
-                       ValaCCodeFunction* _tmp660_ = NULL;
-                       ValaDataType* _tmp661_ = NULL;
-                       gchar* _tmp662_ = NULL;
-                       gchar* _tmp663_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp664_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp665_ = NULL;
-                       ValaCCodeFunction* _tmp666_ = NULL;
-                       ValaCCodeFunction* _tmp667_ = NULL;
-                       ValaCCodeIdentifier* _tmp668_ = NULL;
-                       ValaCCodeIdentifier* _tmp669_ = NULL;
-                       ValaObjectType* _tmp670_ = NULL;
-                       ValaCCodeIdentifier* _tmp671_ = NULL;
-                       ValaCCodeIdentifier* _tmp672_ = NULL;
-                       ValaGLibValue* _tmp673_ = NULL;
-                       ValaGLibValue* _tmp674_ = NULL;
-                       ValaDataType* _tmp675_ = NULL;
-                       ValaPropertyAccessor* _tmp676_ = NULL;
-                       ValaTargetValue* _tmp677_ = NULL;
-                       ValaTargetValue* _tmp678_ = NULL;
-                       ValaCCodeExpression* _tmp679_ = NULL;
-                       ValaCCodeExpression* _tmp680_ = NULL;
-                       _tmp659_ = vala_ccode_base_module_get_ccode (self);
-                       _tmp660_ = _tmp659_;
-                       _tmp661_ = this_type;
-                       _tmp662_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp661_);
-                       _tmp663_ = _tmp662_;
-                       _tmp664_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
-                       _tmp665_ = _tmp664_;
-                       vala_ccode_function_add_declaration (_tmp660_, _tmp663_, (ValaCCodeDeclarator*) _tmp665_, 0);
-                       _vala_ccode_node_unref0 (_tmp665_);
-                       _g_free0 (_tmp663_);
-                       _tmp666_ = vala_ccode_base_module_get_ccode (self);
-                       _tmp667_ = _tmp666_;
-                       _tmp668_ = vala_ccode_identifier_new ("self");
-                       _tmp669_ = _tmp668_;
-                       _tmp670_ = base_type;
-                       _tmp671_ = vala_ccode_identifier_new ("base");
-                       _tmp672_ = _tmp671_;
-                       _tmp673_ = vala_glib_value_new ((ValaDataType*) _tmp670_, (ValaCCodeExpression*) _tmp672_, TRUE);
-                       _tmp674_ = _tmp673_;
-                       _tmp675_ = this_type;
-                       _tmp676_ = acc;
-                       _tmp677_ = vala_ccode_base_module_transform_value (self, (ValaTargetValue*) _tmp674_, _tmp675_, (ValaCodeNode*) _tmp676_);
-                       _tmp678_ = _tmp677_;
-                       _tmp679_ = vala_ccode_base_module_get_cvalue_ (self, _tmp678_);
-                       _tmp680_ = _tmp679_;
-                       vala_ccode_function_add_assignment (_tmp667_, (ValaCCodeExpression*) _tmp669_, _tmp680_);
-                       _vala_ccode_node_unref0 (_tmp680_);
-                       _vala_target_value_unref0 (_tmp678_);
-                       _vala_target_value_unref0 (_tmp674_);
-                       _vala_ccode_node_unref0 (_tmp672_);
-                       _vala_ccode_node_unref0 (_tmp669_);
-               }
-               _tmp681_ = acc;
-               _tmp682_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp681_);
-               _tmp683_ = _tmp682_;
-               vala_code_node_emit ((ValaCodeNode*) _tmp683_, (ValaCodeGenerator*) self);
-               _tmp684_ = vala_ccode_base_module_get_current_method_inner_error (self);
-               _tmp685_ = _tmp684_;
-               if (_tmp685_) {
-                       ValaCCodeFunction* _tmp686_ = NULL;
+               _tmp686_ = is_virtual;
+               if (_tmp686_) {
                        ValaCCodeFunction* _tmp687_ = NULL;
-                       ValaCCodeConstant* _tmp688_ = NULL;
-                       ValaCCodeConstant* _tmp689_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp690_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp691_ = NULL;
-                       _tmp686_ = vala_ccode_base_module_get_ccode (self);
-                       _tmp687_ = _tmp686_;
-                       _tmp688_ = vala_ccode_constant_new ("NULL");
-                       _tmp689_ = _tmp688_;
-                       _tmp690_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp689_, NULL);
+                       ValaCCodeFunction* _tmp688_ = NULL;
+                       ValaDataType* _tmp689_ = NULL;
+                       gchar* _tmp690_ = NULL;
+                       gchar* _tmp691_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp692_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp693_ = NULL;
+                       ValaCCodeFunction* _tmp694_ = NULL;
+                       ValaCCodeFunction* _tmp695_ = NULL;
+                       ValaCCodeIdentifier* _tmp696_ = NULL;
+                       ValaCCodeIdentifier* _tmp697_ = NULL;
+                       ValaObjectType* _tmp698_ = NULL;
+                       ValaCCodeIdentifier* _tmp699_ = NULL;
+                       ValaCCodeIdentifier* _tmp700_ = NULL;
+                       ValaGLibValue* _tmp701_ = NULL;
+                       ValaGLibValue* _tmp702_ = NULL;
+                       ValaDataType* _tmp703_ = NULL;
+                       ValaPropertyAccessor* _tmp704_ = NULL;
+                       ValaTargetValue* _tmp705_ = NULL;
+                       ValaTargetValue* _tmp706_ = NULL;
+                       ValaCCodeExpression* _tmp707_ = NULL;
+                       ValaCCodeExpression* _tmp708_ = NULL;
+                       _tmp687_ = vala_ccode_base_module_get_ccode (self);
+                       _tmp688_ = _tmp687_;
+                       _tmp689_ = this_type;
+                       _tmp690_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp689_);
                        _tmp691_ = _tmp690_;
-                       vala_ccode_function_add_declaration (_tmp687_, "GError *", (ValaCCodeDeclarator*) _tmp691_, 0);
-                       _vala_ccode_node_unref0 (_tmp691_);
-                       _vala_ccode_node_unref0 (_tmp689_);
-               }
-               _tmp694_ = prop;
-               _tmp695_ = vala_ccode_base_module_is_gobject_property (self, _tmp694_);
-               if (_tmp695_) {
-                       ValaProperty* _tmp696_ = NULL;
-                       gboolean _tmp697_ = FALSE;
-                       _tmp696_ = prop;
-                       _tmp697_ = vala_ccode_base_module_get_ccode_notify (_tmp696_);
-                       _tmp693_ = _tmp697_;
+                       _tmp692_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
+                       _tmp693_ = _tmp692_;
+                       vala_ccode_function_add_declaration (_tmp688_, _tmp691_, (ValaCCodeDeclarator*) _tmp693_, 0);
+                       _vala_ccode_node_unref0 (_tmp693_);
+                       _g_free0 (_tmp691_);
+                       _tmp694_ = vala_ccode_base_module_get_ccode (self);
+                       _tmp695_ = _tmp694_;
+                       _tmp696_ = vala_ccode_identifier_new ("self");
+                       _tmp697_ = _tmp696_;
+                       _tmp698_ = base_type;
+                       _tmp699_ = vala_ccode_identifier_new ("base");
+                       _tmp700_ = _tmp699_;
+                       _tmp701_ = vala_glib_value_new ((ValaDataType*) _tmp698_, (ValaCCodeExpression*) _tmp700_, TRUE);
+                       _tmp702_ = _tmp701_;
+                       _tmp703_ = this_type;
+                       _tmp704_ = acc;
+                       _tmp705_ = vala_ccode_base_module_transform_value (self, (ValaTargetValue*) _tmp702_, _tmp703_, (ValaCodeNode*) _tmp704_);
+                       _tmp706_ = _tmp705_;
+                       _tmp707_ = vala_ccode_base_module_get_cvalue_ (self, _tmp706_);
+                       _tmp708_ = _tmp707_;
+                       vala_ccode_function_add_assignment (_tmp695_, (ValaCCodeExpression*) _tmp697_, _tmp708_);
+                       _vala_ccode_node_unref0 (_tmp708_);
+                       _vala_target_value_unref0 (_tmp706_);
+                       _vala_target_value_unref0 (_tmp702_);
+                       _vala_ccode_node_unref0 (_tmp700_);
+                       _vala_ccode_node_unref0 (_tmp697_);
+               }
+               _tmp709_ = acc;
+               _tmp710_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp709_);
+               _tmp711_ = _tmp710_;
+               vala_code_node_emit ((ValaCodeNode*) _tmp711_, (ValaCodeGenerator*) self);
+               _tmp712_ = vala_ccode_base_module_get_current_method_inner_error (self);
+               _tmp713_ = _tmp712_;
+               if (_tmp713_) {
+                       ValaCCodeFunction* _tmp714_ = NULL;
+                       ValaCCodeFunction* _tmp715_ = NULL;
+                       ValaCCodeConstant* _tmp716_ = NULL;
+                       ValaCCodeConstant* _tmp717_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp718_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp719_ = NULL;
+                       _tmp714_ = vala_ccode_base_module_get_ccode (self);
+                       _tmp715_ = _tmp714_;
+                       _tmp716_ = vala_ccode_constant_new ("NULL");
+                       _tmp717_ = _tmp716_;
+                       _tmp718_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp717_, NULL);
+                       _tmp719_ = _tmp718_;
+                       vala_ccode_function_add_declaration (_tmp715_, "GError *", (ValaCCodeDeclarator*) _tmp719_, 0);
+                       _vala_ccode_node_unref0 (_tmp719_);
+                       _vala_ccode_node_unref0 (_tmp717_);
+               }
+               _tmp722_ = prop;
+               _tmp723_ = vala_ccode_base_module_is_gobject_property (self, _tmp722_);
+               if (_tmp723_) {
+                       ValaProperty* _tmp724_ = NULL;
+                       gboolean _tmp725_ = FALSE;
+                       _tmp724_ = prop;
+                       _tmp725_ = vala_ccode_base_module_get_ccode_notify (_tmp724_);
+                       _tmp721_ = _tmp725_;
                } else {
-                       _tmp693_ = FALSE;
-               }
-               if (_tmp693_) {
-                       gboolean _tmp698_ = FALSE;
-                       ValaPropertyAccessor* _tmp699_ = NULL;
-                       gboolean _tmp700_ = FALSE;
-                       gboolean _tmp701_ = FALSE;
-                       _tmp699_ = acc;
-                       _tmp700_ = vala_property_accessor_get_writable (_tmp699_);
-                       _tmp701_ = _tmp700_;
-                       if (_tmp701_) {
-                               _tmp698_ = TRUE;
+                       _tmp721_ = FALSE;
+               }
+               if (_tmp721_) {
+                       gboolean _tmp726_ = FALSE;
+                       ValaPropertyAccessor* _tmp727_ = NULL;
+                       gboolean _tmp728_ = FALSE;
+                       gboolean _tmp729_ = FALSE;
+                       _tmp727_ = acc;
+                       _tmp728_ = vala_property_accessor_get_writable (_tmp727_);
+                       _tmp729_ = _tmp728_;
+                       if (_tmp729_) {
+                               _tmp726_ = TRUE;
                        } else {
-                               ValaPropertyAccessor* _tmp702_ = NULL;
-                               gboolean _tmp703_ = FALSE;
-                               gboolean _tmp704_ = FALSE;
-                               _tmp702_ = acc;
-                               _tmp703_ = vala_property_accessor_get_construction (_tmp702_);
-                               _tmp704_ = _tmp703_;
-                               _tmp698_ = _tmp704_;
+                               ValaPropertyAccessor* _tmp730_ = NULL;
+                               gboolean _tmp731_ = FALSE;
+                               gboolean _tmp732_ = FALSE;
+                               _tmp730_ = acc;
+                               _tmp731_ = vala_property_accessor_get_construction (_tmp730_);
+                               _tmp732_ = _tmp731_;
+                               _tmp726_ = _tmp732_;
                        }
-                       _tmp692_ = _tmp698_;
+                       _tmp720_ = _tmp726_;
                } else {
-                       _tmp692_ = FALSE;
+                       _tmp720_ = FALSE;
                }
-               if (_tmp692_) {
+               if (_tmp720_) {
                        ValaCCodeFunctionCall* notify_call = NULL;
-                       ValaCCodeIdentifier* _tmp705_ = NULL;
-                       ValaCCodeIdentifier* _tmp706_ = NULL;
-                       ValaCCodeFunctionCall* _tmp707_ = NULL;
-                       ValaCCodeFunctionCall* _tmp708_ = NULL;
-                       ValaCCodeFunctionCall* _tmp709_ = NULL;
-                       ValaCCodeIdentifier* _tmp710_ = NULL;
-                       ValaCCodeIdentifier* _tmp711_ = NULL;
-                       ValaCCodeCastExpression* _tmp712_ = NULL;
-                       ValaCCodeCastExpression* _tmp713_ = NULL;
-                       ValaCCodeFunctionCall* _tmp714_ = NULL;
-                       ValaProperty* _tmp715_ = NULL;
-                       ValaCCodeConstant* _tmp716_ = NULL;
-                       ValaCCodeConstant* _tmp717_ = NULL;
-                       ValaCCodeFunction* _tmp718_ = NULL;
-                       ValaCCodeFunction* _tmp719_ = NULL;
-                       ValaCCodeFunctionCall* _tmp720_ = NULL;
-                       _tmp705_ = vala_ccode_identifier_new ("g_object_notify");
-                       _tmp706_ = _tmp705_;
-                       _tmp707_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp706_);
-                       _tmp708_ = _tmp707_;
-                       _vala_ccode_node_unref0 (_tmp706_);
-                       notify_call = _tmp708_;
-                       _tmp709_ = notify_call;
-                       _tmp710_ = vala_ccode_identifier_new ("self");
-                       _tmp711_ = _tmp710_;
-                       _tmp712_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp711_, "GObject *");
-                       _tmp713_ = _tmp712_;
-                       vala_ccode_function_call_add_argument (_tmp709_, (ValaCCodeExpression*) _tmp713_);
-                       _vala_ccode_node_unref0 (_tmp713_);
-                       _vala_ccode_node_unref0 (_tmp711_);
-                       _tmp714_ = notify_call;
-                       _tmp715_ = prop;
-                       _tmp716_ = vala_ccode_base_module_get_property_canonical_cconstant (self, _tmp715_);
-                       _tmp717_ = _tmp716_;
-                       vala_ccode_function_call_add_argument (_tmp714_, (ValaCCodeExpression*) _tmp717_);
-                       _vala_ccode_node_unref0 (_tmp717_);
-                       _tmp718_ = vala_ccode_base_module_get_ccode (self);
-                       _tmp719_ = _tmp718_;
-                       _tmp720_ = notify_call;
-                       vala_ccode_function_add_expression (_tmp719_, (ValaCCodeExpression*) _tmp720_);
+                       ValaCCodeIdentifier* _tmp733_ = NULL;
+                       ValaCCodeIdentifier* _tmp734_ = NULL;
+                       ValaCCodeFunctionCall* _tmp735_ = NULL;
+                       ValaCCodeFunctionCall* _tmp736_ = NULL;
+                       ValaCCodeFunctionCall* _tmp737_ = NULL;
+                       ValaCCodeIdentifier* _tmp738_ = NULL;
+                       ValaCCodeIdentifier* _tmp739_ = NULL;
+                       ValaCCodeCastExpression* _tmp740_ = NULL;
+                       ValaCCodeCastExpression* _tmp741_ = NULL;
+                       ValaCCodeFunctionCall* _tmp742_ = NULL;
+                       ValaProperty* _tmp743_ = NULL;
+                       ValaCCodeConstant* _tmp744_ = NULL;
+                       ValaCCodeConstant* _tmp745_ = NULL;
+                       ValaCCodeFunction* _tmp746_ = NULL;
+                       ValaCCodeFunction* _tmp747_ = NULL;
+                       ValaCCodeFunctionCall* _tmp748_ = NULL;
+                       _tmp733_ = vala_ccode_identifier_new ("g_object_notify");
+                       _tmp734_ = _tmp733_;
+                       _tmp735_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp734_);
+                       _tmp736_ = _tmp735_;
+                       _vala_ccode_node_unref0 (_tmp734_);
+                       notify_call = _tmp736_;
+                       _tmp737_ = notify_call;
+                       _tmp738_ = vala_ccode_identifier_new ("self");
+                       _tmp739_ = _tmp738_;
+                       _tmp740_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp739_, "GObject *");
+                       _tmp741_ = _tmp740_;
+                       vala_ccode_function_call_add_argument (_tmp737_, (ValaCCodeExpression*) _tmp741_);
+                       _vala_ccode_node_unref0 (_tmp741_);
+                       _vala_ccode_node_unref0 (_tmp739_);
+                       _tmp742_ = notify_call;
+                       _tmp743_ = prop;
+                       _tmp744_ = vala_ccode_base_module_get_property_canonical_cconstant (self, _tmp743_);
+                       _tmp745_ = _tmp744_;
+                       vala_ccode_function_call_add_argument (_tmp742_, (ValaCCodeExpression*) _tmp745_);
+                       _vala_ccode_node_unref0 (_tmp745_);
+                       _tmp746_ = vala_ccode_base_module_get_ccode (self);
+                       _tmp747_ = _tmp746_;
+                       _tmp748_ = notify_call;
+                       vala_ccode_function_add_expression (_tmp747_, (ValaCCodeExpression*) _tmp748_);
                        _vala_ccode_node_unref0 (notify_call);
                }
-               _tmp721_ = self->cfile;
-               _tmp722_ = function;
-               vala_ccode_file_add_function (_tmp721_, _tmp722_);
+               _tmp749_ = self->cfile;
+               _tmp750_ = function;
+               vala_ccode_file_add_function (_tmp749_, _tmp750_);
                _vala_code_node_unref0 (base_type);
                _vala_ccode_node_unref0 (function);
                _g_free0 (cname);
@@ -10000,18 +10253,18 @@ static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, Vala
        ValaBlock* _tmp17_ = NULL;
        gboolean _tmp18_ = FALSE;
        gboolean _tmp19_ = FALSE;
-       ValaBlock* _tmp889_ = NULL;
-       ValaSymbol* _tmp890_ = NULL;
-       ValaSymbol* _tmp891_ = NULL;
-       ValaBlock* _tmp978_ = NULL;
-       gboolean _tmp979_ = FALSE;
-       gboolean _tmp980_ = FALSE;
-       gboolean _tmp1008_ = FALSE;
-       gboolean _tmp1009_ = FALSE;
-       ValaBlock* _tmp1010_ = NULL;
-       ValaCodeNode* _tmp1011_ = NULL;
-       ValaCodeNode* _tmp1012_ = NULL;
-       ValaCCodeBaseModuleEmitContext* _tmp1021_ = NULL;
+       ValaBlock* _tmp887_ = NULL;
+       ValaSymbol* _tmp888_ = NULL;
+       ValaSymbol* _tmp889_ = NULL;
+       ValaBlock* _tmp976_ = NULL;
+       gboolean _tmp977_ = FALSE;
+       gboolean _tmp978_ = FALSE;
+       gboolean _tmp1006_ = FALSE;
+       gboolean _tmp1007_ = FALSE;
+       ValaBlock* _tmp1008_ = NULL;
+       ValaCodeNode* _tmp1009_ = NULL;
+       ValaCodeNode* _tmp1010_ = NULL;
+       ValaCCodeBaseModuleEmitContext* _tmp1019_ = NULL;
        self = (ValaCCodeBaseModule*) base;
        g_return_if_fail (b != NULL);
        _tmp0_ = self->emit_context;
@@ -10077,185 +10330,185 @@ static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, Vala
                ValaCCodeStruct* _tmp34_ = NULL;
                ValaBlock* _tmp35_ = NULL;
                ValaCCodeFunctionCall* data_alloc = NULL;
-               ValaCCodeIdentifier* _tmp173_ = NULL;
-               ValaCCodeIdentifier* _tmp174_ = NULL;
+               ValaCCodeIdentifier* _tmp171_ = NULL;
+               ValaCCodeIdentifier* _tmp172_ = NULL;
+               ValaCCodeFunctionCall* _tmp173_ = NULL;
+               ValaCCodeFunctionCall* _tmp174_ = NULL;
                ValaCCodeFunctionCall* _tmp175_ = NULL;
-               ValaCCodeFunctionCall* _tmp176_ = NULL;
-               ValaCCodeFunctionCall* _tmp177_ = NULL;
-               const gchar* _tmp178_ = NULL;
-               ValaCCodeIdentifier* _tmp179_ = NULL;
-               ValaCCodeIdentifier* _tmp180_ = NULL;
-               gboolean _tmp181_ = FALSE;
-               ValaCCodeFunction* _tmp199_ = NULL;
-               ValaCCodeFunction* _tmp200_ = NULL;
-               gint _tmp201_ = 0;
-               gchar* _tmp202_ = NULL;
-               gchar* _tmp203_ = NULL;
-               ValaCCodeExpression* _tmp204_ = NULL;
-               ValaCCodeExpression* _tmp205_ = NULL;
-               ValaCCodeFunctionCall* _tmp206_ = NULL;
-               ValaCCodeFunction* _tmp207_ = NULL;
-               ValaCCodeFunction* _tmp208_ = NULL;
-               gint _tmp209_ = 0;
-               gchar* _tmp210_ = NULL;
-               gchar* _tmp211_ = NULL;
-               ValaCCodeExpression* _tmp212_ = NULL;
-               ValaCCodeExpression* _tmp213_ = NULL;
-               ValaCCodeMemberAccess* _tmp214_ = NULL;
-               ValaCCodeMemberAccess* _tmp215_ = NULL;
-               ValaCCodeIdentifier* _tmp216_ = NULL;
-               ValaCCodeIdentifier* _tmp217_ = NULL;
-               ValaBlock* _tmp218_ = NULL;
-               ValaBlock* _tmp339_ = NULL;
-               ValaSymbol* _tmp340_ = NULL;
-               ValaSymbol* _tmp341_ = NULL;
+               const gchar* _tmp176_ = NULL;
+               ValaCCodeIdentifier* _tmp177_ = NULL;
+               ValaCCodeIdentifier* _tmp178_ = NULL;
+               gboolean _tmp179_ = FALSE;
+               ValaCCodeFunction* _tmp197_ = NULL;
+               ValaCCodeFunction* _tmp198_ = NULL;
+               gint _tmp199_ = 0;
+               gchar* _tmp200_ = NULL;
+               gchar* _tmp201_ = NULL;
+               ValaCCodeExpression* _tmp202_ = NULL;
+               ValaCCodeExpression* _tmp203_ = NULL;
+               ValaCCodeFunctionCall* _tmp204_ = NULL;
+               ValaCCodeFunction* _tmp205_ = NULL;
+               ValaCCodeFunction* _tmp206_ = NULL;
+               gint _tmp207_ = 0;
+               gchar* _tmp208_ = NULL;
+               gchar* _tmp209_ = NULL;
+               ValaCCodeExpression* _tmp210_ = NULL;
+               ValaCCodeExpression* _tmp211_ = NULL;
+               ValaCCodeMemberAccess* _tmp212_ = NULL;
+               ValaCCodeMemberAccess* _tmp213_ = NULL;
+               ValaCCodeIdentifier* _tmp214_ = NULL;
+               ValaCCodeIdentifier* _tmp215_ = NULL;
+               ValaBlock* _tmp216_ = NULL;
+               ValaBlock* _tmp337_ = NULL;
+               ValaSymbol* _tmp338_ = NULL;
+               ValaSymbol* _tmp339_ = NULL;
                ValaCCodeTypeDefinition* _typedef_ = NULL;
-               const gchar* _tmp436_ = NULL;
-               gchar* _tmp437_ = NULL;
-               gchar* _tmp438_ = NULL;
-               const gchar* _tmp439_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp440_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp441_ = NULL;
-               ValaCCodeTypeDefinition* _tmp442_ = NULL;
+               const gchar* _tmp434_ = NULL;
+               gchar* _tmp435_ = NULL;
+               gchar* _tmp436_ = NULL;
+               const gchar* _tmp437_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp438_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp439_ = NULL;
+               ValaCCodeTypeDefinition* _tmp440_ = NULL;
+               ValaCCodeTypeDefinition* _tmp441_ = NULL;
+               ValaCCodeFile* _tmp442_ = NULL;
                ValaCCodeTypeDefinition* _tmp443_ = NULL;
                ValaCCodeFile* _tmp444_ = NULL;
-               ValaCCodeTypeDefinition* _tmp445_ = NULL;
-               ValaCCodeFile* _tmp446_ = NULL;
-               ValaCCodeStruct* _tmp447_ = NULL;
+               ValaCCodeStruct* _tmp445_ = NULL;
                ValaCCodeFunction* ref_fun = NULL;
-               gint _tmp448_ = 0;
-               gchar* _tmp449_ = NULL;
+               gint _tmp446_ = 0;
+               gchar* _tmp447_ = NULL;
+               gchar* _tmp448_ = NULL;
+               const gchar* _tmp449_ = NULL;
                gchar* _tmp450_ = NULL;
-               const gchar* _tmp451_ = NULL;
-               gchar* _tmp452_ = NULL;
-               gchar* _tmp453_ = NULL;
+               gchar* _tmp451_ = NULL;
+               ValaCCodeFunction* _tmp452_ = NULL;
+               ValaCCodeFunction* _tmp453_ = NULL;
                ValaCCodeFunction* _tmp454_ = NULL;
-               ValaCCodeFunction* _tmp455_ = NULL;
-               ValaCCodeFunction* _tmp456_ = NULL;
-               gint _tmp457_ = 0;
-               gchar* _tmp458_ = NULL;
+               gint _tmp455_ = 0;
+               gchar* _tmp456_ = NULL;
+               gchar* _tmp457_ = NULL;
+               const gchar* _tmp458_ = NULL;
                gchar* _tmp459_ = NULL;
-               const gchar* _tmp460_ = NULL;
-               gchar* _tmp461_ = NULL;
-               gchar* _tmp462_ = NULL;
-               ValaCCodeParameter* _tmp463_ = NULL;
-               ValaCCodeParameter* _tmp464_ = NULL;
-               ValaCCodeFunction* _tmp465_ = NULL;
-               ValaCCodeFunction* _tmp466_ = NULL;
+               gchar* _tmp460_ = NULL;
+               ValaCCodeParameter* _tmp461_ = NULL;
+               ValaCCodeParameter* _tmp462_ = NULL;
+               ValaCCodeFunction* _tmp463_ = NULL;
+               ValaCCodeFunction* _tmp464_ = NULL;
                ValaCCodeFunctionCall* ccall = NULL;
-               ValaCCodeIdentifier* _tmp467_ = NULL;
-               ValaCCodeIdentifier* _tmp468_ = NULL;
+               ValaCCodeIdentifier* _tmp465_ = NULL;
+               ValaCCodeIdentifier* _tmp466_ = NULL;
+               ValaCCodeFunctionCall* _tmp467_ = NULL;
+               ValaCCodeFunctionCall* _tmp468_ = NULL;
                ValaCCodeFunctionCall* _tmp469_ = NULL;
-               ValaCCodeFunctionCall* _tmp470_ = NULL;
-               ValaCCodeFunctionCall* _tmp471_ = NULL;
-               gint _tmp472_ = 0;
-               gchar* _tmp473_ = NULL;
-               gchar* _tmp474_ = NULL;
-               ValaCCodeIdentifier* _tmp475_ = NULL;
-               ValaCCodeIdentifier* _tmp476_ = NULL;
-               ValaCCodeMemberAccess* _tmp477_ = NULL;
-               ValaCCodeMemberAccess* _tmp478_ = NULL;
-               ValaCCodeUnaryExpression* _tmp479_ = NULL;
-               ValaCCodeUnaryExpression* _tmp480_ = NULL;
-               ValaCCodeFunction* _tmp481_ = NULL;
+               gint _tmp470_ = 0;
+               gchar* _tmp471_ = NULL;
+               gchar* _tmp472_ = NULL;
+               ValaCCodeIdentifier* _tmp473_ = NULL;
+               ValaCCodeIdentifier* _tmp474_ = NULL;
+               ValaCCodeMemberAccess* _tmp475_ = NULL;
+               ValaCCodeMemberAccess* _tmp476_ = NULL;
+               ValaCCodeUnaryExpression* _tmp477_ = NULL;
+               ValaCCodeUnaryExpression* _tmp478_ = NULL;
+               ValaCCodeFunction* _tmp479_ = NULL;
+               ValaCCodeFunction* _tmp480_ = NULL;
+               ValaCCodeFunctionCall* _tmp481_ = NULL;
                ValaCCodeFunction* _tmp482_ = NULL;
-               ValaCCodeFunctionCall* _tmp483_ = NULL;
-               ValaCCodeFunction* _tmp484_ = NULL;
-               ValaCCodeFunction* _tmp485_ = NULL;
-               gint _tmp486_ = 0;
-               gchar* _tmp487_ = NULL;
-               gchar* _tmp488_ = NULL;
-               ValaCCodeIdentifier* _tmp489_ = NULL;
-               ValaCCodeIdentifier* _tmp490_ = NULL;
+               ValaCCodeFunction* _tmp483_ = NULL;
+               gint _tmp484_ = 0;
+               gchar* _tmp485_ = NULL;
+               gchar* _tmp486_ = NULL;
+               ValaCCodeIdentifier* _tmp487_ = NULL;
+               ValaCCodeIdentifier* _tmp488_ = NULL;
+               ValaCCodeFile* _tmp489_ = NULL;
+               ValaCCodeFunction* _tmp490_ = NULL;
                ValaCCodeFile* _tmp491_ = NULL;
                ValaCCodeFunction* _tmp492_ = NULL;
-               ValaCCodeFile* _tmp493_ = NULL;
-               ValaCCodeFunction* _tmp494_ = NULL;
                ValaCCodeFunction* unref_fun = NULL;
-               gint _tmp495_ = 0;
-               gchar* _tmp496_ = NULL;
-               gchar* _tmp497_ = NULL;
+               gint _tmp493_ = 0;
+               gchar* _tmp494_ = NULL;
+               gchar* _tmp495_ = NULL;
+               ValaCCodeFunction* _tmp496_ = NULL;
+               ValaCCodeFunction* _tmp497_ = NULL;
                ValaCCodeFunction* _tmp498_ = NULL;
-               ValaCCodeFunction* _tmp499_ = NULL;
-               ValaCCodeFunction* _tmp500_ = NULL;
-               ValaCCodeParameter* _tmp501_ = NULL;
-               ValaCCodeParameter* _tmp502_ = NULL;
+               ValaCCodeParameter* _tmp499_ = NULL;
+               ValaCCodeParameter* _tmp500_ = NULL;
+               ValaCCodeFunction* _tmp501_ = NULL;
+               ValaCCodeFunction* _tmp502_ = NULL;
                ValaCCodeFunction* _tmp503_ = NULL;
                ValaCCodeFunction* _tmp504_ = NULL;
-               ValaCCodeFunction* _tmp505_ = NULL;
-               ValaCCodeFunction* _tmp506_ = NULL;
-               const gchar* _tmp507_ = NULL;
-               gchar* _tmp508_ = NULL;
+               const gchar* _tmp505_ = NULL;
+               gchar* _tmp506_ = NULL;
+               gchar* _tmp507_ = NULL;
+               gint _tmp508_ = 0;
                gchar* _tmp509_ = NULL;
-               gint _tmp510_ = 0;
-               gchar* _tmp511_ = NULL;
-               gchar* _tmp512_ = NULL;
-               ValaCCodeIdentifier* _tmp513_ = NULL;
-               ValaCCodeIdentifier* _tmp514_ = NULL;
-               const gchar* _tmp515_ = NULL;
-               gchar* _tmp516_ = NULL;
-               gchar* _tmp517_ = NULL;
-               ValaCCodeCastExpression* _tmp518_ = NULL;
-               ValaCCodeCastExpression* _tmp519_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp520_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp521_ = NULL;
-               ValaCCodeIdentifier* _tmp522_ = NULL;
-               ValaCCodeIdentifier* _tmp523_ = NULL;
-               ValaCCodeFunctionCall* _tmp524_ = NULL;
-               ValaCCodeFunctionCall* _tmp525_ = NULL;
-               gint _tmp526_ = 0;
-               gchar* _tmp527_ = NULL;
-               gchar* _tmp528_ = NULL;
-               ValaCCodeIdentifier* _tmp529_ = NULL;
-               ValaCCodeIdentifier* _tmp530_ = NULL;
-               ValaCCodeMemberAccess* _tmp531_ = NULL;
-               ValaCCodeMemberAccess* _tmp532_ = NULL;
-               ValaCCodeUnaryExpression* _tmp533_ = NULL;
-               ValaCCodeUnaryExpression* _tmp534_ = NULL;
-               ValaCCodeFunction* _tmp535_ = NULL;
-               ValaCCodeFunction* _tmp536_ = NULL;
-               ValaCCodeFunctionCall* _tmp537_ = NULL;
+               gchar* _tmp510_ = NULL;
+               ValaCCodeIdentifier* _tmp511_ = NULL;
+               ValaCCodeIdentifier* _tmp512_ = NULL;
+               const gchar* _tmp513_ = NULL;
+               gchar* _tmp514_ = NULL;
+               gchar* _tmp515_ = NULL;
+               ValaCCodeCastExpression* _tmp516_ = NULL;
+               ValaCCodeCastExpression* _tmp517_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp518_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp519_ = NULL;
+               ValaCCodeIdentifier* _tmp520_ = NULL;
+               ValaCCodeIdentifier* _tmp521_ = NULL;
+               ValaCCodeFunctionCall* _tmp522_ = NULL;
+               ValaCCodeFunctionCall* _tmp523_ = NULL;
+               gint _tmp524_ = 0;
+               gchar* _tmp525_ = NULL;
+               gchar* _tmp526_ = NULL;
+               ValaCCodeIdentifier* _tmp527_ = NULL;
+               ValaCCodeIdentifier* _tmp528_ = NULL;
+               ValaCCodeMemberAccess* _tmp529_ = NULL;
+               ValaCCodeMemberAccess* _tmp530_ = NULL;
+               ValaCCodeUnaryExpression* _tmp531_ = NULL;
+               ValaCCodeUnaryExpression* _tmp532_ = NULL;
+               ValaCCodeFunction* _tmp533_ = NULL;
+               ValaCCodeFunction* _tmp534_ = NULL;
+               ValaCCodeFunctionCall* _tmp535_ = NULL;
                ValaCCodeExpression* outer_block = NULL;
-               gint _tmp538_ = 0;
-               gchar* _tmp539_ = NULL;
-               gchar* _tmp540_ = NULL;
-               ValaCCodeIdentifier* _tmp541_ = NULL;
-               ValaCCodeExpression* _tmp542_ = NULL;
+               gint _tmp536_ = 0;
+               gchar* _tmp537_ = NULL;
+               gchar* _tmp538_ = NULL;
+               ValaCCodeIdentifier* _tmp539_ = NULL;
+               ValaCCodeExpression* _tmp540_ = NULL;
                ValaBlock* parent_closure_block = NULL;
-               ValaBlock* _tmp543_ = NULL;
-               ValaDataType* _tmp556_ = NULL;
-               ValaDataType* _tmp557_ = NULL;
-               gboolean _tmp558_ = FALSE;
-               ValaMethod* _tmp576_ = NULL;
-               ValaMethod* _tmp577_ = NULL;
-               ValaBlock* _tmp682_ = NULL;
-               ValaSymbol* _tmp683_ = NULL;
-               ValaSymbol* _tmp684_ = NULL;
-               ValaBlock* _tmp764_ = NULL;
+               ValaBlock* _tmp541_ = NULL;
+               ValaDataType* _tmp554_ = NULL;
+               ValaDataType* _tmp555_ = NULL;
+               gboolean _tmp556_ = FALSE;
+               ValaMethod* _tmp574_ = NULL;
+               ValaMethod* _tmp575_ = NULL;
+               ValaBlock* _tmp680_ = NULL;
+               ValaSymbol* _tmp681_ = NULL;
+               ValaSymbol* _tmp682_ = NULL;
+               ValaBlock* _tmp762_ = NULL;
                ValaCCodeFunctionCall* data_free = NULL;
-               ValaCCodeIdentifier* _tmp824_ = NULL;
-               ValaCCodeIdentifier* _tmp825_ = NULL;
+               ValaCCodeIdentifier* _tmp822_ = NULL;
+               ValaCCodeIdentifier* _tmp823_ = NULL;
+               ValaCCodeFunctionCall* _tmp824_ = NULL;
+               ValaCCodeFunctionCall* _tmp825_ = NULL;
                ValaCCodeFunctionCall* _tmp826_ = NULL;
-               ValaCCodeFunctionCall* _tmp827_ = NULL;
-               ValaCCodeFunctionCall* _tmp828_ = NULL;
-               const gchar* _tmp829_ = NULL;
-               ValaCCodeIdentifier* _tmp830_ = NULL;
-               ValaCCodeIdentifier* _tmp831_ = NULL;
-               ValaCCodeFunctionCall* _tmp832_ = NULL;
-               gint _tmp833_ = 0;
-               gchar* _tmp834_ = NULL;
-               gchar* _tmp835_ = NULL;
-               ValaCCodeIdentifier* _tmp836_ = NULL;
-               ValaCCodeIdentifier* _tmp837_ = NULL;
-               ValaCCodeFunction* _tmp838_ = NULL;
+               const gchar* _tmp827_ = NULL;
+               ValaCCodeIdentifier* _tmp828_ = NULL;
+               ValaCCodeIdentifier* _tmp829_ = NULL;
+               ValaCCodeFunctionCall* _tmp830_ = NULL;
+               gint _tmp831_ = 0;
+               gchar* _tmp832_ = NULL;
+               gchar* _tmp833_ = NULL;
+               ValaCCodeIdentifier* _tmp834_ = NULL;
+               ValaCCodeIdentifier* _tmp835_ = NULL;
+               ValaCCodeFunction* _tmp836_ = NULL;
+               ValaCCodeFunction* _tmp837_ = NULL;
+               ValaCCodeFunctionCall* _tmp838_ = NULL;
                ValaCCodeFunction* _tmp839_ = NULL;
-               ValaCCodeFunctionCall* _tmp840_ = NULL;
-               ValaCCodeFunction* _tmp841_ = NULL;
+               ValaCCodeFunction* _tmp840_ = NULL;
+               ValaCCodeFile* _tmp841_ = NULL;
                ValaCCodeFunction* _tmp842_ = NULL;
                ValaCCodeFile* _tmp843_ = NULL;
                ValaCCodeFunction* _tmp844_ = NULL;
-               ValaCCodeFile* _tmp845_ = NULL;
-               ValaCCodeFunction* _tmp846_ = NULL;
                _tmp20_ = b;
                _tmp21_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp20_);
                _tmp22_ = _tmp21_;
@@ -10499,13 +10752,11 @@ static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, Vala
                                        ValaLocalVariable* _tmp120_ = NULL;
                                        ValaDataType* _tmp121_ = NULL;
                                        ValaDataType* _tmp122_ = NULL;
-                                       gchar* _tmp123_ = NULL;
-                                       gchar* _tmp124_ = NULL;
-                                       gchar* _tmp125_ = NULL;
-                                       gchar* _tmp126_ = NULL;
-                                       ValaLocalVariable* _tmp127_ = NULL;
-                                       ValaDataType* _tmp128_ = NULL;
-                                       ValaDataType* _tmp129_ = NULL;
+                                       ValaCCodeDeclaratorSuffix* _tmp123_ = NULL;
+                                       ValaCCodeDeclaratorSuffix* _tmp124_ = NULL;
+                                       ValaLocalVariable* _tmp125_ = NULL;
+                                       ValaDataType* _tmp126_ = NULL;
+                                       ValaDataType* _tmp127_ = NULL;
                                        _tmp107_ = local;
                                        _tmp108_ = vala_variable_get_variable_type ((ValaVariable*) _tmp107_);
                                        _tmp109_ = _tmp108_;
@@ -10523,138 +10774,135 @@ static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, Vala
                                        _tmp120_ = local;
                                        _tmp121_ = vala_variable_get_variable_type ((ValaVariable*) _tmp120_);
                                        _tmp122_ = _tmp121_;
-                                       _tmp123_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp122_);
+                                       _tmp123_ = vala_ccode_base_module_get_ccode_declarator_suffix (self, _tmp122_);
                                        _tmp124_ = _tmp123_;
-                                       _tmp125_ = g_strconcat (_tmp119_, _tmp124_, NULL);
-                                       _tmp126_ = _tmp125_;
-                                       vala_ccode_struct_add_field (_tmp111_, _tmp116_, _tmp126_, NULL);
-                                       _g_free0 (_tmp126_);
-                                       _g_free0 (_tmp124_);
+                                       vala_ccode_struct_add_field (_tmp111_, _tmp116_, _tmp119_, _tmp124_);
+                                       _vala_ccode_declarator_suffix_unref0 (_tmp124_);
                                        _g_free0 (_tmp119_);
                                        _g_free0 (_tmp116_);
-                                       _tmp127_ = local;
-                                       _tmp128_ = vala_variable_get_variable_type ((ValaVariable*) _tmp127_);
-                                       _tmp129_ = _tmp128_;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp129_, VALA_TYPE_ARRAY_TYPE)) {
+                                       _tmp125_ = local;
+                                       _tmp126_ = vala_variable_get_variable_type ((ValaVariable*) _tmp125_);
+                                       _tmp127_ = _tmp126_;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp127_, VALA_TYPE_ARRAY_TYPE)) {
                                                ValaArrayType* array_type = NULL;
-                                               ValaLocalVariable* _tmp130_ = NULL;
-                                               ValaDataType* _tmp131_ = NULL;
-                                               ValaDataType* _tmp132_ = NULL;
-                                               ValaArrayType* _tmp133_ = NULL;
-                                               ValaCCodeStruct* _tmp147_ = NULL;
-                                               ValaLocalVariable* _tmp148_ = NULL;
+                                               ValaLocalVariable* _tmp128_ = NULL;
+                                               ValaDataType* _tmp129_ = NULL;
+                                               ValaDataType* _tmp130_ = NULL;
+                                               ValaArrayType* _tmp131_ = NULL;
+                                               ValaCCodeStruct* _tmp145_ = NULL;
+                                               ValaLocalVariable* _tmp146_ = NULL;
+                                               gchar* _tmp147_ = NULL;
+                                               gchar* _tmp148_ = NULL;
                                                gchar* _tmp149_ = NULL;
                                                gchar* _tmp150_ = NULL;
-                                               gchar* _tmp151_ = NULL;
-                                               gchar* _tmp152_ = NULL;
-                                               _tmp130_ = local;
-                                               _tmp131_ = vala_variable_get_variable_type ((ValaVariable*) _tmp130_);
-                                               _tmp132_ = _tmp131_;
-                                               _tmp133_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp132_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                               array_type = _tmp133_;
+                                               _tmp128_ = local;
+                                               _tmp129_ = vala_variable_get_variable_type ((ValaVariable*) _tmp128_);
+                                               _tmp130_ = _tmp129_;
+                                               _tmp131_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp130_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                               array_type = _tmp131_;
                                                {
                                                        gint dim = 0;
                                                        dim = 1;
                                                        {
-                                                               gboolean _tmp134_ = FALSE;
-                                                               _tmp134_ = TRUE;
+                                                               gboolean _tmp132_ = FALSE;
+                                                               _tmp132_ = TRUE;
                                                                while (TRUE) {
+                                                                       gint _tmp134_ = 0;
+                                                                       ValaArrayType* _tmp135_ = NULL;
                                                                        gint _tmp136_ = 0;
-                                                                       ValaArrayType* _tmp137_ = NULL;
-                                                                       gint _tmp138_ = 0;
-                                                                       gint _tmp139_ = 0;
-                                                                       ValaCCodeStruct* _tmp140_ = NULL;
-                                                                       ValaLocalVariable* _tmp141_ = NULL;
-                                                                       gchar* _tmp142_ = NULL;
+                                                                       gint _tmp137_ = 0;
+                                                                       ValaCCodeStruct* _tmp138_ = NULL;
+                                                                       ValaLocalVariable* _tmp139_ = NULL;
+                                                                       gchar* _tmp140_ = NULL;
+                                                                       gchar* _tmp141_ = NULL;
+                                                                       gint _tmp142_ = 0;
                                                                        gchar* _tmp143_ = NULL;
-                                                                       gint _tmp144_ = 0;
-                                                                       gchar* _tmp145_ = NULL;
-                                                                       gchar* _tmp146_ = NULL;
-                                                                       if (!_tmp134_) {
-                                                                               gint _tmp135_ = 0;
-                                                                               _tmp135_ = dim;
-                                                                               dim = _tmp135_ + 1;
+                                                                       gchar* _tmp144_ = NULL;
+                                                                       if (!_tmp132_) {
+                                                                               gint _tmp133_ = 0;
+                                                                               _tmp133_ = dim;
+                                                                               dim = _tmp133_ + 1;
                                                                        }
-                                                                       _tmp134_ = FALSE;
-                                                                       _tmp136_ = dim;
-                                                                       _tmp137_ = array_type;
-                                                                       _tmp138_ = vala_array_type_get_rank (_tmp137_);
-                                                                       _tmp139_ = _tmp138_;
-                                                                       if (!(_tmp136_ <= _tmp139_)) {
+                                                                       _tmp132_ = FALSE;
+                                                                       _tmp134_ = dim;
+                                                                       _tmp135_ = array_type;
+                                                                       _tmp136_ = vala_array_type_get_rank (_tmp135_);
+                                                                       _tmp137_ = _tmp136_;
+                                                                       if (!(_tmp134_ <= _tmp137_)) {
                                                                                break;
                                                                        }
-                                                                       _tmp140_ = data;
-                                                                       _tmp141_ = local;
-                                                                       _tmp142_ = vala_ccode_base_module_get_local_cname (self, _tmp141_);
-                                                                       _tmp143_ = _tmp142_;
-                                                                       _tmp144_ = dim;
-                                                                       _tmp145_ = vala_ccode_base_module_get_array_length_cname (self, _tmp143_, _tmp144_);
-                                                                       _tmp146_ = _tmp145_;
-                                                                       vala_ccode_struct_add_field (_tmp140_, "gint", _tmp146_, NULL);
-                                                                       _g_free0 (_tmp146_);
-                                                                       _g_free0 (_tmp143_);
+                                                                       _tmp138_ = data;
+                                                                       _tmp139_ = local;
+                                                                       _tmp140_ = vala_ccode_base_module_get_local_cname (self, _tmp139_);
+                                                                       _tmp141_ = _tmp140_;
+                                                                       _tmp142_ = dim;
+                                                                       _tmp143_ = vala_ccode_base_module_get_array_length_cname (self, _tmp141_, _tmp142_);
+                                                                       _tmp144_ = _tmp143_;
+                                                                       vala_ccode_struct_add_field (_tmp138_, "gint", _tmp144_, NULL);
+                                                                       _g_free0 (_tmp144_);
+                                                                       _g_free0 (_tmp141_);
                                                                }
                                                        }
                                                }
-                                               _tmp147_ = data;
-                                               _tmp148_ = local;
-                                               _tmp149_ = vala_ccode_base_module_get_local_cname (self, _tmp148_);
+                                               _tmp145_ = data;
+                                               _tmp146_ = local;
+                                               _tmp147_ = vala_ccode_base_module_get_local_cname (self, _tmp146_);
+                                               _tmp148_ = _tmp147_;
+                                               _tmp149_ = vala_ccode_base_module_get_array_size_cname (self, _tmp148_);
                                                _tmp150_ = _tmp149_;
-                                               _tmp151_ = vala_ccode_base_module_get_array_size_cname (self, _tmp150_);
-                                               _tmp152_ = _tmp151_;
-                                               vala_ccode_struct_add_field (_tmp147_, "gint", _tmp152_, NULL);
-                                               _g_free0 (_tmp152_);
+                                               vala_ccode_struct_add_field (_tmp145_, "gint", _tmp150_, NULL);
                                                _g_free0 (_tmp150_);
+                                               _g_free0 (_tmp148_);
                                                _vala_code_node_unref0 (array_type);
                                        } else {
-                                               ValaLocalVariable* _tmp153_ = NULL;
-                                               ValaDataType* _tmp154_ = NULL;
-                                               ValaDataType* _tmp155_ = NULL;
-                                               _tmp153_ = local;
-                                               _tmp154_ = vala_variable_get_variable_type ((ValaVariable*) _tmp153_);
-                                               _tmp155_ = _tmp154_;
-                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp155_, VALA_TYPE_DELEGATE_TYPE)) {
-                                                       ValaCCodeStruct* _tmp156_ = NULL;
-                                                       ValaLocalVariable* _tmp157_ = NULL;
+                                               ValaLocalVariable* _tmp151_ = NULL;
+                                               ValaDataType* _tmp152_ = NULL;
+                                               ValaDataType* _tmp153_ = NULL;
+                                               _tmp151_ = local;
+                                               _tmp152_ = vala_variable_get_variable_type ((ValaVariable*) _tmp151_);
+                                               _tmp153_ = _tmp152_;
+                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp153_, VALA_TYPE_DELEGATE_TYPE)) {
+                                                       ValaCCodeStruct* _tmp154_ = NULL;
+                                                       ValaLocalVariable* _tmp155_ = NULL;
+                                                       gchar* _tmp156_ = NULL;
+                                                       gchar* _tmp157_ = NULL;
                                                        gchar* _tmp158_ = NULL;
                                                        gchar* _tmp159_ = NULL;
-                                                       gchar* _tmp160_ = NULL;
-                                                       gchar* _tmp161_ = NULL;
-                                                       ValaLocalVariable* _tmp162_ = NULL;
-                                                       ValaDataType* _tmp163_ = NULL;
-                                                       ValaDataType* _tmp164_ = NULL;
-                                                       gboolean _tmp165_ = FALSE;
-                                                       gboolean _tmp166_ = FALSE;
-                                                       _tmp156_ = data;
-                                                       _tmp157_ = local;
-                                                       _tmp158_ = vala_ccode_base_module_get_local_cname (self, _tmp157_);
+                                                       ValaLocalVariable* _tmp160_ = NULL;
+                                                       ValaDataType* _tmp161_ = NULL;
+                                                       ValaDataType* _tmp162_ = NULL;
+                                                       gboolean _tmp163_ = FALSE;
+                                                       gboolean _tmp164_ = FALSE;
+                                                       _tmp154_ = data;
+                                                       _tmp155_ = local;
+                                                       _tmp156_ = vala_ccode_base_module_get_local_cname (self, _tmp155_);
+                                                       _tmp157_ = _tmp156_;
+                                                       _tmp158_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp157_);
                                                        _tmp159_ = _tmp158_;
-                                                       _tmp160_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp159_);
-                                                       _tmp161_ = _tmp160_;
-                                                       vala_ccode_struct_add_field (_tmp156_, "gpointer", _tmp161_, NULL);
-                                                       _g_free0 (_tmp161_);
+                                                       vala_ccode_struct_add_field (_tmp154_, "gpointer", _tmp159_, NULL);
                                                        _g_free0 (_tmp159_);
-                                                       _tmp162_ = local;
-                                                       _tmp163_ = vala_variable_get_variable_type ((ValaVariable*) _tmp162_);
+                                                       _g_free0 (_tmp157_);
+                                                       _tmp160_ = local;
+                                                       _tmp161_ = vala_variable_get_variable_type ((ValaVariable*) _tmp160_);
+                                                       _tmp162_ = _tmp161_;
+                                                       _tmp163_ = vala_data_type_get_value_owned (_tmp162_);
                                                        _tmp164_ = _tmp163_;
-                                                       _tmp165_ = vala_data_type_get_value_owned (_tmp164_);
-                                                       _tmp166_ = _tmp165_;
-                                                       if (_tmp166_) {
-                                                               ValaCCodeStruct* _tmp167_ = NULL;
-                                                               ValaLocalVariable* _tmp168_ = NULL;
+                                                       if (_tmp164_) {
+                                                               ValaCCodeStruct* _tmp165_ = NULL;
+                                                               ValaLocalVariable* _tmp166_ = NULL;
+                                                               gchar* _tmp167_ = NULL;
+                                                               gchar* _tmp168_ = NULL;
                                                                gchar* _tmp169_ = NULL;
                                                                gchar* _tmp170_ = NULL;
-                                                               gchar* _tmp171_ = NULL;
-                                                               gchar* _tmp172_ = NULL;
-                                                               _tmp167_ = data;
-                                                               _tmp168_ = local;
-                                                               _tmp169_ = vala_ccode_base_module_get_local_cname (self, _tmp168_);
+                                                               _tmp165_ = data;
+                                                               _tmp166_ = local;
+                                                               _tmp167_ = vala_ccode_base_module_get_local_cname (self, _tmp166_);
+                                                               _tmp168_ = _tmp167_;
+                                                               _tmp169_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp168_);
                                                                _tmp170_ = _tmp169_;
-                                                               _tmp171_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp170_);
-                                                               _tmp172_ = _tmp171_;
-                                                               vala_ccode_struct_add_field (_tmp167_, "GDestroyNotify", _tmp172_, NULL);
-                                                               _g_free0 (_tmp172_);
+                                                               vala_ccode_struct_add_field (_tmp165_, "GDestroyNotify", _tmp170_, NULL);
                                                                _g_free0 (_tmp170_);
+                                                               _g_free0 (_tmp168_);
                                                        }
                                                }
                                        }
@@ -10663,435 +10911,435 @@ static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, Vala
                        }
                        _vala_iterable_unref0 (_local_list);
                }
-               _tmp173_ = vala_ccode_identifier_new ("g_slice_new0");
+               _tmp171_ = vala_ccode_identifier_new ("g_slice_new0");
+               _tmp172_ = _tmp171_;
+               _tmp173_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp172_);
                _tmp174_ = _tmp173_;
-               _tmp175_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp174_);
-               _tmp176_ = _tmp175_;
-               _vala_ccode_node_unref0 (_tmp174_);
-               data_alloc = _tmp176_;
-               _tmp177_ = data_alloc;
-               _tmp178_ = struct_name;
-               _tmp179_ = vala_ccode_identifier_new (_tmp178_);
-               _tmp180_ = _tmp179_;
-               vala_ccode_function_call_add_argument (_tmp177_, (ValaCCodeExpression*) _tmp180_);
-               _vala_ccode_node_unref0 (_tmp180_);
-               _tmp181_ = vala_ccode_base_module_is_in_coroutine (self);
-               if (_tmp181_) {
-                       ValaCCodeStruct* _tmp182_ = NULL;
-                       const gchar* _tmp183_ = NULL;
-                       gchar* _tmp184_ = NULL;
+               _vala_ccode_node_unref0 (_tmp172_);
+               data_alloc = _tmp174_;
+               _tmp175_ = data_alloc;
+               _tmp176_ = struct_name;
+               _tmp177_ = vala_ccode_identifier_new (_tmp176_);
+               _tmp178_ = _tmp177_;
+               vala_ccode_function_call_add_argument (_tmp175_, (ValaCCodeExpression*) _tmp178_);
+               _vala_ccode_node_unref0 (_tmp178_);
+               _tmp179_ = vala_ccode_base_module_is_in_coroutine (self);
+               if (_tmp179_) {
+                       ValaCCodeStruct* _tmp180_ = NULL;
+                       const gchar* _tmp181_ = NULL;
+                       gchar* _tmp182_ = NULL;
+                       gchar* _tmp183_ = NULL;
+                       gint _tmp184_ = 0;
                        gchar* _tmp185_ = NULL;
-                       gint _tmp186_ = 0;
-                       gchar* _tmp187_ = NULL;
-                       gchar* _tmp188_ = NULL;
-                       _tmp182_ = self->closure_struct;
-                       _tmp183_ = struct_name;
-                       _tmp184_ = g_strconcat (_tmp183_, "*", NULL);
-                       _tmp185_ = _tmp184_;
-                       _tmp186_ = block_id;
-                       _tmp187_ = g_strdup_printf ("_data%d_", _tmp186_);
-                       _tmp188_ = _tmp187_;
-                       vala_ccode_struct_add_field (_tmp182_, _tmp185_, _tmp188_, NULL);
-                       _g_free0 (_tmp188_);
-                       _g_free0 (_tmp185_);
+                       gchar* _tmp186_ = NULL;
+                       _tmp180_ = self->closure_struct;
+                       _tmp181_ = struct_name;
+                       _tmp182_ = g_strconcat (_tmp181_, "*", NULL);
+                       _tmp183_ = _tmp182_;
+                       _tmp184_ = block_id;
+                       _tmp185_ = g_strdup_printf ("_data%d_", _tmp184_);
+                       _tmp186_ = _tmp185_;
+                       vala_ccode_struct_add_field (_tmp180_, _tmp183_, _tmp186_, NULL);
+                       _g_free0 (_tmp186_);
+                       _g_free0 (_tmp183_);
                } else {
-                       ValaCCodeFunction* _tmp189_ = NULL;
-                       ValaCCodeFunction* _tmp190_ = NULL;
-                       const gchar* _tmp191_ = NULL;
-                       gchar* _tmp192_ = NULL;
+                       ValaCCodeFunction* _tmp187_ = NULL;
+                       ValaCCodeFunction* _tmp188_ = NULL;
+                       const gchar* _tmp189_ = NULL;
+                       gchar* _tmp190_ = NULL;
+                       gchar* _tmp191_ = NULL;
+                       gint _tmp192_ = 0;
                        gchar* _tmp193_ = NULL;
-                       gint _tmp194_ = 0;
-                       gchar* _tmp195_ = NULL;
-                       gchar* _tmp196_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp197_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp198_ = NULL;
-                       _tmp189_ = vala_ccode_base_module_get_ccode (self);
-                       _tmp190_ = _tmp189_;
-                       _tmp191_ = struct_name;
-                       _tmp192_ = g_strconcat (_tmp191_, "*", NULL);
-                       _tmp193_ = _tmp192_;
-                       _tmp194_ = block_id;
-                       _tmp195_ = g_strdup_printf ("_data%d_", _tmp194_);
+                       gchar* _tmp194_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp195_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp196_ = NULL;
+                       _tmp187_ = vala_ccode_base_module_get_ccode (self);
+                       _tmp188_ = _tmp187_;
+                       _tmp189_ = struct_name;
+                       _tmp190_ = g_strconcat (_tmp189_, "*", NULL);
+                       _tmp191_ = _tmp190_;
+                       _tmp192_ = block_id;
+                       _tmp193_ = g_strdup_printf ("_data%d_", _tmp192_);
+                       _tmp194_ = _tmp193_;
+                       _tmp195_ = vala_ccode_variable_declarator_new (_tmp194_, NULL, NULL);
                        _tmp196_ = _tmp195_;
-                       _tmp197_ = vala_ccode_variable_declarator_new (_tmp196_, NULL, NULL);
-                       _tmp198_ = _tmp197_;
-                       vala_ccode_function_add_declaration (_tmp190_, _tmp193_, (ValaCCodeDeclarator*) _tmp198_, 0);
-                       _vala_ccode_node_unref0 (_tmp198_);
-                       _g_free0 (_tmp196_);
-                       _g_free0 (_tmp193_);
+                       vala_ccode_function_add_declaration (_tmp188_, _tmp191_, (ValaCCodeDeclarator*) _tmp196_, 0);
+                       _vala_ccode_node_unref0 (_tmp196_);
+                       _g_free0 (_tmp194_);
+                       _g_free0 (_tmp191_);
                }
-               _tmp199_ = vala_ccode_base_module_get_ccode (self);
-               _tmp200_ = _tmp199_;
-               _tmp201_ = block_id;
-               _tmp202_ = g_strdup_printf ("_data%d_", _tmp201_);
+               _tmp197_ = vala_ccode_base_module_get_ccode (self);
+               _tmp198_ = _tmp197_;
+               _tmp199_ = block_id;
+               _tmp200_ = g_strdup_printf ("_data%d_", _tmp199_);
+               _tmp201_ = _tmp200_;
+               _tmp202_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp201_);
                _tmp203_ = _tmp202_;
-               _tmp204_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp203_);
-               _tmp205_ = _tmp204_;
-               _tmp206_ = data_alloc;
-               vala_ccode_function_add_assignment (_tmp200_, _tmp205_, (ValaCCodeExpression*) _tmp206_);
-               _vala_ccode_node_unref0 (_tmp205_);
-               _g_free0 (_tmp203_);
-               _tmp207_ = vala_ccode_base_module_get_ccode (self);
-               _tmp208_ = _tmp207_;
-               _tmp209_ = block_id;
-               _tmp210_ = g_strdup_printf ("_data%d_", _tmp209_);
+               _tmp204_ = data_alloc;
+               vala_ccode_function_add_assignment (_tmp198_, _tmp203_, (ValaCCodeExpression*) _tmp204_);
+               _vala_ccode_node_unref0 (_tmp203_);
+               _g_free0 (_tmp201_);
+               _tmp205_ = vala_ccode_base_module_get_ccode (self);
+               _tmp206_ = _tmp205_;
+               _tmp207_ = block_id;
+               _tmp208_ = g_strdup_printf ("_data%d_", _tmp207_);
+               _tmp209_ = _tmp208_;
+               _tmp210_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp209_);
                _tmp211_ = _tmp210_;
-               _tmp212_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp211_);
+               _tmp212_ = vala_ccode_member_access_new_pointer (_tmp211_, "_ref_count_");
                _tmp213_ = _tmp212_;
-               _tmp214_ = vala_ccode_member_access_new_pointer (_tmp213_, "_ref_count_");
+               _tmp214_ = vala_ccode_identifier_new ("1");
                _tmp215_ = _tmp214_;
-               _tmp216_ = vala_ccode_identifier_new ("1");
-               _tmp217_ = _tmp216_;
-               vala_ccode_function_add_assignment (_tmp208_, (ValaCCodeExpression*) _tmp215_, (ValaCCodeExpression*) _tmp217_);
-               _vala_ccode_node_unref0 (_tmp217_);
+               vala_ccode_function_add_assignment (_tmp206_, (ValaCCodeExpression*) _tmp213_, (ValaCCodeExpression*) _tmp215_);
                _vala_ccode_node_unref0 (_tmp215_);
                _vala_ccode_node_unref0 (_tmp213_);
-               _g_free0 (_tmp211_);
-               _tmp218_ = parent_block;
-               if (_tmp218_ != NULL) {
+               _vala_ccode_node_unref0 (_tmp211_);
+               _g_free0 (_tmp209_);
+               _tmp216_ = parent_block;
+               if (_tmp216_ != NULL) {
                        gint parent_block_id = 0;
-                       ValaBlock* _tmp219_ = NULL;
-                       gint _tmp220_ = 0;
+                       ValaBlock* _tmp217_ = NULL;
+                       gint _tmp218_ = 0;
                        ValaCCodeFunctionCall* ref_call = NULL;
-                       gint _tmp221_ = 0;
-                       gchar* _tmp222_ = NULL;
-                       gchar* _tmp223_ = NULL;
-                       ValaCCodeIdentifier* _tmp224_ = NULL;
-                       ValaCCodeIdentifier* _tmp225_ = NULL;
+                       gint _tmp219_ = 0;
+                       gchar* _tmp220_ = NULL;
+                       gchar* _tmp221_ = NULL;
+                       ValaCCodeIdentifier* _tmp222_ = NULL;
+                       ValaCCodeIdentifier* _tmp223_ = NULL;
+                       ValaCCodeFunctionCall* _tmp224_ = NULL;
+                       ValaCCodeFunctionCall* _tmp225_ = NULL;
                        ValaCCodeFunctionCall* _tmp226_ = NULL;
-                       ValaCCodeFunctionCall* _tmp227_ = NULL;
-                       ValaCCodeFunctionCall* _tmp228_ = NULL;
-                       gint _tmp229_ = 0;
-                       gchar* _tmp230_ = NULL;
-                       gchar* _tmp231_ = NULL;
-                       ValaCCodeExpression* _tmp232_ = NULL;
-                       ValaCCodeExpression* _tmp233_ = NULL;
-                       ValaCCodeFunction* _tmp234_ = NULL;
-                       ValaCCodeFunction* _tmp235_ = NULL;
-                       gint _tmp236_ = 0;
-                       gchar* _tmp237_ = NULL;
-                       gchar* _tmp238_ = NULL;
-                       ValaCCodeExpression* _tmp239_ = NULL;
-                       ValaCCodeExpression* _tmp240_ = NULL;
-                       gint _tmp241_ = 0;
-                       gchar* _tmp242_ = NULL;
-                       gchar* _tmp243_ = NULL;
-                       ValaCCodeMemberAccess* _tmp244_ = NULL;
-                       ValaCCodeMemberAccess* _tmp245_ = NULL;
-                       ValaCCodeFunctionCall* _tmp246_ = NULL;
-                       _tmp219_ = parent_block;
-                       _tmp220_ = vala_ccode_base_module_get_block_id (self, _tmp219_);
-                       parent_block_id = _tmp220_;
-                       _tmp221_ = parent_block_id;
-                       _tmp222_ = g_strdup_printf ("block%d_data_ref", _tmp221_);
+                       gint _tmp227_ = 0;
+                       gchar* _tmp228_ = NULL;
+                       gchar* _tmp229_ = NULL;
+                       ValaCCodeExpression* _tmp230_ = NULL;
+                       ValaCCodeExpression* _tmp231_ = NULL;
+                       ValaCCodeFunction* _tmp232_ = NULL;
+                       ValaCCodeFunction* _tmp233_ = NULL;
+                       gint _tmp234_ = 0;
+                       gchar* _tmp235_ = NULL;
+                       gchar* _tmp236_ = NULL;
+                       ValaCCodeExpression* _tmp237_ = NULL;
+                       ValaCCodeExpression* _tmp238_ = NULL;
+                       gint _tmp239_ = 0;
+                       gchar* _tmp240_ = NULL;
+                       gchar* _tmp241_ = NULL;
+                       ValaCCodeMemberAccess* _tmp242_ = NULL;
+                       ValaCCodeMemberAccess* _tmp243_ = NULL;
+                       ValaCCodeFunctionCall* _tmp244_ = NULL;
+                       _tmp217_ = parent_block;
+                       _tmp218_ = vala_ccode_base_module_get_block_id (self, _tmp217_);
+                       parent_block_id = _tmp218_;
+                       _tmp219_ = parent_block_id;
+                       _tmp220_ = g_strdup_printf ("block%d_data_ref", _tmp219_);
+                       _tmp221_ = _tmp220_;
+                       _tmp222_ = vala_ccode_identifier_new (_tmp221_);
                        _tmp223_ = _tmp222_;
-                       _tmp224_ = vala_ccode_identifier_new (_tmp223_);
+                       _tmp224_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp223_);
                        _tmp225_ = _tmp224_;
-                       _tmp226_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp225_);
-                       _tmp227_ = _tmp226_;
-                       _vala_ccode_node_unref0 (_tmp225_);
-                       _g_free0 (_tmp223_);
-                       ref_call = _tmp227_;
-                       _tmp228_ = ref_call;
-                       _tmp229_ = parent_block_id;
-                       _tmp230_ = g_strdup_printf ("_data%d_", _tmp229_);
+                       _vala_ccode_node_unref0 (_tmp223_);
+                       _g_free0 (_tmp221_);
+                       ref_call = _tmp225_;
+                       _tmp226_ = ref_call;
+                       _tmp227_ = parent_block_id;
+                       _tmp228_ = g_strdup_printf ("_data%d_", _tmp227_);
+                       _tmp229_ = _tmp228_;
+                       _tmp230_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp229_);
                        _tmp231_ = _tmp230_;
-                       _tmp232_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp231_);
+                       vala_ccode_function_call_add_argument (_tmp226_, _tmp231_);
+                       _vala_ccode_node_unref0 (_tmp231_);
+                       _g_free0 (_tmp229_);
+                       _tmp232_ = vala_ccode_base_module_get_ccode (self);
                        _tmp233_ = _tmp232_;
-                       vala_ccode_function_call_add_argument (_tmp228_, _tmp233_);
-                       _vala_ccode_node_unref0 (_tmp233_);
-                       _g_free0 (_tmp231_);
-                       _tmp234_ = vala_ccode_base_module_get_ccode (self);
-                       _tmp235_ = _tmp234_;
-                       _tmp236_ = block_id;
-                       _tmp237_ = g_strdup_printf ("_data%d_", _tmp236_);
+                       _tmp234_ = block_id;
+                       _tmp235_ = g_strdup_printf ("_data%d_", _tmp234_);
+                       _tmp236_ = _tmp235_;
+                       _tmp237_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp236_);
                        _tmp238_ = _tmp237_;
-                       _tmp239_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp238_);
-                       _tmp240_ = _tmp239_;
-                       _tmp241_ = parent_block_id;
-                       _tmp242_ = g_strdup_printf ("_data%d_", _tmp241_);
+                       _tmp239_ = parent_block_id;
+                       _tmp240_ = g_strdup_printf ("_data%d_", _tmp239_);
+                       _tmp241_ = _tmp240_;
+                       _tmp242_ = vala_ccode_member_access_new_pointer (_tmp238_, _tmp241_);
                        _tmp243_ = _tmp242_;
-                       _tmp244_ = vala_ccode_member_access_new_pointer (_tmp240_, _tmp243_);
-                       _tmp245_ = _tmp244_;
-                       _tmp246_ = ref_call;
-                       vala_ccode_function_add_assignment (_tmp235_, (ValaCCodeExpression*) _tmp245_, (ValaCCodeExpression*) _tmp246_);
-                       _vala_ccode_node_unref0 (_tmp245_);
-                       _g_free0 (_tmp243_);
-                       _vala_ccode_node_unref0 (_tmp240_);
-                       _g_free0 (_tmp238_);
+                       _tmp244_ = ref_call;
+                       vala_ccode_function_add_assignment (_tmp233_, (ValaCCodeExpression*) _tmp243_, (ValaCCodeExpression*) _tmp244_);
+                       _vala_ccode_node_unref0 (_tmp243_);
+                       _g_free0 (_tmp241_);
+                       _vala_ccode_node_unref0 (_tmp238_);
+                       _g_free0 (_tmp236_);
                        _vala_ccode_node_unref0 (ref_call);
                } else {
-                       gboolean _tmp247_ = FALSE;
-                       gboolean _tmp248_ = FALSE;
-                       ValaMethod* _tmp249_ = NULL;
-                       ValaMethod* _tmp250_ = NULL;
+                       gboolean _tmp245_ = FALSE;
+                       gboolean _tmp246_ = FALSE;
+                       ValaMethod* _tmp247_ = NULL;
+                       ValaMethod* _tmp248_ = NULL;
                        gboolean in_creation_method_with_chainup = FALSE;
-                       gboolean _tmp257_ = FALSE;
-                       ValaDataType* _tmp258_ = NULL;
-                       ValaDataType* _tmp259_ = NULL;
-                       gboolean _tmp260_ = FALSE;
-                       ValaMethod* _tmp298_ = NULL;
-                       ValaMethod* _tmp299_ = NULL;
-                       _tmp249_ = vala_ccode_base_module_get_current_method (self);
-                       _tmp250_ = _tmp249_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp250_, VALA_TYPE_CREATION_METHOD)) {
-                               ValaClass* _tmp251_ = NULL;
-                               ValaClass* _tmp252_ = NULL;
-                               _tmp251_ = vala_ccode_base_module_get_current_class (self);
-                               _tmp252_ = _tmp251_;
-                               _tmp248_ = _tmp252_ != NULL;
+                       gboolean _tmp255_ = FALSE;
+                       ValaDataType* _tmp256_ = NULL;
+                       ValaDataType* _tmp257_ = NULL;
+                       gboolean _tmp258_ = FALSE;
+                       ValaMethod* _tmp296_ = NULL;
+                       ValaMethod* _tmp297_ = NULL;
+                       _tmp247_ = vala_ccode_base_module_get_current_method (self);
+                       _tmp248_ = _tmp247_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp248_, VALA_TYPE_CREATION_METHOD)) {
+                               ValaClass* _tmp249_ = NULL;
+                               ValaClass* _tmp250_ = NULL;
+                               _tmp249_ = vala_ccode_base_module_get_current_class (self);
+                               _tmp250_ = _tmp249_;
+                               _tmp246_ = _tmp250_ != NULL;
                        } else {
-                               _tmp248_ = FALSE;
+                               _tmp246_ = FALSE;
                        }
-                       if (_tmp248_) {
+                       if (_tmp246_) {
+                               ValaClass* _tmp251_ = NULL;
+                               ValaClass* _tmp252_ = NULL;
                                ValaClass* _tmp253_ = NULL;
                                ValaClass* _tmp254_ = NULL;
-                               ValaClass* _tmp255_ = NULL;
-                               ValaClass* _tmp256_ = NULL;
-                               _tmp253_ = vala_ccode_base_module_get_current_class (self);
+                               _tmp251_ = vala_ccode_base_module_get_current_class (self);
+                               _tmp252_ = _tmp251_;
+                               _tmp253_ = vala_class_get_base_class (_tmp252_);
                                _tmp254_ = _tmp253_;
-                               _tmp255_ = vala_class_get_base_class (_tmp254_);
-                               _tmp256_ = _tmp255_;
-                               _tmp247_ = _tmp256_ != NULL;
+                               _tmp245_ = _tmp254_ != NULL;
                        } else {
-                               _tmp247_ = FALSE;
+                               _tmp245_ = FALSE;
                        }
-                       in_creation_method_with_chainup = _tmp247_;
-                       _tmp258_ = vala_ccode_base_module_get_this_type (self);
-                       _tmp259_ = _tmp258_;
-                       _tmp260_ = _tmp259_ != NULL;
-                       _vala_code_node_unref0 (_tmp259_);
-                       if (_tmp260_) {
-                               gboolean _tmp261_ = FALSE;
-                               gboolean _tmp262_ = FALSE;
-                               _tmp262_ = in_creation_method_with_chainup;
-                               if (!_tmp262_) {
-                                       _tmp261_ = TRUE;
+                       in_creation_method_with_chainup = _tmp245_;
+                       _tmp256_ = vala_ccode_base_module_get_this_type (self);
+                       _tmp257_ = _tmp256_;
+                       _tmp258_ = _tmp257_ != NULL;
+                       _vala_code_node_unref0 (_tmp257_);
+                       if (_tmp258_) {
+                               gboolean _tmp259_ = FALSE;
+                               gboolean _tmp260_ = FALSE;
+                               _tmp260_ = in_creation_method_with_chainup;
+                               if (!_tmp260_) {
+                                       _tmp259_ = TRUE;
                                } else {
-                                       ValaMethod* _tmp263_ = NULL;
-                                       ValaMethod* _tmp264_ = NULL;
+                                       ValaMethod* _tmp261_ = NULL;
+                                       ValaMethod* _tmp262_ = NULL;
+                                       ValaBlock* _tmp263_ = NULL;
+                                       ValaBlock* _tmp264_ = NULL;
                                        ValaBlock* _tmp265_ = NULL;
-                                       ValaBlock* _tmp266_ = NULL;
-                                       ValaBlock* _tmp267_ = NULL;
-                                       _tmp263_ = vala_ccode_base_module_get_current_method (self);
+                                       _tmp261_ = vala_ccode_base_module_get_current_method (self);
+                                       _tmp262_ = _tmp261_;
+                                       _tmp263_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp262_);
                                        _tmp264_ = _tmp263_;
-                                       _tmp265_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp264_);
-                                       _tmp266_ = _tmp265_;
-                                       _tmp267_ = b;
-                                       _tmp261_ = _tmp266_ != _tmp267_;
+                                       _tmp265_ = b;
+                                       _tmp259_ = _tmp264_ != _tmp265_;
                                }
-                               _tmp257_ = _tmp261_;
+                               _tmp255_ = _tmp259_;
                        } else {
-                               _tmp257_ = FALSE;
+                               _tmp255_ = FALSE;
                        }
-                       if (_tmp257_) {
+                       if (_tmp255_) {
                                ValaCCodeFunctionCall* ref_call = NULL;
-                               ValaTypeSymbol* _tmp268_ = NULL;
-                               ValaTypeSymbol* _tmp269_ = NULL;
-                               ValaDataType* _tmp270_ = NULL;
-                               ValaDataType* _tmp271_ = NULL;
-                               ValaBlock* _tmp272_ = NULL;
-                               ValaSourceReference* _tmp273_ = NULL;
-                               ValaSourceReference* _tmp274_ = NULL;
-                               ValaCCodeExpression* _tmp275_ = NULL;
-                               ValaCCodeExpression* _tmp276_ = NULL;
+                               ValaTypeSymbol* _tmp266_ = NULL;
+                               ValaTypeSymbol* _tmp267_ = NULL;
+                               ValaDataType* _tmp268_ = NULL;
+                               ValaDataType* _tmp269_ = NULL;
+                               ValaBlock* _tmp270_ = NULL;
+                               ValaSourceReference* _tmp271_ = NULL;
+                               ValaSourceReference* _tmp272_ = NULL;
+                               ValaCCodeExpression* _tmp273_ = NULL;
+                               ValaCCodeExpression* _tmp274_ = NULL;
+                               ValaCCodeFunctionCall* _tmp275_ = NULL;
+                               ValaCCodeFunctionCall* _tmp276_ = NULL;
                                ValaCCodeFunctionCall* _tmp277_ = NULL;
-                               ValaCCodeFunctionCall* _tmp278_ = NULL;
-                               ValaCCodeFunctionCall* _tmp279_ = NULL;
+                               ValaCCodeExpression* _tmp278_ = NULL;
+                               ValaCCodeExpression* _tmp279_ = NULL;
                                ValaCCodeExpression* _tmp280_ = NULL;
-                               ValaCCodeExpression* _tmp281_ = NULL;
-                               ValaCCodeExpression* _tmp282_ = NULL;
-                               gboolean _tmp283_ = FALSE;
+                               gboolean _tmp281_ = FALSE;
                                ValaCCodeExpression* instance = NULL;
-                               ValaCCodeExpression* _tmp287_ = NULL;
-                               ValaCCodeFunction* _tmp288_ = NULL;
-                               ValaCCodeFunction* _tmp289_ = NULL;
-                               gint _tmp290_ = 0;
-                               gchar* _tmp291_ = NULL;
-                               gchar* _tmp292_ = NULL;
-                               ValaCCodeExpression* _tmp293_ = NULL;
-                               ValaCCodeExpression* _tmp294_ = NULL;
-                               ValaCCodeMemberAccess* _tmp295_ = NULL;
-                               ValaCCodeMemberAccess* _tmp296_ = NULL;
-                               ValaCCodeExpression* _tmp297_ = NULL;
-                               _tmp268_ = vala_ccode_base_module_get_current_type_symbol (self);
+                               ValaCCodeExpression* _tmp285_ = NULL;
+                               ValaCCodeFunction* _tmp286_ = NULL;
+                               ValaCCodeFunction* _tmp287_ = NULL;
+                               gint _tmp288_ = 0;
+                               gchar* _tmp289_ = NULL;
+                               gchar* _tmp290_ = NULL;
+                               ValaCCodeExpression* _tmp291_ = NULL;
+                               ValaCCodeExpression* _tmp292_ = NULL;
+                               ValaCCodeMemberAccess* _tmp293_ = NULL;
+                               ValaCCodeMemberAccess* _tmp294_ = NULL;
+                               ValaCCodeExpression* _tmp295_ = NULL;
+                               _tmp266_ = vala_ccode_base_module_get_current_type_symbol (self);
+                               _tmp267_ = _tmp266_;
+                               _tmp268_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp267_);
                                _tmp269_ = _tmp268_;
-                               _tmp270_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp269_);
-                               _tmp271_ = _tmp270_;
-                               _tmp272_ = b;
-                               _tmp273_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp272_);
+                               _tmp270_ = b;
+                               _tmp271_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp270_);
+                               _tmp272_ = _tmp271_;
+                               _tmp273_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp269_, _tmp272_, FALSE);
                                _tmp274_ = _tmp273_;
-                               _tmp275_ = vala_ccode_base_module_get_dup_func_expression (self, _tmp271_, _tmp274_, FALSE);
+                               _tmp275_ = vala_ccode_function_call_new (_tmp274_);
                                _tmp276_ = _tmp275_;
-                               _tmp277_ = vala_ccode_function_call_new (_tmp276_);
-                               _tmp278_ = _tmp277_;
-                               _vala_ccode_node_unref0 (_tmp276_);
-                               _vala_code_node_unref0 (_tmp271_);
-                               ref_call = _tmp278_;
-                               _tmp279_ = ref_call;
-                               _tmp280_ = vala_ccode_base_module_get_result_cexpression (self, "self");
-                               _tmp281_ = _tmp280_;
-                               vala_ccode_function_call_add_argument (_tmp279_, _tmp281_);
-                               _vala_ccode_node_unref0 (_tmp281_);
-                               _tmp283_ = vala_ccode_base_module_is_in_destructor (self);
-                               if (_tmp283_) {
-                                       ValaCCodeIdentifier* _tmp284_ = NULL;
-                                       _tmp284_ = vala_ccode_identifier_new ("self");
-                                       _vala_ccode_node_unref0 (_tmp282_);
-                                       _tmp282_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp284_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
+                               _vala_ccode_node_unref0 (_tmp274_);
+                               _vala_code_node_unref0 (_tmp269_);
+                               ref_call = _tmp276_;
+                               _tmp277_ = ref_call;
+                               _tmp278_ = vala_ccode_base_module_get_result_cexpression (self, "self");
+                               _tmp279_ = _tmp278_;
+                               vala_ccode_function_call_add_argument (_tmp277_, _tmp279_);
+                               _vala_ccode_node_unref0 (_tmp279_);
+                               _tmp281_ = vala_ccode_base_module_is_in_destructor (self);
+                               if (_tmp281_) {
+                                       ValaCCodeIdentifier* _tmp282_ = NULL;
+                                       _tmp282_ = vala_ccode_identifier_new ("self");
+                                       _vala_ccode_node_unref0 (_tmp280_);
+                                       _tmp280_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp282_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
                                } else {
-                                       ValaCCodeFunctionCall* _tmp285_ = NULL;
-                                       ValaCCodeExpression* _tmp286_ = NULL;
-                                       _tmp285_ = ref_call;
-                                       _tmp286_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp285_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression));
-                                       _vala_ccode_node_unref0 (_tmp282_);
-                                       _tmp282_ = _tmp286_;
+                                       ValaCCodeFunctionCall* _tmp283_ = NULL;
+                                       ValaCCodeExpression* _tmp284_ = NULL;
+                                       _tmp283_ = ref_call;
+                                       _tmp284_ = _vala_ccode_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp283_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression));
+                                       _vala_ccode_node_unref0 (_tmp280_);
+                                       _tmp280_ = _tmp284_;
                                }
-                               _tmp287_ = _vala_ccode_node_ref0 (_tmp282_);
-                               instance = _tmp287_;
-                               _tmp288_ = vala_ccode_base_module_get_ccode (self);
-                               _tmp289_ = _tmp288_;
-                               _tmp290_ = block_id;
-                               _tmp291_ = g_strdup_printf ("_data%d_", _tmp290_);
+                               _tmp285_ = _vala_ccode_node_ref0 (_tmp280_);
+                               instance = _tmp285_;
+                               _tmp286_ = vala_ccode_base_module_get_ccode (self);
+                               _tmp287_ = _tmp286_;
+                               _tmp288_ = block_id;
+                               _tmp289_ = g_strdup_printf ("_data%d_", _tmp288_);
+                               _tmp290_ = _tmp289_;
+                               _tmp291_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp290_);
                                _tmp292_ = _tmp291_;
-                               _tmp293_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp292_);
+                               _tmp293_ = vala_ccode_member_access_new_pointer (_tmp292_, "self");
                                _tmp294_ = _tmp293_;
-                               _tmp295_ = vala_ccode_member_access_new_pointer (_tmp294_, "self");
-                               _tmp296_ = _tmp295_;
-                               _tmp297_ = instance;
-                               vala_ccode_function_add_assignment (_tmp289_, (ValaCCodeExpression*) _tmp296_, _tmp297_);
-                               _vala_ccode_node_unref0 (_tmp296_);
+                               _tmp295_ = instance;
+                               vala_ccode_function_add_assignment (_tmp287_, (ValaCCodeExpression*) _tmp294_, _tmp295_);
                                _vala_ccode_node_unref0 (_tmp294_);
-                               _g_free0 (_tmp292_);
+                               _vala_ccode_node_unref0 (_tmp292_);
+                               _g_free0 (_tmp290_);
                                _vala_ccode_node_unref0 (instance);
-                               _vala_ccode_node_unref0 (_tmp282_);
+                               _vala_ccode_node_unref0 (_tmp280_);
                                _vala_ccode_node_unref0 (ref_call);
                        }
-                       _tmp298_ = vala_ccode_base_module_get_current_method (self);
-                       _tmp299_ = _tmp298_;
-                       if (_tmp299_ != NULL) {
+                       _tmp296_ = vala_ccode_base_module_get_current_method (self);
+                       _tmp297_ = _tmp296_;
+                       if (_tmp297_ != NULL) {
                                gchar** suffices = NULL;
+                               gchar* _tmp298_ = NULL;
+                               gchar* _tmp299_ = NULL;
                                gchar* _tmp300_ = NULL;
-                               gchar* _tmp301_ = NULL;
-                               gchar* _tmp302_ = NULL;
-                               gchar** _tmp303_ = NULL;
+                               gchar** _tmp301_ = NULL;
                                gint suffices_length1 = 0;
                                gint _suffices_size_ = 0;
-                               _tmp300_ = g_strdup ("type");
-                               _tmp301_ = g_strdup ("dup_func");
-                               _tmp302_ = g_strdup ("destroy_func");
-                               _tmp303_ = g_new0 (gchar*, 3 + 1);
-                               _tmp303_[0] = _tmp300_;
-                               _tmp303_[1] = _tmp301_;
-                               _tmp303_[2] = _tmp302_;
-                               suffices = _tmp303_;
+                               _tmp298_ = g_strdup ("type");
+                               _tmp299_ = g_strdup ("dup_func");
+                               _tmp300_ = g_strdup ("destroy_func");
+                               _tmp301_ = g_new0 (gchar*, 3 + 1);
+                               _tmp301_[0] = _tmp298_;
+                               _tmp301_[1] = _tmp299_;
+                               _tmp301_[2] = _tmp300_;
+                               suffices = _tmp301_;
                                suffices_length1 = 3;
                                _suffices_size_ = suffices_length1;
                                {
                                        ValaList* _type_param_list = NULL;
-                                       ValaMethod* _tmp304_ = NULL;
-                                       ValaMethod* _tmp305_ = NULL;
-                                       ValaList* _tmp306_ = NULL;
+                                       ValaMethod* _tmp302_ = NULL;
+                                       ValaMethod* _tmp303_ = NULL;
+                                       ValaList* _tmp304_ = NULL;
                                        gint _type_param_size = 0;
-                                       ValaList* _tmp307_ = NULL;
-                                       gint _tmp308_ = 0;
-                                       gint _tmp309_ = 0;
+                                       ValaList* _tmp305_ = NULL;
+                                       gint _tmp306_ = 0;
+                                       gint _tmp307_ = 0;
                                        gint _type_param_index = 0;
-                                       _tmp304_ = vala_ccode_base_module_get_current_method (self);
-                                       _tmp305_ = _tmp304_;
-                                       _tmp306_ = vala_method_get_type_parameters (_tmp305_);
-                                       _type_param_list = _tmp306_;
-                                       _tmp307_ = _type_param_list;
-                                       _tmp308_ = vala_collection_get_size ((ValaCollection*) _tmp307_);
-                                       _tmp309_ = _tmp308_;
-                                       _type_param_size = _tmp309_;
+                                       _tmp302_ = vala_ccode_base_module_get_current_method (self);
+                                       _tmp303_ = _tmp302_;
+                                       _tmp304_ = vala_method_get_type_parameters (_tmp303_);
+                                       _type_param_list = _tmp304_;
+                                       _tmp305_ = _type_param_list;
+                                       _tmp306_ = vala_collection_get_size ((ValaCollection*) _tmp305_);
+                                       _tmp307_ = _tmp306_;
+                                       _type_param_size = _tmp307_;
                                        _type_param_index = -1;
                                        while (TRUE) {
+                                               gint _tmp308_ = 0;
+                                               gint _tmp309_ = 0;
                                                gint _tmp310_ = 0;
-                                               gint _tmp311_ = 0;
-                                               gint _tmp312_ = 0;
                                                ValaTypeParameter* type_param = NULL;
-                                               ValaList* _tmp313_ = NULL;
-                                               gint _tmp314_ = 0;
-                                               gpointer _tmp315_ = NULL;
-                                               gchar** _tmp316_ = NULL;
-                                               gint _tmp316__length1 = 0;
-                                               _tmp310_ = _type_param_index;
-                                               _type_param_index = _tmp310_ + 1;
-                                               _tmp311_ = _type_param_index;
-                                               _tmp312_ = _type_param_size;
-                                               if (!(_tmp311_ < _tmp312_)) {
+                                               ValaList* _tmp311_ = NULL;
+                                               gint _tmp312_ = 0;
+                                               gpointer _tmp313_ = NULL;
+                                               gchar** _tmp314_ = NULL;
+                                               gint _tmp314__length1 = 0;
+                                               _tmp308_ = _type_param_index;
+                                               _type_param_index = _tmp308_ + 1;
+                                               _tmp309_ = _type_param_index;
+                                               _tmp310_ = _type_param_size;
+                                               if (!(_tmp309_ < _tmp310_)) {
                                                        break;
                                                }
-                                               _tmp313_ = _type_param_list;
-                                               _tmp314_ = _type_param_index;
-                                               _tmp315_ = vala_list_get (_tmp313_, _tmp314_);
-                                               type_param = (ValaTypeParameter*) _tmp315_;
-                                               _tmp316_ = suffices;
-                                               _tmp316__length1 = suffices_length1;
+                                               _tmp311_ = _type_param_list;
+                                               _tmp312_ = _type_param_index;
+                                               _tmp313_ = vala_list_get (_tmp311_, _tmp312_);
+                                               type_param = (ValaTypeParameter*) _tmp313_;
+                                               _tmp314_ = suffices;
+                                               _tmp314__length1 = suffices_length1;
                                                {
                                                        gchar** suffix_collection = NULL;
                                                        gint suffix_collection_length1 = 0;
                                                        gint _suffix_collection_size_ = 0;
                                                        gint suffix_it = 0;
-                                                       suffix_collection = _tmp316_;
-                                                       suffix_collection_length1 = _tmp316__length1;
-                                                       for (suffix_it = 0; suffix_it < _tmp316__length1; suffix_it = suffix_it + 1) {
-                                                               gchar* _tmp317_ = NULL;
+                                                       suffix_collection = _tmp314_;
+                                                       suffix_collection_length1 = _tmp314__length1;
+                                                       for (suffix_it = 0; suffix_it < _tmp314__length1; suffix_it = suffix_it + 1) {
+                                                               gchar* _tmp315_ = NULL;
                                                                gchar* suffix = NULL;
-                                                               _tmp317_ = g_strdup (suffix_collection[suffix_it]);
-                                                               suffix = _tmp317_;
+                                                               _tmp315_ = g_strdup (suffix_collection[suffix_it]);
+                                                               suffix = _tmp315_;
                                                                {
                                                                        gchar* func_name = NULL;
-                                                                       ValaTypeParameter* _tmp318_ = NULL;
-                                                                       const gchar* _tmp319_ = NULL;
-                                                                       const gchar* _tmp320_ = NULL;
-                                                                       gchar* _tmp321_ = NULL;
+                                                                       ValaTypeParameter* _tmp316_ = NULL;
+                                                                       const gchar* _tmp317_ = NULL;
+                                                                       const gchar* _tmp318_ = NULL;
+                                                                       gchar* _tmp319_ = NULL;
+                                                                       gchar* _tmp320_ = NULL;
+                                                                       const gchar* _tmp321_ = NULL;
                                                                        gchar* _tmp322_ = NULL;
-                                                                       const gchar* _tmp323_ = NULL;
-                                                                       gchar* _tmp324_ = NULL;
-                                                                       gchar* _tmp325_ = NULL;
-                                                                       ValaCCodeFunction* _tmp326_ = NULL;
-                                                                       ValaCCodeFunction* _tmp327_ = NULL;
-                                                                       gint _tmp328_ = 0;
-                                                                       gchar* _tmp329_ = NULL;
-                                                                       gchar* _tmp330_ = NULL;
-                                                                       ValaCCodeExpression* _tmp331_ = NULL;
-                                                                       ValaCCodeExpression* _tmp332_ = NULL;
-                                                                       const gchar* _tmp333_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp334_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp335_ = NULL;
-                                                                       const gchar* _tmp336_ = NULL;
-                                                                       ValaCCodeExpression* _tmp337_ = NULL;
-                                                                       ValaCCodeExpression* _tmp338_ = NULL;
-                                                                       _tmp318_ = type_param;
-                                                                       _tmp319_ = vala_symbol_get_name ((ValaSymbol*) _tmp318_);
+                                                                       gchar* _tmp323_ = NULL;
+                                                                       ValaCCodeFunction* _tmp324_ = NULL;
+                                                                       ValaCCodeFunction* _tmp325_ = NULL;
+                                                                       gint _tmp326_ = 0;
+                                                                       gchar* _tmp327_ = NULL;
+                                                                       gchar* _tmp328_ = NULL;
+                                                                       ValaCCodeExpression* _tmp329_ = NULL;
+                                                                       ValaCCodeExpression* _tmp330_ = NULL;
+                                                                       const gchar* _tmp331_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp332_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp333_ = NULL;
+                                                                       const gchar* _tmp334_ = NULL;
+                                                                       ValaCCodeExpression* _tmp335_ = NULL;
+                                                                       ValaCCodeExpression* _tmp336_ = NULL;
+                                                                       _tmp316_ = type_param;
+                                                                       _tmp317_ = vala_symbol_get_name ((ValaSymbol*) _tmp316_);
+                                                                       _tmp318_ = _tmp317_;
+                                                                       _tmp319_ = g_utf8_strdown (_tmp318_, (gssize) (-1));
                                                                        _tmp320_ = _tmp319_;
-                                                                       _tmp321_ = g_utf8_strdown (_tmp320_, (gssize) (-1));
-                                                                       _tmp322_ = _tmp321_;
-                                                                       _tmp323_ = suffix;
-                                                                       _tmp324_ = g_strdup_printf ("%s_%s", _tmp322_, _tmp323_);
+                                                                       _tmp321_ = suffix;
+                                                                       _tmp322_ = g_strdup_printf ("%s_%s", _tmp320_, _tmp321_);
+                                                                       _tmp323_ = _tmp322_;
+                                                                       _g_free0 (_tmp320_);
+                                                                       func_name = _tmp323_;
+                                                                       _tmp324_ = vala_ccode_base_module_get_ccode (self);
                                                                        _tmp325_ = _tmp324_;
-                                                                       _g_free0 (_tmp322_);
-                                                                       func_name = _tmp325_;
-                                                                       _tmp326_ = vala_ccode_base_module_get_ccode (self);
-                                                                       _tmp327_ = _tmp326_;
-                                                                       _tmp328_ = block_id;
-                                                                       _tmp329_ = g_strdup_printf ("_data%d_", _tmp328_);
+                                                                       _tmp326_ = block_id;
+                                                                       _tmp327_ = g_strdup_printf ("_data%d_", _tmp326_);
+                                                                       _tmp328_ = _tmp327_;
+                                                                       _tmp329_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp328_);
                                                                        _tmp330_ = _tmp329_;
-                                                                       _tmp331_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp330_);
-                                                                       _tmp332_ = _tmp331_;
-                                                                       _tmp333_ = func_name;
-                                                                       _tmp334_ = vala_ccode_member_access_new_pointer (_tmp332_, _tmp333_);
-                                                                       _tmp335_ = _tmp334_;
-                                                                       _tmp336_ = func_name;
-                                                                       _tmp337_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp336_);
-                                                                       _tmp338_ = _tmp337_;
-                                                                       vala_ccode_function_add_assignment (_tmp327_, (ValaCCodeExpression*) _tmp335_, _tmp338_);
-                                                                       _vala_ccode_node_unref0 (_tmp338_);
-                                                                       _vala_ccode_node_unref0 (_tmp335_);
-                                                                       _vala_ccode_node_unref0 (_tmp332_);
-                                                                       _g_free0 (_tmp330_);
+                                                                       _tmp331_ = func_name;
+                                                                       _tmp332_ = vala_ccode_member_access_new_pointer (_tmp330_, _tmp331_);
+                                                                       _tmp333_ = _tmp332_;
+                                                                       _tmp334_ = func_name;
+                                                                       _tmp335_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp334_);
+                                                                       _tmp336_ = _tmp335_;
+                                                                       vala_ccode_function_add_assignment (_tmp325_, (ValaCCodeExpression*) _tmp333_, _tmp336_);
+                                                                       _vala_ccode_node_unref0 (_tmp336_);
+                                                                       _vala_ccode_node_unref0 (_tmp333_);
+                                                                       _vala_ccode_node_unref0 (_tmp330_);
+                                                                       _g_free0 (_tmp328_);
                                                                        _g_free0 (func_name);
                                                                        _g_free0 (suffix);
                                                                }
@@ -11104,692 +11352,692 @@ static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, Vala
                                suffices = (_vala_array_free (suffices, suffices_length1, (GDestroyNotify) g_free), NULL);
                        }
                }
-               _tmp339_ = b;
-               _tmp340_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp339_);
-               _tmp341_ = _tmp340_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp341_, VALA_TYPE_METHOD)) {
+               _tmp337_ = b;
+               _tmp338_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp337_);
+               _tmp339_ = _tmp338_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp339_, VALA_TYPE_METHOD)) {
                        ValaMethod* m = NULL;
-                       ValaBlock* _tmp342_ = NULL;
-                       ValaSymbol* _tmp343_ = NULL;
-                       ValaSymbol* _tmp344_ = NULL;
-                       ValaMethod* _tmp345_ = NULL;
-                       ValaMethod* _tmp363_ = NULL;
-                       gboolean _tmp364_ = FALSE;
-                       gboolean _tmp365_ = FALSE;
-                       _tmp342_ = b;
-                       _tmp343_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp342_);
-                       _tmp344_ = _tmp343_;
-                       _tmp345_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp344_, VALA_TYPE_METHOD, ValaMethod));
-                       m = _tmp345_;
+                       ValaBlock* _tmp340_ = NULL;
+                       ValaSymbol* _tmp341_ = NULL;
+                       ValaSymbol* _tmp342_ = NULL;
+                       ValaMethod* _tmp343_ = NULL;
+                       ValaMethod* _tmp361_ = NULL;
+                       gboolean _tmp362_ = FALSE;
+                       gboolean _tmp363_ = FALSE;
+                       _tmp340_ = b;
+                       _tmp341_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp340_);
+                       _tmp342_ = _tmp341_;
+                       _tmp343_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp342_, VALA_TYPE_METHOD, ValaMethod));
+                       m = _tmp343_;
                        {
                                ValaList* _param_list = NULL;
-                               ValaMethod* _tmp346_ = NULL;
-                               ValaList* _tmp347_ = NULL;
+                               ValaMethod* _tmp344_ = NULL;
+                               ValaList* _tmp345_ = NULL;
                                gint _param_size = 0;
-                               ValaList* _tmp348_ = NULL;
-                               gint _tmp349_ = 0;
-                               gint _tmp350_ = 0;
+                               ValaList* _tmp346_ = NULL;
+                               gint _tmp347_ = 0;
+                               gint _tmp348_ = 0;
                                gint _param_index = 0;
-                               _tmp346_ = m;
-                               _tmp347_ = vala_method_get_parameters (_tmp346_);
-                               _param_list = _tmp347_;
-                               _tmp348_ = _param_list;
-                               _tmp349_ = vala_collection_get_size ((ValaCollection*) _tmp348_);
-                               _tmp350_ = _tmp349_;
-                               _param_size = _tmp350_;
+                               _tmp344_ = m;
+                               _tmp345_ = vala_method_get_parameters (_tmp344_);
+                               _param_list = _tmp345_;
+                               _tmp346_ = _param_list;
+                               _tmp347_ = vala_collection_get_size ((ValaCollection*) _tmp346_);
+                               _tmp348_ = _tmp347_;
+                               _param_size = _tmp348_;
                                _param_index = -1;
                                while (TRUE) {
+                                       gint _tmp349_ = 0;
+                                       gint _tmp350_ = 0;
                                        gint _tmp351_ = 0;
-                                       gint _tmp352_ = 0;
-                                       gint _tmp353_ = 0;
                                        ValaParameter* param = NULL;
-                                       ValaList* _tmp354_ = NULL;
-                                       gint _tmp355_ = 0;
-                                       gpointer _tmp356_ = NULL;
-                                       ValaParameter* _tmp357_ = NULL;
-                                       gboolean _tmp358_ = FALSE;
-                                       gboolean _tmp359_ = FALSE;
-                                       _tmp351_ = _param_index;
-                                       _param_index = _tmp351_ + 1;
-                                       _tmp352_ = _param_index;
-                                       _tmp353_ = _param_size;
-                                       if (!(_tmp352_ < _tmp353_)) {
+                                       ValaList* _tmp352_ = NULL;
+                                       gint _tmp353_ = 0;
+                                       gpointer _tmp354_ = NULL;
+                                       ValaParameter* _tmp355_ = NULL;
+                                       gboolean _tmp356_ = FALSE;
+                                       gboolean _tmp357_ = FALSE;
+                                       _tmp349_ = _param_index;
+                                       _param_index = _tmp349_ + 1;
+                                       _tmp350_ = _param_index;
+                                       _tmp351_ = _param_size;
+                                       if (!(_tmp350_ < _tmp351_)) {
                                                break;
                                        }
-                                       _tmp354_ = _param_list;
-                                       _tmp355_ = _param_index;
-                                       _tmp356_ = vala_list_get (_tmp354_, _tmp355_);
-                                       param = (ValaParameter*) _tmp356_;
-                                       _tmp357_ = param;
-                                       _tmp358_ = vala_parameter_get_captured (_tmp357_);
-                                       _tmp359_ = _tmp358_;
-                                       if (_tmp359_) {
-                                               ValaParameter* _tmp360_ = NULL;
-                                               ValaCCodeStruct* _tmp361_ = NULL;
-                                               gint _tmp362_ = 0;
-                                               _tmp360_ = param;
-                                               _tmp361_ = data;
-                                               _tmp362_ = block_id;
-                                               vala_ccode_base_module_capture_parameter (self, _tmp360_, _tmp361_, _tmp362_);
+                                       _tmp352_ = _param_list;
+                                       _tmp353_ = _param_index;
+                                       _tmp354_ = vala_list_get (_tmp352_, _tmp353_);
+                                       param = (ValaParameter*) _tmp354_;
+                                       _tmp355_ = param;
+                                       _tmp356_ = vala_parameter_get_captured (_tmp355_);
+                                       _tmp357_ = _tmp356_;
+                                       if (_tmp357_) {
+                                               ValaParameter* _tmp358_ = NULL;
+                                               ValaCCodeStruct* _tmp359_ = NULL;
+                                               gint _tmp360_ = 0;
+                                               _tmp358_ = param;
+                                               _tmp359_ = data;
+                                               _tmp360_ = block_id;
+                                               vala_ccode_base_module_capture_parameter (self, _tmp358_, _tmp359_, _tmp360_);
                                        }
                                        _vala_code_node_unref0 (param);
                                }
                                _vala_iterable_unref0 (_param_list);
                        }
-                       _tmp363_ = m;
-                       _tmp364_ = vala_method_get_coroutine (_tmp363_);
-                       _tmp365_ = _tmp364_;
-                       if (_tmp365_) {
-                               ValaCCodeStruct* _tmp366_ = NULL;
-                               ValaCCodeFunction* _tmp367_ = NULL;
-                               ValaCCodeFunction* _tmp368_ = NULL;
-                               gint _tmp369_ = 0;
-                               gchar* _tmp370_ = NULL;
-                               gchar* _tmp371_ = NULL;
-                               ValaCCodeExpression* _tmp372_ = NULL;
-                               ValaCCodeExpression* _tmp373_ = NULL;
-                               ValaCCodeMemberAccess* _tmp374_ = NULL;
-                               ValaCCodeMemberAccess* _tmp375_ = NULL;
-                               ValaCCodeIdentifier* _tmp376_ = NULL;
-                               ValaCCodeIdentifier* _tmp377_ = NULL;
-                               _tmp366_ = data;
-                               vala_ccode_struct_add_field (_tmp366_, "gpointer", "_async_data_", NULL);
-                               _tmp367_ = vala_ccode_base_module_get_ccode (self);
-                               _tmp368_ = _tmp367_;
-                               _tmp369_ = block_id;
-                               _tmp370_ = g_strdup_printf ("_data%d_", _tmp369_);
+                       _tmp361_ = m;
+                       _tmp362_ = vala_method_get_coroutine (_tmp361_);
+                       _tmp363_ = _tmp362_;
+                       if (_tmp363_) {
+                               ValaCCodeStruct* _tmp364_ = NULL;
+                               ValaCCodeFunction* _tmp365_ = NULL;
+                               ValaCCodeFunction* _tmp366_ = NULL;
+                               gint _tmp367_ = 0;
+                               gchar* _tmp368_ = NULL;
+                               gchar* _tmp369_ = NULL;
+                               ValaCCodeExpression* _tmp370_ = NULL;
+                               ValaCCodeExpression* _tmp371_ = NULL;
+                               ValaCCodeMemberAccess* _tmp372_ = NULL;
+                               ValaCCodeMemberAccess* _tmp373_ = NULL;
+                               ValaCCodeIdentifier* _tmp374_ = NULL;
+                               ValaCCodeIdentifier* _tmp375_ = NULL;
+                               _tmp364_ = data;
+                               vala_ccode_struct_add_field (_tmp364_, "gpointer", "_async_data_", NULL);
+                               _tmp365_ = vala_ccode_base_module_get_ccode (self);
+                               _tmp366_ = _tmp365_;
+                               _tmp367_ = block_id;
+                               _tmp368_ = g_strdup_printf ("_data%d_", _tmp367_);
+                               _tmp369_ = _tmp368_;
+                               _tmp370_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp369_);
                                _tmp371_ = _tmp370_;
-                               _tmp372_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp371_);
+                               _tmp372_ = vala_ccode_member_access_new_pointer (_tmp371_, "_async_data_");
                                _tmp373_ = _tmp372_;
-                               _tmp374_ = vala_ccode_member_access_new_pointer (_tmp373_, "_async_data_");
+                               _tmp374_ = vala_ccode_identifier_new ("_data_");
                                _tmp375_ = _tmp374_;
-                               _tmp376_ = vala_ccode_identifier_new ("_data_");
-                               _tmp377_ = _tmp376_;
-                               vala_ccode_function_add_assignment (_tmp368_, (ValaCCodeExpression*) _tmp375_, (ValaCCodeExpression*) _tmp377_);
-                               _vala_ccode_node_unref0 (_tmp377_);
+                               vala_ccode_function_add_assignment (_tmp366_, (ValaCCodeExpression*) _tmp373_, (ValaCCodeExpression*) _tmp375_);
                                _vala_ccode_node_unref0 (_tmp375_);
                                _vala_ccode_node_unref0 (_tmp373_);
-                               _g_free0 (_tmp371_);
+                               _vala_ccode_node_unref0 (_tmp371_);
+                               _g_free0 (_tmp369_);
                        }
                        _vala_code_node_unref0 (m);
                } else {
-                       ValaBlock* _tmp378_ = NULL;
-                       ValaSymbol* _tmp379_ = NULL;
-                       ValaSymbol* _tmp380_ = NULL;
-                       _tmp378_ = b;
-                       _tmp379_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp378_);
-                       _tmp380_ = _tmp379_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp380_, VALA_TYPE_PROPERTY_ACCESSOR)) {
+                       ValaBlock* _tmp376_ = NULL;
+                       ValaSymbol* _tmp377_ = NULL;
+                       ValaSymbol* _tmp378_ = NULL;
+                       _tmp376_ = b;
+                       _tmp377_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp376_);
+                       _tmp378_ = _tmp377_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp378_, VALA_TYPE_PROPERTY_ACCESSOR)) {
                                ValaPropertyAccessor* acc = NULL;
-                               ValaBlock* _tmp381_ = NULL;
-                               ValaSymbol* _tmp382_ = NULL;
-                               ValaSymbol* _tmp383_ = NULL;
+                               ValaBlock* _tmp379_ = NULL;
+                               ValaSymbol* _tmp380_ = NULL;
+                               ValaSymbol* _tmp381_ = NULL;
+                               ValaPropertyAccessor* _tmp382_ = NULL;
+                               gboolean _tmp383_ = FALSE;
                                ValaPropertyAccessor* _tmp384_ = NULL;
                                gboolean _tmp385_ = FALSE;
-                               ValaPropertyAccessor* _tmp386_ = NULL;
-                               gboolean _tmp387_ = FALSE;
-                               gboolean _tmp388_ = FALSE;
-                               _tmp381_ = b;
-                               _tmp382_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp381_);
-                               _tmp383_ = _tmp382_;
-                               _tmp384_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp383_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
-                               acc = _tmp384_;
-                               _tmp386_ = acc;
-                               _tmp387_ = vala_property_accessor_get_readable (_tmp386_);
-                               _tmp388_ = _tmp387_;
-                               if (!_tmp388_) {
-                                       ValaPropertyAccessor* _tmp389_ = NULL;
-                                       ValaParameter* _tmp390_ = NULL;
-                                       ValaParameter* _tmp391_ = NULL;
-                                       gboolean _tmp392_ = FALSE;
-                                       gboolean _tmp393_ = FALSE;
-                                       _tmp389_ = acc;
-                                       _tmp390_ = vala_property_accessor_get_value_parameter (_tmp389_);
+                               gboolean _tmp386_ = FALSE;
+                               _tmp379_ = b;
+                               _tmp380_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp379_);
+                               _tmp381_ = _tmp380_;
+                               _tmp382_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp381_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
+                               acc = _tmp382_;
+                               _tmp384_ = acc;
+                               _tmp385_ = vala_property_accessor_get_readable (_tmp384_);
+                               _tmp386_ = _tmp385_;
+                               if (!_tmp386_) {
+                                       ValaPropertyAccessor* _tmp387_ = NULL;
+                                       ValaParameter* _tmp388_ = NULL;
+                                       ValaParameter* _tmp389_ = NULL;
+                                       gboolean _tmp390_ = FALSE;
+                                       gboolean _tmp391_ = FALSE;
+                                       _tmp387_ = acc;
+                                       _tmp388_ = vala_property_accessor_get_value_parameter (_tmp387_);
+                                       _tmp389_ = _tmp388_;
+                                       _tmp390_ = vala_parameter_get_captured (_tmp389_);
                                        _tmp391_ = _tmp390_;
-                                       _tmp392_ = vala_parameter_get_captured (_tmp391_);
-                                       _tmp393_ = _tmp392_;
-                                       _tmp385_ = _tmp393_;
+                                       _tmp383_ = _tmp391_;
                                } else {
-                                       _tmp385_ = FALSE;
+                                       _tmp383_ = FALSE;
                                }
-                               if (_tmp385_) {
-                                       ValaPropertyAccessor* _tmp394_ = NULL;
-                                       ValaParameter* _tmp395_ = NULL;
-                                       ValaParameter* _tmp396_ = NULL;
-                                       ValaCCodeStruct* _tmp397_ = NULL;
-                                       gint _tmp398_ = 0;
-                                       _tmp394_ = acc;
-                                       _tmp395_ = vala_property_accessor_get_value_parameter (_tmp394_);
-                                       _tmp396_ = _tmp395_;
-                                       _tmp397_ = data;
-                                       _tmp398_ = block_id;
-                                       vala_ccode_base_module_capture_parameter (self, _tmp396_, _tmp397_, _tmp398_);
+                               if (_tmp383_) {
+                                       ValaPropertyAccessor* _tmp392_ = NULL;
+                                       ValaParameter* _tmp393_ = NULL;
+                                       ValaParameter* _tmp394_ = NULL;
+                                       ValaCCodeStruct* _tmp395_ = NULL;
+                                       gint _tmp396_ = 0;
+                                       _tmp392_ = acc;
+                                       _tmp393_ = vala_property_accessor_get_value_parameter (_tmp392_);
+                                       _tmp394_ = _tmp393_;
+                                       _tmp395_ = data;
+                                       _tmp396_ = block_id;
+                                       vala_ccode_base_module_capture_parameter (self, _tmp394_, _tmp395_, _tmp396_);
                                }
                                _vala_code_node_unref0 (acc);
                        } else {
-                               ValaBlock* _tmp399_ = NULL;
-                               ValaSymbol* _tmp400_ = NULL;
-                               ValaSymbol* _tmp401_ = NULL;
-                               _tmp399_ = b;
-                               _tmp400_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp399_);
-                               _tmp401_ = _tmp400_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp401_, VALA_TYPE_FOREACH_STATEMENT)) {
+                               ValaBlock* _tmp397_ = NULL;
+                               ValaSymbol* _tmp398_ = NULL;
+                               ValaSymbol* _tmp399_ = NULL;
+                               _tmp397_ = b;
+                               _tmp398_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp397_);
+                               _tmp399_ = _tmp398_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp399_, VALA_TYPE_FOREACH_STATEMENT)) {
                                        ValaForeachStatement* stmt = NULL;
-                                       ValaBlock* _tmp402_ = NULL;
-                                       ValaSymbol* _tmp403_ = NULL;
-                                       ValaSymbol* _tmp404_ = NULL;
+                                       ValaBlock* _tmp400_ = NULL;
+                                       ValaSymbol* _tmp401_ = NULL;
+                                       ValaSymbol* _tmp402_ = NULL;
+                                       ValaForeachStatement* _tmp403_ = NULL;
+                                       gboolean _tmp404_ = FALSE;
                                        ValaForeachStatement* _tmp405_ = NULL;
                                        gboolean _tmp406_ = FALSE;
-                                       ValaForeachStatement* _tmp407_ = NULL;
-                                       gboolean _tmp408_ = FALSE;
-                                       gboolean _tmp409_ = FALSE;
-                                       _tmp402_ = b;
-                                       _tmp403_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp402_);
-                                       _tmp404_ = _tmp403_;
-                                       _tmp405_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp404_, VALA_TYPE_FOREACH_STATEMENT, ValaForeachStatement));
-                                       stmt = _tmp405_;
-                                       _tmp407_ = stmt;
-                                       _tmp408_ = vala_foreach_statement_get_use_iterator (_tmp407_);
-                                       _tmp409_ = _tmp408_;
-                                       if (!_tmp409_) {
-                                               ValaForeachStatement* _tmp410_ = NULL;
-                                               ValaLocalVariable* _tmp411_ = NULL;
-                                               ValaLocalVariable* _tmp412_ = NULL;
-                                               gboolean _tmp413_ = FALSE;
-                                               gboolean _tmp414_ = FALSE;
-                                               _tmp410_ = stmt;
-                                               _tmp411_ = vala_foreach_statement_get_element_variable (_tmp410_);
+                                       gboolean _tmp407_ = FALSE;
+                                       _tmp400_ = b;
+                                       _tmp401_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp400_);
+                                       _tmp402_ = _tmp401_;
+                                       _tmp403_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp402_, VALA_TYPE_FOREACH_STATEMENT, ValaForeachStatement));
+                                       stmt = _tmp403_;
+                                       _tmp405_ = stmt;
+                                       _tmp406_ = vala_foreach_statement_get_use_iterator (_tmp405_);
+                                       _tmp407_ = _tmp406_;
+                                       if (!_tmp407_) {
+                                               ValaForeachStatement* _tmp408_ = NULL;
+                                               ValaLocalVariable* _tmp409_ = NULL;
+                                               ValaLocalVariable* _tmp410_ = NULL;
+                                               gboolean _tmp411_ = FALSE;
+                                               gboolean _tmp412_ = FALSE;
+                                               _tmp408_ = stmt;
+                                               _tmp409_ = vala_foreach_statement_get_element_variable (_tmp408_);
+                                               _tmp410_ = _tmp409_;
+                                               _tmp411_ = vala_local_variable_get_captured (_tmp410_);
                                                _tmp412_ = _tmp411_;
-                                               _tmp413_ = vala_local_variable_get_captured (_tmp412_);
-                                               _tmp414_ = _tmp413_;
-                                               _tmp406_ = _tmp414_;
+                                               _tmp404_ = _tmp412_;
                                        } else {
-                                               _tmp406_ = FALSE;
+                                               _tmp404_ = FALSE;
                                        }
-                                       if (_tmp406_) {
-                                               ValaCCodeFunction* _tmp415_ = NULL;
-                                               ValaCCodeFunction* _tmp416_ = NULL;
-                                               gint _tmp417_ = 0;
-                                               gchar* _tmp418_ = NULL;
-                                               gchar* _tmp419_ = NULL;
-                                               ValaCCodeExpression* _tmp420_ = NULL;
-                                               ValaCCodeExpression* _tmp421_ = NULL;
-                                               ValaForeachStatement* _tmp422_ = NULL;
-                                               ValaLocalVariable* _tmp423_ = NULL;
-                                               ValaLocalVariable* _tmp424_ = NULL;
-                                               gchar* _tmp425_ = NULL;
-                                               gchar* _tmp426_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp427_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp428_ = NULL;
-                                               ValaForeachStatement* _tmp429_ = NULL;
-                                               ValaLocalVariable* _tmp430_ = NULL;
-                                               ValaLocalVariable* _tmp431_ = NULL;
-                                               gchar* _tmp432_ = NULL;
-                                               gchar* _tmp433_ = NULL;
-                                               ValaCCodeExpression* _tmp434_ = NULL;
-                                               ValaCCodeExpression* _tmp435_ = NULL;
-                                               _tmp415_ = vala_ccode_base_module_get_ccode (self);
-                                               _tmp416_ = _tmp415_;
-                                               _tmp417_ = block_id;
-                                               _tmp418_ = g_strdup_printf ("_data%d_", _tmp417_);
+                                       if (_tmp404_) {
+                                               ValaCCodeFunction* _tmp413_ = NULL;
+                                               ValaCCodeFunction* _tmp414_ = NULL;
+                                               gint _tmp415_ = 0;
+                                               gchar* _tmp416_ = NULL;
+                                               gchar* _tmp417_ = NULL;
+                                               ValaCCodeExpression* _tmp418_ = NULL;
+                                               ValaCCodeExpression* _tmp419_ = NULL;
+                                               ValaForeachStatement* _tmp420_ = NULL;
+                                               ValaLocalVariable* _tmp421_ = NULL;
+                                               ValaLocalVariable* _tmp422_ = NULL;
+                                               gchar* _tmp423_ = NULL;
+                                               gchar* _tmp424_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp425_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp426_ = NULL;
+                                               ValaForeachStatement* _tmp427_ = NULL;
+                                               ValaLocalVariable* _tmp428_ = NULL;
+                                               ValaLocalVariable* _tmp429_ = NULL;
+                                               gchar* _tmp430_ = NULL;
+                                               gchar* _tmp431_ = NULL;
+                                               ValaCCodeExpression* _tmp432_ = NULL;
+                                               ValaCCodeExpression* _tmp433_ = NULL;
+                                               _tmp413_ = vala_ccode_base_module_get_ccode (self);
+                                               _tmp414_ = _tmp413_;
+                                               _tmp415_ = block_id;
+                                               _tmp416_ = g_strdup_printf ("_data%d_", _tmp415_);
+                                               _tmp417_ = _tmp416_;
+                                               _tmp418_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp417_);
                                                _tmp419_ = _tmp418_;
-                                               _tmp420_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp419_);
-                                               _tmp421_ = _tmp420_;
-                                               _tmp422_ = stmt;
-                                               _tmp423_ = vala_foreach_statement_get_element_variable (_tmp422_);
+                                               _tmp420_ = stmt;
+                                               _tmp421_ = vala_foreach_statement_get_element_variable (_tmp420_);
+                                               _tmp422_ = _tmp421_;
+                                               _tmp423_ = vala_ccode_base_module_get_local_cname (self, _tmp422_);
                                                _tmp424_ = _tmp423_;
-                                               _tmp425_ = vala_ccode_base_module_get_local_cname (self, _tmp424_);
+                                               _tmp425_ = vala_ccode_member_access_new_pointer (_tmp419_, _tmp424_);
                                                _tmp426_ = _tmp425_;
-                                               _tmp427_ = vala_ccode_member_access_new_pointer (_tmp421_, _tmp426_);
-                                               _tmp428_ = _tmp427_;
-                                               _tmp429_ = stmt;
-                                               _tmp430_ = vala_foreach_statement_get_element_variable (_tmp429_);
+                                               _tmp427_ = stmt;
+                                               _tmp428_ = vala_foreach_statement_get_element_variable (_tmp427_);
+                                               _tmp429_ = _tmp428_;
+                                               _tmp430_ = vala_ccode_base_module_get_local_cname (self, _tmp429_);
                                                _tmp431_ = _tmp430_;
-                                               _tmp432_ = vala_ccode_base_module_get_local_cname (self, _tmp431_);
+                                               _tmp432_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp431_);
                                                _tmp433_ = _tmp432_;
-                                               _tmp434_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp433_);
-                                               _tmp435_ = _tmp434_;
-                                               vala_ccode_function_add_assignment (_tmp416_, (ValaCCodeExpression*) _tmp428_, _tmp435_);
-                                               _vala_ccode_node_unref0 (_tmp435_);
-                                               _g_free0 (_tmp433_);
-                                               _vala_ccode_node_unref0 (_tmp428_);
-                                               _g_free0 (_tmp426_);
-                                               _vala_ccode_node_unref0 (_tmp421_);
-                                               _g_free0 (_tmp419_);
+                                               vala_ccode_function_add_assignment (_tmp414_, (ValaCCodeExpression*) _tmp426_, _tmp433_);
+                                               _vala_ccode_node_unref0 (_tmp433_);
+                                               _g_free0 (_tmp431_);
+                                               _vala_ccode_node_unref0 (_tmp426_);
+                                               _g_free0 (_tmp424_);
+                                               _vala_ccode_node_unref0 (_tmp419_);
+                                               _g_free0 (_tmp417_);
                                        }
                                        _vala_code_node_unref0 (stmt);
                                }
                        }
                }
-               _tmp436_ = struct_name;
-               _tmp437_ = g_strconcat ("struct _", _tmp436_, NULL);
-               _tmp438_ = _tmp437_;
-               _tmp439_ = struct_name;
-               _tmp440_ = vala_ccode_variable_declarator_new (_tmp439_, NULL, NULL);
+               _tmp434_ = struct_name;
+               _tmp435_ = g_strconcat ("struct _", _tmp434_, NULL);
+               _tmp436_ = _tmp435_;
+               _tmp437_ = struct_name;
+               _tmp438_ = vala_ccode_variable_declarator_new (_tmp437_, NULL, NULL);
+               _tmp439_ = _tmp438_;
+               _tmp440_ = vala_ccode_type_definition_new (_tmp436_, (ValaCCodeDeclarator*) _tmp439_);
                _tmp441_ = _tmp440_;
-               _tmp442_ = vala_ccode_type_definition_new (_tmp438_, (ValaCCodeDeclarator*) _tmp441_);
-               _tmp443_ = _tmp442_;
-               _vala_ccode_node_unref0 (_tmp441_);
-               _g_free0 (_tmp438_);
-               _typedef_ = _tmp443_;
+               _vala_ccode_node_unref0 (_tmp439_);
+               _g_free0 (_tmp436_);
+               _typedef_ = _tmp441_;
+               _tmp442_ = self->cfile;
+               _tmp443_ = _typedef_;
+               vala_ccode_file_add_type_declaration (_tmp442_, (ValaCCodeNode*) _tmp443_);
                _tmp444_ = self->cfile;
-               _tmp445_ = _typedef_;
-               vala_ccode_file_add_type_declaration (_tmp444_, (ValaCCodeNode*) _tmp445_);
-               _tmp446_ = self->cfile;
-               _tmp447_ = data;
-               vala_ccode_file_add_type_definition (_tmp446_, (ValaCCodeNode*) _tmp447_);
-               _tmp448_ = block_id;
-               _tmp449_ = g_strdup_printf ("block%d_data_ref", _tmp448_);
-               _tmp450_ = _tmp449_;
-               _tmp451_ = struct_name;
-               _tmp452_ = g_strconcat (_tmp451_, "*", NULL);
+               _tmp445_ = data;
+               vala_ccode_file_add_type_definition (_tmp444_, (ValaCCodeNode*) _tmp445_);
+               _tmp446_ = block_id;
+               _tmp447_ = g_strdup_printf ("block%d_data_ref", _tmp446_);
+               _tmp448_ = _tmp447_;
+               _tmp449_ = struct_name;
+               _tmp450_ = g_strconcat (_tmp449_, "*", NULL);
+               _tmp451_ = _tmp450_;
+               _tmp452_ = vala_ccode_function_new (_tmp448_, _tmp451_);
                _tmp453_ = _tmp452_;
-               _tmp454_ = vala_ccode_function_new (_tmp450_, _tmp453_);
-               _tmp455_ = _tmp454_;
-               _g_free0 (_tmp453_);
-               _g_free0 (_tmp450_);
-               ref_fun = _tmp455_;
-               _tmp456_ = ref_fun;
-               _tmp457_ = block_id;
-               _tmp458_ = g_strdup_printf ("_data%d_", _tmp457_);
-               _tmp459_ = _tmp458_;
-               _tmp460_ = struct_name;
-               _tmp461_ = g_strconcat (_tmp460_, "*", NULL);
+               _g_free0 (_tmp451_);
+               _g_free0 (_tmp448_);
+               ref_fun = _tmp453_;
+               _tmp454_ = ref_fun;
+               _tmp455_ = block_id;
+               _tmp456_ = g_strdup_printf ("_data%d_", _tmp455_);
+               _tmp457_ = _tmp456_;
+               _tmp458_ = struct_name;
+               _tmp459_ = g_strconcat (_tmp458_, "*", NULL);
+               _tmp460_ = _tmp459_;
+               _tmp461_ = vala_ccode_parameter_new (_tmp457_, _tmp460_);
                _tmp462_ = _tmp461_;
-               _tmp463_ = vala_ccode_parameter_new (_tmp459_, _tmp462_);
-               _tmp464_ = _tmp463_;
-               vala_ccode_function_add_parameter (_tmp456_, _tmp464_);
-               _vala_ccode_node_unref0 (_tmp464_);
-               _g_free0 (_tmp462_);
-               _g_free0 (_tmp459_);
-               _tmp465_ = ref_fun;
-               vala_ccode_function_set_modifiers (_tmp465_, VALA_CCODE_MODIFIERS_STATIC);
-               _tmp466_ = ref_fun;
-               vala_ccode_base_module_push_function (self, _tmp466_);
-               _tmp467_ = vala_ccode_identifier_new ("g_atomic_int_inc");
+               vala_ccode_function_add_parameter (_tmp454_, _tmp462_);
+               _vala_ccode_node_unref0 (_tmp462_);
+               _g_free0 (_tmp460_);
+               _g_free0 (_tmp457_);
+               _tmp463_ = ref_fun;
+               vala_ccode_function_set_modifiers (_tmp463_, VALA_CCODE_MODIFIERS_STATIC);
+               _tmp464_ = ref_fun;
+               vala_ccode_base_module_push_function (self, _tmp464_);
+               _tmp465_ = vala_ccode_identifier_new ("g_atomic_int_inc");
+               _tmp466_ = _tmp465_;
+               _tmp467_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp466_);
                _tmp468_ = _tmp467_;
-               _tmp469_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp468_);
-               _tmp470_ = _tmp469_;
-               _vala_ccode_node_unref0 (_tmp468_);
-               ccall = _tmp470_;
-               _tmp471_ = ccall;
-               _tmp472_ = block_id;
-               _tmp473_ = g_strdup_printf ("_data%d_", _tmp472_);
+               _vala_ccode_node_unref0 (_tmp466_);
+               ccall = _tmp468_;
+               _tmp469_ = ccall;
+               _tmp470_ = block_id;
+               _tmp471_ = g_strdup_printf ("_data%d_", _tmp470_);
+               _tmp472_ = _tmp471_;
+               _tmp473_ = vala_ccode_identifier_new (_tmp472_);
                _tmp474_ = _tmp473_;
-               _tmp475_ = vala_ccode_identifier_new (_tmp474_);
+               _tmp475_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp474_, "_ref_count_");
                _tmp476_ = _tmp475_;
-               _tmp477_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp476_, "_ref_count_");
+               _tmp477_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp476_);
                _tmp478_ = _tmp477_;
-               _tmp479_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp478_);
-               _tmp480_ = _tmp479_;
-               vala_ccode_function_call_add_argument (_tmp471_, (ValaCCodeExpression*) _tmp480_);
-               _vala_ccode_node_unref0 (_tmp480_);
+               vala_ccode_function_call_add_argument (_tmp469_, (ValaCCodeExpression*) _tmp478_);
                _vala_ccode_node_unref0 (_tmp478_);
                _vala_ccode_node_unref0 (_tmp476_);
-               _g_free0 (_tmp474_);
-               _tmp481_ = vala_ccode_base_module_get_ccode (self);
-               _tmp482_ = _tmp481_;
-               _tmp483_ = ccall;
-               vala_ccode_function_add_expression (_tmp482_, (ValaCCodeExpression*) _tmp483_);
-               _tmp484_ = vala_ccode_base_module_get_ccode (self);
-               _tmp485_ = _tmp484_;
-               _tmp486_ = block_id;
-               _tmp487_ = g_strdup_printf ("_data%d_", _tmp486_);
+               _vala_ccode_node_unref0 (_tmp474_);
+               _g_free0 (_tmp472_);
+               _tmp479_ = vala_ccode_base_module_get_ccode (self);
+               _tmp480_ = _tmp479_;
+               _tmp481_ = ccall;
+               vala_ccode_function_add_expression (_tmp480_, (ValaCCodeExpression*) _tmp481_);
+               _tmp482_ = vala_ccode_base_module_get_ccode (self);
+               _tmp483_ = _tmp482_;
+               _tmp484_ = block_id;
+               _tmp485_ = g_strdup_printf ("_data%d_", _tmp484_);
+               _tmp486_ = _tmp485_;
+               _tmp487_ = vala_ccode_identifier_new (_tmp486_);
                _tmp488_ = _tmp487_;
-               _tmp489_ = vala_ccode_identifier_new (_tmp488_);
-               _tmp490_ = _tmp489_;
-               vala_ccode_function_add_return (_tmp485_, (ValaCCodeExpression*) _tmp490_);
-               _vala_ccode_node_unref0 (_tmp490_);
-               _g_free0 (_tmp488_);
+               vala_ccode_function_add_return (_tmp483_, (ValaCCodeExpression*) _tmp488_);
+               _vala_ccode_node_unref0 (_tmp488_);
+               _g_free0 (_tmp486_);
                vala_ccode_base_module_pop_function (self);
+               _tmp489_ = self->cfile;
+               _tmp490_ = ref_fun;
+               vala_ccode_file_add_function_declaration (_tmp489_, _tmp490_);
                _tmp491_ = self->cfile;
                _tmp492_ = ref_fun;
-               vala_ccode_file_add_function_declaration (_tmp491_, _tmp492_);
-               _tmp493_ = self->cfile;
-               _tmp494_ = ref_fun;
-               vala_ccode_file_add_function (_tmp493_, _tmp494_);
-               _tmp495_ = block_id;
-               _tmp496_ = g_strdup_printf ("block%d_data_unref", _tmp495_);
+               vala_ccode_file_add_function (_tmp491_, _tmp492_);
+               _tmp493_ = block_id;
+               _tmp494_ = g_strdup_printf ("block%d_data_unref", _tmp493_);
+               _tmp495_ = _tmp494_;
+               _tmp496_ = vala_ccode_function_new (_tmp495_, "void");
                _tmp497_ = _tmp496_;
-               _tmp498_ = vala_ccode_function_new (_tmp497_, "void");
-               _tmp499_ = _tmp498_;
-               _g_free0 (_tmp497_);
-               unref_fun = _tmp499_;
-               _tmp500_ = unref_fun;
-               _tmp501_ = vala_ccode_parameter_new ("_userdata_", "void *");
-               _tmp502_ = _tmp501_;
-               vala_ccode_function_add_parameter (_tmp500_, _tmp502_);
-               _vala_ccode_node_unref0 (_tmp502_);
-               _tmp503_ = unref_fun;
-               vala_ccode_function_set_modifiers (_tmp503_, VALA_CCODE_MODIFIERS_STATIC);
-               _tmp504_ = unref_fun;
-               vala_ccode_base_module_push_function (self, _tmp504_);
-               _tmp505_ = vala_ccode_base_module_get_ccode (self);
-               _tmp506_ = _tmp505_;
-               _tmp507_ = struct_name;
-               _tmp508_ = g_strconcat (_tmp507_, "*", NULL);
-               _tmp509_ = _tmp508_;
-               _tmp510_ = block_id;
-               _tmp511_ = g_strdup_printf ("_data%d_", _tmp510_);
+               _g_free0 (_tmp495_);
+               unref_fun = _tmp497_;
+               _tmp498_ = unref_fun;
+               _tmp499_ = vala_ccode_parameter_new ("_userdata_", "void *");
+               _tmp500_ = _tmp499_;
+               vala_ccode_function_add_parameter (_tmp498_, _tmp500_);
+               _vala_ccode_node_unref0 (_tmp500_);
+               _tmp501_ = unref_fun;
+               vala_ccode_function_set_modifiers (_tmp501_, VALA_CCODE_MODIFIERS_STATIC);
+               _tmp502_ = unref_fun;
+               vala_ccode_base_module_push_function (self, _tmp502_);
+               _tmp503_ = vala_ccode_base_module_get_ccode (self);
+               _tmp504_ = _tmp503_;
+               _tmp505_ = struct_name;
+               _tmp506_ = g_strconcat (_tmp505_, "*", NULL);
+               _tmp507_ = _tmp506_;
+               _tmp508_ = block_id;
+               _tmp509_ = g_strdup_printf ("_data%d_", _tmp508_);
+               _tmp510_ = _tmp509_;
+               _tmp511_ = vala_ccode_identifier_new ("_userdata_");
                _tmp512_ = _tmp511_;
-               _tmp513_ = vala_ccode_identifier_new ("_userdata_");
-               _tmp514_ = _tmp513_;
-               _tmp515_ = struct_name;
-               _tmp516_ = g_strconcat (_tmp515_, "*", NULL);
+               _tmp513_ = struct_name;
+               _tmp514_ = g_strconcat (_tmp513_, "*", NULL);
+               _tmp515_ = _tmp514_;
+               _tmp516_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp512_, _tmp515_);
                _tmp517_ = _tmp516_;
-               _tmp518_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp514_, _tmp517_);
+               _tmp518_ = vala_ccode_variable_declarator_new (_tmp510_, (ValaCCodeExpression*) _tmp517_, NULL);
                _tmp519_ = _tmp518_;
-               _tmp520_ = vala_ccode_variable_declarator_new (_tmp512_, (ValaCCodeExpression*) _tmp519_, NULL);
-               _tmp521_ = _tmp520_;
-               vala_ccode_function_add_declaration (_tmp506_, _tmp509_, (ValaCCodeDeclarator*) _tmp521_, 0);
-               _vala_ccode_node_unref0 (_tmp521_);
+               vala_ccode_function_add_declaration (_tmp504_, _tmp507_, (ValaCCodeDeclarator*) _tmp519_, 0);
                _vala_ccode_node_unref0 (_tmp519_);
-               _g_free0 (_tmp517_);
-               _vala_ccode_node_unref0 (_tmp514_);
-               _g_free0 (_tmp512_);
-               _g_free0 (_tmp509_);
-               _tmp522_ = vala_ccode_identifier_new ("g_atomic_int_dec_and_test");
-               _tmp523_ = _tmp522_;
-               _tmp524_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp523_);
+               _vala_ccode_node_unref0 (_tmp517_);
+               _g_free0 (_tmp515_);
+               _vala_ccode_node_unref0 (_tmp512_);
+               _g_free0 (_tmp510_);
+               _g_free0 (_tmp507_);
+               _tmp520_ = vala_ccode_identifier_new ("g_atomic_int_dec_and_test");
+               _tmp521_ = _tmp520_;
+               _tmp522_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp521_);
                _vala_ccode_node_unref0 (ccall);
-               ccall = _tmp524_;
-               _vala_ccode_node_unref0 (_tmp523_);
-               _tmp525_ = ccall;
-               _tmp526_ = block_id;
-               _tmp527_ = g_strdup_printf ("_data%d_", _tmp526_);
+               ccall = _tmp522_;
+               _vala_ccode_node_unref0 (_tmp521_);
+               _tmp523_ = ccall;
+               _tmp524_ = block_id;
+               _tmp525_ = g_strdup_printf ("_data%d_", _tmp524_);
+               _tmp526_ = _tmp525_;
+               _tmp527_ = vala_ccode_identifier_new (_tmp526_);
                _tmp528_ = _tmp527_;
-               _tmp529_ = vala_ccode_identifier_new (_tmp528_);
+               _tmp529_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp528_, "_ref_count_");
                _tmp530_ = _tmp529_;
-               _tmp531_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp530_, "_ref_count_");
+               _tmp531_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp530_);
                _tmp532_ = _tmp531_;
-               _tmp533_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp532_);
-               _tmp534_ = _tmp533_;
-               vala_ccode_function_call_add_argument (_tmp525_, (ValaCCodeExpression*) _tmp534_);
-               _vala_ccode_node_unref0 (_tmp534_);
+               vala_ccode_function_call_add_argument (_tmp523_, (ValaCCodeExpression*) _tmp532_);
                _vala_ccode_node_unref0 (_tmp532_);
                _vala_ccode_node_unref0 (_tmp530_);
-               _g_free0 (_tmp528_);
-               _tmp535_ = vala_ccode_base_module_get_ccode (self);
-               _tmp536_ = _tmp535_;
-               _tmp537_ = ccall;
-               vala_ccode_function_open_if (_tmp536_, (ValaCCodeExpression*) _tmp537_);
-               _tmp538_ = block_id;
-               _tmp539_ = g_strdup_printf ("_data%d_", _tmp538_);
-               _tmp540_ = _tmp539_;
-               _tmp541_ = vala_ccode_identifier_new (_tmp540_);
-               _tmp542_ = (ValaCCodeExpression*) _tmp541_;
-               _g_free0 (_tmp540_);
-               outer_block = _tmp542_;
-               _tmp543_ = b;
-               parent_closure_block = _tmp543_;
+               _vala_ccode_node_unref0 (_tmp528_);
+               _g_free0 (_tmp526_);
+               _tmp533_ = vala_ccode_base_module_get_ccode (self);
+               _tmp534_ = _tmp533_;
+               _tmp535_ = ccall;
+               vala_ccode_function_open_if (_tmp534_, (ValaCCodeExpression*) _tmp535_);
+               _tmp536_ = block_id;
+               _tmp537_ = g_strdup_printf ("_data%d_", _tmp536_);
+               _tmp538_ = _tmp537_;
+               _tmp539_ = vala_ccode_identifier_new (_tmp538_);
+               _tmp540_ = (ValaCCodeExpression*) _tmp539_;
+               _g_free0 (_tmp538_);
+               outer_block = _tmp540_;
+               _tmp541_ = b;
+               parent_closure_block = _tmp541_;
                while (TRUE) {
-                       ValaBlock* _tmp544_ = NULL;
-                       ValaSymbol* _tmp545_ = NULL;
-                       ValaSymbol* _tmp546_ = NULL;
-                       ValaBlock* _tmp547_ = NULL;
-                       ValaBlock* _tmp548_ = NULL;
+                       ValaBlock* _tmp542_ = NULL;
+                       ValaSymbol* _tmp543_ = NULL;
+                       ValaSymbol* _tmp544_ = NULL;
+                       ValaBlock* _tmp545_ = NULL;
+                       ValaBlock* _tmp546_ = NULL;
                        gint parent_block_id = 0;
-                       ValaBlock* _tmp549_ = NULL;
+                       ValaBlock* _tmp547_ = NULL;
+                       gint _tmp548_ = 0;
+                       ValaCCodeExpression* _tmp549_ = NULL;
                        gint _tmp550_ = 0;
-                       ValaCCodeExpression* _tmp551_ = NULL;
-                       gint _tmp552_ = 0;
-                       gchar* _tmp553_ = NULL;
-                       gchar* _tmp554_ = NULL;
-                       ValaCCodeMemberAccess* _tmp555_ = NULL;
-                       _tmp544_ = parent_closure_block;
-                       _tmp545_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp544_);
-                       _tmp546_ = _tmp545_;
-                       _tmp547_ = vala_ccode_base_module_next_closure_block (self, _tmp546_);
-                       parent_closure_block = _tmp547_;
-                       _tmp548_ = parent_closure_block;
-                       if (_tmp548_ == NULL) {
+                       gchar* _tmp551_ = NULL;
+                       gchar* _tmp552_ = NULL;
+                       ValaCCodeMemberAccess* _tmp553_ = NULL;
+                       _tmp542_ = parent_closure_block;
+                       _tmp543_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp542_);
+                       _tmp544_ = _tmp543_;
+                       _tmp545_ = vala_ccode_base_module_next_closure_block (self, _tmp544_);
+                       parent_closure_block = _tmp545_;
+                       _tmp546_ = parent_closure_block;
+                       if (_tmp546_ == NULL) {
                                break;
                        }
-                       _tmp549_ = parent_closure_block;
-                       _tmp550_ = vala_ccode_base_module_get_block_id (self, _tmp549_);
-                       parent_block_id = _tmp550_;
-                       _tmp551_ = outer_block;
-                       _tmp552_ = parent_block_id;
-                       _tmp553_ = g_strdup_printf ("_data%d_", _tmp552_);
-                       _tmp554_ = _tmp553_;
-                       _tmp555_ = vala_ccode_member_access_new_pointer (_tmp551_, _tmp554_);
+                       _tmp547_ = parent_closure_block;
+                       _tmp548_ = vala_ccode_base_module_get_block_id (self, _tmp547_);
+                       parent_block_id = _tmp548_;
+                       _tmp549_ = outer_block;
+                       _tmp550_ = parent_block_id;
+                       _tmp551_ = g_strdup_printf ("_data%d_", _tmp550_);
+                       _tmp552_ = _tmp551_;
+                       _tmp553_ = vala_ccode_member_access_new_pointer (_tmp549_, _tmp552_);
                        _vala_ccode_node_unref0 (outer_block);
-                       outer_block = (ValaCCodeExpression*) _tmp555_;
-                       _g_free0 (_tmp554_);
-               }
-               _tmp556_ = vala_ccode_base_module_get_this_type (self);
-               _tmp557_ = _tmp556_;
-               _tmp558_ = _tmp557_ != NULL;
-               _vala_code_node_unref0 (_tmp557_);
-               if (_tmp558_) {
-                       ValaCCodeFunction* _tmp559_ = NULL;
-                       ValaCCodeFunction* _tmp560_ = NULL;
-                       ValaTypeSymbol* _tmp561_ = NULL;
-                       ValaTypeSymbol* _tmp562_ = NULL;
-                       ValaDataType* _tmp563_ = NULL;
-                       ValaDataType* _tmp564_ = NULL;
-                       gchar* _tmp565_ = NULL;
-                       gchar* _tmp566_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp567_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp568_ = NULL;
-                       ValaCCodeFunction* _tmp569_ = NULL;
-                       ValaCCodeFunction* _tmp570_ = NULL;
-                       ValaCCodeIdentifier* _tmp571_ = NULL;
-                       ValaCCodeIdentifier* _tmp572_ = NULL;
-                       ValaCCodeExpression* _tmp573_ = NULL;
-                       ValaCCodeMemberAccess* _tmp574_ = NULL;
-                       ValaCCodeMemberAccess* _tmp575_ = NULL;
-                       _tmp559_ = vala_ccode_base_module_get_ccode (self);
+                       outer_block = (ValaCCodeExpression*) _tmp553_;
+                       _g_free0 (_tmp552_);
+               }
+               _tmp554_ = vala_ccode_base_module_get_this_type (self);
+               _tmp555_ = _tmp554_;
+               _tmp556_ = _tmp555_ != NULL;
+               _vala_code_node_unref0 (_tmp555_);
+               if (_tmp556_) {
+                       ValaCCodeFunction* _tmp557_ = NULL;
+                       ValaCCodeFunction* _tmp558_ = NULL;
+                       ValaTypeSymbol* _tmp559_ = NULL;
+                       ValaTypeSymbol* _tmp560_ = NULL;
+                       ValaDataType* _tmp561_ = NULL;
+                       ValaDataType* _tmp562_ = NULL;
+                       gchar* _tmp563_ = NULL;
+                       gchar* _tmp564_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp565_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp566_ = NULL;
+                       ValaCCodeFunction* _tmp567_ = NULL;
+                       ValaCCodeFunction* _tmp568_ = NULL;
+                       ValaCCodeIdentifier* _tmp569_ = NULL;
+                       ValaCCodeIdentifier* _tmp570_ = NULL;
+                       ValaCCodeExpression* _tmp571_ = NULL;
+                       ValaCCodeMemberAccess* _tmp572_ = NULL;
+                       ValaCCodeMemberAccess* _tmp573_ = NULL;
+                       _tmp557_ = vala_ccode_base_module_get_ccode (self);
+                       _tmp558_ = _tmp557_;
+                       _tmp559_ = vala_ccode_base_module_get_current_type_symbol (self);
                        _tmp560_ = _tmp559_;
-                       _tmp561_ = vala_ccode_base_module_get_current_type_symbol (self);
+                       _tmp561_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp560_);
                        _tmp562_ = _tmp561_;
-                       _tmp563_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp562_);
+                       _tmp563_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp562_);
                        _tmp564_ = _tmp563_;
-                       _tmp565_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp564_);
+                       _tmp565_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
                        _tmp566_ = _tmp565_;
-                       _tmp567_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
+                       vala_ccode_function_add_declaration (_tmp558_, _tmp564_, (ValaCCodeDeclarator*) _tmp566_, 0);
+                       _vala_ccode_node_unref0 (_tmp566_);
+                       _g_free0 (_tmp564_);
+                       _vala_code_node_unref0 (_tmp562_);
+                       _tmp567_ = vala_ccode_base_module_get_ccode (self);
                        _tmp568_ = _tmp567_;
-                       vala_ccode_function_add_declaration (_tmp560_, _tmp566_, (ValaCCodeDeclarator*) _tmp568_, 0);
-                       _vala_ccode_node_unref0 (_tmp568_);
-                       _g_free0 (_tmp566_);
-                       _vala_code_node_unref0 (_tmp564_);
-                       _tmp569_ = vala_ccode_base_module_get_ccode (self);
+                       _tmp569_ = vala_ccode_identifier_new ("self");
                        _tmp570_ = _tmp569_;
-                       _tmp571_ = vala_ccode_identifier_new ("self");
-                       _tmp572_ = _tmp571_;
-                       _tmp573_ = outer_block;
-                       _tmp574_ = vala_ccode_member_access_new_pointer (_tmp573_, "self");
-                       _tmp575_ = _tmp574_;
-                       vala_ccode_function_add_assignment (_tmp570_, (ValaCCodeExpression*) _tmp572_, (ValaCCodeExpression*) _tmp575_);
-                       _vala_ccode_node_unref0 (_tmp575_);
-                       _vala_ccode_node_unref0 (_tmp572_);
-               }
-               _tmp576_ = vala_ccode_base_module_get_current_method (self);
-               _tmp577_ = _tmp576_;
-               if (_tmp577_ != NULL) {
+                       _tmp571_ = outer_block;
+                       _tmp572_ = vala_ccode_member_access_new_pointer (_tmp571_, "self");
+                       _tmp573_ = _tmp572_;
+                       vala_ccode_function_add_assignment (_tmp568_, (ValaCCodeExpression*) _tmp570_, (ValaCCodeExpression*) _tmp573_);
+                       _vala_ccode_node_unref0 (_tmp573_);
+                       _vala_ccode_node_unref0 (_tmp570_);
+               }
+               _tmp574_ = vala_ccode_base_module_get_current_method (self);
+               _tmp575_ = _tmp574_;
+               if (_tmp575_ != NULL) {
                        {
                                ValaList* _type_param_list = NULL;
-                               ValaMethod* _tmp578_ = NULL;
-                               ValaMethod* _tmp579_ = NULL;
-                               ValaList* _tmp580_ = NULL;
+                               ValaMethod* _tmp576_ = NULL;
+                               ValaMethod* _tmp577_ = NULL;
+                               ValaList* _tmp578_ = NULL;
                                gint _type_param_size = 0;
-                               ValaList* _tmp581_ = NULL;
-                               gint _tmp582_ = 0;
-                               gint _tmp583_ = 0;
+                               ValaList* _tmp579_ = NULL;
+                               gint _tmp580_ = 0;
+                               gint _tmp581_ = 0;
                                gint _type_param_index = 0;
-                               _tmp578_ = vala_ccode_base_module_get_current_method (self);
-                               _tmp579_ = _tmp578_;
-                               _tmp580_ = vala_method_get_type_parameters (_tmp579_);
-                               _type_param_list = _tmp580_;
-                               _tmp581_ = _type_param_list;
-                               _tmp582_ = vala_collection_get_size ((ValaCollection*) _tmp581_);
-                               _tmp583_ = _tmp582_;
-                               _type_param_size = _tmp583_;
+                               _tmp576_ = vala_ccode_base_module_get_current_method (self);
+                               _tmp577_ = _tmp576_;
+                               _tmp578_ = vala_method_get_type_parameters (_tmp577_);
+                               _type_param_list = _tmp578_;
+                               _tmp579_ = _type_param_list;
+                               _tmp580_ = vala_collection_get_size ((ValaCollection*) _tmp579_);
+                               _tmp581_ = _tmp580_;
+                               _type_param_size = _tmp581_;
                                _type_param_index = -1;
                                while (TRUE) {
+                                       gint _tmp582_ = 0;
+                                       gint _tmp583_ = 0;
                                        gint _tmp584_ = 0;
-                                       gint _tmp585_ = 0;
-                                       gint _tmp586_ = 0;
                                        ValaTypeParameter* type_param = NULL;
-                                       ValaList* _tmp587_ = NULL;
-                                       gint _tmp588_ = 0;
-                                       gpointer _tmp589_ = NULL;
+                                       ValaList* _tmp585_ = NULL;
+                                       gint _tmp586_ = 0;
+                                       gpointer _tmp587_ = NULL;
                                        gchar* func_name = NULL;
-                                       ValaTypeParameter* _tmp590_ = NULL;
-                                       const gchar* _tmp591_ = NULL;
-                                       const gchar* _tmp592_ = NULL;
+                                       ValaTypeParameter* _tmp588_ = NULL;
+                                       const gchar* _tmp589_ = NULL;
+                                       const gchar* _tmp590_ = NULL;
+                                       gchar* _tmp591_ = NULL;
+                                       gchar* _tmp592_ = NULL;
                                        gchar* _tmp593_ = NULL;
-                                       gchar* _tmp594_ = NULL;
-                                       gchar* _tmp595_ = NULL;
-                                       ValaCCodeFunction* _tmp596_ = NULL;
-                                       ValaCCodeFunction* _tmp597_ = NULL;
-                                       const gchar* _tmp598_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp599_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp600_ = NULL;
-                                       ValaCCodeFunction* _tmp601_ = NULL;
-                                       ValaCCodeFunction* _tmp602_ = NULL;
-                                       const gchar* _tmp603_ = NULL;
-                                       ValaCCodeIdentifier* _tmp604_ = NULL;
-                                       ValaCCodeIdentifier* _tmp605_ = NULL;
-                                       ValaCCodeExpression* _tmp606_ = NULL;
-                                       const gchar* _tmp607_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp608_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp609_ = NULL;
-                                       ValaTypeParameter* _tmp610_ = NULL;
-                                       const gchar* _tmp611_ = NULL;
-                                       const gchar* _tmp612_ = NULL;
+                                       ValaCCodeFunction* _tmp594_ = NULL;
+                                       ValaCCodeFunction* _tmp595_ = NULL;
+                                       const gchar* _tmp596_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp597_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp598_ = NULL;
+                                       ValaCCodeFunction* _tmp599_ = NULL;
+                                       ValaCCodeFunction* _tmp600_ = NULL;
+                                       const gchar* _tmp601_ = NULL;
+                                       ValaCCodeIdentifier* _tmp602_ = NULL;
+                                       ValaCCodeIdentifier* _tmp603_ = NULL;
+                                       ValaCCodeExpression* _tmp604_ = NULL;
+                                       const gchar* _tmp605_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp606_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp607_ = NULL;
+                                       ValaTypeParameter* _tmp608_ = NULL;
+                                       const gchar* _tmp609_ = NULL;
+                                       const gchar* _tmp610_ = NULL;
+                                       gchar* _tmp611_ = NULL;
+                                       gchar* _tmp612_ = NULL;
                                        gchar* _tmp613_ = NULL;
-                                       gchar* _tmp614_ = NULL;
-                                       gchar* _tmp615_ = NULL;
-                                       ValaCCodeFunction* _tmp616_ = NULL;
-                                       ValaCCodeFunction* _tmp617_ = NULL;
-                                       const gchar* _tmp618_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp619_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp620_ = NULL;
-                                       ValaCCodeFunction* _tmp621_ = NULL;
-                                       ValaCCodeFunction* _tmp622_ = NULL;
-                                       const gchar* _tmp623_ = NULL;
-                                       ValaCCodeIdentifier* _tmp624_ = NULL;
-                                       ValaCCodeIdentifier* _tmp625_ = NULL;
-                                       ValaCCodeExpression* _tmp626_ = NULL;
-                                       const gchar* _tmp627_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp628_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp629_ = NULL;
-                                       ValaTypeParameter* _tmp630_ = NULL;
-                                       const gchar* _tmp631_ = NULL;
-                                       const gchar* _tmp632_ = NULL;
+                                       ValaCCodeFunction* _tmp614_ = NULL;
+                                       ValaCCodeFunction* _tmp615_ = NULL;
+                                       const gchar* _tmp616_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp617_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp618_ = NULL;
+                                       ValaCCodeFunction* _tmp619_ = NULL;
+                                       ValaCCodeFunction* _tmp620_ = NULL;
+                                       const gchar* _tmp621_ = NULL;
+                                       ValaCCodeIdentifier* _tmp622_ = NULL;
+                                       ValaCCodeIdentifier* _tmp623_ = NULL;
+                                       ValaCCodeExpression* _tmp624_ = NULL;
+                                       const gchar* _tmp625_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp626_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp627_ = NULL;
+                                       ValaTypeParameter* _tmp628_ = NULL;
+                                       const gchar* _tmp629_ = NULL;
+                                       const gchar* _tmp630_ = NULL;
+                                       gchar* _tmp631_ = NULL;
+                                       gchar* _tmp632_ = NULL;
                                        gchar* _tmp633_ = NULL;
-                                       gchar* _tmp634_ = NULL;
-                                       gchar* _tmp635_ = NULL;
-                                       ValaCCodeFunction* _tmp636_ = NULL;
-                                       ValaCCodeFunction* _tmp637_ = NULL;
-                                       const gchar* _tmp638_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp639_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp640_ = NULL;
-                                       ValaCCodeFunction* _tmp641_ = NULL;
-                                       ValaCCodeFunction* _tmp642_ = NULL;
-                                       const gchar* _tmp643_ = NULL;
-                                       ValaCCodeIdentifier* _tmp644_ = NULL;
-                                       ValaCCodeIdentifier* _tmp645_ = NULL;
-                                       ValaCCodeExpression* _tmp646_ = NULL;
-                                       const gchar* _tmp647_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp648_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp649_ = NULL;
-                                       _tmp584_ = _type_param_index;
-                                       _type_param_index = _tmp584_ + 1;
-                                       _tmp585_ = _type_param_index;
-                                       _tmp586_ = _type_param_size;
-                                       if (!(_tmp585_ < _tmp586_)) {
+                                       ValaCCodeFunction* _tmp634_ = NULL;
+                                       ValaCCodeFunction* _tmp635_ = NULL;
+                                       const gchar* _tmp636_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp637_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp638_ = NULL;
+                                       ValaCCodeFunction* _tmp639_ = NULL;
+                                       ValaCCodeFunction* _tmp640_ = NULL;
+                                       const gchar* _tmp641_ = NULL;
+                                       ValaCCodeIdentifier* _tmp642_ = NULL;
+                                       ValaCCodeIdentifier* _tmp643_ = NULL;
+                                       ValaCCodeExpression* _tmp644_ = NULL;
+                                       const gchar* _tmp645_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp646_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp647_ = NULL;
+                                       _tmp582_ = _type_param_index;
+                                       _type_param_index = _tmp582_ + 1;
+                                       _tmp583_ = _type_param_index;
+                                       _tmp584_ = _type_param_size;
+                                       if (!(_tmp583_ < _tmp584_)) {
                                                break;
                                        }
-                                       _tmp587_ = _type_param_list;
-                                       _tmp588_ = _type_param_index;
-                                       _tmp589_ = vala_list_get (_tmp587_, _tmp588_);
-                                       type_param = (ValaTypeParameter*) _tmp589_;
-                                       _tmp590_ = type_param;
-                                       _tmp591_ = vala_symbol_get_name ((ValaSymbol*) _tmp590_);
+                                       _tmp585_ = _type_param_list;
+                                       _tmp586_ = _type_param_index;
+                                       _tmp587_ = vala_list_get (_tmp585_, _tmp586_);
+                                       type_param = (ValaTypeParameter*) _tmp587_;
+                                       _tmp588_ = type_param;
+                                       _tmp589_ = vala_symbol_get_name ((ValaSymbol*) _tmp588_);
+                                       _tmp590_ = _tmp589_;
+                                       _tmp591_ = g_utf8_strdown (_tmp590_, (gssize) (-1));
                                        _tmp592_ = _tmp591_;
-                                       _tmp593_ = g_utf8_strdown (_tmp592_, (gssize) (-1));
-                                       _tmp594_ = _tmp593_;
-                                       _tmp595_ = g_strdup_printf ("%s_type", _tmp594_);
+                                       _tmp593_ = g_strdup_printf ("%s_type", _tmp592_);
                                        _g_free0 (func_name);
-                                       func_name = _tmp595_;
-                                       _g_free0 (_tmp594_);
-                                       _tmp596_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp597_ = _tmp596_;
-                                       _tmp598_ = func_name;
-                                       _tmp599_ = vala_ccode_variable_declarator_new (_tmp598_, NULL, NULL);
+                                       func_name = _tmp593_;
+                                       _g_free0 (_tmp592_);
+                                       _tmp594_ = vala_ccode_base_module_get_ccode (self);
+                                       _tmp595_ = _tmp594_;
+                                       _tmp596_ = func_name;
+                                       _tmp597_ = vala_ccode_variable_declarator_new (_tmp596_, NULL, NULL);
+                                       _tmp598_ = _tmp597_;
+                                       vala_ccode_function_add_declaration (_tmp595_, "GType", (ValaCCodeDeclarator*) _tmp598_, 0);
+                                       _vala_ccode_node_unref0 (_tmp598_);
+                                       _tmp599_ = vala_ccode_base_module_get_ccode (self);
                                        _tmp600_ = _tmp599_;
-                                       vala_ccode_function_add_declaration (_tmp597_, "GType", (ValaCCodeDeclarator*) _tmp600_, 0);
-                                       _vala_ccode_node_unref0 (_tmp600_);
-                                       _tmp601_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp602_ = _tmp601_;
-                                       _tmp603_ = func_name;
-                                       _tmp604_ = vala_ccode_identifier_new (_tmp603_);
-                                       _tmp605_ = _tmp604_;
-                                       _tmp606_ = outer_block;
-                                       _tmp607_ = func_name;
-                                       _tmp608_ = vala_ccode_member_access_new_pointer (_tmp606_, _tmp607_);
-                                       _tmp609_ = _tmp608_;
-                                       vala_ccode_function_add_assignment (_tmp602_, (ValaCCodeExpression*) _tmp605_, (ValaCCodeExpression*) _tmp609_);
-                                       _vala_ccode_node_unref0 (_tmp609_);
-                                       _vala_ccode_node_unref0 (_tmp605_);
-                                       _tmp610_ = type_param;
-                                       _tmp611_ = vala_symbol_get_name ((ValaSymbol*) _tmp610_);
+                                       _tmp601_ = func_name;
+                                       _tmp602_ = vala_ccode_identifier_new (_tmp601_);
+                                       _tmp603_ = _tmp602_;
+                                       _tmp604_ = outer_block;
+                                       _tmp605_ = func_name;
+                                       _tmp606_ = vala_ccode_member_access_new_pointer (_tmp604_, _tmp605_);
+                                       _tmp607_ = _tmp606_;
+                                       vala_ccode_function_add_assignment (_tmp600_, (ValaCCodeExpression*) _tmp603_, (ValaCCodeExpression*) _tmp607_);
+                                       _vala_ccode_node_unref0 (_tmp607_);
+                                       _vala_ccode_node_unref0 (_tmp603_);
+                                       _tmp608_ = type_param;
+                                       _tmp609_ = vala_symbol_get_name ((ValaSymbol*) _tmp608_);
+                                       _tmp610_ = _tmp609_;
+                                       _tmp611_ = g_utf8_strdown (_tmp610_, (gssize) (-1));
                                        _tmp612_ = _tmp611_;
-                                       _tmp613_ = g_utf8_strdown (_tmp612_, (gssize) (-1));
-                                       _tmp614_ = _tmp613_;
-                                       _tmp615_ = g_strdup_printf ("%s_dup_func", _tmp614_);
+                                       _tmp613_ = g_strdup_printf ("%s_dup_func", _tmp612_);
                                        _g_free0 (func_name);
-                                       func_name = _tmp615_;
-                                       _g_free0 (_tmp614_);
-                                       _tmp616_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp617_ = _tmp616_;
-                                       _tmp618_ = func_name;
-                                       _tmp619_ = vala_ccode_variable_declarator_new (_tmp618_, NULL, NULL);
+                                       func_name = _tmp613_;
+                                       _g_free0 (_tmp612_);
+                                       _tmp614_ = vala_ccode_base_module_get_ccode (self);
+                                       _tmp615_ = _tmp614_;
+                                       _tmp616_ = func_name;
+                                       _tmp617_ = vala_ccode_variable_declarator_new (_tmp616_, NULL, NULL);
+                                       _tmp618_ = _tmp617_;
+                                       vala_ccode_function_add_declaration (_tmp615_, "GBoxedCopyFunc", (ValaCCodeDeclarator*) _tmp618_, 0);
+                                       _vala_ccode_node_unref0 (_tmp618_);
+                                       _tmp619_ = vala_ccode_base_module_get_ccode (self);
                                        _tmp620_ = _tmp619_;
-                                       vala_ccode_function_add_declaration (_tmp617_, "GBoxedCopyFunc", (ValaCCodeDeclarator*) _tmp620_, 0);
-                                       _vala_ccode_node_unref0 (_tmp620_);
-                                       _tmp621_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp622_ = _tmp621_;
-                                       _tmp623_ = func_name;
-                                       _tmp624_ = vala_ccode_identifier_new (_tmp623_);
-                                       _tmp625_ = _tmp624_;
-                                       _tmp626_ = outer_block;
-                                       _tmp627_ = func_name;
-                                       _tmp628_ = vala_ccode_member_access_new_pointer (_tmp626_, _tmp627_);
-                                       _tmp629_ = _tmp628_;
-                                       vala_ccode_function_add_assignment (_tmp622_, (ValaCCodeExpression*) _tmp625_, (ValaCCodeExpression*) _tmp629_);
-                                       _vala_ccode_node_unref0 (_tmp629_);
-                                       _vala_ccode_node_unref0 (_tmp625_);
-                                       _tmp630_ = type_param;
-                                       _tmp631_ = vala_symbol_get_name ((ValaSymbol*) _tmp630_);
+                                       _tmp621_ = func_name;
+                                       _tmp622_ = vala_ccode_identifier_new (_tmp621_);
+                                       _tmp623_ = _tmp622_;
+                                       _tmp624_ = outer_block;
+                                       _tmp625_ = func_name;
+                                       _tmp626_ = vala_ccode_member_access_new_pointer (_tmp624_, _tmp625_);
+                                       _tmp627_ = _tmp626_;
+                                       vala_ccode_function_add_assignment (_tmp620_, (ValaCCodeExpression*) _tmp623_, (ValaCCodeExpression*) _tmp627_);
+                                       _vala_ccode_node_unref0 (_tmp627_);
+                                       _vala_ccode_node_unref0 (_tmp623_);
+                                       _tmp628_ = type_param;
+                                       _tmp629_ = vala_symbol_get_name ((ValaSymbol*) _tmp628_);
+                                       _tmp630_ = _tmp629_;
+                                       _tmp631_ = g_utf8_strdown (_tmp630_, (gssize) (-1));
                                        _tmp632_ = _tmp631_;
-                                       _tmp633_ = g_utf8_strdown (_tmp632_, (gssize) (-1));
-                                       _tmp634_ = _tmp633_;
-                                       _tmp635_ = g_strdup_printf ("%s_destroy_func", _tmp634_);
+                                       _tmp633_ = g_strdup_printf ("%s_destroy_func", _tmp632_);
                                        _g_free0 (func_name);
-                                       func_name = _tmp635_;
-                                       _g_free0 (_tmp634_);
-                                       _tmp636_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp637_ = _tmp636_;
-                                       _tmp638_ = func_name;
-                                       _tmp639_ = vala_ccode_variable_declarator_new (_tmp638_, NULL, NULL);
+                                       func_name = _tmp633_;
+                                       _g_free0 (_tmp632_);
+                                       _tmp634_ = vala_ccode_base_module_get_ccode (self);
+                                       _tmp635_ = _tmp634_;
+                                       _tmp636_ = func_name;
+                                       _tmp637_ = vala_ccode_variable_declarator_new (_tmp636_, NULL, NULL);
+                                       _tmp638_ = _tmp637_;
+                                       vala_ccode_function_add_declaration (_tmp635_, "GDestroyNotify", (ValaCCodeDeclarator*) _tmp638_, 0);
+                                       _vala_ccode_node_unref0 (_tmp638_);
+                                       _tmp639_ = vala_ccode_base_module_get_ccode (self);
                                        _tmp640_ = _tmp639_;
-                                       vala_ccode_function_add_declaration (_tmp637_, "GDestroyNotify", (ValaCCodeDeclarator*) _tmp640_, 0);
-                                       _vala_ccode_node_unref0 (_tmp640_);
-                                       _tmp641_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp642_ = _tmp641_;
-                                       _tmp643_ = func_name;
-                                       _tmp644_ = vala_ccode_identifier_new (_tmp643_);
-                                       _tmp645_ = _tmp644_;
-                                       _tmp646_ = outer_block;
-                                       _tmp647_ = func_name;
-                                       _tmp648_ = vala_ccode_member_access_new_pointer (_tmp646_, _tmp647_);
-                                       _tmp649_ = _tmp648_;
-                                       vala_ccode_function_add_assignment (_tmp642_, (ValaCCodeExpression*) _tmp645_, (ValaCCodeExpression*) _tmp649_);
-                                       _vala_ccode_node_unref0 (_tmp649_);
-                                       _vala_ccode_node_unref0 (_tmp645_);
+                                       _tmp641_ = func_name;
+                                       _tmp642_ = vala_ccode_identifier_new (_tmp641_);
+                                       _tmp643_ = _tmp642_;
+                                       _tmp644_ = outer_block;
+                                       _tmp645_ = func_name;
+                                       _tmp646_ = vala_ccode_member_access_new_pointer (_tmp644_, _tmp645_);
+                                       _tmp647_ = _tmp646_;
+                                       vala_ccode_function_add_assignment (_tmp640_, (ValaCCodeExpression*) _tmp643_, (ValaCCodeExpression*) _tmp647_);
+                                       _vala_ccode_node_unref0 (_tmp647_);
+                                       _vala_ccode_node_unref0 (_tmp643_);
                                        _g_free0 (func_name);
                                        _vala_code_node_unref0 (type_param);
                                }
@@ -11798,94 +12046,94 @@ static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, Vala
                }
                {
                        gint i = 0;
-                       ValaList* _tmp650_ = NULL;
-                       gint _tmp651_ = 0;
-                       gint _tmp652_ = 0;
-                       _tmp650_ = local_vars;
-                       _tmp651_ = vala_collection_get_size ((ValaCollection*) _tmp650_);
-                       _tmp652_ = _tmp651_;
-                       i = _tmp652_ - 1;
+                       ValaList* _tmp648_ = NULL;
+                       gint _tmp649_ = 0;
+                       gint _tmp650_ = 0;
+                       _tmp648_ = local_vars;
+                       _tmp649_ = vala_collection_get_size ((ValaCollection*) _tmp648_);
+                       _tmp650_ = _tmp649_;
+                       i = _tmp650_ - 1;
                        {
-                               gboolean _tmp653_ = FALSE;
-                               _tmp653_ = TRUE;
+                               gboolean _tmp651_ = FALSE;
+                               _tmp651_ = TRUE;
                                while (TRUE) {
-                                       gint _tmp655_ = 0;
+                                       gint _tmp653_ = 0;
                                        ValaLocalVariable* local = NULL;
-                                       ValaList* _tmp656_ = NULL;
-                                       gint _tmp657_ = 0;
-                                       gpointer _tmp658_ = NULL;
-                                       ValaLocalVariable* _tmp659_ = NULL;
-                                       gboolean _tmp660_ = FALSE;
-                                       gboolean _tmp661_ = FALSE;
-                                       if (!_tmp653_) {
-                                               gint _tmp654_ = 0;
-                                               _tmp654_ = i;
-                                               i = _tmp654_ - 1;
+                                       ValaList* _tmp654_ = NULL;
+                                       gint _tmp655_ = 0;
+                                       gpointer _tmp656_ = NULL;
+                                       ValaLocalVariable* _tmp657_ = NULL;
+                                       gboolean _tmp658_ = FALSE;
+                                       gboolean _tmp659_ = FALSE;
+                                       if (!_tmp651_) {
+                                               gint _tmp652_ = 0;
+                                               _tmp652_ = i;
+                                               i = _tmp652_ - 1;
                                        }
-                                       _tmp653_ = FALSE;
-                                       _tmp655_ = i;
-                                       if (!(_tmp655_ >= 0)) {
+                                       _tmp651_ = FALSE;
+                                       _tmp653_ = i;
+                                       if (!(_tmp653_ >= 0)) {
                                                break;
                                        }
-                                       _tmp656_ = local_vars;
-                                       _tmp657_ = i;
-                                       _tmp658_ = vala_list_get (_tmp656_, _tmp657_);
-                                       local = (ValaLocalVariable*) _tmp658_;
-                                       _tmp659_ = local;
-                                       _tmp660_ = vala_local_variable_get_captured (_tmp659_);
-                                       _tmp661_ = _tmp660_;
-                                       if (_tmp661_) {
-                                               ValaLocalVariable* _tmp662_ = NULL;
-                                               ValaDataType* _tmp663_ = NULL;
-                                               ValaDataType* _tmp664_ = NULL;
-                                               gboolean _tmp665_ = FALSE;
-                                               _tmp662_ = local;
-                                               _tmp663_ = vala_variable_get_variable_type ((ValaVariable*) _tmp662_);
-                                               _tmp664_ = _tmp663_;
-                                               _tmp665_ = vala_ccode_base_module_requires_destroy (self, _tmp664_);
-                                               if (_tmp665_) {
+                                       _tmp654_ = local_vars;
+                                       _tmp655_ = i;
+                                       _tmp656_ = vala_list_get (_tmp654_, _tmp655_);
+                                       local = (ValaLocalVariable*) _tmp656_;
+                                       _tmp657_ = local;
+                                       _tmp658_ = vala_local_variable_get_captured (_tmp657_);
+                                       _tmp659_ = _tmp658_;
+                                       if (_tmp659_) {
+                                               ValaLocalVariable* _tmp660_ = NULL;
+                                               ValaDataType* _tmp661_ = NULL;
+                                               ValaDataType* _tmp662_ = NULL;
+                                               gboolean _tmp663_ = FALSE;
+                                               _tmp660_ = local;
+                                               _tmp661_ = vala_variable_get_variable_type ((ValaVariable*) _tmp660_);
+                                               _tmp662_ = _tmp661_;
+                                               _tmp663_ = vala_ccode_base_module_requires_destroy (self, _tmp662_);
+                                               if (_tmp663_) {
                                                        gboolean old_coroutine = FALSE;
-                                                       ValaMethod* _tmp666_ = NULL;
-                                                       ValaMethod* _tmp667_ = NULL;
-                                                       ValaCCodeFunction* _tmp674_ = NULL;
-                                                       ValaCCodeFunction* _tmp675_ = NULL;
-                                                       ValaLocalVariable* _tmp676_ = NULL;
-                                                       ValaCCodeExpression* _tmp677_ = NULL;
-                                                       ValaCCodeExpression* _tmp678_ = NULL;
-                                                       gboolean _tmp679_ = FALSE;
+                                                       ValaMethod* _tmp664_ = NULL;
+                                                       ValaMethod* _tmp665_ = NULL;
+                                                       ValaCCodeFunction* _tmp672_ = NULL;
+                                                       ValaCCodeFunction* _tmp673_ = NULL;
+                                                       ValaLocalVariable* _tmp674_ = NULL;
+                                                       ValaCCodeExpression* _tmp675_ = NULL;
+                                                       ValaCCodeExpression* _tmp676_ = NULL;
+                                                       gboolean _tmp677_ = FALSE;
                                                        old_coroutine = FALSE;
-                                                       _tmp666_ = vala_ccode_base_module_get_current_method (self);
-                                                       _tmp667_ = _tmp666_;
-                                                       if (_tmp667_ != NULL) {
-                                                               ValaMethod* _tmp668_ = NULL;
-                                                               ValaMethod* _tmp669_ = NULL;
-                                                               gboolean _tmp670_ = FALSE;
-                                                               gboolean _tmp671_ = FALSE;
-                                                               ValaMethod* _tmp672_ = NULL;
-                                                               ValaMethod* _tmp673_ = NULL;
-                                                               _tmp668_ = vala_ccode_base_module_get_current_method (self);
+                                                       _tmp664_ = vala_ccode_base_module_get_current_method (self);
+                                                       _tmp665_ = _tmp664_;
+                                                       if (_tmp665_ != NULL) {
+                                                               ValaMethod* _tmp666_ = NULL;
+                                                               ValaMethod* _tmp667_ = NULL;
+                                                               gboolean _tmp668_ = FALSE;
+                                                               gboolean _tmp669_ = FALSE;
+                                                               ValaMethod* _tmp670_ = NULL;
+                                                               ValaMethod* _tmp671_ = NULL;
+                                                               _tmp666_ = vala_ccode_base_module_get_current_method (self);
+                                                               _tmp667_ = _tmp666_;
+                                                               _tmp668_ = vala_method_get_coroutine (_tmp667_);
                                                                _tmp669_ = _tmp668_;
-                                                               _tmp670_ = vala_method_get_coroutine (_tmp669_);
+                                                               old_coroutine = _tmp669_;
+                                                               _tmp670_ = vala_ccode_base_module_get_current_method (self);
                                                                _tmp671_ = _tmp670_;
-                                                               old_coroutine = _tmp671_;
-                                                               _tmp672_ = vala_ccode_base_module_get_current_method (self);
-                                                               _tmp673_ = _tmp672_;
-                                                               vala_method_set_coroutine (_tmp673_, FALSE);
+                                                               vala_method_set_coroutine (_tmp671_, FALSE);
                                                        }
-                                                       _tmp674_ = vala_ccode_base_module_get_ccode (self);
-                                                       _tmp675_ = _tmp674_;
-                                                       _tmp676_ = local;
-                                                       _tmp677_ = vala_ccode_base_module_destroy_local (self, _tmp676_);
-                                                       _tmp678_ = _tmp677_;
-                                                       vala_ccode_function_add_expression (_tmp675_, _tmp678_);
-                                                       _vala_ccode_node_unref0 (_tmp678_);
-                                                       _tmp679_ = old_coroutine;
-                                                       if (_tmp679_) {
-                                                               ValaMethod* _tmp680_ = NULL;
-                                                               ValaMethod* _tmp681_ = NULL;
-                                                               _tmp680_ = vala_ccode_base_module_get_current_method (self);
-                                                               _tmp681_ = _tmp680_;
-                                                               vala_method_set_coroutine (_tmp681_, TRUE);
+                                                       _tmp672_ = vala_ccode_base_module_get_ccode (self);
+                                                       _tmp673_ = _tmp672_;
+                                                       _tmp674_ = local;
+                                                       _tmp675_ = vala_ccode_base_module_destroy_local (self, _tmp674_);
+                                                       _tmp676_ = _tmp675_;
+                                                       vala_ccode_function_add_expression (_tmp673_, _tmp676_);
+                                                       _vala_ccode_node_unref0 (_tmp676_);
+                                                       _tmp677_ = old_coroutine;
+                                                       if (_tmp677_) {
+                                                               ValaMethod* _tmp678_ = NULL;
+                                                               ValaMethod* _tmp679_ = NULL;
+                                                               _tmp678_ = vala_ccode_base_module_get_current_method (self);
+                                                               _tmp679_ = _tmp678_;
+                                                               vala_method_set_coroutine (_tmp679_, TRUE);
                                                        }
                                                }
                                        }
@@ -11893,127 +12141,127 @@ static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, Vala
                                }
                        }
                }
-               _tmp682_ = b;
-               _tmp683_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp682_);
-               _tmp684_ = _tmp683_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp684_, VALA_TYPE_METHOD)) {
+               _tmp680_ = b;
+               _tmp681_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp680_);
+               _tmp682_ = _tmp681_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp682_, VALA_TYPE_METHOD)) {
                        ValaMethod* m = NULL;
-                       ValaBlock* _tmp685_ = NULL;
-                       ValaSymbol* _tmp686_ = NULL;
-                       ValaSymbol* _tmp687_ = NULL;
-                       ValaMethod* _tmp688_ = NULL;
-                       _tmp685_ = b;
-                       _tmp686_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp685_);
-                       _tmp687_ = _tmp686_;
-                       _tmp688_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp687_, VALA_TYPE_METHOD, ValaMethod));
-                       m = _tmp688_;
+                       ValaBlock* _tmp683_ = NULL;
+                       ValaSymbol* _tmp684_ = NULL;
+                       ValaSymbol* _tmp685_ = NULL;
+                       ValaMethod* _tmp686_ = NULL;
+                       _tmp683_ = b;
+                       _tmp684_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp683_);
+                       _tmp685_ = _tmp684_;
+                       _tmp686_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp685_, VALA_TYPE_METHOD, ValaMethod));
+                       m = _tmp686_;
                        {
                                ValaList* _param_list = NULL;
-                               ValaMethod* _tmp689_ = NULL;
-                               ValaList* _tmp690_ = NULL;
+                               ValaMethod* _tmp687_ = NULL;
+                               ValaList* _tmp688_ = NULL;
                                gint _param_size = 0;
-                               ValaList* _tmp691_ = NULL;
-                               gint _tmp692_ = 0;
-                               gint _tmp693_ = 0;
+                               ValaList* _tmp689_ = NULL;
+                               gint _tmp690_ = 0;
+                               gint _tmp691_ = 0;
                                gint _param_index = 0;
-                               _tmp689_ = m;
-                               _tmp690_ = vala_method_get_parameters (_tmp689_);
-                               _param_list = _tmp690_;
-                               _tmp691_ = _param_list;
-                               _tmp692_ = vala_collection_get_size ((ValaCollection*) _tmp691_);
-                               _tmp693_ = _tmp692_;
-                               _param_size = _tmp693_;
+                               _tmp687_ = m;
+                               _tmp688_ = vala_method_get_parameters (_tmp687_);
+                               _param_list = _tmp688_;
+                               _tmp689_ = _param_list;
+                               _tmp690_ = vala_collection_get_size ((ValaCollection*) _tmp689_);
+                               _tmp691_ = _tmp690_;
+                               _param_size = _tmp691_;
                                _param_index = -1;
                                while (TRUE) {
+                                       gint _tmp692_ = 0;
+                                       gint _tmp693_ = 0;
                                        gint _tmp694_ = 0;
-                                       gint _tmp695_ = 0;
-                                       gint _tmp696_ = 0;
                                        ValaParameter* param = NULL;
-                                       ValaList* _tmp697_ = NULL;
-                                       gint _tmp698_ = 0;
-                                       gpointer _tmp699_ = NULL;
-                                       ValaParameter* _tmp700_ = NULL;
-                                       gboolean _tmp701_ = FALSE;
-                                       gboolean _tmp702_ = FALSE;
-                                       _tmp694_ = _param_index;
-                                       _param_index = _tmp694_ + 1;
-                                       _tmp695_ = _param_index;
-                                       _tmp696_ = _param_size;
-                                       if (!(_tmp695_ < _tmp696_)) {
+                                       ValaList* _tmp695_ = NULL;
+                                       gint _tmp696_ = 0;
+                                       gpointer _tmp697_ = NULL;
+                                       ValaParameter* _tmp698_ = NULL;
+                                       gboolean _tmp699_ = FALSE;
+                                       gboolean _tmp700_ = FALSE;
+                                       _tmp692_ = _param_index;
+                                       _param_index = _tmp692_ + 1;
+                                       _tmp693_ = _param_index;
+                                       _tmp694_ = _param_size;
+                                       if (!(_tmp693_ < _tmp694_)) {
                                                break;
                                        }
-                                       _tmp697_ = _param_list;
-                                       _tmp698_ = _param_index;
-                                       _tmp699_ = vala_list_get (_tmp697_, _tmp698_);
-                                       param = (ValaParameter*) _tmp699_;
-                                       _tmp700_ = param;
-                                       _tmp701_ = vala_parameter_get_captured (_tmp700_);
-                                       _tmp702_ = _tmp701_;
-                                       if (_tmp702_) {
+                                       _tmp695_ = _param_list;
+                                       _tmp696_ = _param_index;
+                                       _tmp697_ = vala_list_get (_tmp695_, _tmp696_);
+                                       param = (ValaParameter*) _tmp697_;
+                                       _tmp698_ = param;
+                                       _tmp699_ = vala_parameter_get_captured (_tmp698_);
+                                       _tmp700_ = _tmp699_;
+                                       if (_tmp700_) {
                                                ValaDataType* param_type = NULL;
-                                               ValaParameter* _tmp703_ = NULL;
+                                               ValaParameter* _tmp701_ = NULL;
+                                               ValaDataType* _tmp702_ = NULL;
+                                               ValaDataType* _tmp703_ = NULL;
                                                ValaDataType* _tmp704_ = NULL;
                                                ValaDataType* _tmp705_ = NULL;
-                                               ValaDataType* _tmp706_ = NULL;
-                                               ValaDataType* _tmp707_ = NULL;
-                                               gboolean _tmp708_ = FALSE;
-                                               gboolean _tmp709_ = FALSE;
-                                               ValaDataType* _tmp713_ = NULL;
-                                               gboolean _tmp714_ = FALSE;
-                                               _tmp703_ = param;
-                                               _tmp704_ = vala_variable_get_variable_type ((ValaVariable*) _tmp703_);
-                                               _tmp705_ = _tmp704_;
-                                               _tmp706_ = vala_data_type_copy (_tmp705_);
-                                               param_type = _tmp706_;
-                                               _tmp707_ = param_type;
-                                               _tmp708_ = vala_data_type_get_value_owned (_tmp707_);
-                                               _tmp709_ = _tmp708_;
-                                               if (!_tmp709_) {
-                                                       ValaDataType* _tmp710_ = NULL;
-                                                       ValaDataType* _tmp711_ = NULL;
-                                                       gboolean _tmp712_ = FALSE;
-                                                       _tmp710_ = param_type;
-                                                       _tmp711_ = param_type;
-                                                       _tmp712_ = vala_ccode_base_module_no_implicit_copy (self, _tmp711_);
-                                                       vala_data_type_set_value_owned (_tmp710_, !_tmp712_);
+                                               gboolean _tmp706_ = FALSE;
+                                               gboolean _tmp707_ = FALSE;
+                                               ValaDataType* _tmp711_ = NULL;
+                                               gboolean _tmp712_ = FALSE;
+                                               _tmp701_ = param;
+                                               _tmp702_ = vala_variable_get_variable_type ((ValaVariable*) _tmp701_);
+                                               _tmp703_ = _tmp702_;
+                                               _tmp704_ = vala_data_type_copy (_tmp703_);
+                                               param_type = _tmp704_;
+                                               _tmp705_ = param_type;
+                                               _tmp706_ = vala_data_type_get_value_owned (_tmp705_);
+                                               _tmp707_ = _tmp706_;
+                                               if (!_tmp707_) {
+                                                       ValaDataType* _tmp708_ = NULL;
+                                                       ValaDataType* _tmp709_ = NULL;
+                                                       gboolean _tmp710_ = FALSE;
+                                                       _tmp708_ = param_type;
+                                                       _tmp709_ = param_type;
+                                                       _tmp710_ = vala_ccode_base_module_no_implicit_copy (self, _tmp709_);
+                                                       vala_data_type_set_value_owned (_tmp708_, !_tmp710_);
                                                }
-                                               _tmp713_ = param_type;
-                                               _tmp714_ = vala_ccode_base_module_requires_destroy (self, _tmp713_);
-                                               if (_tmp714_) {
+                                               _tmp711_ = param_type;
+                                               _tmp712_ = vala_ccode_base_module_requires_destroy (self, _tmp711_);
+                                               if (_tmp712_) {
                                                        gboolean old_coroutine = FALSE;
-                                                       ValaMethod* _tmp715_ = NULL;
-                                                       ValaCCodeFunction* _tmp720_ = NULL;
-                                                       ValaCCodeFunction* _tmp721_ = NULL;
-                                                       ValaParameter* _tmp722_ = NULL;
-                                                       ValaCCodeExpression* _tmp723_ = NULL;
-                                                       ValaCCodeExpression* _tmp724_ = NULL;
-                                                       gboolean _tmp725_ = FALSE;
+                                                       ValaMethod* _tmp713_ = NULL;
+                                                       ValaCCodeFunction* _tmp718_ = NULL;
+                                                       ValaCCodeFunction* _tmp719_ = NULL;
+                                                       ValaParameter* _tmp720_ = NULL;
+                                                       ValaCCodeExpression* _tmp721_ = NULL;
+                                                       ValaCCodeExpression* _tmp722_ = NULL;
+                                                       gboolean _tmp723_ = FALSE;
                                                        old_coroutine = FALSE;
-                                                       _tmp715_ = m;
-                                                       if (_tmp715_ != NULL) {
-                                                               ValaMethod* _tmp716_ = NULL;
-                                                               gboolean _tmp717_ = FALSE;
-                                                               gboolean _tmp718_ = FALSE;
-                                                               ValaMethod* _tmp719_ = NULL;
-                                                               _tmp716_ = m;
-                                                               _tmp717_ = vala_method_get_coroutine (_tmp716_);
-                                                               _tmp718_ = _tmp717_;
-                                                               old_coroutine = _tmp718_;
-                                                               _tmp719_ = m;
-                                                               vala_method_set_coroutine (_tmp719_, FALSE);
+                                                       _tmp713_ = m;
+                                                       if (_tmp713_ != NULL) {
+                                                               ValaMethod* _tmp714_ = NULL;
+                                                               gboolean _tmp715_ = FALSE;
+                                                               gboolean _tmp716_ = FALSE;
+                                                               ValaMethod* _tmp717_ = NULL;
+                                                               _tmp714_ = m;
+                                                               _tmp715_ = vala_method_get_coroutine (_tmp714_);
+                                                               _tmp716_ = _tmp715_;
+                                                               old_coroutine = _tmp716_;
+                                                               _tmp717_ = m;
+                                                               vala_method_set_coroutine (_tmp717_, FALSE);
                                                        }
-                                                       _tmp720_ = vala_ccode_base_module_get_ccode (self);
-                                                       _tmp721_ = _tmp720_;
-                                                       _tmp722_ = param;
-                                                       _tmp723_ = vala_ccode_base_module_destroy_parameter (self, _tmp722_);
-                                                       _tmp724_ = _tmp723_;
-                                                       vala_ccode_function_add_expression (_tmp721_, _tmp724_);
-                                                       _vala_ccode_node_unref0 (_tmp724_);
-                                                       _tmp725_ = old_coroutine;
-                                                       if (_tmp725_) {
-                                                               ValaMethod* _tmp726_ = NULL;
-                                                               _tmp726_ = m;
-                                                               vala_method_set_coroutine (_tmp726_, TRUE);
+                                                       _tmp718_ = vala_ccode_base_module_get_ccode (self);
+                                                       _tmp719_ = _tmp718_;
+                                                       _tmp720_ = param;
+                                                       _tmp721_ = vala_ccode_base_module_destroy_parameter (self, _tmp720_);
+                                                       _tmp722_ = _tmp721_;
+                                                       vala_ccode_function_add_expression (_tmp719_, _tmp722_);
+                                                       _vala_ccode_node_unref0 (_tmp722_);
+                                                       _tmp723_ = old_coroutine;
+                                                       if (_tmp723_) {
+                                                               ValaMethod* _tmp724_ = NULL;
+                                                               _tmp724_ = m;
+                                                               vala_method_set_coroutine (_tmp724_, TRUE);
                                                        }
                                                }
                                                _vala_code_node_unref0 (param_type);
@@ -12024,299 +12272,299 @@ static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, Vala
                        }
                        _vala_code_node_unref0 (m);
                } else {
-                       ValaBlock* _tmp727_ = NULL;
-                       ValaSymbol* _tmp728_ = NULL;
-                       ValaSymbol* _tmp729_ = NULL;
-                       _tmp727_ = b;
-                       _tmp728_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp727_);
-                       _tmp729_ = _tmp728_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp729_, VALA_TYPE_PROPERTY_ACCESSOR)) {
+                       ValaBlock* _tmp725_ = NULL;
+                       ValaSymbol* _tmp726_ = NULL;
+                       ValaSymbol* _tmp727_ = NULL;
+                       _tmp725_ = b;
+                       _tmp726_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp725_);
+                       _tmp727_ = _tmp726_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp727_, VALA_TYPE_PROPERTY_ACCESSOR)) {
                                ValaPropertyAccessor* acc = NULL;
-                               ValaBlock* _tmp730_ = NULL;
-                               ValaSymbol* _tmp731_ = NULL;
-                               ValaSymbol* _tmp732_ = NULL;
+                               ValaBlock* _tmp728_ = NULL;
+                               ValaSymbol* _tmp729_ = NULL;
+                               ValaSymbol* _tmp730_ = NULL;
+                               ValaPropertyAccessor* _tmp731_ = NULL;
+                               gboolean _tmp732_ = FALSE;
                                ValaPropertyAccessor* _tmp733_ = NULL;
                                gboolean _tmp734_ = FALSE;
-                               ValaPropertyAccessor* _tmp735_ = NULL;
-                               gboolean _tmp736_ = FALSE;
-                               gboolean _tmp737_ = FALSE;
-                               _tmp730_ = b;
-                               _tmp731_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp730_);
-                               _tmp732_ = _tmp731_;
-                               _tmp733_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp732_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
-                               acc = _tmp733_;
-                               _tmp735_ = acc;
-                               _tmp736_ = vala_property_accessor_get_readable (_tmp735_);
-                               _tmp737_ = _tmp736_;
-                               if (!_tmp737_) {
-                                       ValaPropertyAccessor* _tmp738_ = NULL;
-                                       ValaParameter* _tmp739_ = NULL;
-                                       ValaParameter* _tmp740_ = NULL;
-                                       gboolean _tmp741_ = FALSE;
-                                       gboolean _tmp742_ = FALSE;
-                                       _tmp738_ = acc;
-                                       _tmp739_ = vala_property_accessor_get_value_parameter (_tmp738_);
+                               gboolean _tmp735_ = FALSE;
+                               _tmp728_ = b;
+                               _tmp729_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp728_);
+                               _tmp730_ = _tmp729_;
+                               _tmp731_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp730_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
+                               acc = _tmp731_;
+                               _tmp733_ = acc;
+                               _tmp734_ = vala_property_accessor_get_readable (_tmp733_);
+                               _tmp735_ = _tmp734_;
+                               if (!_tmp735_) {
+                                       ValaPropertyAccessor* _tmp736_ = NULL;
+                                       ValaParameter* _tmp737_ = NULL;
+                                       ValaParameter* _tmp738_ = NULL;
+                                       gboolean _tmp739_ = FALSE;
+                                       gboolean _tmp740_ = FALSE;
+                                       _tmp736_ = acc;
+                                       _tmp737_ = vala_property_accessor_get_value_parameter (_tmp736_);
+                                       _tmp738_ = _tmp737_;
+                                       _tmp739_ = vala_parameter_get_captured (_tmp738_);
                                        _tmp740_ = _tmp739_;
-                                       _tmp741_ = vala_parameter_get_captured (_tmp740_);
-                                       _tmp742_ = _tmp741_;
-                                       _tmp734_ = _tmp742_;
+                                       _tmp732_ = _tmp740_;
                                } else {
-                                       _tmp734_ = FALSE;
+                                       _tmp732_ = FALSE;
                                }
-                               if (_tmp734_) {
+                               if (_tmp732_) {
                                        ValaDataType* param_type = NULL;
-                                       ValaPropertyAccessor* _tmp743_ = NULL;
-                                       ValaParameter* _tmp744_ = NULL;
-                                       ValaParameter* _tmp745_ = NULL;
+                                       ValaPropertyAccessor* _tmp741_ = NULL;
+                                       ValaParameter* _tmp742_ = NULL;
+                                       ValaParameter* _tmp743_ = NULL;
+                                       ValaDataType* _tmp744_ = NULL;
+                                       ValaDataType* _tmp745_ = NULL;
                                        ValaDataType* _tmp746_ = NULL;
                                        ValaDataType* _tmp747_ = NULL;
-                                       ValaDataType* _tmp748_ = NULL;
-                                       ValaDataType* _tmp749_ = NULL;
-                                       gboolean _tmp750_ = FALSE;
-                                       gboolean _tmp751_ = FALSE;
-                                       ValaDataType* _tmp755_ = NULL;
-                                       gboolean _tmp756_ = FALSE;
-                                       _tmp743_ = acc;
-                                       _tmp744_ = vala_property_accessor_get_value_parameter (_tmp743_);
+                                       gboolean _tmp748_ = FALSE;
+                                       gboolean _tmp749_ = FALSE;
+                                       ValaDataType* _tmp753_ = NULL;
+                                       gboolean _tmp754_ = FALSE;
+                                       _tmp741_ = acc;
+                                       _tmp742_ = vala_property_accessor_get_value_parameter (_tmp741_);
+                                       _tmp743_ = _tmp742_;
+                                       _tmp744_ = vala_variable_get_variable_type ((ValaVariable*) _tmp743_);
                                        _tmp745_ = _tmp744_;
-                                       _tmp746_ = vala_variable_get_variable_type ((ValaVariable*) _tmp745_);
-                                       _tmp747_ = _tmp746_;
-                                       _tmp748_ = vala_data_type_copy (_tmp747_);
-                                       param_type = _tmp748_;
-                                       _tmp749_ = param_type;
-                                       _tmp750_ = vala_data_type_get_value_owned (_tmp749_);
-                                       _tmp751_ = _tmp750_;
-                                       if (!_tmp751_) {
-                                               ValaDataType* _tmp752_ = NULL;
-                                               ValaDataType* _tmp753_ = NULL;
-                                               gboolean _tmp754_ = FALSE;
-                                               _tmp752_ = param_type;
-                                               _tmp753_ = param_type;
-                                               _tmp754_ = vala_ccode_base_module_no_implicit_copy (self, _tmp753_);
-                                               vala_data_type_set_value_owned (_tmp752_, !_tmp754_);
+                                       _tmp746_ = vala_data_type_copy (_tmp745_);
+                                       param_type = _tmp746_;
+                                       _tmp747_ = param_type;
+                                       _tmp748_ = vala_data_type_get_value_owned (_tmp747_);
+                                       _tmp749_ = _tmp748_;
+                                       if (!_tmp749_) {
+                                               ValaDataType* _tmp750_ = NULL;
+                                               ValaDataType* _tmp751_ = NULL;
+                                               gboolean _tmp752_ = FALSE;
+                                               _tmp750_ = param_type;
+                                               _tmp751_ = param_type;
+                                               _tmp752_ = vala_ccode_base_module_no_implicit_copy (self, _tmp751_);
+                                               vala_data_type_set_value_owned (_tmp750_, !_tmp752_);
                                        }
-                                       _tmp755_ = param_type;
-                                       _tmp756_ = vala_ccode_base_module_requires_destroy (self, _tmp755_);
-                                       if (_tmp756_) {
-                                               ValaCCodeFunction* _tmp757_ = NULL;
-                                               ValaCCodeFunction* _tmp758_ = NULL;
-                                               ValaPropertyAccessor* _tmp759_ = NULL;
-                                               ValaParameter* _tmp760_ = NULL;
-                                               ValaParameter* _tmp761_ = NULL;
-                                               ValaCCodeExpression* _tmp762_ = NULL;
-                                               ValaCCodeExpression* _tmp763_ = NULL;
-                                               _tmp757_ = vala_ccode_base_module_get_ccode (self);
-                                               _tmp758_ = _tmp757_;
-                                               _tmp759_ = acc;
-                                               _tmp760_ = vala_property_accessor_get_value_parameter (_tmp759_);
+                                       _tmp753_ = param_type;
+                                       _tmp754_ = vala_ccode_base_module_requires_destroy (self, _tmp753_);
+                                       if (_tmp754_) {
+                                               ValaCCodeFunction* _tmp755_ = NULL;
+                                               ValaCCodeFunction* _tmp756_ = NULL;
+                                               ValaPropertyAccessor* _tmp757_ = NULL;
+                                               ValaParameter* _tmp758_ = NULL;
+                                               ValaParameter* _tmp759_ = NULL;
+                                               ValaCCodeExpression* _tmp760_ = NULL;
+                                               ValaCCodeExpression* _tmp761_ = NULL;
+                                               _tmp755_ = vala_ccode_base_module_get_ccode (self);
+                                               _tmp756_ = _tmp755_;
+                                               _tmp757_ = acc;
+                                               _tmp758_ = vala_property_accessor_get_value_parameter (_tmp757_);
+                                               _tmp759_ = _tmp758_;
+                                               _tmp760_ = vala_ccode_base_module_destroy_parameter (self, _tmp759_);
                                                _tmp761_ = _tmp760_;
-                                               _tmp762_ = vala_ccode_base_module_destroy_parameter (self, _tmp761_);
-                                               _tmp763_ = _tmp762_;
-                                               vala_ccode_function_add_expression (_tmp758_, _tmp763_);
-                                               _vala_ccode_node_unref0 (_tmp763_);
+                                               vala_ccode_function_add_expression (_tmp756_, _tmp761_);
+                                               _vala_ccode_node_unref0 (_tmp761_);
                                        }
                                        _vala_code_node_unref0 (param_type);
                                }
                                _vala_code_node_unref0 (acc);
                        }
                }
-               _tmp764_ = parent_block;
-               if (_tmp764_ != NULL) {
+               _tmp762_ = parent_block;
+               if (_tmp762_ != NULL) {
                        gint parent_block_id = 0;
-                       ValaBlock* _tmp765_ = NULL;
-                       gint _tmp766_ = 0;
+                       ValaBlock* _tmp763_ = NULL;
+                       gint _tmp764_ = 0;
                        ValaCCodeFunctionCall* unref_call = NULL;
-                       gint _tmp767_ = 0;
-                       gchar* _tmp768_ = NULL;
-                       gchar* _tmp769_ = NULL;
-                       ValaCCodeIdentifier* _tmp770_ = NULL;
-                       ValaCCodeIdentifier* _tmp771_ = NULL;
+                       gint _tmp765_ = 0;
+                       gchar* _tmp766_ = NULL;
+                       gchar* _tmp767_ = NULL;
+                       ValaCCodeIdentifier* _tmp768_ = NULL;
+                       ValaCCodeIdentifier* _tmp769_ = NULL;
+                       ValaCCodeFunctionCall* _tmp770_ = NULL;
+                       ValaCCodeFunctionCall* _tmp771_ = NULL;
                        ValaCCodeFunctionCall* _tmp772_ = NULL;
-                       ValaCCodeFunctionCall* _tmp773_ = NULL;
-                       ValaCCodeFunctionCall* _tmp774_ = NULL;
-                       gint _tmp775_ = 0;
-                       gchar* _tmp776_ = NULL;
-                       gchar* _tmp777_ = NULL;
-                       ValaCCodeIdentifier* _tmp778_ = NULL;
-                       ValaCCodeIdentifier* _tmp779_ = NULL;
-                       gint _tmp780_ = 0;
-                       gchar* _tmp781_ = NULL;
-                       gchar* _tmp782_ = NULL;
-                       ValaCCodeMemberAccess* _tmp783_ = NULL;
-                       ValaCCodeMemberAccess* _tmp784_ = NULL;
-                       ValaCCodeFunction* _tmp785_ = NULL;
+                       gint _tmp773_ = 0;
+                       gchar* _tmp774_ = NULL;
+                       gchar* _tmp775_ = NULL;
+                       ValaCCodeIdentifier* _tmp776_ = NULL;
+                       ValaCCodeIdentifier* _tmp777_ = NULL;
+                       gint _tmp778_ = 0;
+                       gchar* _tmp779_ = NULL;
+                       gchar* _tmp780_ = NULL;
+                       ValaCCodeMemberAccess* _tmp781_ = NULL;
+                       ValaCCodeMemberAccess* _tmp782_ = NULL;
+                       ValaCCodeFunction* _tmp783_ = NULL;
+                       ValaCCodeFunction* _tmp784_ = NULL;
+                       ValaCCodeFunctionCall* _tmp785_ = NULL;
                        ValaCCodeFunction* _tmp786_ = NULL;
-                       ValaCCodeFunctionCall* _tmp787_ = NULL;
-                       ValaCCodeFunction* _tmp788_ = NULL;
-                       ValaCCodeFunction* _tmp789_ = NULL;
-                       gint _tmp790_ = 0;
-                       gchar* _tmp791_ = NULL;
-                       gchar* _tmp792_ = NULL;
-                       ValaCCodeIdentifier* _tmp793_ = NULL;
-                       ValaCCodeIdentifier* _tmp794_ = NULL;
-                       gint _tmp795_ = 0;
-                       gchar* _tmp796_ = NULL;
-                       gchar* _tmp797_ = NULL;
-                       ValaCCodeMemberAccess* _tmp798_ = NULL;
-                       ValaCCodeMemberAccess* _tmp799_ = NULL;
-                       ValaCCodeConstant* _tmp800_ = NULL;
-                       ValaCCodeConstant* _tmp801_ = NULL;
-                       _tmp765_ = parent_block;
-                       _tmp766_ = vala_ccode_base_module_get_block_id (self, _tmp765_);
-                       parent_block_id = _tmp766_;
-                       _tmp767_ = parent_block_id;
-                       _tmp768_ = g_strdup_printf ("block%d_data_unref", _tmp767_);
+                       ValaCCodeFunction* _tmp787_ = NULL;
+                       gint _tmp788_ = 0;
+                       gchar* _tmp789_ = NULL;
+                       gchar* _tmp790_ = NULL;
+                       ValaCCodeIdentifier* _tmp791_ = NULL;
+                       ValaCCodeIdentifier* _tmp792_ = NULL;
+                       gint _tmp793_ = 0;
+                       gchar* _tmp794_ = NULL;
+                       gchar* _tmp795_ = NULL;
+                       ValaCCodeMemberAccess* _tmp796_ = NULL;
+                       ValaCCodeMemberAccess* _tmp797_ = NULL;
+                       ValaCCodeConstant* _tmp798_ = NULL;
+                       ValaCCodeConstant* _tmp799_ = NULL;
+                       _tmp763_ = parent_block;
+                       _tmp764_ = vala_ccode_base_module_get_block_id (self, _tmp763_);
+                       parent_block_id = _tmp764_;
+                       _tmp765_ = parent_block_id;
+                       _tmp766_ = g_strdup_printf ("block%d_data_unref", _tmp765_);
+                       _tmp767_ = _tmp766_;
+                       _tmp768_ = vala_ccode_identifier_new (_tmp767_);
                        _tmp769_ = _tmp768_;
-                       _tmp770_ = vala_ccode_identifier_new (_tmp769_);
+                       _tmp770_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp769_);
                        _tmp771_ = _tmp770_;
-                       _tmp772_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp771_);
-                       _tmp773_ = _tmp772_;
-                       _vala_ccode_node_unref0 (_tmp771_);
-                       _g_free0 (_tmp769_);
-                       unref_call = _tmp773_;
-                       _tmp774_ = unref_call;
-                       _tmp775_ = block_id;
-                       _tmp776_ = g_strdup_printf ("_data%d_", _tmp775_);
+                       _vala_ccode_node_unref0 (_tmp769_);
+                       _g_free0 (_tmp767_);
+                       unref_call = _tmp771_;
+                       _tmp772_ = unref_call;
+                       _tmp773_ = block_id;
+                       _tmp774_ = g_strdup_printf ("_data%d_", _tmp773_);
+                       _tmp775_ = _tmp774_;
+                       _tmp776_ = vala_ccode_identifier_new (_tmp775_);
                        _tmp777_ = _tmp776_;
-                       _tmp778_ = vala_ccode_identifier_new (_tmp777_);
-                       _tmp779_ = _tmp778_;
-                       _tmp780_ = parent_block_id;
-                       _tmp781_ = g_strdup_printf ("_data%d_", _tmp780_);
+                       _tmp778_ = parent_block_id;
+                       _tmp779_ = g_strdup_printf ("_data%d_", _tmp778_);
+                       _tmp780_ = _tmp779_;
+                       _tmp781_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp777_, _tmp780_);
                        _tmp782_ = _tmp781_;
-                       _tmp783_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp779_, _tmp782_);
+                       vala_ccode_function_call_add_argument (_tmp772_, (ValaCCodeExpression*) _tmp782_);
+                       _vala_ccode_node_unref0 (_tmp782_);
+                       _g_free0 (_tmp780_);
+                       _vala_ccode_node_unref0 (_tmp777_);
+                       _g_free0 (_tmp775_);
+                       _tmp783_ = vala_ccode_base_module_get_ccode (self);
                        _tmp784_ = _tmp783_;
-                       vala_ccode_function_call_add_argument (_tmp774_, (ValaCCodeExpression*) _tmp784_);
-                       _vala_ccode_node_unref0 (_tmp784_);
-                       _g_free0 (_tmp782_);
-                       _vala_ccode_node_unref0 (_tmp779_);
-                       _g_free0 (_tmp777_);
-                       _tmp785_ = vala_ccode_base_module_get_ccode (self);
-                       _tmp786_ = _tmp785_;
-                       _tmp787_ = unref_call;
-                       vala_ccode_function_add_expression (_tmp786_, (ValaCCodeExpression*) _tmp787_);
-                       _tmp788_ = vala_ccode_base_module_get_ccode (self);
-                       _tmp789_ = _tmp788_;
-                       _tmp790_ = block_id;
-                       _tmp791_ = g_strdup_printf ("_data%d_", _tmp790_);
+                       _tmp785_ = unref_call;
+                       vala_ccode_function_add_expression (_tmp784_, (ValaCCodeExpression*) _tmp785_);
+                       _tmp786_ = vala_ccode_base_module_get_ccode (self);
+                       _tmp787_ = _tmp786_;
+                       _tmp788_ = block_id;
+                       _tmp789_ = g_strdup_printf ("_data%d_", _tmp788_);
+                       _tmp790_ = _tmp789_;
+                       _tmp791_ = vala_ccode_identifier_new (_tmp790_);
                        _tmp792_ = _tmp791_;
-                       _tmp793_ = vala_ccode_identifier_new (_tmp792_);
-                       _tmp794_ = _tmp793_;
-                       _tmp795_ = parent_block_id;
-                       _tmp796_ = g_strdup_printf ("_data%d_", _tmp795_);
+                       _tmp793_ = parent_block_id;
+                       _tmp794_ = g_strdup_printf ("_data%d_", _tmp793_);
+                       _tmp795_ = _tmp794_;
+                       _tmp796_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp792_, _tmp795_);
                        _tmp797_ = _tmp796_;
-                       _tmp798_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp794_, _tmp797_);
+                       _tmp798_ = vala_ccode_constant_new ("NULL");
                        _tmp799_ = _tmp798_;
-                       _tmp800_ = vala_ccode_constant_new ("NULL");
-                       _tmp801_ = _tmp800_;
-                       vala_ccode_function_add_assignment (_tmp789_, (ValaCCodeExpression*) _tmp799_, (ValaCCodeExpression*) _tmp801_);
-                       _vala_ccode_node_unref0 (_tmp801_);
+                       vala_ccode_function_add_assignment (_tmp787_, (ValaCCodeExpression*) _tmp797_, (ValaCCodeExpression*) _tmp799_);
                        _vala_ccode_node_unref0 (_tmp799_);
-                       _g_free0 (_tmp797_);
-                       _vala_ccode_node_unref0 (_tmp794_);
-                       _g_free0 (_tmp792_);
+                       _vala_ccode_node_unref0 (_tmp797_);
+                       _g_free0 (_tmp795_);
+                       _vala_ccode_node_unref0 (_tmp792_);
+                       _g_free0 (_tmp790_);
                        _vala_ccode_node_unref0 (unref_call);
                } else {
                        ValaDataType* this_type = NULL;
-                       ValaDataType* _tmp802_ = NULL;
-                       ValaDataType* _tmp803_ = NULL;
-                       _tmp802_ = vala_ccode_base_module_get_this_type (self);
-                       this_type = _tmp802_;
-                       _tmp803_ = this_type;
-                       if (_tmp803_ != NULL) {
+                       ValaDataType* _tmp800_ = NULL;
+                       ValaDataType* _tmp801_ = NULL;
+                       _tmp800_ = vala_ccode_base_module_get_this_type (self);
+                       this_type = _tmp800_;
+                       _tmp801_ = this_type;
+                       if (_tmp801_ != NULL) {
+                               ValaDataType* _tmp802_ = NULL;
+                               ValaDataType* _tmp803_ = NULL;
                                ValaDataType* _tmp804_ = NULL;
-                               ValaDataType* _tmp805_ = NULL;
+                               gboolean _tmp805_ = FALSE;
                                ValaDataType* _tmp806_ = NULL;
                                gboolean _tmp807_ = FALSE;
-                               ValaDataType* _tmp808_ = NULL;
-                               gboolean _tmp809_ = FALSE;
-                               _tmp804_ = this_type;
-                               _tmp805_ = vala_data_type_copy (_tmp804_);
+                               _tmp802_ = this_type;
+                               _tmp803_ = vala_data_type_copy (_tmp802_);
                                _vala_code_node_unref0 (this_type);
-                               this_type = _tmp805_;
+                               this_type = _tmp803_;
+                               _tmp804_ = this_type;
+                               vala_data_type_set_value_owned (_tmp804_, TRUE);
                                _tmp806_ = this_type;
-                               vala_data_type_set_value_owned (_tmp806_, TRUE);
-                               _tmp808_ = this_type;
-                               _tmp809_ = vala_data_type_is_disposable (_tmp808_);
-                               if (_tmp809_) {
-                                       gboolean _tmp810_ = FALSE;
-                                       _tmp810_ = vala_ccode_base_module_is_in_destructor (self);
-                                       _tmp807_ = !_tmp810_;
+                               _tmp807_ = vala_data_type_is_disposable (_tmp806_);
+                               if (_tmp807_) {
+                                       gboolean _tmp808_ = FALSE;
+                                       _tmp808_ = vala_ccode_base_module_is_in_destructor (self);
+                                       _tmp805_ = !_tmp808_;
                                } else {
-                                       _tmp807_ = FALSE;
+                                       _tmp805_ = FALSE;
                                }
-                               if (_tmp807_) {
+                               if (_tmp805_) {
                                        ValaGLibValue* this_value = NULL;
-                                       ValaTypeSymbol* _tmp811_ = NULL;
-                                       ValaTypeSymbol* _tmp812_ = NULL;
-                                       ValaDataType* _tmp813_ = NULL;
-                                       ValaDataType* _tmp814_ = NULL;
-                                       ValaCCodeIdentifier* _tmp815_ = NULL;
-                                       ValaCCodeIdentifier* _tmp816_ = NULL;
-                                       ValaGLibValue* _tmp817_ = NULL;
-                                       ValaGLibValue* _tmp818_ = NULL;
-                                       ValaCCodeFunction* _tmp819_ = NULL;
-                                       ValaCCodeFunction* _tmp820_ = NULL;
-                                       ValaGLibValue* _tmp821_ = NULL;
-                                       ValaCCodeExpression* _tmp822_ = NULL;
-                                       ValaCCodeExpression* _tmp823_ = NULL;
-                                       _tmp811_ = vala_ccode_base_module_get_current_type_symbol (self);
+                                       ValaTypeSymbol* _tmp809_ = NULL;
+                                       ValaTypeSymbol* _tmp810_ = NULL;
+                                       ValaDataType* _tmp811_ = NULL;
+                                       ValaDataType* _tmp812_ = NULL;
+                                       ValaCCodeIdentifier* _tmp813_ = NULL;
+                                       ValaCCodeIdentifier* _tmp814_ = NULL;
+                                       ValaGLibValue* _tmp815_ = NULL;
+                                       ValaGLibValue* _tmp816_ = NULL;
+                                       ValaCCodeFunction* _tmp817_ = NULL;
+                                       ValaCCodeFunction* _tmp818_ = NULL;
+                                       ValaGLibValue* _tmp819_ = NULL;
+                                       ValaCCodeExpression* _tmp820_ = NULL;
+                                       ValaCCodeExpression* _tmp821_ = NULL;
+                                       _tmp809_ = vala_ccode_base_module_get_current_type_symbol (self);
+                                       _tmp810_ = _tmp809_;
+                                       _tmp811_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp810_);
                                        _tmp812_ = _tmp811_;
-                                       _tmp813_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp812_);
+                                       _tmp813_ = vala_ccode_identifier_new ("self");
                                        _tmp814_ = _tmp813_;
-                                       _tmp815_ = vala_ccode_identifier_new ("self");
+                                       _tmp815_ = vala_glib_value_new (_tmp812_, (ValaCCodeExpression*) _tmp814_, TRUE);
                                        _tmp816_ = _tmp815_;
-                                       _tmp817_ = vala_glib_value_new (_tmp814_, (ValaCCodeExpression*) _tmp816_, TRUE);
+                                       _vala_ccode_node_unref0 (_tmp814_);
+                                       _vala_code_node_unref0 (_tmp812_);
+                                       this_value = _tmp816_;
+                                       _tmp817_ = vala_ccode_base_module_get_ccode (self);
                                        _tmp818_ = _tmp817_;
-                                       _vala_ccode_node_unref0 (_tmp816_);
-                                       _vala_code_node_unref0 (_tmp814_);
-                                       this_value = _tmp818_;
-                                       _tmp819_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp820_ = _tmp819_;
-                                       _tmp821_ = this_value;
-                                       _tmp822_ = vala_ccode_base_module_destroy_value (self, (ValaTargetValue*) _tmp821_, FALSE);
-                                       _tmp823_ = _tmp822_;
-                                       vala_ccode_function_add_expression (_tmp820_, _tmp823_);
-                                       _vala_ccode_node_unref0 (_tmp823_);
+                                       _tmp819_ = this_value;
+                                       _tmp820_ = vala_ccode_base_module_destroy_value (self, (ValaTargetValue*) _tmp819_, FALSE);
+                                       _tmp821_ = _tmp820_;
+                                       vala_ccode_function_add_expression (_tmp818_, _tmp821_);
+                                       _vala_ccode_node_unref0 (_tmp821_);
                                        _vala_target_value_unref0 (this_value);
                                }
                        }
                        _vala_code_node_unref0 (this_type);
                }
-               _tmp824_ = vala_ccode_identifier_new ("g_slice_free");
+               _tmp822_ = vala_ccode_identifier_new ("g_slice_free");
+               _tmp823_ = _tmp822_;
+               _tmp824_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp823_);
                _tmp825_ = _tmp824_;
-               _tmp826_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp825_);
-               _tmp827_ = _tmp826_;
-               _vala_ccode_node_unref0 (_tmp825_);
-               data_free = _tmp827_;
-               _tmp828_ = data_free;
-               _tmp829_ = struct_name;
-               _tmp830_ = vala_ccode_identifier_new (_tmp829_);
-               _tmp831_ = _tmp830_;
-               vala_ccode_function_call_add_argument (_tmp828_, (ValaCCodeExpression*) _tmp831_);
-               _vala_ccode_node_unref0 (_tmp831_);
-               _tmp832_ = data_free;
-               _tmp833_ = block_id;
-               _tmp834_ = g_strdup_printf ("_data%d_", _tmp833_);
+               _vala_ccode_node_unref0 (_tmp823_);
+               data_free = _tmp825_;
+               _tmp826_ = data_free;
+               _tmp827_ = struct_name;
+               _tmp828_ = vala_ccode_identifier_new (_tmp827_);
+               _tmp829_ = _tmp828_;
+               vala_ccode_function_call_add_argument (_tmp826_, (ValaCCodeExpression*) _tmp829_);
+               _vala_ccode_node_unref0 (_tmp829_);
+               _tmp830_ = data_free;
+               _tmp831_ = block_id;
+               _tmp832_ = g_strdup_printf ("_data%d_", _tmp831_);
+               _tmp833_ = _tmp832_;
+               _tmp834_ = vala_ccode_identifier_new (_tmp833_);
                _tmp835_ = _tmp834_;
-               _tmp836_ = vala_ccode_identifier_new (_tmp835_);
+               vala_ccode_function_call_add_argument (_tmp830_, (ValaCCodeExpression*) _tmp835_);
+               _vala_ccode_node_unref0 (_tmp835_);
+               _g_free0 (_tmp833_);
+               _tmp836_ = vala_ccode_base_module_get_ccode (self);
                _tmp837_ = _tmp836_;
-               vala_ccode_function_call_add_argument (_tmp832_, (ValaCCodeExpression*) _tmp837_);
-               _vala_ccode_node_unref0 (_tmp837_);
-               _g_free0 (_tmp835_);
-               _tmp838_ = vala_ccode_base_module_get_ccode (self);
-               _tmp839_ = _tmp838_;
-               _tmp840_ = data_free;
-               vala_ccode_function_add_expression (_tmp839_, (ValaCCodeExpression*) _tmp840_);
-               _tmp841_ = vala_ccode_base_module_get_ccode (self);
-               _tmp842_ = _tmp841_;
-               vala_ccode_function_close (_tmp842_);
+               _tmp838_ = data_free;
+               vala_ccode_function_add_expression (_tmp837_, (ValaCCodeExpression*) _tmp838_);
+               _tmp839_ = vala_ccode_base_module_get_ccode (self);
+               _tmp840_ = _tmp839_;
+               vala_ccode_function_close (_tmp840_);
                vala_ccode_base_module_pop_function (self);
+               _tmp841_ = self->cfile;
+               _tmp842_ = unref_fun;
+               vala_ccode_file_add_function_declaration (_tmp841_, _tmp842_);
                _tmp843_ = self->cfile;
                _tmp844_ = unref_fun;
-               vala_ccode_file_add_function_declaration (_tmp843_, _tmp844_);
-               _tmp845_ = self->cfile;
-               _tmp846_ = unref_fun;
-               vala_ccode_file_add_function (_tmp845_, _tmp846_);
+               vala_ccode_file_add_function (_tmp843_, _tmp844_);
                _vala_ccode_node_unref0 (data_free);
                _vala_ccode_node_unref0 (outer_block);
                _vala_ccode_node_unref0 (unref_fun);
@@ -12330,50 +12578,50 @@ static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, Vala
        }
        {
                ValaList* _stmt_list = NULL;
-               ValaBlock* _tmp847_ = NULL;
-               ValaList* _tmp848_ = NULL;
+               ValaBlock* _tmp845_ = NULL;
+               ValaList* _tmp846_ = NULL;
                gint _stmt_size = 0;
-               ValaList* _tmp849_ = NULL;
-               gint _tmp850_ = 0;
-               gint _tmp851_ = 0;
+               ValaList* _tmp847_ = NULL;
+               gint _tmp848_ = 0;
+               gint _tmp849_ = 0;
                gint _stmt_index = 0;
-               _tmp847_ = b;
-               _tmp848_ = vala_block_get_statements (_tmp847_);
-               _stmt_list = _tmp848_;
-               _tmp849_ = _stmt_list;
-               _tmp850_ = vala_collection_get_size ((ValaCollection*) _tmp849_);
-               _tmp851_ = _tmp850_;
-               _stmt_size = _tmp851_;
+               _tmp845_ = b;
+               _tmp846_ = vala_block_get_statements (_tmp845_);
+               _stmt_list = _tmp846_;
+               _tmp847_ = _stmt_list;
+               _tmp848_ = vala_collection_get_size ((ValaCollection*) _tmp847_);
+               _tmp849_ = _tmp848_;
+               _stmt_size = _tmp849_;
                _stmt_index = -1;
                while (TRUE) {
+                       gint _tmp850_ = 0;
+                       gint _tmp851_ = 0;
                        gint _tmp852_ = 0;
-                       gint _tmp853_ = 0;
-                       gint _tmp854_ = 0;
                        ValaStatement* stmt = NULL;
-                       ValaList* _tmp855_ = NULL;
-                       gint _tmp856_ = 0;
-                       gpointer _tmp857_ = NULL;
-                       ValaStatement* _tmp858_ = NULL;
-                       ValaSourceReference* _tmp859_ = NULL;
-                       ValaSourceReference* _tmp860_ = NULL;
-                       ValaStatement* _tmp861_ = NULL;
-                       _tmp852_ = _stmt_index;
-                       _stmt_index = _tmp852_ + 1;
-                       _tmp853_ = _stmt_index;
-                       _tmp854_ = _stmt_size;
-                       if (!(_tmp853_ < _tmp854_)) {
+                       ValaList* _tmp853_ = NULL;
+                       gint _tmp854_ = 0;
+                       gpointer _tmp855_ = NULL;
+                       ValaStatement* _tmp856_ = NULL;
+                       ValaSourceReference* _tmp857_ = NULL;
+                       ValaSourceReference* _tmp858_ = NULL;
+                       ValaStatement* _tmp859_ = NULL;
+                       _tmp850_ = _stmt_index;
+                       _stmt_index = _tmp850_ + 1;
+                       _tmp851_ = _stmt_index;
+                       _tmp852_ = _stmt_size;
+                       if (!(_tmp851_ < _tmp852_)) {
                                break;
                        }
-                       _tmp855_ = _stmt_list;
-                       _tmp856_ = _stmt_index;
-                       _tmp857_ = vala_list_get (_tmp855_, _tmp856_);
-                       stmt = (ValaStatement*) _tmp857_;
-                       _tmp858_ = stmt;
-                       _tmp859_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp858_);
-                       _tmp860_ = _tmp859_;
-                       vala_ccode_base_module_push_line (self, _tmp860_);
-                       _tmp861_ = stmt;
-                       vala_code_node_emit ((ValaCodeNode*) _tmp861_, (ValaCodeGenerator*) self);
+                       _tmp853_ = _stmt_list;
+                       _tmp854_ = _stmt_index;
+                       _tmp855_ = vala_list_get (_tmp853_, _tmp854_);
+                       stmt = (ValaStatement*) _tmp855_;
+                       _tmp856_ = stmt;
+                       _tmp857_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp856_);
+                       _tmp858_ = _tmp857_;
+                       vala_ccode_base_module_push_line (self, _tmp858_);
+                       _tmp859_ = stmt;
+                       vala_code_node_emit ((ValaCodeNode*) _tmp859_, (ValaCodeGenerator*) self);
                        vala_ccode_base_module_pop_line (self);
                        _vala_code_node_unref0 (stmt);
                }
@@ -12381,219 +12629,219 @@ static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, Vala
        }
        {
                gint i = 0;
-               ValaList* _tmp862_ = NULL;
-               gint _tmp863_ = 0;
-               gint _tmp864_ = 0;
-               _tmp862_ = local_vars;
-               _tmp863_ = vala_collection_get_size ((ValaCollection*) _tmp862_);
-               _tmp864_ = _tmp863_;
-               i = _tmp864_ - 1;
+               ValaList* _tmp860_ = NULL;
+               gint _tmp861_ = 0;
+               gint _tmp862_ = 0;
+               _tmp860_ = local_vars;
+               _tmp861_ = vala_collection_get_size ((ValaCollection*) _tmp860_);
+               _tmp862_ = _tmp861_;
+               i = _tmp862_ - 1;
                {
-                       gboolean _tmp865_ = FALSE;
-                       _tmp865_ = TRUE;
+                       gboolean _tmp863_ = FALSE;
+                       _tmp863_ = TRUE;
                        while (TRUE) {
-                               gint _tmp867_ = 0;
+                               gint _tmp865_ = 0;
                                ValaLocalVariable* local = NULL;
-                               ValaList* _tmp868_ = NULL;
-                               gint _tmp869_ = 0;
-                               gpointer _tmp870_ = NULL;
-                               ValaLocalVariable* _tmp871_ = NULL;
-                               gboolean _tmp872_ = FALSE;
+                               ValaList* _tmp866_ = NULL;
+                               gint _tmp867_ = 0;
+                               gpointer _tmp868_ = NULL;
+                               ValaLocalVariable* _tmp869_ = NULL;
+                               gboolean _tmp870_ = FALSE;
+                               gboolean _tmp871_ = FALSE;
+                               ValaLocalVariable* _tmp872_ = NULL;
                                gboolean _tmp873_ = FALSE;
-                               ValaLocalVariable* _tmp874_ = NULL;
-                               gboolean _tmp875_ = FALSE;
-                               gboolean _tmp876_ = FALSE;
-                               if (!_tmp865_) {
-                                       gint _tmp866_ = 0;
-                                       _tmp866_ = i;
-                                       i = _tmp866_ - 1;
+                               gboolean _tmp874_ = FALSE;
+                               if (!_tmp863_) {
+                                       gint _tmp864_ = 0;
+                                       _tmp864_ = i;
+                                       i = _tmp864_ - 1;
                                }
-                               _tmp865_ = FALSE;
-                               _tmp867_ = i;
-                               if (!(_tmp867_ >= 0)) {
+                               _tmp863_ = FALSE;
+                               _tmp865_ = i;
+                               if (!(_tmp865_ >= 0)) {
                                        break;
                                }
-                               _tmp868_ = local_vars;
-                               _tmp869_ = i;
-                               _tmp870_ = vala_list_get (_tmp868_, _tmp869_);
-                               local = (ValaLocalVariable*) _tmp870_;
-                               _tmp871_ = local;
-                               vala_symbol_set_active ((ValaSymbol*) _tmp871_, FALSE);
-                               _tmp874_ = local;
-                               _tmp875_ = vala_code_node_get_unreachable ((ValaCodeNode*) _tmp874_);
-                               _tmp876_ = _tmp875_;
-                               if (!_tmp876_) {
-                                       ValaLocalVariable* _tmp877_ = NULL;
-                                       gboolean _tmp878_ = FALSE;
-                                       gboolean _tmp879_ = FALSE;
-                                       _tmp877_ = local;
-                                       _tmp878_ = vala_local_variable_get_captured (_tmp877_);
-                                       _tmp879_ = _tmp878_;
-                                       _tmp873_ = !_tmp879_;
+                               _tmp866_ = local_vars;
+                               _tmp867_ = i;
+                               _tmp868_ = vala_list_get (_tmp866_, _tmp867_);
+                               local = (ValaLocalVariable*) _tmp868_;
+                               _tmp869_ = local;
+                               vala_symbol_set_active ((ValaSymbol*) _tmp869_, FALSE);
+                               _tmp872_ = local;
+                               _tmp873_ = vala_code_node_get_unreachable ((ValaCodeNode*) _tmp872_);
+                               _tmp874_ = _tmp873_;
+                               if (!_tmp874_) {
+                                       ValaLocalVariable* _tmp875_ = NULL;
+                                       gboolean _tmp876_ = FALSE;
+                                       gboolean _tmp877_ = FALSE;
+                                       _tmp875_ = local;
+                                       _tmp876_ = vala_local_variable_get_captured (_tmp875_);
+                                       _tmp877_ = _tmp876_;
+                                       _tmp871_ = !_tmp877_;
                                } else {
-                                       _tmp873_ = FALSE;
+                                       _tmp871_ = FALSE;
                                }
-                               if (_tmp873_) {
-                                       ValaLocalVariable* _tmp880_ = NULL;
-                                       ValaDataType* _tmp881_ = NULL;
-                                       ValaDataType* _tmp882_ = NULL;
-                                       gboolean _tmp883_ = FALSE;
-                                       _tmp880_ = local;
-                                       _tmp881_ = vala_variable_get_variable_type ((ValaVariable*) _tmp880_);
-                                       _tmp882_ = _tmp881_;
-                                       _tmp883_ = vala_ccode_base_module_requires_destroy (self, _tmp882_);
-                                       _tmp872_ = _tmp883_;
+                               if (_tmp871_) {
+                                       ValaLocalVariable* _tmp878_ = NULL;
+                                       ValaDataType* _tmp879_ = NULL;
+                                       ValaDataType* _tmp880_ = NULL;
+                                       gboolean _tmp881_ = FALSE;
+                                       _tmp878_ = local;
+                                       _tmp879_ = vala_variable_get_variable_type ((ValaVariable*) _tmp878_);
+                                       _tmp880_ = _tmp879_;
+                                       _tmp881_ = vala_ccode_base_module_requires_destroy (self, _tmp880_);
+                                       _tmp870_ = _tmp881_;
                                } else {
-                                       _tmp872_ = FALSE;
+                                       _tmp870_ = FALSE;
                                }
-                               if (_tmp872_) {
-                                       ValaCCodeFunction* _tmp884_ = NULL;
-                                       ValaCCodeFunction* _tmp885_ = NULL;
-                                       ValaLocalVariable* _tmp886_ = NULL;
-                                       ValaCCodeExpression* _tmp887_ = NULL;
-                                       ValaCCodeExpression* _tmp888_ = NULL;
-                                       _tmp884_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp885_ = _tmp884_;
-                                       _tmp886_ = local;
-                                       _tmp887_ = vala_ccode_base_module_destroy_local (self, _tmp886_);
-                                       _tmp888_ = _tmp887_;
-                                       vala_ccode_function_add_expression (_tmp885_, _tmp888_);
-                                       _vala_ccode_node_unref0 (_tmp888_);
+                               if (_tmp870_) {
+                                       ValaCCodeFunction* _tmp882_ = NULL;
+                                       ValaCCodeFunction* _tmp883_ = NULL;
+                                       ValaLocalVariable* _tmp884_ = NULL;
+                                       ValaCCodeExpression* _tmp885_ = NULL;
+                                       ValaCCodeExpression* _tmp886_ = NULL;
+                                       _tmp882_ = vala_ccode_base_module_get_ccode (self);
+                                       _tmp883_ = _tmp882_;
+                                       _tmp884_ = local;
+                                       _tmp885_ = vala_ccode_base_module_destroy_local (self, _tmp884_);
+                                       _tmp886_ = _tmp885_;
+                                       vala_ccode_function_add_expression (_tmp883_, _tmp886_);
+                                       _vala_ccode_node_unref0 (_tmp886_);
                                }
                                _vala_code_node_unref0 (local);
                        }
                }
        }
-       _tmp889_ = b;
-       _tmp890_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp889_);
-       _tmp891_ = _tmp890_;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp891_, VALA_TYPE_METHOD)) {
+       _tmp887_ = b;
+       _tmp888_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp887_);
+       _tmp889_ = _tmp888_;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp889_, VALA_TYPE_METHOD)) {
                ValaMethod* m = NULL;
-               ValaBlock* _tmp892_ = NULL;
-               ValaSymbol* _tmp893_ = NULL;
-               ValaSymbol* _tmp894_ = NULL;
-               ValaMethod* _tmp895_ = NULL;
-               _tmp892_ = b;
-               _tmp893_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp892_);
-               _tmp894_ = _tmp893_;
-               _tmp895_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp894_, VALA_TYPE_METHOD, ValaMethod));
-               m = _tmp895_;
+               ValaBlock* _tmp890_ = NULL;
+               ValaSymbol* _tmp891_ = NULL;
+               ValaSymbol* _tmp892_ = NULL;
+               ValaMethod* _tmp893_ = NULL;
+               _tmp890_ = b;
+               _tmp891_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp890_);
+               _tmp892_ = _tmp891_;
+               _tmp893_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp892_, VALA_TYPE_METHOD, ValaMethod));
+               m = _tmp893_;
                {
                        ValaList* _param_list = NULL;
-                       ValaMethod* _tmp896_ = NULL;
-                       ValaList* _tmp897_ = NULL;
+                       ValaMethod* _tmp894_ = NULL;
+                       ValaList* _tmp895_ = NULL;
                        gint _param_size = 0;
-                       ValaList* _tmp898_ = NULL;
-                       gint _tmp899_ = 0;
-                       gint _tmp900_ = 0;
+                       ValaList* _tmp896_ = NULL;
+                       gint _tmp897_ = 0;
+                       gint _tmp898_ = 0;
                        gint _param_index = 0;
-                       _tmp896_ = m;
-                       _tmp897_ = vala_method_get_parameters (_tmp896_);
-                       _param_list = _tmp897_;
-                       _tmp898_ = _param_list;
-                       _tmp899_ = vala_collection_get_size ((ValaCollection*) _tmp898_);
-                       _tmp900_ = _tmp899_;
-                       _param_size = _tmp900_;
+                       _tmp894_ = m;
+                       _tmp895_ = vala_method_get_parameters (_tmp894_);
+                       _param_list = _tmp895_;
+                       _tmp896_ = _param_list;
+                       _tmp897_ = vala_collection_get_size ((ValaCollection*) _tmp896_);
+                       _tmp898_ = _tmp897_;
+                       _param_size = _tmp898_;
                        _param_index = -1;
                        while (TRUE) {
+                               gint _tmp899_ = 0;
+                               gint _tmp900_ = 0;
                                gint _tmp901_ = 0;
-                               gint _tmp902_ = 0;
-                               gint _tmp903_ = 0;
                                ValaParameter* param = NULL;
-                               ValaList* _tmp904_ = NULL;
-                               gint _tmp905_ = 0;
-                               gpointer _tmp906_ = NULL;
+                               ValaList* _tmp902_ = NULL;
+                               gint _tmp903_ = 0;
+                               gpointer _tmp904_ = NULL;
+                               gboolean _tmp905_ = FALSE;
+                               gboolean _tmp906_ = FALSE;
                                gboolean _tmp907_ = FALSE;
-                               gboolean _tmp908_ = FALSE;
+                               ValaParameter* _tmp908_ = NULL;
                                gboolean _tmp909_ = FALSE;
-                               ValaParameter* _tmp910_ = NULL;
-                               gboolean _tmp911_ = FALSE;
-                               gboolean _tmp912_ = FALSE;
-                               _tmp901_ = _param_index;
-                               _param_index = _tmp901_ + 1;
-                               _tmp902_ = _param_index;
-                               _tmp903_ = _param_size;
-                               if (!(_tmp902_ < _tmp903_)) {
+                               gboolean _tmp910_ = FALSE;
+                               _tmp899_ = _param_index;
+                               _param_index = _tmp899_ + 1;
+                               _tmp900_ = _param_index;
+                               _tmp901_ = _param_size;
+                               if (!(_tmp900_ < _tmp901_)) {
                                        break;
                                }
-                               _tmp904_ = _param_list;
-                               _tmp905_ = _param_index;
-                               _tmp906_ = vala_list_get (_tmp904_, _tmp905_);
-                               param = (ValaParameter*) _tmp906_;
-                               _tmp910_ = param;
-                               _tmp911_ = vala_parameter_get_captured (_tmp910_);
-                               _tmp912_ = _tmp911_;
-                               if (!_tmp912_) {
-                                       ValaParameter* _tmp913_ = NULL;
-                                       gboolean _tmp914_ = FALSE;
-                                       gboolean _tmp915_ = FALSE;
-                                       _tmp913_ = param;
-                                       _tmp914_ = vala_parameter_get_ellipsis (_tmp913_);
-                                       _tmp915_ = _tmp914_;
-                                       _tmp909_ = !_tmp915_;
+                               _tmp902_ = _param_list;
+                               _tmp903_ = _param_index;
+                               _tmp904_ = vala_list_get (_tmp902_, _tmp903_);
+                               param = (ValaParameter*) _tmp904_;
+                               _tmp908_ = param;
+                               _tmp909_ = vala_parameter_get_captured (_tmp908_);
+                               _tmp910_ = _tmp909_;
+                               if (!_tmp910_) {
+                                       ValaParameter* _tmp911_ = NULL;
+                                       gboolean _tmp912_ = FALSE;
+                                       gboolean _tmp913_ = FALSE;
+                                       _tmp911_ = param;
+                                       _tmp912_ = vala_parameter_get_ellipsis (_tmp911_);
+                                       _tmp913_ = _tmp912_;
+                                       _tmp907_ = !_tmp913_;
                                } else {
-                                       _tmp909_ = FALSE;
+                                       _tmp907_ = FALSE;
                                }
-                               if (_tmp909_) {
-                                       ValaParameter* _tmp916_ = NULL;
-                                       ValaDataType* _tmp917_ = NULL;
-                                       ValaDataType* _tmp918_ = NULL;
-                                       gboolean _tmp919_ = FALSE;
-                                       _tmp916_ = param;
-                                       _tmp917_ = vala_variable_get_variable_type ((ValaVariable*) _tmp916_);
-                                       _tmp918_ = _tmp917_;
-                                       _tmp919_ = vala_ccode_base_module_requires_destroy (self, _tmp918_);
-                                       _tmp908_ = _tmp919_;
+                               if (_tmp907_) {
+                                       ValaParameter* _tmp914_ = NULL;
+                                       ValaDataType* _tmp915_ = NULL;
+                                       ValaDataType* _tmp916_ = NULL;
+                                       gboolean _tmp917_ = FALSE;
+                                       _tmp914_ = param;
+                                       _tmp915_ = vala_variable_get_variable_type ((ValaVariable*) _tmp914_);
+                                       _tmp916_ = _tmp915_;
+                                       _tmp917_ = vala_ccode_base_module_requires_destroy (self, _tmp916_);
+                                       _tmp906_ = _tmp917_;
                                } else {
-                                       _tmp908_ = FALSE;
+                                       _tmp906_ = FALSE;
                                }
-                               if (_tmp908_) {
-                                       ValaParameter* _tmp920_ = NULL;
-                                       ValaParameterDirection _tmp921_ = 0;
-                                       ValaParameterDirection _tmp922_ = 0;
-                                       _tmp920_ = param;
-                                       _tmp921_ = vala_parameter_get_direction (_tmp920_);
-                                       _tmp922_ = _tmp921_;
-                                       _tmp907_ = _tmp922_ == VALA_PARAMETER_DIRECTION_IN;
+                               if (_tmp906_) {
+                                       ValaParameter* _tmp918_ = NULL;
+                                       ValaParameterDirection _tmp919_ = 0;
+                                       ValaParameterDirection _tmp920_ = 0;
+                                       _tmp918_ = param;
+                                       _tmp919_ = vala_parameter_get_direction (_tmp918_);
+                                       _tmp920_ = _tmp919_;
+                                       _tmp905_ = _tmp920_ == VALA_PARAMETER_DIRECTION_IN;
                                } else {
-                                       _tmp907_ = FALSE;
+                                       _tmp905_ = FALSE;
                                }
-                               if (_tmp907_) {
-                                       ValaCCodeFunction* _tmp923_ = NULL;
-                                       ValaCCodeFunction* _tmp924_ = NULL;
-                                       ValaParameter* _tmp925_ = NULL;
-                                       ValaCCodeExpression* _tmp926_ = NULL;
-                                       ValaCCodeExpression* _tmp927_ = NULL;
-                                       _tmp923_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp924_ = _tmp923_;
-                                       _tmp925_ = param;
-                                       _tmp926_ = vala_ccode_base_module_destroy_parameter (self, _tmp925_);
-                                       _tmp927_ = _tmp926_;
-                                       vala_ccode_function_add_expression (_tmp924_, _tmp927_);
-                                       _vala_ccode_node_unref0 (_tmp927_);
+                               if (_tmp905_) {
+                                       ValaCCodeFunction* _tmp921_ = NULL;
+                                       ValaCCodeFunction* _tmp922_ = NULL;
+                                       ValaParameter* _tmp923_ = NULL;
+                                       ValaCCodeExpression* _tmp924_ = NULL;
+                                       ValaCCodeExpression* _tmp925_ = NULL;
+                                       _tmp921_ = vala_ccode_base_module_get_ccode (self);
+                                       _tmp922_ = _tmp921_;
+                                       _tmp923_ = param;
+                                       _tmp924_ = vala_ccode_base_module_destroy_parameter (self, _tmp923_);
+                                       _tmp925_ = _tmp924_;
+                                       vala_ccode_function_add_expression (_tmp922_, _tmp925_);
+                                       _vala_ccode_node_unref0 (_tmp925_);
                                } else {
-                                       gboolean _tmp928_ = FALSE;
-                                       ValaParameter* _tmp929_ = NULL;
-                                       ValaParameterDirection _tmp930_ = 0;
-                                       ValaParameterDirection _tmp931_ = 0;
-                                       _tmp929_ = param;
-                                       _tmp930_ = vala_parameter_get_direction (_tmp929_);
-                                       _tmp931_ = _tmp930_;
-                                       if (_tmp931_ == VALA_PARAMETER_DIRECTION_OUT) {
-                                               ValaMethod* _tmp932_ = NULL;
-                                               gboolean _tmp933_ = FALSE;
-                                               gboolean _tmp934_ = FALSE;
-                                               _tmp932_ = m;
-                                               _tmp933_ = vala_method_get_coroutine (_tmp932_);
-                                               _tmp934_ = _tmp933_;
-                                               _tmp928_ = !_tmp934_;
+                                       gboolean _tmp926_ = FALSE;
+                                       ValaParameter* _tmp927_ = NULL;
+                                       ValaParameterDirection _tmp928_ = 0;
+                                       ValaParameterDirection _tmp929_ = 0;
+                                       _tmp927_ = param;
+                                       _tmp928_ = vala_parameter_get_direction (_tmp927_);
+                                       _tmp929_ = _tmp928_;
+                                       if (_tmp929_ == VALA_PARAMETER_DIRECTION_OUT) {
+                                               ValaMethod* _tmp930_ = NULL;
+                                               gboolean _tmp931_ = FALSE;
+                                               gboolean _tmp932_ = FALSE;
+                                               _tmp930_ = m;
+                                               _tmp931_ = vala_method_get_coroutine (_tmp930_);
+                                               _tmp932_ = _tmp931_;
+                                               _tmp926_ = !_tmp932_;
                                        } else {
-                                               _tmp928_ = FALSE;
+                                               _tmp926_ = FALSE;
                                        }
-                                       if (_tmp928_) {
-                                               ValaParameter* _tmp935_ = NULL;
-                                               _tmp935_ = param;
-                                               vala_ccode_base_module_return_out_parameter (self, _tmp935_);
+                                       if (_tmp926_) {
+                                               ValaParameter* _tmp933_ = NULL;
+                                               _tmp933_ = param;
+                                               vala_ccode_base_module_return_out_parameter (self, _tmp933_);
                                        }
                                }
                                _vala_code_node_unref0 (param);
@@ -12602,235 +12850,235 @@ static void vala_ccode_base_module_real_visit_block (ValaCodeVisitor* base, Vala
                }
                {
                        ValaList* _postcondition_list = NULL;
-                       ValaMethod* _tmp936_ = NULL;
-                       ValaList* _tmp937_ = NULL;
+                       ValaMethod* _tmp934_ = NULL;
+                       ValaList* _tmp935_ = NULL;
                        gint _postcondition_size = 0;
-                       ValaList* _tmp938_ = NULL;
-                       gint _tmp939_ = 0;
-                       gint _tmp940_ = 0;
+                       ValaList* _tmp936_ = NULL;
+                       gint _tmp937_ = 0;
+                       gint _tmp938_ = 0;
                        gint _postcondition_index = 0;
-                       _tmp936_ = m;
-                       _tmp937_ = vala_method_get_postconditions (_tmp936_);
-                       _postcondition_list = _tmp937_;
-                       _tmp938_ = _postcondition_list;
-                       _tmp939_ = vala_collection_get_size ((ValaCollection*) _tmp938_);
-                       _tmp940_ = _tmp939_;
-                       _postcondition_size = _tmp940_;
+                       _tmp934_ = m;
+                       _tmp935_ = vala_method_get_postconditions (_tmp934_);
+                       _postcondition_list = _tmp935_;
+                       _tmp936_ = _postcondition_list;
+                       _tmp937_ = vala_collection_get_size ((ValaCollection*) _tmp936_);
+                       _tmp938_ = _tmp937_;
+                       _postcondition_size = _tmp938_;
                        _postcondition_index = -1;
                        while (TRUE) {
+                               gint _tmp939_ = 0;
+                               gint _tmp940_ = 0;
                                gint _tmp941_ = 0;
-                               gint _tmp942_ = 0;
-                               gint _tmp943_ = 0;
                                ValaExpression* postcondition = NULL;
-                               ValaList* _tmp944_ = NULL;
-                               gint _tmp945_ = 0;
-                               gpointer _tmp946_ = NULL;
-                               ValaExpression* _tmp947_ = NULL;
-                               _tmp941_ = _postcondition_index;
-                               _postcondition_index = _tmp941_ + 1;
-                               _tmp942_ = _postcondition_index;
-                               _tmp943_ = _postcondition_size;
-                               if (!(_tmp942_ < _tmp943_)) {
+                               ValaList* _tmp942_ = NULL;
+                               gint _tmp943_ = 0;
+                               gpointer _tmp944_ = NULL;
+                               ValaExpression* _tmp945_ = NULL;
+                               _tmp939_ = _postcondition_index;
+                               _postcondition_index = _tmp939_ + 1;
+                               _tmp940_ = _postcondition_index;
+                               _tmp941_ = _postcondition_size;
+                               if (!(_tmp940_ < _tmp941_)) {
                                        break;
                                }
-                               _tmp944_ = _postcondition_list;
-                               _tmp945_ = _postcondition_index;
-                               _tmp946_ = vala_list_get (_tmp944_, _tmp945_);
-                               postcondition = (ValaExpression*) _tmp946_;
-                               _tmp947_ = postcondition;
-                               vala_ccode_base_module_create_postcondition_statement (self, _tmp947_);
+                               _tmp942_ = _postcondition_list;
+                               _tmp943_ = _postcondition_index;
+                               _tmp944_ = vala_list_get (_tmp942_, _tmp943_);
+                               postcondition = (ValaExpression*) _tmp944_;
+                               _tmp945_ = postcondition;
+                               vala_ccode_base_module_create_postcondition_statement (self, _tmp945_);
                                _vala_code_node_unref0 (postcondition);
                        }
                        _vala_iterable_unref0 (_postcondition_list);
                }
                _vala_code_node_unref0 (m);
        } else {
-               ValaBlock* _tmp948_ = NULL;
-               ValaSymbol* _tmp949_ = NULL;
-               ValaSymbol* _tmp950_ = NULL;
-               _tmp948_ = b;
-               _tmp949_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp948_);
-               _tmp950_ = _tmp949_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp950_, VALA_TYPE_PROPERTY_ACCESSOR)) {
+               ValaBlock* _tmp946_ = NULL;
+               ValaSymbol* _tmp947_ = NULL;
+               ValaSymbol* _tmp948_ = NULL;
+               _tmp946_ = b;
+               _tmp947_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp946_);
+               _tmp948_ = _tmp947_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp948_, VALA_TYPE_PROPERTY_ACCESSOR)) {
                        ValaPropertyAccessor* acc = NULL;
-                       ValaBlock* _tmp951_ = NULL;
-                       ValaSymbol* _tmp952_ = NULL;
-                       ValaSymbol* _tmp953_ = NULL;
-                       ValaPropertyAccessor* _tmp954_ = NULL;
-                       gboolean _tmp955_ = FALSE;
-                       gboolean _tmp956_ = FALSE;
-                       ValaPropertyAccessor* _tmp957_ = NULL;
-                       ValaParameter* _tmp958_ = NULL;
-                       ValaParameter* _tmp959_ = NULL;
-                       _tmp951_ = b;
-                       _tmp952_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp951_);
-                       _tmp953_ = _tmp952_;
-                       _tmp954_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp953_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
-                       acc = _tmp954_;
-                       _tmp957_ = acc;
-                       _tmp958_ = vala_property_accessor_get_value_parameter (_tmp957_);
-                       _tmp959_ = _tmp958_;
-                       if (_tmp959_ != NULL) {
-                               ValaPropertyAccessor* _tmp960_ = NULL;
-                               ValaParameter* _tmp961_ = NULL;
-                               ValaParameter* _tmp962_ = NULL;
-                               gboolean _tmp963_ = FALSE;
-                               gboolean _tmp964_ = FALSE;
-                               _tmp960_ = acc;
-                               _tmp961_ = vala_property_accessor_get_value_parameter (_tmp960_);
+                       ValaBlock* _tmp949_ = NULL;
+                       ValaSymbol* _tmp950_ = NULL;
+                       ValaSymbol* _tmp951_ = NULL;
+                       ValaPropertyAccessor* _tmp952_ = NULL;
+                       gboolean _tmp953_ = FALSE;
+                       gboolean _tmp954_ = FALSE;
+                       ValaPropertyAccessor* _tmp955_ = NULL;
+                       ValaParameter* _tmp956_ = NULL;
+                       ValaParameter* _tmp957_ = NULL;
+                       _tmp949_ = b;
+                       _tmp950_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp949_);
+                       _tmp951_ = _tmp950_;
+                       _tmp952_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp951_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
+                       acc = _tmp952_;
+                       _tmp955_ = acc;
+                       _tmp956_ = vala_property_accessor_get_value_parameter (_tmp955_);
+                       _tmp957_ = _tmp956_;
+                       if (_tmp957_ != NULL) {
+                               ValaPropertyAccessor* _tmp958_ = NULL;
+                               ValaParameter* _tmp959_ = NULL;
+                               ValaParameter* _tmp960_ = NULL;
+                               gboolean _tmp961_ = FALSE;
+                               gboolean _tmp962_ = FALSE;
+                               _tmp958_ = acc;
+                               _tmp959_ = vala_property_accessor_get_value_parameter (_tmp958_);
+                               _tmp960_ = _tmp959_;
+                               _tmp961_ = vala_parameter_get_captured (_tmp960_);
                                _tmp962_ = _tmp961_;
-                               _tmp963_ = vala_parameter_get_captured (_tmp962_);
-                               _tmp964_ = _tmp963_;
-                               _tmp956_ = !_tmp964_;
+                               _tmp954_ = !_tmp962_;
                        } else {
-                               _tmp956_ = FALSE;
+                               _tmp954_ = FALSE;
                        }
-                       if (_tmp956_) {
-                               ValaPropertyAccessor* _tmp965_ = NULL;
-                               ValaParameter* _tmp966_ = NULL;
-                               ValaParameter* _tmp967_ = NULL;
-                               ValaDataType* _tmp968_ = NULL;
-                               ValaDataType* _tmp969_ = NULL;
-                               gboolean _tmp970_ = FALSE;
-                               _tmp965_ = acc;
-                               _tmp966_ = vala_property_accessor_get_value_parameter (_tmp965_);
+                       if (_tmp954_) {
+                               ValaPropertyAccessor* _tmp963_ = NULL;
+                               ValaParameter* _tmp964_ = NULL;
+                               ValaParameter* _tmp965_ = NULL;
+                               ValaDataType* _tmp966_ = NULL;
+                               ValaDataType* _tmp967_ = NULL;
+                               gboolean _tmp968_ = FALSE;
+                               _tmp963_ = acc;
+                               _tmp964_ = vala_property_accessor_get_value_parameter (_tmp963_);
+                               _tmp965_ = _tmp964_;
+                               _tmp966_ = vala_variable_get_variable_type ((ValaVariable*) _tmp965_);
                                _tmp967_ = _tmp966_;
-                               _tmp968_ = vala_variable_get_variable_type ((ValaVariable*) _tmp967_);
-                               _tmp969_ = _tmp968_;
-                               _tmp970_ = vala_ccode_base_module_requires_destroy (self, _tmp969_);
-                               _tmp955_ = _tmp970_;
+                               _tmp968_ = vala_ccode_base_module_requires_destroy (self, _tmp967_);
+                               _tmp953_ = _tmp968_;
                        } else {
-                               _tmp955_ = FALSE;
+                               _tmp953_ = FALSE;
                        }
-                       if (_tmp955_) {
-                               ValaCCodeFunction* _tmp971_ = NULL;
-                               ValaCCodeFunction* _tmp972_ = NULL;
-                               ValaPropertyAccessor* _tmp973_ = NULL;
-                               ValaParameter* _tmp974_ = NULL;
-                               ValaParameter* _tmp975_ = NULL;
-                               ValaCCodeExpression* _tmp976_ = NULL;
-                               ValaCCodeExpression* _tmp977_ = NULL;
-                               _tmp971_ = vala_ccode_base_module_get_ccode (self);
-                               _tmp972_ = _tmp971_;
-                               _tmp973_ = acc;
-                               _tmp974_ = vala_property_accessor_get_value_parameter (_tmp973_);
+                       if (_tmp953_) {
+                               ValaCCodeFunction* _tmp969_ = NULL;
+                               ValaCCodeFunction* _tmp970_ = NULL;
+                               ValaPropertyAccessor* _tmp971_ = NULL;
+                               ValaParameter* _tmp972_ = NULL;
+                               ValaParameter* _tmp973_ = NULL;
+                               ValaCCodeExpression* _tmp974_ = NULL;
+                               ValaCCodeExpression* _tmp975_ = NULL;
+                               _tmp969_ = vala_ccode_base_module_get_ccode (self);
+                               _tmp970_ = _tmp969_;
+                               _tmp971_ = acc;
+                               _tmp972_ = vala_property_accessor_get_value_parameter (_tmp971_);
+                               _tmp973_ = _tmp972_;
+                               _tmp974_ = vala_ccode_base_module_destroy_parameter (self, _tmp973_);
                                _tmp975_ = _tmp974_;
-                               _tmp976_ = vala_ccode_base_module_destroy_parameter (self, _tmp975_);
-                               _tmp977_ = _tmp976_;
-                               vala_ccode_function_add_expression (_tmp972_, _tmp977_);
-                               _vala_ccode_node_unref0 (_tmp977_);
+                               vala_ccode_function_add_expression (_tmp970_, _tmp975_);
+                               _vala_ccode_node_unref0 (_tmp975_);
                        }
                        _vala_code_node_unref0 (acc);
                }
        }
-       _tmp978_ = b;
-       _tmp979_ = vala_block_get_captured (_tmp978_);
-       _tmp980_ = _tmp979_;
-       if (_tmp980_) {
+       _tmp976_ = b;
+       _tmp977_ = vala_block_get_captured (_tmp976_);
+       _tmp978_ = _tmp977_;
+       if (_tmp978_) {
                gint block_id = 0;
-               ValaBlock* _tmp981_ = NULL;
-               gint _tmp982_ = 0;
+               ValaBlock* _tmp979_ = NULL;
+               gint _tmp980_ = 0;
                ValaCCodeFunctionCall* data_unref = NULL;
-               gint _tmp983_ = 0;
-               gchar* _tmp984_ = NULL;
-               gchar* _tmp985_ = NULL;
-               ValaCCodeIdentifier* _tmp986_ = NULL;
-               ValaCCodeIdentifier* _tmp987_ = NULL;
+               gint _tmp981_ = 0;
+               gchar* _tmp982_ = NULL;
+               gchar* _tmp983_ = NULL;
+               ValaCCodeIdentifier* _tmp984_ = NULL;
+               ValaCCodeIdentifier* _tmp985_ = NULL;
+               ValaCCodeFunctionCall* _tmp986_ = NULL;
+               ValaCCodeFunctionCall* _tmp987_ = NULL;
                ValaCCodeFunctionCall* _tmp988_ = NULL;
-               ValaCCodeFunctionCall* _tmp989_ = NULL;
-               ValaCCodeFunctionCall* _tmp990_ = NULL;
-               gint _tmp991_ = 0;
-               gchar* _tmp992_ = NULL;
-               gchar* _tmp993_ = NULL;
-               ValaCCodeExpression* _tmp994_ = NULL;
-               ValaCCodeExpression* _tmp995_ = NULL;
-               ValaCCodeFunction* _tmp996_ = NULL;
+               gint _tmp989_ = 0;
+               gchar* _tmp990_ = NULL;
+               gchar* _tmp991_ = NULL;
+               ValaCCodeExpression* _tmp992_ = NULL;
+               ValaCCodeExpression* _tmp993_ = NULL;
+               ValaCCodeFunction* _tmp994_ = NULL;
+               ValaCCodeFunction* _tmp995_ = NULL;
+               ValaCCodeFunctionCall* _tmp996_ = NULL;
                ValaCCodeFunction* _tmp997_ = NULL;
-               ValaCCodeFunctionCall* _tmp998_ = NULL;
-               ValaCCodeFunction* _tmp999_ = NULL;
-               ValaCCodeFunction* _tmp1000_ = NULL;
-               gint _tmp1001_ = 0;
-               gchar* _tmp1002_ = NULL;
-               gchar* _tmp1003_ = NULL;
-               ValaCCodeExpression* _tmp1004_ = NULL;
-               ValaCCodeExpression* _tmp1005_ = NULL;
-               ValaCCodeConstant* _tmp1006_ = NULL;
-               ValaCCodeConstant* _tmp1007_ = NULL;
-               _tmp981_ = b;
-               _tmp982_ = vala_ccode_base_module_get_block_id (self, _tmp981_);
-               block_id = _tmp982_;
-               _tmp983_ = block_id;
-               _tmp984_ = g_strdup_printf ("block%d_data_unref", _tmp983_);
+               ValaCCodeFunction* _tmp998_ = NULL;
+               gint _tmp999_ = 0;
+               gchar* _tmp1000_ = NULL;
+               gchar* _tmp1001_ = NULL;
+               ValaCCodeExpression* _tmp1002_ = NULL;
+               ValaCCodeExpression* _tmp1003_ = NULL;
+               ValaCCodeConstant* _tmp1004_ = NULL;
+               ValaCCodeConstant* _tmp1005_ = NULL;
+               _tmp979_ = b;
+               _tmp980_ = vala_ccode_base_module_get_block_id (self, _tmp979_);
+               block_id = _tmp980_;
+               _tmp981_ = block_id;
+               _tmp982_ = g_strdup_printf ("block%d_data_unref", _tmp981_);
+               _tmp983_ = _tmp982_;
+               _tmp984_ = vala_ccode_identifier_new (_tmp983_);
                _tmp985_ = _tmp984_;
-               _tmp986_ = vala_ccode_identifier_new (_tmp985_);
+               _tmp986_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp985_);
                _tmp987_ = _tmp986_;
-               _tmp988_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp987_);
-               _tmp989_ = _tmp988_;
-               _vala_ccode_node_unref0 (_tmp987_);
-               _g_free0 (_tmp985_);
-               data_unref = _tmp989_;
-               _tmp990_ = data_unref;
-               _tmp991_ = block_id;
-               _tmp992_ = g_strdup_printf ("_data%d_", _tmp991_);
+               _vala_ccode_node_unref0 (_tmp985_);
+               _g_free0 (_tmp983_);
+               data_unref = _tmp987_;
+               _tmp988_ = data_unref;
+               _tmp989_ = block_id;
+               _tmp990_ = g_strdup_printf ("_data%d_", _tmp989_);
+               _tmp991_ = _tmp990_;
+               _tmp992_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp991_);
                _tmp993_ = _tmp992_;
-               _tmp994_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp993_);
+               vala_ccode_function_call_add_argument (_tmp988_, _tmp993_);
+               _vala_ccode_node_unref0 (_tmp993_);
+               _g_free0 (_tmp991_);
+               _tmp994_ = vala_ccode_base_module_get_ccode (self);
                _tmp995_ = _tmp994_;
-               vala_ccode_function_call_add_argument (_tmp990_, _tmp995_);
-               _vala_ccode_node_unref0 (_tmp995_);
-               _g_free0 (_tmp993_);
-               _tmp996_ = vala_ccode_base_module_get_ccode (self);
-               _tmp997_ = _tmp996_;
-               _tmp998_ = data_unref;
-               vala_ccode_function_add_expression (_tmp997_, (ValaCCodeExpression*) _tmp998_);
-               _tmp999_ = vala_ccode_base_module_get_ccode (self);
-               _tmp1000_ = _tmp999_;
-               _tmp1001_ = block_id;
-               _tmp1002_ = g_strdup_printf ("_data%d_", _tmp1001_);
+               _tmp996_ = data_unref;
+               vala_ccode_function_add_expression (_tmp995_, (ValaCCodeExpression*) _tmp996_);
+               _tmp997_ = vala_ccode_base_module_get_ccode (self);
+               _tmp998_ = _tmp997_;
+               _tmp999_ = block_id;
+               _tmp1000_ = g_strdup_printf ("_data%d_", _tmp999_);
+               _tmp1001_ = _tmp1000_;
+               _tmp1002_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp1001_);
                _tmp1003_ = _tmp1002_;
-               _tmp1004_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp1003_);
+               _tmp1004_ = vala_ccode_constant_new ("NULL");
                _tmp1005_ = _tmp1004_;
-               _tmp1006_ = vala_ccode_constant_new ("NULL");
-               _tmp1007_ = _tmp1006_;
-               vala_ccode_function_add_assignment (_tmp1000_, _tmp1005_, (ValaCCodeExpression*) _tmp1007_);
-               _vala_ccode_node_unref0 (_tmp1007_);
+               vala_ccode_function_add_assignment (_tmp998_, _tmp1003_, (ValaCCodeExpression*) _tmp1005_);
                _vala_ccode_node_unref0 (_tmp1005_);
-               _g_free0 (_tmp1003_);
+               _vala_ccode_node_unref0 (_tmp1003_);
+               _g_free0 (_tmp1001_);
                _vala_ccode_node_unref0 (data_unref);
        }
-       _tmp1010_ = b;
-       _tmp1011_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp1010_);
-       _tmp1012_ = _tmp1011_;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1012_, VALA_TYPE_BLOCK)) {
-               _tmp1009_ = TRUE;
+       _tmp1008_ = b;
+       _tmp1009_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp1008_);
+       _tmp1010_ = _tmp1009_;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1010_, VALA_TYPE_BLOCK)) {
+               _tmp1007_ = TRUE;
        } else {
-               ValaBlock* _tmp1013_ = NULL;
-               ValaCodeNode* _tmp1014_ = NULL;
-               ValaCodeNode* _tmp1015_ = NULL;
-               _tmp1013_ = b;
-               _tmp1014_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp1013_);
-               _tmp1015_ = _tmp1014_;
-               _tmp1009_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1015_, VALA_TYPE_SWITCH_STATEMENT);
-       }
-       if (_tmp1009_) {
-               _tmp1008_ = TRUE;
+               ValaBlock* _tmp1011_ = NULL;
+               ValaCodeNode* _tmp1012_ = NULL;
+               ValaCodeNode* _tmp1013_ = NULL;
+               _tmp1011_ = b;
+               _tmp1012_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp1011_);
+               _tmp1013_ = _tmp1012_;
+               _tmp1007_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1013_, VALA_TYPE_SWITCH_STATEMENT);
+       }
+       if (_tmp1007_) {
+               _tmp1006_ = TRUE;
        } else {
-               ValaBlock* _tmp1016_ = NULL;
-               ValaCodeNode* _tmp1017_ = NULL;
-               ValaCodeNode* _tmp1018_ = NULL;
-               _tmp1016_ = b;
-               _tmp1017_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp1016_);
+               ValaBlock* _tmp1014_ = NULL;
+               ValaCodeNode* _tmp1015_ = NULL;
+               ValaCodeNode* _tmp1016_ = NULL;
+               _tmp1014_ = b;
+               _tmp1015_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp1014_);
+               _tmp1016_ = _tmp1015_;
+               _tmp1006_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1016_, VALA_TYPE_TRY_STATEMENT);
+       }
+       if (_tmp1006_) {
+               ValaCCodeFunction* _tmp1017_ = NULL;
+               ValaCCodeFunction* _tmp1018_ = NULL;
+               _tmp1017_ = vala_ccode_base_module_get_ccode (self);
                _tmp1018_ = _tmp1017_;
-               _tmp1008_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1018_, VALA_TYPE_TRY_STATEMENT);
+               vala_ccode_function_close (_tmp1018_);
        }
-       if (_tmp1008_) {
-               ValaCCodeFunction* _tmp1019_ = NULL;
-               ValaCCodeFunction* _tmp1020_ = NULL;
-               _tmp1019_ = vala_ccode_base_module_get_ccode (self);
-               _tmp1020_ = _tmp1019_;
-               vala_ccode_function_close (_tmp1020_);
-       }
-       _tmp1021_ = self->emit_context;
-       vala_ccode_base_module_emit_context_pop_symbol (_tmp1021_);
+       _tmp1019_ = self->emit_context;
+       vala_ccode_base_module_emit_context_pop_symbol (_tmp1019_);
        _vala_iterable_unref0 (local_vars);
 }
 
@@ -12961,6 +13209,18 @@ ValaCCodeExpression* vala_ccode_base_module_get_this_cexpression (ValaCCodeBaseM
 }
 
 
+static gchar string_get (const gchar* self, glong index) {
+       gchar result = '\0';
+       glong _tmp0_ = 0L;
+       gchar _tmp1_ = '\0';
+       g_return_val_if_fail (self != NULL, '\0');
+       _tmp0_ = index;
+       _tmp1_ = ((gchar*) self)[_tmp0_];
+       result = _tmp1_;
+       return result;
+}
+
+
 gchar* vala_ccode_base_module_get_local_cname (ValaCCodeBaseModule* self, ValaLocalVariable* local) {
        gchar* result = NULL;
        gchar* cname = NULL;
@@ -12968,7 +13228,10 @@ gchar* vala_ccode_base_module_get_local_cname (ValaCCodeBaseModule* self, ValaLo
        const gchar* _tmp1_ = NULL;
        const gchar* _tmp2_ = NULL;
        gchar* _tmp3_ = NULL;
-       gboolean _tmp4_ = FALSE;
+       const gchar* _tmp4_ = NULL;
+       gchar _tmp5_ = '\0';
+       gboolean _tmp6_ = FALSE;
+       gboolean _tmp9_ = FALSE;
        g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (local != NULL, NULL);
        _tmp0_ = local;
@@ -12976,29 +13239,40 @@ gchar* vala_ccode_base_module_get_local_cname (ValaCCodeBaseModule* self, ValaLo
        _tmp2_ = _tmp1_;
        _tmp3_ = vala_ccode_base_module_get_variable_cname (self, _tmp2_);
        cname = _tmp3_;
-       _tmp4_ = vala_ccode_base_module_is_in_coroutine (self);
-       if (_tmp4_) {
+       _tmp4_ = cname;
+       _tmp5_ = string_get (_tmp4_, (glong) 0);
+       _tmp6_ = g_ascii_isdigit (_tmp5_);
+       if (_tmp6_) {
+               const gchar* _tmp7_ = NULL;
+               gchar* _tmp8_ = NULL;
+               _tmp7_ = cname;
+               _tmp8_ = g_strdup_printf ("_%s_", _tmp7_);
+               _g_free0 (cname);
+               cname = _tmp8_;
+       }
+       _tmp9_ = vala_ccode_base_module_is_in_coroutine (self);
+       if (_tmp9_) {
                gint clash_index = 0;
-               ValaCCodeBaseModuleEmitContext* _tmp5_ = NULL;
-               ValaMap* _tmp6_ = NULL;
-               ValaLocalVariable* _tmp7_ = NULL;
-               gpointer _tmp8_ = NULL;
-               gint _tmp9_ = 0;
-               _tmp5_ = self->emit_context;
-               _tmp6_ = _tmp5_->closure_variable_clash_map;
-               _tmp7_ = local;
-               _tmp8_ = vala_map_get (_tmp6_, _tmp7_);
-               clash_index = (gint) ((gintptr) _tmp8_);
-               _tmp9_ = clash_index;
-               if (_tmp9_ > 0) {
-                       gint _tmp10_ = 0;
-                       const gchar* _tmp11_ = NULL;
-                       gchar* _tmp12_ = NULL;
-                       _tmp10_ = clash_index;
-                       _tmp11_ = cname;
-                       _tmp12_ = g_strdup_printf ("_vala%d_%s", _tmp10_, _tmp11_);
+               ValaCCodeBaseModuleEmitContext* _tmp10_ = NULL;
+               ValaMap* _tmp11_ = NULL;
+               ValaLocalVariable* _tmp12_ = NULL;
+               gpointer _tmp13_ = NULL;
+               gint _tmp14_ = 0;
+               _tmp10_ = self->emit_context;
+               _tmp11_ = _tmp10_->closure_variable_clash_map;
+               _tmp12_ = local;
+               _tmp13_ = vala_map_get (_tmp11_, _tmp12_);
+               clash_index = (gint) ((gintptr) _tmp13_);
+               _tmp14_ = clash_index;
+               if (_tmp14_ > 0) {
+                       gint _tmp15_ = 0;
+                       const gchar* _tmp16_ = NULL;
+                       gchar* _tmp17_ = NULL;
+                       _tmp15_ = clash_index;
+                       _tmp16_ = cname;
+                       _tmp17_ = g_strdup_printf ("_vala%d_%s", _tmp15_, _tmp16_);
                        _g_free0 (cname);
-                       cname = _tmp12_;
+                       cname = _tmp17_;
                }
        }
        result = cname;
@@ -13006,18 +13280,6 @@ gchar* vala_ccode_base_module_get_local_cname (ValaCCodeBaseModule* self, ValaLo
 }
 
 
-static gchar string_get (const gchar* self, glong index) {
-       gchar result = '\0';
-       glong _tmp0_ = 0L;
-       gchar _tmp1_ = '\0';
-       g_return_val_if_fail (self != NULL, '\0');
-       _tmp0_ = index;
-       _tmp1_ = ((gchar*) self)[_tmp0_];
-       result = _tmp1_;
-       return result;
-}
-
-
 gchar* vala_ccode_base_module_get_variable_cname (ValaCCodeBaseModule* self, const gchar* name) {
        gchar* result = NULL;
        const gchar* _tmp0_ = NULL;
@@ -13342,21 +13604,21 @@ static void vala_ccode_base_module_real_visit_local_variable (ValaCodeVisitor* b
        gboolean _tmp10_ = FALSE;
        gboolean declared = FALSE;
        gboolean _tmp13_ = FALSE;
-       ValaLocalVariable* _tmp73_ = NULL;
-       ValaExpression* _tmp74_ = NULL;
-       ValaExpression* _tmp75_ = NULL;
+       ValaLocalVariable* _tmp71_ = NULL;
+       ValaExpression* _tmp72_ = NULL;
+       ValaExpression* _tmp73_ = NULL;
        ValaCCodeExpression* rhs = NULL;
-       gboolean _tmp82_ = FALSE;
-       ValaLocalVariable* _tmp83_ = NULL;
-       ValaExpression* _tmp84_ = NULL;
-       ValaExpression* _tmp85_ = NULL;
-       gboolean _tmp95_ = FALSE;
-       ValaCCodeExpression* _tmp192_ = NULL;
-       gboolean _tmp204_ = FALSE;
-       ValaLocalVariable* _tmp205_ = NULL;
-       ValaExpression* _tmp206_ = NULL;
-       ValaExpression* _tmp207_ = NULL;
-       ValaLocalVariable* _tmp216_ = NULL;
+       gboolean _tmp80_ = FALSE;
+       ValaLocalVariable* _tmp81_ = NULL;
+       ValaExpression* _tmp82_ = NULL;
+       ValaExpression* _tmp83_ = NULL;
+       gboolean _tmp93_ = FALSE;
+       ValaCCodeExpression* _tmp190_ = NULL;
+       gboolean _tmp202_ = FALSE;
+       ValaLocalVariable* _tmp203_ = NULL;
+       ValaExpression* _tmp204_ = NULL;
+       ValaExpression* _tmp205_ = NULL;
+       ValaLocalVariable* _tmp214_ = NULL;
        self = (ValaCCodeBaseModule*) base;
        g_return_if_fail (local != NULL);
        _tmp0_ = local;
@@ -13412,10 +13674,8 @@ static void vala_ccode_base_module_real_visit_local_variable (ValaCodeVisitor* b
                        ValaLocalVariable* _tmp41_ = NULL;
                        ValaDataType* _tmp42_ = NULL;
                        ValaDataType* _tmp43_ = NULL;
-                       gchar* _tmp44_ = NULL;
-                       gchar* _tmp45_ = NULL;
-                       gchar* _tmp46_ = NULL;
-                       gchar* _tmp47_ = NULL;
+                       ValaCCodeDeclaratorSuffix* _tmp44_ = NULL;
+                       ValaCCodeDeclaratorSuffix* _tmp45_ = NULL;
                        _tmp15_ = self->emit_context;
                        _tmp16_ = _tmp15_->closure_variable_count_map;
                        _tmp17_ = local;
@@ -13454,384 +13714,381 @@ static void vala_ccode_base_module_real_visit_local_variable (ValaCodeVisitor* b
                        _tmp41_ = local;
                        _tmp42_ = vala_variable_get_variable_type ((ValaVariable*) _tmp41_);
                        _tmp43_ = _tmp42_;
-                       _tmp44_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp43_);
+                       _tmp44_ = vala_ccode_base_module_get_ccode_declarator_suffix (self, _tmp43_);
                        _tmp45_ = _tmp44_;
-                       _tmp46_ = g_strconcat (_tmp40_, _tmp45_, NULL);
-                       _tmp47_ = _tmp46_;
-                       vala_ccode_struct_add_field (_tmp32_, _tmp37_, _tmp47_, NULL);
-                       _g_free0 (_tmp47_);
-                       _g_free0 (_tmp45_);
+                       vala_ccode_struct_add_field (_tmp32_, _tmp37_, _tmp40_, _tmp45_);
+                       _vala_ccode_declarator_suffix_unref0 (_tmp45_);
                        _g_free0 (_tmp40_);
                        _g_free0 (_tmp37_);
                } else {
                        ValaCCodeVariableDeclarator* cvar = NULL;
-                       ValaLocalVariable* _tmp48_ = NULL;
-                       gchar* _tmp49_ = NULL;
-                       gchar* _tmp50_ = NULL;
-                       ValaLocalVariable* _tmp51_ = NULL;
-                       ValaDataType* _tmp52_ = NULL;
-                       ValaDataType* _tmp53_ = NULL;
-                       gchar* _tmp54_ = NULL;
-                       gchar* _tmp55_ = NULL;
+                       ValaLocalVariable* _tmp46_ = NULL;
+                       gchar* _tmp47_ = NULL;
+                       gchar* _tmp48_ = NULL;
+                       ValaLocalVariable* _tmp49_ = NULL;
+                       ValaDataType* _tmp50_ = NULL;
+                       ValaDataType* _tmp51_ = NULL;
+                       ValaCCodeDeclaratorSuffix* _tmp52_ = NULL;
+                       ValaCCodeDeclaratorSuffix* _tmp53_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp54_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp55_ = NULL;
                        ValaCCodeVariableDeclarator* _tmp56_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp57_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp58_ = NULL;
-                       ValaLocalVariable* _tmp59_ = NULL;
-                       ValaDataType* _tmp60_ = NULL;
-                       ValaDataType* _tmp61_ = NULL;
-                       ValaCCodeExpression* _tmp62_ = NULL;
-                       ValaCCodeExpression* _tmp63_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp64_ = NULL;
-                       ValaCCodeFunction* _tmp65_ = NULL;
-                       ValaCCodeFunction* _tmp66_ = NULL;
-                       ValaLocalVariable* _tmp67_ = NULL;
-                       ValaDataType* _tmp68_ = NULL;
-                       ValaDataType* _tmp69_ = NULL;
-                       gchar* _tmp70_ = NULL;
-                       gchar* _tmp71_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp72_ = NULL;
-                       _tmp48_ = local;
-                       _tmp49_ = vala_ccode_base_module_get_local_cname (self, _tmp48_);
-                       _tmp50_ = _tmp49_;
-                       _tmp51_ = local;
-                       _tmp52_ = vala_variable_get_variable_type ((ValaVariable*) _tmp51_);
+                       ValaLocalVariable* _tmp57_ = NULL;
+                       ValaDataType* _tmp58_ = NULL;
+                       ValaDataType* _tmp59_ = NULL;
+                       ValaCCodeExpression* _tmp60_ = NULL;
+                       ValaCCodeExpression* _tmp61_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp62_ = NULL;
+                       ValaCCodeFunction* _tmp63_ = NULL;
+                       ValaCCodeFunction* _tmp64_ = NULL;
+                       ValaLocalVariable* _tmp65_ = NULL;
+                       ValaDataType* _tmp66_ = NULL;
+                       ValaDataType* _tmp67_ = NULL;
+                       gchar* _tmp68_ = NULL;
+                       gchar* _tmp69_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp70_ = NULL;
+                       _tmp46_ = local;
+                       _tmp47_ = vala_ccode_base_module_get_local_cname (self, _tmp46_);
+                       _tmp48_ = _tmp47_;
+                       _tmp49_ = local;
+                       _tmp50_ = vala_variable_get_variable_type ((ValaVariable*) _tmp49_);
+                       _tmp51_ = _tmp50_;
+                       _tmp52_ = vala_ccode_base_module_get_ccode_declarator_suffix (self, _tmp51_);
                        _tmp53_ = _tmp52_;
-                       _tmp54_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp53_);
+                       _tmp54_ = vala_ccode_variable_declarator_new (_tmp48_, NULL, _tmp53_);
                        _tmp55_ = _tmp54_;
-                       _tmp56_ = vala_ccode_variable_declarator_new (_tmp50_, NULL, _tmp55_);
-                       _tmp57_ = _tmp56_;
-                       _g_free0 (_tmp55_);
-                       _g_free0 (_tmp50_);
-                       cvar = _tmp57_;
-                       _tmp58_ = cvar;
-                       _tmp59_ = local;
-                       _tmp60_ = vala_variable_get_variable_type ((ValaVariable*) _tmp59_);
+                       _vala_ccode_declarator_suffix_unref0 (_tmp53_);
+                       _g_free0 (_tmp48_);
+                       cvar = _tmp55_;
+                       _tmp56_ = cvar;
+                       _tmp57_ = local;
+                       _tmp58_ = vala_variable_get_variable_type ((ValaVariable*) _tmp57_);
+                       _tmp59_ = _tmp58_;
+                       _tmp60_ = vala_ccode_base_module_default_value_for_type (self, _tmp59_, TRUE);
                        _tmp61_ = _tmp60_;
-                       _tmp62_ = vala_ccode_base_module_default_value_for_type (self, _tmp61_, TRUE);
-                       _tmp63_ = _tmp62_;
-                       vala_ccode_variable_declarator_set_initializer (_tmp58_, _tmp63_);
-                       _vala_ccode_node_unref0 (_tmp63_);
-                       _tmp64_ = cvar;
-                       vala_ccode_variable_declarator_set_init0 (_tmp64_, TRUE);
-                       _tmp65_ = vala_ccode_base_module_get_ccode (self);
-                       _tmp66_ = _tmp65_;
-                       _tmp67_ = local;
-                       _tmp68_ = vala_variable_get_variable_type ((ValaVariable*) _tmp67_);
+                       vala_ccode_variable_declarator_set_initializer (_tmp56_, _tmp61_);
+                       _vala_ccode_node_unref0 (_tmp61_);
+                       _tmp62_ = cvar;
+                       vala_ccode_variable_declarator_set_init0 (_tmp62_, TRUE);
+                       _tmp63_ = vala_ccode_base_module_get_ccode (self);
+                       _tmp64_ = _tmp63_;
+                       _tmp65_ = local;
+                       _tmp66_ = vala_variable_get_variable_type ((ValaVariable*) _tmp65_);
+                       _tmp67_ = _tmp66_;
+                       _tmp68_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp67_);
                        _tmp69_ = _tmp68_;
-                       _tmp70_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp69_);
-                       _tmp71_ = _tmp70_;
-                       _tmp72_ = cvar;
-                       vala_ccode_function_add_declaration (_tmp66_, _tmp71_, (ValaCCodeDeclarator*) _tmp72_, 0);
-                       _g_free0 (_tmp71_);
+                       _tmp70_ = cvar;
+                       vala_ccode_function_add_declaration (_tmp64_, _tmp69_, (ValaCCodeDeclarator*) _tmp70_, 0);
+                       _g_free0 (_tmp69_);
                        _vala_ccode_node_unref0 (cvar);
                }
        }
-       _tmp73_ = local;
-       _tmp74_ = vala_variable_get_initializer ((ValaVariable*) _tmp73_);
-       _tmp75_ = _tmp74_;
-       if (_tmp75_ != NULL) {
-               ValaLocalVariable* _tmp76_ = NULL;
-               ValaExpression* _tmp77_ = NULL;
+       _tmp71_ = local;
+       _tmp72_ = vala_variable_get_initializer ((ValaVariable*) _tmp71_);
+       _tmp73_ = _tmp72_;
+       if (_tmp73_ != NULL) {
+               ValaLocalVariable* _tmp74_ = NULL;
+               ValaExpression* _tmp75_ = NULL;
+               ValaExpression* _tmp76_ = NULL;
+               ValaLocalVariable* _tmp77_ = NULL;
                ValaExpression* _tmp78_ = NULL;
-               ValaLocalVariable* _tmp79_ = NULL;
-               ValaExpression* _tmp80_ = NULL;
-               ValaExpression* _tmp81_ = NULL;
-               _tmp76_ = local;
-               _tmp77_ = vala_variable_get_initializer ((ValaVariable*) _tmp76_);
-               _tmp78_ = _tmp77_;
-               vala_code_node_emit ((ValaCodeNode*) _tmp78_, (ValaCodeGenerator*) self);
-               _tmp79_ = local;
-               _tmp80_ = vala_variable_get_initializer ((ValaVariable*) _tmp79_);
-               _tmp81_ = _tmp80_;
-               vala_code_visitor_visit_end_full_expression ((ValaCodeVisitor*) self, _tmp81_);
+               ValaExpression* _tmp79_ = NULL;
+               _tmp74_ = local;
+               _tmp75_ = vala_variable_get_initializer ((ValaVariable*) _tmp74_);
+               _tmp76_ = _tmp75_;
+               vala_code_node_emit ((ValaCodeNode*) _tmp76_, (ValaCodeGenerator*) self);
+               _tmp77_ = local;
+               _tmp78_ = vala_variable_get_initializer ((ValaVariable*) _tmp77_);
+               _tmp79_ = _tmp78_;
+               vala_code_visitor_visit_end_full_expression ((ValaCodeVisitor*) self, _tmp79_);
        }
        rhs = NULL;
-       _tmp83_ = local;
-       _tmp84_ = vala_variable_get_initializer ((ValaVariable*) _tmp83_);
-       _tmp85_ = _tmp84_;
-       if (_tmp85_ != NULL) {
-               ValaLocalVariable* _tmp86_ = NULL;
-               ValaExpression* _tmp87_ = NULL;
-               ValaExpression* _tmp88_ = NULL;
-               ValaCCodeExpression* _tmp89_ = NULL;
-               ValaCCodeExpression* _tmp90_ = NULL;
-               _tmp86_ = local;
-               _tmp87_ = vala_variable_get_initializer ((ValaVariable*) _tmp86_);
+       _tmp81_ = local;
+       _tmp82_ = vala_variable_get_initializer ((ValaVariable*) _tmp81_);
+       _tmp83_ = _tmp82_;
+       if (_tmp83_ != NULL) {
+               ValaLocalVariable* _tmp84_ = NULL;
+               ValaExpression* _tmp85_ = NULL;
+               ValaExpression* _tmp86_ = NULL;
+               ValaCCodeExpression* _tmp87_ = NULL;
+               ValaCCodeExpression* _tmp88_ = NULL;
+               _tmp84_ = local;
+               _tmp85_ = vala_variable_get_initializer ((ValaVariable*) _tmp84_);
+               _tmp86_ = _tmp85_;
+               _tmp87_ = vala_ccode_base_module_get_cvalue (self, _tmp86_);
                _tmp88_ = _tmp87_;
-               _tmp89_ = vala_ccode_base_module_get_cvalue (self, _tmp88_);
-               _tmp90_ = _tmp89_;
-               _tmp82_ = _tmp90_ != NULL;
-               _vala_ccode_node_unref0 (_tmp90_);
+               _tmp80_ = _tmp88_ != NULL;
+               _vala_ccode_node_unref0 (_tmp88_);
        } else {
-               _tmp82_ = FALSE;
-       }
-       if (_tmp82_) {
-               ValaLocalVariable* _tmp91_ = NULL;
-               ValaExpression* _tmp92_ = NULL;
-               ValaExpression* _tmp93_ = NULL;
-               ValaCCodeExpression* _tmp94_ = NULL;
-               _tmp91_ = local;
-               _tmp92_ = vala_variable_get_initializer ((ValaVariable*) _tmp91_);
-               _tmp93_ = _tmp92_;
-               _tmp94_ = vala_ccode_base_module_get_cvalue (self, _tmp93_);
+               _tmp80_ = FALSE;
+       }
+       if (_tmp80_) {
+               ValaLocalVariable* _tmp89_ = NULL;
+               ValaExpression* _tmp90_ = NULL;
+               ValaExpression* _tmp91_ = NULL;
+               ValaCCodeExpression* _tmp92_ = NULL;
+               _tmp89_ = local;
+               _tmp90_ = vala_variable_get_initializer ((ValaVariable*) _tmp89_);
+               _tmp91_ = _tmp90_;
+               _tmp92_ = vala_ccode_base_module_get_cvalue (self, _tmp91_);
                _vala_ccode_node_unref0 (rhs);
-               rhs = _tmp94_;
-       }
-       _tmp95_ = declared;
-       if (_tmp95_) {
-               ValaLocalVariable* _tmp96_ = NULL;
-               ValaDataType* _tmp97_ = NULL;
-               ValaDataType* _tmp98_ = NULL;
-               _tmp96_ = local;
-               _tmp97_ = vala_variable_get_variable_type ((ValaVariable*) _tmp96_);
-               _tmp98_ = _tmp97_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp98_, VALA_TYPE_ARRAY_TYPE)) {
+               rhs = _tmp92_;
+       }
+       _tmp93_ = declared;
+       if (_tmp93_) {
+               ValaLocalVariable* _tmp94_ = NULL;
+               ValaDataType* _tmp95_ = NULL;
+               ValaDataType* _tmp96_ = NULL;
+               _tmp94_ = local;
+               _tmp95_ = vala_variable_get_variable_type ((ValaVariable*) _tmp94_);
+               _tmp96_ = _tmp95_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp96_, VALA_TYPE_ARRAY_TYPE)) {
                        ValaArrayType* array_type = NULL;
-                       ValaLocalVariable* _tmp99_ = NULL;
-                       ValaDataType* _tmp100_ = NULL;
-                       ValaDataType* _tmp101_ = NULL;
-                       ValaArrayType* _tmp102_ = NULL;
-                       ValaArrayType* _tmp103_ = NULL;
-                       gboolean _tmp104_ = FALSE;
-                       gboolean _tmp105_ = FALSE;
-                       _tmp99_ = local;
-                       _tmp100_ = vala_variable_get_variable_type ((ValaVariable*) _tmp99_);
-                       _tmp101_ = _tmp100_;
-                       _tmp102_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp101_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                       array_type = _tmp102_;
-                       _tmp103_ = array_type;
-                       _tmp104_ = vala_array_type_get_fixed_length (_tmp103_);
-                       _tmp105_ = _tmp104_;
-                       if (!_tmp105_) {
-                               ValaArrayType* _tmp128_ = NULL;
-                               gint _tmp129_ = 0;
-                               gint _tmp130_ = 0;
+                       ValaLocalVariable* _tmp97_ = NULL;
+                       ValaDataType* _tmp98_ = NULL;
+                       ValaDataType* _tmp99_ = NULL;
+                       ValaArrayType* _tmp100_ = NULL;
+                       ValaArrayType* _tmp101_ = NULL;
+                       gboolean _tmp102_ = FALSE;
+                       gboolean _tmp103_ = FALSE;
+                       _tmp97_ = local;
+                       _tmp98_ = vala_variable_get_variable_type ((ValaVariable*) _tmp97_);
+                       _tmp99_ = _tmp98_;
+                       _tmp100_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp99_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                       array_type = _tmp100_;
+                       _tmp101_ = array_type;
+                       _tmp102_ = vala_array_type_get_fixed_length (_tmp101_);
+                       _tmp103_ = _tmp102_;
+                       if (!_tmp103_) {
+                               ValaArrayType* _tmp126_ = NULL;
+                               gint _tmp127_ = 0;
+                               gint _tmp128_ = 0;
                                {
                                        gint dim = 0;
                                        dim = 1;
                                        {
-                                               gboolean _tmp106_ = FALSE;
-                                               _tmp106_ = TRUE;
+                                               gboolean _tmp104_ = FALSE;
+                                               _tmp104_ = TRUE;
                                                while (TRUE) {
+                                                       gint _tmp106_ = 0;
+                                                       ValaArrayType* _tmp107_ = NULL;
                                                        gint _tmp108_ = 0;
-                                                       ValaArrayType* _tmp109_ = NULL;
-                                                       gint _tmp110_ = 0;
-                                                       gint _tmp111_ = 0;
+                                                       gint _tmp109_ = 0;
                                                        ValaLocalVariable* len_var = NULL;
+                                                       ValaDataType* _tmp110_ = NULL;
+                                                       ValaDataType* _tmp111_ = NULL;
                                                        ValaDataType* _tmp112_ = NULL;
-                                                       ValaDataType* _tmp113_ = NULL;
-                                                       ValaDataType* _tmp114_ = NULL;
-                                                       ValaLocalVariable* _tmp115_ = NULL;
-                                                       gchar* _tmp116_ = NULL;
+                                                       ValaLocalVariable* _tmp113_ = NULL;
+                                                       gchar* _tmp114_ = NULL;
+                                                       gchar* _tmp115_ = NULL;
+                                                       gint _tmp116_ = 0;
                                                        gchar* _tmp117_ = NULL;
-                                                       gint _tmp118_ = 0;
-                                                       gchar* _tmp119_ = NULL;
-                                                       gchar* _tmp120_ = NULL;
+                                                       gchar* _tmp118_ = NULL;
+                                                       ValaLocalVariable* _tmp119_ = NULL;
+                                                       ValaLocalVariable* _tmp120_ = NULL;
                                                        ValaLocalVariable* _tmp121_ = NULL;
                                                        ValaLocalVariable* _tmp122_ = NULL;
-                                                       ValaLocalVariable* _tmp123_ = NULL;
-                                                       ValaLocalVariable* _tmp124_ = NULL;
-                                                       ValaExpression* _tmp125_ = NULL;
-                                                       ValaExpression* _tmp126_ = NULL;
-                                                       ValaLocalVariable* _tmp127_ = NULL;
-                                                       if (!_tmp106_) {
-                                                               gint _tmp107_ = 0;
-                                                               _tmp107_ = dim;
-                                                               dim = _tmp107_ + 1;
+                                                       ValaExpression* _tmp123_ = NULL;
+                                                       ValaExpression* _tmp124_ = NULL;
+                                                       ValaLocalVariable* _tmp125_ = NULL;
+                                                       if (!_tmp104_) {
+                                                               gint _tmp105_ = 0;
+                                                               _tmp105_ = dim;
+                                                               dim = _tmp105_ + 1;
                                                        }
-                                                       _tmp106_ = FALSE;
-                                                       _tmp108_ = dim;
-                                                       _tmp109_ = array_type;
-                                                       _tmp110_ = vala_array_type_get_rank (_tmp109_);
-                                                       _tmp111_ = _tmp110_;
-                                                       if (!(_tmp108_ <= _tmp111_)) {
+                                                       _tmp104_ = FALSE;
+                                                       _tmp106_ = dim;
+                                                       _tmp107_ = array_type;
+                                                       _tmp108_ = vala_array_type_get_rank (_tmp107_);
+                                                       _tmp109_ = _tmp108_;
+                                                       if (!(_tmp106_ <= _tmp109_)) {
                                                                break;
                                                        }
-                                                       _tmp112_ = self->int_type;
-                                                       _tmp113_ = vala_data_type_copy (_tmp112_);
-                                                       _tmp114_ = _tmp113_;
-                                                       _tmp115_ = local;
-                                                       _tmp116_ = vala_ccode_base_module_get_local_cname (self, _tmp115_);
-                                                       _tmp117_ = _tmp116_;
-                                                       _tmp118_ = dim;
-                                                       _tmp119_ = vala_ccode_base_module_get_array_length_cname (self, _tmp117_, _tmp118_);
+                                                       _tmp110_ = self->int_type;
+                                                       _tmp111_ = vala_data_type_copy (_tmp110_);
+                                                       _tmp112_ = _tmp111_;
+                                                       _tmp113_ = local;
+                                                       _tmp114_ = vala_ccode_base_module_get_local_cname (self, _tmp113_);
+                                                       _tmp115_ = _tmp114_;
+                                                       _tmp116_ = dim;
+                                                       _tmp117_ = vala_ccode_base_module_get_array_length_cname (self, _tmp115_, _tmp116_);
+                                                       _tmp118_ = _tmp117_;
+                                                       _tmp119_ = vala_local_variable_new (_tmp112_, _tmp118_, NULL, NULL);
                                                        _tmp120_ = _tmp119_;
-                                                       _tmp121_ = vala_local_variable_new (_tmp114_, _tmp120_, NULL, NULL);
-                                                       _tmp122_ = _tmp121_;
-                                                       _g_free0 (_tmp120_);
-                                                       _g_free0 (_tmp117_);
-                                                       _vala_code_node_unref0 (_tmp114_);
-                                                       len_var = _tmp122_;
-                                                       _tmp123_ = len_var;
-                                                       _tmp124_ = local;
-                                                       _tmp125_ = vala_variable_get_initializer ((ValaVariable*) _tmp124_);
-                                                       _tmp126_ = _tmp125_;
-                                                       vala_local_variable_set_no_init (_tmp123_, _tmp126_ != NULL);
-                                                       _tmp127_ = len_var;
-                                                       vala_ccode_base_module_emit_temp_var (self, _tmp127_);
+                                                       _g_free0 (_tmp118_);
+                                                       _g_free0 (_tmp115_);
+                                                       _vala_code_node_unref0 (_tmp112_);
+                                                       len_var = _tmp120_;
+                                                       _tmp121_ = len_var;
+                                                       _tmp122_ = local;
+                                                       _tmp123_ = vala_variable_get_initializer ((ValaVariable*) _tmp122_);
+                                                       _tmp124_ = _tmp123_;
+                                                       vala_local_variable_set_no_init (_tmp121_, _tmp124_ != NULL);
+                                                       _tmp125_ = len_var;
+                                                       vala_ccode_base_module_emit_temp_var (self, _tmp125_);
                                                        _vala_code_node_unref0 (len_var);
                                                }
                                        }
                                }
-                               _tmp128_ = array_type;
-                               _tmp129_ = vala_array_type_get_rank (_tmp128_);
-                               _tmp130_ = _tmp129_;
-                               if (_tmp130_ == 1) {
+                               _tmp126_ = array_type;
+                               _tmp127_ = vala_array_type_get_rank (_tmp126_);
+                               _tmp128_ = _tmp127_;
+                               if (_tmp128_ == 1) {
                                        ValaLocalVariable* size_var = NULL;
+                                       ValaDataType* _tmp129_ = NULL;
+                                       ValaDataType* _tmp130_ = NULL;
                                        ValaDataType* _tmp131_ = NULL;
-                                       ValaDataType* _tmp132_ = NULL;
-                                       ValaDataType* _tmp133_ = NULL;
-                                       ValaLocalVariable* _tmp134_ = NULL;
+                                       ValaLocalVariable* _tmp132_ = NULL;
+                                       gchar* _tmp133_ = NULL;
+                                       gchar* _tmp134_ = NULL;
                                        gchar* _tmp135_ = NULL;
                                        gchar* _tmp136_ = NULL;
-                                       gchar* _tmp137_ = NULL;
-                                       gchar* _tmp138_ = NULL;
+                                       ValaLocalVariable* _tmp137_ = NULL;
+                                       ValaLocalVariable* _tmp138_ = NULL;
                                        ValaLocalVariable* _tmp139_ = NULL;
                                        ValaLocalVariable* _tmp140_ = NULL;
-                                       ValaLocalVariable* _tmp141_ = NULL;
-                                       ValaLocalVariable* _tmp142_ = NULL;
-                                       ValaExpression* _tmp143_ = NULL;
-                                       ValaExpression* _tmp144_ = NULL;
-                                       ValaLocalVariable* _tmp145_ = NULL;
-                                       _tmp131_ = self->int_type;
-                                       _tmp132_ = vala_data_type_copy (_tmp131_);
-                                       _tmp133_ = _tmp132_;
-                                       _tmp134_ = local;
-                                       _tmp135_ = vala_ccode_base_module_get_local_cname (self, _tmp134_);
+                                       ValaExpression* _tmp141_ = NULL;
+                                       ValaExpression* _tmp142_ = NULL;
+                                       ValaLocalVariable* _tmp143_ = NULL;
+                                       _tmp129_ = self->int_type;
+                                       _tmp130_ = vala_data_type_copy (_tmp129_);
+                                       _tmp131_ = _tmp130_;
+                                       _tmp132_ = local;
+                                       _tmp133_ = vala_ccode_base_module_get_local_cname (self, _tmp132_);
+                                       _tmp134_ = _tmp133_;
+                                       _tmp135_ = vala_ccode_base_module_get_array_size_cname (self, _tmp134_);
                                        _tmp136_ = _tmp135_;
-                                       _tmp137_ = vala_ccode_base_module_get_array_size_cname (self, _tmp136_);
+                                       _tmp137_ = vala_local_variable_new (_tmp131_, _tmp136_, NULL, NULL);
                                        _tmp138_ = _tmp137_;
-                                       _tmp139_ = vala_local_variable_new (_tmp133_, _tmp138_, NULL, NULL);
-                                       _tmp140_ = _tmp139_;
-                                       _g_free0 (_tmp138_);
                                        _g_free0 (_tmp136_);
-                                       _vala_code_node_unref0 (_tmp133_);
-                                       size_var = _tmp140_;
-                                       _tmp141_ = size_var;
-                                       _tmp142_ = local;
-                                       _tmp143_ = vala_variable_get_initializer ((ValaVariable*) _tmp142_);
-                                       _tmp144_ = _tmp143_;
-                                       vala_local_variable_set_no_init (_tmp141_, _tmp144_ != NULL);
-                                       _tmp145_ = size_var;
-                                       vala_ccode_base_module_emit_temp_var (self, _tmp145_);
+                                       _g_free0 (_tmp134_);
+                                       _vala_code_node_unref0 (_tmp131_);
+                                       size_var = _tmp138_;
+                                       _tmp139_ = size_var;
+                                       _tmp140_ = local;
+                                       _tmp141_ = vala_variable_get_initializer ((ValaVariable*) _tmp140_);
+                                       _tmp142_ = _tmp141_;
+                                       vala_local_variable_set_no_init (_tmp139_, _tmp142_ != NULL);
+                                       _tmp143_ = size_var;
+                                       vala_ccode_base_module_emit_temp_var (self, _tmp143_);
                                        _vala_code_node_unref0 (size_var);
                                }
                        }
                        _vala_code_node_unref0 (array_type);
                } else {
-                       ValaLocalVariable* _tmp146_ = NULL;
-                       ValaDataType* _tmp147_ = NULL;
-                       ValaDataType* _tmp148_ = NULL;
-                       _tmp146_ = local;
-                       _tmp147_ = vala_variable_get_variable_type ((ValaVariable*) _tmp146_);
-                       _tmp148_ = _tmp147_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp148_, VALA_TYPE_DELEGATE_TYPE)) {
+                       ValaLocalVariable* _tmp144_ = NULL;
+                       ValaDataType* _tmp145_ = NULL;
+                       ValaDataType* _tmp146_ = NULL;
+                       _tmp144_ = local;
+                       _tmp145_ = vala_variable_get_variable_type ((ValaVariable*) _tmp144_);
+                       _tmp146_ = _tmp145_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp146_, VALA_TYPE_DELEGATE_TYPE)) {
                                ValaDelegateType* deleg_type = NULL;
-                               ValaLocalVariable* _tmp149_ = NULL;
-                               ValaDataType* _tmp150_ = NULL;
-                               ValaDataType* _tmp151_ = NULL;
-                               ValaDelegateType* _tmp152_ = NULL;
+                               ValaLocalVariable* _tmp147_ = NULL;
+                               ValaDataType* _tmp148_ = NULL;
+                               ValaDataType* _tmp149_ = NULL;
+                               ValaDelegateType* _tmp150_ = NULL;
                                ValaDelegate* d = NULL;
-                               ValaDelegateType* _tmp153_ = NULL;
+                               ValaDelegateType* _tmp151_ = NULL;
+                               ValaDelegate* _tmp152_ = NULL;
+                               ValaDelegate* _tmp153_ = NULL;
                                ValaDelegate* _tmp154_ = NULL;
                                ValaDelegate* _tmp155_ = NULL;
-                               ValaDelegate* _tmp156_ = NULL;
-                               ValaDelegate* _tmp157_ = NULL;
-                               gboolean _tmp158_ = FALSE;
-                               gboolean _tmp159_ = FALSE;
-                               _tmp149_ = local;
-                               _tmp150_ = vala_variable_get_variable_type ((ValaVariable*) _tmp149_);
-                               _tmp151_ = _tmp150_;
-                               _tmp152_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp151_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                               deleg_type = _tmp152_;
-                               _tmp153_ = deleg_type;
-                               _tmp154_ = vala_delegate_type_get_delegate_symbol (_tmp153_);
-                               _tmp155_ = _tmp154_;
-                               _tmp156_ = _vala_code_node_ref0 (_tmp155_);
-                               d = _tmp156_;
-                               _tmp157_ = d;
-                               _tmp158_ = vala_delegate_get_has_target (_tmp157_);
-                               _tmp159_ = _tmp158_;
-                               if (_tmp159_) {
+                               gboolean _tmp156_ = FALSE;
+                               gboolean _tmp157_ = FALSE;
+                               _tmp147_ = local;
+                               _tmp148_ = vala_variable_get_variable_type ((ValaVariable*) _tmp147_);
+                               _tmp149_ = _tmp148_;
+                               _tmp150_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp149_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                               deleg_type = _tmp150_;
+                               _tmp151_ = deleg_type;
+                               _tmp152_ = vala_delegate_type_get_delegate_symbol (_tmp151_);
+                               _tmp153_ = _tmp152_;
+                               _tmp154_ = _vala_code_node_ref0 (_tmp153_);
+                               d = _tmp154_;
+                               _tmp155_ = d;
+                               _tmp156_ = vala_delegate_get_has_target (_tmp155_);
+                               _tmp157_ = _tmp156_;
+                               if (_tmp157_) {
                                        ValaLocalVariable* target_var = NULL;
-                                       ValaVoidType* _tmp160_ = NULL;
-                                       ValaVoidType* _tmp161_ = NULL;
-                                       ValaPointerType* _tmp162_ = NULL;
-                                       ValaPointerType* _tmp163_ = NULL;
-                                       ValaLocalVariable* _tmp164_ = NULL;
+                                       ValaVoidType* _tmp158_ = NULL;
+                                       ValaVoidType* _tmp159_ = NULL;
+                                       ValaPointerType* _tmp160_ = NULL;
+                                       ValaPointerType* _tmp161_ = NULL;
+                                       ValaLocalVariable* _tmp162_ = NULL;
+                                       gchar* _tmp163_ = NULL;
+                                       gchar* _tmp164_ = NULL;
                                        gchar* _tmp165_ = NULL;
                                        gchar* _tmp166_ = NULL;
-                                       gchar* _tmp167_ = NULL;
-                                       gchar* _tmp168_ = NULL;
+                                       ValaLocalVariable* _tmp167_ = NULL;
+                                       ValaLocalVariable* _tmp168_ = NULL;
                                        ValaLocalVariable* _tmp169_ = NULL;
                                        ValaLocalVariable* _tmp170_ = NULL;
-                                       ValaLocalVariable* _tmp171_ = NULL;
-                                       ValaLocalVariable* _tmp172_ = NULL;
-                                       ValaExpression* _tmp173_ = NULL;
-                                       ValaExpression* _tmp174_ = NULL;
-                                       ValaLocalVariable* _tmp175_ = NULL;
-                                       ValaDelegateType* _tmp176_ = NULL;
-                                       gboolean _tmp177_ = FALSE;
-                                       gboolean _tmp178_ = FALSE;
-                                       _tmp160_ = vala_void_type_new (NULL);
+                                       ValaExpression* _tmp171_ = NULL;
+                                       ValaExpression* _tmp172_ = NULL;
+                                       ValaLocalVariable* _tmp173_ = NULL;
+                                       ValaDelegateType* _tmp174_ = NULL;
+                                       gboolean _tmp175_ = FALSE;
+                                       gboolean _tmp176_ = FALSE;
+                                       _tmp158_ = vala_void_type_new (NULL);
+                                       _tmp159_ = _tmp158_;
+                                       _tmp160_ = vala_pointer_type_new ((ValaDataType*) _tmp159_, NULL);
                                        _tmp161_ = _tmp160_;
-                                       _tmp162_ = vala_pointer_type_new ((ValaDataType*) _tmp161_, NULL);
-                                       _tmp163_ = _tmp162_;
-                                       _tmp164_ = local;
-                                       _tmp165_ = vala_ccode_base_module_get_local_cname (self, _tmp164_);
+                                       _tmp162_ = local;
+                                       _tmp163_ = vala_ccode_base_module_get_local_cname (self, _tmp162_);
+                                       _tmp164_ = _tmp163_;
+                                       _tmp165_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp164_);
                                        _tmp166_ = _tmp165_;
-                                       _tmp167_ = vala_ccode_base_module_get_delegate_target_cname (self, _tmp166_);
+                                       _tmp167_ = vala_local_variable_new ((ValaDataType*) _tmp161_, _tmp166_, NULL, NULL);
                                        _tmp168_ = _tmp167_;
-                                       _tmp169_ = vala_local_variable_new ((ValaDataType*) _tmp163_, _tmp168_, NULL, NULL);
-                                       _tmp170_ = _tmp169_;
-                                       _g_free0 (_tmp168_);
                                        _g_free0 (_tmp166_);
-                                       _vala_code_node_unref0 (_tmp163_);
+                                       _g_free0 (_tmp164_);
                                        _vala_code_node_unref0 (_tmp161_);
-                                       target_var = _tmp170_;
-                                       _tmp171_ = target_var;
-                                       _tmp172_ = local;
-                                       _tmp173_ = vala_variable_get_initializer ((ValaVariable*) _tmp172_);
-                                       _tmp174_ = _tmp173_;
-                                       vala_local_variable_set_no_init (_tmp171_, _tmp174_ != NULL);
-                                       _tmp175_ = target_var;
-                                       vala_ccode_base_module_emit_temp_var (self, _tmp175_);
-                                       _tmp176_ = deleg_type;
-                                       _tmp177_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp176_);
-                                       _tmp178_ = _tmp177_;
-                                       if (_tmp178_) {
+                                       _vala_code_node_unref0 (_tmp159_);
+                                       target_var = _tmp168_;
+                                       _tmp169_ = target_var;
+                                       _tmp170_ = local;
+                                       _tmp171_ = vala_variable_get_initializer ((ValaVariable*) _tmp170_);
+                                       _tmp172_ = _tmp171_;
+                                       vala_local_variable_set_no_init (_tmp169_, _tmp172_ != NULL);
+                                       _tmp173_ = target_var;
+                                       vala_ccode_base_module_emit_temp_var (self, _tmp173_);
+                                       _tmp174_ = deleg_type;
+                                       _tmp175_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp174_);
+                                       _tmp176_ = _tmp175_;
+                                       if (_tmp176_) {
                                                ValaLocalVariable* target_destroy_notify_var = NULL;
-                                               ValaDataType* _tmp179_ = NULL;
-                                               ValaLocalVariable* _tmp180_ = NULL;
+                                               ValaDataType* _tmp177_ = NULL;
+                                               ValaLocalVariable* _tmp178_ = NULL;
+                                               gchar* _tmp179_ = NULL;
+                                               gchar* _tmp180_ = NULL;
                                                gchar* _tmp181_ = NULL;
                                                gchar* _tmp182_ = NULL;
-                                               gchar* _tmp183_ = NULL;
-                                               gchar* _tmp184_ = NULL;
+                                               ValaLocalVariable* _tmp183_ = NULL;
+                                               ValaLocalVariable* _tmp184_ = NULL;
                                                ValaLocalVariable* _tmp185_ = NULL;
                                                ValaLocalVariable* _tmp186_ = NULL;
-                                               ValaLocalVariable* _tmp187_ = NULL;
-                                               ValaLocalVariable* _tmp188_ = NULL;
-                                               ValaExpression* _tmp189_ = NULL;
-                                               ValaExpression* _tmp190_ = NULL;
-                                               ValaLocalVariable* _tmp191_ = NULL;
-                                               _tmp179_ = self->gdestroynotify_type;
-                                               _tmp180_ = local;
-                                               _tmp181_ = vala_ccode_base_module_get_local_cname (self, _tmp180_);
+                                               ValaExpression* _tmp187_ = NULL;
+                                               ValaExpression* _tmp188_ = NULL;
+                                               ValaLocalVariable* _tmp189_ = NULL;
+                                               _tmp177_ = self->gdestroynotify_type;
+                                               _tmp178_ = local;
+                                               _tmp179_ = vala_ccode_base_module_get_local_cname (self, _tmp178_);
+                                               _tmp180_ = _tmp179_;
+                                               _tmp181_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp180_);
                                                _tmp182_ = _tmp181_;
-                                               _tmp183_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname (self, _tmp182_);
+                                               _tmp183_ = vala_local_variable_new (_tmp177_, _tmp182_, NULL, NULL);
                                                _tmp184_ = _tmp183_;
-                                               _tmp185_ = vala_local_variable_new (_tmp179_, _tmp184_, NULL, NULL);
-                                               _tmp186_ = _tmp185_;
-                                               _g_free0 (_tmp184_);
                                                _g_free0 (_tmp182_);
-                                               target_destroy_notify_var = _tmp186_;
-                                               _tmp187_ = target_destroy_notify_var;
-                                               _tmp188_ = local;
-                                               _tmp189_ = vala_variable_get_initializer ((ValaVariable*) _tmp188_);
-                                               _tmp190_ = _tmp189_;
-                                               vala_local_variable_set_no_init (_tmp187_, _tmp190_ != NULL);
-                                               _tmp191_ = target_destroy_notify_var;
-                                               vala_ccode_base_module_emit_temp_var (self, _tmp191_);
+                                               _g_free0 (_tmp180_);
+                                               target_destroy_notify_var = _tmp184_;
+                                               _tmp185_ = target_destroy_notify_var;
+                                               _tmp186_ = local;
+                                               _tmp187_ = vala_variable_get_initializer ((ValaVariable*) _tmp186_);
+                                               _tmp188_ = _tmp187_;
+                                               vala_local_variable_set_no_init (_tmp185_, _tmp188_ != NULL);
+                                               _tmp189_ = target_destroy_notify_var;
+                                               vala_ccode_base_module_emit_temp_var (self, _tmp189_);
                                                _vala_code_node_unref0 (target_destroy_notify_var);
                                        }
                                        _vala_code_node_unref0 (target_var);
@@ -13841,63 +14098,63 @@ static void vala_ccode_base_module_real_visit_local_variable (ValaCodeVisitor* b
                        }
                }
        }
-       _tmp192_ = rhs;
-       if (_tmp192_ != NULL) {
-               ValaLocalVariable* _tmp193_ = NULL;
-               ValaLocalVariable* _tmp194_ = NULL;
-               ValaExpression* _tmp195_ = NULL;
-               ValaExpression* _tmp196_ = NULL;
-               gboolean _tmp197_ = FALSE;
-               _tmp193_ = local;
-               _tmp194_ = local;
-               _tmp195_ = vala_variable_get_initializer ((ValaVariable*) _tmp194_);
-               _tmp196_ = _tmp195_;
-               _tmp197_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp193_, _tmp196_);
-               if (!_tmp197_) {
-                       ValaLocalVariable* _tmp198_ = NULL;
-                       ValaLocalVariable* _tmp199_ = NULL;
-                       ValaExpression* _tmp200_ = NULL;
-                       ValaExpression* _tmp201_ = NULL;
-                       ValaTargetValue* _tmp202_ = NULL;
-                       ValaTargetValue* _tmp203_ = NULL;
-                       _tmp198_ = local;
-                       _tmp199_ = local;
-                       _tmp200_ = vala_variable_get_initializer ((ValaVariable*) _tmp199_);
+       _tmp190_ = rhs;
+       if (_tmp190_ != NULL) {
+               ValaLocalVariable* _tmp191_ = NULL;
+               ValaLocalVariable* _tmp192_ = NULL;
+               ValaExpression* _tmp193_ = NULL;
+               ValaExpression* _tmp194_ = NULL;
+               gboolean _tmp195_ = FALSE;
+               _tmp191_ = local;
+               _tmp192_ = local;
+               _tmp193_ = vala_variable_get_initializer ((ValaVariable*) _tmp192_);
+               _tmp194_ = _tmp193_;
+               _tmp195_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp191_, _tmp194_);
+               if (!_tmp195_) {
+                       ValaLocalVariable* _tmp196_ = NULL;
+                       ValaLocalVariable* _tmp197_ = NULL;
+                       ValaExpression* _tmp198_ = NULL;
+                       ValaExpression* _tmp199_ = NULL;
+                       ValaTargetValue* _tmp200_ = NULL;
+                       ValaTargetValue* _tmp201_ = NULL;
+                       _tmp196_ = local;
+                       _tmp197_ = local;
+                       _tmp198_ = vala_variable_get_initializer ((ValaVariable*) _tmp197_);
+                       _tmp199_ = _tmp198_;
+                       _tmp200_ = vala_expression_get_target_value (_tmp199_);
                        _tmp201_ = _tmp200_;
-                       _tmp202_ = vala_expression_get_target_value (_tmp201_);
-                       _tmp203_ = _tmp202_;
-                       vala_code_generator_store_local ((ValaCodeGenerator*) self, _tmp198_, _tmp203_, TRUE);
-               }
-       }
-       _tmp205_ = local;
-       _tmp206_ = vala_variable_get_initializer ((ValaVariable*) _tmp205_);
-       _tmp207_ = _tmp206_;
-       if (_tmp207_ != NULL) {
-               ValaLocalVariable* _tmp208_ = NULL;
-               ValaExpression* _tmp209_ = NULL;
-               ValaExpression* _tmp210_ = NULL;
-               gboolean _tmp211_ = FALSE;
-               gboolean _tmp212_ = FALSE;
-               _tmp208_ = local;
-               _tmp209_ = vala_variable_get_initializer ((ValaVariable*) _tmp208_);
+                       vala_code_generator_store_local ((ValaCodeGenerator*) self, _tmp196_, _tmp201_, TRUE);
+               }
+       }
+       _tmp203_ = local;
+       _tmp204_ = vala_variable_get_initializer ((ValaVariable*) _tmp203_);
+       _tmp205_ = _tmp204_;
+       if (_tmp205_ != NULL) {
+               ValaLocalVariable* _tmp206_ = NULL;
+               ValaExpression* _tmp207_ = NULL;
+               ValaExpression* _tmp208_ = NULL;
+               gboolean _tmp209_ = FALSE;
+               gboolean _tmp210_ = FALSE;
+               _tmp206_ = local;
+               _tmp207_ = vala_variable_get_initializer ((ValaVariable*) _tmp206_);
+               _tmp208_ = _tmp207_;
+               _tmp209_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp208_);
                _tmp210_ = _tmp209_;
-               _tmp211_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp210_);
-               _tmp212_ = _tmp211_;
-               _tmp204_ = _tmp212_;
+               _tmp202_ = _tmp210_;
        } else {
-               _tmp204_ = FALSE;
-       }
-       if (_tmp204_) {
-               ValaLocalVariable* _tmp213_ = NULL;
-               ValaExpression* _tmp214_ = NULL;
-               ValaExpression* _tmp215_ = NULL;
-               _tmp213_ = local;
-               _tmp214_ = vala_variable_get_initializer ((ValaVariable*) _tmp213_);
-               _tmp215_ = _tmp214_;
-               vala_ccode_base_module_add_simple_check (self, (ValaCodeNode*) _tmp215_, FALSE);
+               _tmp202_ = FALSE;
+       }
+       if (_tmp202_) {
+               ValaLocalVariable* _tmp211_ = NULL;
+               ValaExpression* _tmp212_ = NULL;
+               ValaExpression* _tmp213_ = NULL;
+               _tmp211_ = local;
+               _tmp212_ = vala_variable_get_initializer ((ValaVariable*) _tmp211_);
+               _tmp213_ = _tmp212_;
+               vala_ccode_base_module_add_simple_check (self, (ValaCodeNode*) _tmp213_, FALSE);
        }
-       _tmp216_ = local;
-       vala_symbol_set_active ((ValaSymbol*) _tmp216_, TRUE);
+       _tmp214_ = local;
+       vala_symbol_set_active ((ValaSymbol*) _tmp214_, TRUE);
        _vala_ccode_node_unref0 (rhs);
 }
 
@@ -17864,9 +18121,9 @@ ValaCCodeExpression* vala_ccode_base_module_get_destroy_func_expression (ValaCCo
                        if (_tmp55_ != NULL) {
                                gchar* unref_function = NULL;
                                ValaDataType* _tmp56_ = NULL;
-                               const gchar* _tmp127_ = NULL;
                                const gchar* _tmp129_ = NULL;
-                               ValaCCodeIdentifier* _tmp130_ = NULL;
+                               const gchar* _tmp131_ = NULL;
+                               ValaCCodeIdentifier* _tmp132_ = NULL;
                                _tmp56_ = type;
                                if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp56_, VALA_TYPE_REFERENCE_TYPE)) {
                                        ValaDataType* _tmp57_ = NULL;
@@ -18057,177 +18314,186 @@ ValaCCodeExpression* vala_ccode_base_module_get_destroy_func_expression (ValaCCo
                                                        ValaStruct* _tmp121_ = NULL;
                                                        ValaStruct* _tmp122_ = NULL;
                                                        gboolean _tmp123_ = FALSE;
-                                                       ValaStruct* _tmp125_ = NULL;
-                                                       gchar* _tmp126_ = NULL;
                                                        _tmp118_ = type;
                                                        _tmp119_ = vala_data_type_get_data_type (_tmp118_);
                                                        _tmp120_ = _tmp119_;
                                                        _tmp121_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp120_, VALA_TYPE_STRUCT, ValaStruct));
                                                        st = _tmp121_;
                                                        _tmp122_ = st;
-                                                       _tmp123_ = vala_ccode_base_module_get_ccode_has_destroy_function (_tmp122_);
-                                                       if (!_tmp123_) {
+                                                       _tmp123_ = vala_struct_is_disposable (_tmp122_);
+                                                       if (_tmp123_) {
                                                                ValaStruct* _tmp124_ = NULL;
+                                                               gboolean _tmp125_ = FALSE;
+                                                               ValaStruct* _tmp127_ = NULL;
+                                                               gchar* _tmp128_ = NULL;
                                                                _tmp124_ = st;
-                                                               vala_ccode_base_module_generate_struct_destroy_function (self, _tmp124_);
+                                                               _tmp125_ = vala_ccode_base_module_get_ccode_has_destroy_function (_tmp124_);
+                                                               if (!_tmp125_) {
+                                                                       ValaStruct* _tmp126_ = NULL;
+                                                                       _tmp126_ = st;
+                                                                       vala_ccode_base_module_generate_struct_destroy_function (self, _tmp126_);
+                                                               }
+                                                               _tmp127_ = st;
+                                                               _tmp128_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp127_);
+                                                               _g_free0 (unref_function);
+                                                               unref_function = _tmp128_;
+                                                       } else {
+                                                               _g_free0 (unref_function);
+                                                               unref_function = NULL;
                                                        }
-                                                       _tmp125_ = st;
-                                                       _tmp126_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp125_);
-                                                       _g_free0 (unref_function);
-                                                       unref_function = _tmp126_;
                                                        _vala_code_node_unref0 (st);
                                                }
                                        }
                                }
-                               _tmp127_ = unref_function;
-                               if (_tmp127_ == NULL) {
-                                       ValaCCodeConstant* _tmp128_ = NULL;
-                                       _tmp128_ = vala_ccode_constant_new ("NULL");
-                                       result = (ValaCCodeExpression*) _tmp128_;
+                               _tmp129_ = unref_function;
+                               if (_tmp129_ == NULL) {
+                                       ValaCCodeConstant* _tmp130_ = NULL;
+                                       _tmp130_ = vala_ccode_constant_new ("NULL");
+                                       result = (ValaCCodeExpression*) _tmp130_;
                                        _g_free0 (unref_function);
                                        return result;
                                }
-                               _tmp129_ = unref_function;
-                               _tmp130_ = vala_ccode_identifier_new (_tmp129_);
-                               result = (ValaCCodeExpression*) _tmp130_;
+                               _tmp131_ = unref_function;
+                               _tmp132_ = vala_ccode_identifier_new (_tmp131_);
+                               result = (ValaCCodeExpression*) _tmp132_;
                                _g_free0 (unref_function);
                                return result;
                        } else {
-                               ValaDataType* _tmp131_ = NULL;
-                               ValaTypeParameter* _tmp132_ = NULL;
-                               ValaTypeParameter* _tmp133_ = NULL;
-                               _tmp131_ = type;
-                               _tmp132_ = vala_data_type_get_type_parameter (_tmp131_);
-                               _tmp133_ = _tmp132_;
-                               if (_tmp133_ != NULL) {
+                               ValaDataType* _tmp133_ = NULL;
+                               ValaTypeParameter* _tmp134_ = NULL;
+                               ValaTypeParameter* _tmp135_ = NULL;
+                               _tmp133_ = type;
+                               _tmp134_ = vala_data_type_get_type_parameter (_tmp133_);
+                               _tmp135_ = _tmp134_;
+                               if (_tmp135_ != NULL) {
                                        gchar* func_name = NULL;
-                                       ValaDataType* _tmp134_ = NULL;
-                                       ValaTypeParameter* _tmp135_ = NULL;
-                                       ValaTypeParameter* _tmp136_ = NULL;
-                                       const gchar* _tmp137_ = NULL;
-                                       const gchar* _tmp138_ = NULL;
-                                       gchar* _tmp139_ = NULL;
-                                       gchar* _tmp140_ = NULL;
+                                       ValaDataType* _tmp136_ = NULL;
+                                       ValaTypeParameter* _tmp137_ = NULL;
+                                       ValaTypeParameter* _tmp138_ = NULL;
+                                       const gchar* _tmp139_ = NULL;
+                                       const gchar* _tmp140_ = NULL;
                                        gchar* _tmp141_ = NULL;
                                        gchar* _tmp142_ = NULL;
-                                       ValaDataType* _tmp143_ = NULL;
-                                       ValaTypeParameter* _tmp144_ = NULL;
-                                       ValaTypeParameter* _tmp145_ = NULL;
-                                       ValaSymbol* _tmp146_ = NULL;
-                                       ValaSymbol* _tmp147_ = NULL;
-                                       gboolean _tmp185_ = FALSE;
-                                       gboolean _tmp186_ = FALSE;
-                                       ValaDataType* _tmp187_ = NULL;
+                                       gchar* _tmp143_ = NULL;
+                                       gchar* _tmp144_ = NULL;
+                                       ValaDataType* _tmp145_ = NULL;
+                                       ValaTypeParameter* _tmp146_ = NULL;
+                                       ValaTypeParameter* _tmp147_ = NULL;
+                                       ValaSymbol* _tmp148_ = NULL;
+                                       ValaSymbol* _tmp149_ = NULL;
+                                       gboolean _tmp187_ = FALSE;
                                        gboolean _tmp188_ = FALSE;
-                                       _tmp134_ = type;
-                                       _tmp135_ = vala_data_type_get_type_parameter (_tmp134_);
-                                       _tmp136_ = _tmp135_;
-                                       _tmp137_ = vala_symbol_get_name ((ValaSymbol*) _tmp136_);
+                                       ValaDataType* _tmp189_ = NULL;
+                                       gboolean _tmp190_ = FALSE;
+                                       _tmp136_ = type;
+                                       _tmp137_ = vala_data_type_get_type_parameter (_tmp136_);
                                        _tmp138_ = _tmp137_;
-                                       _tmp139_ = g_utf8_strdown (_tmp138_, (gssize) (-1));
+                                       _tmp139_ = vala_symbol_get_name ((ValaSymbol*) _tmp138_);
                                        _tmp140_ = _tmp139_;
-                                       _tmp141_ = g_strdup_printf ("%s_destroy_func", _tmp140_);
+                                       _tmp141_ = g_utf8_strdown (_tmp140_, (gssize) (-1));
                                        _tmp142_ = _tmp141_;
-                                       _g_free0 (_tmp140_);
-                                       func_name = _tmp142_;
-                                       _tmp143_ = type;
-                                       _tmp144_ = vala_data_type_get_type_parameter (_tmp143_);
-                                       _tmp145_ = _tmp144_;
-                                       _tmp146_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp145_);
+                                       _tmp143_ = g_strdup_printf ("%s_destroy_func", _tmp142_);
+                                       _tmp144_ = _tmp143_;
+                                       _g_free0 (_tmp142_);
+                                       func_name = _tmp144_;
+                                       _tmp145_ = type;
+                                       _tmp146_ = vala_data_type_get_type_parameter (_tmp145_);
                                        _tmp147_ = _tmp146_;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp147_, VALA_TYPE_INTERFACE)) {
+                                       _tmp148_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp147_);
+                                       _tmp149_ = _tmp148_;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp149_, VALA_TYPE_INTERFACE)) {
                                                ValaInterface* iface = NULL;
-                                               ValaDataType* _tmp148_ = NULL;
-                                               ValaTypeParameter* _tmp149_ = NULL;
-                                               ValaTypeParameter* _tmp150_ = NULL;
-                                               ValaSymbol* _tmp151_ = NULL;
-                                               ValaSymbol* _tmp152_ = NULL;
-                                               ValaInterface* _tmp153_ = NULL;
-                                               ValaInterface* _tmp154_ = NULL;
+                                               ValaDataType* _tmp150_ = NULL;
+                                               ValaTypeParameter* _tmp151_ = NULL;
+                                               ValaTypeParameter* _tmp152_ = NULL;
+                                               ValaSymbol* _tmp153_ = NULL;
+                                               ValaSymbol* _tmp154_ = NULL;
+                                               ValaInterface* _tmp155_ = NULL;
+                                               ValaInterface* _tmp156_ = NULL;
                                                gchar* method_name = NULL;
-                                               ValaDataType* _tmp155_ = NULL;
-                                               ValaTypeParameter* _tmp156_ = NULL;
-                                               ValaTypeParameter* _tmp157_ = NULL;
-                                               const gchar* _tmp158_ = NULL;
-                                               const gchar* _tmp159_ = NULL;
-                                               gchar* _tmp160_ = NULL;
-                                               gchar* _tmp161_ = NULL;
+                                               ValaDataType* _tmp157_ = NULL;
+                                               ValaTypeParameter* _tmp158_ = NULL;
+                                               ValaTypeParameter* _tmp159_ = NULL;
+                                               const gchar* _tmp160_ = NULL;
+                                               const gchar* _tmp161_ = NULL;
                                                gchar* _tmp162_ = NULL;
                                                gchar* _tmp163_ = NULL;
-                                               ValaCCodeFunctionCall* cast_self = NULL;
-                                               ValaInterface* _tmp164_ = NULL;
+                                               gchar* _tmp164_ = NULL;
                                                gchar* _tmp165_ = NULL;
-                                               gchar* _tmp166_ = NULL;
+                                               ValaCCodeFunctionCall* cast_self = NULL;
+                                               ValaInterface* _tmp166_ = NULL;
                                                gchar* _tmp167_ = NULL;
                                                gchar* _tmp168_ = NULL;
-                                               ValaCCodeIdentifier* _tmp169_ = NULL;
-                                               ValaCCodeIdentifier* _tmp170_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp171_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp172_ = NULL;
+                                               gchar* _tmp169_ = NULL;
+                                               gchar* _tmp170_ = NULL;
+                                               ValaCCodeIdentifier* _tmp171_ = NULL;
+                                               ValaCCodeIdentifier* _tmp172_ = NULL;
                                                ValaCCodeFunctionCall* _tmp173_ = NULL;
-                                               ValaCCodeIdentifier* _tmp174_ = NULL;
-                                               ValaCCodeIdentifier* _tmp175_ = NULL;
+                                               ValaCCodeFunctionCall* _tmp174_ = NULL;
+                                               ValaCCodeFunctionCall* _tmp175_ = NULL;
+                                               ValaCCodeIdentifier* _tmp176_ = NULL;
+                                               ValaCCodeIdentifier* _tmp177_ = NULL;
                                                ValaCCodeFunctionCall* function_call = NULL;
-                                               ValaCCodeFunctionCall* _tmp176_ = NULL;
-                                               const gchar* _tmp177_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp178_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp179_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp180_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp181_ = NULL;
+                                               ValaCCodeFunctionCall* _tmp178_ = NULL;
+                                               const gchar* _tmp179_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp180_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp181_ = NULL;
                                                ValaCCodeFunctionCall* _tmp182_ = NULL;
-                                               ValaCCodeIdentifier* _tmp183_ = NULL;
-                                               ValaCCodeIdentifier* _tmp184_ = NULL;
-                                               _tmp148_ = type;
-                                               _tmp149_ = vala_data_type_get_type_parameter (_tmp148_);
-                                               _tmp150_ = _tmp149_;
-                                               _tmp151_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp150_);
+                                               ValaCCodeFunctionCall* _tmp183_ = NULL;
+                                               ValaCCodeFunctionCall* _tmp184_ = NULL;
+                                               ValaCCodeIdentifier* _tmp185_ = NULL;
+                                               ValaCCodeIdentifier* _tmp186_ = NULL;
+                                               _tmp150_ = type;
+                                               _tmp151_ = vala_data_type_get_type_parameter (_tmp150_);
                                                _tmp152_ = _tmp151_;
-                                               _tmp153_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp152_, VALA_TYPE_INTERFACE, ValaInterface));
-                                               iface = _tmp153_;
-                                               _tmp154_ = iface;
-                                               vala_ccode_base_module_require_generic_accessors (self, _tmp154_);
-                                               _tmp155_ = type;
-                                               _tmp156_ = vala_data_type_get_type_parameter (_tmp155_);
-                                               _tmp157_ = _tmp156_;
-                                               _tmp158_ = vala_symbol_get_name ((ValaSymbol*) _tmp157_);
+                                               _tmp153_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp152_);
+                                               _tmp154_ = _tmp153_;
+                                               _tmp155_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp154_, VALA_TYPE_INTERFACE, ValaInterface));
+                                               iface = _tmp155_;
+                                               _tmp156_ = iface;
+                                               vala_ccode_base_module_require_generic_accessors (self, _tmp156_);
+                                               _tmp157_ = type;
+                                               _tmp158_ = vala_data_type_get_type_parameter (_tmp157_);
                                                _tmp159_ = _tmp158_;
-                                               _tmp160_ = g_utf8_strdown (_tmp159_, (gssize) (-1));
+                                               _tmp160_ = vala_symbol_get_name ((ValaSymbol*) _tmp159_);
                                                _tmp161_ = _tmp160_;
-                                               _tmp162_ = g_strdup_printf ("get_%s_destroy_func", _tmp161_);
+                                               _tmp162_ = g_utf8_strdown (_tmp161_, (gssize) (-1));
                                                _tmp163_ = _tmp162_;
-                                               _g_free0 (_tmp161_);
-                                               method_name = _tmp163_;
-                                               _tmp164_ = iface;
-                                               _tmp165_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp164_, NULL);
-                                               _tmp166_ = _tmp165_;
-                                               _tmp167_ = g_strdup_printf ("%s_GET_INTERFACE", _tmp166_);
+                                               _tmp164_ = g_strdup_printf ("get_%s_destroy_func", _tmp163_);
+                                               _tmp165_ = _tmp164_;
+                                               _g_free0 (_tmp163_);
+                                               method_name = _tmp165_;
+                                               _tmp166_ = iface;
+                                               _tmp167_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp166_, NULL);
                                                _tmp168_ = _tmp167_;
-                                               _tmp169_ = vala_ccode_identifier_new (_tmp168_);
+                                               _tmp169_ = g_strdup_printf ("%s_GET_INTERFACE", _tmp168_);
                                                _tmp170_ = _tmp169_;
-                                               _tmp171_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp170_);
+                                               _tmp171_ = vala_ccode_identifier_new (_tmp170_);
                                                _tmp172_ = _tmp171_;
-                                               _vala_ccode_node_unref0 (_tmp170_);
+                                               _tmp173_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp172_);
+                                               _tmp174_ = _tmp173_;
+                                               _vala_ccode_node_unref0 (_tmp172_);
+                                               _g_free0 (_tmp170_);
                                                _g_free0 (_tmp168_);
-                                               _g_free0 (_tmp166_);
-                                               cast_self = _tmp172_;
-                                               _tmp173_ = cast_self;
-                                               _tmp174_ = vala_ccode_identifier_new ("self");
-                                               _tmp175_ = _tmp174_;
-                                               vala_ccode_function_call_add_argument (_tmp173_, (ValaCCodeExpression*) _tmp175_);
-                                               _vala_ccode_node_unref0 (_tmp175_);
-                                               _tmp176_ = cast_self;
-                                               _tmp177_ = method_name;
-                                               _tmp178_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp176_, _tmp177_);
-                                               _tmp179_ = _tmp178_;
-                                               _tmp180_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp179_);
+                                               cast_self = _tmp174_;
+                                               _tmp175_ = cast_self;
+                                               _tmp176_ = vala_ccode_identifier_new ("self");
+                                               _tmp177_ = _tmp176_;
+                                               vala_ccode_function_call_add_argument (_tmp175_, (ValaCCodeExpression*) _tmp177_);
+                                               _vala_ccode_node_unref0 (_tmp177_);
+                                               _tmp178_ = cast_self;
+                                               _tmp179_ = method_name;
+                                               _tmp180_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp178_, _tmp179_);
                                                _tmp181_ = _tmp180_;
-                                               _vala_ccode_node_unref0 (_tmp179_);
-                                               function_call = _tmp181_;
-                                               _tmp182_ = function_call;
-                                               _tmp183_ = vala_ccode_identifier_new ("self");
-                                               _tmp184_ = _tmp183_;
-                                               vala_ccode_function_call_add_argument (_tmp182_, (ValaCCodeExpression*) _tmp184_);
-                                               _vala_ccode_node_unref0 (_tmp184_);
+                                               _tmp182_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp181_);
+                                               _tmp183_ = _tmp182_;
+                                               _vala_ccode_node_unref0 (_tmp181_);
+                                               function_call = _tmp183_;
+                                               _tmp184_ = function_call;
+                                               _tmp185_ = vala_ccode_identifier_new ("self");
+                                               _tmp186_ = _tmp185_;
+                                               vala_ccode_function_call_add_argument (_tmp184_, (ValaCCodeExpression*) _tmp186_);
+                                               _vala_ccode_node_unref0 (_tmp186_);
                                                result = (ValaCCodeExpression*) function_call;
                                                _vala_ccode_node_unref0 (cast_self);
                                                _g_free0 (method_name);
@@ -18235,74 +18501,74 @@ ValaCCodeExpression* vala_ccode_base_module_get_destroy_func_expression (ValaCCo
                                                _g_free0 (func_name);
                                                return result;
                                        }
-                                       _tmp187_ = type;
-                                       _tmp188_ = vala_ccode_base_module_is_in_generic_type (self, _tmp187_);
-                                       if (_tmp188_) {
-                                               gboolean _tmp189_ = FALSE;
-                                               _tmp189_ = is_chainup;
-                                               _tmp186_ = !_tmp189_;
+                                       _tmp189_ = type;
+                                       _tmp190_ = vala_ccode_base_module_is_in_generic_type (self, _tmp189_);
+                                       if (_tmp190_) {
+                                               gboolean _tmp191_ = FALSE;
+                                               _tmp191_ = is_chainup;
+                                               _tmp188_ = !_tmp191_;
                                        } else {
-                                               _tmp186_ = FALSE;
+                                               _tmp188_ = FALSE;
                                        }
-                                       if (_tmp186_) {
-                                               gboolean _tmp190_ = FALSE;
-                                               gboolean _tmp191_ = FALSE;
-                                               _tmp190_ = vala_ccode_base_module_get_in_creation_method (self);
-                                               _tmp191_ = _tmp190_;
-                                               _tmp185_ = !_tmp191_;
+                                       if (_tmp188_) {
+                                               gboolean _tmp192_ = FALSE;
+                                               gboolean _tmp193_ = FALSE;
+                                               _tmp192_ = vala_ccode_base_module_get_in_creation_method (self);
+                                               _tmp193_ = _tmp192_;
+                                               _tmp187_ = !_tmp193_;
                                        } else {
-                                               _tmp185_ = FALSE;
+                                               _tmp187_ = FALSE;
                                        }
-                                       if (_tmp185_) {
-                                               ValaCCodeExpression* _tmp192_ = NULL;
-                                               ValaCCodeExpression* _tmp193_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp194_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp195_ = NULL;
-                                               const gchar* _tmp196_ = NULL;
+                                       if (_tmp187_) {
+                                               ValaCCodeExpression* _tmp194_ = NULL;
+                                               ValaCCodeExpression* _tmp195_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp196_ = NULL;
                                                ValaCCodeMemberAccess* _tmp197_ = NULL;
-                                               ValaCCodeExpression* _tmp198_ = NULL;
-                                               _tmp192_ = vala_ccode_base_module_get_result_cexpression (self, "self");
-                                               _tmp193_ = _tmp192_;
-                                               _tmp194_ = vala_ccode_member_access_new_pointer (_tmp193_, "priv");
+                                               const gchar* _tmp198_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp199_ = NULL;
+                                               ValaCCodeExpression* _tmp200_ = NULL;
+                                               _tmp194_ = vala_ccode_base_module_get_result_cexpression (self, "self");
                                                _tmp195_ = _tmp194_;
-                                               _tmp196_ = func_name;
-                                               _tmp197_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp195_, _tmp196_);
-                                               _tmp198_ = (ValaCCodeExpression*) _tmp197_;
+                                               _tmp196_ = vala_ccode_member_access_new_pointer (_tmp195_, "priv");
+                                               _tmp197_ = _tmp196_;
+                                               _tmp198_ = func_name;
+                                               _tmp199_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp197_, _tmp198_);
+                                               _tmp200_ = (ValaCCodeExpression*) _tmp199_;
+                                               _vala_ccode_node_unref0 (_tmp197_);
                                                _vala_ccode_node_unref0 (_tmp195_);
-                                               _vala_ccode_node_unref0 (_tmp193_);
-                                               result = _tmp198_;
+                                               result = _tmp200_;
                                                _g_free0 (func_name);
                                                return result;
                                        } else {
-                                               const gchar* _tmp199_ = NULL;
-                                               ValaCCodeExpression* _tmp200_ = NULL;
-                                               _tmp199_ = func_name;
-                                               _tmp200_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp199_);
-                                               result = _tmp200_;
+                                               const gchar* _tmp201_ = NULL;
+                                               ValaCCodeExpression* _tmp202_ = NULL;
+                                               _tmp201_ = func_name;
+                                               _tmp202_ = vala_ccode_base_module_get_variable_cexpression (self, _tmp201_);
+                                               result = _tmp202_;
                                                _g_free0 (func_name);
                                                return result;
                                        }
                                        _g_free0 (func_name);
                                } else {
-                                       ValaDataType* _tmp201_ = NULL;
-                                       _tmp201_ = type;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp201_, VALA_TYPE_ARRAY_TYPE)) {
-                                               ValaCCodeIdentifier* _tmp202_ = NULL;
-                                               _tmp202_ = vala_ccode_identifier_new ("g_free");
-                                               result = (ValaCCodeExpression*) _tmp202_;
+                                       ValaDataType* _tmp203_ = NULL;
+                                       _tmp203_ = type;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp203_, VALA_TYPE_ARRAY_TYPE)) {
+                                               ValaCCodeIdentifier* _tmp204_ = NULL;
+                                               _tmp204_ = vala_ccode_identifier_new ("g_free");
+                                               result = (ValaCCodeExpression*) _tmp204_;
                                                return result;
                                        } else {
-                                               ValaDataType* _tmp203_ = NULL;
-                                               _tmp203_ = type;
-                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp203_, VALA_TYPE_POINTER_TYPE)) {
-                                                       ValaCCodeIdentifier* _tmp204_ = NULL;
-                                                       _tmp204_ = vala_ccode_identifier_new ("g_free");
-                                                       result = (ValaCCodeExpression*) _tmp204_;
+                                               ValaDataType* _tmp205_ = NULL;
+                                               _tmp205_ = type;
+                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp205_, VALA_TYPE_POINTER_TYPE)) {
+                                                       ValaCCodeIdentifier* _tmp206_ = NULL;
+                                                       _tmp206_ = vala_ccode_identifier_new ("g_free");
+                                                       result = (ValaCCodeExpression*) _tmp206_;
                                                        return result;
                                                } else {
-                                                       ValaCCodeConstant* _tmp205_ = NULL;
-                                                       _tmp205_ = vala_ccode_constant_new ("NULL");
-                                                       result = (ValaCCodeExpression*) _tmp205_;
+                                                       ValaCCodeConstant* _tmp207_ = NULL;
+                                                       _tmp207_ = vala_ccode_constant_new ("NULL");
+                                                       result = (ValaCCodeExpression*) _tmp207_;
                                                        return result;
                                                }
                                        }
@@ -20062,8 +20328,8 @@ void vala_ccode_base_module_emit_temp_var (ValaCCodeBaseModule* self, ValaLocalV
                ValaLocalVariable* _tmp55_ = NULL;
                ValaDataType* _tmp56_ = NULL;
                ValaDataType* _tmp57_ = NULL;
-               gchar* _tmp58_ = NULL;
-               gchar* _tmp59_ = NULL;
+               ValaCCodeDeclaratorSuffix* _tmp58_ = NULL;
+               ValaCCodeDeclaratorSuffix* _tmp59_ = NULL;
                ValaCCodeVariableDeclarator* _tmp60_ = NULL;
                ValaCCodeVariableDeclarator* _tmp61_ = NULL;
                ValaCCodeVariableDeclarator* _tmp62_ = NULL;
@@ -20087,11 +20353,11 @@ void vala_ccode_base_module_emit_temp_var (ValaCCodeBaseModule* self, ValaLocalV
                _tmp55_ = local;
                _tmp56_ = vala_variable_get_variable_type ((ValaVariable*) _tmp55_);
                _tmp57_ = _tmp56_;
-               _tmp58_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp57_);
+               _tmp58_ = vala_ccode_base_module_get_ccode_declarator_suffix (self, _tmp57_);
                _tmp59_ = _tmp58_;
                _tmp60_ = vala_ccode_variable_declarator_new (_tmp54_, NULL, _tmp59_);
                _tmp61_ = _tmp60_;
-               _g_free0 (_tmp59_);
+               _vala_ccode_declarator_suffix_unref0 (_tmp59_);
                cvar = _tmp61_;
                _tmp62_ = cvar;
                _tmp63_ = local;
@@ -23063,7 +23329,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp4_ = _tmp3_;
                _g_free0 (_tmp2_);
                regex = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch0_g_regex_error;
                        }
@@ -23075,7 +23341,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp7_ = replacement;
                _tmp8_ = g_regex_replace_literal (_tmp6_, self, (gssize) (-1), 0, _tmp7_, 0, &_inner_error_);
                _tmp5_ = _tmp8_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_regex_unref0 (regex);
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch0_g_regex_error;
@@ -23102,7 +23368,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _g_error_free0 (e);
        }
        __finally0:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return NULL;
@@ -26211,19 +26477,19 @@ static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCo
        gboolean _tmp9_ = FALSE;
        gboolean _tmp10_ = FALSE;
        ValaStruct* _tmp11_ = NULL;
-       ValaObjectCreationExpression* _tmp125_ = NULL;
-       ValaSymbol* _tmp126_ = NULL;
-       ValaSymbol* _tmp127_ = NULL;
+       ValaObjectCreationExpression* _tmp145_ = NULL;
+       ValaSymbol* _tmp146_ = NULL;
+       ValaSymbol* _tmp147_ = NULL;
        ValaLocalVariable* local = NULL;
-       ValaObjectCreationExpression* _tmp729_ = NULL;
-       ValaCodeNode* _tmp730_ = NULL;
-       ValaCodeNode* _tmp731_ = NULL;
-       ValaLocalVariable* _tmp732_ = NULL;
-       gboolean _tmp733_ = FALSE;
-       ValaLocalVariable* _tmp734_ = NULL;
-       ValaObjectCreationExpression* _tmp897_ = NULL;
-       ValaTargetValue* _tmp898_ = NULL;
-       ValaTargetValue* _tmp899_ = NULL;
+       ValaObjectCreationExpression* _tmp749_ = NULL;
+       ValaCodeNode* _tmp750_ = NULL;
+       ValaCodeNode* _tmp751_ = NULL;
+       ValaLocalVariable* _tmp752_ = NULL;
+       gboolean _tmp753_ = FALSE;
+       ValaLocalVariable* _tmp754_ = NULL;
+       ValaObjectCreationExpression* _tmp917_ = NULL;
+       ValaTargetValue* _tmp918_ = NULL;
+       ValaTargetValue* _tmp919_ = NULL;
        self = (ValaCCodeBaseModule*) base;
        g_return_if_fail (expr != NULL);
        instance = NULL;
@@ -26284,13 +26550,18 @@ static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCo
                ValaCodeNode* _tmp24_ = NULL;
                ValaCodeNode* _tmp25_ = NULL;
                ValaLocalVariable* _tmp26_ = NULL;
-               ValaAssignment* a = NULL;
+               ValaField* field = NULL;
                ValaObjectCreationExpression* _tmp27_ = NULL;
                ValaCodeNode* _tmp28_ = NULL;
                ValaCodeNode* _tmp29_ = NULL;
-               ValaAssignment* _tmp30_ = NULL;
-               gboolean _tmp31_ = FALSE;
-               ValaLocalVariable* _tmp32_ = NULL;
+               ValaField* _tmp30_ = NULL;
+               ValaAssignment* a = NULL;
+               ValaObjectCreationExpression* _tmp31_ = NULL;
+               ValaCodeNode* _tmp32_ = NULL;
+               ValaCodeNode* _tmp33_ = NULL;
+               ValaAssignment* _tmp34_ = NULL;
+               gboolean _tmp35_ = FALSE;
+               ValaLocalVariable* _tmp36_ = NULL;
                _tmp23_ = expr;
                _tmp24_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp23_);
                _tmp25_ = _tmp24_;
@@ -26299,754 +26570,804 @@ static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCo
                _tmp27_ = expr;
                _tmp28_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp27_);
                _tmp29_ = _tmp28_;
-               _tmp30_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, VALA_TYPE_ASSIGNMENT) ? ((ValaAssignment*) _tmp29_) : NULL);
-               a = _tmp30_;
-               _tmp32_ = local;
-               if (_tmp32_ != NULL) {
-                       ValaLocalVariable* _tmp33_ = NULL;
-                       ValaLocalVariable* _tmp34_ = NULL;
-                       ValaExpression* _tmp35_ = NULL;
-                       ValaExpression* _tmp36_ = NULL;
-                       gboolean _tmp37_ = FALSE;
-                       _tmp33_ = local;
-                       _tmp34_ = local;
-                       _tmp35_ = vala_variable_get_initializer ((ValaVariable*) _tmp34_);
-                       _tmp36_ = _tmp35_;
-                       _tmp37_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp33_, _tmp36_);
-                       _tmp31_ = _tmp37_;
-               } else {
-                       _tmp31_ = FALSE;
-               }
-               if (_tmp31_) {
+               _tmp30_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, VALA_TYPE_FIELD) ? ((ValaField*) _tmp29_) : NULL);
+               field = _tmp30_;
+               _tmp31_ = expr;
+               _tmp32_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp31_);
+               _tmp33_ = _tmp32_;
+               _tmp34_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp33_, VALA_TYPE_ASSIGNMENT) ? ((ValaAssignment*) _tmp33_) : NULL);
+               a = _tmp34_;
+               _tmp36_ = local;
+               if (_tmp36_ != NULL) {
+                       ValaLocalVariable* _tmp37_ = NULL;
                        ValaLocalVariable* _tmp38_ = NULL;
-                       ValaTargetValue* _tmp39_ = NULL;
-                       ValaTargetValue* _tmp40_ = NULL;
-                       ValaCCodeExpression* _tmp41_ = NULL;
+                       ValaExpression* _tmp39_ = NULL;
+                       ValaExpression* _tmp40_ = NULL;
+                       gboolean _tmp41_ = FALSE;
+                       _tmp37_ = local;
                        _tmp38_ = local;
-                       _tmp39_ = vala_ccode_base_module_get_local_cvalue (self, _tmp38_);
+                       _tmp39_ = vala_variable_get_initializer ((ValaVariable*) _tmp38_);
                        _tmp40_ = _tmp39_;
-                       _tmp41_ = vala_ccode_base_module_get_cvalue_ (self, _tmp40_);
+                       _tmp41_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp37_, _tmp40_);
+                       _tmp35_ = _tmp41_;
+               } else {
+                       _tmp35_ = FALSE;
+               }
+               if (_tmp35_) {
+                       ValaLocalVariable* _tmp42_ = NULL;
+                       ValaTargetValue* _tmp43_ = NULL;
+                       ValaTargetValue* _tmp44_ = NULL;
+                       ValaCCodeExpression* _tmp45_ = NULL;
+                       _tmp42_ = local;
+                       _tmp43_ = vala_ccode_base_module_get_local_cvalue (self, _tmp42_);
+                       _tmp44_ = _tmp43_;
+                       _tmp45_ = vala_ccode_base_module_get_cvalue_ (self, _tmp44_);
                        _vala_ccode_node_unref0 (instance);
-                       instance = _tmp41_;
-                       _vala_target_value_unref0 (_tmp40_);
+                       instance = _tmp45_;
+                       _vala_target_value_unref0 (_tmp44_);
                } else {
-                       gboolean _tmp42_ = FALSE;
-                       gboolean _tmp43_ = FALSE;
-                       ValaAssignment* _tmp44_ = NULL;
-                       _tmp44_ = a;
-                       if (_tmp44_ != NULL) {
-                               ValaAssignment* _tmp45_ = NULL;
-                               ValaExpression* _tmp46_ = NULL;
-                               ValaExpression* _tmp47_ = NULL;
-                               ValaSymbol* _tmp48_ = NULL;
-                               ValaSymbol* _tmp49_ = NULL;
-                               _tmp45_ = a;
-                               _tmp46_ = vala_assignment_get_left (_tmp45_);
-                               _tmp47_ = _tmp46_;
-                               _tmp48_ = vala_expression_get_symbol_reference (_tmp47_);
-                               _tmp49_ = _tmp48_;
-                               _tmp43_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp49_, VALA_TYPE_VARIABLE);
+                       gboolean _tmp46_ = FALSE;
+                       ValaField* _tmp47_ = NULL;
+                       _tmp47_ = field;
+                       if (_tmp47_ != NULL) {
+                               ValaField* _tmp48_ = NULL;
+                               ValaField* _tmp49_ = NULL;
+                               ValaExpression* _tmp50_ = NULL;
+                               ValaExpression* _tmp51_ = NULL;
+                               gboolean _tmp52_ = FALSE;
+                               _tmp48_ = field;
+                               _tmp49_ = field;
+                               _tmp50_ = vala_variable_get_initializer ((ValaVariable*) _tmp49_);
+                               _tmp51_ = _tmp50_;
+                               _tmp52_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp48_, _tmp51_);
+                               _tmp46_ = _tmp52_;
                        } else {
-                               _tmp43_ = FALSE;
+                               _tmp46_ = FALSE;
                        }
-                       if (_tmp43_) {
-                               ValaAssignment* _tmp50_ = NULL;
-                               ValaExpression* _tmp51_ = NULL;
-                               ValaExpression* _tmp52_ = NULL;
-                               ValaSymbol* _tmp53_ = NULL;
+                       if (_tmp46_) {
+                               ValaTargetValue* thisparam = NULL;
+                               ValaField* _tmp53_ = NULL;
                                ValaSymbol* _tmp54_ = NULL;
-                               ValaAssignment* _tmp55_ = NULL;
-                               ValaExpression* _tmp56_ = NULL;
-                               ValaExpression* _tmp57_ = NULL;
-                               gboolean _tmp58_ = FALSE;
-                               _tmp50_ = a;
-                               _tmp51_ = vala_assignment_get_left (_tmp50_);
-                               _tmp52_ = _tmp51_;
-                               _tmp53_ = vala_expression_get_symbol_reference (_tmp52_);
-                               _tmp54_ = _tmp53_;
-                               _tmp55_ = a;
-                               _tmp56_ = vala_assignment_get_right (_tmp55_);
-                               _tmp57_ = _tmp56_;
-                               _tmp58_ = vala_ccode_base_module_is_simple_struct_creation (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp54_, VALA_TYPE_VARIABLE, ValaVariable), _tmp57_);
-                               _tmp42_ = _tmp58_;
+                               ValaSymbol* _tmp55_ = NULL;
+                               ValaTargetValue* _tmp56_ = NULL;
+                               ValaField* _tmp57_ = NULL;
+                               ValaTargetValue* _tmp58_ = NULL;
+                               ValaTargetValue* _tmp59_ = NULL;
+                               ValaTargetValue* _tmp60_ = NULL;
+                               ValaCCodeExpression* _tmp61_ = NULL;
+                               _tmp53_ = field;
+                               _tmp54_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp53_);
+                               _tmp55_ = _tmp54_;
+                               _tmp56_ = vala_ccode_base_module_load_this_parameter (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp55_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+                               thisparam = _tmp56_;
+                               _tmp57_ = field;
+                               _tmp58_ = thisparam;
+                               _tmp59_ = vala_ccode_base_module_get_field_cvalue (self, _tmp57_, _tmp58_);
+                               _tmp60_ = _tmp59_;
+                               _tmp61_ = vala_ccode_base_module_get_cvalue_ (self, _tmp60_);
+                               _vala_ccode_node_unref0 (instance);
+                               instance = _tmp61_;
+                               _vala_target_value_unref0 (_tmp60_);
+                               _vala_target_value_unref0 (thisparam);
                        } else {
-                               _tmp42_ = FALSE;
-                       }
-                       if (_tmp42_) {
-                               ValaAssignment* _tmp59_ = NULL;
-                               ValaExpression* _tmp60_ = NULL;
-                               ValaExpression* _tmp61_ = NULL;
-                               ValaDataType* _tmp62_ = NULL;
-                               ValaDataType* _tmp63_ = NULL;
-                               gboolean _tmp64_ = FALSE;
-                               ValaAssignment* _tmp74_ = NULL;
-                               ValaExpression* _tmp75_ = NULL;
-                               ValaExpression* _tmp76_ = NULL;
-                               ValaSymbol* _tmp77_ = NULL;
-                               ValaSymbol* _tmp78_ = NULL;
-                               ValaLocalVariable* _tmp79_ = NULL;
-                               ValaField* field = NULL;
-                               ValaAssignment* _tmp80_ = NULL;
-                               ValaExpression* _tmp81_ = NULL;
-                               ValaExpression* _tmp82_ = NULL;
-                               ValaSymbol* _tmp83_ = NULL;
-                               ValaSymbol* _tmp84_ = NULL;
-                               ValaField* _tmp85_ = NULL;
-                               ValaParameter* param = NULL;
-                               ValaAssignment* _tmp86_ = NULL;
-                               ValaExpression* _tmp87_ = NULL;
-                               ValaExpression* _tmp88_ = NULL;
-                               ValaSymbol* _tmp89_ = NULL;
-                               ValaSymbol* _tmp90_ = NULL;
-                               ValaParameter* _tmp91_ = NULL;
-                               ValaLocalVariable* _tmp92_ = NULL;
-                               _tmp59_ = a;
-                               _tmp60_ = vala_assignment_get_left (_tmp59_);
-                               _tmp61_ = _tmp60_;
-                               _tmp62_ = vala_expression_get_value_type (_tmp61_);
-                               _tmp63_ = _tmp62_;
-                               _tmp64_ = vala_ccode_base_module_requires_destroy (self, _tmp63_);
-                               if (_tmp64_) {
-                                       ValaCCodeFunction* _tmp65_ = NULL;
-                                       ValaCCodeFunction* _tmp66_ = NULL;
-                                       ValaAssignment* _tmp67_ = NULL;
-                                       ValaExpression* _tmp68_ = NULL;
-                                       ValaExpression* _tmp69_ = NULL;
-                                       ValaTargetValue* _tmp70_ = NULL;
-                                       ValaTargetValue* _tmp71_ = NULL;
-                                       ValaCCodeExpression* _tmp72_ = NULL;
-                                       ValaCCodeExpression* _tmp73_ = NULL;
-                                       _tmp65_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp66_ = _tmp65_;
-                                       _tmp67_ = a;
-                                       _tmp68_ = vala_assignment_get_left (_tmp67_);
+                               gboolean _tmp62_ = FALSE;
+                               gboolean _tmp63_ = FALSE;
+                               ValaAssignment* _tmp64_ = NULL;
+                               _tmp64_ = a;
+                               if (_tmp64_ != NULL) {
+                                       ValaAssignment* _tmp65_ = NULL;
+                                       ValaExpression* _tmp66_ = NULL;
+                                       ValaExpression* _tmp67_ = NULL;
+                                       ValaSymbol* _tmp68_ = NULL;
+                                       ValaSymbol* _tmp69_ = NULL;
+                                       _tmp65_ = a;
+                                       _tmp66_ = vala_assignment_get_left (_tmp65_);
+                                       _tmp67_ = _tmp66_;
+                                       _tmp68_ = vala_expression_get_symbol_reference (_tmp67_);
                                        _tmp69_ = _tmp68_;
-                                       _tmp70_ = vala_expression_get_target_value (_tmp69_);
-                                       _tmp71_ = _tmp70_;
-                                       _tmp72_ = vala_ccode_base_module_destroy_value (self, _tmp71_, FALSE);
-                                       _tmp73_ = _tmp72_;
-                                       vala_ccode_function_add_expression (_tmp66_, _tmp73_);
-                                       _vala_ccode_node_unref0 (_tmp73_);
+                                       _tmp63_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp69_, VALA_TYPE_VARIABLE);
+                               } else {
+                                       _tmp63_ = FALSE;
                                }
-                               _tmp74_ = a;
-                               _tmp75_ = vala_assignment_get_left (_tmp74_);
-                               _tmp76_ = _tmp75_;
-                               _tmp77_ = vala_expression_get_symbol_reference (_tmp76_);
-                               _tmp78_ = _tmp77_;
-                               _tmp79_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp78_, VALA_TYPE_LOCAL_VARIABLE) ? ((ValaLocalVariable*) _tmp78_) : NULL);
-                               _vala_code_node_unref0 (local);
-                               local = _tmp79_;
-                               _tmp80_ = a;
-                               _tmp81_ = vala_assignment_get_left (_tmp80_);
-                               _tmp82_ = _tmp81_;
-                               _tmp83_ = vala_expression_get_symbol_reference (_tmp82_);
-                               _tmp84_ = _tmp83_;
-                               _tmp85_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp84_, VALA_TYPE_FIELD) ? ((ValaField*) _tmp84_) : NULL);
-                               field = _tmp85_;
-                               _tmp86_ = a;
-                               _tmp87_ = vala_assignment_get_left (_tmp86_);
-                               _tmp88_ = _tmp87_;
-                               _tmp89_ = vala_expression_get_symbol_reference (_tmp88_);
-                               _tmp90_ = _tmp89_;
-                               _tmp91_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp90_, VALA_TYPE_PARAMETER) ? ((ValaParameter*) _tmp90_) : NULL);
-                               param = _tmp91_;
-                               _tmp92_ = local;
-                               if (_tmp92_ != NULL) {
-                                       ValaLocalVariable* _tmp93_ = NULL;
-                                       ValaTargetValue* _tmp94_ = NULL;
-                                       ValaTargetValue* _tmp95_ = NULL;
-                                       ValaCCodeExpression* _tmp96_ = NULL;
-                                       _tmp93_ = local;
-                                       _tmp94_ = vala_ccode_base_module_get_local_cvalue (self, _tmp93_);
-                                       _tmp95_ = _tmp94_;
-                                       _tmp96_ = vala_ccode_base_module_get_cvalue_ (self, _tmp95_);
-                                       _vala_ccode_node_unref0 (instance);
-                                       instance = _tmp96_;
-                                       _vala_target_value_unref0 (_tmp95_);
+                               if (_tmp63_) {
+                                       ValaAssignment* _tmp70_ = NULL;
+                                       ValaExpression* _tmp71_ = NULL;
+                                       ValaExpression* _tmp72_ = NULL;
+                                       ValaSymbol* _tmp73_ = NULL;
+                                       ValaSymbol* _tmp74_ = NULL;
+                                       ValaAssignment* _tmp75_ = NULL;
+                                       ValaExpression* _tmp76_ = NULL;
+                                       ValaExpression* _tmp77_ = NULL;
+                                       gboolean _tmp78_ = FALSE;
+                                       _tmp70_ = a;
+                                       _tmp71_ = vala_assignment_get_left (_tmp70_);
+                                       _tmp72_ = _tmp71_;
+                                       _tmp73_ = vala_expression_get_symbol_reference (_tmp72_);
+                                       _tmp74_ = _tmp73_;
+                                       _tmp75_ = a;
+                                       _tmp76_ = vala_assignment_get_right (_tmp75_);
+                                       _tmp77_ = _tmp76_;
+                                       _tmp78_ = vala_ccode_base_module_is_simple_struct_creation (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp74_, VALA_TYPE_VARIABLE, ValaVariable), _tmp77_);
+                                       _tmp62_ = _tmp78_;
                                } else {
-                                       ValaField* _tmp97_ = NULL;
-                                       _tmp97_ = field;
-                                       if (_tmp97_ != NULL) {
-                                               ValaExpression* inner = NULL;
-                                               ValaAssignment* _tmp98_ = NULL;
-                                               ValaExpression* _tmp99_ = NULL;
-                                               ValaExpression* _tmp100_ = NULL;
-                                               ValaExpression* _tmp101_ = NULL;
-                                               ValaExpression* _tmp102_ = NULL;
-                                               ValaExpression* _tmp103_ = NULL;
-                                               ValaTargetValue* _tmp104_ = NULL;
-                                               ValaExpression* _tmp105_ = NULL;
-                                               ValaField* _tmp109_ = NULL;
-                                               ValaTargetValue* _tmp110_ = NULL;
-                                               ValaTargetValue* _tmp111_ = NULL;
-                                               ValaCCodeExpression* _tmp112_ = NULL;
-                                               _tmp98_ = a;
-                                               _tmp99_ = vala_assignment_get_left (_tmp98_);
-                                               _tmp100_ = _tmp99_;
-                                               _tmp101_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp100_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
-                                               _tmp102_ = _tmp101_;
-                                               _tmp103_ = _vala_code_node_ref0 (_tmp102_);
-                                               inner = _tmp103_;
-                                               _tmp105_ = inner;
-                                               if (_tmp105_ != NULL) {
-                                                       ValaExpression* _tmp106_ = NULL;
-                                                       ValaTargetValue* _tmp107_ = NULL;
-                                                       ValaTargetValue* _tmp108_ = NULL;
-                                                       _tmp106_ = inner;
-                                                       _tmp107_ = vala_expression_get_target_value (_tmp106_);
-                                                       _tmp108_ = _tmp107_;
-                                                       _tmp104_ = _tmp108_;
-                                               } else {
-                                                       _tmp104_ = NULL;
-                                               }
-                                               _tmp109_ = field;
-                                               _tmp110_ = vala_ccode_base_module_get_field_cvalue (self, _tmp109_, _tmp104_);
-                                               _tmp111_ = _tmp110_;
-                                               _tmp112_ = vala_ccode_base_module_get_cvalue_ (self, _tmp111_);
+                                       _tmp62_ = FALSE;
+                               }
+                               if (_tmp62_) {
+                                       ValaAssignment* _tmp79_ = NULL;
+                                       ValaExpression* _tmp80_ = NULL;
+                                       ValaExpression* _tmp81_ = NULL;
+                                       ValaDataType* _tmp82_ = NULL;
+                                       ValaDataType* _tmp83_ = NULL;
+                                       gboolean _tmp84_ = FALSE;
+                                       ValaAssignment* _tmp94_ = NULL;
+                                       ValaExpression* _tmp95_ = NULL;
+                                       ValaExpression* _tmp96_ = NULL;
+                                       ValaSymbol* _tmp97_ = NULL;
+                                       ValaSymbol* _tmp98_ = NULL;
+                                       ValaLocalVariable* _tmp99_ = NULL;
+                                       ValaAssignment* _tmp100_ = NULL;
+                                       ValaExpression* _tmp101_ = NULL;
+                                       ValaExpression* _tmp102_ = NULL;
+                                       ValaSymbol* _tmp103_ = NULL;
+                                       ValaSymbol* _tmp104_ = NULL;
+                                       ValaField* _tmp105_ = NULL;
+                                       ValaParameter* param = NULL;
+                                       ValaAssignment* _tmp106_ = NULL;
+                                       ValaExpression* _tmp107_ = NULL;
+                                       ValaExpression* _tmp108_ = NULL;
+                                       ValaSymbol* _tmp109_ = NULL;
+                                       ValaSymbol* _tmp110_ = NULL;
+                                       ValaParameter* _tmp111_ = NULL;
+                                       ValaLocalVariable* _tmp112_ = NULL;
+                                       _tmp79_ = a;
+                                       _tmp80_ = vala_assignment_get_left (_tmp79_);
+                                       _tmp81_ = _tmp80_;
+                                       _tmp82_ = vala_expression_get_value_type (_tmp81_);
+                                       _tmp83_ = _tmp82_;
+                                       _tmp84_ = vala_ccode_base_module_requires_destroy (self, _tmp83_);
+                                       if (_tmp84_) {
+                                               ValaCCodeFunction* _tmp85_ = NULL;
+                                               ValaCCodeFunction* _tmp86_ = NULL;
+                                               ValaAssignment* _tmp87_ = NULL;
+                                               ValaExpression* _tmp88_ = NULL;
+                                               ValaExpression* _tmp89_ = NULL;
+                                               ValaTargetValue* _tmp90_ = NULL;
+                                               ValaTargetValue* _tmp91_ = NULL;
+                                               ValaCCodeExpression* _tmp92_ = NULL;
+                                               ValaCCodeExpression* _tmp93_ = NULL;
+                                               _tmp85_ = vala_ccode_base_module_get_ccode (self);
+                                               _tmp86_ = _tmp85_;
+                                               _tmp87_ = a;
+                                               _tmp88_ = vala_assignment_get_left (_tmp87_);
+                                               _tmp89_ = _tmp88_;
+                                               _tmp90_ = vala_expression_get_target_value (_tmp89_);
+                                               _tmp91_ = _tmp90_;
+                                               _tmp92_ = vala_ccode_base_module_destroy_value (self, _tmp91_, FALSE);
+                                               _tmp93_ = _tmp92_;
+                                               vala_ccode_function_add_expression (_tmp86_, _tmp93_);
+                                               _vala_ccode_node_unref0 (_tmp93_);
+                                       }
+                                       _tmp94_ = a;
+                                       _tmp95_ = vala_assignment_get_left (_tmp94_);
+                                       _tmp96_ = _tmp95_;
+                                       _tmp97_ = vala_expression_get_symbol_reference (_tmp96_);
+                                       _tmp98_ = _tmp97_;
+                                       _tmp99_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp98_, VALA_TYPE_LOCAL_VARIABLE) ? ((ValaLocalVariable*) _tmp98_) : NULL);
+                                       _vala_code_node_unref0 (local);
+                                       local = _tmp99_;
+                                       _tmp100_ = a;
+                                       _tmp101_ = vala_assignment_get_left (_tmp100_);
+                                       _tmp102_ = _tmp101_;
+                                       _tmp103_ = vala_expression_get_symbol_reference (_tmp102_);
+                                       _tmp104_ = _tmp103_;
+                                       _tmp105_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp104_, VALA_TYPE_FIELD) ? ((ValaField*) _tmp104_) : NULL);
+                                       _vala_code_node_unref0 (field);
+                                       field = _tmp105_;
+                                       _tmp106_ = a;
+                                       _tmp107_ = vala_assignment_get_left (_tmp106_);
+                                       _tmp108_ = _tmp107_;
+                                       _tmp109_ = vala_expression_get_symbol_reference (_tmp108_);
+                                       _tmp110_ = _tmp109_;
+                                       _tmp111_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp110_, VALA_TYPE_PARAMETER) ? ((ValaParameter*) _tmp110_) : NULL);
+                                       param = _tmp111_;
+                                       _tmp112_ = local;
+                                       if (_tmp112_ != NULL) {
+                                               ValaLocalVariable* _tmp113_ = NULL;
+                                               ValaTargetValue* _tmp114_ = NULL;
+                                               ValaTargetValue* _tmp115_ = NULL;
+                                               ValaCCodeExpression* _tmp116_ = NULL;
+                                               _tmp113_ = local;
+                                               _tmp114_ = vala_ccode_base_module_get_local_cvalue (self, _tmp113_);
+                                               _tmp115_ = _tmp114_;
+                                               _tmp116_ = vala_ccode_base_module_get_cvalue_ (self, _tmp115_);
                                                _vala_ccode_node_unref0 (instance);
-                                               instance = _tmp112_;
-                                               _vala_target_value_unref0 (_tmp111_);
-                                               _vala_code_node_unref0 (inner);
+                                               instance = _tmp116_;
+                                               _vala_target_value_unref0 (_tmp115_);
                                        } else {
-                                               ValaParameter* _tmp113_ = NULL;
-                                               _tmp113_ = param;
-                                               if (_tmp113_ != NULL) {
-                                                       ValaParameter* _tmp114_ = NULL;
-                                                       ValaTargetValue* _tmp115_ = NULL;
-                                                       ValaTargetValue* _tmp116_ = NULL;
-                                                       ValaCCodeExpression* _tmp117_ = NULL;
-                                                       _tmp114_ = param;
-                                                       _tmp115_ = vala_ccode_base_module_get_parameter_cvalue (self, _tmp114_);
-                                                       _tmp116_ = _tmp115_;
-                                                       _tmp117_ = vala_ccode_base_module_get_cvalue_ (self, _tmp116_);
+                                               ValaField* _tmp117_ = NULL;
+                                               _tmp117_ = field;
+                                               if (_tmp117_ != NULL) {
+                                                       ValaExpression* inner = NULL;
+                                                       ValaAssignment* _tmp118_ = NULL;
+                                                       ValaExpression* _tmp119_ = NULL;
+                                                       ValaExpression* _tmp120_ = NULL;
+                                                       ValaExpression* _tmp121_ = NULL;
+                                                       ValaExpression* _tmp122_ = NULL;
+                                                       ValaExpression* _tmp123_ = NULL;
+                                                       ValaTargetValue* _tmp124_ = NULL;
+                                                       ValaExpression* _tmp125_ = NULL;
+                                                       ValaField* _tmp129_ = NULL;
+                                                       ValaTargetValue* _tmp130_ = NULL;
+                                                       ValaTargetValue* _tmp131_ = NULL;
+                                                       ValaCCodeExpression* _tmp132_ = NULL;
+                                                       _tmp118_ = a;
+                                                       _tmp119_ = vala_assignment_get_left (_tmp118_);
+                                                       _tmp120_ = _tmp119_;
+                                                       _tmp121_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp120_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
+                                                       _tmp122_ = _tmp121_;
+                                                       _tmp123_ = _vala_code_node_ref0 (_tmp122_);
+                                                       inner = _tmp123_;
+                                                       _tmp125_ = inner;
+                                                       if (_tmp125_ != NULL) {
+                                                               ValaExpression* _tmp126_ = NULL;
+                                                               ValaTargetValue* _tmp127_ = NULL;
+                                                               ValaTargetValue* _tmp128_ = NULL;
+                                                               _tmp126_ = inner;
+                                                               _tmp127_ = vala_expression_get_target_value (_tmp126_);
+                                                               _tmp128_ = _tmp127_;
+                                                               _tmp124_ = _tmp128_;
+                                                       } else {
+                                                               _tmp124_ = NULL;
+                                                       }
+                                                       _tmp129_ = field;
+                                                       _tmp130_ = vala_ccode_base_module_get_field_cvalue (self, _tmp129_, _tmp124_);
+                                                       _tmp131_ = _tmp130_;
+                                                       _tmp132_ = vala_ccode_base_module_get_cvalue_ (self, _tmp131_);
                                                        _vala_ccode_node_unref0 (instance);
-                                                       instance = _tmp117_;
-                                                       _vala_target_value_unref0 (_tmp116_);
+                                                       instance = _tmp132_;
+                                                       _vala_target_value_unref0 (_tmp131_);
+                                                       _vala_code_node_unref0 (inner);
+                                               } else {
+                                                       ValaParameter* _tmp133_ = NULL;
+                                                       _tmp133_ = param;
+                                                       if (_tmp133_ != NULL) {
+                                                               ValaParameter* _tmp134_ = NULL;
+                                                               ValaTargetValue* _tmp135_ = NULL;
+                                                               ValaTargetValue* _tmp136_ = NULL;
+                                                               ValaCCodeExpression* _tmp137_ = NULL;
+                                                               _tmp134_ = param;
+                                                               _tmp135_ = vala_ccode_base_module_get_parameter_cvalue (self, _tmp134_);
+                                                               _tmp136_ = _tmp135_;
+                                                               _tmp137_ = vala_ccode_base_module_get_cvalue_ (self, _tmp136_);
+                                                               _vala_ccode_node_unref0 (instance);
+                                                               instance = _tmp137_;
+                                                               _vala_target_value_unref0 (_tmp136_);
+                                                       }
                                                }
                                        }
+                                       _vala_code_node_unref0 (param);
+                               } else {
+                                       ValaTargetValue* temp_value = NULL;
+                                       ValaObjectCreationExpression* _tmp138_ = NULL;
+                                       ValaDataType* _tmp139_ = NULL;
+                                       ValaDataType* _tmp140_ = NULL;
+                                       ValaObjectCreationExpression* _tmp141_ = NULL;
+                                       ValaTargetValue* _tmp142_ = NULL;
+                                       ValaTargetValue* _tmp143_ = NULL;
+                                       ValaCCodeExpression* _tmp144_ = NULL;
+                                       _tmp138_ = expr;
+                                       _tmp139_ = vala_object_creation_expression_get_type_reference (_tmp138_);
+                                       _tmp140_ = _tmp139_;
+                                       _tmp141_ = expr;
+                                       _tmp142_ = vala_ccode_base_module_create_temp_value (self, _tmp140_, TRUE, (ValaCodeNode*) _tmp141_, NULL);
+                                       temp_value = _tmp142_;
+                                       _tmp143_ = temp_value;
+                                       _tmp144_ = vala_ccode_base_module_get_cvalue_ (self, _tmp143_);
+                                       _vala_ccode_node_unref0 (instance);
+                                       instance = _tmp144_;
+                                       _vala_target_value_unref0 (temp_value);
                                }
-                               _vala_code_node_unref0 (param);
-                               _vala_code_node_unref0 (field);
-                       } else {
-                               ValaTargetValue* temp_value = NULL;
-                               ValaObjectCreationExpression* _tmp118_ = NULL;
-                               ValaDataType* _tmp119_ = NULL;
-                               ValaDataType* _tmp120_ = NULL;
-                               ValaObjectCreationExpression* _tmp121_ = NULL;
-                               ValaTargetValue* _tmp122_ = NULL;
-                               ValaTargetValue* _tmp123_ = NULL;
-                               ValaCCodeExpression* _tmp124_ = NULL;
-                               _tmp118_ = expr;
-                               _tmp119_ = vala_object_creation_expression_get_type_reference (_tmp118_);
-                               _tmp120_ = _tmp119_;
-                               _tmp121_ = expr;
-                               _tmp122_ = vala_ccode_base_module_create_temp_value (self, _tmp120_, TRUE, (ValaCodeNode*) _tmp121_, NULL);
-                               temp_value = _tmp122_;
-                               _tmp123_ = temp_value;
-                               _tmp124_ = vala_ccode_base_module_get_cvalue_ (self, _tmp123_);
-                               _vala_ccode_node_unref0 (instance);
-                               instance = _tmp124_;
-                               _vala_target_value_unref0 (temp_value);
                        }
                }
                _vala_code_node_unref0 (a);
+               _vala_code_node_unref0 (field);
                _vala_code_node_unref0 (local);
        }
-       _tmp125_ = expr;
-       _tmp126_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp125_);
-       _tmp127_ = _tmp126_;
-       if (_tmp127_ == NULL) {
-               ValaObjectCreationExpression* _tmp128_ = NULL;
-               ValaDataType* _tmp129_ = NULL;
-               ValaDataType* _tmp130_ = NULL;
-               ValaTypeSymbol* _tmp131_ = NULL;
-               ValaTypeSymbol* _tmp132_ = NULL;
-               _tmp128_ = expr;
-               _tmp129_ = vala_object_creation_expression_get_type_reference (_tmp128_);
-               _tmp130_ = _tmp129_;
-               _tmp131_ = vala_data_type_get_data_type (_tmp130_);
-               _tmp132_ = _tmp131_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp132_, VALA_TYPE_STRUCT)) {
-                       ValaCCodeFile* _tmp133_ = NULL;
+       _tmp145_ = expr;
+       _tmp146_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp145_);
+       _tmp147_ = _tmp146_;
+       if (_tmp147_ == NULL) {
+               ValaObjectCreationExpression* _tmp148_ = NULL;
+               ValaDataType* _tmp149_ = NULL;
+               ValaDataType* _tmp150_ = NULL;
+               ValaTypeSymbol* _tmp151_ = NULL;
+               ValaTypeSymbol* _tmp152_ = NULL;
+               _tmp148_ = expr;
+               _tmp149_ = vala_object_creation_expression_get_type_reference (_tmp148_);
+               _tmp150_ = _tmp149_;
+               _tmp151_ = vala_data_type_get_data_type (_tmp150_);
+               _tmp152_ = _tmp151_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp152_, VALA_TYPE_STRUCT)) {
+                       ValaCCodeFile* _tmp153_ = NULL;
                        ValaCCodeFunctionCall* creation_call = NULL;
-                       ValaCCodeIdentifier* _tmp134_ = NULL;
-                       ValaCCodeIdentifier* _tmp135_ = NULL;
-                       ValaCCodeFunctionCall* _tmp136_ = NULL;
-                       ValaCCodeFunctionCall* _tmp137_ = NULL;
-                       ValaCCodeFunctionCall* _tmp138_ = NULL;
-                       ValaCCodeExpression* _tmp139_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp140_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp141_ = NULL;
-                       ValaCCodeFunctionCall* _tmp142_ = NULL;
-                       ValaCCodeConstant* _tmp143_ = NULL;
-                       ValaCCodeConstant* _tmp144_ = NULL;
-                       ValaCCodeFunctionCall* _tmp145_ = NULL;
-                       ValaObjectCreationExpression* _tmp146_ = NULL;
-                       ValaDataType* _tmp147_ = NULL;
-                       ValaDataType* _tmp148_ = NULL;
-                       gchar* _tmp149_ = NULL;
-                       gchar* _tmp150_ = NULL;
-                       gchar* _tmp151_ = NULL;
-                       gchar* _tmp152_ = NULL;
-                       ValaCCodeIdentifier* _tmp153_ = NULL;
                        ValaCCodeIdentifier* _tmp154_ = NULL;
-                       ValaCCodeFunctionCall* _tmp155_ = NULL;
-                       ValaCCodeExpression* _tmp156_ = NULL;
-                       _tmp133_ = self->cfile;
-                       vala_ccode_file_add_include (_tmp133_, "string.h", FALSE);
-                       _tmp134_ = vala_ccode_identifier_new ("memset");
-                       _tmp135_ = _tmp134_;
-                       _tmp136_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp135_);
-                       _tmp137_ = _tmp136_;
-                       _vala_ccode_node_unref0 (_tmp135_);
-                       creation_call = _tmp137_;
-                       _tmp138_ = creation_call;
-                       _tmp139_ = instance;
-                       _tmp140_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp139_);
-                       _tmp141_ = _tmp140_;
-                       vala_ccode_function_call_add_argument (_tmp138_, (ValaCCodeExpression*) _tmp141_);
-                       _vala_ccode_node_unref0 (_tmp141_);
-                       _tmp142_ = creation_call;
-                       _tmp143_ = vala_ccode_constant_new ("0");
-                       _tmp144_ = _tmp143_;
-                       vala_ccode_function_call_add_argument (_tmp142_, (ValaCCodeExpression*) _tmp144_);
-                       _vala_ccode_node_unref0 (_tmp144_);
-                       _tmp145_ = creation_call;
-                       _tmp146_ = expr;
-                       _tmp147_ = vala_object_creation_expression_get_type_reference (_tmp146_);
-                       _tmp148_ = _tmp147_;
-                       _tmp149_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp148_);
-                       _tmp150_ = _tmp149_;
-                       _tmp151_ = g_strdup_printf ("sizeof (%s)", _tmp150_);
-                       _tmp152_ = _tmp151_;
-                       _tmp153_ = vala_ccode_identifier_new (_tmp152_);
-                       _tmp154_ = _tmp153_;
-                       vala_ccode_function_call_add_argument (_tmp145_, (ValaCCodeExpression*) _tmp154_);
-                       _vala_ccode_node_unref0 (_tmp154_);
-                       _g_free0 (_tmp152_);
-                       _g_free0 (_tmp150_);
-                       _tmp155_ = creation_call;
-                       _tmp156_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp155_);
+                       ValaCCodeIdentifier* _tmp155_ = NULL;
+                       ValaCCodeFunctionCall* _tmp156_ = NULL;
+                       ValaCCodeFunctionCall* _tmp157_ = NULL;
+                       ValaCCodeFunctionCall* _tmp158_ = NULL;
+                       ValaCCodeExpression* _tmp159_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp160_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp161_ = NULL;
+                       ValaCCodeFunctionCall* _tmp162_ = NULL;
+                       ValaCCodeConstant* _tmp163_ = NULL;
+                       ValaCCodeConstant* _tmp164_ = NULL;
+                       ValaCCodeFunctionCall* _tmp165_ = NULL;
+                       ValaObjectCreationExpression* _tmp166_ = NULL;
+                       ValaDataType* _tmp167_ = NULL;
+                       ValaDataType* _tmp168_ = NULL;
+                       gchar* _tmp169_ = NULL;
+                       gchar* _tmp170_ = NULL;
+                       gchar* _tmp171_ = NULL;
+                       gchar* _tmp172_ = NULL;
+                       ValaCCodeIdentifier* _tmp173_ = NULL;
+                       ValaCCodeIdentifier* _tmp174_ = NULL;
+                       ValaCCodeFunctionCall* _tmp175_ = NULL;
+                       ValaCCodeExpression* _tmp176_ = NULL;
+                       _tmp153_ = self->cfile;
+                       vala_ccode_file_add_include (_tmp153_, "string.h", FALSE);
+                       _tmp154_ = vala_ccode_identifier_new ("memset");
+                       _tmp155_ = _tmp154_;
+                       _tmp156_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp155_);
+                       _tmp157_ = _tmp156_;
+                       _vala_ccode_node_unref0 (_tmp155_);
+                       creation_call = _tmp157_;
+                       _tmp158_ = creation_call;
+                       _tmp159_ = instance;
+                       _tmp160_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp159_);
+                       _tmp161_ = _tmp160_;
+                       vala_ccode_function_call_add_argument (_tmp158_, (ValaCCodeExpression*) _tmp161_);
+                       _vala_ccode_node_unref0 (_tmp161_);
+                       _tmp162_ = creation_call;
+                       _tmp163_ = vala_ccode_constant_new ("0");
+                       _tmp164_ = _tmp163_;
+                       vala_ccode_function_call_add_argument (_tmp162_, (ValaCCodeExpression*) _tmp164_);
+                       _vala_ccode_node_unref0 (_tmp164_);
+                       _tmp165_ = creation_call;
+                       _tmp166_ = expr;
+                       _tmp167_ = vala_object_creation_expression_get_type_reference (_tmp166_);
+                       _tmp168_ = _tmp167_;
+                       _tmp169_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp168_);
+                       _tmp170_ = _tmp169_;
+                       _tmp171_ = g_strdup_printf ("sizeof (%s)", _tmp170_);
+                       _tmp172_ = _tmp171_;
+                       _tmp173_ = vala_ccode_identifier_new (_tmp172_);
+                       _tmp174_ = _tmp173_;
+                       vala_ccode_function_call_add_argument (_tmp165_, (ValaCCodeExpression*) _tmp174_);
+                       _vala_ccode_node_unref0 (_tmp174_);
+                       _g_free0 (_tmp172_);
+                       _g_free0 (_tmp170_);
+                       _tmp175_ = creation_call;
+                       _tmp176_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp175_);
                        _vala_ccode_node_unref0 (creation_expr);
-                       creation_expr = _tmp156_;
+                       creation_expr = _tmp176_;
                        _vala_ccode_node_unref0 (creation_call);
                }
        } else {
-               gboolean _tmp157_ = FALSE;
-               ValaObjectCreationExpression* _tmp158_ = NULL;
-               ValaDataType* _tmp159_ = NULL;
-               ValaDataType* _tmp160_ = NULL;
-               ValaTypeSymbol* _tmp161_ = NULL;
-               ValaTypeSymbol* _tmp162_ = NULL;
-               ValaClass* _tmp163_ = NULL;
-               _tmp158_ = expr;
-               _tmp159_ = vala_object_creation_expression_get_type_reference (_tmp158_);
-               _tmp160_ = _tmp159_;
-               _tmp161_ = vala_data_type_get_data_type (_tmp160_);
-               _tmp162_ = _tmp161_;
-               _tmp163_ = self->glist_type;
-               if (_tmp162_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp163_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
-                       _tmp157_ = TRUE;
+               gboolean _tmp177_ = FALSE;
+               ValaObjectCreationExpression* _tmp178_ = NULL;
+               ValaDataType* _tmp179_ = NULL;
+               ValaDataType* _tmp180_ = NULL;
+               ValaTypeSymbol* _tmp181_ = NULL;
+               ValaTypeSymbol* _tmp182_ = NULL;
+               ValaClass* _tmp183_ = NULL;
+               _tmp178_ = expr;
+               _tmp179_ = vala_object_creation_expression_get_type_reference (_tmp178_);
+               _tmp180_ = _tmp179_;
+               _tmp181_ = vala_data_type_get_data_type (_tmp180_);
+               _tmp182_ = _tmp181_;
+               _tmp183_ = self->glist_type;
+               if (_tmp182_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp183_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
+                       _tmp177_ = TRUE;
                } else {
-                       ValaObjectCreationExpression* _tmp164_ = NULL;
-                       ValaDataType* _tmp165_ = NULL;
-                       ValaDataType* _tmp166_ = NULL;
-                       ValaTypeSymbol* _tmp167_ = NULL;
-                       ValaTypeSymbol* _tmp168_ = NULL;
-                       ValaClass* _tmp169_ = NULL;
-                       _tmp164_ = expr;
-                       _tmp165_ = vala_object_creation_expression_get_type_reference (_tmp164_);
-                       _tmp166_ = _tmp165_;
-                       _tmp167_ = vala_data_type_get_data_type (_tmp166_);
-                       _tmp168_ = _tmp167_;
-                       _tmp169_ = self->gslist_type;
-                       _tmp157_ = _tmp168_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp169_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
-               }
-               if (_tmp157_) {
-                       ValaObjectCreationExpression* _tmp170_ = NULL;
-                       ValaCCodeConstant* _tmp171_ = NULL;
-                       ValaCCodeConstant* _tmp172_ = NULL;
-                       _tmp170_ = expr;
-                       _tmp171_ = vala_ccode_constant_new ("NULL");
-                       _tmp172_ = _tmp171_;
-                       vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp170_, (ValaCCodeExpression*) _tmp172_);
-                       _vala_ccode_node_unref0 (_tmp172_);
+                       ValaObjectCreationExpression* _tmp184_ = NULL;
+                       ValaDataType* _tmp185_ = NULL;
+                       ValaDataType* _tmp186_ = NULL;
+                       ValaTypeSymbol* _tmp187_ = NULL;
+                       ValaTypeSymbol* _tmp188_ = NULL;
+                       ValaClass* _tmp189_ = NULL;
+                       _tmp184_ = expr;
+                       _tmp185_ = vala_object_creation_expression_get_type_reference (_tmp184_);
+                       _tmp186_ = _tmp185_;
+                       _tmp187_ = vala_data_type_get_data_type (_tmp186_);
+                       _tmp188_ = _tmp187_;
+                       _tmp189_ = self->gslist_type;
+                       _tmp177_ = _tmp188_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp189_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
+               }
+               if (_tmp177_) {
+                       ValaObjectCreationExpression* _tmp190_ = NULL;
+                       ValaCCodeConstant* _tmp191_ = NULL;
+                       ValaCCodeConstant* _tmp192_ = NULL;
+                       _tmp190_ = expr;
+                       _tmp191_ = vala_ccode_constant_new ("NULL");
+                       _tmp192_ = _tmp191_;
+                       vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp190_, (ValaCCodeExpression*) _tmp192_);
+                       _vala_ccode_node_unref0 (_tmp192_);
                } else {
-                       ValaObjectCreationExpression* _tmp173_ = NULL;
-                       ValaSymbol* _tmp174_ = NULL;
-                       ValaSymbol* _tmp175_ = NULL;
-                       _tmp173_ = expr;
-                       _tmp174_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp173_);
-                       _tmp175_ = _tmp174_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp175_, VALA_TYPE_METHOD)) {
+                       ValaObjectCreationExpression* _tmp193_ = NULL;
+                       ValaSymbol* _tmp194_ = NULL;
+                       ValaSymbol* _tmp195_ = NULL;
+                       _tmp193_ = expr;
+                       _tmp194_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp193_);
+                       _tmp195_ = _tmp194_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp195_, VALA_TYPE_METHOD)) {
                                ValaMethod* m = NULL;
-                               ValaObjectCreationExpression* _tmp176_ = NULL;
-                               ValaSymbol* _tmp177_ = NULL;
-                               ValaSymbol* _tmp178_ = NULL;
-                               ValaMethod* _tmp179_ = NULL;
+                               ValaObjectCreationExpression* _tmp196_ = NULL;
+                               ValaSymbol* _tmp197_ = NULL;
+                               ValaSymbol* _tmp198_ = NULL;
+                               ValaMethod* _tmp199_ = NULL;
                                ValaList* params = NULL;
-                               ValaMethod* _tmp180_ = NULL;
-                               ValaList* _tmp181_ = NULL;
+                               ValaMethod* _tmp200_ = NULL;
+                               ValaList* _tmp201_ = NULL;
                                ValaCCodeFunctionCall* creation_call = NULL;
                                ValaCCodeFunctionCall* async_call = NULL;
                                ValaCCodeFunctionCall* finish_call = NULL;
-                               ValaMethod* _tmp182_ = NULL;
-                               ValaCCodeFile* _tmp183_ = NULL;
+                               ValaMethod* _tmp202_ = NULL;
+                               ValaCCodeFile* _tmp203_ = NULL;
                                ValaClass* cl = NULL;
-                               ValaObjectCreationExpression* _tmp184_ = NULL;
-                               ValaDataType* _tmp185_ = NULL;
-                               ValaDataType* _tmp186_ = NULL;
-                               ValaTypeSymbol* _tmp187_ = NULL;
-                               ValaTypeSymbol* _tmp188_ = NULL;
-                               ValaClass* _tmp189_ = NULL;
-                               ValaMethod* _tmp190_ = NULL;
-                               gboolean _tmp191_ = FALSE;
-                               gboolean _tmp210_ = FALSE;
+                               ValaObjectCreationExpression* _tmp204_ = NULL;
+                               ValaDataType* _tmp205_ = NULL;
+                               ValaDataType* _tmp206_ = NULL;
+                               ValaTypeSymbol* _tmp207_ = NULL;
+                               ValaTypeSymbol* _tmp208_ = NULL;
+                               ValaClass* _tmp209_ = NULL;
+                               ValaMethod* _tmp210_ = NULL;
                                gboolean _tmp211_ = FALSE;
-                               ValaStruct* _tmp212_ = NULL;
-                               ValaObjectCreationExpression* _tmp288_ = NULL;
-                               ValaDataType* _tmp289_ = NULL;
-                               ValaDataType* _tmp290_ = NULL;
-                               ValaCCodeFile* _tmp291_ = NULL;
+                               gboolean _tmp230_ = FALSE;
+                               gboolean _tmp231_ = FALSE;
+                               ValaStruct* _tmp232_ = NULL;
+                               ValaObjectCreationExpression* _tmp308_ = NULL;
+                               ValaDataType* _tmp309_ = NULL;
+                               ValaDataType* _tmp310_ = NULL;
+                               ValaCCodeFile* _tmp311_ = NULL;
                                ValaHashMap* in_arg_map = NULL;
-                               GHashFunc _tmp292_ = NULL;
-                               GEqualFunc _tmp293_ = NULL;
-                               GEqualFunc _tmp294_ = NULL;
-                               ValaHashMap* _tmp295_ = NULL;
+                               GHashFunc _tmp312_ = NULL;
+                               GEqualFunc _tmp313_ = NULL;
+                               GEqualFunc _tmp314_ = NULL;
+                               ValaHashMap* _tmp315_ = NULL;
                                ValaHashMap* out_arg_map = NULL;
-                               ValaHashMap* _tmp296_ = NULL;
-                               ValaHashMap* _tmp297_ = NULL;
-                               gboolean _tmp298_ = FALSE;
-                               ValaMethod* _tmp299_ = NULL;
-                               gboolean _tmp327_ = FALSE;
-                               ValaClass* _tmp328_ = NULL;
+                               ValaHashMap* _tmp316_ = NULL;
+                               ValaHashMap* _tmp317_ = NULL;
+                               gboolean _tmp318_ = FALSE;
+                               ValaMethod* _tmp319_ = NULL;
+                               gboolean _tmp347_ = FALSE;
+                               ValaClass* _tmp348_ = NULL;
                                gboolean ellipsis = FALSE;
                                gint i = 0;
                                gint arg_pos = 0;
                                ValaIterator* params_it = NULL;
-                               ValaList* _tmp370_ = NULL;
-                               ValaIterator* _tmp371_ = NULL;
-                               ValaIterator* _tmp508_ = NULL;
-                               gboolean _tmp509_ = FALSE;
-                               ValaObjectCreationExpression* _tmp519_ = NULL;
-                               gboolean _tmp520_ = FALSE;
-                               gboolean _tmp521_ = FALSE;
-                               gboolean _tmp528_ = FALSE;
-                               gboolean _tmp552_ = FALSE;
-                               gboolean _tmp553_ = FALSE;
-                               ValaStruct* _tmp554_ = NULL;
-                               gboolean _tmp564_ = FALSE;
-                               ValaMethod* _tmp565_ = NULL;
+                               ValaList* _tmp390_ = NULL;
+                               ValaIterator* _tmp391_ = NULL;
+                               ValaIterator* _tmp528_ = NULL;
+                               gboolean _tmp529_ = FALSE;
+                               ValaObjectCreationExpression* _tmp539_ = NULL;
+                               gboolean _tmp540_ = FALSE;
+                               gboolean _tmp541_ = FALSE;
+                               gboolean _tmp548_ = FALSE;
+                               gboolean _tmp572_ = FALSE;
+                               gboolean _tmp573_ = FALSE;
+                               ValaStruct* _tmp574_ = NULL;
+                               gboolean _tmp584_ = FALSE;
+                               ValaMethod* _tmp585_ = NULL;
                                gint last_pos = 0;
                                gint min_pos = 0;
-                               ValaCCodeFunctionCall* _tmp584_ = NULL;
-                               ValaCCodeFunctionCall* _tmp585_ = NULL;
-                               ValaCCodeFunctionCall* _tmp610_ = NULL;
-                               ValaObjectCreationExpression* _tmp635_ = NULL;
-                               gboolean _tmp636_ = FALSE;
-                               gboolean _tmp637_ = FALSE;
-                               ValaCCodeFunctionCall* _tmp662_ = NULL;
-                               ValaCCodeExpression* _tmp663_ = NULL;
-                               ValaMethod* _tmp664_ = NULL;
-                               gchar* _tmp665_ = NULL;
-                               gchar* _tmp666_ = NULL;
-                               gboolean _tmp667_ = FALSE;
-                               _tmp176_ = expr;
-                               _tmp177_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp176_);
-                               _tmp178_ = _tmp177_;
-                               _tmp179_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp178_, VALA_TYPE_METHOD, ValaMethod));
-                               m = _tmp179_;
-                               _tmp180_ = m;
-                               _tmp181_ = vala_method_get_parameters (_tmp180_);
-                               params = _tmp181_;
+                               ValaCCodeFunctionCall* _tmp604_ = NULL;
+                               ValaCCodeFunctionCall* _tmp605_ = NULL;
+                               ValaCCodeFunctionCall* _tmp630_ = NULL;
+                               ValaObjectCreationExpression* _tmp655_ = NULL;
+                               gboolean _tmp656_ = FALSE;
+                               gboolean _tmp657_ = FALSE;
+                               ValaCCodeFunctionCall* _tmp682_ = NULL;
+                               ValaCCodeExpression* _tmp683_ = NULL;
+                               ValaMethod* _tmp684_ = NULL;
+                               gchar* _tmp685_ = NULL;
+                               gchar* _tmp686_ = NULL;
+                               gboolean _tmp687_ = FALSE;
+                               _tmp196_ = expr;
+                               _tmp197_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp196_);
+                               _tmp198_ = _tmp197_;
+                               _tmp199_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp198_, VALA_TYPE_METHOD, ValaMethod));
+                               m = _tmp199_;
+                               _tmp200_ = m;
+                               _tmp201_ = vala_method_get_parameters (_tmp200_);
+                               params = _tmp201_;
                                async_call = NULL;
                                finish_call = NULL;
-                               _tmp182_ = m;
-                               _tmp183_ = self->cfile;
-                               vala_ccode_base_module_generate_method_declaration (self, _tmp182_, _tmp183_);
-                               _tmp184_ = expr;
-                               _tmp185_ = vala_object_creation_expression_get_type_reference (_tmp184_);
-                               _tmp186_ = _tmp185_;
-                               _tmp187_ = vala_data_type_get_data_type (_tmp186_);
-                               _tmp188_ = _tmp187_;
-                               _tmp189_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp188_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp188_) : NULL);
-                               cl = _tmp189_;
-                               _tmp190_ = m;
-                               _tmp191_ = vala_ccode_base_module_get_ccode_has_new_function (_tmp190_);
-                               if (!_tmp191_) {
-                                       ValaMethod* _tmp192_ = NULL;
-                                       gchar* _tmp193_ = NULL;
-                                       gchar* _tmp194_ = NULL;
-                                       ValaCCodeIdentifier* _tmp195_ = NULL;
-                                       ValaCCodeIdentifier* _tmp196_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp197_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp198_ = NULL;
-                                       ValaClass* _tmp199_ = NULL;
-                                       gchar* _tmp200_ = NULL;
-                                       gchar* _tmp201_ = NULL;
-                                       ValaCCodeIdentifier* _tmp202_ = NULL;
-                                       ValaCCodeIdentifier* _tmp203_ = NULL;
-                                       _tmp192_ = m;
-                                       _tmp193_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp192_);
-                                       _tmp194_ = _tmp193_;
-                                       _tmp195_ = vala_ccode_identifier_new (_tmp194_);
-                                       _tmp196_ = _tmp195_;
-                                       _tmp197_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp196_);
+                               _tmp202_ = m;
+                               _tmp203_ = self->cfile;
+                               vala_ccode_base_module_generate_method_declaration (self, _tmp202_, _tmp203_);
+                               _tmp204_ = expr;
+                               _tmp205_ = vala_object_creation_expression_get_type_reference (_tmp204_);
+                               _tmp206_ = _tmp205_;
+                               _tmp207_ = vala_data_type_get_data_type (_tmp206_);
+                               _tmp208_ = _tmp207_;
+                               _tmp209_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp208_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp208_) : NULL);
+                               cl = _tmp209_;
+                               _tmp210_ = m;
+                               _tmp211_ = vala_ccode_base_module_get_ccode_has_new_function (_tmp210_);
+                               if (!_tmp211_) {
+                                       ValaMethod* _tmp212_ = NULL;
+                                       gchar* _tmp213_ = NULL;
+                                       gchar* _tmp214_ = NULL;
+                                       ValaCCodeIdentifier* _tmp215_ = NULL;
+                                       ValaCCodeIdentifier* _tmp216_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp217_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp218_ = NULL;
+                                       ValaClass* _tmp219_ = NULL;
+                                       gchar* _tmp220_ = NULL;
+                                       gchar* _tmp221_ = NULL;
+                                       ValaCCodeIdentifier* _tmp222_ = NULL;
+                                       ValaCCodeIdentifier* _tmp223_ = NULL;
+                                       _tmp212_ = m;
+                                       _tmp213_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp212_);
+                                       _tmp214_ = _tmp213_;
+                                       _tmp215_ = vala_ccode_identifier_new (_tmp214_);
+                                       _tmp216_ = _tmp215_;
+                                       _tmp217_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp216_);
                                        _vala_ccode_node_unref0 (creation_call);
-                                       creation_call = _tmp197_;
-                                       _vala_ccode_node_unref0 (_tmp196_);
-                                       _g_free0 (_tmp194_);
-                                       _tmp198_ = creation_call;
-                                       _tmp199_ = cl;
-                                       _tmp200_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp199_);
-                                       _tmp201_ = _tmp200_;
-                                       _tmp202_ = vala_ccode_identifier_new (_tmp201_);
-                                       _tmp203_ = _tmp202_;
-                                       vala_ccode_function_call_add_argument (_tmp198_, (ValaCCodeExpression*) _tmp203_);
-                                       _vala_ccode_node_unref0 (_tmp203_);
-                                       _g_free0 (_tmp201_);
+                                       creation_call = _tmp217_;
+                                       _vala_ccode_node_unref0 (_tmp216_);
+                                       _g_free0 (_tmp214_);
+                                       _tmp218_ = creation_call;
+                                       _tmp219_ = cl;
+                                       _tmp220_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp219_);
+                                       _tmp221_ = _tmp220_;
+                                       _tmp222_ = vala_ccode_identifier_new (_tmp221_);
+                                       _tmp223_ = _tmp222_;
+                                       vala_ccode_function_call_add_argument (_tmp218_, (ValaCCodeExpression*) _tmp223_);
+                                       _vala_ccode_node_unref0 (_tmp223_);
+                                       _g_free0 (_tmp221_);
                                } else {
-                                       ValaMethod* _tmp204_ = NULL;
-                                       gchar* _tmp205_ = NULL;
-                                       gchar* _tmp206_ = NULL;
-                                       ValaCCodeIdentifier* _tmp207_ = NULL;
-                                       ValaCCodeIdentifier* _tmp208_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp209_ = NULL;
-                                       _tmp204_ = m;
-                                       _tmp205_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp204_);
-                                       _tmp206_ = _tmp205_;
-                                       _tmp207_ = vala_ccode_identifier_new (_tmp206_);
-                                       _tmp208_ = _tmp207_;
-                                       _tmp209_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp208_);
+                                       ValaMethod* _tmp224_ = NULL;
+                                       gchar* _tmp225_ = NULL;
+                                       gchar* _tmp226_ = NULL;
+                                       ValaCCodeIdentifier* _tmp227_ = NULL;
+                                       ValaCCodeIdentifier* _tmp228_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp229_ = NULL;
+                                       _tmp224_ = m;
+                                       _tmp225_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp224_);
+                                       _tmp226_ = _tmp225_;
+                                       _tmp227_ = vala_ccode_identifier_new (_tmp226_);
+                                       _tmp228_ = _tmp227_;
+                                       _tmp229_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp228_);
                                        _vala_ccode_node_unref0 (creation_call);
-                                       creation_call = _tmp209_;
-                                       _vala_ccode_node_unref0 (_tmp208_);
-                                       _g_free0 (_tmp206_);
+                                       creation_call = _tmp229_;
+                                       _vala_ccode_node_unref0 (_tmp228_);
+                                       _g_free0 (_tmp226_);
                                }
-                               _tmp212_ = st;
-                               if (_tmp212_ != NULL) {
-                                       ValaStruct* _tmp213_ = NULL;
-                                       gboolean _tmp214_ = FALSE;
-                                       _tmp213_ = st;
-                                       _tmp214_ = vala_struct_is_simple_type (_tmp213_);
-                                       _tmp211_ = !_tmp214_;
+                               _tmp232_ = st;
+                               if (_tmp232_ != NULL) {
+                                       ValaStruct* _tmp233_ = NULL;
+                                       gboolean _tmp234_ = FALSE;
+                                       _tmp233_ = st;
+                                       _tmp234_ = vala_struct_is_simple_type (_tmp233_);
+                                       _tmp231_ = !_tmp234_;
                                } else {
-                                       _tmp211_ = FALSE;
+                                       _tmp231_ = FALSE;
                                }
-                               if (_tmp211_) {
-                                       ValaMethod* _tmp215_ = NULL;
-                                       gdouble _tmp216_ = 0.0;
-                                       _tmp215_ = m;
-                                       _tmp216_ = vala_ccode_base_module_get_ccode_instance_pos ((ValaCodeNode*) _tmp215_);
-                                       _tmp210_ = !(_tmp216_ < ((gdouble) 0));
+                               if (_tmp231_) {
+                                       ValaMethod* _tmp235_ = NULL;
+                                       gdouble _tmp236_ = 0.0;
+                                       _tmp235_ = m;
+                                       _tmp236_ = vala_ccode_base_module_get_ccode_instance_pos ((ValaCodeNode*) _tmp235_);
+                                       _tmp230_ = !(_tmp236_ < ((gdouble) 0));
                                } else {
-                                       _tmp210_ = FALSE;
+                                       _tmp230_ = FALSE;
                                }
-                               if (_tmp210_) {
-                                       ValaCCodeFunctionCall* _tmp217_ = NULL;
-                                       ValaCCodeExpression* _tmp218_ = NULL;
-                                       ValaCCodeUnaryExpression* _tmp219_ = NULL;
-                                       ValaCCodeUnaryExpression* _tmp220_ = NULL;
-                                       _tmp217_ = creation_call;
-                                       _tmp218_ = instance;
-                                       _tmp219_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp218_);
-                                       _tmp220_ = _tmp219_;
-                                       vala_ccode_function_call_add_argument (_tmp217_, (ValaCCodeExpression*) _tmp220_);
-                                       _vala_ccode_node_unref0 (_tmp220_);
+                               if (_tmp230_) {
+                                       ValaCCodeFunctionCall* _tmp237_ = NULL;
+                                       ValaCCodeExpression* _tmp238_ = NULL;
+                                       ValaCCodeUnaryExpression* _tmp239_ = NULL;
+                                       ValaCCodeUnaryExpression* _tmp240_ = NULL;
+                                       _tmp237_ = creation_call;
+                                       _tmp238_ = instance;
+                                       _tmp239_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp238_);
+                                       _tmp240_ = _tmp239_;
+                                       vala_ccode_function_call_add_argument (_tmp237_, (ValaCCodeExpression*) _tmp240_);
+                                       _vala_ccode_node_unref0 (_tmp240_);
                                } else {
-                                       gboolean _tmp221_ = FALSE;
-                                       ValaStruct* _tmp222_ = NULL;
-                                       _tmp222_ = st;
-                                       if (_tmp222_ != NULL) {
-                                               ValaStruct* _tmp223_ = NULL;
-                                               gchar* _tmp224_ = NULL;
-                                               gchar* _tmp225_ = NULL;
-                                               _tmp223_ = st;
-                                               _tmp224_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp223_);
-                                               _tmp225_ = _tmp224_;
-                                               _tmp221_ = g_strcmp0 (_tmp225_, "va_list") == 0;
-                                               _g_free0 (_tmp225_);
+                                       gboolean _tmp241_ = FALSE;
+                                       ValaStruct* _tmp242_ = NULL;
+                                       _tmp242_ = st;
+                                       if (_tmp242_ != NULL) {
+                                               ValaStruct* _tmp243_ = NULL;
+                                               gchar* _tmp244_ = NULL;
+                                               gchar* _tmp245_ = NULL;
+                                               _tmp243_ = st;
+                                               _tmp244_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp243_);
+                                               _tmp245_ = _tmp244_;
+                                               _tmp241_ = g_strcmp0 (_tmp245_, "va_list") == 0;
+                                               _g_free0 (_tmp245_);
                                        } else {
-                                               _tmp221_ = FALSE;
+                                               _tmp241_ = FALSE;
                                        }
-                                       if (_tmp221_) {
-                                               ValaCCodeFunctionCall* _tmp226_ = NULL;
-                                               ValaCCodeExpression* _tmp227_ = NULL;
-                                               ValaMethod* _tmp228_ = NULL;
-                                               gchar* _tmp229_ = NULL;
-                                               gchar* _tmp230_ = NULL;
-                                               gboolean _tmp231_ = FALSE;
-                                               _tmp226_ = creation_call;
-                                               _tmp227_ = instance;
-                                               vala_ccode_function_call_add_argument (_tmp226_, _tmp227_);
-                                               _tmp228_ = m;
-                                               _tmp229_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp228_);
-                                               _tmp230_ = _tmp229_;
-                                               _tmp231_ = g_strcmp0 (_tmp230_, "va_start") == 0;
-                                               _g_free0 (_tmp230_);
-                                               if (_tmp231_) {
-                                                       gboolean _tmp232_ = FALSE;
-                                                       gboolean _tmp233_ = FALSE;
-                                                       _tmp232_ = vala_ccode_base_module_get_in_creation_method (self);
-                                                       _tmp233_ = _tmp232_;
-                                                       if (_tmp233_) {
-                                                               ValaCCodeIdentifier* _tmp234_ = NULL;
-                                                               ValaCCodeIdentifier* _tmp235_ = NULL;
-                                                               ValaCCodeFunctionCall* _tmp236_ = NULL;
-                                                               ValaCCodeFunctionCall* _tmp237_ = NULL;
-                                                               ValaCCodeExpression* _tmp238_ = NULL;
-                                                               ValaCCodeFunctionCall* _tmp239_ = NULL;
-                                                               ValaCCodeIdentifier* _tmp240_ = NULL;
-                                                               ValaCCodeIdentifier* _tmp241_ = NULL;
-                                                               _tmp234_ = vala_ccode_identifier_new ("va_copy");
-                                                               _tmp235_ = _tmp234_;
-                                                               _tmp236_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp235_);
+                                       if (_tmp241_) {
+                                               ValaCCodeFunctionCall* _tmp246_ = NULL;
+                                               ValaCCodeExpression* _tmp247_ = NULL;
+                                               ValaMethod* _tmp248_ = NULL;
+                                               gchar* _tmp249_ = NULL;
+                                               gchar* _tmp250_ = NULL;
+                                               gboolean _tmp251_ = FALSE;
+                                               _tmp246_ = creation_call;
+                                               _tmp247_ = instance;
+                                               vala_ccode_function_call_add_argument (_tmp246_, _tmp247_);
+                                               _tmp248_ = m;
+                                               _tmp249_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp248_);
+                                               _tmp250_ = _tmp249_;
+                                               _tmp251_ = g_strcmp0 (_tmp250_, "va_start") == 0;
+                                               _g_free0 (_tmp250_);
+                                               if (_tmp251_) {
+                                                       gboolean _tmp252_ = FALSE;
+                                                       gboolean _tmp253_ = FALSE;
+                                                       _tmp252_ = vala_ccode_base_module_get_in_creation_method (self);
+                                                       _tmp253_ = _tmp252_;
+                                                       if (_tmp253_) {
+                                                               ValaCCodeIdentifier* _tmp254_ = NULL;
+                                                               ValaCCodeIdentifier* _tmp255_ = NULL;
+                                                               ValaCCodeFunctionCall* _tmp256_ = NULL;
+                                                               ValaCCodeFunctionCall* _tmp257_ = NULL;
+                                                               ValaCCodeExpression* _tmp258_ = NULL;
+                                                               ValaCCodeFunctionCall* _tmp259_ = NULL;
+                                                               ValaCCodeIdentifier* _tmp260_ = NULL;
+                                                               ValaCCodeIdentifier* _tmp261_ = NULL;
+                                                               _tmp254_ = vala_ccode_identifier_new ("va_copy");
+                                                               _tmp255_ = _tmp254_;
+                                                               _tmp256_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp255_);
                                                                _vala_ccode_node_unref0 (creation_call);
-                                                               creation_call = _tmp236_;
-                                                               _vala_ccode_node_unref0 (_tmp235_);
-                                                               _tmp237_ = creation_call;
-                                                               _tmp238_ = instance;
-                                                               vala_ccode_function_call_add_argument (_tmp237_, _tmp238_);
-                                                               _tmp239_ = creation_call;
-                                                               _tmp240_ = vala_ccode_identifier_new ("_vala_va_list");
-                                                               _tmp241_ = _tmp240_;
-                                                               vala_ccode_function_call_add_argument (_tmp239_, (ValaCCodeExpression*) _tmp241_);
-                                                               _vala_ccode_node_unref0 (_tmp241_);
+                                                               creation_call = _tmp256_;
+                                                               _vala_ccode_node_unref0 (_tmp255_);
+                                                               _tmp257_ = creation_call;
+                                                               _tmp258_ = instance;
+                                                               vala_ccode_function_call_add_argument (_tmp257_, _tmp258_);
+                                                               _tmp259_ = creation_call;
+                                                               _tmp260_ = vala_ccode_identifier_new ("_vala_va_list");
+                                                               _tmp261_ = _tmp260_;
+                                                               vala_ccode_function_call_add_argument (_tmp259_, (ValaCCodeExpression*) _tmp261_);
+                                                               _vala_ccode_node_unref0 (_tmp261_);
                                                        } else {
                                                                ValaParameter* last_param = NULL;
                                                                gint nParams = 0;
-                                                               ValaCCodeFunction* _tmp259_ = NULL;
-                                                               ValaCCodeFunction* _tmp260_ = NULL;
-                                                               gint _tmp261_ = 0;
-                                                               gboolean _tmp262_ = FALSE;
-                                                               gint _tmp263_ = 0;
+                                                               ValaCCodeFunction* _tmp279_ = NULL;
+                                                               ValaCCodeFunction* _tmp280_ = NULL;
+                                                               gint _tmp281_ = 0;
+                                                               gboolean _tmp282_ = FALSE;
+                                                               gint _tmp283_ = 0;
                                                                last_param = NULL;
                                                                {
                                                                        ValaList* _param_list = NULL;
-                                                                       ValaMethod* _tmp242_ = NULL;
-                                                                       ValaMethod* _tmp243_ = NULL;
-                                                                       ValaList* _tmp244_ = NULL;
+                                                                       ValaMethod* _tmp262_ = NULL;
+                                                                       ValaMethod* _tmp263_ = NULL;
+                                                                       ValaList* _tmp264_ = NULL;
                                                                        gint _param_size = 0;
-                                                                       ValaList* _tmp245_ = NULL;
-                                                                       gint _tmp246_ = 0;
-                                                                       gint _tmp247_ = 0;
+                                                                       ValaList* _tmp265_ = NULL;
+                                                                       gint _tmp266_ = 0;
+                                                                       gint _tmp267_ = 0;
                                                                        gint _param_index = 0;
-                                                                       _tmp242_ = vala_ccode_base_module_get_current_method (self);
-                                                                       _tmp243_ = _tmp242_;
-                                                                       _tmp244_ = vala_method_get_parameters (_tmp243_);
-                                                                       _param_list = _tmp244_;
-                                                                       _tmp245_ = _param_list;
-                                                                       _tmp246_ = vala_collection_get_size ((ValaCollection*) _tmp245_);
-                                                                       _tmp247_ = _tmp246_;
-                                                                       _param_size = _tmp247_;
+                                                                       _tmp262_ = vala_ccode_base_module_get_current_method (self);
+                                                                       _tmp263_ = _tmp262_;
+                                                                       _tmp264_ = vala_method_get_parameters (_tmp263_);
+                                                                       _param_list = _tmp264_;
+                                                                       _tmp265_ = _param_list;
+                                                                       _tmp266_ = vala_collection_get_size ((ValaCollection*) _tmp265_);
+                                                                       _tmp267_ = _tmp266_;
+                                                                       _param_size = _tmp267_;
                                                                        _param_index = -1;
                                                                        while (TRUE) {
-                                                                               gint _tmp248_ = 0;
-                                                                               gint _tmp249_ = 0;
-                                                                               gint _tmp250_ = 0;
+                                                                               gint _tmp268_ = 0;
+                                                                               gint _tmp269_ = 0;
+                                                                               gint _tmp270_ = 0;
                                                                                ValaParameter* param = NULL;
-                                                                               ValaList* _tmp251_ = NULL;
-                                                                               gint _tmp252_ = 0;
-                                                                               gpointer _tmp253_ = NULL;
-                                                                               ValaParameter* _tmp254_ = NULL;
-                                                                               gboolean _tmp255_ = FALSE;
-                                                                               gboolean _tmp256_ = FALSE;
-                                                                               ValaParameter* _tmp257_ = NULL;
-                                                                               ValaParameter* _tmp258_ = NULL;
-                                                                               _tmp248_ = _param_index;
-                                                                               _param_index = _tmp248_ + 1;
-                                                                               _tmp249_ = _param_index;
-                                                                               _tmp250_ = _param_size;
-                                                                               if (!(_tmp249_ < _tmp250_)) {
+                                                                               ValaList* _tmp271_ = NULL;
+                                                                               gint _tmp272_ = 0;
+                                                                               gpointer _tmp273_ = NULL;
+                                                                               ValaParameter* _tmp274_ = NULL;
+                                                                               gboolean _tmp275_ = FALSE;
+                                                                               gboolean _tmp276_ = FALSE;
+                                                                               ValaParameter* _tmp277_ = NULL;
+                                                                               ValaParameter* _tmp278_ = NULL;
+                                                                               _tmp268_ = _param_index;
+                                                                               _param_index = _tmp268_ + 1;
+                                                                               _tmp269_ = _param_index;
+                                                                               _tmp270_ = _param_size;
+                                                                               if (!(_tmp269_ < _tmp270_)) {
                                                                                        break;
                                                                                }
-                                                                               _tmp251_ = _param_list;
-                                                                               _tmp252_ = _param_index;
-                                                                               _tmp253_ = vala_list_get (_tmp251_, _tmp252_);
-                                                                               param = (ValaParameter*) _tmp253_;
-                                                                               _tmp254_ = param;
-                                                                               _tmp255_ = vala_parameter_get_ellipsis (_tmp254_);
-                                                                               _tmp256_ = _tmp255_;
-                                                                               if (_tmp256_) {
+                                                                               _tmp271_ = _param_list;
+                                                                               _tmp272_ = _param_index;
+                                                                               _tmp273_ = vala_list_get (_tmp271_, _tmp272_);
+                                                                               param = (ValaParameter*) _tmp273_;
+                                                                               _tmp274_ = param;
+                                                                               _tmp275_ = vala_parameter_get_ellipsis (_tmp274_);
+                                                                               _tmp276_ = _tmp275_;
+                                                                               if (_tmp276_) {
                                                                                        _vala_code_node_unref0 (param);
                                                                                        break;
                                                                                }
-                                                                               _tmp257_ = param;
-                                                                               _tmp258_ = _vala_code_node_ref0 (_tmp257_);
+                                                                               _tmp277_ = param;
+                                                                               _tmp278_ = _vala_code_node_ref0 (_tmp277_);
                                                                                _vala_code_node_unref0 (last_param);
-                                                                               last_param = _tmp258_;
+                                                                               last_param = _tmp278_;
                                                                                _vala_code_node_unref0 (param);
                                                                        }
                                                                        _vala_iterable_unref0 (_param_list);
                                                                }
-                                                               _tmp259_ = vala_ccode_base_module_get_ccode (self);
-                                                               _tmp260_ = _tmp259_;
-                                                               _tmp261_ = vala_ccode_function_get_parameter_count (_tmp260_);
-                                                               nParams = _tmp261_;
-                                                               _tmp263_ = nParams;
-                                                               if (_tmp263_ == 0) {
-                                                                       _tmp262_ = TRUE;
+                                                               _tmp279_ = vala_ccode_base_module_get_ccode (self);
+                                                               _tmp280_ = _tmp279_;
+                                                               _tmp281_ = vala_ccode_function_get_parameter_count (_tmp280_);
+                                                               nParams = _tmp281_;
+                                                               _tmp283_ = nParams;
+                                                               if (_tmp283_ == 0) {
+                                                                       _tmp282_ = TRUE;
                                                                } else {
-                                                                       ValaCCodeFunction* _tmp264_ = NULL;
-                                                                       ValaCCodeFunction* _tmp265_ = NULL;
-                                                                       gint _tmp266_ = 0;
-                                                                       ValaCCodeParameter* _tmp267_ = NULL;
-                                                                       ValaCCodeParameter* _tmp268_ = NULL;
-                                                                       gboolean _tmp269_ = FALSE;
-                                                                       gboolean _tmp270_ = FALSE;
-                                                                       _tmp264_ = vala_ccode_base_module_get_ccode (self);
-                                                                       _tmp265_ = _tmp264_;
-                                                                       _tmp266_ = nParams;
-                                                                       _tmp267_ = vala_ccode_function_get_parameter (_tmp265_, _tmp266_ - 1);
-                                                                       _tmp268_ = _tmp267_;
-                                                                       _tmp269_ = vala_ccode_parameter_get_ellipsis (_tmp268_);
-                                                                       _tmp270_ = _tmp269_;
-                                                                       _tmp262_ = !_tmp270_;
-                                                                       _vala_ccode_node_unref0 (_tmp268_);
+                                                                       ValaCCodeFunction* _tmp284_ = NULL;
+                                                                       ValaCCodeFunction* _tmp285_ = NULL;
+                                                                       gint _tmp286_ = 0;
+                                                                       ValaCCodeParameter* _tmp287_ = NULL;
+                                                                       ValaCCodeParameter* _tmp288_ = NULL;
+                                                                       gboolean _tmp289_ = FALSE;
+                                                                       gboolean _tmp290_ = FALSE;
+                                                                       _tmp284_ = vala_ccode_base_module_get_ccode (self);
+                                                                       _tmp285_ = _tmp284_;
+                                                                       _tmp286_ = nParams;
+                                                                       _tmp287_ = vala_ccode_function_get_parameter (_tmp285_, _tmp286_ - 1);
+                                                                       _tmp288_ = _tmp287_;
+                                                                       _tmp289_ = vala_ccode_parameter_get_ellipsis (_tmp288_);
+                                                                       _tmp290_ = _tmp289_;
+                                                                       _tmp282_ = !_tmp290_;
+                                                                       _vala_ccode_node_unref0 (_tmp288_);
                                                                }
-                                                               if (_tmp262_) {
-                                                                       ValaObjectCreationExpression* _tmp271_ = NULL;
-                                                                       ValaSourceReference* _tmp272_ = NULL;
-                                                                       ValaSourceReference* _tmp273_ = NULL;
-                                                                       _tmp271_ = expr;
-                                                                       _tmp272_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp271_);
-                                                                       _tmp273_ = _tmp272_;
-                                                                       vala_report_error (_tmp273_, "`va_list' used in method with fixed args");
+                                                               if (_tmp282_) {
+                                                                       ValaObjectCreationExpression* _tmp291_ = NULL;
+                                                                       ValaSourceReference* _tmp292_ = NULL;
+                                                                       ValaSourceReference* _tmp293_ = NULL;
+                                                                       _tmp291_ = expr;
+                                                                       _tmp292_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp291_);
+                                                                       _tmp293_ = _tmp292_;
+                                                                       vala_report_error (_tmp293_, "`va_list' used in method with fixed args");
                                                                } else {
-                                                                       gint _tmp274_ = 0;
-                                                                       _tmp274_ = nParams;
-                                                                       if (_tmp274_ == 1) {
-                                                                               ValaObjectCreationExpression* _tmp275_ = NULL;
-                                                                               ValaSourceReference* _tmp276_ = NULL;
-                                                                               ValaSourceReference* _tmp277_ = NULL;
-                                                                               _tmp275_ = expr;
-                                                                               _tmp276_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp275_);
-                                                                               _tmp277_ = _tmp276_;
-                                                                               vala_report_error (_tmp277_, "`va_list' used in method without parameter");
+                                                                       gint _tmp294_ = 0;
+                                                                       _tmp294_ = nParams;
+                                                                       if (_tmp294_ == 1) {
+                                                                               ValaObjectCreationExpression* _tmp295_ = NULL;
+                                                                               ValaSourceReference* _tmp296_ = NULL;
+                                                                               ValaSourceReference* _tmp297_ = NULL;
+                                                                               _tmp295_ = expr;
+                                                                               _tmp296_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp295_);
+                                                                               _tmp297_ = _tmp296_;
+                                                                               vala_report_error (_tmp297_, "`va_list' used in method without parameter");
                                                                        } else {
-                                                                               ValaCCodeFunctionCall* _tmp278_ = NULL;
-                                                                               ValaCCodeFunction* _tmp279_ = NULL;
-                                                                               ValaCCodeFunction* _tmp280_ = NULL;
-                                                                               gint _tmp281_ = 0;
-                                                                               ValaCCodeParameter* _tmp282_ = NULL;
-                                                                               ValaCCodeParameter* _tmp283_ = NULL;
-                                                                               const gchar* _tmp284_ = NULL;
-                                                                               const gchar* _tmp285_ = NULL;
-                                                                               ValaCCodeIdentifier* _tmp286_ = NULL;
-                                                                               ValaCCodeIdentifier* _tmp287_ = NULL;
-                                                                               _tmp278_ = creation_call;
-                                                                               _tmp279_ = vala_ccode_base_module_get_ccode (self);
-                                                                               _tmp280_ = _tmp279_;
-                                                                               _tmp281_ = nParams;
-                                                                               _tmp282_ = vala_ccode_function_get_parameter (_tmp280_, _tmp281_ - 2);
-                                                                               _tmp283_ = _tmp282_;
-                                                                               _tmp284_ = vala_ccode_parameter_get_name (_tmp283_);
-                                                                               _tmp285_ = _tmp284_;
-                                                                               _tmp286_ = vala_ccode_identifier_new (_tmp285_);
-                                                                               _tmp287_ = _tmp286_;
-                                                                               vala_ccode_function_call_add_argument (_tmp278_, (ValaCCodeExpression*) _tmp287_);
-                                                                               _vala_ccode_node_unref0 (_tmp287_);
-                                                                               _vala_ccode_node_unref0 (_tmp283_);
+                                                                               ValaCCodeFunctionCall* _tmp298_ = NULL;
+                                                                               ValaCCodeFunction* _tmp299_ = NULL;
+                                                                               ValaCCodeFunction* _tmp300_ = NULL;
+                                                                               gint _tmp301_ = 0;
+                                                                               ValaCCodeParameter* _tmp302_ = NULL;
+                                                                               ValaCCodeParameter* _tmp303_ = NULL;
+                                                                               const gchar* _tmp304_ = NULL;
+                                                                               const gchar* _tmp305_ = NULL;
+                                                                               ValaCCodeIdentifier* _tmp306_ = NULL;
+                                                                               ValaCCodeIdentifier* _tmp307_ = NULL;
+                                                                               _tmp298_ = creation_call;
+                                                                               _tmp299_ = vala_ccode_base_module_get_ccode (self);
+                                                                               _tmp300_ = _tmp299_;
+                                                                               _tmp301_ = nParams;
+                                                                               _tmp302_ = vala_ccode_function_get_parameter (_tmp300_, _tmp301_ - 2);
+                                                                               _tmp303_ = _tmp302_;
+                                                                               _tmp304_ = vala_ccode_parameter_get_name (_tmp303_);
+                                                                               _tmp305_ = _tmp304_;
+                                                                               _tmp306_ = vala_ccode_identifier_new (_tmp305_);
+                                                                               _tmp307_ = _tmp306_;
+                                                                               vala_ccode_function_call_add_argument (_tmp298_, (ValaCCodeExpression*) _tmp307_);
+                                                                               _vala_ccode_node_unref0 (_tmp307_);
+                                                                               _vala_ccode_node_unref0 (_tmp303_);
                                                                        }
                                                                }
                                                                _vala_code_node_unref0 (last_param);
@@ -27054,217 +27375,217 @@ static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCo
                                                }
                                        }
                                }
-                               _tmp288_ = expr;
-                               _tmp289_ = vala_object_creation_expression_get_type_reference (_tmp288_);
-                               _tmp290_ = _tmp289_;
-                               _tmp291_ = self->cfile;
-                               vala_ccode_base_module_generate_type_declaration (self, _tmp290_, _tmp291_);
-                               _tmp292_ = g_direct_hash;
-                               _tmp293_ = g_direct_equal;
-                               _tmp294_ = g_direct_equal;
-                               _tmp295_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp292_, _tmp293_, _tmp294_);
-                               in_arg_map = _tmp295_;
-                               _tmp296_ = in_arg_map;
-                               _tmp297_ = _vala_map_ref0 (_tmp296_);
-                               out_arg_map = _tmp297_;
-                               _tmp299_ = m;
-                               if (_tmp299_ != NULL) {
-                                       ValaMethod* _tmp300_ = NULL;
-                                       gboolean _tmp301_ = FALSE;
-                                       gboolean _tmp302_ = FALSE;
-                                       _tmp300_ = m;
-                                       _tmp301_ = vala_method_get_coroutine (_tmp300_);
-                                       _tmp302_ = _tmp301_;
-                                       _tmp298_ = _tmp302_;
+                               _tmp308_ = expr;
+                               _tmp309_ = vala_object_creation_expression_get_type_reference (_tmp308_);
+                               _tmp310_ = _tmp309_;
+                               _tmp311_ = self->cfile;
+                               vala_ccode_base_module_generate_type_declaration (self, _tmp310_, _tmp311_);
+                               _tmp312_ = g_direct_hash;
+                               _tmp313_ = g_direct_equal;
+                               _tmp314_ = g_direct_equal;
+                               _tmp315_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp312_, _tmp313_, _tmp314_);
+                               in_arg_map = _tmp315_;
+                               _tmp316_ = in_arg_map;
+                               _tmp317_ = _vala_map_ref0 (_tmp316_);
+                               out_arg_map = _tmp317_;
+                               _tmp319_ = m;
+                               if (_tmp319_ != NULL) {
+                                       ValaMethod* _tmp320_ = NULL;
+                                       gboolean _tmp321_ = FALSE;
+                                       gboolean _tmp322_ = FALSE;
+                                       _tmp320_ = m;
+                                       _tmp321_ = vala_method_get_coroutine (_tmp320_);
+                                       _tmp322_ = _tmp321_;
+                                       _tmp318_ = _tmp322_;
                                } else {
-                                       _tmp298_ = FALSE;
+                                       _tmp318_ = FALSE;
                                }
-                               if (_tmp298_) {
-                                       ValaMethod* _tmp303_ = NULL;
-                                       gchar* _tmp304_ = NULL;
-                                       gchar* _tmp305_ = NULL;
-                                       ValaCCodeIdentifier* _tmp306_ = NULL;
-                                       ValaCCodeIdentifier* _tmp307_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp308_ = NULL;
-                                       ValaMethod* _tmp309_ = NULL;
-                                       gchar* _tmp310_ = NULL;
-                                       gchar* _tmp311_ = NULL;
-                                       ValaCCodeIdentifier* _tmp312_ = NULL;
-                                       ValaCCodeIdentifier* _tmp313_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp314_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp315_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp316_ = NULL;
-                                       GHashFunc _tmp317_ = NULL;
-                                       GEqualFunc _tmp318_ = NULL;
-                                       GEqualFunc _tmp319_ = NULL;
-                                       ValaHashMap* _tmp320_ = NULL;
-                                       ValaHashMap* _tmp321_ = NULL;
-                                       gint _tmp322_ = 0;
-                                       ValaCCodeIdentifier* _tmp323_ = NULL;
-                                       ValaCCodeIdentifier* _tmp324_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp325_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp326_ = NULL;
-                                       _tmp303_ = m;
-                                       _tmp304_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp303_);
-                                       _tmp305_ = _tmp304_;
-                                       _tmp306_ = vala_ccode_identifier_new (_tmp305_);
-                                       _tmp307_ = _tmp306_;
-                                       _tmp308_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp307_);
+                               if (_tmp318_) {
+                                       ValaMethod* _tmp323_ = NULL;
+                                       gchar* _tmp324_ = NULL;
+                                       gchar* _tmp325_ = NULL;
+                                       ValaCCodeIdentifier* _tmp326_ = NULL;
+                                       ValaCCodeIdentifier* _tmp327_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp328_ = NULL;
+                                       ValaMethod* _tmp329_ = NULL;
+                                       gchar* _tmp330_ = NULL;
+                                       gchar* _tmp331_ = NULL;
+                                       ValaCCodeIdentifier* _tmp332_ = NULL;
+                                       ValaCCodeIdentifier* _tmp333_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp334_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp335_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp336_ = NULL;
+                                       GHashFunc _tmp337_ = NULL;
+                                       GEqualFunc _tmp338_ = NULL;
+                                       GEqualFunc _tmp339_ = NULL;
+                                       ValaHashMap* _tmp340_ = NULL;
+                                       ValaHashMap* _tmp341_ = NULL;
+                                       gint _tmp342_ = 0;
+                                       ValaCCodeIdentifier* _tmp343_ = NULL;
+                                       ValaCCodeIdentifier* _tmp344_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp345_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp346_ = NULL;
+                                       _tmp323_ = m;
+                                       _tmp324_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp323_);
+                                       _tmp325_ = _tmp324_;
+                                       _tmp326_ = vala_ccode_identifier_new (_tmp325_);
+                                       _tmp327_ = _tmp326_;
+                                       _tmp328_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp327_);
                                        _vala_ccode_node_unref0 (async_call);
-                                       async_call = _tmp308_;
-                                       _vala_ccode_node_unref0 (_tmp307_);
-                                       _g_free0 (_tmp305_);
-                                       _tmp309_ = m;
-                                       _tmp310_ = vala_ccode_base_module_get_ccode_finish_name (_tmp309_);
-                                       _tmp311_ = _tmp310_;
-                                       _tmp312_ = vala_ccode_identifier_new (_tmp311_);
-                                       _tmp313_ = _tmp312_;
-                                       _tmp314_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp313_);
+                                       async_call = _tmp328_;
+                                       _vala_ccode_node_unref0 (_tmp327_);
+                                       _g_free0 (_tmp325_);
+                                       _tmp329_ = m;
+                                       _tmp330_ = vala_ccode_base_module_get_ccode_finish_name (_tmp329_);
+                                       _tmp331_ = _tmp330_;
+                                       _tmp332_ = vala_ccode_identifier_new (_tmp331_);
+                                       _tmp333_ = _tmp332_;
+                                       _tmp334_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp333_);
                                        _vala_ccode_node_unref0 (finish_call);
-                                       finish_call = _tmp314_;
-                                       _vala_ccode_node_unref0 (_tmp313_);
-                                       _g_free0 (_tmp311_);
-                                       _tmp315_ = finish_call;
-                                       _tmp316_ = _vala_ccode_node_ref0 (_tmp315_);
+                                       finish_call = _tmp334_;
+                                       _vala_ccode_node_unref0 (_tmp333_);
+                                       _g_free0 (_tmp331_);
+                                       _tmp335_ = finish_call;
+                                       _tmp336_ = _vala_ccode_node_ref0 (_tmp335_);
                                        _vala_ccode_node_unref0 (creation_call);
-                                       creation_call = _tmp316_;
-                                       _tmp317_ = g_direct_hash;
-                                       _tmp318_ = g_direct_equal;
-                                       _tmp319_ = g_direct_equal;
-                                       _tmp320_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp317_, _tmp318_, _tmp319_);
+                                       creation_call = _tmp336_;
+                                       _tmp337_ = g_direct_hash;
+                                       _tmp338_ = g_direct_equal;
+                                       _tmp339_ = g_direct_equal;
+                                       _tmp340_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp337_, _tmp338_, _tmp339_);
                                        _vala_map_unref0 (out_arg_map);
-                                       out_arg_map = _tmp320_;
-                                       _tmp321_ = out_arg_map;
-                                       _tmp322_ = vala_ccode_base_module_get_param_pos (self, 0.1, FALSE);
-                                       _tmp323_ = vala_ccode_identifier_new ("_data_");
-                                       _tmp324_ = _tmp323_;
-                                       _tmp325_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp324_, "_res_");
-                                       _tmp326_ = _tmp325_;
-                                       vala_map_set ((ValaMap*) _tmp321_, (gpointer) ((gintptr) _tmp322_), (ValaCCodeExpression*) _tmp326_);
-                                       _vala_ccode_node_unref0 (_tmp326_);
-                                       _vala_ccode_node_unref0 (_tmp324_);
+                                       out_arg_map = _tmp340_;
+                                       _tmp341_ = out_arg_map;
+                                       _tmp342_ = vala_ccode_base_module_get_param_pos (self, 0.1, FALSE);
+                                       _tmp343_ = vala_ccode_identifier_new ("_data_");
+                                       _tmp344_ = _tmp343_;
+                                       _tmp345_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp344_, "_res_");
+                                       _tmp346_ = _tmp345_;
+                                       vala_map_set ((ValaMap*) _tmp341_, (gpointer) ((gintptr) _tmp342_), (ValaCCodeExpression*) _tmp346_);
+                                       _vala_ccode_node_unref0 (_tmp346_);
+                                       _vala_ccode_node_unref0 (_tmp344_);
                                }
-                               _tmp328_ = cl;
-                               if (_tmp328_ != NULL) {
-                                       ValaClass* _tmp329_ = NULL;
-                                       gboolean _tmp330_ = FALSE;
-                                       gboolean _tmp331_ = FALSE;
-                                       _tmp329_ = cl;
-                                       _tmp330_ = vala_class_get_is_compact (_tmp329_);
-                                       _tmp331_ = _tmp330_;
-                                       _tmp327_ = !_tmp331_;
+                               _tmp348_ = cl;
+                               if (_tmp348_ != NULL) {
+                                       ValaClass* _tmp349_ = NULL;
+                                       gboolean _tmp350_ = FALSE;
+                                       gboolean _tmp351_ = FALSE;
+                                       _tmp349_ = cl;
+                                       _tmp350_ = vala_class_get_is_compact (_tmp349_);
+                                       _tmp351_ = _tmp350_;
+                                       _tmp347_ = !_tmp351_;
                                } else {
-                                       _tmp327_ = FALSE;
+                                       _tmp347_ = FALSE;
                                }
-                               if (_tmp327_) {
-                                       ValaHashMap* _tmp332_ = NULL;
-                                       ValaObjectCreationExpression* _tmp333_ = NULL;
-                                       ValaDataType* _tmp334_ = NULL;
-                                       ValaDataType* _tmp335_ = NULL;
-                                       ValaList* _tmp336_ = NULL;
-                                       ValaList* _tmp337_ = NULL;
-                                       ValaObjectCreationExpression* _tmp338_ = NULL;
-                                       _tmp332_ = in_arg_map;
-                                       _tmp333_ = expr;
-                                       _tmp334_ = vala_object_creation_expression_get_type_reference (_tmp333_);
-                                       _tmp335_ = _tmp334_;
-                                       _tmp336_ = vala_data_type_get_type_arguments (_tmp335_);
-                                       _tmp337_ = _tmp336_;
-                                       _tmp338_ = expr;
-                                       vala_ccode_base_module_add_generic_type_arguments (self, (ValaMap*) _tmp332_, _tmp337_, (ValaCodeNode*) _tmp338_, FALSE, NULL);
-                                       _vala_iterable_unref0 (_tmp337_);
+                               if (_tmp347_) {
+                                       ValaHashMap* _tmp352_ = NULL;
+                                       ValaObjectCreationExpression* _tmp353_ = NULL;
+                                       ValaDataType* _tmp354_ = NULL;
+                                       ValaDataType* _tmp355_ = NULL;
+                                       ValaList* _tmp356_ = NULL;
+                                       ValaList* _tmp357_ = NULL;
+                                       ValaObjectCreationExpression* _tmp358_ = NULL;
+                                       _tmp352_ = in_arg_map;
+                                       _tmp353_ = expr;
+                                       _tmp354_ = vala_object_creation_expression_get_type_reference (_tmp353_);
+                                       _tmp355_ = _tmp354_;
+                                       _tmp356_ = vala_data_type_get_type_arguments (_tmp355_);
+                                       _tmp357_ = _tmp356_;
+                                       _tmp358_ = expr;
+                                       vala_ccode_base_module_add_generic_type_arguments (self, (ValaMap*) _tmp352_, _tmp357_, (ValaCodeNode*) _tmp358_, FALSE, NULL);
+                                       _vala_iterable_unref0 (_tmp357_);
                                } else {
-                                       gboolean _tmp339_ = FALSE;
-                                       ValaClass* _tmp340_ = NULL;
-                                       _tmp340_ = cl;
-                                       if (_tmp340_ != NULL) {
-                                               ValaMethod* _tmp341_ = NULL;
-                                               gboolean _tmp342_ = FALSE;
-                                               _tmp341_ = m;
-                                               _tmp342_ = vala_ccode_base_module_get_ccode_simple_generics (_tmp341_);
-                                               _tmp339_ = _tmp342_;
+                                       gboolean _tmp359_ = FALSE;
+                                       ValaClass* _tmp360_ = NULL;
+                                       _tmp360_ = cl;
+                                       if (_tmp360_ != NULL) {
+                                               ValaMethod* _tmp361_ = NULL;
+                                               gboolean _tmp362_ = FALSE;
+                                               _tmp361_ = m;
+                                               _tmp362_ = vala_ccode_base_module_get_ccode_simple_generics (_tmp361_);
+                                               _tmp359_ = _tmp362_;
                                        } else {
-                                               _tmp339_ = FALSE;
+                                               _tmp359_ = FALSE;
                                        }
-                                       if (_tmp339_) {
+                                       if (_tmp359_) {
                                                gint type_param_index = 0;
                                                type_param_index = 0;
                                                {
                                                        ValaList* _type_arg_list = NULL;
-                                                       ValaObjectCreationExpression* _tmp343_ = NULL;
-                                                       ValaDataType* _tmp344_ = NULL;
-                                                       ValaDataType* _tmp345_ = NULL;
-                                                       ValaList* _tmp346_ = NULL;
+                                                       ValaObjectCreationExpression* _tmp363_ = NULL;
+                                                       ValaDataType* _tmp364_ = NULL;
+                                                       ValaDataType* _tmp365_ = NULL;
+                                                       ValaList* _tmp366_ = NULL;
                                                        gint _type_arg_size = 0;
-                                                       ValaList* _tmp347_ = NULL;
-                                                       gint _tmp348_ = 0;
-                                                       gint _tmp349_ = 0;
+                                                       ValaList* _tmp367_ = NULL;
+                                                       gint _tmp368_ = 0;
+                                                       gint _tmp369_ = 0;
                                                        gint _type_arg_index = 0;
-                                                       _tmp343_ = expr;
-                                                       _tmp344_ = vala_object_creation_expression_get_type_reference (_tmp343_);
-                                                       _tmp345_ = _tmp344_;
-                                                       _tmp346_ = vala_data_type_get_type_arguments (_tmp345_);
-                                                       _type_arg_list = _tmp346_;
-                                                       _tmp347_ = _type_arg_list;
-                                                       _tmp348_ = vala_collection_get_size ((ValaCollection*) _tmp347_);
-                                                       _tmp349_ = _tmp348_;
-                                                       _type_arg_size = _tmp349_;
+                                                       _tmp363_ = expr;
+                                                       _tmp364_ = vala_object_creation_expression_get_type_reference (_tmp363_);
+                                                       _tmp365_ = _tmp364_;
+                                                       _tmp366_ = vala_data_type_get_type_arguments (_tmp365_);
+                                                       _type_arg_list = _tmp366_;
+                                                       _tmp367_ = _type_arg_list;
+                                                       _tmp368_ = vala_collection_get_size ((ValaCollection*) _tmp367_);
+                                                       _tmp369_ = _tmp368_;
+                                                       _type_arg_size = _tmp369_;
                                                        _type_arg_index = -1;
                                                        while (TRUE) {
-                                                               gint _tmp350_ = 0;
-                                                               gint _tmp351_ = 0;
-                                                               gint _tmp352_ = 0;
+                                                               gint _tmp370_ = 0;
+                                                               gint _tmp371_ = 0;
+                                                               gint _tmp372_ = 0;
                                                                ValaDataType* type_arg = NULL;
-                                                               ValaList* _tmp353_ = NULL;
-                                                               gint _tmp354_ = 0;
-                                                               gpointer _tmp355_ = NULL;
-                                                               ValaDataType* _tmp356_ = NULL;
-                                                               gboolean _tmp357_ = FALSE;
-                                                               gint _tmp369_ = 0;
-                                                               _tmp350_ = _type_arg_index;
-                                                               _type_arg_index = _tmp350_ + 1;
-                                                               _tmp351_ = _type_arg_index;
-                                                               _tmp352_ = _type_arg_size;
-                                                               if (!(_tmp351_ < _tmp352_)) {
+                                                               ValaList* _tmp373_ = NULL;
+                                                               gint _tmp374_ = 0;
+                                                               gpointer _tmp375_ = NULL;
+                                                               ValaDataType* _tmp376_ = NULL;
+                                                               gboolean _tmp377_ = FALSE;
+                                                               gint _tmp389_ = 0;
+                                                               _tmp370_ = _type_arg_index;
+                                                               _type_arg_index = _tmp370_ + 1;
+                                                               _tmp371_ = _type_arg_index;
+                                                               _tmp372_ = _type_arg_size;
+                                                               if (!(_tmp371_ < _tmp372_)) {
                                                                        break;
                                                                }
-                                                               _tmp353_ = _type_arg_list;
-                                                               _tmp354_ = _type_arg_index;
-                                                               _tmp355_ = vala_list_get (_tmp353_, _tmp354_);
-                                                               type_arg = (ValaDataType*) _tmp355_;
-                                                               _tmp356_ = type_arg;
-                                                               _tmp357_ = vala_ccode_base_module_requires_copy (self, _tmp356_);
-                                                               if (_tmp357_) {
-                                                                       ValaHashMap* _tmp358_ = NULL;
-                                                                       gint _tmp359_ = 0;
-                                                                       gint _tmp360_ = 0;
-                                                                       ValaDataType* _tmp361_ = NULL;
-                                                                       ValaCCodeExpression* _tmp362_ = NULL;
-                                                                       ValaCCodeExpression* _tmp363_ = NULL;
-                                                                       _tmp358_ = in_arg_map;
-                                                                       _tmp359_ = type_param_index;
-                                                                       _tmp360_ = vala_ccode_base_module_get_param_pos (self, ((-1) + (0.1 * _tmp359_)) + 0.03, FALSE);
-                                                                       _tmp361_ = type_arg;
-                                                                       _tmp362_ = vala_ccode_base_module_get_destroy0_func_expression (self, _tmp361_, FALSE);
-                                                                       _tmp363_ = _tmp362_;
-                                                                       vala_map_set ((ValaMap*) _tmp358_, (gpointer) ((gintptr) _tmp360_), _tmp363_);
-                                                                       _vala_ccode_node_unref0 (_tmp363_);
+                                                               _tmp373_ = _type_arg_list;
+                                                               _tmp374_ = _type_arg_index;
+                                                               _tmp375_ = vala_list_get (_tmp373_, _tmp374_);
+                                                               type_arg = (ValaDataType*) _tmp375_;
+                                                               _tmp376_ = type_arg;
+                                                               _tmp377_ = vala_ccode_base_module_requires_copy (self, _tmp376_);
+                                                               if (_tmp377_) {
+                                                                       ValaHashMap* _tmp378_ = NULL;
+                                                                       gint _tmp379_ = 0;
+                                                                       gint _tmp380_ = 0;
+                                                                       ValaDataType* _tmp381_ = NULL;
+                                                                       ValaCCodeExpression* _tmp382_ = NULL;
+                                                                       ValaCCodeExpression* _tmp383_ = NULL;
+                                                                       _tmp378_ = in_arg_map;
+                                                                       _tmp379_ = type_param_index;
+                                                                       _tmp380_ = vala_ccode_base_module_get_param_pos (self, ((-1) + (0.1 * _tmp379_)) + 0.03, FALSE);
+                                                                       _tmp381_ = type_arg;
+                                                                       _tmp382_ = vala_ccode_base_module_get_destroy0_func_expression (self, _tmp381_, FALSE);
+                                                                       _tmp383_ = _tmp382_;
+                                                                       vala_map_set ((ValaMap*) _tmp378_, (gpointer) ((gintptr) _tmp380_), _tmp383_);
+                                                                       _vala_ccode_node_unref0 (_tmp383_);
                                                                } else {
-                                                                       ValaHashMap* _tmp364_ = NULL;
-                                                                       gint _tmp365_ = 0;
-                                                                       gint _tmp366_ = 0;
-                                                                       ValaCCodeConstant* _tmp367_ = NULL;
-                                                                       ValaCCodeConstant* _tmp368_ = NULL;
-                                                                       _tmp364_ = in_arg_map;
-                                                                       _tmp365_ = type_param_index;
-                                                                       _tmp366_ = vala_ccode_base_module_get_param_pos (self, ((-1) + (0.1 * _tmp365_)) + 0.03, FALSE);
-                                                                       _tmp367_ = vala_ccode_constant_new ("NULL");
-                                                                       _tmp368_ = _tmp367_;
-                                                                       vala_map_set ((ValaMap*) _tmp364_, (gpointer) ((gintptr) _tmp366_), (ValaCCodeExpression*) _tmp368_);
-                                                                       _vala_ccode_node_unref0 (_tmp368_);
+                                                                       ValaHashMap* _tmp384_ = NULL;
+                                                                       gint _tmp385_ = 0;
+                                                                       gint _tmp386_ = 0;
+                                                                       ValaCCodeConstant* _tmp387_ = NULL;
+                                                                       ValaCCodeConstant* _tmp388_ = NULL;
+                                                                       _tmp384_ = in_arg_map;
+                                                                       _tmp385_ = type_param_index;
+                                                                       _tmp386_ = vala_ccode_base_module_get_param_pos (self, ((-1) + (0.1 * _tmp385_)) + 0.03, FALSE);
+                                                                       _tmp387_ = vala_ccode_constant_new ("NULL");
+                                                                       _tmp388_ = _tmp387_;
+                                                                       vala_map_set ((ValaMap*) _tmp384_, (gpointer) ((gintptr) _tmp386_), (ValaCCodeExpression*) _tmp388_);
+                                                                       _vala_ccode_node_unref0 (_tmp388_);
                                                                }
-                                                               _tmp369_ = type_param_index;
-                                                               type_param_index = _tmp369_ + 1;
+                                                               _tmp389_ = type_param_index;
+                                                               type_param_index = _tmp389_ + 1;
                                                                _vala_code_node_unref0 (type_arg);
                                                        }
                                                        _vala_iterable_unref0 (_type_arg_list);
@@ -27273,322 +27594,322 @@ static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCo
                                }
                                ellipsis = FALSE;
                                i = 1;
-                               _tmp370_ = params;
-                               _tmp371_ = vala_iterable_iterator ((ValaIterable*) _tmp370_);
-                               params_it = _tmp371_;
+                               _tmp390_ = params;
+                               _tmp391_ = vala_iterable_iterator ((ValaIterable*) _tmp390_);
+                               params_it = _tmp391_;
                                {
                                        ValaList* _arg_list = NULL;
-                                       ValaObjectCreationExpression* _tmp372_ = NULL;
-                                       ValaList* _tmp373_ = NULL;
+                                       ValaObjectCreationExpression* _tmp392_ = NULL;
+                                       ValaList* _tmp393_ = NULL;
                                        gint _arg_size = 0;
-                                       ValaList* _tmp374_ = NULL;
-                                       gint _tmp375_ = 0;
-                                       gint _tmp376_ = 0;
+                                       ValaList* _tmp394_ = NULL;
+                                       gint _tmp395_ = 0;
+                                       gint _tmp396_ = 0;
                                        gint _arg_index = 0;
-                                       _tmp372_ = expr;
-                                       _tmp373_ = vala_object_creation_expression_get_argument_list (_tmp372_);
-                                       _arg_list = _tmp373_;
-                                       _tmp374_ = _arg_list;
-                                       _tmp375_ = vala_collection_get_size ((ValaCollection*) _tmp374_);
-                                       _tmp376_ = _tmp375_;
-                                       _arg_size = _tmp376_;
+                                       _tmp392_ = expr;
+                                       _tmp393_ = vala_object_creation_expression_get_argument_list (_tmp392_);
+                                       _arg_list = _tmp393_;
+                                       _tmp394_ = _arg_list;
+                                       _tmp395_ = vala_collection_get_size ((ValaCollection*) _tmp394_);
+                                       _tmp396_ = _tmp395_;
+                                       _arg_size = _tmp396_;
                                        _arg_index = -1;
                                        while (TRUE) {
-                                               gint _tmp377_ = 0;
-                                               gint _tmp378_ = 0;
-                                               gint _tmp379_ = 0;
+                                               gint _tmp397_ = 0;
+                                               gint _tmp398_ = 0;
+                                               gint _tmp399_ = 0;
                                                ValaExpression* arg = NULL;
-                                               ValaList* _tmp380_ = NULL;
-                                               gint _tmp381_ = 0;
-                                               gpointer _tmp382_ = NULL;
+                                               ValaList* _tmp400_ = NULL;
+                                               gint _tmp401_ = 0;
+                                               gpointer _tmp402_ = NULL;
                                                ValaCCodeExpression* cexpr = NULL;
-                                               ValaExpression* _tmp383_ = NULL;
-                                               ValaCCodeExpression* _tmp384_ = NULL;
+                                               ValaExpression* _tmp403_ = NULL;
+                                               ValaCCodeExpression* _tmp404_ = NULL;
                                                ValaHashMap* carg_map = NULL;
-                                               ValaHashMap* _tmp385_ = NULL;
-                                               ValaHashMap* _tmp386_ = NULL;
+                                               ValaHashMap* _tmp405_ = NULL;
+                                               ValaHashMap* _tmp406_ = NULL;
                                                ValaParameter* param = NULL;
-                                               ValaIterator* _tmp387_ = NULL;
-                                               gboolean _tmp388_ = FALSE;
-                                               ValaHashMap* _tmp504_ = NULL;
-                                               gint _tmp505_ = 0;
-                                               ValaCCodeExpression* _tmp506_ = NULL;
-                                               gint _tmp507_ = 0;
-                                               _tmp377_ = _arg_index;
-                                               _arg_index = _tmp377_ + 1;
-                                               _tmp378_ = _arg_index;
-                                               _tmp379_ = _arg_size;
-                                               if (!(_tmp378_ < _tmp379_)) {
+                                               ValaIterator* _tmp407_ = NULL;
+                                               gboolean _tmp408_ = FALSE;
+                                               ValaHashMap* _tmp524_ = NULL;
+                                               gint _tmp525_ = 0;
+                                               ValaCCodeExpression* _tmp526_ = NULL;
+                                               gint _tmp527_ = 0;
+                                               _tmp397_ = _arg_index;
+                                               _arg_index = _tmp397_ + 1;
+                                               _tmp398_ = _arg_index;
+                                               _tmp399_ = _arg_size;
+                                               if (!(_tmp398_ < _tmp399_)) {
                                                        break;
                                                }
-                                               _tmp380_ = _arg_list;
-                                               _tmp381_ = _arg_index;
-                                               _tmp382_ = vala_list_get (_tmp380_, _tmp381_);
-                                               arg = (ValaExpression*) _tmp382_;
-                                               _tmp383_ = arg;
-                                               _tmp384_ = vala_ccode_base_module_get_cvalue (self, _tmp383_);
-                                               cexpr = _tmp384_;
-                                               _tmp385_ = in_arg_map;
-                                               _tmp386_ = _vala_map_ref0 (_tmp385_);
-                                               carg_map = _tmp386_;
+                                               _tmp400_ = _arg_list;
+                                               _tmp401_ = _arg_index;
+                                               _tmp402_ = vala_list_get (_tmp400_, _tmp401_);
+                                               arg = (ValaExpression*) _tmp402_;
+                                               _tmp403_ = arg;
+                                               _tmp404_ = vala_ccode_base_module_get_cvalue (self, _tmp403_);
+                                               cexpr = _tmp404_;
+                                               _tmp405_ = in_arg_map;
+                                               _tmp406_ = _vala_map_ref0 (_tmp405_);
+                                               carg_map = _tmp406_;
                                                param = NULL;
-                                               _tmp387_ = params_it;
-                                               _tmp388_ = vala_iterator_next (_tmp387_);
-                                               if (_tmp388_) {
-                                                       ValaIterator* _tmp389_ = NULL;
-                                                       gpointer _tmp390_ = NULL;
-                                                       ValaParameter* _tmp391_ = NULL;
-                                                       gboolean _tmp392_ = FALSE;
-                                                       gboolean _tmp393_ = FALSE;
-                                                       gboolean _tmp394_ = FALSE;
-                                                       ValaParameter* _tmp494_ = NULL;
-                                                       gdouble _tmp495_ = 0.0;
-                                                       gboolean _tmp496_ = FALSE;
-                                                       gint _tmp497_ = 0;
-                                                       _tmp389_ = params_it;
-                                                       _tmp390_ = vala_iterator_get (_tmp389_);
+                                               _tmp407_ = params_it;
+                                               _tmp408_ = vala_iterator_next (_tmp407_);
+                                               if (_tmp408_) {
+                                                       ValaIterator* _tmp409_ = NULL;
+                                                       gpointer _tmp410_ = NULL;
+                                                       ValaParameter* _tmp411_ = NULL;
+                                                       gboolean _tmp412_ = FALSE;
+                                                       gboolean _tmp413_ = FALSE;
+                                                       gboolean _tmp414_ = FALSE;
+                                                       ValaParameter* _tmp514_ = NULL;
+                                                       gdouble _tmp515_ = 0.0;
+                                                       gboolean _tmp516_ = FALSE;
+                                                       gint _tmp517_ = 0;
+                                                       _tmp409_ = params_it;
+                                                       _tmp410_ = vala_iterator_get (_tmp409_);
                                                        _vala_code_node_unref0 (param);
-                                                       param = (ValaParameter*) _tmp390_;
-                                                       _tmp391_ = param;
-                                                       _tmp392_ = vala_parameter_get_ellipsis (_tmp391_);
-                                                       _tmp393_ = _tmp392_;
-                                                       ellipsis = _tmp393_;
-                                                       _tmp394_ = ellipsis;
-                                                       if (!_tmp394_) {
-                                                               ValaParameter* _tmp395_ = NULL;
-                                                               ValaParameterDirection _tmp396_ = 0;
-                                                               ValaParameterDirection _tmp397_ = 0;
-                                                               gboolean _tmp400_ = FALSE;
-                                                               ValaClass* _tmp401_ = NULL;
-                                                               ValaTypeSymbol* _tmp402_ = NULL;
-                                                               gboolean _tmp424_ = FALSE;
-                                                               ValaParameter* _tmp425_ = NULL;
-                                                               gboolean _tmp426_ = FALSE;
-                                                               ValaParameter* _tmp478_ = NULL;
-                                                               ValaExpression* _tmp479_ = NULL;
-                                                               ValaCCodeExpression* _tmp480_ = NULL;
-                                                               ValaCCodeExpression* _tmp481_ = NULL;
-                                                               ValaParameter* _tmp482_ = NULL;
-                                                               gchar* _tmp483_ = NULL;
-                                                               gchar* _tmp484_ = NULL;
-                                                               gboolean _tmp485_ = FALSE;
-                                                               _tmp395_ = param;
-                                                               _tmp396_ = vala_parameter_get_direction (_tmp395_);
-                                                               _tmp397_ = _tmp396_;
-                                                               if (_tmp397_ == VALA_PARAMETER_DIRECTION_OUT) {
-                                                                       ValaHashMap* _tmp398_ = NULL;
-                                                                       ValaHashMap* _tmp399_ = NULL;
-                                                                       _tmp398_ = out_arg_map;
-                                                                       _tmp399_ = _vala_map_ref0 (_tmp398_);
+                                                       param = (ValaParameter*) _tmp410_;
+                                                       _tmp411_ = param;
+                                                       _tmp412_ = vala_parameter_get_ellipsis (_tmp411_);
+                                                       _tmp413_ = _tmp412_;
+                                                       ellipsis = _tmp413_;
+                                                       _tmp414_ = ellipsis;
+                                                       if (!_tmp414_) {
+                                                               ValaParameter* _tmp415_ = NULL;
+                                                               ValaParameterDirection _tmp416_ = 0;
+                                                               ValaParameterDirection _tmp417_ = 0;
+                                                               gboolean _tmp420_ = FALSE;
+                                                               ValaClass* _tmp421_ = NULL;
+                                                               ValaTypeSymbol* _tmp422_ = NULL;
+                                                               gboolean _tmp444_ = FALSE;
+                                                               ValaParameter* _tmp445_ = NULL;
+                                                               gboolean _tmp446_ = FALSE;
+                                                               ValaParameter* _tmp498_ = NULL;
+                                                               ValaExpression* _tmp499_ = NULL;
+                                                               ValaCCodeExpression* _tmp500_ = NULL;
+                                                               ValaCCodeExpression* _tmp501_ = NULL;
+                                                               ValaParameter* _tmp502_ = NULL;
+                                                               gchar* _tmp503_ = NULL;
+                                                               gchar* _tmp504_ = NULL;
+                                                               gboolean _tmp505_ = FALSE;
+                                                               _tmp415_ = param;
+                                                               _tmp416_ = vala_parameter_get_direction (_tmp415_);
+                                                               _tmp417_ = _tmp416_;
+                                                               if (_tmp417_ == VALA_PARAMETER_DIRECTION_OUT) {
+                                                                       ValaHashMap* _tmp418_ = NULL;
+                                                                       ValaHashMap* _tmp419_ = NULL;
+                                                                       _tmp418_ = out_arg_map;
+                                                                       _tmp419_ = _vala_map_ref0 (_tmp418_);
                                                                        _vala_map_unref0 (carg_map);
-                                                                       carg_map = _tmp399_;
+                                                                       carg_map = _tmp419_;
                                                                }
-                                                               _tmp401_ = cl;
-                                                               _tmp402_ = self->garray_type;
-                                                               if (G_TYPE_CHECK_INSTANCE_CAST (_tmp401_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol) == _tmp402_) {
-                                                                       ValaParameter* _tmp403_ = NULL;
-                                                                       const gchar* _tmp404_ = NULL;
-                                                                       const gchar* _tmp405_ = NULL;
-                                                                       _tmp403_ = param;
-                                                                       _tmp404_ = vala_symbol_get_name ((ValaSymbol*) _tmp403_);
-                                                                       _tmp405_ = _tmp404_;
-                                                                       _tmp400_ = g_strcmp0 (_tmp405_, "element_size") == 0;
+                                                               _tmp421_ = cl;
+                                                               _tmp422_ = self->garray_type;
+                                                               if (G_TYPE_CHECK_INSTANCE_CAST (_tmp421_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol) == _tmp422_) {
+                                                                       ValaParameter* _tmp423_ = NULL;
+                                                                       const gchar* _tmp424_ = NULL;
+                                                                       const gchar* _tmp425_ = NULL;
+                                                                       _tmp423_ = param;
+                                                                       _tmp424_ = vala_symbol_get_name ((ValaSymbol*) _tmp423_);
+                                                                       _tmp425_ = _tmp424_;
+                                                                       _tmp420_ = g_strcmp0 (_tmp425_, "element_size") == 0;
                                                                } else {
-                                                                       _tmp400_ = FALSE;
+                                                                       _tmp420_ = FALSE;
                                                                }
-                                                               if (_tmp400_) {
+                                                               if (_tmp420_) {
                                                                        ValaCCodeFunctionCall* csizeof = NULL;
-                                                                       ValaCCodeIdentifier* _tmp406_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp407_ = NULL;
-                                                                       ValaCCodeFunctionCall* _tmp408_ = NULL;
-                                                                       ValaCCodeFunctionCall* _tmp409_ = NULL;
-                                                                       ValaCCodeFunctionCall* _tmp410_ = NULL;
-                                                                       ValaObjectCreationExpression* _tmp411_ = NULL;
-                                                                       ValaDataType* _tmp412_ = NULL;
-                                                                       ValaDataType* _tmp413_ = NULL;
-                                                                       ValaList* _tmp414_ = NULL;
-                                                                       ValaList* _tmp415_ = NULL;
-                                                                       gpointer _tmp416_ = NULL;
-                                                                       ValaDataType* _tmp417_ = NULL;
-                                                                       gchar* _tmp418_ = NULL;
-                                                                       gchar* _tmp419_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp420_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp421_ = NULL;
-                                                                       ValaCCodeFunctionCall* _tmp422_ = NULL;
-                                                                       ValaCCodeExpression* _tmp423_ = NULL;
-                                                                       _tmp406_ = vala_ccode_identifier_new ("sizeof");
-                                                                       _tmp407_ = _tmp406_;
-                                                                       _tmp408_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp407_);
-                                                                       _tmp409_ = _tmp408_;
-                                                                       _vala_ccode_node_unref0 (_tmp407_);
-                                                                       csizeof = _tmp409_;
-                                                                       _tmp410_ = csizeof;
-                                                                       _tmp411_ = expr;
-                                                                       _tmp412_ = vala_object_creation_expression_get_type_reference (_tmp411_);
-                                                                       _tmp413_ = _tmp412_;
-                                                                       _tmp414_ = vala_data_type_get_type_arguments (_tmp413_);
-                                                                       _tmp415_ = _tmp414_;
-                                                                       _tmp416_ = vala_list_get (_tmp415_, 0);
-                                                                       _tmp417_ = (ValaDataType*) _tmp416_;
-                                                                       _tmp418_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp417_);
-                                                                       _tmp419_ = _tmp418_;
-                                                                       _tmp420_ = vala_ccode_identifier_new (_tmp419_);
-                                                                       _tmp421_ = _tmp420_;
-                                                                       vala_ccode_function_call_add_argument (_tmp410_, (ValaCCodeExpression*) _tmp421_);
-                                                                       _vala_ccode_node_unref0 (_tmp421_);
-                                                                       _g_free0 (_tmp419_);
-                                                                       _vala_code_node_unref0 (_tmp417_);
-                                                                       _vala_iterable_unref0 (_tmp415_);
-                                                                       _tmp422_ = csizeof;
-                                                                       _tmp423_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp422_);
+                                                                       ValaCCodeIdentifier* _tmp426_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp427_ = NULL;
+                                                                       ValaCCodeFunctionCall* _tmp428_ = NULL;
+                                                                       ValaCCodeFunctionCall* _tmp429_ = NULL;
+                                                                       ValaCCodeFunctionCall* _tmp430_ = NULL;
+                                                                       ValaObjectCreationExpression* _tmp431_ = NULL;
+                                                                       ValaDataType* _tmp432_ = NULL;
+                                                                       ValaDataType* _tmp433_ = NULL;
+                                                                       ValaList* _tmp434_ = NULL;
+                                                                       ValaList* _tmp435_ = NULL;
+                                                                       gpointer _tmp436_ = NULL;
+                                                                       ValaDataType* _tmp437_ = NULL;
+                                                                       gchar* _tmp438_ = NULL;
+                                                                       gchar* _tmp439_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp440_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp441_ = NULL;
+                                                                       ValaCCodeFunctionCall* _tmp442_ = NULL;
+                                                                       ValaCCodeExpression* _tmp443_ = NULL;
+                                                                       _tmp426_ = vala_ccode_identifier_new ("sizeof");
+                                                                       _tmp427_ = _tmp426_;
+                                                                       _tmp428_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp427_);
+                                                                       _tmp429_ = _tmp428_;
+                                                                       _vala_ccode_node_unref0 (_tmp427_);
+                                                                       csizeof = _tmp429_;
+                                                                       _tmp430_ = csizeof;
+                                                                       _tmp431_ = expr;
+                                                                       _tmp432_ = vala_object_creation_expression_get_type_reference (_tmp431_);
+                                                                       _tmp433_ = _tmp432_;
+                                                                       _tmp434_ = vala_data_type_get_type_arguments (_tmp433_);
+                                                                       _tmp435_ = _tmp434_;
+                                                                       _tmp436_ = vala_list_get (_tmp435_, 0);
+                                                                       _tmp437_ = (ValaDataType*) _tmp436_;
+                                                                       _tmp438_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp437_);
+                                                                       _tmp439_ = _tmp438_;
+                                                                       _tmp440_ = vala_ccode_identifier_new (_tmp439_);
+                                                                       _tmp441_ = _tmp440_;
+                                                                       vala_ccode_function_call_add_argument (_tmp430_, (ValaCCodeExpression*) _tmp441_);
+                                                                       _vala_ccode_node_unref0 (_tmp441_);
+                                                                       _g_free0 (_tmp439_);
+                                                                       _vala_code_node_unref0 (_tmp437_);
+                                                                       _vala_iterable_unref0 (_tmp435_);
+                                                                       _tmp442_ = csizeof;
+                                                                       _tmp443_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp442_);
                                                                        _vala_ccode_node_unref0 (cexpr);
-                                                                       cexpr = _tmp423_;
+                                                                       cexpr = _tmp443_;
                                                                        _vala_ccode_node_unref0 (csizeof);
                                                                }
-                                                               _tmp425_ = param;
-                                                               _tmp426_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp425_);
-                                                               if (_tmp426_) {
-                                                                       ValaParameter* _tmp427_ = NULL;
-                                                                       ValaDataType* _tmp428_ = NULL;
-                                                                       ValaDataType* _tmp429_ = NULL;
-                                                                       _tmp427_ = param;
-                                                                       _tmp428_ = vala_variable_get_variable_type ((ValaVariable*) _tmp427_);
-                                                                       _tmp429_ = _tmp428_;
-                                                                       _tmp424_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp429_, VALA_TYPE_ARRAY_TYPE);
+                                                               _tmp445_ = param;
+                                                               _tmp446_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp445_);
+                                                               if (_tmp446_) {
+                                                                       ValaParameter* _tmp447_ = NULL;
+                                                                       ValaDataType* _tmp448_ = NULL;
+                                                                       ValaDataType* _tmp449_ = NULL;
+                                                                       _tmp447_ = param;
+                                                                       _tmp448_ = vala_variable_get_variable_type ((ValaVariable*) _tmp447_);
+                                                                       _tmp449_ = _tmp448_;
+                                                                       _tmp444_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp449_, VALA_TYPE_ARRAY_TYPE);
                                                                } else {
-                                                                       _tmp424_ = FALSE;
+                                                                       _tmp444_ = FALSE;
                                                                }
-                                                               if (_tmp424_) {
+                                                               if (_tmp444_) {
                                                                        ValaArrayType* array_type = NULL;
-                                                                       ValaParameter* _tmp430_ = NULL;
-                                                                       ValaDataType* _tmp431_ = NULL;
-                                                                       ValaDataType* _tmp432_ = NULL;
-                                                                       ValaArrayType* _tmp433_ = NULL;
-                                                                       _tmp430_ = param;
-                                                                       _tmp431_ = vala_variable_get_variable_type ((ValaVariable*) _tmp430_);
-                                                                       _tmp432_ = _tmp431_;
-                                                                       _tmp433_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp432_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                                                       array_type = _tmp433_;
+                                                                       ValaParameter* _tmp450_ = NULL;
+                                                                       ValaDataType* _tmp451_ = NULL;
+                                                                       ValaDataType* _tmp452_ = NULL;
+                                                                       ValaArrayType* _tmp453_ = NULL;
+                                                                       _tmp450_ = param;
+                                                                       _tmp451_ = vala_variable_get_variable_type ((ValaVariable*) _tmp450_);
+                                                                       _tmp452_ = _tmp451_;
+                                                                       _tmp453_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp452_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                                                       array_type = _tmp453_;
                                                                        {
                                                                                gint dim = 0;
                                                                                dim = 1;
                                                                                {
-                                                                                       gboolean _tmp434_ = FALSE;
-                                                                                       _tmp434_ = TRUE;
+                                                                                       gboolean _tmp454_ = FALSE;
+                                                                                       _tmp454_ = TRUE;
                                                                                        while (TRUE) {
-                                                                                               gint _tmp436_ = 0;
-                                                                                               ValaArrayType* _tmp437_ = NULL;
-                                                                                               gint _tmp438_ = 0;
-                                                                                               gint _tmp439_ = 0;
-                                                                                               ValaHashMap* _tmp440_ = NULL;
-                                                                                               ValaParameter* _tmp441_ = NULL;
-                                                                                               gdouble _tmp442_ = 0.0;
-                                                                                               gint _tmp443_ = 0;
-                                                                                               gint _tmp444_ = 0;
-                                                                                               ValaExpression* _tmp445_ = NULL;
-                                                                                               gint _tmp446_ = 0;
-                                                                                               ValaCCodeExpression* _tmp447_ = NULL;
-                                                                                               ValaCCodeExpression* _tmp448_ = NULL;
-                                                                                               if (!_tmp434_) {
-                                                                                                       gint _tmp435_ = 0;
-                                                                                                       _tmp435_ = dim;
-                                                                                                       dim = _tmp435_ + 1;
+                                                                                               gint _tmp456_ = 0;
+                                                                                               ValaArrayType* _tmp457_ = NULL;
+                                                                                               gint _tmp458_ = 0;
+                                                                                               gint _tmp459_ = 0;
+                                                                                               ValaHashMap* _tmp460_ = NULL;
+                                                                                               ValaParameter* _tmp461_ = NULL;
+                                                                                               gdouble _tmp462_ = 0.0;
+                                                                                               gint _tmp463_ = 0;
+                                                                                               gint _tmp464_ = 0;
+                                                                                               ValaExpression* _tmp465_ = NULL;
+                                                                                               gint _tmp466_ = 0;
+                                                                                               ValaCCodeExpression* _tmp467_ = NULL;
+                                                                                               ValaCCodeExpression* _tmp468_ = NULL;
+                                                                                               if (!_tmp454_) {
+                                                                                                       gint _tmp455_ = 0;
+                                                                                                       _tmp455_ = dim;
+                                                                                                       dim = _tmp455_ + 1;
                                                                                                }
-                                                                                               _tmp434_ = FALSE;
-                                                                                               _tmp436_ = dim;
-                                                                                               _tmp437_ = array_type;
-                                                                                               _tmp438_ = vala_array_type_get_rank (_tmp437_);
-                                                                                               _tmp439_ = _tmp438_;
-                                                                                               if (!(_tmp436_ <= _tmp439_)) {
+                                                                                               _tmp454_ = FALSE;
+                                                                                               _tmp456_ = dim;
+                                                                                               _tmp457_ = array_type;
+                                                                                               _tmp458_ = vala_array_type_get_rank (_tmp457_);
+                                                                                               _tmp459_ = _tmp458_;
+                                                                                               if (!(_tmp456_ <= _tmp459_)) {
                                                                                                        break;
                                                                                                }
-                                                                                               _tmp440_ = carg_map;
-                                                                                               _tmp441_ = param;
-                                                                                               _tmp442_ = vala_ccode_base_module_get_ccode_array_length_pos ((ValaCodeNode*) _tmp441_);
-                                                                                               _tmp443_ = dim;
-                                                                                               _tmp444_ = vala_ccode_base_module_get_param_pos (self, _tmp442_ + (0.01 * _tmp443_), FALSE);
-                                                                                               _tmp445_ = arg;
-                                                                                               _tmp446_ = dim;
-                                                                                               _tmp447_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp445_, _tmp446_);
-                                                                                               _tmp448_ = _tmp447_;
-                                                                                               vala_map_set ((ValaMap*) _tmp440_, (gpointer) ((gintptr) _tmp444_), _tmp448_);
-                                                                                               _vala_ccode_node_unref0 (_tmp448_);
+                                                                                               _tmp460_ = carg_map;
+                                                                                               _tmp461_ = param;
+                                                                                               _tmp462_ = vala_ccode_base_module_get_ccode_array_length_pos ((ValaCodeNode*) _tmp461_);
+                                                                                               _tmp463_ = dim;
+                                                                                               _tmp464_ = vala_ccode_base_module_get_param_pos (self, _tmp462_ + (0.01 * _tmp463_), FALSE);
+                                                                                               _tmp465_ = arg;
+                                                                                               _tmp466_ = dim;
+                                                                                               _tmp467_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp465_, _tmp466_);
+                                                                                               _tmp468_ = _tmp467_;
+                                                                                               vala_map_set ((ValaMap*) _tmp460_, (gpointer) ((gintptr) _tmp464_), _tmp468_);
+                                                                                               _vala_ccode_node_unref0 (_tmp468_);
                                                                                        }
                                                                                }
                                                                        }
                                                                        _vala_code_node_unref0 (array_type);
                                                                } else {
-                                                                       ValaParameter* _tmp449_ = NULL;
-                                                                       ValaDataType* _tmp450_ = NULL;
-                                                                       ValaDataType* _tmp451_ = NULL;
-                                                                       _tmp449_ = param;
-                                                                       _tmp450_ = vala_variable_get_variable_type ((ValaVariable*) _tmp449_);
-                                                                       _tmp451_ = _tmp450_;
-                                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp451_, VALA_TYPE_DELEGATE_TYPE)) {
+                                                                       ValaParameter* _tmp469_ = NULL;
+                                                                       ValaDataType* _tmp470_ = NULL;
+                                                                       ValaDataType* _tmp471_ = NULL;
+                                                                       _tmp469_ = param;
+                                                                       _tmp470_ = vala_variable_get_variable_type ((ValaVariable*) _tmp469_);
+                                                                       _tmp471_ = _tmp470_;
+                                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp471_, VALA_TYPE_DELEGATE_TYPE)) {
                                                                                ValaDelegateType* deleg_type = NULL;
-                                                                               ValaParameter* _tmp452_ = NULL;
-                                                                               ValaDataType* _tmp453_ = NULL;
-                                                                               ValaDataType* _tmp454_ = NULL;
-                                                                               ValaDelegateType* _tmp455_ = NULL;
+                                                                               ValaParameter* _tmp472_ = NULL;
+                                                                               ValaDataType* _tmp473_ = NULL;
+                                                                               ValaDataType* _tmp474_ = NULL;
+                                                                               ValaDelegateType* _tmp475_ = NULL;
                                                                                ValaDelegate* d = NULL;
-                                                                               ValaDelegateType* _tmp456_ = NULL;
-                                                                               ValaDelegate* _tmp457_ = NULL;
-                                                                               ValaDelegate* _tmp458_ = NULL;
-                                                                               ValaDelegate* _tmp459_ = NULL;
-                                                                               ValaDelegate* _tmp460_ = NULL;
-                                                                               gboolean _tmp461_ = FALSE;
-                                                                               gboolean _tmp462_ = FALSE;
-                                                                               _tmp452_ = param;
-                                                                               _tmp453_ = vala_variable_get_variable_type ((ValaVariable*) _tmp452_);
-                                                                               _tmp454_ = _tmp453_;
-                                                                               _tmp455_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp454_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                                                                               deleg_type = _tmp455_;
-                                                                               _tmp456_ = deleg_type;
-                                                                               _tmp457_ = vala_delegate_type_get_delegate_symbol (_tmp456_);
-                                                                               _tmp458_ = _tmp457_;
-                                                                               _tmp459_ = _vala_code_node_ref0 (_tmp458_);
-                                                                               d = _tmp459_;
-                                                                               _tmp460_ = d;
-                                                                               _tmp461_ = vala_delegate_get_has_target (_tmp460_);
-                                                                               _tmp462_ = _tmp461_;
-                                                                               if (_tmp462_) {
+                                                                               ValaDelegateType* _tmp476_ = NULL;
+                                                                               ValaDelegate* _tmp477_ = NULL;
+                                                                               ValaDelegate* _tmp478_ = NULL;
+                                                                               ValaDelegate* _tmp479_ = NULL;
+                                                                               ValaDelegate* _tmp480_ = NULL;
+                                                                               gboolean _tmp481_ = FALSE;
+                                                                               gboolean _tmp482_ = FALSE;
+                                                                               _tmp472_ = param;
+                                                                               _tmp473_ = vala_variable_get_variable_type ((ValaVariable*) _tmp472_);
+                                                                               _tmp474_ = _tmp473_;
+                                                                               _tmp475_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp474_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                                                                               deleg_type = _tmp475_;
+                                                                               _tmp476_ = deleg_type;
+                                                                               _tmp477_ = vala_delegate_type_get_delegate_symbol (_tmp476_);
+                                                                               _tmp478_ = _tmp477_;
+                                                                               _tmp479_ = _vala_code_node_ref0 (_tmp478_);
+                                                                               d = _tmp479_;
+                                                                               _tmp480_ = d;
+                                                                               _tmp481_ = vala_delegate_get_has_target (_tmp480_);
+                                                                               _tmp482_ = _tmp481_;
+                                                                               if (_tmp482_) {
                                                                                        ValaCCodeExpression* delegate_target_destroy_notify = NULL;
                                                                                        ValaCCodeExpression* delegate_target = NULL;
-                                                                                       ValaExpression* _tmp463_ = NULL;
-                                                                                       ValaCCodeExpression* _tmp464_ = NULL;
-                                                                                       ValaCCodeExpression* _tmp465_ = NULL;
-                                                                                       ValaHashMap* _tmp466_ = NULL;
-                                                                                       ValaParameter* _tmp467_ = NULL;
-                                                                                       gdouble _tmp468_ = 0.0;
-                                                                                       gint _tmp469_ = 0;
-                                                                                       ValaCCodeExpression* _tmp470_ = NULL;
-                                                                                       ValaDelegateType* _tmp471_ = NULL;
-                                                                                       gboolean _tmp472_ = FALSE;
-                                                                                       _tmp463_ = arg;
-                                                                                       _tmp465_ = vala_ccode_base_module_get_delegate_target_cexpression (self, _tmp463_, &_tmp464_);
+                                                                                       ValaExpression* _tmp483_ = NULL;
+                                                                                       ValaCCodeExpression* _tmp484_ = NULL;
+                                                                                       ValaCCodeExpression* _tmp485_ = NULL;
+                                                                                       ValaHashMap* _tmp486_ = NULL;
+                                                                                       ValaParameter* _tmp487_ = NULL;
+                                                                                       gdouble _tmp488_ = 0.0;
+                                                                                       gint _tmp489_ = 0;
+                                                                                       ValaCCodeExpression* _tmp490_ = NULL;
+                                                                                       ValaDelegateType* _tmp491_ = NULL;
+                                                                                       gboolean _tmp492_ = FALSE;
+                                                                                       _tmp483_ = arg;
+                                                                                       _tmp485_ = vala_ccode_base_module_get_delegate_target_cexpression (self, _tmp483_, &_tmp484_);
                                                                                        _vala_ccode_node_unref0 (delegate_target_destroy_notify);
-                                                                                       delegate_target_destroy_notify = _tmp464_;
-                                                                                       delegate_target = _tmp465_;
-                                                                                       _tmp466_ = carg_map;
-                                                                                       _tmp467_ = param;
-                                                                                       _tmp468_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp467_);
-                                                                                       _tmp469_ = vala_ccode_base_module_get_param_pos (self, _tmp468_, FALSE);
-                                                                                       _tmp470_ = delegate_target;
-                                                                                       vala_map_set ((ValaMap*) _tmp466_, (gpointer) ((gintptr) _tmp469_), _tmp470_);
-                                                                                       _tmp471_ = deleg_type;
-                                                                                       _tmp472_ = vala_data_type_is_disposable ((ValaDataType*) _tmp471_);
-                                                                                       if (_tmp472_) {
-                                                                                               ValaHashMap* _tmp473_ = NULL;
-                                                                                               ValaParameter* _tmp474_ = NULL;
-                                                                                               gdouble _tmp475_ = 0.0;
-                                                                                               gint _tmp476_ = 0;
-                                                                                               ValaCCodeExpression* _tmp477_ = NULL;
-                                                                                               _tmp473_ = carg_map;
-                                                                                               _tmp474_ = param;
-                                                                                               _tmp475_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp474_);
-                                                                                               _tmp476_ = vala_ccode_base_module_get_param_pos (self, _tmp475_ + 0.01, FALSE);
-                                                                                               _tmp477_ = delegate_target_destroy_notify;
-                                                                                               vala_map_set ((ValaMap*) _tmp473_, (gpointer) ((gintptr) _tmp476_), _tmp477_);
+                                                                                       delegate_target_destroy_notify = _tmp484_;
+                                                                                       delegate_target = _tmp485_;
+                                                                                       _tmp486_ = carg_map;
+                                                                                       _tmp487_ = param;
+                                                                                       _tmp488_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp487_);
+                                                                                       _tmp489_ = vala_ccode_base_module_get_param_pos (self, _tmp488_, FALSE);
+                                                                                       _tmp490_ = delegate_target;
+                                                                                       vala_map_set ((ValaMap*) _tmp486_, (gpointer) ((gintptr) _tmp489_), _tmp490_);
+                                                                                       _tmp491_ = deleg_type;
+                                                                                       _tmp492_ = vala_data_type_is_disposable ((ValaDataType*) _tmp491_);
+                                                                                       if (_tmp492_) {
+                                                                                               ValaHashMap* _tmp493_ = NULL;
+                                                                                               ValaParameter* _tmp494_ = NULL;
+                                                                                               gdouble _tmp495_ = 0.0;
+                                                                                               gint _tmp496_ = 0;
+                                                                                               ValaCCodeExpression* _tmp497_ = NULL;
+                                                                                               _tmp493_ = carg_map;
+                                                                                               _tmp494_ = param;
+                                                                                               _tmp495_ = vala_ccode_base_module_get_ccode_delegate_target_pos ((ValaCodeNode*) _tmp494_);
+                                                                                               _tmp496_ = vala_ccode_base_module_get_param_pos (self, _tmp495_ + 0.01, FALSE);
+                                                                                               _tmp497_ = delegate_target_destroy_notify;
+                                                                                               vala_map_set ((ValaMap*) _tmp493_, (gpointer) ((gintptr) _tmp496_), _tmp497_);
                                                                                        }
                                                                                        _vala_ccode_node_unref0 (delegate_target);
                                                                                        _vala_ccode_node_unref0 (delegate_target_destroy_notify);
@@ -27597,70 +27918,70 @@ static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCo
                                                                                _vala_code_node_unref0 (deleg_type);
                                                                        }
                                                                }
-                                                               _tmp478_ = param;
-                                                               _tmp479_ = arg;
-                                                               _tmp480_ = cexpr;
-                                                               _tmp481_ = vala_ccode_base_module_handle_struct_argument (self, _tmp478_, _tmp479_, _tmp480_);
+                                                               _tmp498_ = param;
+                                                               _tmp499_ = arg;
+                                                               _tmp500_ = cexpr;
+                                                               _tmp501_ = vala_ccode_base_module_handle_struct_argument (self, _tmp498_, _tmp499_, _tmp500_);
                                                                _vala_ccode_node_unref0 (cexpr);
-                                                               cexpr = _tmp481_;
-                                                               _tmp482_ = param;
-                                                               _tmp483_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp482_);
-                                                               _tmp484_ = _tmp483_;
-                                                               _tmp485_ = _tmp484_ != NULL;
-                                                               _g_free0 (_tmp484_);
-                                                               if (_tmp485_) {
-                                                                       ValaCCodeExpression* _tmp486_ = NULL;
-                                                                       ValaParameter* _tmp487_ = NULL;
-                                                                       gchar* _tmp488_ = NULL;
-                                                                       gchar* _tmp489_ = NULL;
-                                                                       ValaCCodeCastExpression* _tmp490_ = NULL;
-                                                                       _tmp486_ = cexpr;
-                                                                       _tmp487_ = param;
-                                                                       _tmp488_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp487_);
-                                                                       _tmp489_ = _tmp488_;
-                                                                       _tmp490_ = vala_ccode_cast_expression_new (_tmp486_, _tmp489_);
+                                                               cexpr = _tmp501_;
+                                                               _tmp502_ = param;
+                                                               _tmp503_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp502_);
+                                                               _tmp504_ = _tmp503_;
+                                                               _tmp505_ = _tmp504_ != NULL;
+                                                               _g_free0 (_tmp504_);
+                                                               if (_tmp505_) {
+                                                                       ValaCCodeExpression* _tmp506_ = NULL;
+                                                                       ValaParameter* _tmp507_ = NULL;
+                                                                       gchar* _tmp508_ = NULL;
+                                                                       gchar* _tmp509_ = NULL;
+                                                                       ValaCCodeCastExpression* _tmp510_ = NULL;
+                                                                       _tmp506_ = cexpr;
+                                                                       _tmp507_ = param;
+                                                                       _tmp508_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp507_);
+                                                                       _tmp509_ = _tmp508_;
+                                                                       _tmp510_ = vala_ccode_cast_expression_new (_tmp506_, _tmp509_);
                                                                        _vala_ccode_node_unref0 (cexpr);
-                                                                       cexpr = (ValaCCodeExpression*) _tmp490_;
-                                                                       _g_free0 (_tmp489_);
+                                                                       cexpr = (ValaCCodeExpression*) _tmp510_;
+                                                                       _g_free0 (_tmp509_);
                                                                }
                                                        } else {
-                                                               ValaExpression* _tmp491_ = NULL;
-                                                               ValaCCodeExpression* _tmp492_ = NULL;
-                                                               ValaCCodeExpression* _tmp493_ = NULL;
-                                                               _tmp491_ = arg;
-                                                               _tmp492_ = cexpr;
-                                                               _tmp493_ = vala_ccode_base_module_handle_struct_argument (self, NULL, _tmp491_, _tmp492_);
+                                                               ValaExpression* _tmp511_ = NULL;
+                                                               ValaCCodeExpression* _tmp512_ = NULL;
+                                                               ValaCCodeExpression* _tmp513_ = NULL;
+                                                               _tmp511_ = arg;
+                                                               _tmp512_ = cexpr;
+                                                               _tmp513_ = vala_ccode_base_module_handle_struct_argument (self, NULL, _tmp511_, _tmp512_);
                                                                _vala_ccode_node_unref0 (cexpr);
-                                                               cexpr = _tmp493_;
+                                                               cexpr = _tmp513_;
                                                        }
-                                                       _tmp494_ = param;
-                                                       _tmp495_ = vala_ccode_base_module_get_ccode_pos (_tmp494_);
-                                                       _tmp496_ = ellipsis;
-                                                       _tmp497_ = vala_ccode_base_module_get_param_pos (self, _tmp495_, _tmp496_);
-                                                       arg_pos = _tmp497_;
+                                                       _tmp514_ = param;
+                                                       _tmp515_ = vala_ccode_base_module_get_ccode_pos (_tmp514_);
+                                                       _tmp516_ = ellipsis;
+                                                       _tmp517_ = vala_ccode_base_module_get_param_pos (self, _tmp515_, _tmp516_);
+                                                       arg_pos = _tmp517_;
                                                } else {
-                                                       ValaExpression* _tmp498_ = NULL;
-                                                       ValaCCodeExpression* _tmp499_ = NULL;
-                                                       ValaCCodeExpression* _tmp500_ = NULL;
-                                                       gint _tmp501_ = 0;
-                                                       gboolean _tmp502_ = FALSE;
-                                                       gint _tmp503_ = 0;
-                                                       _tmp498_ = arg;
-                                                       _tmp499_ = cexpr;
-                                                       _tmp500_ = vala_ccode_base_module_handle_struct_argument (self, NULL, _tmp498_, _tmp499_);
+                                                       ValaExpression* _tmp518_ = NULL;
+                                                       ValaCCodeExpression* _tmp519_ = NULL;
+                                                       ValaCCodeExpression* _tmp520_ = NULL;
+                                                       gint _tmp521_ = 0;
+                                                       gboolean _tmp522_ = FALSE;
+                                                       gint _tmp523_ = 0;
+                                                       _tmp518_ = arg;
+                                                       _tmp519_ = cexpr;
+                                                       _tmp520_ = vala_ccode_base_module_handle_struct_argument (self, NULL, _tmp518_, _tmp519_);
                                                        _vala_ccode_node_unref0 (cexpr);
-                                                       cexpr = _tmp500_;
-                                                       _tmp501_ = i;
-                                                       _tmp502_ = ellipsis;
-                                                       _tmp503_ = vala_ccode_base_module_get_param_pos (self, (gdouble) _tmp501_, _tmp502_);
-                                                       arg_pos = _tmp503_;
+                                                       cexpr = _tmp520_;
+                                                       _tmp521_ = i;
+                                                       _tmp522_ = ellipsis;
+                                                       _tmp523_ = vala_ccode_base_module_get_param_pos (self, (gdouble) _tmp521_, _tmp522_);
+                                                       arg_pos = _tmp523_;
                                                }
-                                               _tmp504_ = carg_map;
-                                               _tmp505_ = arg_pos;
-                                               _tmp506_ = cexpr;
-                                               vala_map_set ((ValaMap*) _tmp504_, (gpointer) ((gintptr) _tmp505_), _tmp506_);
-                                               _tmp507_ = i;
-                                               i = _tmp507_ + 1;
+                                               _tmp524_ = carg_map;
+                                               _tmp525_ = arg_pos;
+                                               _tmp526_ = cexpr;
+                                               vala_map_set ((ValaMap*) _tmp524_, (gpointer) ((gintptr) _tmp525_), _tmp526_);
+                                               _tmp527_ = i;
+                                               i = _tmp527_ + 1;
                                                _vala_code_node_unref0 (param);
                                                _vala_map_unref0 (carg_map);
                                                _vala_ccode_node_unref0 (cexpr);
@@ -27668,474 +27989,474 @@ static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCo
                                        }
                                        _vala_iterable_unref0 (_arg_list);
                                }
-                               _tmp508_ = params_it;
-                               _tmp509_ = vala_iterator_next (_tmp508_);
-                               if (_tmp509_) {
+                               _tmp528_ = params_it;
+                               _tmp529_ = vala_iterator_next (_tmp528_);
+                               if (_tmp529_) {
                                        ValaParameter* param = NULL;
-                                       ValaIterator* _tmp510_ = NULL;
-                                       gpointer _tmp511_ = NULL;
-                                       gboolean _tmp512_ = FALSE;
-                                       ValaParameter* _tmp513_ = NULL;
-                                       gboolean _tmp514_ = FALSE;
-                                       gboolean _tmp515_ = FALSE;
-                                       _tmp510_ = params_it;
-                                       _tmp511_ = vala_iterator_get (_tmp510_);
-                                       param = (ValaParameter*) _tmp511_;
-                                       _tmp513_ = param;
-                                       _tmp514_ = vala_parameter_get_params_array (_tmp513_);
-                                       _tmp515_ = _tmp514_;
-                                       if (_tmp515_) {
-                                               _tmp512_ = TRUE;
+                                       ValaIterator* _tmp530_ = NULL;
+                                       gpointer _tmp531_ = NULL;
+                                       gboolean _tmp532_ = FALSE;
+                                       ValaParameter* _tmp533_ = NULL;
+                                       gboolean _tmp534_ = FALSE;
+                                       gboolean _tmp535_ = FALSE;
+                                       _tmp530_ = params_it;
+                                       _tmp531_ = vala_iterator_get (_tmp530_);
+                                       param = (ValaParameter*) _tmp531_;
+                                       _tmp533_ = param;
+                                       _tmp534_ = vala_parameter_get_params_array (_tmp533_);
+                                       _tmp535_ = _tmp534_;
+                                       if (_tmp535_) {
+                                               _tmp532_ = TRUE;
                                        } else {
-                                               ValaParameter* _tmp516_ = NULL;
-                                               gboolean _tmp517_ = FALSE;
-                                               gboolean _tmp518_ = FALSE;
-                                               _tmp516_ = param;
-                                               _tmp517_ = vala_parameter_get_ellipsis (_tmp516_);
-                                               _tmp518_ = _tmp517_;
-                                               _tmp512_ = _tmp518_;
+                                               ValaParameter* _tmp536_ = NULL;
+                                               gboolean _tmp537_ = FALSE;
+                                               gboolean _tmp538_ = FALSE;
+                                               _tmp536_ = param;
+                                               _tmp537_ = vala_parameter_get_ellipsis (_tmp536_);
+                                               _tmp538_ = _tmp537_;
+                                               _tmp532_ = _tmp538_;
                                        }
-                                       _vala_assert (_tmp512_, "param.params_array || param.ellipsis");
+                                       _vala_assert (_tmp532_, "param.params_array || param.ellipsis");
                                        ellipsis = TRUE;
                                        _vala_code_node_unref0 (param);
                                }
-                               _tmp519_ = expr;
-                               _tmp520_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp519_);
-                               _tmp521_ = _tmp520_;
-                               if (_tmp521_) {
-                                       ValaHashMap* _tmp522_ = NULL;
-                                       gint _tmp523_ = 0;
-                                       ValaCCodeExpression* _tmp524_ = NULL;
-                                       ValaCCodeExpression* _tmp525_ = NULL;
-                                       ValaCCodeUnaryExpression* _tmp526_ = NULL;
-                                       ValaCCodeUnaryExpression* _tmp527_ = NULL;
+                               _tmp539_ = expr;
+                               _tmp540_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp539_);
+                               _tmp541_ = _tmp540_;
+                               if (_tmp541_) {
+                                       ValaHashMap* _tmp542_ = NULL;
+                                       gint _tmp543_ = 0;
+                                       ValaCCodeExpression* _tmp544_ = NULL;
+                                       ValaCCodeExpression* _tmp545_ = NULL;
+                                       ValaCCodeUnaryExpression* _tmp546_ = NULL;
+                                       ValaCCodeUnaryExpression* _tmp547_ = NULL;
                                        vala_ccode_base_module_set_current_method_inner_error (self, TRUE);
-                                       _tmp522_ = out_arg_map;
-                                       _tmp523_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-1), FALSE);
-                                       _tmp524_ = vala_ccode_base_module_get_variable_cexpression (self, "_inner_error_");
-                                       _tmp525_ = _tmp524_;
-                                       _tmp526_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp525_);
-                                       _tmp527_ = _tmp526_;
-                                       vala_map_set ((ValaMap*) _tmp522_, (gpointer) ((gintptr) _tmp523_), (ValaCCodeExpression*) _tmp527_);
-                                       _vala_ccode_node_unref0 (_tmp527_);
-                                       _vala_ccode_node_unref0 (_tmp525_);
+                                       _tmp542_ = out_arg_map;
+                                       _tmp543_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-1), FALSE);
+                                       _tmp544_ = vala_ccode_base_module_get_variable_cexpression (self, "_inner_error_");
+                                       _tmp545_ = _tmp544_;
+                                       _tmp546_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp545_);
+                                       _tmp547_ = _tmp546_;
+                                       vala_map_set ((ValaMap*) _tmp542_, (gpointer) ((gintptr) _tmp543_), (ValaCCodeExpression*) _tmp547_);
+                                       _vala_ccode_node_unref0 (_tmp547_);
+                                       _vala_ccode_node_unref0 (_tmp545_);
                                }
-                               _tmp528_ = ellipsis;
-                               if (_tmp528_) {
-                                       ValaMethod* _tmp529_ = NULL;
-                                       _tmp529_ = m;
-                                       if (_tmp529_ == NULL) {
-                                               ValaHashMap* _tmp530_ = NULL;
-                                               gint _tmp531_ = 0;
-                                               ValaCCodeConstant* _tmp532_ = NULL;
-                                               ValaCCodeConstant* _tmp533_ = NULL;
-                                               _tmp530_ = in_arg_map;
-                                               _tmp531_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-1), TRUE);
-                                               _tmp532_ = vala_ccode_constant_new ("NULL");
-                                               _tmp533_ = _tmp532_;
-                                               vala_map_set ((ValaMap*) _tmp530_, (gpointer) ((gintptr) _tmp531_), (ValaCCodeExpression*) _tmp533_);
-                                               _vala_ccode_node_unref0 (_tmp533_);
+                               _tmp548_ = ellipsis;
+                               if (_tmp548_) {
+                                       ValaMethod* _tmp549_ = NULL;
+                                       _tmp549_ = m;
+                                       if (_tmp549_ == NULL) {
+                                               ValaHashMap* _tmp550_ = NULL;
+                                               gint _tmp551_ = 0;
+                                               ValaCCodeConstant* _tmp552_ = NULL;
+                                               ValaCCodeConstant* _tmp553_ = NULL;
+                                               _tmp550_ = in_arg_map;
+                                               _tmp551_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-1), TRUE);
+                                               _tmp552_ = vala_ccode_constant_new ("NULL");
+                                               _tmp553_ = _tmp552_;
+                                               vala_map_set ((ValaMap*) _tmp550_, (gpointer) ((gintptr) _tmp551_), (ValaCCodeExpression*) _tmp553_);
+                                               _vala_ccode_node_unref0 (_tmp553_);
                                        } else {
-                                               gboolean _tmp534_ = FALSE;
-                                               gboolean _tmp535_ = FALSE;
-                                               ValaMethod* _tmp536_ = NULL;
-                                               gboolean _tmp537_ = FALSE;
-                                               gboolean _tmp538_ = FALSE;
-                                               _tmp536_ = m;
-                                               _tmp537_ = vala_method_get_printf_format (_tmp536_);
-                                               _tmp538_ = _tmp537_;
-                                               if (!_tmp538_) {
-                                                       ValaMethod* _tmp539_ = NULL;
-                                                       gboolean _tmp540_ = FALSE;
-                                                       gboolean _tmp541_ = FALSE;
-                                                       _tmp539_ = m;
-                                                       _tmp540_ = vala_method_get_scanf_format (_tmp539_);
-                                                       _tmp541_ = _tmp540_;
-                                                       _tmp535_ = !_tmp541_;
+                                               gboolean _tmp554_ = FALSE;
+                                               gboolean _tmp555_ = FALSE;
+                                               ValaMethod* _tmp556_ = NULL;
+                                               gboolean _tmp557_ = FALSE;
+                                               gboolean _tmp558_ = FALSE;
+                                               _tmp556_ = m;
+                                               _tmp557_ = vala_method_get_printf_format (_tmp556_);
+                                               _tmp558_ = _tmp557_;
+                                               if (!_tmp558_) {
+                                                       ValaMethod* _tmp559_ = NULL;
+                                                       gboolean _tmp560_ = FALSE;
+                                                       gboolean _tmp561_ = FALSE;
+                                                       _tmp559_ = m;
+                                                       _tmp560_ = vala_method_get_scanf_format (_tmp559_);
+                                                       _tmp561_ = _tmp560_;
+                                                       _tmp555_ = !_tmp561_;
                                                } else {
-                                                       _tmp535_ = FALSE;
+                                                       _tmp555_ = FALSE;
                                                }
-                                               if (_tmp535_) {
-                                                       ValaMethod* _tmp542_ = NULL;
-                                                       gchar* _tmp543_ = NULL;
-                                                       gchar* _tmp544_ = NULL;
-                                                       _tmp542_ = m;
-                                                       _tmp543_ = vala_ccode_base_module_get_ccode_sentinel (_tmp542_);
-                                                       _tmp544_ = _tmp543_;
-                                                       _tmp534_ = g_strcmp0 (_tmp544_, "") != 0;
-                                                       _g_free0 (_tmp544_);
+                                               if (_tmp555_) {
+                                                       ValaMethod* _tmp562_ = NULL;
+                                                       gchar* _tmp563_ = NULL;
+                                                       gchar* _tmp564_ = NULL;
+                                                       _tmp562_ = m;
+                                                       _tmp563_ = vala_ccode_base_module_get_ccode_sentinel (_tmp562_);
+                                                       _tmp564_ = _tmp563_;
+                                                       _tmp554_ = g_strcmp0 (_tmp564_, "") != 0;
+                                                       _g_free0 (_tmp564_);
                                                } else {
-                                                       _tmp534_ = FALSE;
+                                                       _tmp554_ = FALSE;
                                                }
-                                               if (_tmp534_) {
-                                                       ValaHashMap* _tmp545_ = NULL;
-                                                       gint _tmp546_ = 0;
-                                                       ValaMethod* _tmp547_ = NULL;
-                                                       gchar* _tmp548_ = NULL;
-                                                       gchar* _tmp549_ = NULL;
-                                                       ValaCCodeConstant* _tmp550_ = NULL;
-                                                       ValaCCodeConstant* _tmp551_ = NULL;
-                                                       _tmp545_ = in_arg_map;
-                                                       _tmp546_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-1), TRUE);
-                                                       _tmp547_ = m;
-                                                       _tmp548_ = vala_ccode_base_module_get_ccode_sentinel (_tmp547_);
-                                                       _tmp549_ = _tmp548_;
-                                                       _tmp550_ = vala_ccode_constant_new (_tmp549_);
-                                                       _tmp551_ = _tmp550_;
-                                                       vala_map_set ((ValaMap*) _tmp545_, (gpointer) ((gintptr) _tmp546_), (ValaCCodeExpression*) _tmp551_);
-                                                       _vala_ccode_node_unref0 (_tmp551_);
-                                                       _g_free0 (_tmp549_);
+                                               if (_tmp554_) {
+                                                       ValaHashMap* _tmp565_ = NULL;
+                                                       gint _tmp566_ = 0;
+                                                       ValaMethod* _tmp567_ = NULL;
+                                                       gchar* _tmp568_ = NULL;
+                                                       gchar* _tmp569_ = NULL;
+                                                       ValaCCodeConstant* _tmp570_ = NULL;
+                                                       ValaCCodeConstant* _tmp571_ = NULL;
+                                                       _tmp565_ = in_arg_map;
+                                                       _tmp566_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-1), TRUE);
+                                                       _tmp567_ = m;
+                                                       _tmp568_ = vala_ccode_base_module_get_ccode_sentinel (_tmp567_);
+                                                       _tmp569_ = _tmp568_;
+                                                       _tmp570_ = vala_ccode_constant_new (_tmp569_);
+                                                       _tmp571_ = _tmp570_;
+                                                       vala_map_set ((ValaMap*) _tmp565_, (gpointer) ((gintptr) _tmp566_), (ValaCCodeExpression*) _tmp571_);
+                                                       _vala_ccode_node_unref0 (_tmp571_);
+                                                       _g_free0 (_tmp569_);
                                                }
                                        }
                                }
-                               _tmp554_ = st;
-                               if (_tmp554_ != NULL) {
-                                       ValaStruct* _tmp555_ = NULL;
-                                       gboolean _tmp556_ = FALSE;
-                                       _tmp555_ = st;
-                                       _tmp556_ = vala_struct_is_simple_type (_tmp555_);
-                                       _tmp553_ = !_tmp556_;
+                               _tmp574_ = st;
+                               if (_tmp574_ != NULL) {
+                                       ValaStruct* _tmp575_ = NULL;
+                                       gboolean _tmp576_ = FALSE;
+                                       _tmp575_ = st;
+                                       _tmp576_ = vala_struct_is_simple_type (_tmp575_);
+                                       _tmp573_ = !_tmp576_;
                                } else {
-                                       _tmp553_ = FALSE;
+                                       _tmp573_ = FALSE;
                                }
-                               if (_tmp553_) {
-                                       ValaMethod* _tmp557_ = NULL;
-                                       gdouble _tmp558_ = 0.0;
-                                       _tmp557_ = m;
-                                       _tmp558_ = vala_ccode_base_module_get_ccode_instance_pos ((ValaCodeNode*) _tmp557_);
-                                       _tmp552_ = _tmp558_ < ((gdouble) 0);
+                               if (_tmp573_) {
+                                       ValaMethod* _tmp577_ = NULL;
+                                       gdouble _tmp578_ = 0.0;
+                                       _tmp577_ = m;
+                                       _tmp578_ = vala_ccode_base_module_get_ccode_instance_pos ((ValaCodeNode*) _tmp577_);
+                                       _tmp572_ = _tmp578_ < ((gdouble) 0);
                                } else {
-                                       _tmp552_ = FALSE;
+                                       _tmp572_ = FALSE;
                                }
-                               if (_tmp552_) {
-                                       ValaHashMap* _tmp559_ = NULL;
-                                       gint _tmp560_ = 0;
-                                       ValaCCodeExpression* _tmp561_ = NULL;
-                                       ValaCCodeUnaryExpression* _tmp562_ = NULL;
-                                       ValaCCodeUnaryExpression* _tmp563_ = NULL;
-                                       _tmp559_ = out_arg_map;
-                                       _tmp560_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-3), FALSE);
-                                       _tmp561_ = instance;
-                                       _tmp562_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp561_);
-                                       _tmp563_ = _tmp562_;
-                                       vala_map_set ((ValaMap*) _tmp559_, (gpointer) ((gintptr) _tmp560_), (ValaCCodeExpression*) _tmp563_);
-                                       _vala_ccode_node_unref0 (_tmp563_);
+                               if (_tmp572_) {
+                                       ValaHashMap* _tmp579_ = NULL;
+                                       gint _tmp580_ = 0;
+                                       ValaCCodeExpression* _tmp581_ = NULL;
+                                       ValaCCodeUnaryExpression* _tmp582_ = NULL;
+                                       ValaCCodeUnaryExpression* _tmp583_ = NULL;
+                                       _tmp579_ = out_arg_map;
+                                       _tmp580_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-3), FALSE);
+                                       _tmp581_ = instance;
+                                       _tmp582_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp581_);
+                                       _tmp583_ = _tmp582_;
+                                       vala_map_set ((ValaMap*) _tmp579_, (gpointer) ((gintptr) _tmp580_), (ValaCCodeExpression*) _tmp583_);
+                                       _vala_ccode_node_unref0 (_tmp583_);
                                }
-                               _tmp565_ = m;
-                               if (_tmp565_ != NULL) {
-                                       ValaMethod* _tmp566_ = NULL;
-                                       gboolean _tmp567_ = FALSE;
-                                       gboolean _tmp568_ = FALSE;
-                                       _tmp566_ = m;
-                                       _tmp567_ = vala_method_get_coroutine (_tmp566_);
-                                       _tmp568_ = _tmp567_;
-                                       _tmp564_ = _tmp568_;
+                               _tmp585_ = m;
+                               if (_tmp585_ != NULL) {
+                                       ValaMethod* _tmp586_ = NULL;
+                                       gboolean _tmp587_ = FALSE;
+                                       gboolean _tmp588_ = FALSE;
+                                       _tmp586_ = m;
+                                       _tmp587_ = vala_method_get_coroutine (_tmp586_);
+                                       _tmp588_ = _tmp587_;
+                                       _tmp584_ = _tmp588_;
                                } else {
-                                       _tmp564_ = FALSE;
+                                       _tmp584_ = FALSE;
                                }
-                               if (_tmp564_) {
-                                       ValaObjectCreationExpression* _tmp569_ = NULL;
-                                       gboolean _tmp570_ = FALSE;
-                                       gboolean _tmp571_ = FALSE;
-                                       _tmp569_ = expr;
-                                       _tmp570_ = vala_object_creation_expression_get_is_yield_expression (_tmp569_);
-                                       _tmp571_ = _tmp570_;
-                                       if (_tmp571_) {
-                                               ValaHashMap* _tmp572_ = NULL;
-                                               gint _tmp573_ = 0;
-                                               ValaMethod* _tmp574_ = NULL;
-                                               ValaMethod* _tmp575_ = NULL;
-                                               gchar* _tmp576_ = NULL;
-                                               gchar* _tmp577_ = NULL;
-                                               ValaCCodeIdentifier* _tmp578_ = NULL;
-                                               ValaCCodeIdentifier* _tmp579_ = NULL;
-                                               ValaHashMap* _tmp580_ = NULL;
-                                               gint _tmp581_ = 0;
-                                               ValaCCodeIdentifier* _tmp582_ = NULL;
-                                               ValaCCodeIdentifier* _tmp583_ = NULL;
-                                               _tmp572_ = in_arg_map;
-                                               _tmp573_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-1), FALSE);
-                                               _tmp574_ = vala_ccode_base_module_get_current_method (self);
-                                               _tmp575_ = _tmp574_;
-                                               _tmp576_ = vala_ccode_base_module_generate_ready_function (self, _tmp575_);
-                                               _tmp577_ = _tmp576_;
-                                               _tmp578_ = vala_ccode_identifier_new (_tmp577_);
-                                               _tmp579_ = _tmp578_;
-                                               vala_map_set ((ValaMap*) _tmp572_, (gpointer) ((gintptr) _tmp573_), (ValaCCodeExpression*) _tmp579_);
-                                               _vala_ccode_node_unref0 (_tmp579_);
-                                               _g_free0 (_tmp577_);
-                                               _tmp580_ = in_arg_map;
-                                               _tmp581_ = vala_ccode_base_module_get_param_pos (self, -0.9, FALSE);
-                                               _tmp582_ = vala_ccode_identifier_new ("_data_");
-                                               _tmp583_ = _tmp582_;
-                                               vala_map_set ((ValaMap*) _tmp580_, (gpointer) ((gintptr) _tmp581_), (ValaCCodeExpression*) _tmp583_);
-                                               _vala_ccode_node_unref0 (_tmp583_);
+                               if (_tmp584_) {
+                                       ValaObjectCreationExpression* _tmp589_ = NULL;
+                                       gboolean _tmp590_ = FALSE;
+                                       gboolean _tmp591_ = FALSE;
+                                       _tmp589_ = expr;
+                                       _tmp590_ = vala_object_creation_expression_get_is_yield_expression (_tmp589_);
+                                       _tmp591_ = _tmp590_;
+                                       if (_tmp591_) {
+                                               ValaHashMap* _tmp592_ = NULL;
+                                               gint _tmp593_ = 0;
+                                               ValaMethod* _tmp594_ = NULL;
+                                               ValaMethod* _tmp595_ = NULL;
+                                               gchar* _tmp596_ = NULL;
+                                               gchar* _tmp597_ = NULL;
+                                               ValaCCodeIdentifier* _tmp598_ = NULL;
+                                               ValaCCodeIdentifier* _tmp599_ = NULL;
+                                               ValaHashMap* _tmp600_ = NULL;
+                                               gint _tmp601_ = 0;
+                                               ValaCCodeIdentifier* _tmp602_ = NULL;
+                                               ValaCCodeIdentifier* _tmp603_ = NULL;
+                                               _tmp592_ = in_arg_map;
+                                               _tmp593_ = vala_ccode_base_module_get_param_pos (self, (gdouble) (-1), FALSE);
+                                               _tmp594_ = vala_ccode_base_module_get_current_method (self);
+                                               _tmp595_ = _tmp594_;
+                                               _tmp596_ = vala_ccode_base_module_generate_ready_function (self, _tmp595_);
+                                               _tmp597_ = _tmp596_;
+                                               _tmp598_ = vala_ccode_identifier_new (_tmp597_);
+                                               _tmp599_ = _tmp598_;
+                                               vala_map_set ((ValaMap*) _tmp592_, (gpointer) ((gintptr) _tmp593_), (ValaCCodeExpression*) _tmp599_);
+                                               _vala_ccode_node_unref0 (_tmp599_);
+                                               _g_free0 (_tmp597_);
+                                               _tmp600_ = in_arg_map;
+                                               _tmp601_ = vala_ccode_base_module_get_param_pos (self, -0.9, FALSE);
+                                               _tmp602_ = vala_ccode_identifier_new ("_data_");
+                                               _tmp603_ = _tmp602_;
+                                               vala_map_set ((ValaMap*) _tmp600_, (gpointer) ((gintptr) _tmp601_), (ValaCCodeExpression*) _tmp603_);
+                                               _vala_ccode_node_unref0 (_tmp603_);
                                        }
                                }
-                               _tmp584_ = async_call;
-                               _tmp585_ = creation_call;
-                               if (_tmp584_ != _tmp585_) {
+                               _tmp604_ = async_call;
+                               _tmp605_ = creation_call;
+                               if (_tmp604_ != _tmp605_) {
                                        last_pos = -1;
                                        while (TRUE) {
-                                               gint _tmp603_ = 0;
-                                               ValaCCodeFunctionCall* _tmp604_ = NULL;
-                                               ValaHashMap* _tmp605_ = NULL;
-                                               gint _tmp606_ = 0;
-                                               gpointer _tmp607_ = NULL;
-                                               ValaCCodeExpression* _tmp608_ = NULL;
-                                               gint _tmp609_ = 0;
+                                               gint _tmp623_ = 0;
+                                               ValaCCodeFunctionCall* _tmp624_ = NULL;
+                                               ValaHashMap* _tmp625_ = NULL;
+                                               gint _tmp626_ = 0;
+                                               gpointer _tmp627_ = NULL;
+                                               ValaCCodeExpression* _tmp628_ = NULL;
+                                               gint _tmp629_ = 0;
                                                min_pos = -1;
                                                {
                                                        ValaIterator* _pos_it = NULL;
-                                                       ValaHashMap* _tmp586_ = NULL;
-                                                       ValaSet* _tmp587_ = NULL;
-                                                       ValaSet* _tmp588_ = NULL;
-                                                       ValaIterator* _tmp589_ = NULL;
-                                                       ValaIterator* _tmp590_ = NULL;
-                                                       _tmp586_ = out_arg_map;
-                                                       _tmp587_ = vala_map_get_keys ((ValaMap*) _tmp586_);
-                                                       _tmp588_ = _tmp587_;
-                                                       _tmp589_ = vala_iterable_iterator ((ValaIterable*) _tmp588_);
-                                                       _tmp590_ = _tmp589_;
-                                                       _vala_iterable_unref0 (_tmp588_);
-                                                       _pos_it = _tmp590_;
+                                                       ValaHashMap* _tmp606_ = NULL;
+                                                       ValaSet* _tmp607_ = NULL;
+                                                       ValaSet* _tmp608_ = NULL;
+                                                       ValaIterator* _tmp609_ = NULL;
+                                                       ValaIterator* _tmp610_ = NULL;
+                                                       _tmp606_ = out_arg_map;
+                                                       _tmp607_ = vala_map_get_keys ((ValaMap*) _tmp606_);
+                                                       _tmp608_ = _tmp607_;
+                                                       _tmp609_ = vala_iterable_iterator ((ValaIterable*) _tmp608_);
+                                                       _tmp610_ = _tmp609_;
+                                                       _vala_iterable_unref0 (_tmp608_);
+                                                       _pos_it = _tmp610_;
                                                        while (TRUE) {
-                                                               ValaIterator* _tmp591_ = NULL;
-                                                               gboolean _tmp592_ = FALSE;
+                                                               ValaIterator* _tmp611_ = NULL;
+                                                               gboolean _tmp612_ = FALSE;
                                                                gint pos = 0;
-                                                               ValaIterator* _tmp593_ = NULL;
-                                                               gpointer _tmp594_ = NULL;
-                                                               gboolean _tmp595_ = FALSE;
-                                                               gint _tmp596_ = 0;
-                                                               gint _tmp597_ = 0;
-                                                               _tmp591_ = _pos_it;
-                                                               _tmp592_ = vala_iterator_next (_tmp591_);
-                                                               if (!_tmp592_) {
+                                                               ValaIterator* _tmp613_ = NULL;
+                                                               gpointer _tmp614_ = NULL;
+                                                               gboolean _tmp615_ = FALSE;
+                                                               gint _tmp616_ = 0;
+                                                               gint _tmp617_ = 0;
+                                                               _tmp611_ = _pos_it;
+                                                               _tmp612_ = vala_iterator_next (_tmp611_);
+                                                               if (!_tmp612_) {
                                                                        break;
                                                                }
-                                                               _tmp593_ = _pos_it;
-                                                               _tmp594_ = vala_iterator_get (_tmp593_);
-                                                               pos = (gint) ((gintptr) _tmp594_);
-                                                               _tmp596_ = pos;
-                                                               _tmp597_ = last_pos;
-                                                               if (_tmp596_ > _tmp597_) {
-                                                                       gboolean _tmp598_ = FALSE;
-                                                                       gint _tmp599_ = 0;
-                                                                       _tmp599_ = min_pos;
-                                                                       if (_tmp599_ == (-1)) {
-                                                                               _tmp598_ = TRUE;
+                                                               _tmp613_ = _pos_it;
+                                                               _tmp614_ = vala_iterator_get (_tmp613_);
+                                                               pos = (gint) ((gintptr) _tmp614_);
+                                                               _tmp616_ = pos;
+                                                               _tmp617_ = last_pos;
+                                                               if (_tmp616_ > _tmp617_) {
+                                                                       gboolean _tmp618_ = FALSE;
+                                                                       gint _tmp619_ = 0;
+                                                                       _tmp619_ = min_pos;
+                                                                       if (_tmp619_ == (-1)) {
+                                                                               _tmp618_ = TRUE;
                                                                        } else {
-                                                                               gint _tmp600_ = 0;
-                                                                               gint _tmp601_ = 0;
-                                                                               _tmp600_ = pos;
-                                                                               _tmp601_ = min_pos;
-                                                                               _tmp598_ = _tmp600_ < _tmp601_;
+                                                                               gint _tmp620_ = 0;
+                                                                               gint _tmp621_ = 0;
+                                                                               _tmp620_ = pos;
+                                                                               _tmp621_ = min_pos;
+                                                                               _tmp618_ = _tmp620_ < _tmp621_;
                                                                        }
-                                                                       _tmp595_ = _tmp598_;
+                                                                       _tmp615_ = _tmp618_;
                                                                } else {
-                                                                       _tmp595_ = FALSE;
+                                                                       _tmp615_ = FALSE;
                                                                }
-                                                               if (_tmp595_) {
-                                                                       gint _tmp602_ = 0;
-                                                                       _tmp602_ = pos;
-                                                                       min_pos = _tmp602_;
+                                                               if (_tmp615_) {
+                                                                       gint _tmp622_ = 0;
+                                                                       _tmp622_ = pos;
+                                                                       min_pos = _tmp622_;
                                                                }
                                                        }
                                                        _vala_iterator_unref0 (_pos_it);
                                                }
-                                               _tmp603_ = min_pos;
-                                               if (_tmp603_ == (-1)) {
+                                               _tmp623_ = min_pos;
+                                               if (_tmp623_ == (-1)) {
                                                        break;
                                                }
-                                               _tmp604_ = creation_call;
-                                               _tmp605_ = out_arg_map;
-                                               _tmp606_ = min_pos;
-                                               _tmp607_ = vala_map_get ((ValaMap*) _tmp605_, (gpointer) ((gintptr) _tmp606_));
-                                               _tmp608_ = (ValaCCodeExpression*) _tmp607_;
-                                               vala_ccode_function_call_add_argument (_tmp604_, _tmp608_);
-                                               _vala_ccode_node_unref0 (_tmp608_);
-                                               _tmp609_ = min_pos;
-                                               last_pos = _tmp609_;
+                                               _tmp624_ = creation_call;
+                                               _tmp625_ = out_arg_map;
+                                               _tmp626_ = min_pos;
+                                               _tmp627_ = vala_map_get ((ValaMap*) _tmp625_, (gpointer) ((gintptr) _tmp626_));
+                                               _tmp628_ = (ValaCCodeExpression*) _tmp627_;
+                                               vala_ccode_function_call_add_argument (_tmp624_, _tmp628_);
+                                               _vala_ccode_node_unref0 (_tmp628_);
+                                               _tmp629_ = min_pos;
+                                               last_pos = _tmp629_;
                                        }
                                }
-                               _tmp610_ = async_call;
-                               if (_tmp610_ != NULL) {
+                               _tmp630_ = async_call;
+                               if (_tmp630_ != NULL) {
                                        last_pos = -1;
                                        while (TRUE) {
-                                               gint _tmp628_ = 0;
-                                               ValaCCodeFunctionCall* _tmp629_ = NULL;
-                                               ValaHashMap* _tmp630_ = NULL;
-                                               gint _tmp631_ = 0;
-                                               gpointer _tmp632_ = NULL;
-                                               ValaCCodeExpression* _tmp633_ = NULL;
-                                               gint _tmp634_ = 0;
+                                               gint _tmp648_ = 0;
+                                               ValaCCodeFunctionCall* _tmp649_ = NULL;
+                                               ValaHashMap* _tmp650_ = NULL;
+                                               gint _tmp651_ = 0;
+                                               gpointer _tmp652_ = NULL;
+                                               ValaCCodeExpression* _tmp653_ = NULL;
+                                               gint _tmp654_ = 0;
                                                min_pos = -1;
                                                {
                                                        ValaIterator* _pos_it = NULL;
-                                                       ValaHashMap* _tmp611_ = NULL;
-                                                       ValaSet* _tmp612_ = NULL;
-                                                       ValaSet* _tmp613_ = NULL;
-                                                       ValaIterator* _tmp614_ = NULL;
-                                                       ValaIterator* _tmp615_ = NULL;
-                                                       _tmp611_ = in_arg_map;
-                                                       _tmp612_ = vala_map_get_keys ((ValaMap*) _tmp611_);
-                                                       _tmp613_ = _tmp612_;
-                                                       _tmp614_ = vala_iterable_iterator ((ValaIterable*) _tmp613_);
-                                                       _tmp615_ = _tmp614_;
-                                                       _vala_iterable_unref0 (_tmp613_);
-                                                       _pos_it = _tmp615_;
+                                                       ValaHashMap* _tmp631_ = NULL;
+                                                       ValaSet* _tmp632_ = NULL;
+                                                       ValaSet* _tmp633_ = NULL;
+                                                       ValaIterator* _tmp634_ = NULL;
+                                                       ValaIterator* _tmp635_ = NULL;
+                                                       _tmp631_ = in_arg_map;
+                                                       _tmp632_ = vala_map_get_keys ((ValaMap*) _tmp631_);
+                                                       _tmp633_ = _tmp632_;
+                                                       _tmp634_ = vala_iterable_iterator ((ValaIterable*) _tmp633_);
+                                                       _tmp635_ = _tmp634_;
+                                                       _vala_iterable_unref0 (_tmp633_);
+                                                       _pos_it = _tmp635_;
                                                        while (TRUE) {
-                                                               ValaIterator* _tmp616_ = NULL;
-                                                               gboolean _tmp617_ = FALSE;
+                                                               ValaIterator* _tmp636_ = NULL;
+                                                               gboolean _tmp637_ = FALSE;
                                                                gint pos = 0;
-                                                               ValaIterator* _tmp618_ = NULL;
-                                                               gpointer _tmp619_ = NULL;
-                                                               gboolean _tmp620_ = FALSE;
-                                                               gint _tmp621_ = 0;
-                                                               gint _tmp622_ = 0;
-                                                               _tmp616_ = _pos_it;
-                                                               _tmp617_ = vala_iterator_next (_tmp616_);
-                                                               if (!_tmp617_) {
+                                                               ValaIterator* _tmp638_ = NULL;
+                                                               gpointer _tmp639_ = NULL;
+                                                               gboolean _tmp640_ = FALSE;
+                                                               gint _tmp641_ = 0;
+                                                               gint _tmp642_ = 0;
+                                                               _tmp636_ = _pos_it;
+                                                               _tmp637_ = vala_iterator_next (_tmp636_);
+                                                               if (!_tmp637_) {
                                                                        break;
                                                                }
-                                                               _tmp618_ = _pos_it;
-                                                               _tmp619_ = vala_iterator_get (_tmp618_);
-                                                               pos = (gint) ((gintptr) _tmp619_);
-                                                               _tmp621_ = pos;
-                                                               _tmp622_ = last_pos;
-                                                               if (_tmp621_ > _tmp622_) {
-                                                                       gboolean _tmp623_ = FALSE;
-                                                                       gint _tmp624_ = 0;
-                                                                       _tmp624_ = min_pos;
-                                                                       if (_tmp624_ == (-1)) {
-                                                                               _tmp623_ = TRUE;
+                                                               _tmp638_ = _pos_it;
+                                                               _tmp639_ = vala_iterator_get (_tmp638_);
+                                                               pos = (gint) ((gintptr) _tmp639_);
+                                                               _tmp641_ = pos;
+                                                               _tmp642_ = last_pos;
+                                                               if (_tmp641_ > _tmp642_) {
+                                                                       gboolean _tmp643_ = FALSE;
+                                                                       gint _tmp644_ = 0;
+                                                                       _tmp644_ = min_pos;
+                                                                       if (_tmp644_ == (-1)) {
+                                                                               _tmp643_ = TRUE;
                                                                        } else {
-                                                                               gint _tmp625_ = 0;
-                                                                               gint _tmp626_ = 0;
-                                                                               _tmp625_ = pos;
-                                                                               _tmp626_ = min_pos;
-                                                                               _tmp623_ = _tmp625_ < _tmp626_;
+                                                                               gint _tmp645_ = 0;
+                                                                               gint _tmp646_ = 0;
+                                                                               _tmp645_ = pos;
+                                                                               _tmp646_ = min_pos;
+                                                                               _tmp643_ = _tmp645_ < _tmp646_;
                                                                        }
-                                                                       _tmp620_ = _tmp623_;
+                                                                       _tmp640_ = _tmp643_;
                                                                } else {
-                                                                       _tmp620_ = FALSE;
+                                                                       _tmp640_ = FALSE;
                                                                }
-                                                               if (_tmp620_) {
-                                                                       gint _tmp627_ = 0;
-                                                                       _tmp627_ = pos;
-                                                                       min_pos = _tmp627_;
+                                                               if (_tmp640_) {
+                                                                       gint _tmp647_ = 0;
+                                                                       _tmp647_ = pos;
+                                                                       min_pos = _tmp647_;
                                                                }
                                                        }
                                                        _vala_iterator_unref0 (_pos_it);
                                                }
-                                               _tmp628_ = min_pos;
-                                               if (_tmp628_ == (-1)) {
+                                               _tmp648_ = min_pos;
+                                               if (_tmp648_ == (-1)) {
                                                        break;
                                                }
-                                               _tmp629_ = async_call;
-                                               _tmp630_ = in_arg_map;
-                                               _tmp631_ = min_pos;
-                                               _tmp632_ = vala_map_get ((ValaMap*) _tmp630_, (gpointer) ((gintptr) _tmp631_));
-                                               _tmp633_ = (ValaCCodeExpression*) _tmp632_;
-                                               vala_ccode_function_call_add_argument (_tmp629_, _tmp633_);
-                                               _vala_ccode_node_unref0 (_tmp633_);
-                                               _tmp634_ = min_pos;
-                                               last_pos = _tmp634_;
+                                               _tmp649_ = async_call;
+                                               _tmp650_ = in_arg_map;
+                                               _tmp651_ = min_pos;
+                                               _tmp652_ = vala_map_get ((ValaMap*) _tmp650_, (gpointer) ((gintptr) _tmp651_));
+                                               _tmp653_ = (ValaCCodeExpression*) _tmp652_;
+                                               vala_ccode_function_call_add_argument (_tmp649_, _tmp653_);
+                                               _vala_ccode_node_unref0 (_tmp653_);
+                                               _tmp654_ = min_pos;
+                                               last_pos = _tmp654_;
                                        }
                                }
-                               _tmp635_ = expr;
-                               _tmp636_ = vala_object_creation_expression_get_is_yield_expression (_tmp635_);
-                               _tmp637_ = _tmp636_;
-                               if (_tmp637_) {
+                               _tmp655_ = expr;
+                               _tmp656_ = vala_object_creation_expression_get_is_yield_expression (_tmp655_);
+                               _tmp657_ = _tmp656_;
+                               if (_tmp657_) {
                                        gint state = 0;
-                                       gint _tmp638_ = 0;
-                                       ValaCCodeFunction* _tmp639_ = NULL;
-                                       ValaCCodeFunction* _tmp640_ = NULL;
-                                       ValaCCodeIdentifier* _tmp641_ = NULL;
-                                       ValaCCodeIdentifier* _tmp642_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp643_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp644_ = NULL;
-                                       gint _tmp645_ = 0;
-                                       gchar* _tmp646_ = NULL;
-                                       gchar* _tmp647_ = NULL;
-                                       ValaCCodeConstant* _tmp648_ = NULL;
-                                       ValaCCodeConstant* _tmp649_ = NULL;
-                                       ValaCCodeFunction* _tmp650_ = NULL;
-                                       ValaCCodeFunction* _tmp651_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp652_ = NULL;
-                                       ValaCCodeFunction* _tmp653_ = NULL;
-                                       ValaCCodeFunction* _tmp654_ = NULL;
-                                       ValaCCodeConstant* _tmp655_ = NULL;
-                                       ValaCCodeConstant* _tmp656_ = NULL;
-                                       ValaCCodeFunction* _tmp657_ = NULL;
-                                       ValaCCodeFunction* _tmp658_ = NULL;
-                                       gint _tmp659_ = 0;
-                                       gchar* _tmp660_ = NULL;
-                                       gchar* _tmp661_ = NULL;
-                                       _tmp638_ = self->next_coroutine_state;
-                                       self->next_coroutine_state = _tmp638_ + 1;
-                                       state = _tmp638_;
-                                       _tmp639_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp640_ = _tmp639_;
-                                       _tmp641_ = vala_ccode_identifier_new ("_data_");
-                                       _tmp642_ = _tmp641_;
-                                       _tmp643_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp642_, "_state_");
-                                       _tmp644_ = _tmp643_;
-                                       _tmp645_ = state;
-                                       _tmp646_ = g_strdup_printf ("%i", _tmp645_);
-                                       _tmp647_ = _tmp646_;
-                                       _tmp648_ = vala_ccode_constant_new (_tmp647_);
-                                       _tmp649_ = _tmp648_;
-                                       vala_ccode_function_add_assignment (_tmp640_, (ValaCCodeExpression*) _tmp644_, (ValaCCodeExpression*) _tmp649_);
-                                       _vala_ccode_node_unref0 (_tmp649_);
-                                       _g_free0 (_tmp647_);
-                                       _vala_ccode_node_unref0 (_tmp644_);
-                                       _vala_ccode_node_unref0 (_tmp642_);
-                                       _tmp650_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp651_ = _tmp650_;
-                                       _tmp652_ = async_call;
-                                       vala_ccode_function_add_expression (_tmp651_, (ValaCCodeExpression*) _tmp652_);
-                                       _tmp653_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp654_ = _tmp653_;
-                                       _tmp655_ = vala_ccode_constant_new ("FALSE");
-                                       _tmp656_ = _tmp655_;
-                                       vala_ccode_function_add_return (_tmp654_, (ValaCCodeExpression*) _tmp656_);
-                                       _vala_ccode_node_unref0 (_tmp656_);
-                                       _tmp657_ = vala_ccode_base_module_get_ccode (self);
-                                       _tmp658_ = _tmp657_;
-                                       _tmp659_ = state;
-                                       _tmp660_ = g_strdup_printf ("_state_%d", _tmp659_);
-                                       _tmp661_ = _tmp660_;
-                                       vala_ccode_function_add_label (_tmp658_, _tmp661_);
-                                       _g_free0 (_tmp661_);
+                                       gint _tmp658_ = 0;
+                                       ValaCCodeFunction* _tmp659_ = NULL;
+                                       ValaCCodeFunction* _tmp660_ = NULL;
+                                       ValaCCodeIdentifier* _tmp661_ = NULL;
+                                       ValaCCodeIdentifier* _tmp662_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp663_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp664_ = NULL;
+                                       gint _tmp665_ = 0;
+                                       gchar* _tmp666_ = NULL;
+                                       gchar* _tmp667_ = NULL;
+                                       ValaCCodeConstant* _tmp668_ = NULL;
+                                       ValaCCodeConstant* _tmp669_ = NULL;
+                                       ValaCCodeFunction* _tmp670_ = NULL;
+                                       ValaCCodeFunction* _tmp671_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp672_ = NULL;
+                                       ValaCCodeFunction* _tmp673_ = NULL;
+                                       ValaCCodeFunction* _tmp674_ = NULL;
+                                       ValaCCodeConstant* _tmp675_ = NULL;
+                                       ValaCCodeConstant* _tmp676_ = NULL;
+                                       ValaCCodeFunction* _tmp677_ = NULL;
+                                       ValaCCodeFunction* _tmp678_ = NULL;
+                                       gint _tmp679_ = 0;
+                                       gchar* _tmp680_ = NULL;
+                                       gchar* _tmp681_ = NULL;
+                                       _tmp658_ = self->next_coroutine_state;
+                                       self->next_coroutine_state = _tmp658_ + 1;
+                                       state = _tmp658_;
+                                       _tmp659_ = vala_ccode_base_module_get_ccode (self);
+                                       _tmp660_ = _tmp659_;
+                                       _tmp661_ = vala_ccode_identifier_new ("_data_");
+                                       _tmp662_ = _tmp661_;
+                                       _tmp663_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp662_, "_state_");
+                                       _tmp664_ = _tmp663_;
+                                       _tmp665_ = state;
+                                       _tmp666_ = g_strdup_printf ("%i", _tmp665_);
+                                       _tmp667_ = _tmp666_;
+                                       _tmp668_ = vala_ccode_constant_new (_tmp667_);
+                                       _tmp669_ = _tmp668_;
+                                       vala_ccode_function_add_assignment (_tmp660_, (ValaCCodeExpression*) _tmp664_, (ValaCCodeExpression*) _tmp669_);
+                                       _vala_ccode_node_unref0 (_tmp669_);
+                                       _g_free0 (_tmp667_);
+                                       _vala_ccode_node_unref0 (_tmp664_);
+                                       _vala_ccode_node_unref0 (_tmp662_);
+                                       _tmp670_ = vala_ccode_base_module_get_ccode (self);
+                                       _tmp671_ = _tmp670_;
+                                       _tmp672_ = async_call;
+                                       vala_ccode_function_add_expression (_tmp671_, (ValaCCodeExpression*) _tmp672_);
+                                       _tmp673_ = vala_ccode_base_module_get_ccode (self);
+                                       _tmp674_ = _tmp673_;
+                                       _tmp675_ = vala_ccode_constant_new ("FALSE");
+                                       _tmp676_ = _tmp675_;
+                                       vala_ccode_function_add_return (_tmp674_, (ValaCCodeExpression*) _tmp676_);
+                                       _vala_ccode_node_unref0 (_tmp676_);
+                                       _tmp677_ = vala_ccode_base_module_get_ccode (self);
+                                       _tmp678_ = _tmp677_;
+                                       _tmp679_ = state;
+                                       _tmp680_ = g_strdup_printf ("_state_%d", _tmp679_);
+                                       _tmp681_ = _tmp680_;
+                                       vala_ccode_function_add_label (_tmp678_, _tmp681_);
+                                       _g_free0 (_tmp681_);
                                }
-                               _tmp662_ = creation_call;
-                               _tmp663_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp662_);
+                               _tmp682_ = creation_call;
+                               _tmp683_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp682_);
                                _vala_ccode_node_unref0 (creation_expr);
-                               creation_expr = _tmp663_;
-                               _tmp664_ = m;
-                               _tmp665_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp664_);
-                               _tmp666_ = _tmp665_;
-                               _tmp667_ = _tmp666_ != NULL;
-                               _g_free0 (_tmp666_);
-                               if (_tmp667_) {
-                                       ValaCCodeExpression* _tmp668_ = NULL;
-                                       ValaObjectCreationExpression* _tmp669_ = NULL;
-                                       ValaDataType* _tmp670_ = NULL;
-                                       ValaDataType* _tmp671_ = NULL;
-                                       gchar* _tmp672_ = NULL;
-                                       gchar* _tmp673_ = NULL;
-                                       ValaCCodeCastExpression* _tmp674_ = NULL;
-                                       _tmp668_ = creation_expr;
-                                       _tmp669_ = expr;
-                                       _tmp670_ = vala_object_creation_expression_get_type_reference (_tmp669_);
-                                       _tmp671_ = _tmp670_;
-                                       _tmp672_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp671_);
-                                       _tmp673_ = _tmp672_;
-                                       _tmp674_ = vala_ccode_cast_expression_new (_tmp668_, _tmp673_);
+                               creation_expr = _tmp683_;
+                               _tmp684_ = m;
+                               _tmp685_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp684_);
+                               _tmp686_ = _tmp685_;
+                               _tmp687_ = _tmp686_ != NULL;
+                               _g_free0 (_tmp686_);
+                               if (_tmp687_) {
+                                       ValaCCodeExpression* _tmp688_ = NULL;
+                                       ValaObjectCreationExpression* _tmp689_ = NULL;
+                                       ValaDataType* _tmp690_ = NULL;
+                                       ValaDataType* _tmp691_ = NULL;
+                                       gchar* _tmp692_ = NULL;
+                                       gchar* _tmp693_ = NULL;
+                                       ValaCCodeCastExpression* _tmp694_ = NULL;
+                                       _tmp688_ = creation_expr;
+                                       _tmp689_ = expr;
+                                       _tmp690_ = vala_object_creation_expression_get_type_reference (_tmp689_);
+                                       _tmp691_ = _tmp690_;
+                                       _tmp692_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp691_);
+                                       _tmp693_ = _tmp692_;
+                                       _tmp694_ = vala_ccode_cast_expression_new (_tmp688_, _tmp693_);
                                        _vala_ccode_node_unref0 (creation_expr);
-                                       creation_expr = (ValaCCodeExpression*) _tmp674_;
-                                       _g_free0 (_tmp673_);
+                                       creation_expr = (ValaCCodeExpression*) _tmp694_;
+                                       _g_free0 (_tmp693_);
                                }
                                _vala_iterator_unref0 (params_it);
                                _vala_map_unref0 (out_arg_map);
@@ -28147,159 +28468,159 @@ static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCo
                                _vala_iterable_unref0 (params);
                                _vala_code_node_unref0 (m);
                        } else {
-                               ValaObjectCreationExpression* _tmp675_ = NULL;
-                               ValaSymbol* _tmp676_ = NULL;
-                               ValaSymbol* _tmp677_ = NULL;
-                               _tmp675_ = expr;
-                               _tmp676_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp675_);
-                               _tmp677_ = _tmp676_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp677_, VALA_TYPE_ERROR_CODE)) {
+                               ValaObjectCreationExpression* _tmp695_ = NULL;
+                               ValaSymbol* _tmp696_ = NULL;
+                               ValaSymbol* _tmp697_ = NULL;
+                               _tmp695_ = expr;
+                               _tmp696_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp695_);
+                               _tmp697_ = _tmp696_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp697_, VALA_TYPE_ERROR_CODE)) {
                                        ValaErrorCode* ecode = NULL;
-                                       ValaObjectCreationExpression* _tmp678_ = NULL;
-                                       ValaSymbol* _tmp679_ = NULL;
-                                       ValaSymbol* _tmp680_ = NULL;
-                                       ValaErrorCode* _tmp681_ = NULL;
+                                       ValaObjectCreationExpression* _tmp698_ = NULL;
+                                       ValaSymbol* _tmp699_ = NULL;
+                                       ValaSymbol* _tmp700_ = NULL;
+                                       ValaErrorCode* _tmp701_ = NULL;
                                        ValaErrorDomain* edomain = NULL;
-                                       ValaErrorCode* _tmp682_ = NULL;
-                                       ValaSymbol* _tmp683_ = NULL;
-                                       ValaSymbol* _tmp684_ = NULL;
-                                       ValaErrorDomain* _tmp685_ = NULL;
+                                       ValaErrorCode* _tmp702_ = NULL;
+                                       ValaSymbol* _tmp703_ = NULL;
+                                       ValaSymbol* _tmp704_ = NULL;
+                                       ValaErrorDomain* _tmp705_ = NULL;
                                        ValaCCodeFunctionCall* creation_call = NULL;
-                                       ValaErrorDomain* _tmp686_ = NULL;
-                                       ValaCCodeFile* _tmp687_ = NULL;
-                                       ValaObjectCreationExpression* _tmp688_ = NULL;
-                                       ValaList* _tmp689_ = NULL;
-                                       ValaList* _tmp690_ = NULL;
-                                       gint _tmp691_ = 0;
-                                       gint _tmp692_ = 0;
-                                       gboolean _tmp693_ = FALSE;
-                                       ValaCCodeFunctionCall* _tmp700_ = NULL;
-                                       ValaErrorDomain* _tmp701_ = NULL;
-                                       gchar* _tmp702_ = NULL;
-                                       gchar* _tmp703_ = NULL;
-                                       ValaCCodeIdentifier* _tmp704_ = NULL;
-                                       ValaCCodeIdentifier* _tmp705_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp706_ = NULL;
-                                       ValaErrorCode* _tmp707_ = NULL;
-                                       gchar* _tmp708_ = NULL;
-                                       gchar* _tmp709_ = NULL;
-                                       ValaCCodeIdentifier* _tmp710_ = NULL;
-                                       ValaCCodeIdentifier* _tmp711_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp727_ = NULL;
-                                       ValaCCodeExpression* _tmp728_ = NULL;
-                                       _tmp678_ = expr;
-                                       _tmp679_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp678_);
-                                       _tmp680_ = _tmp679_;
-                                       _tmp681_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp680_, VALA_TYPE_ERROR_CODE, ValaErrorCode));
-                                       ecode = _tmp681_;
-                                       _tmp682_ = ecode;
-                                       _tmp683_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp682_);
-                                       _tmp684_ = _tmp683_;
-                                       _tmp685_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp684_, VALA_TYPE_ERROR_DOMAIN, ValaErrorDomain));
-                                       edomain = _tmp685_;
-                                       _tmp686_ = edomain;
-                                       _tmp687_ = self->cfile;
-                                       vala_ccode_base_module_generate_error_domain_declaration (self, _tmp686_, _tmp687_);
-                                       _tmp688_ = expr;
-                                       _tmp689_ = vala_object_creation_expression_get_argument_list (_tmp688_);
-                                       _tmp690_ = _tmp689_;
-                                       _tmp691_ = vala_collection_get_size ((ValaCollection*) _tmp690_);
-                                       _tmp692_ = _tmp691_;
-                                       _tmp693_ = _tmp692_ == 1;
-                                       _vala_iterable_unref0 (_tmp690_);
-                                       if (_tmp693_) {
-                                               ValaCCodeIdentifier* _tmp694_ = NULL;
-                                               ValaCCodeIdentifier* _tmp695_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp696_ = NULL;
-                                               _tmp694_ = vala_ccode_identifier_new ("g_error_new_literal");
-                                               _tmp695_ = _tmp694_;
-                                               _tmp696_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp695_);
+                                       ValaErrorDomain* _tmp706_ = NULL;
+                                       ValaCCodeFile* _tmp707_ = NULL;
+                                       ValaObjectCreationExpression* _tmp708_ = NULL;
+                                       ValaList* _tmp709_ = NULL;
+                                       ValaList* _tmp710_ = NULL;
+                                       gint _tmp711_ = 0;
+                                       gint _tmp712_ = 0;
+                                       gboolean _tmp713_ = FALSE;
+                                       ValaCCodeFunctionCall* _tmp720_ = NULL;
+                                       ValaErrorDomain* _tmp721_ = NULL;
+                                       gchar* _tmp722_ = NULL;
+                                       gchar* _tmp723_ = NULL;
+                                       ValaCCodeIdentifier* _tmp724_ = NULL;
+                                       ValaCCodeIdentifier* _tmp725_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp726_ = NULL;
+                                       ValaErrorCode* _tmp727_ = NULL;
+                                       gchar* _tmp728_ = NULL;
+                                       gchar* _tmp729_ = NULL;
+                                       ValaCCodeIdentifier* _tmp730_ = NULL;
+                                       ValaCCodeIdentifier* _tmp731_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp747_ = NULL;
+                                       ValaCCodeExpression* _tmp748_ = NULL;
+                                       _tmp698_ = expr;
+                                       _tmp699_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp698_);
+                                       _tmp700_ = _tmp699_;
+                                       _tmp701_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp700_, VALA_TYPE_ERROR_CODE, ValaErrorCode));
+                                       ecode = _tmp701_;
+                                       _tmp702_ = ecode;
+                                       _tmp703_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp702_);
+                                       _tmp704_ = _tmp703_;
+                                       _tmp705_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp704_, VALA_TYPE_ERROR_DOMAIN, ValaErrorDomain));
+                                       edomain = _tmp705_;
+                                       _tmp706_ = edomain;
+                                       _tmp707_ = self->cfile;
+                                       vala_ccode_base_module_generate_error_domain_declaration (self, _tmp706_, _tmp707_);
+                                       _tmp708_ = expr;
+                                       _tmp709_ = vala_object_creation_expression_get_argument_list (_tmp708_);
+                                       _tmp710_ = _tmp709_;
+                                       _tmp711_ = vala_collection_get_size ((ValaCollection*) _tmp710_);
+                                       _tmp712_ = _tmp711_;
+                                       _tmp713_ = _tmp712_ == 1;
+                                       _vala_iterable_unref0 (_tmp710_);
+                                       if (_tmp713_) {
+                                               ValaCCodeIdentifier* _tmp714_ = NULL;
+                                               ValaCCodeIdentifier* _tmp715_ = NULL;
+                                               ValaCCodeFunctionCall* _tmp716_ = NULL;
+                                               _tmp714_ = vala_ccode_identifier_new ("g_error_new_literal");
+                                               _tmp715_ = _tmp714_;
+                                               _tmp716_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp715_);
                                                _vala_ccode_node_unref0 (creation_call);
-                                               creation_call = _tmp696_;
-                                               _vala_ccode_node_unref0 (_tmp695_);
+                                               creation_call = _tmp716_;
+                                               _vala_ccode_node_unref0 (_tmp715_);
                                        } else {
-                                               ValaCCodeIdentifier* _tmp697_ = NULL;
-                                               ValaCCodeIdentifier* _tmp698_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp699_ = NULL;
-                                               _tmp697_ = vala_ccode_identifier_new ("g_error_new");
-                                               _tmp698_ = _tmp697_;
-                                               _tmp699_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp698_);
+                                               ValaCCodeIdentifier* _tmp717_ = NULL;
+                                               ValaCCodeIdentifier* _tmp718_ = NULL;
+                                               ValaCCodeFunctionCall* _tmp719_ = NULL;
+                                               _tmp717_ = vala_ccode_identifier_new ("g_error_new");
+                                               _tmp718_ = _tmp717_;
+                                               _tmp719_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp718_);
                                                _vala_ccode_node_unref0 (creation_call);
-                                               creation_call = _tmp699_;
-                                               _vala_ccode_node_unref0 (_tmp698_);
+                                               creation_call = _tmp719_;
+                                               _vala_ccode_node_unref0 (_tmp718_);
                                        }
-                                       _tmp700_ = creation_call;
-                                       _tmp701_ = edomain;
-                                       _tmp702_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp701_, NULL);
-                                       _tmp703_ = _tmp702_;
-                                       _tmp704_ = vala_ccode_identifier_new (_tmp703_);
-                                       _tmp705_ = _tmp704_;
-                                       vala_ccode_function_call_add_argument (_tmp700_, (ValaCCodeExpression*) _tmp705_);
-                                       _vala_ccode_node_unref0 (_tmp705_);
-                                       _g_free0 (_tmp703_);
-                                       _tmp706_ = creation_call;
-                                       _tmp707_ = ecode;
-                                       _tmp708_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp707_);
-                                       _tmp709_ = _tmp708_;
-                                       _tmp710_ = vala_ccode_identifier_new (_tmp709_);
-                                       _tmp711_ = _tmp710_;
-                                       vala_ccode_function_call_add_argument (_tmp706_, (ValaCCodeExpression*) _tmp711_);
-                                       _vala_ccode_node_unref0 (_tmp711_);
-                                       _g_free0 (_tmp709_);
+                                       _tmp720_ = creation_call;
+                                       _tmp721_ = edomain;
+                                       _tmp722_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp721_, NULL);
+                                       _tmp723_ = _tmp722_;
+                                       _tmp724_ = vala_ccode_identifier_new (_tmp723_);
+                                       _tmp725_ = _tmp724_;
+                                       vala_ccode_function_call_add_argument (_tmp720_, (ValaCCodeExpression*) _tmp725_);
+                                       _vala_ccode_node_unref0 (_tmp725_);
+                                       _g_free0 (_tmp723_);
+                                       _tmp726_ = creation_call;
+                                       _tmp727_ = ecode;
+                                       _tmp728_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp727_);
+                                       _tmp729_ = _tmp728_;
+                                       _tmp730_ = vala_ccode_identifier_new (_tmp729_);
+                                       _tmp731_ = _tmp730_;
+                                       vala_ccode_function_call_add_argument (_tmp726_, (ValaCCodeExpression*) _tmp731_);
+                                       _vala_ccode_node_unref0 (_tmp731_);
+                                       _g_free0 (_tmp729_);
                                        {
                                                ValaList* _arg_list = NULL;
-                                               ValaObjectCreationExpression* _tmp712_ = NULL;
-                                               ValaList* _tmp713_ = NULL;
+                                               ValaObjectCreationExpression* _tmp732_ = NULL;
+                                               ValaList* _tmp733_ = NULL;
                                                gint _arg_size = 0;
-                                               ValaList* _tmp714_ = NULL;
-                                               gint _tmp715_ = 0;
-                                               gint _tmp716_ = 0;
+                                               ValaList* _tmp734_ = NULL;
+                                               gint _tmp735_ = 0;
+                                               gint _tmp736_ = 0;
                                                gint _arg_index = 0;
-                                               _tmp712_ = expr;
-                                               _tmp713_ = vala_object_creation_expression_get_argument_list (_tmp712_);
-                                               _arg_list = _tmp713_;
-                                               _tmp714_ = _arg_list;
-                                               _tmp715_ = vala_collection_get_size ((ValaCollection*) _tmp714_);
-                                               _tmp716_ = _tmp715_;
-                                               _arg_size = _tmp716_;
+                                               _tmp732_ = expr;
+                                               _tmp733_ = vala_object_creation_expression_get_argument_list (_tmp732_);
+                                               _arg_list = _tmp733_;
+                                               _tmp734_ = _arg_list;
+                                               _tmp735_ = vala_collection_get_size ((ValaCollection*) _tmp734_);
+                                               _tmp736_ = _tmp735_;
+                                               _arg_size = _tmp736_;
                                                _arg_index = -1;
                                                while (TRUE) {
-                                                       gint _tmp717_ = 0;
-                                                       gint _tmp718_ = 0;
-                                                       gint _tmp719_ = 0;
+                                                       gint _tmp737_ = 0;
+                                                       gint _tmp738_ = 0;
+                                                       gint _tmp739_ = 0;
                                                        ValaExpression* arg = NULL;
-                                                       ValaList* _tmp720_ = NULL;
-                                                       gint _tmp721_ = 0;
-                                                       gpointer _tmp722_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp723_ = NULL;
-                                                       ValaExpression* _tmp724_ = NULL;
-                                                       ValaCCodeExpression* _tmp725_ = NULL;
-                                                       ValaCCodeExpression* _tmp726_ = NULL;
-                                                       _tmp717_ = _arg_index;
-                                                       _arg_index = _tmp717_ + 1;
-                                                       _tmp718_ = _arg_index;
-                                                       _tmp719_ = _arg_size;
-                                                       if (!(_tmp718_ < _tmp719_)) {
+                                                       ValaList* _tmp740_ = NULL;
+                                                       gint _tmp741_ = 0;
+                                                       gpointer _tmp742_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp743_ = NULL;
+                                                       ValaExpression* _tmp744_ = NULL;
+                                                       ValaCCodeExpression* _tmp745_ = NULL;
+                                                       ValaCCodeExpression* _tmp746_ = NULL;
+                                                       _tmp737_ = _arg_index;
+                                                       _arg_index = _tmp737_ + 1;
+                                                       _tmp738_ = _arg_index;
+                                                       _tmp739_ = _arg_size;
+                                                       if (!(_tmp738_ < _tmp739_)) {
                                                                break;
                                                        }
-                                                       _tmp720_ = _arg_list;
-                                                       _tmp721_ = _arg_index;
-                                                       _tmp722_ = vala_list_get (_tmp720_, _tmp721_);
-                                                       arg = (ValaExpression*) _tmp722_;
-                                                       _tmp723_ = creation_call;
-                                                       _tmp724_ = arg;
-                                                       _tmp725_ = vala_ccode_base_module_get_cvalue (self, _tmp724_);
-                                                       _tmp726_ = _tmp725_;
-                                                       vala_ccode_function_call_add_argument (_tmp723_, _tmp726_);
-                                                       _vala_ccode_node_unref0 (_tmp726_);
+                                                       _tmp740_ = _arg_list;
+                                                       _tmp741_ = _arg_index;
+                                                       _tmp742_ = vala_list_get (_tmp740_, _tmp741_);
+                                                       arg = (ValaExpression*) _tmp742_;
+                                                       _tmp743_ = creation_call;
+                                                       _tmp744_ = arg;
+                                                       _tmp745_ = vala_ccode_base_module_get_cvalue (self, _tmp744_);
+                                                       _tmp746_ = _tmp745_;
+                                                       vala_ccode_function_call_add_argument (_tmp743_, _tmp746_);
+                                                       _vala_ccode_node_unref0 (_tmp746_);
                                                        _vala_code_node_unref0 (arg);
                                                }
                                                _vala_iterable_unref0 (_arg_list);
                                        }
-                                       _tmp727_ = creation_call;
-                                       _tmp728_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp727_);
+                                       _tmp747_ = creation_call;
+                                       _tmp748_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp747_);
                                        _vala_ccode_node_unref0 (creation_expr);
-                                       creation_expr = _tmp728_;
+                                       creation_expr = _tmp748_;
                                        _vala_ccode_node_unref0 (creation_call);
                                        _vala_code_node_unref0 (edomain);
                                        _vala_code_node_unref0 (ecode);
@@ -28309,244 +28630,244 @@ static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCo
                        }
                }
        }
-       _tmp729_ = expr;
-       _tmp730_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp729_);
-       _tmp731_ = _tmp730_;
-       _tmp732_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp731_, VALA_TYPE_LOCAL_VARIABLE) ? ((ValaLocalVariable*) _tmp731_) : NULL);
-       local = _tmp732_;
-       _tmp734_ = local;
-       if (_tmp734_ != NULL) {
-               ValaLocalVariable* _tmp735_ = NULL;
-               ValaLocalVariable* _tmp736_ = NULL;
-               ValaExpression* _tmp737_ = NULL;
-               ValaExpression* _tmp738_ = NULL;
-               gboolean _tmp739_ = FALSE;
-               _tmp735_ = local;
-               _tmp736_ = local;
-               _tmp737_ = vala_variable_get_initializer ((ValaVariable*) _tmp736_);
-               _tmp738_ = _tmp737_;
-               _tmp739_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp735_, _tmp738_);
-               _tmp733_ = _tmp739_;
+       _tmp749_ = expr;
+       _tmp750_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp749_);
+       _tmp751_ = _tmp750_;
+       _tmp752_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp751_, VALA_TYPE_LOCAL_VARIABLE) ? ((ValaLocalVariable*) _tmp751_) : NULL);
+       local = _tmp752_;
+       _tmp754_ = local;
+       if (_tmp754_ != NULL) {
+               ValaLocalVariable* _tmp755_ = NULL;
+               ValaLocalVariable* _tmp756_ = NULL;
+               ValaExpression* _tmp757_ = NULL;
+               ValaExpression* _tmp758_ = NULL;
+               gboolean _tmp759_ = FALSE;
+               _tmp755_ = local;
+               _tmp756_ = local;
+               _tmp757_ = vala_variable_get_initializer ((ValaVariable*) _tmp756_);
+               _tmp758_ = _tmp757_;
+               _tmp759_ = vala_ccode_base_module_is_simple_struct_creation (self, (ValaVariable*) _tmp755_, _tmp758_);
+               _tmp753_ = _tmp759_;
        } else {
-               _tmp733_ = FALSE;
-       }
-       if (_tmp733_) {
-               ValaCCodeFunction* _tmp740_ = NULL;
-               ValaCCodeFunction* _tmp741_ = NULL;
-               ValaCCodeExpression* _tmp742_ = NULL;
-               ValaObjectCreationExpression* _tmp743_ = NULL;
-               ValaCCodeExpression* _tmp744_ = NULL;
-               _tmp740_ = vala_ccode_base_module_get_ccode (self);
-               _tmp741_ = _tmp740_;
-               _tmp742_ = creation_expr;
-               vala_ccode_function_add_expression (_tmp741_, _tmp742_);
-               _tmp743_ = expr;
-               _tmp744_ = instance;
-               vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp743_, _tmp744_);
+               _tmp753_ = FALSE;
+       }
+       if (_tmp753_) {
+               ValaCCodeFunction* _tmp760_ = NULL;
+               ValaCCodeFunction* _tmp761_ = NULL;
+               ValaCCodeExpression* _tmp762_ = NULL;
+               ValaObjectCreationExpression* _tmp763_ = NULL;
+               ValaCCodeExpression* _tmp764_ = NULL;
+               _tmp760_ = vala_ccode_base_module_get_ccode (self);
+               _tmp761_ = _tmp760_;
+               _tmp762_ = creation_expr;
+               vala_ccode_function_add_expression (_tmp761_, _tmp762_);
+               _tmp763_ = expr;
+               _tmp764_ = instance;
+               vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp763_, _tmp764_);
        } else {
-               ValaCCodeExpression* _tmp745_ = NULL;
-               _tmp745_ = instance;
-               if (_tmp745_ != NULL) {
-                       ValaObjectCreationExpression* _tmp746_ = NULL;
-                       ValaDataType* _tmp747_ = NULL;
-                       ValaDataType* _tmp748_ = NULL;
-                       ValaTypeSymbol* _tmp749_ = NULL;
-                       ValaTypeSymbol* _tmp750_ = NULL;
-                       ValaObjectCreationExpression* _tmp823_ = NULL;
-                       ValaCCodeExpression* _tmp824_ = NULL;
-                       _tmp746_ = expr;
-                       _tmp747_ = vala_object_creation_expression_get_type_reference (_tmp746_);
-                       _tmp748_ = _tmp747_;
-                       _tmp749_ = vala_data_type_get_data_type (_tmp748_);
-                       _tmp750_ = _tmp749_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp750_, VALA_TYPE_STRUCT)) {
-                               ValaCCodeFunction* _tmp751_ = NULL;
-                               ValaCCodeFunction* _tmp752_ = NULL;
-                               ValaCCodeExpression* _tmp753_ = NULL;
-                               _tmp751_ = vala_ccode_base_module_get_ccode (self);
-                               _tmp752_ = _tmp751_;
-                               _tmp753_ = creation_expr;
-                               vala_ccode_function_add_expression (_tmp752_, _tmp753_);
+               ValaCCodeExpression* _tmp765_ = NULL;
+               _tmp765_ = instance;
+               if (_tmp765_ != NULL) {
+                       ValaObjectCreationExpression* _tmp766_ = NULL;
+                       ValaDataType* _tmp767_ = NULL;
+                       ValaDataType* _tmp768_ = NULL;
+                       ValaTypeSymbol* _tmp769_ = NULL;
+                       ValaTypeSymbol* _tmp770_ = NULL;
+                       ValaObjectCreationExpression* _tmp843_ = NULL;
+                       ValaCCodeExpression* _tmp844_ = NULL;
+                       _tmp766_ = expr;
+                       _tmp767_ = vala_object_creation_expression_get_type_reference (_tmp766_);
+                       _tmp768_ = _tmp767_;
+                       _tmp769_ = vala_data_type_get_data_type (_tmp768_);
+                       _tmp770_ = _tmp769_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp770_, VALA_TYPE_STRUCT)) {
+                               ValaCCodeFunction* _tmp771_ = NULL;
+                               ValaCCodeFunction* _tmp772_ = NULL;
+                               ValaCCodeExpression* _tmp773_ = NULL;
+                               _tmp771_ = vala_ccode_base_module_get_ccode (self);
+                               _tmp772_ = _tmp771_;
+                               _tmp773_ = creation_expr;
+                               vala_ccode_function_add_expression (_tmp772_, _tmp773_);
                        } else {
-                               ValaCCodeFunction* _tmp754_ = NULL;
-                               ValaCCodeFunction* _tmp755_ = NULL;
-                               ValaCCodeExpression* _tmp756_ = NULL;
-                               ValaCCodeExpression* _tmp757_ = NULL;
-                               _tmp754_ = vala_ccode_base_module_get_ccode (self);
-                               _tmp755_ = _tmp754_;
-                               _tmp756_ = instance;
-                               _tmp757_ = creation_expr;
-                               vala_ccode_function_add_assignment (_tmp755_, _tmp756_, _tmp757_);
+                               ValaCCodeFunction* _tmp774_ = NULL;
+                               ValaCCodeFunction* _tmp775_ = NULL;
+                               ValaCCodeExpression* _tmp776_ = NULL;
+                               ValaCCodeExpression* _tmp777_ = NULL;
+                               _tmp774_ = vala_ccode_base_module_get_ccode (self);
+                               _tmp775_ = _tmp774_;
+                               _tmp776_ = instance;
+                               _tmp777_ = creation_expr;
+                               vala_ccode_function_add_assignment (_tmp775_, _tmp776_, _tmp777_);
                        }
                        {
                                ValaList* _init_list = NULL;
-                               ValaObjectCreationExpression* _tmp758_ = NULL;
-                               ValaList* _tmp759_ = NULL;
+                               ValaObjectCreationExpression* _tmp778_ = NULL;
+                               ValaList* _tmp779_ = NULL;
                                gint _init_size = 0;
-                               ValaList* _tmp760_ = NULL;
-                               gint _tmp761_ = 0;
-                               gint _tmp762_ = 0;
+                               ValaList* _tmp780_ = NULL;
+                               gint _tmp781_ = 0;
+                               gint _tmp782_ = 0;
                                gint _init_index = 0;
-                               _tmp758_ = expr;
-                               _tmp759_ = vala_object_creation_expression_get_object_initializer (_tmp758_);
-                               _init_list = _tmp759_;
-                               _tmp760_ = _init_list;
-                               _tmp761_ = vala_collection_get_size ((ValaCollection*) _tmp760_);
-                               _tmp762_ = _tmp761_;
-                               _init_size = _tmp762_;
+                               _tmp778_ = expr;
+                               _tmp779_ = vala_object_creation_expression_get_object_initializer (_tmp778_);
+                               _init_list = _tmp779_;
+                               _tmp780_ = _init_list;
+                               _tmp781_ = vala_collection_get_size ((ValaCollection*) _tmp780_);
+                               _tmp782_ = _tmp781_;
+                               _init_size = _tmp782_;
                                _init_index = -1;
                                while (TRUE) {
-                                       gint _tmp763_ = 0;
-                                       gint _tmp764_ = 0;
-                                       gint _tmp765_ = 0;
+                                       gint _tmp783_ = 0;
+                                       gint _tmp784_ = 0;
+                                       gint _tmp785_ = 0;
                                        ValaMemberInitializer* init = NULL;
-                                       ValaList* _tmp766_ = NULL;
-                                       gint _tmp767_ = 0;
-                                       gpointer _tmp768_ = NULL;
-                                       ValaMemberInitializer* _tmp769_ = NULL;
-                                       ValaSymbol* _tmp770_ = NULL;
-                                       ValaSymbol* _tmp771_ = NULL;
-                                       _tmp763_ = _init_index;
-                                       _init_index = _tmp763_ + 1;
-                                       _tmp764_ = _init_index;
-                                       _tmp765_ = _init_size;
-                                       if (!(_tmp764_ < _tmp765_)) {
+                                       ValaList* _tmp786_ = NULL;
+                                       gint _tmp787_ = 0;
+                                       gpointer _tmp788_ = NULL;
+                                       ValaMemberInitializer* _tmp789_ = NULL;
+                                       ValaSymbol* _tmp790_ = NULL;
+                                       ValaSymbol* _tmp791_ = NULL;
+                                       _tmp783_ = _init_index;
+                                       _init_index = _tmp783_ + 1;
+                                       _tmp784_ = _init_index;
+                                       _tmp785_ = _init_size;
+                                       if (!(_tmp784_ < _tmp785_)) {
                                                break;
                                        }
-                                       _tmp766_ = _init_list;
-                                       _tmp767_ = _init_index;
-                                       _tmp768_ = vala_list_get (_tmp766_, _tmp767_);
-                                       init = (ValaMemberInitializer*) _tmp768_;
-                                       _tmp769_ = init;
-                                       _tmp770_ = vala_member_initializer_get_symbol_reference (_tmp769_);
-                                       _tmp771_ = _tmp770_;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp771_, VALA_TYPE_FIELD)) {
+                                       _tmp786_ = _init_list;
+                                       _tmp787_ = _init_index;
+                                       _tmp788_ = vala_list_get (_tmp786_, _tmp787_);
+                                       init = (ValaMemberInitializer*) _tmp788_;
+                                       _tmp789_ = init;
+                                       _tmp790_ = vala_member_initializer_get_symbol_reference (_tmp789_);
+                                       _tmp791_ = _tmp790_;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp791_, VALA_TYPE_FIELD)) {
                                                ValaField* f = NULL;
-                                               ValaMemberInitializer* _tmp772_ = NULL;
-                                               ValaSymbol* _tmp773_ = NULL;
-                                               ValaSymbol* _tmp774_ = NULL;
-                                               ValaField* _tmp775_ = NULL;
+                                               ValaMemberInitializer* _tmp792_ = NULL;
+                                               ValaSymbol* _tmp793_ = NULL;
+                                               ValaSymbol* _tmp794_ = NULL;
+                                               ValaField* _tmp795_ = NULL;
                                                ValaDataType* instance_target_type = NULL;
-                                               ValaField* _tmp776_ = NULL;
-                                               ValaSymbol* _tmp777_ = NULL;
-                                               ValaSymbol* _tmp778_ = NULL;
-                                               ValaDataType* _tmp779_ = NULL;
+                                               ValaField* _tmp796_ = NULL;
+                                               ValaSymbol* _tmp797_ = NULL;
+                                               ValaSymbol* _tmp798_ = NULL;
+                                               ValaDataType* _tmp799_ = NULL;
                                                ValaTargetValue* typed_inst = NULL;
-                                               ValaObjectCreationExpression* _tmp780_ = NULL;
-                                               ValaDataType* _tmp781_ = NULL;
-                                               ValaDataType* _tmp782_ = NULL;
-                                               ValaCCodeExpression* _tmp783_ = NULL;
-                                               ValaGLibValue* _tmp784_ = NULL;
-                                               ValaGLibValue* _tmp785_ = NULL;
-                                               ValaDataType* _tmp786_ = NULL;
-                                               ValaMemberInitializer* _tmp787_ = NULL;
-                                               ValaTargetValue* _tmp788_ = NULL;
-                                               ValaTargetValue* _tmp789_ = NULL;
-                                               ValaField* _tmp790_ = NULL;
-                                               ValaTargetValue* _tmp791_ = NULL;
-                                               ValaMemberInitializer* _tmp792_ = NULL;
-                                               ValaExpression* _tmp793_ = NULL;
-                                               ValaExpression* _tmp794_ = NULL;
-                                               ValaTargetValue* _tmp795_ = NULL;
-                                               ValaTargetValue* _tmp796_ = NULL;
+                                               ValaObjectCreationExpression* _tmp800_ = NULL;
+                                               ValaDataType* _tmp801_ = NULL;
+                                               ValaDataType* _tmp802_ = NULL;
+                                               ValaCCodeExpression* _tmp803_ = NULL;
+                                               ValaGLibValue* _tmp804_ = NULL;
+                                               ValaGLibValue* _tmp805_ = NULL;
+                                               ValaDataType* _tmp806_ = NULL;
+                                               ValaMemberInitializer* _tmp807_ = NULL;
+                                               ValaTargetValue* _tmp808_ = NULL;
+                                               ValaTargetValue* _tmp809_ = NULL;
+                                               ValaField* _tmp810_ = NULL;
+                                               ValaTargetValue* _tmp811_ = NULL;
+                                               ValaMemberInitializer* _tmp812_ = NULL;
+                                               ValaExpression* _tmp813_ = NULL;
+                                               ValaExpression* _tmp814_ = NULL;
+                                               ValaTargetValue* _tmp815_ = NULL;
+                                               ValaTargetValue* _tmp816_ = NULL;
                                                ValaClass* cl = NULL;
-                                               ValaField* _tmp797_ = NULL;
-                                               ValaSymbol* _tmp798_ = NULL;
-                                               ValaSymbol* _tmp799_ = NULL;
-                                               ValaClass* _tmp800_ = NULL;
-                                               ValaClass* _tmp801_ = NULL;
-                                               _tmp772_ = init;
-                                               _tmp773_ = vala_member_initializer_get_symbol_reference (_tmp772_);
-                                               _tmp774_ = _tmp773_;
-                                               _tmp775_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp774_, VALA_TYPE_FIELD, ValaField));
-                                               f = _tmp775_;
-                                               _tmp776_ = f;
-                                               _tmp777_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp776_);
-                                               _tmp778_ = _tmp777_;
-                                               _tmp779_ = vala_ccode_base_module_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp778_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
-                                               instance_target_type = _tmp779_;
-                                               _tmp780_ = expr;
-                                               _tmp781_ = vala_object_creation_expression_get_type_reference (_tmp780_);
-                                               _tmp782_ = _tmp781_;
-                                               _tmp783_ = instance;
-                                               _tmp784_ = vala_glib_value_new (_tmp782_, _tmp783_, TRUE);
-                                               _tmp785_ = _tmp784_;
-                                               _tmp786_ = instance_target_type;
-                                               _tmp787_ = init;
-                                               _tmp788_ = vala_ccode_base_module_transform_value (self, (ValaTargetValue*) _tmp785_, _tmp786_, (ValaCodeNode*) _tmp787_);
-                                               _tmp789_ = _tmp788_;
-                                               _vala_target_value_unref0 (_tmp785_);
-                                               typed_inst = _tmp789_;
-                                               _tmp790_ = f;
-                                               _tmp791_ = typed_inst;
+                                               ValaField* _tmp817_ = NULL;
+                                               ValaSymbol* _tmp818_ = NULL;
+                                               ValaSymbol* _tmp819_ = NULL;
+                                               ValaClass* _tmp820_ = NULL;
+                                               ValaClass* _tmp821_ = NULL;
                                                _tmp792_ = init;
-                                               _tmp793_ = vala_member_initializer_get_initializer (_tmp792_);
+                                               _tmp793_ = vala_member_initializer_get_symbol_reference (_tmp792_);
                                                _tmp794_ = _tmp793_;
-                                               _tmp795_ = vala_expression_get_target_value (_tmp794_);
-                                               _tmp796_ = _tmp795_;
-                                               vala_code_generator_store_field ((ValaCodeGenerator*) self, _tmp790_, _tmp791_, _tmp796_);
-                                               _tmp797_ = f;
-                                               _tmp798_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp797_);
-                                               _tmp799_ = _tmp798_;
-                                               _tmp800_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp799_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp799_) : NULL);
-                                               cl = _tmp800_;
-                                               _tmp801_ = cl;
-                                               if (_tmp801_ != NULL) {
-                                                       ValaClass* _tmp802_ = NULL;
-                                                       ValaCCodeFile* _tmp803_ = NULL;
-                                                       _tmp802_ = cl;
-                                                       _tmp803_ = self->cfile;
-                                                       vala_ccode_base_module_generate_class_struct_declaration (self, _tmp802_, _tmp803_);
+                                               _tmp795_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp794_, VALA_TYPE_FIELD, ValaField));
+                                               f = _tmp795_;
+                                               _tmp796_ = f;
+                                               _tmp797_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp796_);
+                                               _tmp798_ = _tmp797_;
+                                               _tmp799_ = vala_ccode_base_module_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp798_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+                                               instance_target_type = _tmp799_;
+                                               _tmp800_ = expr;
+                                               _tmp801_ = vala_object_creation_expression_get_type_reference (_tmp800_);
+                                               _tmp802_ = _tmp801_;
+                                               _tmp803_ = instance;
+                                               _tmp804_ = vala_glib_value_new (_tmp802_, _tmp803_, TRUE);
+                                               _tmp805_ = _tmp804_;
+                                               _tmp806_ = instance_target_type;
+                                               _tmp807_ = init;
+                                               _tmp808_ = vala_ccode_base_module_transform_value (self, (ValaTargetValue*) _tmp805_, _tmp806_, (ValaCodeNode*) _tmp807_);
+                                               _tmp809_ = _tmp808_;
+                                               _vala_target_value_unref0 (_tmp805_);
+                                               typed_inst = _tmp809_;
+                                               _tmp810_ = f;
+                                               _tmp811_ = typed_inst;
+                                               _tmp812_ = init;
+                                               _tmp813_ = vala_member_initializer_get_initializer (_tmp812_);
+                                               _tmp814_ = _tmp813_;
+                                               _tmp815_ = vala_expression_get_target_value (_tmp814_);
+                                               _tmp816_ = _tmp815_;
+                                               vala_code_generator_store_field ((ValaCodeGenerator*) self, _tmp810_, _tmp811_, _tmp816_);
+                                               _tmp817_ = f;
+                                               _tmp818_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp817_);
+                                               _tmp819_ = _tmp818_;
+                                               _tmp820_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp819_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp819_) : NULL);
+                                               cl = _tmp820_;
+                                               _tmp821_ = cl;
+                                               if (_tmp821_ != NULL) {
+                                                       ValaClass* _tmp822_ = NULL;
+                                                       ValaCCodeFile* _tmp823_ = NULL;
+                                                       _tmp822_ = cl;
+                                                       _tmp823_ = self->cfile;
+                                                       vala_ccode_base_module_generate_class_struct_declaration (self, _tmp822_, _tmp823_);
                                                }
                                                _vala_code_node_unref0 (cl);
                                                _vala_target_value_unref0 (typed_inst);
                                                _vala_code_node_unref0 (instance_target_type);
                                                _vala_code_node_unref0 (f);
                                        } else {
-                                               ValaMemberInitializer* _tmp804_ = NULL;
-                                               ValaSymbol* _tmp805_ = NULL;
-                                               ValaSymbol* _tmp806_ = NULL;
-                                               _tmp804_ = init;
-                                               _tmp805_ = vala_member_initializer_get_symbol_reference (_tmp804_);
-                                               _tmp806_ = _tmp805_;
-                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp806_, VALA_TYPE_PROPERTY)) {
+                                               ValaMemberInitializer* _tmp824_ = NULL;
+                                               ValaSymbol* _tmp825_ = NULL;
+                                               ValaSymbol* _tmp826_ = NULL;
+                                               _tmp824_ = init;
+                                               _tmp825_ = vala_member_initializer_get_symbol_reference (_tmp824_);
+                                               _tmp826_ = _tmp825_;
+                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp826_, VALA_TYPE_PROPERTY)) {
                                                        ValaMemberAccess* inst_ma = NULL;
-                                                       ValaMemberAccess* _tmp807_ = NULL;
-                                                       ValaMemberAccess* _tmp808_ = NULL;
-                                                       ValaObjectCreationExpression* _tmp809_ = NULL;
-                                                       ValaDataType* _tmp810_ = NULL;
-                                                       ValaDataType* _tmp811_ = NULL;
-                                                       ValaMemberAccess* _tmp812_ = NULL;
-                                                       ValaCCodeExpression* _tmp813_ = NULL;
-                                                       ValaMemberInitializer* _tmp814_ = NULL;
-                                                       ValaSymbol* _tmp815_ = NULL;
-                                                       ValaSymbol* _tmp816_ = NULL;
-                                                       ValaMemberAccess* _tmp817_ = NULL;
-                                                       ValaMemberInitializer* _tmp818_ = NULL;
-                                                       ValaExpression* _tmp819_ = NULL;
-                                                       ValaExpression* _tmp820_ = NULL;
-                                                       ValaTargetValue* _tmp821_ = NULL;
-                                                       ValaTargetValue* _tmp822_ = NULL;
-                                                       _tmp807_ = vala_member_access_new_simple ("new", NULL);
-                                                       inst_ma = _tmp807_;
-                                                       _tmp808_ = inst_ma;
-                                                       _tmp809_ = expr;
-                                                       _tmp810_ = vala_object_creation_expression_get_type_reference (_tmp809_);
-                                                       _tmp811_ = _tmp810_;
-                                                       vala_expression_set_value_type ((ValaExpression*) _tmp808_, _tmp811_);
-                                                       _tmp812_ = inst_ma;
-                                                       _tmp813_ = instance;
-                                                       vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp812_, _tmp813_);
-                                                       _tmp814_ = init;
-                                                       _tmp815_ = vala_member_initializer_get_symbol_reference (_tmp814_);
-                                                       _tmp816_ = _tmp815_;
-                                                       _tmp817_ = inst_ma;
-                                                       _tmp818_ = init;
-                                                       _tmp819_ = vala_member_initializer_get_initializer (_tmp818_);
-                                                       _tmp820_ = _tmp819_;
-                                                       _tmp821_ = vala_expression_get_target_value (_tmp820_);
-                                                       _tmp822_ = _tmp821_;
-                                                       vala_ccode_base_module_store_property (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp816_, VALA_TYPE_PROPERTY, ValaProperty), (ValaExpression*) _tmp817_, _tmp822_);
+                                                       ValaMemberAccess* _tmp827_ = NULL;
+                                                       ValaMemberAccess* _tmp828_ = NULL;
+                                                       ValaObjectCreationExpression* _tmp829_ = NULL;
+                                                       ValaDataType* _tmp830_ = NULL;
+                                                       ValaDataType* _tmp831_ = NULL;
+                                                       ValaMemberAccess* _tmp832_ = NULL;
+                                                       ValaCCodeExpression* _tmp833_ = NULL;
+                                                       ValaMemberInitializer* _tmp834_ = NULL;
+                                                       ValaSymbol* _tmp835_ = NULL;
+                                                       ValaSymbol* _tmp836_ = NULL;
+                                                       ValaMemberAccess* _tmp837_ = NULL;
+                                                       ValaMemberInitializer* _tmp838_ = NULL;
+                                                       ValaExpression* _tmp839_ = NULL;
+                                                       ValaExpression* _tmp840_ = NULL;
+                                                       ValaTargetValue* _tmp841_ = NULL;
+                                                       ValaTargetValue* _tmp842_ = NULL;
+                                                       _tmp827_ = vala_member_access_new_simple ("new", NULL);
+                                                       inst_ma = _tmp827_;
+                                                       _tmp828_ = inst_ma;
+                                                       _tmp829_ = expr;
+                                                       _tmp830_ = vala_object_creation_expression_get_type_reference (_tmp829_);
+                                                       _tmp831_ = _tmp830_;
+                                                       vala_expression_set_value_type ((ValaExpression*) _tmp828_, _tmp831_);
+                                                       _tmp832_ = inst_ma;
+                                                       _tmp833_ = instance;
+                                                       vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp832_, _tmp833_);
+                                                       _tmp834_ = init;
+                                                       _tmp835_ = vala_member_initializer_get_symbol_reference (_tmp834_);
+                                                       _tmp836_ = _tmp835_;
+                                                       _tmp837_ = inst_ma;
+                                                       _tmp838_ = init;
+                                                       _tmp839_ = vala_member_initializer_get_initializer (_tmp838_);
+                                                       _tmp840_ = _tmp839_;
+                                                       _tmp841_ = vala_expression_get_target_value (_tmp840_);
+                                                       _tmp842_ = _tmp841_;
+                                                       vala_ccode_base_module_store_property (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp836_, VALA_TYPE_PROPERTY, ValaProperty), (ValaExpression*) _tmp837_, _tmp842_);
                                                        _vala_code_node_unref0 (inst_ma);
                                                }
                                        }
@@ -28554,194 +28875,194 @@ static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCo
                                }
                                _vala_iterable_unref0 (_init_list);
                        }
-                       _tmp823_ = expr;
-                       _tmp824_ = instance;
-                       vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp823_, _tmp824_);
+                       _tmp843_ = expr;
+                       _tmp844_ = instance;
+                       vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp843_, _tmp844_);
                } else {
-                       ValaCCodeExpression* _tmp825_ = NULL;
-                       _tmp825_ = creation_expr;
-                       if (_tmp825_ != NULL) {
+                       ValaCCodeExpression* _tmp845_ = NULL;
+                       _tmp845_ = creation_expr;
+                       if (_tmp845_ != NULL) {
                                ValaTargetValue* temp_value = NULL;
-                               ValaObjectCreationExpression* _tmp826_ = NULL;
-                               ValaDataType* _tmp827_ = NULL;
-                               ValaDataType* _tmp828_ = NULL;
-                               ValaObjectCreationExpression* _tmp829_ = NULL;
-                               ValaTargetValue* _tmp830_ = NULL;
-                               ValaCCodeFunction* _tmp831_ = NULL;
-                               ValaCCodeFunction* _tmp832_ = NULL;
-                               ValaTargetValue* _tmp833_ = NULL;
-                               ValaCCodeExpression* _tmp834_ = NULL;
-                               ValaCCodeExpression* _tmp835_ = NULL;
-                               ValaCCodeExpression* _tmp836_ = NULL;
-                               ValaObjectCreationExpression* _tmp837_ = NULL;
-                               ValaTargetValue* _tmp838_ = NULL;
-                               ValaCodeContext* _tmp839_ = NULL;
-                               gboolean _tmp840_ = FALSE;
-                               gboolean _tmp841_ = FALSE;
-                               _tmp826_ = expr;
-                               _tmp827_ = vala_expression_get_value_type ((ValaExpression*) _tmp826_);
-                               _tmp828_ = _tmp827_;
-                               _tmp829_ = expr;
-                               _tmp830_ = vala_ccode_base_module_create_temp_value (self, _tmp828_, FALSE, (ValaCodeNode*) _tmp829_, NULL);
-                               temp_value = _tmp830_;
-                               _tmp831_ = vala_ccode_base_module_get_ccode (self);
-                               _tmp832_ = _tmp831_;
-                               _tmp833_ = temp_value;
-                               _tmp834_ = vala_ccode_base_module_get_cvalue_ (self, _tmp833_);
-                               _tmp835_ = _tmp834_;
-                               _tmp836_ = creation_expr;
-                               vala_ccode_function_add_assignment (_tmp832_, _tmp835_, _tmp836_);
-                               _vala_ccode_node_unref0 (_tmp835_);
-                               _tmp837_ = expr;
-                               _tmp838_ = temp_value;
-                               vala_expression_set_target_value ((ValaExpression*) _tmp837_, _tmp838_);
-                               _tmp839_ = self->priv->_context;
-                               _tmp840_ = vala_code_context_get_gobject_tracing (_tmp839_);
-                               _tmp841_ = _tmp840_;
-                               if (_tmp841_) {
+                               ValaObjectCreationExpression* _tmp846_ = NULL;
+                               ValaDataType* _tmp847_ = NULL;
+                               ValaDataType* _tmp848_ = NULL;
+                               ValaObjectCreationExpression* _tmp849_ = NULL;
+                               ValaTargetValue* _tmp850_ = NULL;
+                               ValaCCodeFunction* _tmp851_ = NULL;
+                               ValaCCodeFunction* _tmp852_ = NULL;
+                               ValaTargetValue* _tmp853_ = NULL;
+                               ValaCCodeExpression* _tmp854_ = NULL;
+                               ValaCCodeExpression* _tmp855_ = NULL;
+                               ValaCCodeExpression* _tmp856_ = NULL;
+                               ValaObjectCreationExpression* _tmp857_ = NULL;
+                               ValaTargetValue* _tmp858_ = NULL;
+                               ValaCodeContext* _tmp859_ = NULL;
+                               gboolean _tmp860_ = FALSE;
+                               gboolean _tmp861_ = FALSE;
+                               _tmp846_ = expr;
+                               _tmp847_ = vala_expression_get_value_type ((ValaExpression*) _tmp846_);
+                               _tmp848_ = _tmp847_;
+                               _tmp849_ = expr;
+                               _tmp850_ = vala_ccode_base_module_create_temp_value (self, _tmp848_, FALSE, (ValaCodeNode*) _tmp849_, NULL);
+                               temp_value = _tmp850_;
+                               _tmp851_ = vala_ccode_base_module_get_ccode (self);
+                               _tmp852_ = _tmp851_;
+                               _tmp853_ = temp_value;
+                               _tmp854_ = vala_ccode_base_module_get_cvalue_ (self, _tmp853_);
+                               _tmp855_ = _tmp854_;
+                               _tmp856_ = creation_expr;
+                               vala_ccode_function_add_assignment (_tmp852_, _tmp855_, _tmp856_);
+                               _vala_ccode_node_unref0 (_tmp855_);
+                               _tmp857_ = expr;
+                               _tmp858_ = temp_value;
+                               vala_expression_set_target_value ((ValaExpression*) _tmp857_, _tmp858_);
+                               _tmp859_ = self->priv->_context;
+                               _tmp860_ = vala_code_context_get_gobject_tracing (_tmp859_);
+                               _tmp861_ = _tmp860_;
+                               if (_tmp861_) {
                                        ValaClass* cl = NULL;
-                                       ValaObjectCreationExpression* _tmp842_ = NULL;
-                                       ValaDataType* _tmp843_ = NULL;
-                                       ValaDataType* _tmp844_ = NULL;
-                                       ValaTypeSymbol* _tmp845_ = NULL;
-                                       ValaTypeSymbol* _tmp846_ = NULL;
-                                       ValaClass* _tmp847_ = NULL;
-                                       gboolean _tmp848_ = FALSE;
-                                       ValaClass* _tmp849_ = NULL;
-                                       _tmp842_ = expr;
-                                       _tmp843_ = vala_object_creation_expression_get_type_reference (_tmp842_);
-                                       _tmp844_ = _tmp843_;
-                                       _tmp845_ = vala_data_type_get_data_type (_tmp844_);
-                                       _tmp846_ = _tmp845_;
-                                       _tmp847_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp846_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp846_) : NULL);
-                                       cl = _tmp847_;
-                                       _tmp849_ = cl;
-                                       if (_tmp849_ != NULL) {
-                                               ValaClass* _tmp850_ = NULL;
-                                               ValaTypeSymbol* _tmp851_ = NULL;
-                                               gboolean _tmp852_ = FALSE;
-                                               _tmp850_ = cl;
-                                               _tmp851_ = self->gobject_type;
-                                               _tmp852_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp850_, _tmp851_);
-                                               _tmp848_ = _tmp852_;
+                                       ValaObjectCreationExpression* _tmp862_ = NULL;
+                                       ValaDataType* _tmp863_ = NULL;
+                                       ValaDataType* _tmp864_ = NULL;
+                                       ValaTypeSymbol* _tmp865_ = NULL;
+                                       ValaTypeSymbol* _tmp866_ = NULL;
+                                       ValaClass* _tmp867_ = NULL;
+                                       gboolean _tmp868_ = FALSE;
+                                       ValaClass* _tmp869_ = NULL;
+                                       _tmp862_ = expr;
+                                       _tmp863_ = vala_object_creation_expression_get_type_reference (_tmp862_);
+                                       _tmp864_ = _tmp863_;
+                                       _tmp865_ = vala_data_type_get_data_type (_tmp864_);
+                                       _tmp866_ = _tmp865_;
+                                       _tmp867_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp866_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp866_) : NULL);
+                                       cl = _tmp867_;
+                                       _tmp869_ = cl;
+                                       if (_tmp869_ != NULL) {
+                                               ValaClass* _tmp870_ = NULL;
+                                               ValaTypeSymbol* _tmp871_ = NULL;
+                                               gboolean _tmp872_ = FALSE;
+                                               _tmp870_ = cl;
+                                               _tmp871_ = self->gobject_type;
+                                               _tmp872_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp870_, _tmp871_);
+                                               _tmp868_ = _tmp872_;
                                        } else {
-                                               _tmp848_ = FALSE;
+                                               _tmp868_ = FALSE;
                                        }
-                                       if (_tmp848_) {
-                                               ValaCCodeFunction* _tmp853_ = NULL;
-                                               ValaCCodeFunction* _tmp854_ = NULL;
-                                               ValaObjectCreationExpression* _tmp855_ = NULL;
-                                               ValaTargetValue* _tmp856_ = NULL;
-                                               ValaTargetValue* _tmp857_ = NULL;
-                                               ValaCCodeExpression* _tmp858_ = NULL;
-                                               ValaCCodeExpression* _tmp859_ = NULL;
+                                       if (_tmp868_) {
+                                               ValaCCodeFunction* _tmp873_ = NULL;
+                                               ValaCCodeFunction* _tmp874_ = NULL;
+                                               ValaObjectCreationExpression* _tmp875_ = NULL;
+                                               ValaTargetValue* _tmp876_ = NULL;
+                                               ValaTargetValue* _tmp877_ = NULL;
+                                               ValaCCodeExpression* _tmp878_ = NULL;
+                                               ValaCCodeExpression* _tmp879_ = NULL;
                                                ValaCCodeFunctionCall* set_data_call = NULL;
-                                               ValaCCodeIdentifier* _tmp860_ = NULL;
-                                               ValaCCodeIdentifier* _tmp861_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp862_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp863_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp864_ = NULL;
-                                               ValaObjectCreationExpression* _tmp865_ = NULL;
-                                               ValaTargetValue* _tmp866_ = NULL;
-                                               ValaTargetValue* _tmp867_ = NULL;
-                                               ValaCCodeExpression* _tmp868_ = NULL;
-                                               ValaCCodeExpression* _tmp869_ = NULL;
-                                               ValaCCodeCastExpression* _tmp870_ = NULL;
-                                               ValaCCodeCastExpression* _tmp871_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp872_ = NULL;
-                                               ValaCCodeConstant* _tmp873_ = NULL;
-                                               ValaCCodeConstant* _tmp874_ = NULL;
+                                               ValaCCodeIdentifier* _tmp880_ = NULL;
+                                               ValaCCodeIdentifier* _tmp881_ = NULL;
+                                               ValaCCodeFunctionCall* _tmp882_ = NULL;
+                                               ValaCCodeFunctionCall* _tmp883_ = NULL;
+                                               ValaCCodeFunctionCall* _tmp884_ = NULL;
+                                               ValaObjectCreationExpression* _tmp885_ = NULL;
+                                               ValaTargetValue* _tmp886_ = NULL;
+                                               ValaTargetValue* _tmp887_ = NULL;
+                                               ValaCCodeExpression* _tmp888_ = NULL;
+                                               ValaCCodeExpression* _tmp889_ = NULL;
+                                               ValaCCodeCastExpression* _tmp890_ = NULL;
+                                               ValaCCodeCastExpression* _tmp891_ = NULL;
+                                               ValaCCodeFunctionCall* _tmp892_ = NULL;
+                                               ValaCCodeConstant* _tmp893_ = NULL;
+                                               ValaCCodeConstant* _tmp894_ = NULL;
                                                gchar* func_name = NULL;
-                                               gchar* _tmp875_ = NULL;
-                                               ValaMethod* _tmp876_ = NULL;
-                                               ValaMethod* _tmp877_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp886_ = NULL;
-                                               const gchar* _tmp887_ = NULL;
-                                               gchar* _tmp888_ = NULL;
-                                               gchar* _tmp889_ = NULL;
-                                               ValaCCodeConstant* _tmp890_ = NULL;
-                                               ValaCCodeConstant* _tmp891_ = NULL;
-                                               ValaCCodeFunction* _tmp892_ = NULL;
-                                               ValaCCodeFunction* _tmp893_ = NULL;
-                                               ValaCCodeFunctionCall* _tmp894_ = NULL;
-                                               ValaCCodeFunction* _tmp895_ = NULL;
-                                               ValaCCodeFunction* _tmp896_ = NULL;
-                                               _tmp853_ = vala_ccode_base_module_get_ccode (self);
-                                               _tmp854_ = _tmp853_;
-                                               _tmp855_ = expr;
-                                               _tmp856_ = vala_expression_get_target_value ((ValaExpression*) _tmp855_);
-                                               _tmp857_ = _tmp856_;
-                                               _tmp858_ = vala_ccode_base_module_get_cvalue_ (self, _tmp857_);
-                                               _tmp859_ = _tmp858_;
-                                               vala_ccode_function_open_if (_tmp854_, _tmp859_);
-                                               _vala_ccode_node_unref0 (_tmp859_);
-                                               _tmp860_ = vala_ccode_identifier_new ("g_object_set_data");
-                                               _tmp861_ = _tmp860_;
-                                               _tmp862_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp861_);
-                                               _tmp863_ = _tmp862_;
-                                               _vala_ccode_node_unref0 (_tmp861_);
-                                               set_data_call = _tmp863_;
-                                               _tmp864_ = set_data_call;
-                                               _tmp865_ = expr;
-                                               _tmp866_ = vala_expression_get_target_value ((ValaExpression*) _tmp865_);
-                                               _tmp867_ = _tmp866_;
-                                               _tmp868_ = vala_ccode_base_module_get_cvalue_ (self, _tmp867_);
-                                               _tmp869_ = _tmp868_;
-                                               _tmp870_ = vala_ccode_cast_expression_new (_tmp869_, "GObject *");
-                                               _tmp871_ = _tmp870_;
-                                               vala_ccode_function_call_add_argument (_tmp864_, (ValaCCodeExpression*) _tmp871_);
-                                               _vala_ccode_node_unref0 (_tmp871_);
-                                               _vala_ccode_node_unref0 (_tmp869_);
-                                               _tmp872_ = set_data_call;
-                                               _tmp873_ = vala_ccode_constant_new ("\"vala-creation-function\"");
+                                               gchar* _tmp895_ = NULL;
+                                               ValaMethod* _tmp896_ = NULL;
+                                               ValaMethod* _tmp897_ = NULL;
+                                               ValaCCodeFunctionCall* _tmp906_ = NULL;
+                                               const gchar* _tmp907_ = NULL;
+                                               gchar* _tmp908_ = NULL;
+                                               gchar* _tmp909_ = NULL;
+                                               ValaCCodeConstant* _tmp910_ = NULL;
+                                               ValaCCodeConstant* _tmp911_ = NULL;
+                                               ValaCCodeFunction* _tmp912_ = NULL;
+                                               ValaCCodeFunction* _tmp913_ = NULL;
+                                               ValaCCodeFunctionCall* _tmp914_ = NULL;
+                                               ValaCCodeFunction* _tmp915_ = NULL;
+                                               ValaCCodeFunction* _tmp916_ = NULL;
+                                               _tmp873_ = vala_ccode_base_module_get_ccode (self);
                                                _tmp874_ = _tmp873_;
-                                               vala_ccode_function_call_add_argument (_tmp872_, (ValaCCodeExpression*) _tmp874_);
-                                               _vala_ccode_node_unref0 (_tmp874_);
-                                               _tmp875_ = g_strdup ("");
-                                               func_name = _tmp875_;
-                                               _tmp876_ = vala_ccode_base_module_get_current_method (self);
+                                               _tmp875_ = expr;
+                                               _tmp876_ = vala_expression_get_target_value ((ValaExpression*) _tmp875_);
                                                _tmp877_ = _tmp876_;
-                                               if (_tmp877_ != NULL) {
-                                                       ValaMethod* _tmp878_ = NULL;
-                                                       ValaMethod* _tmp879_ = NULL;
-                                                       gchar* _tmp880_ = NULL;
-                                                       _tmp878_ = vala_ccode_base_module_get_current_method (self);
-                                                       _tmp879_ = _tmp878_;
-                                                       _tmp880_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp879_);
+                                               _tmp878_ = vala_ccode_base_module_get_cvalue_ (self, _tmp877_);
+                                               _tmp879_ = _tmp878_;
+                                               vala_ccode_function_open_if (_tmp874_, _tmp879_);
+                                               _vala_ccode_node_unref0 (_tmp879_);
+                                               _tmp880_ = vala_ccode_identifier_new ("g_object_set_data");
+                                               _tmp881_ = _tmp880_;
+                                               _tmp882_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp881_);
+                                               _tmp883_ = _tmp882_;
+                                               _vala_ccode_node_unref0 (_tmp881_);
+                                               set_data_call = _tmp883_;
+                                               _tmp884_ = set_data_call;
+                                               _tmp885_ = expr;
+                                               _tmp886_ = vala_expression_get_target_value ((ValaExpression*) _tmp885_);
+                                               _tmp887_ = _tmp886_;
+                                               _tmp888_ = vala_ccode_base_module_get_cvalue_ (self, _tmp887_);
+                                               _tmp889_ = _tmp888_;
+                                               _tmp890_ = vala_ccode_cast_expression_new (_tmp889_, "GObject *");
+                                               _tmp891_ = _tmp890_;
+                                               vala_ccode_function_call_add_argument (_tmp884_, (ValaCCodeExpression*) _tmp891_);
+                                               _vala_ccode_node_unref0 (_tmp891_);
+                                               _vala_ccode_node_unref0 (_tmp889_);
+                                               _tmp892_ = set_data_call;
+                                               _tmp893_ = vala_ccode_constant_new ("\"vala-creation-function\"");
+                                               _tmp894_ = _tmp893_;
+                                               vala_ccode_function_call_add_argument (_tmp892_, (ValaCCodeExpression*) _tmp894_);
+                                               _vala_ccode_node_unref0 (_tmp894_);
+                                               _tmp895_ = g_strdup ("");
+                                               func_name = _tmp895_;
+                                               _tmp896_ = vala_ccode_base_module_get_current_method (self);
+                                               _tmp897_ = _tmp896_;
+                                               if (_tmp897_ != NULL) {
+                                                       ValaMethod* _tmp898_ = NULL;
+                                                       ValaMethod* _tmp899_ = NULL;
+                                                       gchar* _tmp900_ = NULL;
+                                                       _tmp898_ = vala_ccode_base_module_get_current_method (self);
+                                                       _tmp899_ = _tmp898_;
+                                                       _tmp900_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp899_);
                                                        _g_free0 (func_name);
-                                                       func_name = _tmp880_;
+                                                       func_name = _tmp900_;
                                                } else {
-                                                       ValaPropertyAccessor* _tmp881_ = NULL;
-                                                       ValaPropertyAccessor* _tmp882_ = NULL;
-                                                       _tmp881_ = vala_ccode_base_module_get_current_property_accessor (self);
-                                                       _tmp882_ = _tmp881_;
-                                                       if (_tmp882_ != NULL) {
-                                                               ValaPropertyAccessor* _tmp883_ = NULL;
-                                                               ValaPropertyAccessor* _tmp884_ = NULL;
-                                                               gchar* _tmp885_ = NULL;
-                                                               _tmp883_ = vala_ccode_base_module_get_current_property_accessor (self);
-                                                               _tmp884_ = _tmp883_;
-                                                               _tmp885_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp884_);
+                                                       ValaPropertyAccessor* _tmp901_ = NULL;
+                                                       ValaPropertyAccessor* _tmp902_ = NULL;
+                                                       _tmp901_ = vala_ccode_base_module_get_current_property_accessor (self);
+                                                       _tmp902_ = _tmp901_;
+                                                       if (_tmp902_ != NULL) {
+                                                               ValaPropertyAccessor* _tmp903_ = NULL;
+                                                               ValaPropertyAccessor* _tmp904_ = NULL;
+                                                               gchar* _tmp905_ = NULL;
+                                                               _tmp903_ = vala_ccode_base_module_get_current_property_accessor (self);
+                                                               _tmp904_ = _tmp903_;
+                                                               _tmp905_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp904_);
                                                                _g_free0 (func_name);
-                                                               func_name = _tmp885_;
+                                                               func_name = _tmp905_;
                                                        }
                                                }
-                                               _tmp886_ = set_data_call;
-                                               _tmp887_ = func_name;
-                                               _tmp888_ = g_strdup_printf ("\"%s\"", _tmp887_);
-                                               _tmp889_ = _tmp888_;
-                                               _tmp890_ = vala_ccode_constant_new (_tmp889_);
-                                               _tmp891_ = _tmp890_;
-                                               vala_ccode_function_call_add_argument (_tmp886_, (ValaCCodeExpression*) _tmp891_);
-                                               _vala_ccode_node_unref0 (_tmp891_);
-                                               _g_free0 (_tmp889_);
-                                               _tmp892_ = vala_ccode_base_module_get_ccode (self);
-                                               _tmp893_ = _tmp892_;
-                                               _tmp894_ = set_data_call;
-                                               vala_ccode_function_add_expression (_tmp893_, (ValaCCodeExpression*) _tmp894_);
-                                               _tmp895_ = vala_ccode_base_module_get_ccode (self);
-                                               _tmp896_ = _tmp895_;
-                                               vala_ccode_function_close (_tmp896_);
+                                               _tmp906_ = set_data_call;
+                                               _tmp907_ = func_name;
+                                               _tmp908_ = g_strdup_printf ("\"%s\"", _tmp907_);
+                                               _tmp909_ = _tmp908_;
+                                               _tmp910_ = vala_ccode_constant_new (_tmp909_);
+                                               _tmp911_ = _tmp910_;
+                                               vala_ccode_function_call_add_argument (_tmp906_, (ValaCCodeExpression*) _tmp911_);
+                                               _vala_ccode_node_unref0 (_tmp911_);
+                                               _g_free0 (_tmp909_);
+                                               _tmp912_ = vala_ccode_base_module_get_ccode (self);
+                                               _tmp913_ = _tmp912_;
+                                               _tmp914_ = set_data_call;
+                                               vala_ccode_function_add_expression (_tmp913_, (ValaCCodeExpression*) _tmp914_);
+                                               _tmp915_ = vala_ccode_base_module_get_ccode (self);
+                                               _tmp916_ = _tmp915_;
+                                               vala_ccode_function_close (_tmp916_);
                                                _g_free0 (func_name);
                                                _vala_ccode_node_unref0 (set_data_call);
                                        }
@@ -28751,10 +29072,10 @@ static void vala_ccode_base_module_real_visit_object_creation_expression (ValaCo
                        }
                }
        }
-       _tmp897_ = expr;
-       _tmp898_ = vala_expression_get_target_value ((ValaExpression*) _tmp897_);
-       _tmp899_ = _tmp898_;
-       G_TYPE_CHECK_INSTANCE_CAST (_tmp899_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->lvalue = TRUE;
+       _tmp917_ = expr;
+       _tmp918_ = vala_expression_get_target_value ((ValaExpression*) _tmp917_);
+       _tmp919_ = _tmp918_;
+       G_TYPE_CHECK_INSTANCE_CAST (_tmp919_, VALA_TYPE_GLIB_VALUE, ValaGLibValue)->lvalue = TRUE;
        _vala_code_node_unref0 (local);
        _vala_code_node_unref0 (st);
        _vala_ccode_node_unref0 (creation_expr);
@@ -30369,268 +30690,276 @@ static void vala_ccode_base_module_real_visit_cast_expression (ValaCodeVisitor*
                gboolean _tmp143_ = FALSE;
                gboolean _tmp144_ = FALSE;
                ValaArrayType* array_type = NULL;
-               ValaCastExpression* _tmp149_ = NULL;
-               ValaDataType* _tmp150_ = NULL;
-               ValaDataType* _tmp151_ = NULL;
-               ValaArrayType* _tmp152_ = NULL;
-               gboolean _tmp153_ = FALSE;
-               ValaArrayType* _tmp154_ = NULL;
+               ValaCastExpression* _tmp152_ = NULL;
+               ValaDataType* _tmp153_ = NULL;
+               ValaDataType* _tmp154_ = NULL;
+               ValaArrayType* _tmp155_ = NULL;
+               gboolean _tmp156_ = FALSE;
+               ValaArrayType* _tmp157_ = NULL;
                ValaCCodeExpression* innercexpr = NULL;
-               ValaCastExpression* _tmp241_ = NULL;
-               ValaExpression* _tmp242_ = NULL;
-               ValaExpression* _tmp243_ = NULL;
-               ValaCCodeExpression* _tmp244_ = NULL;
-               gboolean _tmp245_ = FALSE;
-               gboolean _tmp246_ = FALSE;
-               gboolean _tmp247_ = FALSE;
-               ValaCastExpression* _tmp248_ = NULL;
-               ValaDataType* _tmp249_ = NULL;
-               ValaDataType* _tmp250_ = NULL;
-               ValaCastExpression* _tmp270_ = NULL;
-               ValaCCodeExpression* _tmp271_ = NULL;
-               ValaCastExpression* _tmp272_ = NULL;
-               ValaDataType* _tmp273_ = NULL;
-               ValaDataType* _tmp274_ = NULL;
-               gchar* _tmp275_ = NULL;
-               gchar* _tmp276_ = NULL;
-               ValaCCodeCastExpression* _tmp277_ = NULL;
-               ValaCCodeCastExpression* _tmp278_ = NULL;
-               ValaCastExpression* _tmp279_ = NULL;
-               ValaDataType* _tmp280_ = NULL;
-               ValaDataType* _tmp281_ = NULL;
+               ValaCastExpression* _tmp244_ = NULL;
+               ValaExpression* _tmp245_ = NULL;
+               ValaExpression* _tmp246_ = NULL;
+               ValaCCodeExpression* _tmp247_ = NULL;
+               gboolean _tmp248_ = FALSE;
+               gboolean _tmp249_ = FALSE;
+               gboolean _tmp250_ = FALSE;
+               ValaCastExpression* _tmp251_ = NULL;
+               ValaDataType* _tmp252_ = NULL;
+               ValaDataType* _tmp253_ = NULL;
+               ValaCastExpression* _tmp273_ = NULL;
+               ValaCCodeExpression* _tmp274_ = NULL;
+               ValaCastExpression* _tmp275_ = NULL;
+               ValaDataType* _tmp276_ = NULL;
+               ValaDataType* _tmp277_ = NULL;
+               gchar* _tmp278_ = NULL;
+               gchar* _tmp279_ = NULL;
+               ValaCCodeCastExpression* _tmp280_ = NULL;
+               ValaCCodeCastExpression* _tmp281_ = NULL;
+               ValaCastExpression* _tmp282_ = NULL;
+               ValaDataType* _tmp283_ = NULL;
+               ValaDataType* _tmp284_ = NULL;
                _tmp142_ = expr;
                _tmp143_ = vala_cast_expression_get_is_silent_cast (_tmp142_);
                _tmp144_ = _tmp143_;
                if (_tmp144_) {
                        ValaCastExpression* _tmp145_ = NULL;
-                       ValaCastExpression* _tmp146_ = NULL;
-                       ValaSourceReference* _tmp147_ = NULL;
-                       ValaSourceReference* _tmp148_ = NULL;
+                       ValaCCodeInvalidExpression* _tmp146_ = NULL;
+                       ValaCCodeInvalidExpression* _tmp147_ = NULL;
+                       ValaCastExpression* _tmp148_ = NULL;
+                       ValaCastExpression* _tmp149_ = NULL;
+                       ValaSourceReference* _tmp150_ = NULL;
+                       ValaSourceReference* _tmp151_ = NULL;
                        _tmp145_ = expr;
-                       vala_code_node_set_error ((ValaCodeNode*) _tmp145_, TRUE);
-                       _tmp146_ = expr;
-                       _tmp147_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp146_);
-                       _tmp148_ = _tmp147_;
-                       vala_report_error (_tmp148_, "Operation not supported for this type");
+                       _tmp146_ = vala_ccode_invalid_expression_new ();
+                       _tmp147_ = _tmp146_;
+                       vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp145_, (ValaCCodeExpression*) _tmp147_);
+                       _vala_ccode_node_unref0 (_tmp147_);
+                       _tmp148_ = expr;
+                       vala_code_node_set_error ((ValaCodeNode*) _tmp148_, TRUE);
+                       _tmp149_ = expr;
+                       _tmp150_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp149_);
+                       _tmp151_ = _tmp150_;
+                       vala_report_error (_tmp151_, "Operation not supported for this type");
                        _vala_code_node_unref0 (iface);
                        _vala_code_node_unref0 (cl);
                        return;
                }
-               _tmp149_ = expr;
-               _tmp150_ = vala_cast_expression_get_type_reference (_tmp149_);
-               _tmp151_ = _tmp150_;
-               _tmp152_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp151_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp151_) : NULL);
-               array_type = _tmp152_;
-               _tmp154_ = array_type;
-               if (_tmp154_ != NULL) {
-                       ValaCastExpression* _tmp155_ = NULL;
-                       ValaExpression* _tmp156_ = NULL;
-                       ValaExpression* _tmp157_ = NULL;
-                       ValaDataType* _tmp158_ = NULL;
-                       ValaDataType* _tmp159_ = NULL;
-                       _tmp155_ = expr;
-                       _tmp156_ = vala_cast_expression_get_inner (_tmp155_);
-                       _tmp157_ = _tmp156_;
-                       _tmp158_ = vala_expression_get_value_type (_tmp157_);
-                       _tmp159_ = _tmp158_;
-                       _tmp153_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp159_, VALA_TYPE_ARRAY_TYPE);
+               _tmp152_ = expr;
+               _tmp153_ = vala_cast_expression_get_type_reference (_tmp152_);
+               _tmp154_ = _tmp153_;
+               _tmp155_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp154_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp154_) : NULL);
+               array_type = _tmp155_;
+               _tmp157_ = array_type;
+               if (_tmp157_ != NULL) {
+                       ValaCastExpression* _tmp158_ = NULL;
+                       ValaExpression* _tmp159_ = NULL;
+                       ValaExpression* _tmp160_ = NULL;
+                       ValaDataType* _tmp161_ = NULL;
+                       ValaDataType* _tmp162_ = NULL;
+                       _tmp158_ = expr;
+                       _tmp159_ = vala_cast_expression_get_inner (_tmp158_);
+                       _tmp160_ = _tmp159_;
+                       _tmp161_ = vala_expression_get_value_type (_tmp160_);
+                       _tmp162_ = _tmp161_;
+                       _tmp156_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp162_, VALA_TYPE_ARRAY_TYPE);
                } else {
-                       _tmp153_ = FALSE;
+                       _tmp156_ = FALSE;
                }
-               if (_tmp153_) {
-                       gboolean _tmp160_ = FALSE;
-                       ValaArrayType* _tmp161_ = NULL;
-                       ValaDataType* _tmp162_ = NULL;
-                       ValaDataType* _tmp163_ = NULL;
-                       _tmp161_ = array_type;
-                       _tmp162_ = vala_array_type_get_element_type (_tmp161_);
-                       _tmp163_ = _tmp162_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp163_, VALA_TYPE_GENERIC_TYPE)) {
-                               _tmp160_ = TRUE;
+               if (_tmp156_) {
+                       gboolean _tmp163_ = FALSE;
+                       ValaArrayType* _tmp164_ = NULL;
+                       ValaDataType* _tmp165_ = NULL;
+                       ValaDataType* _tmp166_ = NULL;
+                       _tmp164_ = array_type;
+                       _tmp165_ = vala_array_type_get_element_type (_tmp164_);
+                       _tmp166_ = _tmp165_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp166_, VALA_TYPE_GENERIC_TYPE)) {
+                               _tmp163_ = TRUE;
                        } else {
-                               ValaCastExpression* _tmp164_ = NULL;
-                               ValaExpression* _tmp165_ = NULL;
-                               ValaExpression* _tmp166_ = NULL;
-                               ValaDataType* _tmp167_ = NULL;
-                               ValaDataType* _tmp168_ = NULL;
-                               ValaDataType* _tmp169_ = NULL;
+                               ValaCastExpression* _tmp167_ = NULL;
+                               ValaExpression* _tmp168_ = NULL;
+                               ValaExpression* _tmp169_ = NULL;
                                ValaDataType* _tmp170_ = NULL;
-                               _tmp164_ = expr;
-                               _tmp165_ = vala_cast_expression_get_inner (_tmp164_);
-                               _tmp166_ = _tmp165_;
-                               _tmp167_ = vala_expression_get_value_type (_tmp166_);
-                               _tmp168_ = _tmp167_;
-                               _tmp169_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp168_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                               _tmp170_ = _tmp169_;
-                               _tmp160_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp170_, VALA_TYPE_GENERIC_TYPE);
+                               ValaDataType* _tmp171_ = NULL;
+                               ValaDataType* _tmp172_ = NULL;
+                               ValaDataType* _tmp173_ = NULL;
+                               _tmp167_ = expr;
+                               _tmp168_ = vala_cast_expression_get_inner (_tmp167_);
+                               _tmp169_ = _tmp168_;
+                               _tmp170_ = vala_expression_get_value_type (_tmp169_);
+                               _tmp171_ = _tmp170_;
+                               _tmp172_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp171_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                               _tmp173_ = _tmp172_;
+                               _tmp163_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp173_, VALA_TYPE_GENERIC_TYPE);
                        }
-                       if (_tmp160_) {
+                       if (_tmp163_) {
                                {
                                        gint dim = 0;
                                        dim = 1;
                                        {
-                                               gboolean _tmp171_ = FALSE;
-                                               _tmp171_ = TRUE;
+                                               gboolean _tmp174_ = FALSE;
+                                               _tmp174_ = TRUE;
                                                while (TRUE) {
-                                                       gint _tmp173_ = 0;
-                                                       ValaArrayType* _tmp174_ = NULL;
-                                                       gint _tmp175_ = 0;
                                                        gint _tmp176_ = 0;
-                                                       ValaCastExpression* _tmp177_ = NULL;
-                                                       ValaCastExpression* _tmp178_ = NULL;
-                                                       ValaExpression* _tmp179_ = NULL;
-                                                       ValaExpression* _tmp180_ = NULL;
-                                                       gint _tmp181_ = 0;
-                                                       ValaCCodeExpression* _tmp182_ = NULL;
-                                                       ValaCCodeExpression* _tmp183_ = NULL;
-                                                       if (!_tmp171_) {
-                                                               gint _tmp172_ = 0;
-                                                               _tmp172_ = dim;
-                                                               dim = _tmp172_ + 1;
+                                                       ValaArrayType* _tmp177_ = NULL;
+                                                       gint _tmp178_ = 0;
+                                                       gint _tmp179_ = 0;
+                                                       ValaCastExpression* _tmp180_ = NULL;
+                                                       ValaCastExpression* _tmp181_ = NULL;
+                                                       ValaExpression* _tmp182_ = NULL;
+                                                       ValaExpression* _tmp183_ = NULL;
+                                                       gint _tmp184_ = 0;
+                                                       ValaCCodeExpression* _tmp185_ = NULL;
+                                                       ValaCCodeExpression* _tmp186_ = NULL;
+                                                       if (!_tmp174_) {
+                                                               gint _tmp175_ = 0;
+                                                               _tmp175_ = dim;
+                                                               dim = _tmp175_ + 1;
                                                        }
-                                                       _tmp171_ = FALSE;
-                                                       _tmp173_ = dim;
-                                                       _tmp174_ = array_type;
-                                                       _tmp175_ = vala_array_type_get_rank (_tmp174_);
-                                                       _tmp176_ = _tmp175_;
-                                                       if (!(_tmp173_ <= _tmp176_)) {
+                                                       _tmp174_ = FALSE;
+                                                       _tmp176_ = dim;
+                                                       _tmp177_ = array_type;
+                                                       _tmp178_ = vala_array_type_get_rank (_tmp177_);
+                                                       _tmp179_ = _tmp178_;
+                                                       if (!(_tmp176_ <= _tmp179_)) {
                                                                break;
                                                        }
-                                                       _tmp177_ = expr;
-                                                       _tmp178_ = expr;
-                                                       _tmp179_ = vala_cast_expression_get_inner (_tmp178_);
-                                                       _tmp180_ = _tmp179_;
-                                                       _tmp181_ = dim;
-                                                       _tmp182_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp180_, _tmp181_);
+                                                       _tmp180_ = expr;
+                                                       _tmp181_ = expr;
+                                                       _tmp182_ = vala_cast_expression_get_inner (_tmp181_);
                                                        _tmp183_ = _tmp182_;
-                                                       vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp177_, _tmp183_);
-                                                       _vala_ccode_node_unref0 (_tmp183_);
+                                                       _tmp184_ = dim;
+                                                       _tmp185_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp183_, _tmp184_);
+                                                       _tmp186_ = _tmp185_;
+                                                       vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp180_, _tmp186_);
+                                                       _vala_ccode_node_unref0 (_tmp186_);
                                                }
                                        }
                                }
                        } else {
                                ValaCCodeFunctionCall* sizeof_to = NULL;
-                               ValaCCodeIdentifier* _tmp184_ = NULL;
-                               ValaCCodeIdentifier* _tmp185_ = NULL;
-                               ValaCCodeFunctionCall* _tmp186_ = NULL;
-                               ValaCCodeFunctionCall* _tmp187_ = NULL;
-                               ValaCCodeFunctionCall* _tmp188_ = NULL;
-                               ValaArrayType* _tmp189_ = NULL;
-                               ValaDataType* _tmp190_ = NULL;
-                               ValaDataType* _tmp191_ = NULL;
-                               gchar* _tmp192_ = NULL;
-                               gchar* _tmp193_ = NULL;
-                               ValaCCodeConstant* _tmp194_ = NULL;
-                               ValaCCodeConstant* _tmp195_ = NULL;
+                               ValaCCodeIdentifier* _tmp187_ = NULL;
+                               ValaCCodeIdentifier* _tmp188_ = NULL;
+                               ValaCCodeFunctionCall* _tmp189_ = NULL;
+                               ValaCCodeFunctionCall* _tmp190_ = NULL;
+                               ValaCCodeFunctionCall* _tmp191_ = NULL;
+                               ValaArrayType* _tmp192_ = NULL;
+                               ValaDataType* _tmp193_ = NULL;
+                               ValaDataType* _tmp194_ = NULL;
+                               gchar* _tmp195_ = NULL;
+                               gchar* _tmp196_ = NULL;
+                               ValaCCodeConstant* _tmp197_ = NULL;
+                               ValaCCodeConstant* _tmp198_ = NULL;
                                ValaCCodeFunctionCall* sizeof_from = NULL;
-                               ValaCCodeIdentifier* _tmp196_ = NULL;
-                               ValaCCodeIdentifier* _tmp197_ = NULL;
-                               ValaCCodeFunctionCall* _tmp198_ = NULL;
-                               ValaCCodeFunctionCall* _tmp199_ = NULL;
-                               ValaCCodeFunctionCall* _tmp200_ = NULL;
-                               ValaCastExpression* _tmp201_ = NULL;
-                               ValaExpression* _tmp202_ = NULL;
-                               ValaExpression* _tmp203_ = NULL;
-                               ValaDataType* _tmp204_ = NULL;
-                               ValaDataType* _tmp205_ = NULL;
-                               ValaDataType* _tmp206_ = NULL;
+                               ValaCCodeIdentifier* _tmp199_ = NULL;
+                               ValaCCodeIdentifier* _tmp200_ = NULL;
+                               ValaCCodeFunctionCall* _tmp201_ = NULL;
+                               ValaCCodeFunctionCall* _tmp202_ = NULL;
+                               ValaCCodeFunctionCall* _tmp203_ = NULL;
+                               ValaCastExpression* _tmp204_ = NULL;
+                               ValaExpression* _tmp205_ = NULL;
+                               ValaExpression* _tmp206_ = NULL;
                                ValaDataType* _tmp207_ = NULL;
-                               gchar* _tmp208_ = NULL;
-                               gchar* _tmp209_ = NULL;
-                               ValaCCodeConstant* _tmp210_ = NULL;
-                               ValaCCodeConstant* _tmp211_ = NULL;
-                               _tmp184_ = vala_ccode_identifier_new ("sizeof");
-                               _tmp185_ = _tmp184_;
-                               _tmp186_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp185_);
-                               _tmp187_ = _tmp186_;
-                               _vala_ccode_node_unref0 (_tmp185_);
-                               sizeof_to = _tmp187_;
-                               _tmp188_ = sizeof_to;
-                               _tmp189_ = array_type;
-                               _tmp190_ = vala_array_type_get_element_type (_tmp189_);
-                               _tmp191_ = _tmp190_;
-                               _tmp192_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp191_);
-                               _tmp193_ = _tmp192_;
-                               _tmp194_ = vala_ccode_constant_new (_tmp193_);
-                               _tmp195_ = _tmp194_;
-                               vala_ccode_function_call_add_argument (_tmp188_, (ValaCCodeExpression*) _tmp195_);
-                               _vala_ccode_node_unref0 (_tmp195_);
-                               _g_free0 (_tmp193_);
-                               _tmp196_ = vala_ccode_identifier_new ("sizeof");
-                               _tmp197_ = _tmp196_;
-                               _tmp198_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp197_);
-                               _tmp199_ = _tmp198_;
-                               _vala_ccode_node_unref0 (_tmp197_);
-                               sizeof_from = _tmp199_;
-                               _tmp200_ = sizeof_from;
-                               _tmp201_ = expr;
-                               _tmp202_ = vala_cast_expression_get_inner (_tmp201_);
-                               _tmp203_ = _tmp202_;
-                               _tmp204_ = vala_expression_get_value_type (_tmp203_);
-                               _tmp205_ = _tmp204_;
-                               _tmp206_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp205_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                               _tmp207_ = _tmp206_;
-                               _tmp208_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp207_);
-                               _tmp209_ = _tmp208_;
-                               _tmp210_ = vala_ccode_constant_new (_tmp209_);
-                               _tmp211_ = _tmp210_;
-                               vala_ccode_function_call_add_argument (_tmp200_, (ValaCCodeExpression*) _tmp211_);
-                               _vala_ccode_node_unref0 (_tmp211_);
-                               _g_free0 (_tmp209_);
+                               ValaDataType* _tmp208_ = NULL;
+                               ValaDataType* _tmp209_ = NULL;
+                               ValaDataType* _tmp210_ = NULL;
+                               gchar* _tmp211_ = NULL;
+                               gchar* _tmp212_ = NULL;
+                               ValaCCodeConstant* _tmp213_ = NULL;
+                               ValaCCodeConstant* _tmp214_ = NULL;
+                               _tmp187_ = vala_ccode_identifier_new ("sizeof");
+                               _tmp188_ = _tmp187_;
+                               _tmp189_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp188_);
+                               _tmp190_ = _tmp189_;
+                               _vala_ccode_node_unref0 (_tmp188_);
+                               sizeof_to = _tmp190_;
+                               _tmp191_ = sizeof_to;
+                               _tmp192_ = array_type;
+                               _tmp193_ = vala_array_type_get_element_type (_tmp192_);
+                               _tmp194_ = _tmp193_;
+                               _tmp195_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp194_);
+                               _tmp196_ = _tmp195_;
+                               _tmp197_ = vala_ccode_constant_new (_tmp196_);
+                               _tmp198_ = _tmp197_;
+                               vala_ccode_function_call_add_argument (_tmp191_, (ValaCCodeExpression*) _tmp198_);
+                               _vala_ccode_node_unref0 (_tmp198_);
+                               _g_free0 (_tmp196_);
+                               _tmp199_ = vala_ccode_identifier_new ("sizeof");
+                               _tmp200_ = _tmp199_;
+                               _tmp201_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp200_);
+                               _tmp202_ = _tmp201_;
+                               _vala_ccode_node_unref0 (_tmp200_);
+                               sizeof_from = _tmp202_;
+                               _tmp203_ = sizeof_from;
+                               _tmp204_ = expr;
+                               _tmp205_ = vala_cast_expression_get_inner (_tmp204_);
+                               _tmp206_ = _tmp205_;
+                               _tmp207_ = vala_expression_get_value_type (_tmp206_);
+                               _tmp208_ = _tmp207_;
+                               _tmp209_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp208_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                               _tmp210_ = _tmp209_;
+                               _tmp211_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp210_);
+                               _tmp212_ = _tmp211_;
+                               _tmp213_ = vala_ccode_constant_new (_tmp212_);
+                               _tmp214_ = _tmp213_;
+                               vala_ccode_function_call_add_argument (_tmp203_, (ValaCCodeExpression*) _tmp214_);
+                               _vala_ccode_node_unref0 (_tmp214_);
+                               _g_free0 (_tmp212_);
                                {
                                        gint dim = 0;
                                        dim = 1;
                                        {
-                                               gboolean _tmp212_ = FALSE;
-                                               _tmp212_ = TRUE;
+                                               gboolean _tmp215_ = FALSE;
+                                               _tmp215_ = TRUE;
                                                while (TRUE) {
-                                                       gint _tmp214_ = 0;
-                                                       ValaArrayType* _tmp215_ = NULL;
-                                                       gint _tmp216_ = 0;
                                                        gint _tmp217_ = 0;
-                                                       ValaCastExpression* _tmp218_ = NULL;
-                                                       ValaCastExpression* _tmp219_ = NULL;
-                                                       ValaExpression* _tmp220_ = NULL;
-                                                       ValaExpression* _tmp221_ = NULL;
-                                                       gint _tmp222_ = 0;
-                                                       ValaCCodeExpression* _tmp223_ = NULL;
-                                                       ValaCCodeExpression* _tmp224_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp225_ = NULL;
-                                                       ValaCCodeBinaryExpression* _tmp226_ = NULL;
-                                                       ValaCCodeBinaryExpression* _tmp227_ = NULL;
+                                                       ValaArrayType* _tmp218_ = NULL;
+                                                       gint _tmp219_ = 0;
+                                                       gint _tmp220_ = 0;
+                                                       ValaCastExpression* _tmp221_ = NULL;
+                                                       ValaCastExpression* _tmp222_ = NULL;
+                                                       ValaExpression* _tmp223_ = NULL;
+                                                       ValaExpression* _tmp224_ = NULL;
+                                                       gint _tmp225_ = 0;
+                                                       ValaCCodeExpression* _tmp226_ = NULL;
+                                                       ValaCCodeExpression* _tmp227_ = NULL;
                                                        ValaCCodeFunctionCall* _tmp228_ = NULL;
                                                        ValaCCodeBinaryExpression* _tmp229_ = NULL;
                                                        ValaCCodeBinaryExpression* _tmp230_ = NULL;
-                                                       if (!_tmp212_) {
-                                                               gint _tmp213_ = 0;
-                                                               _tmp213_ = dim;
-                                                               dim = _tmp213_ + 1;
+                                                       ValaCCodeFunctionCall* _tmp231_ = NULL;
+                                                       ValaCCodeBinaryExpression* _tmp232_ = NULL;
+                                                       ValaCCodeBinaryExpression* _tmp233_ = NULL;
+                                                       if (!_tmp215_) {
+                                                               gint _tmp216_ = 0;
+                                                               _tmp216_ = dim;
+                                                               dim = _tmp216_ + 1;
                                                        }
-                                                       _tmp212_ = FALSE;
-                                                       _tmp214_ = dim;
-                                                       _tmp215_ = array_type;
-                                                       _tmp216_ = vala_array_type_get_rank (_tmp215_);
-                                                       _tmp217_ = _tmp216_;
-                                                       if (!(_tmp214_ <= _tmp217_)) {
+                                                       _tmp215_ = FALSE;
+                                                       _tmp217_ = dim;
+                                                       _tmp218_ = array_type;
+                                                       _tmp219_ = vala_array_type_get_rank (_tmp218_);
+                                                       _tmp220_ = _tmp219_;
+                                                       if (!(_tmp217_ <= _tmp220_)) {
                                                                break;
                                                        }
-                                                       _tmp218_ = expr;
-                                                       _tmp219_ = expr;
-                                                       _tmp220_ = vala_cast_expression_get_inner (_tmp219_);
-                                                       _tmp221_ = _tmp220_;
-                                                       _tmp222_ = dim;
-                                                       _tmp223_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp221_, _tmp222_);
+                                                       _tmp221_ = expr;
+                                                       _tmp222_ = expr;
+                                                       _tmp223_ = vala_cast_expression_get_inner (_tmp222_);
                                                        _tmp224_ = _tmp223_;
-                                                       _tmp225_ = sizeof_from;
-                                                       _tmp226_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MUL, _tmp224_, (ValaCCodeExpression*) _tmp225_);
+                                                       _tmp225_ = dim;
+                                                       _tmp226_ = vala_ccode_base_module_get_array_length_cexpression (self, _tmp224_, _tmp225_);
                                                        _tmp227_ = _tmp226_;
-                                                       _tmp228_ = sizeof_to;
-                                                       _tmp229_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_DIV, (ValaCCodeExpression*) _tmp227_, (ValaCCodeExpression*) _tmp228_);
+                                                       _tmp228_ = sizeof_from;
+                                                       _tmp229_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_MUL, _tmp227_, (ValaCCodeExpression*) _tmp228_);
                                                        _tmp230_ = _tmp229_;
-                                                       vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp218_, (ValaCCodeExpression*) _tmp230_);
+                                                       _tmp231_ = sizeof_to;
+                                                       _tmp232_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_DIV, (ValaCCodeExpression*) _tmp230_, (ValaCCodeExpression*) _tmp231_);
+                                                       _tmp233_ = _tmp232_;
+                                                       vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp221_, (ValaCCodeExpression*) _tmp233_);
+                                                       _vala_ccode_node_unref0 (_tmp233_);
                                                        _vala_ccode_node_unref0 (_tmp230_);
                                                        _vala_ccode_node_unref0 (_tmp227_);
-                                                       _vala_ccode_node_unref0 (_tmp224_);
                                                }
                                        }
                                }
@@ -30638,202 +30967,202 @@ static void vala_ccode_base_module_real_visit_cast_expression (ValaCodeVisitor*
                                _vala_ccode_node_unref0 (sizeof_to);
                        }
                } else {
-                       ValaArrayType* _tmp231_ = NULL;
-                       _tmp231_ = array_type;
-                       if (_tmp231_ != NULL) {
+                       ValaArrayType* _tmp234_ = NULL;
+                       _tmp234_ = array_type;
+                       if (_tmp234_ != NULL) {
                                {
                                        gint dim = 0;
                                        dim = 1;
                                        {
-                                               gboolean _tmp232_ = FALSE;
-                                               _tmp232_ = TRUE;
+                                               gboolean _tmp235_ = FALSE;
+                                               _tmp235_ = TRUE;
                                                while (TRUE) {
-                                                       gint _tmp234_ = 0;
-                                                       ValaArrayType* _tmp235_ = NULL;
-                                                       gint _tmp236_ = 0;
                                                        gint _tmp237_ = 0;
-                                                       ValaCastExpression* _tmp238_ = NULL;
-                                                       ValaCCodeConstant* _tmp239_ = NULL;
-                                                       ValaCCodeConstant* _tmp240_ = NULL;
-                                                       if (!_tmp232_) {
-                                                               gint _tmp233_ = 0;
-                                                               _tmp233_ = dim;
-                                                               dim = _tmp233_ + 1;
+                                                       ValaArrayType* _tmp238_ = NULL;
+                                                       gint _tmp239_ = 0;
+                                                       gint _tmp240_ = 0;
+                                                       ValaCastExpression* _tmp241_ = NULL;
+                                                       ValaCCodeConstant* _tmp242_ = NULL;
+                                                       ValaCCodeConstant* _tmp243_ = NULL;
+                                                       if (!_tmp235_) {
+                                                               gint _tmp236_ = 0;
+                                                               _tmp236_ = dim;
+                                                               dim = _tmp236_ + 1;
                                                        }
-                                                       _tmp232_ = FALSE;
-                                                       _tmp234_ = dim;
-                                                       _tmp235_ = array_type;
-                                                       _tmp236_ = vala_array_type_get_rank (_tmp235_);
-                                                       _tmp237_ = _tmp236_;
-                                                       if (!(_tmp234_ <= _tmp237_)) {
+                                                       _tmp235_ = FALSE;
+                                                       _tmp237_ = dim;
+                                                       _tmp238_ = array_type;
+                                                       _tmp239_ = vala_array_type_get_rank (_tmp238_);
+                                                       _tmp240_ = _tmp239_;
+                                                       if (!(_tmp237_ <= _tmp240_)) {
                                                                break;
                                                        }
-                                                       _tmp238_ = expr;
-                                                       _tmp239_ = vala_ccode_constant_new ("-1");
-                                                       _tmp240_ = _tmp239_;
-                                                       vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp238_, (ValaCCodeExpression*) _tmp240_);
-                                                       _vala_ccode_node_unref0 (_tmp240_);
+                                                       _tmp241_ = expr;
+                                                       _tmp242_ = vala_ccode_constant_new ("-1");
+                                                       _tmp243_ = _tmp242_;
+                                                       vala_ccode_base_module_append_array_length (self, (ValaExpression*) _tmp241_, (ValaCCodeExpression*) _tmp243_);
+                                                       _vala_ccode_node_unref0 (_tmp243_);
                                                }
                                        }
                                }
                        }
                }
-               _tmp241_ = expr;
-               _tmp242_ = vala_cast_expression_get_inner (_tmp241_);
-               _tmp243_ = _tmp242_;
-               _tmp244_ = vala_ccode_base_module_get_cvalue (self, _tmp243_);
-               innercexpr = _tmp244_;
-               _tmp248_ = expr;
-               _tmp249_ = vala_cast_expression_get_type_reference (_tmp248_);
-               _tmp250_ = _tmp249_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp250_, VALA_TYPE_VALUE_TYPE)) {
-                       ValaCastExpression* _tmp251_ = NULL;
-                       ValaDataType* _tmp252_ = NULL;
-                       ValaDataType* _tmp253_ = NULL;
-                       gboolean _tmp254_ = FALSE;
-                       gboolean _tmp255_ = FALSE;
-                       _tmp251_ = expr;
-                       _tmp252_ = vala_cast_expression_get_type_reference (_tmp251_);
-                       _tmp253_ = _tmp252_;
-                       _tmp254_ = vala_data_type_get_nullable (_tmp253_);
-                       _tmp255_ = _tmp254_;
-                       _tmp247_ = !_tmp255_;
-               } else {
-                       _tmp247_ = FALSE;
-               }
-               if (_tmp247_) {
-                       ValaCastExpression* _tmp256_ = NULL;
-                       ValaExpression* _tmp257_ = NULL;
-                       ValaExpression* _tmp258_ = NULL;
-                       ValaDataType* _tmp259_ = NULL;
-                       ValaDataType* _tmp260_ = NULL;
-                       _tmp256_ = expr;
-                       _tmp257_ = vala_cast_expression_get_inner (_tmp256_);
+               _tmp244_ = expr;
+               _tmp245_ = vala_cast_expression_get_inner (_tmp244_);
+               _tmp246_ = _tmp245_;
+               _tmp247_ = vala_ccode_base_module_get_cvalue (self, _tmp246_);
+               innercexpr = _tmp247_;
+               _tmp251_ = expr;
+               _tmp252_ = vala_cast_expression_get_type_reference (_tmp251_);
+               _tmp253_ = _tmp252_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp253_, VALA_TYPE_VALUE_TYPE)) {
+                       ValaCastExpression* _tmp254_ = NULL;
+                       ValaDataType* _tmp255_ = NULL;
+                       ValaDataType* _tmp256_ = NULL;
+                       gboolean _tmp257_ = FALSE;
+                       gboolean _tmp258_ = FALSE;
+                       _tmp254_ = expr;
+                       _tmp255_ = vala_cast_expression_get_type_reference (_tmp254_);
+                       _tmp256_ = _tmp255_;
+                       _tmp257_ = vala_data_type_get_nullable (_tmp256_);
                        _tmp258_ = _tmp257_;
-                       _tmp259_ = vala_expression_get_value_type (_tmp258_);
-                       _tmp260_ = _tmp259_;
-                       _tmp246_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp260_, VALA_TYPE_VALUE_TYPE);
+                       _tmp250_ = !_tmp258_;
                } else {
-                       _tmp246_ = FALSE;
-               }
-               if (_tmp246_) {
-                       ValaCastExpression* _tmp261_ = NULL;
-                       ValaExpression* _tmp262_ = NULL;
-                       ValaExpression* _tmp263_ = NULL;
-                       ValaDataType* _tmp264_ = NULL;
-                       ValaDataType* _tmp265_ = NULL;
-                       gboolean _tmp266_ = FALSE;
-                       gboolean _tmp267_ = FALSE;
-                       _tmp261_ = expr;
-                       _tmp262_ = vala_cast_expression_get_inner (_tmp261_);
+                       _tmp250_ = FALSE;
+               }
+               if (_tmp250_) {
+                       ValaCastExpression* _tmp259_ = NULL;
+                       ValaExpression* _tmp260_ = NULL;
+                       ValaExpression* _tmp261_ = NULL;
+                       ValaDataType* _tmp262_ = NULL;
+                       ValaDataType* _tmp263_ = NULL;
+                       _tmp259_ = expr;
+                       _tmp260_ = vala_cast_expression_get_inner (_tmp259_);
+                       _tmp261_ = _tmp260_;
+                       _tmp262_ = vala_expression_get_value_type (_tmp261_);
                        _tmp263_ = _tmp262_;
-                       _tmp264_ = vala_expression_get_value_type (_tmp263_);
-                       _tmp265_ = _tmp264_;
-                       _tmp266_ = vala_data_type_get_nullable (_tmp265_);
-                       _tmp267_ = _tmp266_;
-                       _tmp245_ = _tmp267_;
+                       _tmp249_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp263_, VALA_TYPE_VALUE_TYPE);
                } else {
-                       _tmp245_ = FALSE;
+                       _tmp249_ = FALSE;
+               }
+               if (_tmp249_) {
+                       ValaCastExpression* _tmp264_ = NULL;
+                       ValaExpression* _tmp265_ = NULL;
+                       ValaExpression* _tmp266_ = NULL;
+                       ValaDataType* _tmp267_ = NULL;
+                       ValaDataType* _tmp268_ = NULL;
+                       gboolean _tmp269_ = FALSE;
+                       gboolean _tmp270_ = FALSE;
+                       _tmp264_ = expr;
+                       _tmp265_ = vala_cast_expression_get_inner (_tmp264_);
+                       _tmp266_ = _tmp265_;
+                       _tmp267_ = vala_expression_get_value_type (_tmp266_);
+                       _tmp268_ = _tmp267_;
+                       _tmp269_ = vala_data_type_get_nullable (_tmp268_);
+                       _tmp270_ = _tmp269_;
+                       _tmp248_ = _tmp270_;
+               } else {
+                       _tmp248_ = FALSE;
                }
-               if (_tmp245_) {
-                       ValaCCodeExpression* _tmp268_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp269_ = NULL;
-                       _tmp268_ = innercexpr;
-                       _tmp269_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp268_);
+               if (_tmp248_) {
+                       ValaCCodeExpression* _tmp271_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp272_ = NULL;
+                       _tmp271_ = innercexpr;
+                       _tmp272_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp271_);
                        _vala_ccode_node_unref0 (innercexpr);
-                       innercexpr = (ValaCCodeExpression*) _tmp269_;
-               }
-               _tmp270_ = expr;
-               _tmp271_ = innercexpr;
-               _tmp272_ = expr;
-               _tmp273_ = vala_cast_expression_get_type_reference (_tmp272_);
-               _tmp274_ = _tmp273_;
-               _tmp275_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp274_);
-               _tmp276_ = _tmp275_;
-               _tmp277_ = vala_ccode_cast_expression_new (_tmp271_, _tmp276_);
-               _tmp278_ = _tmp277_;
-               vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp270_, (ValaCCodeExpression*) _tmp278_);
-               _vala_ccode_node_unref0 (_tmp278_);
-               _g_free0 (_tmp276_);
-               _tmp279_ = expr;
-               _tmp280_ = vala_cast_expression_get_type_reference (_tmp279_);
+                       innercexpr = (ValaCCodeExpression*) _tmp272_;
+               }
+               _tmp273_ = expr;
+               _tmp274_ = innercexpr;
+               _tmp275_ = expr;
+               _tmp276_ = vala_cast_expression_get_type_reference (_tmp275_);
+               _tmp277_ = _tmp276_;
+               _tmp278_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp277_);
+               _tmp279_ = _tmp278_;
+               _tmp280_ = vala_ccode_cast_expression_new (_tmp274_, _tmp279_);
                _tmp281_ = _tmp280_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp281_, VALA_TYPE_DELEGATE_TYPE)) {
-                       ValaCastExpression* _tmp282_ = NULL;
-                       ValaExpression* _tmp283_ = NULL;
-                       ValaExpression* _tmp284_ = NULL;
-                       ValaCCodeExpression* _tmp285_ = NULL;
-                       ValaCCodeExpression* _tmp286_ = NULL;
-                       gboolean _tmp287_ = FALSE;
-                       ValaCastExpression* _tmp297_ = NULL;
-                       ValaExpression* _tmp298_ = NULL;
-                       ValaExpression* _tmp299_ = NULL;
-                       ValaCCodeExpression* _tmp300_ = NULL;
-                       ValaCCodeExpression* _tmp301_ = NULL;
-                       gboolean _tmp302_ = FALSE;
-                       _tmp282_ = expr;
-                       _tmp283_ = vala_cast_expression_get_inner (_tmp282_);
-                       _tmp284_ = _tmp283_;
-                       _tmp285_ = vala_ccode_base_module_get_delegate_target (self, _tmp284_);
-                       _tmp286_ = _tmp285_;
-                       _tmp287_ = _tmp286_ != NULL;
-                       _vala_ccode_node_unref0 (_tmp286_);
-                       if (_tmp287_) {
-                               ValaCastExpression* _tmp288_ = NULL;
-                               ValaCastExpression* _tmp289_ = NULL;
-                               ValaExpression* _tmp290_ = NULL;
-                               ValaExpression* _tmp291_ = NULL;
-                               ValaCCodeExpression* _tmp292_ = NULL;
-                               ValaCCodeExpression* _tmp293_ = NULL;
-                               _tmp288_ = expr;
-                               _tmp289_ = expr;
-                               _tmp290_ = vala_cast_expression_get_inner (_tmp289_);
-                               _tmp291_ = _tmp290_;
-                               _tmp292_ = vala_ccode_base_module_get_delegate_target (self, _tmp291_);
-                               _tmp293_ = _tmp292_;
-                               vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp288_, _tmp293_);
-                               _vala_ccode_node_unref0 (_tmp293_);
-                       } else {
-                               ValaCastExpression* _tmp294_ = NULL;
-                               ValaCCodeConstant* _tmp295_ = NULL;
-                               ValaCCodeConstant* _tmp296_ = NULL;
-                               _tmp294_ = expr;
-                               _tmp295_ = vala_ccode_constant_new ("NULL");
+               vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp273_, (ValaCCodeExpression*) _tmp281_);
+               _vala_ccode_node_unref0 (_tmp281_);
+               _g_free0 (_tmp279_);
+               _tmp282_ = expr;
+               _tmp283_ = vala_cast_expression_get_type_reference (_tmp282_);
+               _tmp284_ = _tmp283_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp284_, VALA_TYPE_DELEGATE_TYPE)) {
+                       ValaCastExpression* _tmp285_ = NULL;
+                       ValaExpression* _tmp286_ = NULL;
+                       ValaExpression* _tmp287_ = NULL;
+                       ValaCCodeExpression* _tmp288_ = NULL;
+                       ValaCCodeExpression* _tmp289_ = NULL;
+                       gboolean _tmp290_ = FALSE;
+                       ValaCastExpression* _tmp300_ = NULL;
+                       ValaExpression* _tmp301_ = NULL;
+                       ValaExpression* _tmp302_ = NULL;
+                       ValaCCodeExpression* _tmp303_ = NULL;
+                       ValaCCodeExpression* _tmp304_ = NULL;
+                       gboolean _tmp305_ = FALSE;
+                       _tmp285_ = expr;
+                       _tmp286_ = vala_cast_expression_get_inner (_tmp285_);
+                       _tmp287_ = _tmp286_;
+                       _tmp288_ = vala_ccode_base_module_get_delegate_target (self, _tmp287_);
+                       _tmp289_ = _tmp288_;
+                       _tmp290_ = _tmp289_ != NULL;
+                       _vala_ccode_node_unref0 (_tmp289_);
+                       if (_tmp290_) {
+                               ValaCastExpression* _tmp291_ = NULL;
+                               ValaCastExpression* _tmp292_ = NULL;
+                               ValaExpression* _tmp293_ = NULL;
+                               ValaExpression* _tmp294_ = NULL;
+                               ValaCCodeExpression* _tmp295_ = NULL;
+                               ValaCCodeExpression* _tmp296_ = NULL;
+                               _tmp291_ = expr;
+                               _tmp292_ = expr;
+                               _tmp293_ = vala_cast_expression_get_inner (_tmp292_);
+                               _tmp294_ = _tmp293_;
+                               _tmp295_ = vala_ccode_base_module_get_delegate_target (self, _tmp294_);
                                _tmp296_ = _tmp295_;
-                               vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp294_, (ValaCCodeExpression*) _tmp296_);
+                               vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp291_, _tmp296_);
                                _vala_ccode_node_unref0 (_tmp296_);
-                       }
-                       _tmp297_ = expr;
-                       _tmp298_ = vala_cast_expression_get_inner (_tmp297_);
-                       _tmp299_ = _tmp298_;
-                       _tmp300_ = vala_ccode_base_module_get_delegate_target_destroy_notify (self, _tmp299_);
-                       _tmp301_ = _tmp300_;
-                       _tmp302_ = _tmp301_ != NULL;
-                       _vala_ccode_node_unref0 (_tmp301_);
-                       if (_tmp302_) {
-                               ValaCastExpression* _tmp303_ = NULL;
-                               ValaCastExpression* _tmp304_ = NULL;
-                               ValaExpression* _tmp305_ = NULL;
-                               ValaExpression* _tmp306_ = NULL;
-                               ValaCCodeExpression* _tmp307_ = NULL;
-                               ValaCCodeExpression* _tmp308_ = NULL;
-                               _tmp303_ = expr;
-                               _tmp304_ = expr;
-                               _tmp305_ = vala_cast_expression_get_inner (_tmp304_);
-                               _tmp306_ = _tmp305_;
-                               _tmp307_ = vala_ccode_base_module_get_delegate_target_destroy_notify (self, _tmp306_);
-                               _tmp308_ = _tmp307_;
-                               vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp303_, _tmp308_);
-                               _vala_ccode_node_unref0 (_tmp308_);
                        } else {
-                               ValaCastExpression* _tmp309_ = NULL;
-                               ValaCCodeConstant* _tmp310_ = NULL;
-                               ValaCCodeConstant* _tmp311_ = NULL;
-                               _tmp309_ = expr;
-                               _tmp310_ = vala_ccode_constant_new ("NULL");
+                               ValaCastExpression* _tmp297_ = NULL;
+                               ValaCCodeConstant* _tmp298_ = NULL;
+                               ValaCCodeConstant* _tmp299_ = NULL;
+                               _tmp297_ = expr;
+                               _tmp298_ = vala_ccode_constant_new ("NULL");
+                               _tmp299_ = _tmp298_;
+                               vala_ccode_base_module_set_delegate_target (self, (ValaExpression*) _tmp297_, (ValaCCodeExpression*) _tmp299_);
+                               _vala_ccode_node_unref0 (_tmp299_);
+                       }
+                       _tmp300_ = expr;
+                       _tmp301_ = vala_cast_expression_get_inner (_tmp300_);
+                       _tmp302_ = _tmp301_;
+                       _tmp303_ = vala_ccode_base_module_get_delegate_target_destroy_notify (self, _tmp302_);
+                       _tmp304_ = _tmp303_;
+                       _tmp305_ = _tmp304_ != NULL;
+                       _vala_ccode_node_unref0 (_tmp304_);
+                       if (_tmp305_) {
+                               ValaCastExpression* _tmp306_ = NULL;
+                               ValaCastExpression* _tmp307_ = NULL;
+                               ValaExpression* _tmp308_ = NULL;
+                               ValaExpression* _tmp309_ = NULL;
+                               ValaCCodeExpression* _tmp310_ = NULL;
+                               ValaCCodeExpression* _tmp311_ = NULL;
+                               _tmp306_ = expr;
+                               _tmp307_ = expr;
+                               _tmp308_ = vala_cast_expression_get_inner (_tmp307_);
+                               _tmp309_ = _tmp308_;
+                               _tmp310_ = vala_ccode_base_module_get_delegate_target_destroy_notify (self, _tmp309_);
                                _tmp311_ = _tmp310_;
-                               vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp309_, (ValaCCodeExpression*) _tmp311_);
+                               vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp306_, _tmp311_);
                                _vala_ccode_node_unref0 (_tmp311_);
+                       } else {
+                               ValaCastExpression* _tmp312_ = NULL;
+                               ValaCCodeConstant* _tmp313_ = NULL;
+                               ValaCCodeConstant* _tmp314_ = NULL;
+                               _tmp312_ = expr;
+                               _tmp313_ = vala_ccode_constant_new ("NULL");
+                               _tmp314_ = _tmp313_;
+                               vala_ccode_base_module_set_delegate_target_destroy_notify (self, (ValaExpression*) _tmp312_, (ValaCCodeExpression*) _tmp314_);
+                               _vala_ccode_node_unref0 (_tmp314_);
                        }
                }
                _vala_ccode_node_unref0 (innercexpr);
@@ -33005,21 +33334,36 @@ static void vala_ccode_base_module_real_visit_type_check (ValaCodeVisitor* base,
        ValaDataType* _tmp1_ = NULL;
        ValaDataType* _tmp2_ = NULL;
        ValaCCodeFile* _tmp3_ = NULL;
+       ValaDataType* type = NULL;
        ValaTypeCheck* _tmp4_ = NULL;
-       ValaTypeCheck* _tmp5_ = NULL;
+       ValaExpression* _tmp5_ = NULL;
        ValaExpression* _tmp6_ = NULL;
-       ValaExpression* _tmp7_ = NULL;
-       ValaCCodeExpression* _tmp8_ = NULL;
-       ValaCCodeExpression* _tmp9_ = NULL;
-       ValaTypeCheck* _tmp10_ = NULL;
-       ValaDataType* _tmp11_ = NULL;
-       ValaDataType* _tmp12_ = NULL;
-       ValaCCodeExpression* _tmp13_ = NULL;
-       ValaCCodeExpression* _tmp14_ = NULL;
-       ValaTypeCheck* _tmp15_ = NULL;
-       ValaCCodeExpression* _tmp16_ = NULL;
-       ValaCCodeExpression* _tmp17_ = NULL;
-       gboolean _tmp18_ = FALSE;
+       ValaDataType* _tmp7_ = NULL;
+       ValaDataType* _tmp8_ = NULL;
+       ValaDataType* _tmp9_ = NULL;
+       ValaPointerType* pointer_type = NULL;
+       ValaDataType* _tmp10_ = NULL;
+       ValaPointerType* _tmp11_ = NULL;
+       ValaPointerType* _tmp12_ = NULL;
+       ValaClass* cl = NULL;
+       ValaDataType* _tmp17_ = NULL;
+       ValaTypeSymbol* _tmp18_ = NULL;
+       ValaTypeSymbol* _tmp19_ = NULL;
+       ValaClass* _tmp20_ = NULL;
+       ValaInterface* iface = NULL;
+       ValaDataType* _tmp21_ = NULL;
+       ValaTypeSymbol* _tmp22_ = NULL;
+       ValaTypeSymbol* _tmp23_ = NULL;
+       ValaInterface* _tmp24_ = NULL;
+       gboolean _tmp25_ = FALSE;
+       gboolean _tmp26_ = FALSE;
+       gboolean _tmp27_ = FALSE;
+       gboolean _tmp28_ = FALSE;
+       ValaClass* _tmp29_ = NULL;
+       ValaTypeCheck* _tmp50_ = NULL;
+       ValaCCodeExpression* _tmp51_ = NULL;
+       ValaCCodeExpression* _tmp52_ = NULL;
+       gboolean _tmp53_ = FALSE;
        self = (ValaCCodeBaseModule*) base;
        g_return_if_fail (expr != NULL);
        _tmp0_ = expr;
@@ -33028,34 +33372,126 @@ static void vala_ccode_base_module_real_visit_type_check (ValaCodeVisitor* base,
        _tmp3_ = self->cfile;
        vala_ccode_base_module_generate_type_declaration (self, _tmp2_, _tmp3_);
        _tmp4_ = expr;
-       _tmp5_ = expr;
-       _tmp6_ = vala_typecheck_get_expression (_tmp5_);
-       _tmp7_ = _tmp6_;
-       _tmp8_ = vala_ccode_base_module_get_cvalue (self, _tmp7_);
-       _tmp9_ = _tmp8_;
-       _tmp10_ = expr;
-       _tmp11_ = vala_typecheck_get_type_reference (_tmp10_);
-       _tmp12_ = _tmp11_;
-       _tmp13_ = vala_ccode_base_module_create_type_check (self, (ValaCCodeNode*) _tmp9_, _tmp12_);
-       _tmp14_ = _tmp13_;
-       vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp4_, _tmp14_);
-       _vala_ccode_node_unref0 (_tmp14_);
-       _vala_ccode_node_unref0 (_tmp9_);
-       _tmp15_ = expr;
-       _tmp16_ = vala_ccode_base_module_get_cvalue (self, (ValaExpression*) _tmp15_);
-       _tmp17_ = _tmp16_;
-       _tmp18_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, VALA_TYPE_CCODE_INVALID_EXPRESSION);
-       _vala_ccode_node_unref0 (_tmp17_);
-       if (_tmp18_) {
-               ValaTypeCheck* _tmp19_ = NULL;
-               ValaSourceReference* _tmp20_ = NULL;
-               ValaSourceReference* _tmp21_ = NULL;
-               _tmp19_ = expr;
-               _tmp20_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp19_);
-               _tmp21_ = _tmp20_;
-               vala_report_error (_tmp21_, "type check expressions not supported for compact classes, structs, and" \
+       _tmp5_ = vala_typecheck_get_expression (_tmp4_);
+       _tmp6_ = _tmp5_;
+       _tmp7_ = vala_expression_get_value_type (_tmp6_);
+       _tmp8_ = _tmp7_;
+       _tmp9_ = _vala_code_node_ref0 (_tmp8_);
+       type = _tmp9_;
+       _tmp10_ = type;
+       _tmp11_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, VALA_TYPE_POINTER_TYPE) ? ((ValaPointerType*) _tmp10_) : NULL);
+       pointer_type = _tmp11_;
+       _tmp12_ = pointer_type;
+       if (_tmp12_ != NULL) {
+               ValaPointerType* _tmp13_ = NULL;
+               ValaDataType* _tmp14_ = NULL;
+               ValaDataType* _tmp15_ = NULL;
+               ValaDataType* _tmp16_ = NULL;
+               _tmp13_ = pointer_type;
+               _tmp14_ = vala_pointer_type_get_base_type (_tmp13_);
+               _tmp15_ = _tmp14_;
+               _tmp16_ = _vala_code_node_ref0 (_tmp15_);
+               _vala_code_node_unref0 (type);
+               type = _tmp16_;
+       }
+       _tmp17_ = type;
+       _tmp18_ = vala_data_type_get_data_type (_tmp17_);
+       _tmp19_ = _tmp18_;
+       _tmp20_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp19_) : NULL);
+       cl = _tmp20_;
+       _tmp21_ = type;
+       _tmp22_ = vala_data_type_get_data_type (_tmp21_);
+       _tmp23_ = _tmp22_;
+       _tmp24_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp23_, VALA_TYPE_INTERFACE) ? ((ValaInterface*) _tmp23_) : NULL);
+       iface = _tmp24_;
+       _tmp29_ = cl;
+       if (_tmp29_ != NULL) {
+               ValaClass* _tmp30_ = NULL;
+               gboolean _tmp31_ = FALSE;
+               gboolean _tmp32_ = FALSE;
+               _tmp30_ = cl;
+               _tmp31_ = vala_class_get_is_compact (_tmp30_);
+               _tmp32_ = _tmp31_;
+               _tmp28_ = !_tmp32_;
+       } else {
+               _tmp28_ = FALSE;
+       }
+       if (_tmp28_) {
+               _tmp27_ = TRUE;
+       } else {
+               ValaInterface* _tmp33_ = NULL;
+               _tmp33_ = iface;
+               _tmp27_ = _tmp33_ != NULL;
+       }
+       if (_tmp27_) {
+               _tmp26_ = TRUE;
+       } else {
+               ValaDataType* _tmp34_ = NULL;
+               _tmp34_ = type;
+               _tmp26_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp34_, VALA_TYPE_GENERIC_TYPE);
+       }
+       if (_tmp26_) {
+               _tmp25_ = TRUE;
+       } else {
+               ValaDataType* _tmp35_ = NULL;
+               _tmp35_ = type;
+               _tmp25_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp35_, VALA_TYPE_ERROR_TYPE);
+       }
+       if (_tmp25_) {
+               ValaTypeCheck* _tmp36_ = NULL;
+               ValaTypeCheck* _tmp37_ = NULL;
+               ValaExpression* _tmp38_ = NULL;
+               ValaExpression* _tmp39_ = NULL;
+               ValaCCodeExpression* _tmp40_ = NULL;
+               ValaCCodeExpression* _tmp41_ = NULL;
+               ValaTypeCheck* _tmp42_ = NULL;
+               ValaDataType* _tmp43_ = NULL;
+               ValaDataType* _tmp44_ = NULL;
+               ValaCCodeExpression* _tmp45_ = NULL;
+               ValaCCodeExpression* _tmp46_ = NULL;
+               _tmp36_ = expr;
+               _tmp37_ = expr;
+               _tmp38_ = vala_typecheck_get_expression (_tmp37_);
+               _tmp39_ = _tmp38_;
+               _tmp40_ = vala_ccode_base_module_get_cvalue (self, _tmp39_);
+               _tmp41_ = _tmp40_;
+               _tmp42_ = expr;
+               _tmp43_ = vala_typecheck_get_type_reference (_tmp42_);
+               _tmp44_ = _tmp43_;
+               _tmp45_ = vala_ccode_base_module_create_type_check (self, (ValaCCodeNode*) _tmp41_, _tmp44_);
+               _tmp46_ = _tmp45_;
+               vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp36_, _tmp46_);
+               _vala_ccode_node_unref0 (_tmp46_);
+               _vala_ccode_node_unref0 (_tmp41_);
+       } else {
+               ValaTypeCheck* _tmp47_ = NULL;
+               ValaCCodeInvalidExpression* _tmp48_ = NULL;
+               ValaCCodeInvalidExpression* _tmp49_ = NULL;
+               _tmp47_ = expr;
+               _tmp48_ = vala_ccode_invalid_expression_new ();
+               _tmp49_ = _tmp48_;
+               vala_ccode_base_module_set_cvalue (self, (ValaExpression*) _tmp47_, (ValaCCodeExpression*) _tmp49_);
+               _vala_ccode_node_unref0 (_tmp49_);
+       }
+       _tmp50_ = expr;
+       _tmp51_ = vala_ccode_base_module_get_cvalue (self, (ValaExpression*) _tmp50_);
+       _tmp52_ = _tmp51_;
+       _tmp53_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp52_, VALA_TYPE_CCODE_INVALID_EXPRESSION);
+       _vala_ccode_node_unref0 (_tmp52_);
+       if (_tmp53_) {
+               ValaTypeCheck* _tmp54_ = NULL;
+               ValaSourceReference* _tmp55_ = NULL;
+               ValaSourceReference* _tmp56_ = NULL;
+               _tmp54_ = expr;
+               _tmp55_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp54_);
+               _tmp56_ = _tmp55_;
+               vala_report_error (_tmp56_, "type check expressions not supported for compact classes, structs, and" \
 " enums");
        }
+       _vala_code_node_unref0 (iface);
+       _vala_code_node_unref0 (cl);
+       _vala_code_node_unref0 (pointer_type);
+       _vala_code_node_unref0 (type);
 }
 
 
@@ -36622,7 +37058,7 @@ gchar* vala_ccode_base_module_get_ccode_upper_case_name (ValaSymbol* sym, const
                _tmp10_ = _tmp9_;
                _tmp11_ = g_strdup_printf ("%s_%s", _tmp5_, _tmp10_);
                _tmp12_ = _tmp11_;
-               _tmp13_ = g_utf8_strup (_tmp12_, (gssize) (-1));
+               _tmp13_ = g_ascii_strup (_tmp12_, (gssize) (-1));
                _tmp14_ = _tmp13_;
                _g_free0 (_tmp12_);
                _g_free0 (_tmp10_);
@@ -36640,7 +37076,7 @@ gchar* vala_ccode_base_module_get_ccode_upper_case_name (ValaSymbol* sym, const
                _tmp16_ = infix;
                _tmp17_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp15_, _tmp16_);
                _tmp18_ = _tmp17_;
-               _tmp19_ = g_utf8_strup (_tmp18_, (gssize) (-1));
+               _tmp19_ = g_ascii_strup (_tmp18_, (gssize) (-1));
                _tmp20_ = _tmp19_;
                _g_free0 (_tmp18_);
                result = _tmp20_;
@@ -36764,6 +37200,25 @@ gchar* vala_ccode_base_module_get_ccode_ref_function (ValaTypeSymbol* sym) {
 }
 
 
+gchar* vala_ccode_base_module_get_quark_name (ValaErrorDomain* edomain) {
+       gchar* result = NULL;
+       ValaErrorDomain* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       g_return_val_if_fail (edomain != NULL, NULL);
+       _tmp0_ = edomain;
+       _tmp1_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, NULL);
+       _tmp2_ = _tmp1_;
+       _tmp3_ = g_strconcat (_tmp2_, "-quark", NULL);
+       _tmp4_ = _tmp3_;
+       _g_free0 (_tmp2_);
+       result = _tmp4_;
+       return result;
+}
+
+
 gboolean vala_ccode_base_module_is_reference_counting (ValaTypeSymbol* sym) {
        gboolean result = FALSE;
        ValaTypeSymbol* _tmp0_ = NULL;
@@ -38034,13 +38489,13 @@ gchar* vala_ccode_base_module_get_ccode_blurb (ValaProperty* prop) {
 }
 
 
-gchar* vala_ccode_base_module_get_ccode_declarator_suffix (ValaDataType* type) {
-       gchar* result = NULL;
+ValaCCodeDeclaratorSuffix* vala_ccode_base_module_get_ccode_declarator_suffix (ValaCCodeBaseModule* self, ValaDataType* type) {
+       ValaCCodeDeclaratorSuffix* result = NULL;
        ValaArrayType* array_type = NULL;
        ValaDataType* _tmp0_ = NULL;
        ValaArrayType* _tmp1_ = NULL;
        ValaArrayType* _tmp2_ = NULL;
-       gchar* _tmp14_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (type != NULL, NULL);
        _tmp0_ = type;
        _tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp0_) : NULL);
@@ -38055,34 +38510,40 @@ gchar* vala_ccode_base_module_get_ccode_declarator_suffix (ValaDataType* type) {
                _tmp5_ = _tmp4_;
                if (_tmp5_) {
                        ValaArrayType* _tmp6_ = NULL;
-                       gint _tmp7_ = 0;
-                       gint _tmp8_ = 0;
-                       gchar* _tmp9_ = NULL;
+                       ValaExpression* _tmp7_ = NULL;
+                       ValaExpression* _tmp8_ = NULL;
+                       ValaCCodeExpression* _tmp9_ = NULL;
+                       ValaCCodeExpression* _tmp10_ = NULL;
+                       ValaCCodeDeclaratorSuffix* _tmp11_ = NULL;
+                       ValaCCodeDeclaratorSuffix* _tmp12_ = NULL;
                        _tmp6_ = array_type;
                        _tmp7_ = vala_array_type_get_length (_tmp6_);
                        _tmp8_ = _tmp7_;
-                       _tmp9_ = g_strdup_printf ("[%d]", _tmp8_);
-                       result = _tmp9_;
+                       _tmp9_ = vala_ccode_base_module_get_ccodenode (self, _tmp8_);
+                       _tmp10_ = _tmp9_;
+                       _tmp11_ = vala_ccode_declarator_suffix_new_with_array (_tmp10_);
+                       _tmp12_ = _tmp11_;
+                       _vala_ccode_node_unref0 (_tmp10_);
+                       result = _tmp12_;
                        _vala_code_node_unref0 (array_type);
                        return result;
                } else {
-                       ValaArrayType* _tmp10_ = NULL;
-                       gboolean _tmp11_ = FALSE;
-                       gboolean _tmp12_ = FALSE;
-                       _tmp10_ = array_type;
-                       _tmp11_ = vala_array_type_get_inline_allocated (_tmp10_);
-                       _tmp12_ = _tmp11_;
-                       if (_tmp12_) {
-                               gchar* _tmp13_ = NULL;
-                               _tmp13_ = g_strdup ("[]");
-                               result = _tmp13_;
+                       ValaArrayType* _tmp13_ = NULL;
+                       gboolean _tmp14_ = FALSE;
+                       gboolean _tmp15_ = FALSE;
+                       _tmp13_ = array_type;
+                       _tmp14_ = vala_array_type_get_inline_allocated (_tmp13_);
+                       _tmp15_ = _tmp14_;
+                       if (_tmp15_) {
+                               ValaCCodeDeclaratorSuffix* _tmp16_ = NULL;
+                               _tmp16_ = vala_ccode_declarator_suffix_new_with_array (NULL);
+                               result = _tmp16_;
                                _vala_code_node_unref0 (array_type);
                                return result;
                        }
                }
        }
-       _tmp14_ = g_strdup ("");
-       result = _tmp14_;
+       result = NULL;
        _vala_code_node_unref0 (array_type);
        return result;
 }
@@ -40452,7 +40913,7 @@ void vala_ccode_base_module_value_take_emit_context (GValue* value, gpointer v_o
 
 static void vala_ccode_base_module_emit_context_class_init (ValaCCodeBaseModuleEmitContextClass * klass) {
        vala_ccode_base_module_emit_context_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_BASE_MODULE_EMIT_CONTEXT_CLASS (klass)->finalize = vala_ccode_base_module_emit_context_finalize;
+       ((ValaCCodeBaseModuleEmitContextClass *) klass)->finalize = vala_ccode_base_module_emit_context_finalize;
 }
 
 
@@ -40506,6 +40967,7 @@ static void vala_ccode_base_module_emit_context_instance_init (ValaCCodeBaseModu
 static void vala_ccode_base_module_emit_context_finalize (ValaCCodeBaseModuleEmitContext* obj) {
        ValaCCodeBaseModuleEmitContext * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_CCODE_BASE_MODULE_TYPE_EMIT_CONTEXT, ValaCCodeBaseModuleEmitContext);
+       g_signal_handlers_destroy (self);
        _vala_code_node_unref0 (self->current_symbol);
        _vala_iterable_unref0 (self->symbol_stack);
        _vala_code_node_unref0 (self->current_try);
@@ -40554,102 +41016,102 @@ void vala_ccode_base_module_emit_context_unref (gpointer instance) {
 static void vala_ccode_base_module_class_init (ValaCCodeBaseModuleClass * klass) {
        gint _tmp0_ = 0;
        vala_ccode_base_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_ccode_base_module_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_ccode_base_module_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeBaseModulePrivate));
-       VALA_CODE_GENERATOR_CLASS (klass)->emit = vala_ccode_base_module_real_emit;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->append_vala_array_free = vala_ccode_base_module_real_append_vala_array_free;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->append_vala_array_move = vala_ccode_base_module_real_append_vala_array_move;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->append_vala_array_length = vala_ccode_base_module_real_append_vala_array_length;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_source_file = vala_ccode_base_module_real_visit_source_file;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_enum_declaration = vala_ccode_base_module_real_generate_enum_declaration;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_ccode_base_module_real_visit_enum;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_constant = vala_ccode_base_module_real_visit_constant;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_field = vala_ccode_base_module_real_visit_field;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_formal_parameter = vala_ccode_base_module_real_visit_formal_parameter;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_property = vala_ccode_base_module_real_visit_property;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_class_struct_declaration = vala_ccode_base_module_real_generate_class_struct_declaration;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_struct_declaration = vala_ccode_base_module_real_generate_struct_declaration;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_delegate_declaration = vala_ccode_base_module_real_generate_delegate_declaration;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_cparameters = vala_ccode_base_module_real_generate_cparameters;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_property_accessor = vala_ccode_base_module_real_visit_property_accessor;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_destructor = vala_ccode_base_module_real_visit_destructor;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_block = vala_ccode_base_module_real_visit_block;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_declaration_statement = vala_ccode_base_module_real_visit_declaration_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_local_variable = vala_ccode_base_module_real_visit_local_variable;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_initializer_list = vala_ccode_base_module_real_visit_initializer_list;
-       VALA_CODE_GENERATOR_CLASS (klass)->create_local = vala_ccode_base_module_real_create_local;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dup_func_expression = vala_ccode_base_module_real_get_dup_func_expression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->append_struct_array_free = vala_ccode_base_module_real_append_struct_array_free;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->destroy_value = vala_ccode_base_module_real_destroy_value;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_end_full_expression = vala_ccode_base_module_real_visit_end_full_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_expression_statement = vala_ccode_base_module_real_visit_expression_statement;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->append_scope_free = vala_ccode_base_module_real_append_scope_free;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_return_statement = vala_ccode_base_module_real_visit_return_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_lock_statement = vala_ccode_base_module_real_visit_lock_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_unlock_statement = vala_ccode_base_module_real_visit_unlock_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_delete_statement = vala_ccode_base_module_real_visit_delete_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_expression = vala_ccode_base_module_real_visit_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_boolean_literal = vala_ccode_base_module_real_visit_boolean_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_character_literal = vala_ccode_base_module_real_visit_character_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_integer_literal = vala_ccode_base_module_real_visit_integer_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_real_literal = vala_ccode_base_module_real_visit_real_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_string_literal = vala_ccode_base_module_real_visit_string_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_regex_literal = vala_ccode_base_module_real_visit_regex_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_null_literal = vala_ccode_base_module_real_visit_null_literal;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_local_cvalue = vala_ccode_base_module_real_get_local_cvalue;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_parameter_cvalue = vala_ccode_base_module_real_get_parameter_cvalue;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_field_cvalue = vala_ccode_base_module_real_get_field_cvalue;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->load_variable = vala_ccode_base_module_real_load_variable;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->load_this_parameter = vala_ccode_base_module_real_load_this_parameter;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->store_value = vala_ccode_base_module_real_store_value;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cname = vala_ccode_base_module_real_get_delegate_target_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cexpression = vala_ccode_base_module_real_get_delegate_target_cexpression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cvalue = vala_ccode_base_module_real_get_delegate_target_cvalue;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_destroy_notify_cvalue = vala_ccode_base_module_real_get_delegate_target_destroy_notify_cvalue;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_destroy_notify_cname = vala_ccode_base_module_real_get_delegate_target_destroy_notify_cname;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_base_access = vala_ccode_base_module_real_visit_base_access;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_postfix_expression = vala_ccode_base_module_real_visit_postfix_expression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->copy_value = vala_ccode_base_module_real_copy_value;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_class_declaration = vala_ccode_base_module_real_generate_class_declaration;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_interface_declaration = vala_ccode_base_module_real_generate_interface_declaration;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_method_declaration = vala_ccode_base_module_real_generate_method_declaration;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_error_domain_declaration = vala_ccode_base_module_real_generate_error_domain_declaration;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_object_creation_expression = vala_ccode_base_module_real_visit_object_creation_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_sizeof_expression = vala_ccode_base_module_real_visit_sizeof_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_typeof_expression = vala_ccode_base_module_real_visit_typeof_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_unary_expression = vala_ccode_base_module_real_visit_unary_expression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->deserialize_expression = vala_ccode_base_module_real_deserialize_expression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->serialize_expression = vala_ccode_base_module_real_serialize_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_cast_expression = vala_ccode_base_module_real_visit_cast_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_named_argument = vala_ccode_base_module_real_visit_named_argument;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_pointer_indirection = vala_ccode_base_module_real_visit_pointer_indirection;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_addressof_expression = vala_ccode_base_module_real_visit_addressof_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_reference_transfer_expression = vala_ccode_base_module_real_visit_reference_transfer_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_binary_expression = vala_ccode_base_module_real_visit_binary_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_type_check = vala_ccode_base_module_real_visit_type_check;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_lambda_expression = vala_ccode_base_module_real_visit_lambda_expression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_implicit_cast_expression = vala_ccode_base_module_real_get_implicit_cast_expression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->create_type_check_statement = vala_ccode_base_module_real_create_type_check_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_ccode_base_module_real_visit_class;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->is_gobject_property = vala_ccode_base_module_real_is_gobject_property;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_dynamic_method_wrapper = vala_ccode_base_module_real_generate_dynamic_method_wrapper;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->method_has_wrapper = vala_ccode_base_module_real_method_has_wrapper;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_param_spec = vala_ccode_base_module_real_get_param_spec;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_signal_creation = vala_ccode_base_module_real_get_signal_creation;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->register_dbus_info = vala_ccode_base_module_real_register_dbus_info;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_property_getter_cname = vala_ccode_base_module_real_get_dynamic_property_getter_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_property_setter_cname = vala_ccode_base_module_real_get_dynamic_property_setter_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_cname = vala_ccode_base_module_real_get_dynamic_signal_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_connect_wrapper_name = vala_ccode_base_module_real_get_dynamic_signal_connect_wrapper_name;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_connect_after_wrapper_name = vala_ccode_base_module_real_get_dynamic_signal_connect_after_wrapper_name;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_disconnect_wrapper_name = vala_ccode_base_module_real_get_dynamic_signal_disconnect_wrapper_name;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_length_cname = vala_ccode_base_module_real_get_array_length_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_parameter_array_length_cname = vala_ccode_base_module_real_get_parameter_array_length_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_length_cexpression = vala_ccode_base_module_real_get_array_length_cexpression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_length_cvalue = vala_ccode_base_module_real_get_array_length_cvalue;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_array_size_cname = vala_ccode_base_module_real_get_array_size_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->add_simple_check = vala_ccode_base_module_real_add_simple_check;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_ready_function = vala_ccode_base_module_real_generate_ready_function;
+       ((ValaCodeGeneratorClass *) klass)->emit = vala_ccode_base_module_real_emit;
+       ((ValaCCodeBaseModuleClass *) klass)->append_vala_array_free = vala_ccode_base_module_real_append_vala_array_free;
+       ((ValaCCodeBaseModuleClass *) klass)->append_vala_array_move = vala_ccode_base_module_real_append_vala_array_move;
+       ((ValaCCodeBaseModuleClass *) klass)->append_vala_array_length = vala_ccode_base_module_real_append_vala_array_length;
+       ((ValaCodeVisitorClass *) klass)->visit_source_file = vala_ccode_base_module_real_visit_source_file;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_enum_declaration = vala_ccode_base_module_real_generate_enum_declaration;
+       ((ValaCodeVisitorClass *) klass)->visit_enum = vala_ccode_base_module_real_visit_enum;
+       ((ValaCodeVisitorClass *) klass)->visit_constant = vala_ccode_base_module_real_visit_constant;
+       ((ValaCodeVisitorClass *) klass)->visit_field = vala_ccode_base_module_real_visit_field;
+       ((ValaCodeVisitorClass *) klass)->visit_formal_parameter = vala_ccode_base_module_real_visit_formal_parameter;
+       ((ValaCodeVisitorClass *) klass)->visit_property = vala_ccode_base_module_real_visit_property;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_class_struct_declaration = vala_ccode_base_module_real_generate_class_struct_declaration;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_struct_declaration = vala_ccode_base_module_real_generate_struct_declaration;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_delegate_declaration = vala_ccode_base_module_real_generate_delegate_declaration;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_cparameters = vala_ccode_base_module_real_generate_cparameters;
+       ((ValaCodeVisitorClass *) klass)->visit_property_accessor = vala_ccode_base_module_real_visit_property_accessor;
+       ((ValaCodeVisitorClass *) klass)->visit_destructor = vala_ccode_base_module_real_visit_destructor;
+       ((ValaCodeVisitorClass *) klass)->visit_block = vala_ccode_base_module_real_visit_block;
+       ((ValaCodeVisitorClass *) klass)->visit_declaration_statement = vala_ccode_base_module_real_visit_declaration_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_local_variable = vala_ccode_base_module_real_visit_local_variable;
+       ((ValaCodeVisitorClass *) klass)->visit_initializer_list = vala_ccode_base_module_real_visit_initializer_list;
+       ((ValaCodeGeneratorClass *) klass)->create_local = vala_ccode_base_module_real_create_local;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dup_func_expression = vala_ccode_base_module_real_get_dup_func_expression;
+       ((ValaCCodeBaseModuleClass *) klass)->append_struct_array_free = vala_ccode_base_module_real_append_struct_array_free;
+       ((ValaCCodeBaseModuleClass *) klass)->destroy_value = vala_ccode_base_module_real_destroy_value;
+       ((ValaCodeVisitorClass *) klass)->visit_end_full_expression = vala_ccode_base_module_real_visit_end_full_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_expression_statement = vala_ccode_base_module_real_visit_expression_statement;
+       ((ValaCCodeBaseModuleClass *) klass)->append_scope_free = vala_ccode_base_module_real_append_scope_free;
+       ((ValaCodeVisitorClass *) klass)->visit_return_statement = vala_ccode_base_module_real_visit_return_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_lock_statement = vala_ccode_base_module_real_visit_lock_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_unlock_statement = vala_ccode_base_module_real_visit_unlock_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_delete_statement = vala_ccode_base_module_real_visit_delete_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_expression = vala_ccode_base_module_real_visit_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_boolean_literal = vala_ccode_base_module_real_visit_boolean_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_character_literal = vala_ccode_base_module_real_visit_character_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_integer_literal = vala_ccode_base_module_real_visit_integer_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_real_literal = vala_ccode_base_module_real_visit_real_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_string_literal = vala_ccode_base_module_real_visit_string_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_regex_literal = vala_ccode_base_module_real_visit_regex_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_null_literal = vala_ccode_base_module_real_visit_null_literal;
+       ((ValaCCodeBaseModuleClass *) klass)->get_local_cvalue = vala_ccode_base_module_real_get_local_cvalue;
+       ((ValaCCodeBaseModuleClass *) klass)->get_parameter_cvalue = vala_ccode_base_module_real_get_parameter_cvalue;
+       ((ValaCCodeBaseModuleClass *) klass)->get_field_cvalue = vala_ccode_base_module_real_get_field_cvalue;
+       ((ValaCCodeBaseModuleClass *) klass)->load_variable = vala_ccode_base_module_real_load_variable;
+       ((ValaCCodeBaseModuleClass *) klass)->load_this_parameter = vala_ccode_base_module_real_load_this_parameter;
+       ((ValaCCodeBaseModuleClass *) klass)->store_value = vala_ccode_base_module_real_store_value;
+       ((ValaCCodeBaseModuleClass *) klass)->get_delegate_target_cname = vala_ccode_base_module_real_get_delegate_target_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_delegate_target_cexpression = vala_ccode_base_module_real_get_delegate_target_cexpression;
+       ((ValaCCodeBaseModuleClass *) klass)->get_delegate_target_cvalue = vala_ccode_base_module_real_get_delegate_target_cvalue;
+       ((ValaCCodeBaseModuleClass *) klass)->get_delegate_target_destroy_notify_cvalue = vala_ccode_base_module_real_get_delegate_target_destroy_notify_cvalue;
+       ((ValaCCodeBaseModuleClass *) klass)->get_delegate_target_destroy_notify_cname = vala_ccode_base_module_real_get_delegate_target_destroy_notify_cname;
+       ((ValaCodeVisitorClass *) klass)->visit_base_access = vala_ccode_base_module_real_visit_base_access;
+       ((ValaCodeVisitorClass *) klass)->visit_postfix_expression = vala_ccode_base_module_real_visit_postfix_expression;
+       ((ValaCCodeBaseModuleClass *) klass)->copy_value = vala_ccode_base_module_real_copy_value;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_class_declaration = vala_ccode_base_module_real_generate_class_declaration;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_interface_declaration = vala_ccode_base_module_real_generate_interface_declaration;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_method_declaration = vala_ccode_base_module_real_generate_method_declaration;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_error_domain_declaration = vala_ccode_base_module_real_generate_error_domain_declaration;
+       ((ValaCodeVisitorClass *) klass)->visit_object_creation_expression = vala_ccode_base_module_real_visit_object_creation_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_sizeof_expression = vala_ccode_base_module_real_visit_sizeof_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_typeof_expression = vala_ccode_base_module_real_visit_typeof_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_unary_expression = vala_ccode_base_module_real_visit_unary_expression;
+       ((ValaCCodeBaseModuleClass *) klass)->deserialize_expression = vala_ccode_base_module_real_deserialize_expression;
+       ((ValaCCodeBaseModuleClass *) klass)->serialize_expression = vala_ccode_base_module_real_serialize_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_cast_expression = vala_ccode_base_module_real_visit_cast_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_named_argument = vala_ccode_base_module_real_visit_named_argument;
+       ((ValaCodeVisitorClass *) klass)->visit_pointer_indirection = vala_ccode_base_module_real_visit_pointer_indirection;
+       ((ValaCodeVisitorClass *) klass)->visit_addressof_expression = vala_ccode_base_module_real_visit_addressof_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_reference_transfer_expression = vala_ccode_base_module_real_visit_reference_transfer_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_binary_expression = vala_ccode_base_module_real_visit_binary_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_type_check = vala_ccode_base_module_real_visit_type_check;
+       ((ValaCodeVisitorClass *) klass)->visit_lambda_expression = vala_ccode_base_module_real_visit_lambda_expression;
+       ((ValaCCodeBaseModuleClass *) klass)->get_implicit_cast_expression = vala_ccode_base_module_real_get_implicit_cast_expression;
+       ((ValaCCodeBaseModuleClass *) klass)->create_type_check_statement = vala_ccode_base_module_real_create_type_check_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_class = vala_ccode_base_module_real_visit_class;
+       ((ValaCCodeBaseModuleClass *) klass)->is_gobject_property = vala_ccode_base_module_real_is_gobject_property;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_dynamic_method_wrapper = vala_ccode_base_module_real_generate_dynamic_method_wrapper;
+       ((ValaCCodeBaseModuleClass *) klass)->method_has_wrapper = vala_ccode_base_module_real_method_has_wrapper;
+       ((ValaCCodeBaseModuleClass *) klass)->get_param_spec = vala_ccode_base_module_real_get_param_spec;
+       ((ValaCCodeBaseModuleClass *) klass)->get_signal_creation = vala_ccode_base_module_real_get_signal_creation;
+       ((ValaCCodeBaseModuleClass *) klass)->register_dbus_info = vala_ccode_base_module_real_register_dbus_info;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dynamic_property_getter_cname = vala_ccode_base_module_real_get_dynamic_property_getter_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dynamic_property_setter_cname = vala_ccode_base_module_real_get_dynamic_property_setter_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dynamic_signal_cname = vala_ccode_base_module_real_get_dynamic_signal_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dynamic_signal_connect_wrapper_name = vala_ccode_base_module_real_get_dynamic_signal_connect_wrapper_name;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dynamic_signal_connect_after_wrapper_name = vala_ccode_base_module_real_get_dynamic_signal_connect_after_wrapper_name;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dynamic_signal_disconnect_wrapper_name = vala_ccode_base_module_real_get_dynamic_signal_disconnect_wrapper_name;
+       ((ValaCCodeBaseModuleClass *) klass)->get_array_length_cname = vala_ccode_base_module_real_get_array_length_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_parameter_array_length_cname = vala_ccode_base_module_real_get_parameter_array_length_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_array_length_cexpression = vala_ccode_base_module_real_get_array_length_cexpression;
+       ((ValaCCodeBaseModuleClass *) klass)->get_array_length_cvalue = vala_ccode_base_module_real_get_array_length_cvalue;
+       ((ValaCCodeBaseModuleClass *) klass)->get_array_size_cname = vala_ccode_base_module_real_get_array_size_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->add_simple_check = vala_ccode_base_module_real_add_simple_check;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_ready_function = vala_ccode_base_module_real_generate_ready_function;
        _tmp0_ = vala_code_node_get_attribute_cache_index ();
        vala_ccode_base_module_ccode_attribute_cache_index = _tmp0_;
 }
@@ -40966,7 +41428,7 @@ ValaGLibValue* vala_glib_value_copy (ValaGLibValue* self) {
 
 static void vala_glib_value_class_init (ValaGLibValueClass * klass) {
        vala_glib_value_parent_class = g_type_class_peek_parent (klass);
-       VALA_TARGET_VALUE_CLASS (klass)->finalize = vala_glib_value_finalize;
+       ((ValaTargetValueClass *) klass)->finalize = vala_glib_value_finalize;
 }
 
 
index a359e39..f1b6f82 100644 (file)
@@ -820,10 +820,12 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                var regfun = new CCodeFunction (fun_name, "GType");
                regfun.attributes = "G_GNUC_CONST";
 
-               if (en.access == SymbolAccessibility.PRIVATE) {
+               if (en.is_private_symbol ()) {
                        regfun.modifiers = CCodeModifiers.STATIC;
                        // avoid C warning as this function is not always used
-                       regfun.attributes = "G_GNUC_UNUSED";
+                       regfun.attributes += " G_GNUC_UNUSED";
+               } else if (context.hide_internal && en.is_internal_symbol ()) {
+                       regfun.modifiers = CCodeModifiers.INTERNAL;
                }
 
                decl_space.add_function_declaration (regfun);
@@ -1011,6 +1013,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
 
                        if (f.is_private_symbol ()) {
                                flock.modifiers = CCodeModifiers.STATIC;
+                       } else if (context.hide_internal && f.is_internal_symbol ()) {
+                               flock.modifiers = CCodeModifiers.INTERNAL;
                        } else {
                                flock.modifiers = CCodeModifiers.EXTERN;
                        }
@@ -1028,6 +1032,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                        cdecl.add_declarator (new CCodeVariableDeclarator (get_array_length_cname (get_ccode_name (f), dim)));
                                        if (f.is_private_symbol ()) {
                                                cdecl.modifiers = CCodeModifiers.STATIC;
+                                       } else if (context.hide_internal && f.is_internal_symbol ()) {
+                                               cdecl.modifiers = CCodeModifiers.INTERNAL;
                                        } else {
                                                cdecl.modifiers = CCodeModifiers.EXTERN;
                                        }
@@ -1043,6 +1049,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                cdecl.add_declarator (new CCodeVariableDeclarator (get_ccode_delegate_target_name (f)));
                                if (f.is_private_symbol ()) {
                                        cdecl.modifiers = CCodeModifiers.STATIC;
+                               } else if (context.hide_internal && f.is_internal_symbol ()) {
+                                       cdecl.modifiers = CCodeModifiers.INTERNAL;
                                } else {
                                        cdecl.modifiers = CCodeModifiers.EXTERN;
                                }
@@ -1053,6 +1061,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                        cdecl.add_declarator (new CCodeVariableDeclarator (get_delegate_target_destroy_notify_cname  (get_ccode_name (f))));
                                        if (f.is_private_symbol ()) {
                                                cdecl.modifiers = CCodeModifiers.STATIC;
+                                       } else if (context.hide_internal && f.is_internal_symbol ()) {
+                                               cdecl.modifiers = CCodeModifiers.INTERNAL;
                                        } else {
                                                cdecl.modifiers = CCodeModifiers.EXTERN;
                                        }
@@ -1091,36 +1101,39 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                f.initializer.emit (this);
 
                                var rhs = get_cvalue (f.initializer);
-
-                               ccode.add_assignment (lhs, rhs);
-
-                               if (f.variable_type is ArrayType && get_ccode_array_length (f)) {
-                                       var array_type = (ArrayType) f.variable_type;
-                                       var field_value = get_field_cvalue (f, load_this_parameter ((TypeSymbol) f.parent_symbol));
-
-                                       var glib_value = (GLibValue) f.initializer.target_value;
-                                       if (glib_value.array_length_cvalues != null) {
-                                               for (int dim = 1; dim <= array_type.rank; dim++) {
-                                                       var array_len_lhs = get_array_length_cvalue (field_value, dim);
-                                                       ccode.add_assignment (array_len_lhs, get_array_length_cvalue (glib_value, dim));
+                               if (!is_simple_struct_creation (f, f.initializer)) {
+                                       // otherwise handled in visit_object_creation_expression
+                                       
+                                       ccode.add_assignment (lhs, rhs);
+                                       
+                                       if (f.variable_type is ArrayType && get_ccode_array_length (f)) {
+                                               var array_type = (ArrayType) f.variable_type;
+                                               var field_value = get_field_cvalue (f, load_this_parameter ((TypeSymbol) f.parent_symbol));
+                                               
+                                               var glib_value = (GLibValue) f.initializer.target_value;
+                                               if (glib_value.array_length_cvalues != null) {
+                                                       for (int dim = 1; dim <= array_type.rank; dim++) {
+                                                               var array_len_lhs = get_array_length_cvalue (field_value, dim);
+                                                               ccode.add_assignment (array_len_lhs, get_array_length_cvalue (glib_value, dim));
+                                                       }
+                                               } else if (glib_value.array_null_terminated) {
+                                                       requires_array_length = true;
+                                                       var len_call = new CCodeFunctionCall (new CCodeIdentifier ("_vala_array_length"));
+                                                       len_call.add_argument (get_cvalue_ (glib_value));
+                                                       
+                                                       ccode.add_assignment (get_array_length_cvalue (field_value, 1), len_call);
+                                               } else {
+                                                       for (int dim = 1; dim <= array_type.rank; dim++) {
+                                                               ccode.add_assignment (get_array_length_cvalue (field_value, dim), new CCodeConstant ("-1"));
+                                                       }
                                                }
-                                       } else if (glib_value.array_null_terminated) {
-                                               requires_array_length = true;
-                                               var len_call = new CCodeFunctionCall (new CCodeIdentifier ("_vala_array_length"));
-                                               len_call.add_argument (get_cvalue_ (glib_value));
-
-                                               ccode.add_assignment (get_array_length_cvalue (field_value, 1), len_call);
-                                       } else {
-                                               for (int dim = 1; dim <= array_type.rank; dim++) {
-                                                       ccode.add_assignment (get_array_length_cvalue (field_value, dim), new CCodeConstant ("-1"));
+                                               
+                                               if (array_type.rank == 1 && f.is_internal_symbol ()) {
+                                                       var lhs_array_size = get_array_size_cvalue (field_value);
+                                                       var rhs_array_len = get_array_length_cvalue (field_value, 1);
+                                                       ccode.add_assignment (lhs_array_size, rhs_array_len);
                                                }
                                        }
-
-                                       if (array_type.rank == 1 && f.is_internal_symbol ()) {
-                                               var lhs_array_size = get_array_size_cvalue (field_value);
-                                               var rhs_array_len = get_array_length_cvalue (field_value, 1);
-                                               ccode.add_assignment (lhs_array_size, rhs_array_len);
-                                       }
                                }
 
                                foreach (var value in temp_ref_values) {
@@ -1503,6 +1516,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
 
                if (prop.is_private_symbol () || (!acc.readable && !acc.writable) || acc.access == SymbolAccessibility.PRIVATE) {
                        function.modifiers |= CCodeModifiers.STATIC;
+               } else if (context.hide_internal && (prop.is_internal_symbol () || acc.access == SymbolAccessibility.INTERNAL)) {
+                       function.modifiers |= CCodeModifiers.INTERNAL;
                }
                decl_space.add_function_declaration (function);
        }
@@ -1605,6 +1620,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        if (prop.is_private_symbol () || !(acc.readable || acc.writable) || acc.access == SymbolAccessibility.PRIVATE) {
                                // accessor function should be private if the property is an internal symbol or it's a construct-only setter
                                function.modifiers |= CCodeModifiers.STATIC;
+                       } else if (context.hide_internal && (prop.is_internal_symbol () || acc.access == SymbolAccessibility.INTERNAL)) {
+                               function.modifiers |= CCodeModifiers.INTERNAL;
                        }
 
                        push_function (function);
@@ -1728,6 +1745,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                if (prop.is_private_symbol () || !(acc.readable || acc.writable) || acc.access == SymbolAccessibility.PRIVATE) {
                                        // accessor function should be private if the property is an internal symbol or it's a construct-only setter
                                        function.modifiers |= CCodeModifiers.STATIC;
+                               } else if (context.hide_internal && (prop.is_internal_symbol () || acc.access == SymbolAccessibility.INTERNAL)) {
+                                       function.modifiers |= CCodeModifiers.INTERNAL;
                                }
                        }
 
@@ -1881,7 +1900,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                if (local.captured) {
                                        generate_type_declaration (local.variable_type, cfile);
 
-                                       data.add_field (get_ccode_name (local.variable_type), get_local_cname (local) + get_ccode_declarator_suffix (local.variable_type));
+                                       data.add_field (get_ccode_name (local.variable_type), get_local_cname (local), get_ccode_declarator_suffix (local.variable_type));
 
                                        if (local.variable_type is ArrayType) {
                                                var array_type = (ArrayType) local.variable_type;
@@ -2221,6 +2240,9 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
 
        public string get_local_cname (LocalVariable local) {
                var cname = get_variable_cname (local.name);
+               if (cname[0].isdigit ()) {
+                       cname = "_%s_".printf (cname);
+               }
                if (is_in_coroutine ()) {
                        var clash_index = emit_context.closure_variable_clash_map.get (local);
                        if (clash_index > 0) {
@@ -2295,7 +2317,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                }
                                emit_context.closure_variable_count_map.set (local.name, count + 1);
 
-                               closure_struct.add_field (get_ccode_name (local.variable_type), get_local_cname (local) + get_ccode_declarator_suffix (local.variable_type));
+                               closure_struct.add_field (get_ccode_name (local.variable_type), get_local_cname (local), get_ccode_declarator_suffix (local.variable_type));
                        } else {
                                var cvar = new CCodeVariableDeclarator (get_local_cname (local), null, get_ccode_declarator_suffix (local.variable_type));
 
@@ -3099,10 +3121,14 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                        unref_function = null;
                                } else {
                                        var st = (Struct) type.data_type;
-                                       if (!get_ccode_has_destroy_function (st)) {
-                                               generate_struct_destroy_function (st);
+                                       if (st.is_disposable ()) {
+                                               if (!get_ccode_has_destroy_function (st)) {
+                                                       generate_struct_destroy_function (st);
+                                               }
+                                               unref_function = get_ccode_destroy_function (st);
+                                       } else {
+                                               unref_function = null;
                                        }
-                                       unref_function = get_ccode_destroy_function (st);
                                }
                        }
                        if (unref_function == null) {
@@ -4424,9 +4450,14 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        // value-type initialization or object creation expression with object initializer
 
                        var local = expr.parent_node as LocalVariable;
+                       var field = expr.parent_node as Field;
                        var a = expr.parent_node as Assignment;
                        if (local != null && is_simple_struct_creation (local, local.initializer)) {
                                instance = get_cvalue_ (get_local_cvalue (local));
+                       } else if (field != null && is_simple_struct_creation (field, field.initializer)) {
+                               // field initialization
+                               var thisparam = load_this_parameter ((TypeSymbol) field.parent_symbol);
+                               instance = get_cvalue_ (get_field_cvalue (field, thisparam));
                        } else if (a != null && a.left.symbol_reference is Variable && is_simple_struct_creation ((Variable) a.left.symbol_reference, a.right)) {
                                if (requires_destroy (a.left.value_type)) {
                                        /* unref old value */
@@ -4434,7 +4465,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                                }
 
                                local = a.left.symbol_reference as LocalVariable;
-                               var field = a.left.symbol_reference as Field;
+                               field = a.left.symbol_reference as Field;
                                var param = a.left.symbol_reference as Parameter;
                                if (local != null) {
                                        instance = get_cvalue_ (get_local_cvalue (local));
@@ -5060,6 +5091,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        }
                } else {
                        if (expr.is_silent_cast) {
+                               set_cvalue (expr, new CCodeInvalidExpression ());
                                expr.error = true;
                                Report.error (expr.source_reference, "Operation not supported for this type");
                                return;
@@ -5425,7 +5457,19 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
        public override void visit_type_check (TypeCheck expr) {
                generate_type_declaration (expr.type_reference, cfile);
 
-               set_cvalue (expr, create_type_check (get_cvalue (expr.expression), expr.type_reference));
+               var type = expr.expression.value_type;
+               var pointer_type = type as PointerType;
+               if (pointer_type != null) {
+                       type = pointer_type.base_type;
+               }
+               var cl = type.data_type as Class;
+               var iface = type.data_type as Interface;
+               if ((cl != null && !cl.is_compact) || iface != null || type is GenericType || type is ErrorType) {
+                       set_cvalue (expr, create_type_check (get_cvalue (expr.expression), expr.type_reference));
+               } else {
+                       set_cvalue (expr, new CCodeInvalidExpression ());
+               }
+
                if (get_cvalue (expr) is CCodeInvalidExpression) {
                        Report.error (expr.source_reference, "type check expressions not supported for compact classes, structs, and enums");
                }
@@ -6002,9 +6046,9 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
 
        public static string get_ccode_upper_case_name (Symbol sym, string? infix = null) {
                if (sym is Property) {
-                       return "%s_%s".printf (get_ccode_lower_case_name (sym.parent_symbol), Symbol.camel_case_to_lower_case (sym.name)).up ();
+                       return "%s_%s".printf (get_ccode_lower_case_name (sym.parent_symbol), Symbol.camel_case_to_lower_case (sym.name)).ascii_up ();
                } else {
-                       return get_ccode_lower_case_name (sym, infix).up ();
+                       return get_ccode_lower_case_name (sym, infix).ascii_up ();
                }
        }
 
@@ -6028,6 +6072,10 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                return get_ccode_attribute(sym).ref_function;
        }
 
+       public static string get_quark_name (ErrorDomain edomain) {
+               return get_ccode_lower_case_name (edomain) + "-quark";
+       }
+
        public static bool is_reference_counting (TypeSymbol sym) {
                if (sym is Class) {
                        return get_ccode_ref_function (sym) != null;
@@ -6293,16 +6341,16 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                return blurb;
        }
 
-       public static string get_ccode_declarator_suffix (DataType type) {
+       public CCodeDeclaratorSuffix? get_ccode_declarator_suffix (DataType type) {
                var array_type = type as ArrayType;
                if (array_type != null) {
                        if (array_type.fixed_length) {
-                               return "[%d]".printf (array_type.length);
+                               return new CCodeDeclaratorSuffix.with_array (get_ccodenode (array_type.length));
                        } else if (array_type.inline_allocated) {
-                               return "[]";
+                               return new CCodeDeclaratorSuffix.with_array ();
                        }
                }
-               return "";
+               return null;
        }
 
        public CCodeConstant get_signal_canonical_constant (Signal sig, string? detail = null) {
index 0dbed32..14a2968 100644 (file)
@@ -80,8 +80,8 @@ enum  {
 };
 ValaCCodeCompiler* vala_ccode_compiler_new (void);
 ValaCCodeCompiler* vala_ccode_compiler_construct (GType object_type);
-static gboolean vala_ccode_compiler_package_exists (const gchar* package_name);
-void vala_ccode_compiler_compile (ValaCCodeCompiler* self, ValaCodeContext* context, const gchar* cc_command, gchar** cc_options, int cc_options_length1);
+static gboolean vala_ccode_compiler_package_exists (const gchar* package_name, const gchar* pkg_config_command);
+void vala_ccode_compiler_compile (ValaCCodeCompiler* self, ValaCodeContext* context, const gchar* cc_command, gchar** cc_options, int cc_options_length1, const gchar* pkg_config_command);
 static void vala_ccode_compiler_finalize (ValaCCodeCompiler* obj);
 
 
@@ -97,22 +97,31 @@ ValaCCodeCompiler* vala_ccode_compiler_new (void) {
 }
 
 
-static gboolean vala_ccode_compiler_package_exists (const gchar* package_name) {
+static gboolean vala_ccode_compiler_package_exists (const gchar* package_name, const gchar* pkg_config_command) {
        gboolean result = FALSE;
        gchar* pc = NULL;
        const gchar* _tmp0_ = NULL;
        gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       const gchar* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
        gint exit_status = 0;
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (package_name != NULL, FALSE);
-       _tmp0_ = package_name;
-       _tmp1_ = g_strconcat ("pkg-config --exists ", _tmp0_, NULL);
-       pc = _tmp1_;
+       _tmp0_ = pkg_config_command;
+       _tmp1_ = g_strconcat (_tmp0_, " --exists ", NULL);
+       _tmp2_ = _tmp1_;
+       _tmp3_ = package_name;
+       _tmp4_ = g_strconcat (_tmp2_, _tmp3_, NULL);
+       _tmp5_ = _tmp4_;
+       _g_free0 (_tmp2_);
+       pc = _tmp5_;
        {
-               gint _tmp2_ = 0;
-               g_spawn_command_line_sync (pc, NULL, NULL, &_tmp2_, &_inner_error_);
-               exit_status = _tmp2_;
-               if (_inner_error_ != NULL) {
+               gint _tmp6_ = 0;
+               g_spawn_command_line_sync (pc, NULL, NULL, &_tmp6_, &_inner_error_);
+               exit_status = _tmp6_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_SPAWN_ERROR) {
                                goto __catch1_g_spawn_error;
                        }
@@ -129,13 +138,13 @@ static gboolean vala_ccode_compiler_package_exists (const gchar* package_name) {
        __catch1_g_spawn_error:
        {
                GError* e = NULL;
-               GError* _tmp3_ = NULL;
-               const gchar* _tmp4_ = NULL;
+               GError* _tmp7_ = NULL;
+               const gchar* _tmp8_ = NULL;
                e = _inner_error_;
                _inner_error_ = NULL;
-               _tmp3_ = e;
-               _tmp4_ = _tmp3_->message;
-               vala_report_error (NULL, _tmp4_);
+               _tmp7_ = e;
+               _tmp8_ = _tmp7_->message;
+               vala_report_error (NULL, _tmp8_);
                result = FALSE;
                _g_error_free0 (e);
                _g_free0 (pc);
@@ -175,158 +184,167 @@ static gchar* string_strip (const gchar* self) {
 }
 
 
-void vala_ccode_compiler_compile (ValaCCodeCompiler* self, ValaCodeContext* context, const gchar* cc_command, gchar** cc_options, int cc_options_length1) {
+void vala_ccode_compiler_compile (ValaCCodeCompiler* self, ValaCodeContext* context, const gchar* cc_command, gchar** cc_options, int cc_options_length1, const gchar* pkg_config_command) {
        gboolean use_pkgconfig = FALSE;
+       const gchar* _tmp0_ = NULL;
        gchar* pc = NULL;
-       gchar* _tmp0_ = NULL;
-       ValaCodeContext* _tmp1_ = NULL;
-       gboolean _tmp2_ = FALSE;
-       gboolean _tmp3_ = FALSE;
-       const gchar* _tmp6_ = NULL;
-       gchar* _tmp7_ = NULL;
-       ValaCodeContext* _tmp8_ = NULL;
-       gboolean _tmp9_ = FALSE;
-       gboolean _tmp10_ = FALSE;
+       const gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       ValaCodeContext* _tmp3_ = NULL;
+       gboolean _tmp4_ = FALSE;
+       gboolean _tmp5_ = FALSE;
+       const gchar* _tmp8_ = NULL;
+       gchar* _tmp9_ = NULL;
+       ValaCodeContext* _tmp10_ = NULL;
+       gboolean _tmp11_ = FALSE;
+       gboolean _tmp12_ = FALSE;
        gchar* pkgflags = NULL;
-       gchar* _tmp31_ = NULL;
-       gboolean _tmp32_ = FALSE;
-       const gchar* _tmp42_ = NULL;
+       gchar* _tmp34_ = NULL;
+       gboolean _tmp35_ = FALSE;
+       const gchar* _tmp45_ = NULL;
        gchar* cmdline = NULL;
-       const gchar* _tmp43_ = NULL;
-       gchar* _tmp44_ = NULL;
-       ValaCodeContext* _tmp45_ = NULL;
-       gboolean _tmp46_ = FALSE;
-       gboolean _tmp47_ = FALSE;
-       ValaCodeContext* _tmp50_ = NULL;
-       gboolean _tmp51_ = FALSE;
-       gboolean _tmp52_ = FALSE;
+       const gchar* _tmp46_ = NULL;
+       gchar* _tmp47_ = NULL;
+       ValaCodeContext* _tmp48_ = NULL;
+       gboolean _tmp49_ = FALSE;
+       gboolean _tmp50_ = FALSE;
+       ValaCodeContext* _tmp53_ = NULL;
+       gboolean _tmp54_ = FALSE;
+       gboolean _tmp55_ = FALSE;
        ValaList* source_files = NULL;
-       ValaCodeContext* _tmp88_ = NULL;
-       ValaList* _tmp89_ = NULL;
+       ValaCodeContext* _tmp91_ = NULL;
+       ValaList* _tmp92_ = NULL;
        ValaList* c_source_files = NULL;
-       ValaCodeContext* _tmp113_ = NULL;
-       ValaList* _tmp114_ = NULL;
-       const gchar* _tmp133_ = NULL;
-       const gchar* _tmp134_ = NULL;
-       gchar* _tmp135_ = NULL;
-       gchar* _tmp136_ = NULL;
-       gchar* _tmp137_ = NULL;
+       ValaCodeContext* _tmp116_ = NULL;
+       ValaList* _tmp117_ = NULL;
+       const gchar* _tmp136_ = NULL;
+       const gchar* _tmp137_ = NULL;
        gchar* _tmp138_ = NULL;
        gchar* _tmp139_ = NULL;
-       gchar** _tmp140_ = NULL;
-       gint _tmp140__length1 = 0;
-       ValaCodeContext* _tmp149_ = NULL;
-       gboolean _tmp150_ = FALSE;
-       gboolean _tmp151_ = FALSE;
+       gchar* _tmp140_ = NULL;
+       gchar* _tmp141_ = NULL;
+       gchar* _tmp142_ = NULL;
+       gchar** _tmp143_ = NULL;
+       gint _tmp143__length1 = 0;
+       ValaCodeContext* _tmp152_ = NULL;
+       gboolean _tmp153_ = FALSE;
+       gboolean _tmp154_ = FALSE;
        GError * _inner_error_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (context != NULL);
        use_pkgconfig = FALSE;
-       _tmp0_ = g_strdup ("pkg-config --cflags");
-       pc = _tmp0_;
-       _tmp1_ = context;
-       _tmp2_ = vala_code_context_get_compile_only (_tmp1_);
-       _tmp3_ = _tmp2_;
-       if (!_tmp3_) {
-               const gchar* _tmp4_ = NULL;
-               gchar* _tmp5_ = NULL;
-               _tmp4_ = pc;
-               _tmp5_ = g_strconcat (_tmp4_, " --libs", NULL);
+       _tmp0_ = pkg_config_command;
+       if (_tmp0_ == NULL) {
+               pkg_config_command = "pkg-config";
+       }
+       _tmp1_ = pkg_config_command;
+       _tmp2_ = g_strconcat (_tmp1_, " --cflags", NULL);
+       pc = _tmp2_;
+       _tmp3_ = context;
+       _tmp4_ = vala_code_context_get_compile_only (_tmp3_);
+       _tmp5_ = _tmp4_;
+       if (!_tmp5_) {
+               const gchar* _tmp6_ = NULL;
+               gchar* _tmp7_ = NULL;
+               _tmp6_ = pc;
+               _tmp7_ = g_strconcat (_tmp6_, " --libs", NULL);
                _g_free0 (pc);
-               pc = _tmp5_;
+               pc = _tmp7_;
        }
        use_pkgconfig = TRUE;
-       _tmp6_ = pc;
-       _tmp7_ = g_strconcat (_tmp6_, " gobject-2.0", NULL);
+       _tmp8_ = pc;
+       _tmp9_ = g_strconcat (_tmp8_, " gobject-2.0", NULL);
        _g_free0 (pc);
-       pc = _tmp7_;
-       _tmp8_ = context;
-       _tmp9_ = vala_code_context_get_thread (_tmp8_);
-       _tmp10_ = _tmp9_;
-       if (_tmp10_) {
-               const gchar* _tmp11_ = NULL;
-               gchar* _tmp12_ = NULL;
-               _tmp11_ = pc;
-               _tmp12_ = g_strconcat (_tmp11_, " gthread-2.0", NULL);
+       pc = _tmp9_;
+       _tmp10_ = context;
+       _tmp11_ = vala_code_context_get_thread (_tmp10_);
+       _tmp12_ = _tmp11_;
+       if (_tmp12_) {
+               const gchar* _tmp13_ = NULL;
+               gchar* _tmp14_ = NULL;
+               _tmp13_ = pc;
+               _tmp14_ = g_strconcat (_tmp13_, " gthread-2.0", NULL);
                _g_free0 (pc);
-               pc = _tmp12_;
+               pc = _tmp14_;
        }
        {
                ValaList* _pkg_list = NULL;
-               ValaCodeContext* _tmp13_ = NULL;
-               ValaList* _tmp14_ = NULL;
+               ValaCodeContext* _tmp15_ = NULL;
+               ValaList* _tmp16_ = NULL;
                gint _pkg_size = 0;
-               ValaList* _tmp15_ = NULL;
-               gint _tmp16_ = 0;
-               gint _tmp17_ = 0;
+               ValaList* _tmp17_ = NULL;
+               gint _tmp18_ = 0;
+               gint _tmp19_ = 0;
                gint _pkg_index = 0;
-               _tmp13_ = context;
-               _tmp14_ = vala_code_context_get_packages (_tmp13_);
-               _pkg_list = _tmp14_;
-               _tmp15_ = _pkg_list;
-               _tmp16_ = vala_collection_get_size ((ValaCollection*) _tmp15_);
-               _tmp17_ = _tmp16_;
-               _pkg_size = _tmp17_;
+               _tmp15_ = context;
+               _tmp16_ = vala_code_context_get_packages (_tmp15_);
+               _pkg_list = _tmp16_;
+               _tmp17_ = _pkg_list;
+               _tmp18_ = vala_collection_get_size ((ValaCollection*) _tmp17_);
+               _tmp19_ = _tmp18_;
+               _pkg_size = _tmp19_;
                _pkg_index = -1;
                while (TRUE) {
-                       gint _tmp18_ = 0;
-                       gint _tmp19_ = 0;
                        gint _tmp20_ = 0;
-                       gchar* pkg = NULL;
-                       ValaList* _tmp21_ = NULL;
+                       gint _tmp21_ = 0;
                        gint _tmp22_ = 0;
-                       gpointer _tmp23_ = NULL;
-                       const gchar* _tmp24_ = NULL;
-                       gboolean _tmp25_ = FALSE;
-                       _tmp18_ = _pkg_index;
-                       _pkg_index = _tmp18_ + 1;
-                       _tmp19_ = _pkg_index;
-                       _tmp20_ = _pkg_size;
-                       if (!(_tmp19_ < _tmp20_)) {
+                       gchar* pkg = NULL;
+                       ValaList* _tmp23_ = NULL;
+                       gint _tmp24_ = 0;
+                       gpointer _tmp25_ = NULL;
+                       const gchar* _tmp26_ = NULL;
+                       const gchar* _tmp27_ = NULL;
+                       gboolean _tmp28_ = FALSE;
+                       _tmp20_ = _pkg_index;
+                       _pkg_index = _tmp20_ + 1;
+                       _tmp21_ = _pkg_index;
+                       _tmp22_ = _pkg_size;
+                       if (!(_tmp21_ < _tmp22_)) {
                                break;
                        }
-                       _tmp21_ = _pkg_list;
-                       _tmp22_ = _pkg_index;
-                       _tmp23_ = vala_list_get (_tmp21_, _tmp22_);
-                       pkg = (gchar*) _tmp23_;
-                       _tmp24_ = pkg;
-                       _tmp25_ = vala_ccode_compiler_package_exists (_tmp24_);
-                       if (_tmp25_) {
-                               const gchar* _tmp26_ = NULL;
-                               const gchar* _tmp27_ = NULL;
-                               gchar* _tmp28_ = NULL;
-                               gchar* _tmp29_ = NULL;
-                               gchar* _tmp30_ = NULL;
+                       _tmp23_ = _pkg_list;
+                       _tmp24_ = _pkg_index;
+                       _tmp25_ = vala_list_get (_tmp23_, _tmp24_);
+                       pkg = (gchar*) _tmp25_;
+                       _tmp26_ = pkg;
+                       _tmp27_ = pkg_config_command;
+                       _tmp28_ = vala_ccode_compiler_package_exists (_tmp26_, _tmp27_);
+                       if (_tmp28_) {
+                               const gchar* _tmp29_ = NULL;
+                               const gchar* _tmp30_ = NULL;
+                               gchar* _tmp31_ = NULL;
+                               gchar* _tmp32_ = NULL;
+                               gchar* _tmp33_ = NULL;
                                use_pkgconfig = TRUE;
-                               _tmp26_ = pc;
-                               _tmp27_ = pkg;
-                               _tmp28_ = g_strconcat (" ", _tmp27_, NULL);
-                               _tmp29_ = _tmp28_;
-                               _tmp30_ = g_strconcat (_tmp26_, _tmp29_, NULL);
+                               _tmp29_ = pc;
+                               _tmp30_ = pkg;
+                               _tmp31_ = g_strconcat (" ", _tmp30_, NULL);
+                               _tmp32_ = _tmp31_;
+                               _tmp33_ = g_strconcat (_tmp29_, _tmp32_, NULL);
                                _g_free0 (pc);
-                               pc = _tmp30_;
-                               _g_free0 (_tmp29_);
+                               pc = _tmp33_;
+                               _g_free0 (_tmp32_);
                        }
                        _g_free0 (pkg);
                }
                _vala_iterable_unref0 (_pkg_list);
        }
-       _tmp31_ = g_strdup ("");
-       pkgflags = _tmp31_;
-       _tmp32_ = use_pkgconfig;
-       if (_tmp32_) {
+       _tmp34_ = g_strdup ("");
+       pkgflags = _tmp34_;
+       _tmp35_ = use_pkgconfig;
+       if (_tmp35_) {
                {
                        gint exit_status = 0;
-                       const gchar* _tmp33_ = NULL;
-                       gchar* _tmp34_ = NULL;
-                       gint _tmp35_ = 0;
-                       gint _tmp36_ = 0;
-                       _tmp33_ = pc;
-                       g_spawn_command_line_sync (_tmp33_, &_tmp34_, NULL, &_tmp35_, &_inner_error_);
+                       const gchar* _tmp36_ = NULL;
+                       gchar* _tmp37_ = NULL;
+                       gint _tmp38_ = 0;
+                       gint _tmp39_ = 0;
+                       _tmp36_ = pc;
+                       g_spawn_command_line_sync (_tmp36_, &_tmp37_, NULL, &_tmp38_, &_inner_error_);
                        _g_free0 (pkgflags);
-                       pkgflags = _tmp34_;
-                       exit_status = _tmp35_;
-                       if (_inner_error_ != NULL) {
+                       pkgflags = _tmp37_;
+                       exit_status = _tmp38_;
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == G_SPAWN_ERROR) {
                                        goto __catch2_g_spawn_error;
                                }
@@ -336,16 +354,16 @@ void vala_ccode_compiler_compile (ValaCCodeCompiler* self, ValaCodeContext* cont
                                g_clear_error (&_inner_error_);
                                return;
                        }
-                       _tmp36_ = exit_status;
-                       if (_tmp36_ != 0) {
-                               gint _tmp37_ = 0;
-                               gchar* _tmp38_ = NULL;
-                               gchar* _tmp39_ = NULL;
-                               _tmp37_ = exit_status;
-                               _tmp38_ = g_strdup_printf ("pkg-config exited with status %d", _tmp37_);
-                               _tmp39_ = _tmp38_;
-                               vala_report_error (NULL, _tmp39_);
-                               _g_free0 (_tmp39_);
+                       _tmp39_ = exit_status;
+                       if (_tmp39_ != 0) {
+                               gint _tmp40_ = 0;
+                               gchar* _tmp41_ = NULL;
+                               gchar* _tmp42_ = NULL;
+                               _tmp40_ = exit_status;
+                               _tmp41_ = g_strdup_printf ("pkg-config exited with status %d", _tmp40_);
+                               _tmp42_ = _tmp41_;
+                               vala_report_error (NULL, _tmp42_);
+                               _g_free0 (_tmp42_);
                                _g_free0 (pkgflags);
                                _g_free0 (pc);
                                return;
@@ -355,20 +373,20 @@ void vala_ccode_compiler_compile (ValaCCodeCompiler* self, ValaCodeContext* cont
                __catch2_g_spawn_error:
                {
                        GError* e = NULL;
-                       GError* _tmp40_ = NULL;
-                       const gchar* _tmp41_ = NULL;
+                       GError* _tmp43_ = NULL;
+                       const gchar* _tmp44_ = NULL;
                        e = _inner_error_;
                        _inner_error_ = NULL;
-                       _tmp40_ = e;
-                       _tmp41_ = _tmp40_->message;
-                       vala_report_error (NULL, _tmp41_);
+                       _tmp43_ = e;
+                       _tmp44_ = _tmp43_->message;
+                       vala_report_error (NULL, _tmp44_);
                        _g_error_free0 (e);
                        _g_free0 (pkgflags);
                        _g_free0 (pc);
                        return;
                }
                __finally2:
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_free0 (pkgflags);
                        _g_free0 (pc);
                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -376,325 +394,325 @@ void vala_ccode_compiler_compile (ValaCCodeCompiler* self, ValaCodeContext* cont
                        return;
                }
        }
-       _tmp42_ = cc_command;
-       if (_tmp42_ == NULL) {
+       _tmp45_ = cc_command;
+       if (_tmp45_ == NULL) {
                cc_command = "cc";
        }
-       _tmp43_ = cc_command;
-       _tmp44_ = g_strdup (_tmp43_);
-       cmdline = _tmp44_;
-       _tmp45_ = context;
-       _tmp46_ = vala_code_context_get_debug (_tmp45_);
-       _tmp47_ = _tmp46_;
-       if (_tmp47_) {
-               const gchar* _tmp48_ = NULL;
-               gchar* _tmp49_ = NULL;
-               _tmp48_ = cmdline;
-               _tmp49_ = g_strconcat (_tmp48_, " -g", NULL);
+       _tmp46_ = cc_command;
+       _tmp47_ = g_strdup (_tmp46_);
+       cmdline = _tmp47_;
+       _tmp48_ = context;
+       _tmp49_ = vala_code_context_get_debug (_tmp48_);
+       _tmp50_ = _tmp49_;
+       if (_tmp50_) {
+               const gchar* _tmp51_ = NULL;
+               gchar* _tmp52_ = NULL;
+               _tmp51_ = cmdline;
+               _tmp52_ = g_strconcat (_tmp51_, " -g", NULL);
                _g_free0 (cmdline);
-               cmdline = _tmp49_;
+               cmdline = _tmp52_;
        }
-       _tmp50_ = context;
-       _tmp51_ = vala_code_context_get_compile_only (_tmp50_);
-       _tmp52_ = _tmp51_;
-       if (_tmp52_) {
-               const gchar* _tmp53_ = NULL;
-               gchar* _tmp54_ = NULL;
-               _tmp53_ = cmdline;
-               _tmp54_ = g_strconcat (_tmp53_, " -c", NULL);
+       _tmp53_ = context;
+       _tmp54_ = vala_code_context_get_compile_only (_tmp53_);
+       _tmp55_ = _tmp54_;
+       if (_tmp55_) {
+               const gchar* _tmp56_ = NULL;
+               gchar* _tmp57_ = NULL;
+               _tmp56_ = cmdline;
+               _tmp57_ = g_strconcat (_tmp56_, " -c", NULL);
                _g_free0 (cmdline);
-               cmdline = _tmp54_;
+               cmdline = _tmp57_;
        } else {
-               ValaCodeContext* _tmp55_ = NULL;
-               const gchar* _tmp56_ = NULL;
-               const gchar* _tmp57_ = NULL;
-               _tmp55_ = context;
-               _tmp56_ = vala_code_context_get_output (_tmp55_);
-               _tmp57_ = _tmp56_;
-               if (_tmp57_ != NULL) {
+               ValaCodeContext* _tmp58_ = NULL;
+               const gchar* _tmp59_ = NULL;
+               const gchar* _tmp60_ = NULL;
+               _tmp58_ = context;
+               _tmp59_ = vala_code_context_get_output (_tmp58_);
+               _tmp60_ = _tmp59_;
+               if (_tmp60_ != NULL) {
                        gchar* output = NULL;
-                       ValaCodeContext* _tmp58_ = NULL;
-                       const gchar* _tmp59_ = NULL;
-                       const gchar* _tmp60_ = NULL;
-                       gchar* _tmp61_ = NULL;
-                       gboolean _tmp62_ = FALSE;
-                       gboolean _tmp63_ = FALSE;
-                       ValaCodeContext* _tmp64_ = NULL;
-                       const gchar* _tmp65_ = NULL;
-                       const gchar* _tmp66_ = NULL;
-                       const gchar* _tmp81_ = NULL;
-                       const gchar* _tmp82_ = NULL;
-                       gchar* _tmp83_ = NULL;
-                       gchar* _tmp84_ = NULL;
-                       gchar* _tmp85_ = NULL;
+                       ValaCodeContext* _tmp61_ = NULL;
+                       const gchar* _tmp62_ = NULL;
+                       const gchar* _tmp63_ = NULL;
+                       gchar* _tmp64_ = NULL;
+                       gboolean _tmp65_ = FALSE;
+                       gboolean _tmp66_ = FALSE;
+                       ValaCodeContext* _tmp67_ = NULL;
+                       const gchar* _tmp68_ = NULL;
+                       const gchar* _tmp69_ = NULL;
+                       const gchar* _tmp84_ = NULL;
+                       const gchar* _tmp85_ = NULL;
                        gchar* _tmp86_ = NULL;
                        gchar* _tmp87_ = NULL;
-                       _tmp58_ = context;
-                       _tmp59_ = vala_code_context_get_output (_tmp58_);
-                       _tmp60_ = _tmp59_;
-                       _tmp61_ = g_strdup (_tmp60_);
-                       output = _tmp61_;
-                       _tmp64_ = context;
-                       _tmp65_ = vala_code_context_get_directory (_tmp64_);
-                       _tmp66_ = _tmp65_;
-                       if (_tmp66_ != NULL) {
-                               ValaCodeContext* _tmp67_ = NULL;
-                               const gchar* _tmp68_ = NULL;
-                               const gchar* _tmp69_ = NULL;
-                               _tmp67_ = context;
-                               _tmp68_ = vala_code_context_get_directory (_tmp67_);
-                               _tmp69_ = _tmp68_;
-                               _tmp63_ = g_strcmp0 (_tmp69_, "") != 0;
-                       } else {
-                               _tmp63_ = FALSE;
-                       }
-                       if (_tmp63_) {
+                       gchar* _tmp88_ = NULL;
+                       gchar* _tmp89_ = NULL;
+                       gchar* _tmp90_ = NULL;
+                       _tmp61_ = context;
+                       _tmp62_ = vala_code_context_get_output (_tmp61_);
+                       _tmp63_ = _tmp62_;
+                       _tmp64_ = g_strdup (_tmp63_);
+                       output = _tmp64_;
+                       _tmp67_ = context;
+                       _tmp68_ = vala_code_context_get_directory (_tmp67_);
+                       _tmp69_ = _tmp68_;
+                       if (_tmp69_ != NULL) {
                                ValaCodeContext* _tmp70_ = NULL;
                                const gchar* _tmp71_ = NULL;
                                const gchar* _tmp72_ = NULL;
-                               gboolean _tmp73_ = FALSE;
                                _tmp70_ = context;
-                               _tmp71_ = vala_code_context_get_output (_tmp70_);
+                               _tmp71_ = vala_code_context_get_directory (_tmp70_);
                                _tmp72_ = _tmp71_;
-                               _tmp73_ = g_path_is_absolute (_tmp72_);
-                               _tmp62_ = !_tmp73_;
+                               _tmp66_ = g_strcmp0 (_tmp72_, "") != 0;
                        } else {
-                               _tmp62_ = FALSE;
+                               _tmp66_ = FALSE;
                        }
-                       if (_tmp62_) {
-                               ValaCodeContext* _tmp74_ = NULL;
+                       if (_tmp66_) {
+                               ValaCodeContext* _tmp73_ = NULL;
+                               const gchar* _tmp74_ = NULL;
                                const gchar* _tmp75_ = NULL;
-                               const gchar* _tmp76_ = NULL;
+                               gboolean _tmp76_ = FALSE;
+                               _tmp73_ = context;
+                               _tmp74_ = vala_code_context_get_output (_tmp73_);
+                               _tmp75_ = _tmp74_;
+                               _tmp76_ = g_path_is_absolute (_tmp75_);
+                               _tmp65_ = !_tmp76_;
+                       } else {
+                               _tmp65_ = FALSE;
+                       }
+                       if (_tmp65_) {
                                ValaCodeContext* _tmp77_ = NULL;
                                const gchar* _tmp78_ = NULL;
                                const gchar* _tmp79_ = NULL;
-                               gchar* _tmp80_ = NULL;
-                               _tmp74_ = context;
-                               _tmp75_ = vala_code_context_get_directory (_tmp74_);
-                               _tmp76_ = _tmp75_;
+                               ValaCodeContext* _tmp80_ = NULL;
+                               const gchar* _tmp81_ = NULL;
+                               const gchar* _tmp82_ = NULL;
+                               gchar* _tmp83_ = NULL;
                                _tmp77_ = context;
-                               _tmp78_ = vala_code_context_get_output (_tmp77_);
+                               _tmp78_ = vala_code_context_get_directory (_tmp77_);
                                _tmp79_ = _tmp78_;
-                               _tmp80_ = g_strdup_printf ("%s%c%s", _tmp76_, (gint) G_DIR_SEPARATOR, _tmp79_);
+                               _tmp80_ = context;
+                               _tmp81_ = vala_code_context_get_output (_tmp80_);
+                               _tmp82_ = _tmp81_;
+                               _tmp83_ = g_strdup_printf ("%s%c%s", _tmp79_, (gint) G_DIR_SEPARATOR, _tmp82_);
                                _g_free0 (output);
-                               output = _tmp80_;
+                               output = _tmp83_;
                        }
-                       _tmp81_ = cmdline;
-                       _tmp82_ = output;
-                       _tmp83_ = g_shell_quote (_tmp82_);
-                       _tmp84_ = _tmp83_;
-                       _tmp85_ = g_strconcat (" -o ", _tmp84_, NULL);
-                       _tmp86_ = _tmp85_;
-                       _tmp87_ = g_strconcat (_tmp81_, _tmp86_, NULL);
+                       _tmp84_ = cmdline;
+                       _tmp85_ = output;
+                       _tmp86_ = g_shell_quote (_tmp85_);
+                       _tmp87_ = _tmp86_;
+                       _tmp88_ = g_strconcat (" -o ", _tmp87_, NULL);
+                       _tmp89_ = _tmp88_;
+                       _tmp90_ = g_strconcat (_tmp84_, _tmp89_, NULL);
                        _g_free0 (cmdline);
-                       cmdline = _tmp87_;
-                       _g_free0 (_tmp86_);
-                       _g_free0 (_tmp84_);
+                       cmdline = _tmp90_;
+                       _g_free0 (_tmp89_);
+                       _g_free0 (_tmp87_);
                        _g_free0 (output);
                }
        }
-       _tmp88_ = context;
-       _tmp89_ = vala_code_context_get_source_files (_tmp88_);
-       source_files = _tmp89_;
+       _tmp91_ = context;
+       _tmp92_ = vala_code_context_get_source_files (_tmp91_);
+       source_files = _tmp92_;
        {
                ValaList* _file_list = NULL;
-               ValaList* _tmp90_ = NULL;
-               ValaList* _tmp91_ = NULL;
+               ValaList* _tmp93_ = NULL;
+               ValaList* _tmp94_ = NULL;
                gint _file_size = 0;
-               ValaList* _tmp92_ = NULL;
-               gint _tmp93_ = 0;
-               gint _tmp94_ = 0;
+               ValaList* _tmp95_ = NULL;
+               gint _tmp96_ = 0;
+               gint _tmp97_ = 0;
                gint _file_index = 0;
-               _tmp90_ = source_files;
-               _tmp91_ = _vala_iterable_ref0 (_tmp90_);
-               _file_list = _tmp91_;
-               _tmp92_ = _file_list;
-               _tmp93_ = vala_collection_get_size ((ValaCollection*) _tmp92_);
-               _tmp94_ = _tmp93_;
-               _file_size = _tmp94_;
+               _tmp93_ = source_files;
+               _tmp94_ = _vala_iterable_ref0 (_tmp93_);
+               _file_list = _tmp94_;
+               _tmp95_ = _file_list;
+               _tmp96_ = vala_collection_get_size ((ValaCollection*) _tmp95_);
+               _tmp97_ = _tmp96_;
+               _file_size = _tmp97_;
                _file_index = -1;
                while (TRUE) {
-                       gint _tmp95_ = 0;
-                       gint _tmp96_ = 0;
-                       gint _tmp97_ = 0;
-                       ValaSourceFile* file = NULL;
-                       ValaList* _tmp98_ = NULL;
+                       gint _tmp98_ = 0;
                        gint _tmp99_ = 0;
-                       gpointer _tmp100_ = NULL;
-                       ValaSourceFile* _tmp101_ = NULL;
-                       ValaSourceFileType _tmp102_ = 0;
-                       ValaSourceFileType _tmp103_ = 0;
-                       _tmp95_ = _file_index;
-                       _file_index = _tmp95_ + 1;
-                       _tmp96_ = _file_index;
-                       _tmp97_ = _file_size;
-                       if (!(_tmp96_ < _tmp97_)) {
+                       gint _tmp100_ = 0;
+                       ValaSourceFile* file = NULL;
+                       ValaList* _tmp101_ = NULL;
+                       gint _tmp102_ = 0;
+                       gpointer _tmp103_ = NULL;
+                       ValaSourceFile* _tmp104_ = NULL;
+                       ValaSourceFileType _tmp105_ = 0;
+                       ValaSourceFileType _tmp106_ = 0;
+                       _tmp98_ = _file_index;
+                       _file_index = _tmp98_ + 1;
+                       _tmp99_ = _file_index;
+                       _tmp100_ = _file_size;
+                       if (!(_tmp99_ < _tmp100_)) {
                                break;
                        }
-                       _tmp98_ = _file_list;
-                       _tmp99_ = _file_index;
-                       _tmp100_ = vala_list_get (_tmp98_, _tmp99_);
-                       file = (ValaSourceFile*) _tmp100_;
-                       _tmp101_ = file;
-                       _tmp102_ = vala_source_file_get_file_type (_tmp101_);
-                       _tmp103_ = _tmp102_;
-                       if (_tmp103_ == VALA_SOURCE_FILE_TYPE_SOURCE) {
-                               const gchar* _tmp104_ = NULL;
-                               ValaSourceFile* _tmp105_ = NULL;
-                               gchar* _tmp106_ = NULL;
-                               gchar* _tmp107_ = NULL;
-                               gchar* _tmp108_ = NULL;
+                       _tmp101_ = _file_list;
+                       _tmp102_ = _file_index;
+                       _tmp103_ = vala_list_get (_tmp101_, _tmp102_);
+                       file = (ValaSourceFile*) _tmp103_;
+                       _tmp104_ = file;
+                       _tmp105_ = vala_source_file_get_file_type (_tmp104_);
+                       _tmp106_ = _tmp105_;
+                       if (_tmp106_ == VALA_SOURCE_FILE_TYPE_SOURCE) {
+                               const gchar* _tmp107_ = NULL;
+                               ValaSourceFile* _tmp108_ = NULL;
                                gchar* _tmp109_ = NULL;
                                gchar* _tmp110_ = NULL;
                                gchar* _tmp111_ = NULL;
                                gchar* _tmp112_ = NULL;
-                               _tmp104_ = cmdline;
-                               _tmp105_ = file;
-                               _tmp106_ = vala_source_file_get_csource_filename (_tmp105_);
-                               _tmp107_ = _tmp106_;
-                               _tmp108_ = g_shell_quote (_tmp107_);
-                               _tmp109_ = _tmp108_;
-                               _tmp110_ = g_strconcat (" ", _tmp109_, NULL);
-                               _tmp111_ = _tmp110_;
-                               _tmp112_ = g_strconcat (_tmp104_, _tmp111_, NULL);
+                               gchar* _tmp113_ = NULL;
+                               gchar* _tmp114_ = NULL;
+                               gchar* _tmp115_ = NULL;
+                               _tmp107_ = cmdline;
+                               _tmp108_ = file;
+                               _tmp109_ = vala_source_file_get_csource_filename (_tmp108_);
+                               _tmp110_ = _tmp109_;
+                               _tmp111_ = g_shell_quote (_tmp110_);
+                               _tmp112_ = _tmp111_;
+                               _tmp113_ = g_strconcat (" ", _tmp112_, NULL);
+                               _tmp114_ = _tmp113_;
+                               _tmp115_ = g_strconcat (_tmp107_, _tmp114_, NULL);
                                _g_free0 (cmdline);
-                               cmdline = _tmp112_;
-                               _g_free0 (_tmp111_);
-                               _g_free0 (_tmp109_);
-                               _g_free0 (_tmp107_);
+                               cmdline = _tmp115_;
+                               _g_free0 (_tmp114_);
+                               _g_free0 (_tmp112_);
+                               _g_free0 (_tmp110_);
                        }
                        _vala_source_file_unref0 (file);
                }
                _vala_iterable_unref0 (_file_list);
        }
-       _tmp113_ = context;
-       _tmp114_ = vala_code_context_get_c_source_files (_tmp113_);
-       c_source_files = _tmp114_;
+       _tmp116_ = context;
+       _tmp117_ = vala_code_context_get_c_source_files (_tmp116_);
+       c_source_files = _tmp117_;
        {
                ValaList* _file_list = NULL;
-               ValaList* _tmp115_ = NULL;
-               ValaList* _tmp116_ = NULL;
+               ValaList* _tmp118_ = NULL;
+               ValaList* _tmp119_ = NULL;
                gint _file_size = 0;
-               ValaList* _tmp117_ = NULL;
-               gint _tmp118_ = 0;
-               gint _tmp119_ = 0;
+               ValaList* _tmp120_ = NULL;
+               gint _tmp121_ = 0;
+               gint _tmp122_ = 0;
                gint _file_index = 0;
-               _tmp115_ = c_source_files;
-               _tmp116_ = _vala_iterable_ref0 (_tmp115_);
-               _file_list = _tmp116_;
-               _tmp117_ = _file_list;
-               _tmp118_ = vala_collection_get_size ((ValaCollection*) _tmp117_);
-               _tmp119_ = _tmp118_;
-               _file_size = _tmp119_;
+               _tmp118_ = c_source_files;
+               _tmp119_ = _vala_iterable_ref0 (_tmp118_);
+               _file_list = _tmp119_;
+               _tmp120_ = _file_list;
+               _tmp121_ = vala_collection_get_size ((ValaCollection*) _tmp120_);
+               _tmp122_ = _tmp121_;
+               _file_size = _tmp122_;
                _file_index = -1;
                while (TRUE) {
-                       gint _tmp120_ = 0;
-                       gint _tmp121_ = 0;
-                       gint _tmp122_ = 0;
-                       gchar* file = NULL;
-                       ValaList* _tmp123_ = NULL;
+                       gint _tmp123_ = 0;
                        gint _tmp124_ = 0;
-                       gpointer _tmp125_ = NULL;
-                       const gchar* _tmp126_ = NULL;
-                       const gchar* _tmp127_ = NULL;
-                       gchar* _tmp128_ = NULL;
-                       gchar* _tmp129_ = NULL;
-                       gchar* _tmp130_ = NULL;
+                       gint _tmp125_ = 0;
+                       gchar* file = NULL;
+                       ValaList* _tmp126_ = NULL;
+                       gint _tmp127_ = 0;
+                       gpointer _tmp128_ = NULL;
+                       const gchar* _tmp129_ = NULL;
+                       const gchar* _tmp130_ = NULL;
                        gchar* _tmp131_ = NULL;
                        gchar* _tmp132_ = NULL;
-                       _tmp120_ = _file_index;
-                       _file_index = _tmp120_ + 1;
-                       _tmp121_ = _file_index;
-                       _tmp122_ = _file_size;
-                       if (!(_tmp121_ < _tmp122_)) {
+                       gchar* _tmp133_ = NULL;
+                       gchar* _tmp134_ = NULL;
+                       gchar* _tmp135_ = NULL;
+                       _tmp123_ = _file_index;
+                       _file_index = _tmp123_ + 1;
+                       _tmp124_ = _file_index;
+                       _tmp125_ = _file_size;
+                       if (!(_tmp124_ < _tmp125_)) {
                                break;
                        }
-                       _tmp123_ = _file_list;
-                       _tmp124_ = _file_index;
-                       _tmp125_ = vala_list_get (_tmp123_, _tmp124_);
-                       file = (gchar*) _tmp125_;
-                       _tmp126_ = cmdline;
-                       _tmp127_ = file;
-                       _tmp128_ = g_shell_quote (_tmp127_);
-                       _tmp129_ = _tmp128_;
-                       _tmp130_ = g_strconcat (" ", _tmp129_, NULL);
-                       _tmp131_ = _tmp130_;
-                       _tmp132_ = g_strconcat (_tmp126_, _tmp131_, NULL);
+                       _tmp126_ = _file_list;
+                       _tmp127_ = _file_index;
+                       _tmp128_ = vala_list_get (_tmp126_, _tmp127_);
+                       file = (gchar*) _tmp128_;
+                       _tmp129_ = cmdline;
+                       _tmp130_ = file;
+                       _tmp131_ = g_shell_quote (_tmp130_);
+                       _tmp132_ = _tmp131_;
+                       _tmp133_ = g_strconcat (" ", _tmp132_, NULL);
+                       _tmp134_ = _tmp133_;
+                       _tmp135_ = g_strconcat (_tmp129_, _tmp134_, NULL);
                        _g_free0 (cmdline);
-                       cmdline = _tmp132_;
-                       _g_free0 (_tmp131_);
-                       _g_free0 (_tmp129_);
+                       cmdline = _tmp135_;
+                       _g_free0 (_tmp134_);
+                       _g_free0 (_tmp132_);
                        _g_free0 (file);
                }
                _vala_iterable_unref0 (_file_list);
        }
-       _tmp133_ = cmdline;
-       _tmp134_ = pkgflags;
-       _tmp135_ = string_strip (_tmp134_);
-       _tmp136_ = _tmp135_;
-       _tmp137_ = g_strconcat (" ", _tmp136_, NULL);
-       _tmp138_ = _tmp137_;
-       _tmp139_ = g_strconcat (_tmp133_, _tmp138_, NULL);
+       _tmp136_ = cmdline;
+       _tmp137_ = pkgflags;
+       _tmp138_ = string_strip (_tmp137_);
+       _tmp139_ = _tmp138_;
+       _tmp140_ = g_strconcat (" ", _tmp139_, NULL);
+       _tmp141_ = _tmp140_;
+       _tmp142_ = g_strconcat (_tmp136_, _tmp141_, NULL);
        _g_free0 (cmdline);
-       cmdline = _tmp139_;
-       _g_free0 (_tmp138_);
-       _g_free0 (_tmp136_);
-       _tmp140_ = cc_options;
-       _tmp140__length1 = cc_options_length1;
+       cmdline = _tmp142_;
+       _g_free0 (_tmp141_);
+       _g_free0 (_tmp139_);
+       _tmp143_ = cc_options;
+       _tmp143__length1 = cc_options_length1;
        {
                gchar** cc_option_collection = NULL;
                gint cc_option_collection_length1 = 0;
                gint _cc_option_collection_size_ = 0;
                gint cc_option_it = 0;
-               cc_option_collection = _tmp140_;
-               cc_option_collection_length1 = _tmp140__length1;
-               for (cc_option_it = 0; cc_option_it < _tmp140__length1; cc_option_it = cc_option_it + 1) {
-                       gchar* _tmp141_ = NULL;
+               cc_option_collection = _tmp143_;
+               cc_option_collection_length1 = _tmp143__length1;
+               for (cc_option_it = 0; cc_option_it < _tmp143__length1; cc_option_it = cc_option_it + 1) {
+                       gchar* _tmp144_ = NULL;
                        gchar* cc_option = NULL;
-                       _tmp141_ = g_strdup (cc_option_collection[cc_option_it]);
-                       cc_option = _tmp141_;
+                       _tmp144_ = g_strdup (cc_option_collection[cc_option_it]);
+                       cc_option = _tmp144_;
                        {
-                               const gchar* _tmp142_ = NULL;
-                               const gchar* _tmp143_ = NULL;
-                               gchar* _tmp144_ = NULL;
-                               gchar* _tmp145_ = NULL;
-                               gchar* _tmp146_ = NULL;
+                               const gchar* _tmp145_ = NULL;
+                               const gchar* _tmp146_ = NULL;
                                gchar* _tmp147_ = NULL;
                                gchar* _tmp148_ = NULL;
-                               _tmp142_ = cmdline;
-                               _tmp143_ = cc_option;
-                               _tmp144_ = g_shell_quote (_tmp143_);
-                               _tmp145_ = _tmp144_;
-                               _tmp146_ = g_strconcat (" ", _tmp145_, NULL);
-                               _tmp147_ = _tmp146_;
-                               _tmp148_ = g_strconcat (_tmp142_, _tmp147_, NULL);
+                               gchar* _tmp149_ = NULL;
+                               gchar* _tmp150_ = NULL;
+                               gchar* _tmp151_ = NULL;
+                               _tmp145_ = cmdline;
+                               _tmp146_ = cc_option;
+                               _tmp147_ = g_shell_quote (_tmp146_);
+                               _tmp148_ = _tmp147_;
+                               _tmp149_ = g_strconcat (" ", _tmp148_, NULL);
+                               _tmp150_ = _tmp149_;
+                               _tmp151_ = g_strconcat (_tmp145_, _tmp150_, NULL);
                                _g_free0 (cmdline);
-                               cmdline = _tmp148_;
-                               _g_free0 (_tmp147_);
-                               _g_free0 (_tmp145_);
+                               cmdline = _tmp151_;
+                               _g_free0 (_tmp150_);
+                               _g_free0 (_tmp148_);
                                _g_free0 (cc_option);
                        }
                }
        }
-       _tmp149_ = context;
-       _tmp150_ = vala_code_context_get_verbose_mode (_tmp149_);
-       _tmp151_ = _tmp150_;
-       if (_tmp151_) {
-               FILE* _tmp152_ = NULL;
-               const gchar* _tmp153_ = NULL;
-               _tmp152_ = stdout;
-               _tmp153_ = cmdline;
-               fprintf (_tmp152_, "%s\n", _tmp153_);
+       _tmp152_ = context;
+       _tmp153_ = vala_code_context_get_verbose_mode (_tmp152_);
+       _tmp154_ = _tmp153_;
+       if (_tmp154_) {
+               FILE* _tmp155_ = NULL;
+               const gchar* _tmp156_ = NULL;
+               _tmp155_ = stdout;
+               _tmp156_ = cmdline;
+               fprintf (_tmp155_, "%s\n", _tmp156_);
        }
        {
                gint exit_status = 0;
-               const gchar* _tmp154_ = NULL;
-               gint _tmp155_ = 0;
-               gint _tmp156_ = 0;
-               _tmp154_ = cmdline;
-               g_spawn_command_line_sync (_tmp154_, NULL, NULL, &_tmp155_, &_inner_error_);
-               exit_status = _tmp155_;
-               if (_inner_error_ != NULL) {
+               const gchar* _tmp157_ = NULL;
+               gint _tmp158_ = 0;
+               gint _tmp159_ = 0;
+               _tmp157_ = cmdline;
+               g_spawn_command_line_sync (_tmp157_, NULL, NULL, &_tmp158_, &_inner_error_);
+               exit_status = _tmp158_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_SPAWN_ERROR) {
                                goto __catch3_g_spawn_error;
                        }
@@ -707,33 +725,33 @@ void vala_ccode_compiler_compile (ValaCCodeCompiler* self, ValaCodeContext* cont
                        g_clear_error (&_inner_error_);
                        return;
                }
-               _tmp156_ = exit_status;
-               if (_tmp156_ != 0) {
-                       gint _tmp157_ = 0;
-                       gchar* _tmp158_ = NULL;
-                       gchar* _tmp159_ = NULL;
-                       _tmp157_ = exit_status;
-                       _tmp158_ = g_strdup_printf ("cc exited with status %d", _tmp157_);
-                       _tmp159_ = _tmp158_;
-                       vala_report_error (NULL, _tmp159_);
-                       _g_free0 (_tmp159_);
+               _tmp159_ = exit_status;
+               if (_tmp159_ != 0) {
+                       gint _tmp160_ = 0;
+                       gchar* _tmp161_ = NULL;
+                       gchar* _tmp162_ = NULL;
+                       _tmp160_ = exit_status;
+                       _tmp161_ = g_strdup_printf ("cc exited with status %d", _tmp160_);
+                       _tmp162_ = _tmp161_;
+                       vala_report_error (NULL, _tmp162_);
+                       _g_free0 (_tmp162_);
                }
        }
        goto __finally3;
        __catch3_g_spawn_error:
        {
                GError* e = NULL;
-               GError* _tmp160_ = NULL;
-               const gchar* _tmp161_ = NULL;
+               GError* _tmp163_ = NULL;
+               const gchar* _tmp164_ = NULL;
                e = _inner_error_;
                _inner_error_ = NULL;
-               _tmp160_ = e;
-               _tmp161_ = _tmp160_->message;
-               vala_report_error (NULL, _tmp161_);
+               _tmp163_ = e;
+               _tmp164_ = _tmp163_->message;
+               vala_report_error (NULL, _tmp164_);
                _g_error_free0 (e);
        }
        __finally3:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                _vala_iterable_unref0 (c_source_files);
                _vala_iterable_unref0 (source_files);
                _g_free0 (cmdline);
@@ -745,62 +763,62 @@ void vala_ccode_compiler_compile (ValaCCodeCompiler* self, ValaCodeContext* cont
        }
        {
                ValaList* _file_list = NULL;
-               ValaList* _tmp162_ = NULL;
-               ValaList* _tmp163_ = NULL;
+               ValaList* _tmp165_ = NULL;
+               ValaList* _tmp166_ = NULL;
                gint _file_size = 0;
-               ValaList* _tmp164_ = NULL;
-               gint _tmp165_ = 0;
-               gint _tmp166_ = 0;
+               ValaList* _tmp167_ = NULL;
+               gint _tmp168_ = 0;
+               gint _tmp169_ = 0;
                gint _file_index = 0;
-               _tmp162_ = source_files;
-               _tmp163_ = _vala_iterable_ref0 (_tmp162_);
-               _file_list = _tmp163_;
-               _tmp164_ = _file_list;
-               _tmp165_ = vala_collection_get_size ((ValaCollection*) _tmp164_);
-               _tmp166_ = _tmp165_;
-               _file_size = _tmp166_;
+               _tmp165_ = source_files;
+               _tmp166_ = _vala_iterable_ref0 (_tmp165_);
+               _file_list = _tmp166_;
+               _tmp167_ = _file_list;
+               _tmp168_ = vala_collection_get_size ((ValaCollection*) _tmp167_);
+               _tmp169_ = _tmp168_;
+               _file_size = _tmp169_;
                _file_index = -1;
                while (TRUE) {
-                       gint _tmp167_ = 0;
-                       gint _tmp168_ = 0;
-                       gint _tmp169_ = 0;
-                       ValaSourceFile* file = NULL;
-                       ValaList* _tmp170_ = NULL;
+                       gint _tmp170_ = 0;
                        gint _tmp171_ = 0;
-                       gpointer _tmp172_ = NULL;
-                       ValaSourceFile* _tmp173_ = NULL;
-                       ValaSourceFileType _tmp174_ = 0;
-                       ValaSourceFileType _tmp175_ = 0;
-                       _tmp167_ = _file_index;
-                       _file_index = _tmp167_ + 1;
-                       _tmp168_ = _file_index;
-                       _tmp169_ = _file_size;
-                       if (!(_tmp168_ < _tmp169_)) {
+                       gint _tmp172_ = 0;
+                       ValaSourceFile* file = NULL;
+                       ValaList* _tmp173_ = NULL;
+                       gint _tmp174_ = 0;
+                       gpointer _tmp175_ = NULL;
+                       ValaSourceFile* _tmp176_ = NULL;
+                       ValaSourceFileType _tmp177_ = 0;
+                       ValaSourceFileType _tmp178_ = 0;
+                       _tmp170_ = _file_index;
+                       _file_index = _tmp170_ + 1;
+                       _tmp171_ = _file_index;
+                       _tmp172_ = _file_size;
+                       if (!(_tmp171_ < _tmp172_)) {
                                break;
                        }
-                       _tmp170_ = _file_list;
-                       _tmp171_ = _file_index;
-                       _tmp172_ = vala_list_get (_tmp170_, _tmp171_);
-                       file = (ValaSourceFile*) _tmp172_;
-                       _tmp173_ = file;
-                       _tmp174_ = vala_source_file_get_file_type (_tmp173_);
-                       _tmp175_ = _tmp174_;
-                       if (_tmp175_ == VALA_SOURCE_FILE_TYPE_SOURCE) {
-                               ValaCodeContext* _tmp176_ = NULL;
-                               gboolean _tmp177_ = FALSE;
-                               gboolean _tmp178_ = FALSE;
-                               _tmp176_ = context;
-                               _tmp177_ = vala_code_context_get_save_csources (_tmp176_);
-                               _tmp178_ = _tmp177_;
-                               if (!_tmp178_) {
-                                       ValaSourceFile* _tmp179_ = NULL;
-                                       gchar* _tmp180_ = NULL;
-                                       gchar* _tmp181_ = NULL;
-                                       _tmp179_ = file;
-                                       _tmp180_ = vala_source_file_get_csource_filename (_tmp179_);
-                                       _tmp181_ = _tmp180_;
-                                       g_unlink (_tmp181_);
-                                       _g_free0 (_tmp181_);
+                       _tmp173_ = _file_list;
+                       _tmp174_ = _file_index;
+                       _tmp175_ = vala_list_get (_tmp173_, _tmp174_);
+                       file = (ValaSourceFile*) _tmp175_;
+                       _tmp176_ = file;
+                       _tmp177_ = vala_source_file_get_file_type (_tmp176_);
+                       _tmp178_ = _tmp177_;
+                       if (_tmp178_ == VALA_SOURCE_FILE_TYPE_SOURCE) {
+                               ValaCodeContext* _tmp179_ = NULL;
+                               gboolean _tmp180_ = FALSE;
+                               gboolean _tmp181_ = FALSE;
+                               _tmp179_ = context;
+                               _tmp180_ = vala_code_context_get_save_csources (_tmp179_);
+                               _tmp181_ = _tmp180_;
+                               if (!_tmp181_) {
+                                       ValaSourceFile* _tmp182_ = NULL;
+                                       gchar* _tmp183_ = NULL;
+                                       gchar* _tmp184_ = NULL;
+                                       _tmp182_ = file;
+                                       _tmp183_ = vala_source_file_get_csource_filename (_tmp182_);
+                                       _tmp184_ = _tmp183_;
+                                       g_unlink (_tmp184_);
+                                       _g_free0 (_tmp184_);
                                }
                        }
                        _vala_source_file_unref0 (file);
@@ -927,7 +945,7 @@ void vala_value_take_ccode_compiler (GValue* value, gpointer v_object) {
 
 static void vala_ccode_compiler_class_init (ValaCCodeCompilerClass * klass) {
        vala_ccode_compiler_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_COMPILER_CLASS (klass)->finalize = vala_ccode_compiler_finalize;
+       ((ValaCCodeCompilerClass *) klass)->finalize = vala_ccode_compiler_finalize;
 }
 
 
@@ -939,6 +957,7 @@ static void vala_ccode_compiler_instance_init (ValaCCodeCompiler * self) {
 static void vala_ccode_compiler_finalize (ValaCCodeCompiler* obj) {
        ValaCCodeCompiler * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CCODE_COMPILER, ValaCCodeCompiler);
+       g_signal_handlers_destroy (self);
 }
 
 
index b192760..1ad3f08 100644 (file)
@@ -29,8 +29,8 @@ public class Vala.CCodeCompiler {
        public CCodeCompiler () {
        }
 
-       static bool package_exists(string package_name) {
-               string pc = "pkg-config --exists " + package_name;
+       static bool package_exists(string package_name, string? pkg_config_command = "pkg-config") {
+               string pc = pkg_config_command + " --exists " + package_name;
                int exit_status;
 
                try {
@@ -48,10 +48,14 @@ public class Vala.CCodeCompiler {
         *
         * @param context a code context
         */
-       public void compile (CodeContext context, string? cc_command, string[] cc_options) {
+       public void compile (CodeContext context, string? cc_command, string[] cc_options, string? pkg_config_command = null) {
                bool use_pkgconfig = false;
 
-               string pc = "pkg-config --cflags";
+               if (pkg_config_command == null) {
+                       pkg_config_command = "pkg-config";
+               }
+
+               string pc = pkg_config_command + " --cflags";
                if (!context.compile_only) {
                        pc += " --libs";
                }
@@ -61,7 +65,7 @@ public class Vala.CCodeCompiler {
                        pc += " gthread-2.0";
                }
                foreach (string pkg in context.get_packages ()) {
-                       if (package_exists (pkg)) {
+                       if (package_exists (pkg, pkg_config_command)) {
                                use_pkgconfig = true;
                                pc += " " + pkg;
                        }
index ea669f8..2fe128a 100644 (file)
@@ -2420,13 +2420,13 @@ ValaCCodeControlFlowModule* vala_ccode_control_flow_module_construct (GType obje
 
 static void vala_ccode_control_flow_module_class_init (ValaCCodeControlFlowModuleClass * klass) {
        vala_ccode_control_flow_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->visit_if_statement = vala_ccode_control_flow_module_real_visit_if_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_switch_statement = vala_ccode_control_flow_module_real_visit_switch_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_switch_label = vala_ccode_control_flow_module_real_visit_switch_label;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_loop = vala_ccode_control_flow_module_real_visit_loop;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_foreach_statement = vala_ccode_control_flow_module_real_visit_foreach_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_break_statement = vala_ccode_control_flow_module_real_visit_break_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_continue_statement = vala_ccode_control_flow_module_real_visit_continue_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_if_statement = vala_ccode_control_flow_module_real_visit_if_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_switch_statement = vala_ccode_control_flow_module_real_visit_switch_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_switch_label = vala_ccode_control_flow_module_real_visit_switch_label;
+       ((ValaCodeVisitorClass *) klass)->visit_loop = vala_ccode_control_flow_module_real_visit_loop;
+       ((ValaCodeVisitorClass *) klass)->visit_foreach_statement = vala_ccode_control_flow_module_real_visit_foreach_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_break_statement = vala_ccode_control_flow_module_real_visit_break_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_continue_statement = vala_ccode_control_flow_module_real_visit_continue_statement;
 }
 
 
index 8176ea9..4601176 100644 (file)
@@ -3667,15 +3667,15 @@ ValaCCodeDelegateModule* vala_ccode_delegate_module_new (void) {
 
 static void vala_ccode_delegate_module_class_init (ValaCCodeDelegateModuleClass * klass) {
        vala_ccode_delegate_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_delegate_declaration = vala_ccode_delegate_module_real_generate_delegate_declaration;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_delegate = vala_ccode_delegate_module_real_visit_delegate;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cname = vala_ccode_delegate_module_real_get_delegate_target_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cexpression = vala_ccode_delegate_module_real_get_delegate_target_cexpression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_cvalue = vala_ccode_delegate_module_real_get_delegate_target_cvalue;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_destroy_notify_cvalue = vala_ccode_delegate_module_real_get_delegate_target_destroy_notify_cvalue;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_delegate_target_destroy_notify_cname = vala_ccode_delegate_module_real_get_delegate_target_destroy_notify_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_implicit_cast_expression = vala_ccode_delegate_module_real_get_implicit_cast_expression;
-       VALA_CCODE_METHOD_MODULE_CLASS (klass)->generate_parameter = vala_ccode_delegate_module_real_generate_parameter;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_delegate_declaration = vala_ccode_delegate_module_real_generate_delegate_declaration;
+       ((ValaCodeVisitorClass *) klass)->visit_delegate = vala_ccode_delegate_module_real_visit_delegate;
+       ((ValaCCodeBaseModuleClass *) klass)->get_delegate_target_cname = vala_ccode_delegate_module_real_get_delegate_target_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_delegate_target_cexpression = vala_ccode_delegate_module_real_get_delegate_target_cexpression;
+       ((ValaCCodeBaseModuleClass *) klass)->get_delegate_target_cvalue = vala_ccode_delegate_module_real_get_delegate_target_cvalue;
+       ((ValaCCodeBaseModuleClass *) klass)->get_delegate_target_destroy_notify_cvalue = vala_ccode_delegate_module_real_get_delegate_target_destroy_notify_cvalue;
+       ((ValaCCodeBaseModuleClass *) klass)->get_delegate_target_destroy_notify_cname = vala_ccode_delegate_module_real_get_delegate_target_destroy_notify_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_implicit_cast_expression = vala_ccode_delegate_module_real_get_implicit_cast_expression;
+       ((ValaCCodeMethodModuleClass *) klass)->generate_parameter = vala_ccode_delegate_module_real_generate_parameter;
 }
 
 
index b311f3d..4272bd7 100644 (file)
@@ -5460,8 +5460,8 @@ static ValaTargetValue* vala_ccode_member_access_module_real_load_variable (Vala
                        ValaGLibValue* _tmp14_ = NULL;
                        ValaGLibValue* _tmp15_ = NULL;
                        ValaArrayType* _tmp16_ = NULL;
-                       gint _tmp17_ = 0;
-                       gint _tmp18_ = 0;
+                       ValaExpression* _tmp17_ = NULL;
+                       ValaExpression* _tmp18_ = NULL;
                        gchar* _tmp19_ = NULL;
                        gchar* _tmp20_ = NULL;
                        ValaCCodeConstant* _tmp21_ = NULL;
@@ -5474,7 +5474,7 @@ static ValaTargetValue* vala_ccode_member_access_module_real_load_variable (Vala
                        _tmp16_ = array_type;
                        _tmp17_ = vala_array_type_get_length (_tmp16_);
                        _tmp18_ = _tmp17_;
-                       _tmp19_ = g_strdup_printf ("%i", _tmp18_);
+                       _tmp19_ = vala_code_node_to_string ((ValaCodeNode*) _tmp18_);
                        _tmp20_ = _tmp19_;
                        _tmp21_ = vala_ccode_constant_new (_tmp20_);
                        _tmp22_ = _tmp21_;
@@ -5912,15 +5912,15 @@ ValaCCodeMemberAccessModule* vala_ccode_member_access_module_construct (GType ob
 
 static void vala_ccode_member_access_module_class_init (ValaCCodeMemberAccessModuleClass * klass) {
        vala_ccode_member_access_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->visit_member_access = vala_ccode_member_access_module_real_visit_member_access;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_local_cvalue = vala_ccode_member_access_module_real_get_local_cvalue;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_parameter_cvalue = vala_ccode_member_access_module_real_get_parameter_cvalue;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_field_cvalue = vala_ccode_member_access_module_real_get_field_cvalue;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->load_variable = vala_ccode_member_access_module_real_load_variable;
-       VALA_CODE_GENERATOR_CLASS (klass)->load_local = vala_ccode_member_access_module_real_load_local;
-       VALA_CODE_GENERATOR_CLASS (klass)->load_parameter = vala_ccode_member_access_module_real_load_parameter;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->load_this_parameter = vala_ccode_member_access_module_real_load_this_parameter;
-       VALA_CODE_GENERATOR_CLASS (klass)->load_field = vala_ccode_member_access_module_real_load_field;
+       ((ValaCodeVisitorClass *) klass)->visit_member_access = vala_ccode_member_access_module_real_visit_member_access;
+       ((ValaCCodeBaseModuleClass *) klass)->get_local_cvalue = vala_ccode_member_access_module_real_get_local_cvalue;
+       ((ValaCCodeBaseModuleClass *) klass)->get_parameter_cvalue = vala_ccode_member_access_module_real_get_parameter_cvalue;
+       ((ValaCCodeBaseModuleClass *) klass)->get_field_cvalue = vala_ccode_member_access_module_real_get_field_cvalue;
+       ((ValaCCodeBaseModuleClass *) klass)->load_variable = vala_ccode_member_access_module_real_load_variable;
+       ((ValaCodeGeneratorClass *) klass)->load_local = vala_ccode_member_access_module_real_load_local;
+       ((ValaCodeGeneratorClass *) klass)->load_parameter = vala_ccode_member_access_module_real_load_parameter;
+       ((ValaCCodeBaseModuleClass *) klass)->load_this_parameter = vala_ccode_member_access_module_real_load_this_parameter;
+       ((ValaCodeGeneratorClass *) klass)->load_field = vala_ccode_member_access_module_real_load_field;
 }
 
 
index 331dc3e..7f5f50d 100644 (file)
@@ -553,7 +553,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                gint _tmp43__length1 = 0;
                const gchar* _tmp44_ = NULL;
                void* _tmp45_ = NULL;
-               const gchar* _tmp59_ = NULL;
+               const gchar* _tmp62_ = NULL;
                len = (gsize) 1;
                {
                        gboolean _tmp9_ = FALSE;
@@ -630,7 +630,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                        _tmp25__length1 = str_array_length1;
                                        _tmp26_ = i;
                                        _tmp27_ = _tmp25_[_tmp26_];
-                                       _tmp28_ = strlen (_tmp27_);
+                                       _tmp28_ = strlen ((const gchar*) _tmp27_);
                                        _tmp29_ = _tmp28_;
                                        _tmp21_ = _tmp29_;
                                } else {
@@ -652,7 +652,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                _tmp34_ = str_array_length1;
                _tmp35_ = len;
                _tmp36_ = separator;
-               _tmp37_ = strlen (_tmp36_);
+               _tmp37_ = strlen ((const gchar*) _tmp36_);
                _tmp38_ = _tmp37_;
                _tmp39_ = i;
                len = _tmp35_ + (_tmp38_ * (_tmp39_ - 1));
@@ -663,7 +663,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                _tmp43_ = str_array;
                _tmp43__length1 = str_array_length1;
                _tmp44_ = _tmp43_[0];
-               _tmp45_ = g_stpcpy ((void*) _tmp42_, _tmp44_);
+               _tmp45_ = g_stpcpy ((void*) _tmp42_, (const gchar*) _tmp44_);
                ptr = _tmp45_;
                {
                        gboolean _tmp46_ = FALSE;
@@ -681,8 +681,8 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                gint _tmp54__length1 = 0;
                                gint _tmp55_ = 0;
                                const gchar* _tmp56_ = NULL;
-                               void* _tmp57_ = NULL;
-                               void* _tmp58_ = NULL;
+                               void* _tmp60_ = NULL;
+                               void* _tmp61_ = NULL;
                                if (!_tmp46_) {
                                        gint _tmp47_ = 0;
                                        _tmp47_ = i;
@@ -697,29 +697,38 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                }
                                _tmp50_ = ptr;
                                _tmp51_ = separator;
-                               _tmp52_ = g_stpcpy (_tmp50_, _tmp51_);
+                               _tmp52_ = g_stpcpy (_tmp50_, (const gchar*) _tmp51_);
                                ptr = _tmp52_;
                                _tmp54_ = str_array;
                                _tmp54__length1 = str_array_length1;
                                _tmp55_ = i;
                                _tmp56_ = _tmp54_[_tmp55_];
-                               _tmp53_ = _tmp56_;
-                               if (_tmp53_ == NULL) {
+                               if (_tmp56_ != NULL) {
+                                       gchar** _tmp57_ = NULL;
+                                       gint _tmp57__length1 = 0;
+                                       gint _tmp58_ = 0;
+                                       const gchar* _tmp59_ = NULL;
+                                       _tmp57_ = str_array;
+                                       _tmp57__length1 = str_array_length1;
+                                       _tmp58_ = i;
+                                       _tmp59_ = _tmp57_[_tmp58_];
+                                       _tmp53_ = (const gchar*) _tmp59_;
+                               } else {
                                        _tmp53_ = "";
                                }
-                               _tmp57_ = ptr;
-                               _tmp58_ = g_stpcpy (_tmp57_, _tmp53_);
-                               ptr = _tmp58_;
+                               _tmp60_ = ptr;
+                               _tmp61_ = g_stpcpy (_tmp60_, _tmp53_);
+                               ptr = _tmp61_;
                        }
                }
-               _tmp59_ = res;
+               _tmp62_ = res;
                res = NULL;
-               result = (gchar*) _tmp59_;
+               result = (gchar*) _tmp62_;
                return result;
        } else {
-               gchar* _tmp60_ = NULL;
-               _tmp60_ = g_strdup ("");
-               result = _tmp60_;
+               gchar* _tmp63_ = NULL;
+               _tmp63_ = g_strdup ("");
+               result = _tmp63_;
                return result;
        }
 }
@@ -852,7 +861,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp4_ = _tmp3_;
                _g_free0 (_tmp2_);
                regex = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch4_g_regex_error;
                        }
@@ -864,7 +873,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp7_ = replacement;
                _tmp8_ = g_regex_replace_literal (_tmp6_, self, (gssize) (-1), 0, _tmp7_, 0, &_inner_error_);
                _tmp5_ = _tmp8_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_regex_unref0 (regex);
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch4_g_regex_error;
@@ -891,7 +900,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _g_error_free0 (e);
        }
        __finally4:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return NULL;
@@ -7032,7 +7041,7 @@ ValaCCodeMethodCallModule* vala_ccode_method_call_module_new (void) {
 
 static void vala_ccode_method_call_module_class_init (ValaCCodeMethodCallModuleClass * klass) {
        vala_ccode_method_call_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method_call = vala_ccode_method_call_module_real_visit_method_call;
+       ((ValaCodeVisitorClass *) klass)->visit_method_call = vala_ccode_method_call_module_real_visit_method_call;
 }
 
 
index c6ee452..b644a19 100644 (file)
@@ -296,6 +296,7 @@ void vala_ccode_method_module_complete_async (ValaCCodeMethodModule* self);
 ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self);
 static void vala_ccode_method_module_real_generate_method_declaration (ValaCCodeBaseModule* base, ValaMethod* m, ValaCCodeFile* decl_space);
 gboolean vala_ccode_base_module_add_symbol_declaration (ValaCCodeBaseModule* self, ValaCCodeFile* decl_space, ValaSymbol* sym, const gchar* name);
+ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self);
 void vala_ccode_base_module_generate_cparameters (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction);
 gchar* vala_ccode_base_module_get_ccode_real_name (ValaSymbol* sym);
 gchar* vala_ccode_base_module_get_ccode_constructv_name (ValaCreationMethod* m);
@@ -330,7 +331,6 @@ ValaCCodeExpression* vala_ccode_base_module_default_value_for_type (ValaCCodeBas
 gchar* vala_ccode_base_module_get_ccode_delegate_target_name (ValaVariable* variable);
 ValaCCodeExpression* vala_ccode_base_module_get_this_cexpression (ValaCCodeBaseModule* self);
 ValaClass* vala_ccode_base_module_get_current_class (ValaCCodeBaseModule* self);
-ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self);
 static void vala_ccode_method_module_create_precondition_statement (ValaCCodeMethodModule* self, ValaCodeNode* method_node, ValaDataType* ret_type, ValaExpression* precondition);
 gboolean vala_ccode_base_module_get_current_method_inner_error (ValaCCodeBaseModule* self);
 void vala_ccode_base_module_return_default_value (ValaCCodeBaseModule* self, ValaDataType* return_type);
@@ -1179,29 +1179,29 @@ static void vala_ccode_method_module_real_generate_method_declaration (ValaCCode
        gboolean _tmp15_ = FALSE;
        ValaMethod* _tmp16_ = NULL;
        gboolean _tmp17_ = FALSE;
-       ValaMethod* _tmp32_ = NULL;
-       gboolean _tmp33_ = FALSE;
-       gboolean _tmp34_ = FALSE;
+       ValaMethod* _tmp47_ = NULL;
+       gboolean _tmp48_ = FALSE;
+       gboolean _tmp49_ = FALSE;
        ValaHashMap* cparam_map = NULL;
-       GHashFunc _tmp39_ = NULL;
-       GEqualFunc _tmp40_ = NULL;
-       GEqualFunc _tmp41_ = NULL;
-       ValaHashMap* _tmp42_ = NULL;
+       GHashFunc _tmp54_ = NULL;
+       GEqualFunc _tmp55_ = NULL;
+       GEqualFunc _tmp56_ = NULL;
+       ValaHashMap* _tmp57_ = NULL;
        ValaHashMap* carg_map = NULL;
-       GHashFunc _tmp43_ = NULL;
-       GEqualFunc _tmp44_ = NULL;
-       GEqualFunc _tmp45_ = NULL;
-       ValaHashMap* _tmp46_ = NULL;
+       GHashFunc _tmp58_ = NULL;
+       GEqualFunc _tmp59_ = NULL;
+       GEqualFunc _tmp60_ = NULL;
+       ValaHashMap* _tmp61_ = NULL;
        ValaClass* cl = NULL;
-       ValaMethod* _tmp47_ = NULL;
-       ValaSymbol* _tmp48_ = NULL;
-       ValaSymbol* _tmp49_ = NULL;
-       ValaClass* _tmp50_ = NULL;
-       gboolean _tmp51_ = FALSE;
-       gboolean _tmp52_ = FALSE;
-       ValaMethod* _tmp53_ = NULL;
-       gboolean _tmp71_ = FALSE;
-       ValaMethod* _tmp72_ = NULL;
+       ValaMethod* _tmp62_ = NULL;
+       ValaSymbol* _tmp63_ = NULL;
+       ValaSymbol* _tmp64_ = NULL;
+       ValaClass* _tmp65_ = NULL;
+       gboolean _tmp66_ = FALSE;
+       gboolean _tmp67_ = FALSE;
+       ValaMethod* _tmp68_ = NULL;
+       gboolean _tmp86_ = FALSE;
+       ValaMethod* _tmp87_ = NULL;
        self = (ValaCCodeMethodModule*) base;
        g_return_if_fail (m != NULL);
        g_return_if_fail (decl_space != NULL);
@@ -1269,198 +1269,270 @@ static void vala_ccode_method_module_real_generate_method_declaration (ValaCCode
                        _tmp31_ = _tmp30_;
                        vala_ccode_function_set_modifiers (_tmp29_, _tmp31_ | VALA_CCODE_MODIFIERS_INLINE);
                }
+       } else {
+               gboolean _tmp32_ = FALSE;
+               gboolean _tmp33_ = FALSE;
+               ValaCodeContext* _tmp34_ = NULL;
+               ValaCodeContext* _tmp35_ = NULL;
+               gboolean _tmp36_ = FALSE;
+               gboolean _tmp37_ = FALSE;
+               _tmp34_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp35_ = _tmp34_;
+               _tmp36_ = vala_code_context_get_hide_internal (_tmp35_);
+               _tmp37_ = _tmp36_;
+               if (_tmp37_) {
+                       ValaMethod* _tmp38_ = NULL;
+                       gboolean _tmp39_ = FALSE;
+                       _tmp38_ = m;
+                       _tmp39_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp38_);
+                       _tmp33_ = _tmp39_;
+               } else {
+                       _tmp33_ = FALSE;
+               }
+               if (_tmp33_) {
+                       ValaMethod* _tmp40_ = NULL;
+                       gboolean _tmp41_ = FALSE;
+                       gboolean _tmp42_ = FALSE;
+                       _tmp40_ = m;
+                       _tmp41_ = vala_symbol_get_external ((ValaSymbol*) _tmp40_);
+                       _tmp42_ = _tmp41_;
+                       _tmp32_ = !_tmp42_;
+               } else {
+                       _tmp32_ = FALSE;
+               }
+               if (_tmp32_) {
+                       ValaCCodeFunction* _tmp43_ = NULL;
+                       ValaCCodeFunction* _tmp44_ = NULL;
+                       ValaCCodeModifiers _tmp45_ = 0;
+                       ValaCCodeModifiers _tmp46_ = 0;
+                       _tmp43_ = function;
+                       _tmp44_ = function;
+                       _tmp45_ = vala_ccode_function_get_modifiers (_tmp44_);
+                       _tmp46_ = _tmp45_;
+                       vala_ccode_function_set_modifiers (_tmp44_, _tmp46_ | VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp32_ = m;
-       _tmp33_ = vala_symbol_get_deprecated ((ValaSymbol*) _tmp32_);
-       _tmp34_ = _tmp33_;
-       if (_tmp34_) {
-               ValaCCodeFunction* _tmp35_ = NULL;
-               ValaCCodeFunction* _tmp36_ = NULL;
-               ValaCCodeModifiers _tmp37_ = 0;
-               ValaCCodeModifiers _tmp38_ = 0;
-               _tmp35_ = function;
-               _tmp36_ = function;
-               _tmp37_ = vala_ccode_function_get_modifiers (_tmp36_);
-               _tmp38_ = _tmp37_;
-               vala_ccode_function_set_modifiers (_tmp36_, _tmp38_ | VALA_CCODE_MODIFIERS_DEPRECATED);
-       }
-       _tmp39_ = g_direct_hash;
-       _tmp40_ = g_direct_equal;
-       _tmp41_ = g_direct_equal;
-       _tmp42_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp39_, _tmp40_, _tmp41_);
-       cparam_map = _tmp42_;
-       _tmp43_ = g_direct_hash;
-       _tmp44_ = g_direct_equal;
-       _tmp45_ = g_direct_equal;
-       _tmp46_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp43_, _tmp44_, _tmp45_);
-       carg_map = _tmp46_;
        _tmp47_ = m;
-       _tmp48_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp47_);
+       _tmp48_ = vala_symbol_get_deprecated ((ValaSymbol*) _tmp47_);
        _tmp49_ = _tmp48_;
-       _tmp50_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp49_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp49_) : NULL);
-       cl = _tmp50_;
-       _tmp53_ = m;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp53_, VALA_TYPE_CREATION_METHOD)) {
-               ValaClass* _tmp54_ = NULL;
-               _tmp54_ = cl;
-               _tmp52_ = _tmp54_ != NULL;
+       if (_tmp49_) {
+               ValaCCodeFunction* _tmp50_ = NULL;
+               ValaCCodeFunction* _tmp51_ = NULL;
+               ValaCCodeModifiers _tmp52_ = 0;
+               ValaCCodeModifiers _tmp53_ = 0;
+               _tmp50_ = function;
+               _tmp51_ = function;
+               _tmp52_ = vala_ccode_function_get_modifiers (_tmp51_);
+               _tmp53_ = _tmp52_;
+               vala_ccode_function_set_modifiers (_tmp51_, _tmp53_ | VALA_CCODE_MODIFIERS_DEPRECATED);
+       }
+       _tmp54_ = g_direct_hash;
+       _tmp55_ = g_direct_equal;
+       _tmp56_ = g_direct_equal;
+       _tmp57_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp54_, _tmp55_, _tmp56_);
+       cparam_map = _tmp57_;
+       _tmp58_ = g_direct_hash;
+       _tmp59_ = g_direct_equal;
+       _tmp60_ = g_direct_equal;
+       _tmp61_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp58_, _tmp59_, _tmp60_);
+       carg_map = _tmp61_;
+       _tmp62_ = m;
+       _tmp63_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp62_);
+       _tmp64_ = _tmp63_;
+       _tmp65_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp64_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp64_) : NULL);
+       cl = _tmp65_;
+       _tmp68_ = m;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp68_, VALA_TYPE_CREATION_METHOD)) {
+               ValaClass* _tmp69_ = NULL;
+               _tmp69_ = cl;
+               _tmp67_ = _tmp69_ != NULL;
        } else {
-               _tmp52_ = FALSE;
+               _tmp67_ = FALSE;
        }
-       if (_tmp52_) {
-               ValaClass* _tmp55_ = NULL;
-               gboolean _tmp56_ = FALSE;
-               gboolean _tmp57_ = FALSE;
-               _tmp55_ = cl;
-               _tmp56_ = vala_class_get_is_abstract (_tmp55_);
-               _tmp57_ = _tmp56_;
-               _tmp51_ = _tmp57_;
+       if (_tmp67_) {
+               ValaClass* _tmp70_ = NULL;
+               gboolean _tmp71_ = FALSE;
+               gboolean _tmp72_ = FALSE;
+               _tmp70_ = cl;
+               _tmp71_ = vala_class_get_is_abstract (_tmp70_);
+               _tmp72_ = _tmp71_;
+               _tmp66_ = _tmp72_;
        } else {
-               _tmp51_ = FALSE;
+               _tmp66_ = FALSE;
        }
-       if (!_tmp51_) {
+       if (!_tmp66_) {
                gboolean etv_tmp = FALSE;
-               gboolean _tmp58_ = FALSE;
-               ValaMethod* _tmp59_ = NULL;
-               ValaCCodeFile* _tmp60_ = NULL;
-               ValaHashMap* _tmp61_ = NULL;
-               ValaCCodeFunction* _tmp62_ = NULL;
-               ValaHashMap* _tmp63_ = NULL;
-               ValaCCodeIdentifier* _tmp64_ = NULL;
-               ValaCCodeIdentifier* _tmp65_ = NULL;
-               ValaCCodeFunctionCall* _tmp66_ = NULL;
-               ValaCCodeFunctionCall* _tmp67_ = NULL;
-               gboolean _tmp68_ = FALSE;
-               ValaCCodeFile* _tmp69_ = NULL;
-               ValaCCodeFunction* _tmp70_ = NULL;
-               _tmp58_ = self->priv->ellipses_to_valist;
-               etv_tmp = _tmp58_;
+               gboolean _tmp73_ = FALSE;
+               ValaMethod* _tmp74_ = NULL;
+               ValaCCodeFile* _tmp75_ = NULL;
+               ValaHashMap* _tmp76_ = NULL;
+               ValaCCodeFunction* _tmp77_ = NULL;
+               ValaHashMap* _tmp78_ = NULL;
+               ValaCCodeIdentifier* _tmp79_ = NULL;
+               ValaCCodeIdentifier* _tmp80_ = NULL;
+               ValaCCodeFunctionCall* _tmp81_ = NULL;
+               ValaCCodeFunctionCall* _tmp82_ = NULL;
+               gboolean _tmp83_ = FALSE;
+               ValaCCodeFile* _tmp84_ = NULL;
+               ValaCCodeFunction* _tmp85_ = NULL;
+               _tmp73_ = self->priv->ellipses_to_valist;
+               etv_tmp = _tmp73_;
                self->priv->ellipses_to_valist = FALSE;
-               _tmp59_ = m;
-               _tmp60_ = decl_space;
-               _tmp61_ = cparam_map;
-               _tmp62_ = function;
-               _tmp63_ = carg_map;
-               _tmp64_ = vala_ccode_identifier_new ("fake");
-               _tmp65_ = _tmp64_;
-               _tmp66_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp65_);
-               _tmp67_ = _tmp66_;
-               vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp59_, _tmp60_, (ValaMap*) _tmp61_, _tmp62_, NULL, (ValaMap*) _tmp63_, _tmp67_, 3);
-               _vala_ccode_node_unref0 (_tmp67_);
-               _vala_ccode_node_unref0 (_tmp65_);
-               _tmp68_ = etv_tmp;
-               self->priv->ellipses_to_valist = _tmp68_;
-               _tmp69_ = decl_space;
-               _tmp70_ = function;
-               vala_ccode_file_add_function_declaration (_tmp69_, _tmp70_);
+               _tmp74_ = m;
+               _tmp75_ = decl_space;
+               _tmp76_ = cparam_map;
+               _tmp77_ = function;
+               _tmp78_ = carg_map;
+               _tmp79_ = vala_ccode_identifier_new ("fake");
+               _tmp80_ = _tmp79_;
+               _tmp81_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp80_);
+               _tmp82_ = _tmp81_;
+               vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp74_, _tmp75_, (ValaMap*) _tmp76_, _tmp77_, NULL, (ValaMap*) _tmp78_, _tmp82_, 3);
+               _vala_ccode_node_unref0 (_tmp82_);
+               _vala_ccode_node_unref0 (_tmp80_);
+               _tmp83_ = etv_tmp;
+               self->priv->ellipses_to_valist = _tmp83_;
+               _tmp84_ = decl_space;
+               _tmp85_ = function;
+               vala_ccode_file_add_function_declaration (_tmp84_, _tmp85_);
        }
-       _tmp72_ = m;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp72_, VALA_TYPE_CREATION_METHOD)) {
-               ValaClass* _tmp73_ = NULL;
-               _tmp73_ = cl;
-               _tmp71_ = _tmp73_ != NULL;
+       _tmp87_ = m;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp87_, VALA_TYPE_CREATION_METHOD)) {
+               ValaClass* _tmp88_ = NULL;
+               _tmp88_ = cl;
+               _tmp86_ = _tmp88_ != NULL;
        } else {
-               _tmp71_ = FALSE;
+               _tmp86_ = FALSE;
        }
-       if (_tmp71_) {
-               ValaMethod* _tmp74_ = NULL;
-               gchar* _tmp75_ = NULL;
-               gchar* _tmp76_ = NULL;
-               ValaCCodeFunction* _tmp77_ = NULL;
-               ValaMethod* _tmp78_ = NULL;
-               gboolean _tmp79_ = FALSE;
-               GHashFunc _tmp84_ = NULL;
-               GEqualFunc _tmp85_ = NULL;
-               GEqualFunc _tmp86_ = NULL;
-               ValaHashMap* _tmp87_ = NULL;
-               gboolean etv_tmp = FALSE;
-               gboolean _tmp88_ = FALSE;
+       if (_tmp86_) {
                ValaMethod* _tmp89_ = NULL;
-               ValaCCodeFile* _tmp90_ = NULL;
-               ValaHashMap* _tmp91_ = NULL;
+               gchar* _tmp90_ = NULL;
+               gchar* _tmp91_ = NULL;
                ValaCCodeFunction* _tmp92_ = NULL;
-               gboolean _tmp93_ = FALSE;
-               ValaCCodeFile* _tmp94_ = NULL;
-               ValaCCodeFunction* _tmp95_ = NULL;
-               ValaMethod* _tmp96_ = NULL;
-               gboolean _tmp97_ = FALSE;
-               _tmp74_ = m;
-               _tmp75_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp74_);
-               _tmp76_ = _tmp75_;
-               _tmp77_ = vala_ccode_function_new (_tmp76_, "void");
+               ValaMethod* _tmp93_ = NULL;
+               gboolean _tmp94_ = FALSE;
+               GHashFunc _tmp110_ = NULL;
+               GEqualFunc _tmp111_ = NULL;
+               GEqualFunc _tmp112_ = NULL;
+               ValaHashMap* _tmp113_ = NULL;
+               gboolean etv_tmp = FALSE;
+               gboolean _tmp114_ = FALSE;
+               ValaMethod* _tmp115_ = NULL;
+               ValaCCodeFile* _tmp116_ = NULL;
+               ValaHashMap* _tmp117_ = NULL;
+               ValaCCodeFunction* _tmp118_ = NULL;
+               gboolean _tmp119_ = FALSE;
+               ValaCCodeFile* _tmp120_ = NULL;
+               ValaCCodeFunction* _tmp121_ = NULL;
+               ValaMethod* _tmp122_ = NULL;
+               gboolean _tmp123_ = FALSE;
+               _tmp89_ = m;
+               _tmp90_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp89_);
+               _tmp91_ = _tmp90_;
+               _tmp92_ = vala_ccode_function_new (_tmp91_, "void");
                _vala_ccode_node_unref0 (function);
-               function = _tmp77_;
-               _g_free0 (_tmp76_);
-               _tmp78_ = m;
-               _tmp79_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp78_);
-               if (_tmp79_) {
-                       ValaCCodeFunction* _tmp80_ = NULL;
-                       ValaCCodeFunction* _tmp81_ = NULL;
-                       ValaCCodeModifiers _tmp82_ = 0;
-                       ValaCCodeModifiers _tmp83_ = 0;
-                       _tmp80_ = function;
-                       _tmp81_ = function;
-                       _tmp82_ = vala_ccode_function_get_modifiers (_tmp81_);
-                       _tmp83_ = _tmp82_;
-                       vala_ccode_function_set_modifiers (_tmp81_, _tmp83_ | VALA_CCODE_MODIFIERS_STATIC);
+               function = _tmp92_;
+               _g_free0 (_tmp91_);
+               _tmp93_ = m;
+               _tmp94_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp93_);
+               if (_tmp94_) {
+                       ValaCCodeFunction* _tmp95_ = NULL;
+                       ValaCCodeFunction* _tmp96_ = NULL;
+                       ValaCCodeModifiers _tmp97_ = 0;
+                       ValaCCodeModifiers _tmp98_ = 0;
+                       _tmp95_ = function;
+                       _tmp96_ = function;
+                       _tmp97_ = vala_ccode_function_get_modifiers (_tmp96_);
+                       _tmp98_ = _tmp97_;
+                       vala_ccode_function_set_modifiers (_tmp96_, _tmp98_ | VALA_CCODE_MODIFIERS_STATIC);
+               } else {
+                       gboolean _tmp99_ = FALSE;
+                       ValaCodeContext* _tmp100_ = NULL;
+                       ValaCodeContext* _tmp101_ = NULL;
+                       gboolean _tmp102_ = FALSE;
+                       gboolean _tmp103_ = FALSE;
+                       _tmp100_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp101_ = _tmp100_;
+                       _tmp102_ = vala_code_context_get_hide_internal (_tmp101_);
+                       _tmp103_ = _tmp102_;
+                       if (_tmp103_) {
+                               ValaMethod* _tmp104_ = NULL;
+                               gboolean _tmp105_ = FALSE;
+                               _tmp104_ = m;
+                               _tmp105_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp104_);
+                               _tmp99_ = _tmp105_;
+                       } else {
+                               _tmp99_ = FALSE;
+                       }
+                       if (_tmp99_) {
+                               ValaCCodeFunction* _tmp106_ = NULL;
+                               ValaCCodeFunction* _tmp107_ = NULL;
+                               ValaCCodeModifiers _tmp108_ = 0;
+                               ValaCCodeModifiers _tmp109_ = 0;
+                               _tmp106_ = function;
+                               _tmp107_ = function;
+                               _tmp108_ = vala_ccode_function_get_modifiers (_tmp107_);
+                               _tmp109_ = _tmp108_;
+                               vala_ccode_function_set_modifiers (_tmp107_, _tmp109_ | VALA_CCODE_MODIFIERS_INTERNAL);
+                       }
                }
-               _tmp84_ = g_direct_hash;
-               _tmp85_ = g_direct_equal;
-               _tmp86_ = g_direct_equal;
-               _tmp87_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp84_, _tmp85_, _tmp86_);
+               _tmp110_ = g_direct_hash;
+               _tmp111_ = g_direct_equal;
+               _tmp112_ = g_direct_equal;
+               _tmp113_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp110_, _tmp111_, _tmp112_);
                _vala_map_unref0 (cparam_map);
-               cparam_map = _tmp87_;
-               _tmp88_ = self->priv->ellipses_to_valist;
-               etv_tmp = _tmp88_;
+               cparam_map = _tmp113_;
+               _tmp114_ = self->priv->ellipses_to_valist;
+               etv_tmp = _tmp114_;
                self->priv->ellipses_to_valist = FALSE;
-               _tmp89_ = m;
-               _tmp90_ = decl_space;
-               _tmp91_ = cparam_map;
-               _tmp92_ = function;
-               vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp89_, _tmp90_, (ValaMap*) _tmp91_, _tmp92_, NULL, NULL, NULL, 3);
-               _tmp93_ = etv_tmp;
-               self->priv->ellipses_to_valist = _tmp93_;
-               _tmp94_ = decl_space;
-               _tmp95_ = function;
-               vala_ccode_file_add_function_declaration (_tmp94_, _tmp95_);
-               _tmp96_ = m;
-               _tmp97_ = vala_method_is_variadic (_tmp96_);
-               if (_tmp97_) {
-                       ValaMethod* _tmp98_ = NULL;
-                       gchar* _tmp99_ = NULL;
-                       gchar* _tmp100_ = NULL;
-                       ValaCCodeFunction* _tmp101_ = NULL;
-                       GHashFunc _tmp102_ = NULL;
-                       GEqualFunc _tmp103_ = NULL;
-                       GEqualFunc _tmp104_ = NULL;
-                       ValaHashMap* _tmp105_ = NULL;
-                       ValaMethod* _tmp106_ = NULL;
-                       ValaCCodeFile* _tmp107_ = NULL;
-                       ValaHashMap* _tmp108_ = NULL;
-                       ValaCCodeFunction* _tmp109_ = NULL;
-                       ValaCCodeFile* _tmp110_ = NULL;
-                       ValaCCodeFunction* _tmp111_ = NULL;
-                       _tmp98_ = m;
-                       _tmp99_ = vala_ccode_base_module_get_ccode_constructv_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp98_, VALA_TYPE_CREATION_METHOD, ValaCreationMethod));
-                       _tmp100_ = _tmp99_;
-                       _tmp101_ = vala_ccode_function_new (_tmp100_, "void");
+               _tmp115_ = m;
+               _tmp116_ = decl_space;
+               _tmp117_ = cparam_map;
+               _tmp118_ = function;
+               vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp115_, _tmp116_, (ValaMap*) _tmp117_, _tmp118_, NULL, NULL, NULL, 3);
+               _tmp119_ = etv_tmp;
+               self->priv->ellipses_to_valist = _tmp119_;
+               _tmp120_ = decl_space;
+               _tmp121_ = function;
+               vala_ccode_file_add_function_declaration (_tmp120_, _tmp121_);
+               _tmp122_ = m;
+               _tmp123_ = vala_method_is_variadic (_tmp122_);
+               if (_tmp123_) {
+                       ValaMethod* _tmp124_ = NULL;
+                       gchar* _tmp125_ = NULL;
+                       gchar* _tmp126_ = NULL;
+                       ValaCCodeFunction* _tmp127_ = NULL;
+                       GHashFunc _tmp128_ = NULL;
+                       GEqualFunc _tmp129_ = NULL;
+                       GEqualFunc _tmp130_ = NULL;
+                       ValaHashMap* _tmp131_ = NULL;
+                       ValaMethod* _tmp132_ = NULL;
+                       ValaCCodeFile* _tmp133_ = NULL;
+                       ValaHashMap* _tmp134_ = NULL;
+                       ValaCCodeFunction* _tmp135_ = NULL;
+                       ValaCCodeFile* _tmp136_ = NULL;
+                       ValaCCodeFunction* _tmp137_ = NULL;
+                       _tmp124_ = m;
+                       _tmp125_ = vala_ccode_base_module_get_ccode_constructv_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp124_, VALA_TYPE_CREATION_METHOD, ValaCreationMethod));
+                       _tmp126_ = _tmp125_;
+                       _tmp127_ = vala_ccode_function_new (_tmp126_, "void");
                        _vala_ccode_node_unref0 (function);
-                       function = _tmp101_;
-                       _g_free0 (_tmp100_);
-                       _tmp102_ = g_direct_hash;
-                       _tmp103_ = g_direct_equal;
-                       _tmp104_ = g_direct_equal;
-                       _tmp105_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp102_, _tmp103_, _tmp104_);
+                       function = _tmp127_;
+                       _g_free0 (_tmp126_);
+                       _tmp128_ = g_direct_hash;
+                       _tmp129_ = g_direct_equal;
+                       _tmp130_ = g_direct_equal;
+                       _tmp131_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp128_, _tmp129_, _tmp130_);
                        _vala_map_unref0 (cparam_map);
-                       cparam_map = _tmp105_;
-                       _tmp106_ = m;
-                       _tmp107_ = decl_space;
-                       _tmp108_ = cparam_map;
-                       _tmp109_ = function;
-                       vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp106_, _tmp107_, (ValaMap*) _tmp108_, _tmp109_, NULL, NULL, NULL, 3);
-                       _tmp110_ = decl_space;
-                       _tmp111_ = function;
-                       vala_ccode_file_add_function_declaration (_tmp110_, _tmp111_);
+                       cparam_map = _tmp131_;
+                       _tmp132_ = m;
+                       _tmp133_ = decl_space;
+                       _tmp134_ = cparam_map;
+                       _tmp135_ = function;
+                       vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp132_, _tmp133_, (ValaMap*) _tmp134_, _tmp135_, NULL, NULL, NULL, 3);
+                       _tmp136_ = decl_space;
+                       _tmp137_ = function;
+                       vala_ccode_file_add_function_declaration (_tmp136_, _tmp137_);
                }
        }
        _vala_code_node_unref0 (cl);
@@ -2027,36 +2099,36 @@ static void vala_ccode_method_module_real_visit_method (ValaCodeVisitor* base, V
        ValaMethod* _tmp236_ = NULL;
        gboolean _tmp237_ = FALSE;
        gboolean _tmp238_ = FALSE;
-       ValaMethod* _tmp290_ = NULL;
-       ValaComment* _tmp291_ = NULL;
-       ValaComment* _tmp292_ = NULL;
-       ValaCCodeFunction* _tmp301_ = NULL;
-       gboolean _tmp302_ = FALSE;
-       ValaMethod* _tmp303_ = NULL;
-       gboolean _tmp304_ = FALSE;
-       gboolean _tmp305_ = FALSE;
-       gboolean _tmp1026_ = FALSE;
-       ValaMethod* _tmp1067_ = NULL;
-       ValaBlock* _tmp1068_ = NULL;
-       ValaBlock* _tmp1069_ = NULL;
-       gboolean _tmp1073_ = FALSE;
-       gboolean _tmp1104_ = FALSE;
-       ValaMethod* _tmp1105_ = NULL;
-       gboolean _tmp1106_ = FALSE;
-       gboolean _tmp1107_ = FALSE;
-       gboolean _tmp1249_ = FALSE;
-       ValaMethod* _tmp1250_ = NULL;
-       gboolean _tmp1251_ = FALSE;
-       gboolean _tmp1252_ = FALSE;
-       gboolean _tmp1290_ = FALSE;
-       gboolean _tmp1291_ = FALSE;
-       gboolean _tmp1292_ = FALSE;
-       ValaMethod* _tmp1293_ = NULL;
-       gboolean _tmp1294_ = FALSE;
-       gboolean _tmp1295_ = FALSE;
-       ValaMethod* _tmp1317_ = NULL;
-       gboolean _tmp1318_ = FALSE;
-       gboolean _tmp1319_ = FALSE;
+       ValaMethod* _tmp301_ = NULL;
+       ValaComment* _tmp302_ = NULL;
+       ValaComment* _tmp303_ = NULL;
+       ValaCCodeFunction* _tmp312_ = NULL;
+       gboolean _tmp313_ = FALSE;
+       ValaMethod* _tmp314_ = NULL;
+       gboolean _tmp315_ = FALSE;
+       gboolean _tmp316_ = FALSE;
+       gboolean _tmp1037_ = FALSE;
+       ValaMethod* _tmp1078_ = NULL;
+       ValaBlock* _tmp1079_ = NULL;
+       ValaBlock* _tmp1080_ = NULL;
+       gboolean _tmp1084_ = FALSE;
+       gboolean _tmp1115_ = FALSE;
+       ValaMethod* _tmp1116_ = NULL;
+       gboolean _tmp1117_ = FALSE;
+       gboolean _tmp1118_ = FALSE;
+       gboolean _tmp1260_ = FALSE;
+       ValaMethod* _tmp1261_ = NULL;
+       gboolean _tmp1262_ = FALSE;
+       gboolean _tmp1263_ = FALSE;
+       gboolean _tmp1301_ = FALSE;
+       gboolean _tmp1302_ = FALSE;
+       gboolean _tmp1303_ = FALSE;
+       ValaMethod* _tmp1304_ = NULL;
+       gboolean _tmp1305_ = FALSE;
+       gboolean _tmp1306_ = FALSE;
+       ValaMethod* _tmp1328_ = NULL;
+       gboolean _tmp1329_ = FALSE;
+       gboolean _tmp1330_ = FALSE;
        self = (ValaCCodeMethodModule*) base;
        g_return_if_fail (m != NULL);
        _tmp0_ = m;
@@ -2747,662 +2819,692 @@ static void vala_ccode_method_module_real_visit_method (ValaCodeVisitor* base, V
                                        _tmp265_ = vala_ccode_function_get_modifiers (_tmp264_);
                                        _tmp266_ = _tmp265_;
                                        vala_ccode_function_set_modifiers (_tmp264_, _tmp266_ | VALA_CCODE_MODIFIERS_STATIC);
+                               } else {
+                                       gboolean _tmp267_ = FALSE;
+                                       ValaCodeContext* _tmp268_ = NULL;
+                                       ValaCodeContext* _tmp269_ = NULL;
+                                       gboolean _tmp270_ = FALSE;
+                                       gboolean _tmp271_ = FALSE;
+                                       _tmp268_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                                       _tmp269_ = _tmp268_;
+                                       _tmp270_ = vala_code_context_get_hide_internal (_tmp269_);
+                                       _tmp271_ = _tmp270_;
+                                       if (_tmp271_) {
+                                               ValaMethod* _tmp272_ = NULL;
+                                               gboolean _tmp273_ = FALSE;
+                                               _tmp272_ = m;
+                                               _tmp273_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp272_);
+                                               _tmp267_ = _tmp273_;
+                                       } else {
+                                               _tmp267_ = FALSE;
+                                       }
+                                       if (_tmp267_) {
+                                               ValaCCodeFunction* _tmp274_ = NULL;
+                                               ValaCCodeFunction* _tmp275_ = NULL;
+                                               ValaCCodeModifiers _tmp276_ = 0;
+                                               ValaCCodeModifiers _tmp277_ = 0;
+                                               _tmp274_ = function;
+                                               _tmp275_ = function;
+                                               _tmp276_ = vala_ccode_function_get_modifiers (_tmp275_);
+                                               _tmp277_ = _tmp276_;
+                                               vala_ccode_function_set_modifiers (_tmp275_, _tmp277_ | VALA_CCODE_MODIFIERS_INTERNAL);
+                                       }
                                }
                        }
                } else {
-                       ValaMethod* _tmp267_ = NULL;
-                       ValaBlock* _tmp268_ = NULL;
-                       ValaBlock* _tmp269_ = NULL;
-                       _tmp267_ = m;
-                       _tmp268_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp267_);
-                       _tmp269_ = _tmp268_;
-                       if (_tmp269_ != NULL) {
-                               const gchar* _tmp270_ = NULL;
-                               gchar* _tmp271_ = NULL;
-                               gchar* _tmp272_ = NULL;
-                               ValaCCodeFunction* _tmp273_ = NULL;
-                               ValaCCodeFunction* _tmp274_ = NULL;
-                               ValaMethod* _tmp275_ = NULL;
-                               gchar* _tmp276_ = NULL;
-                               gchar* _tmp277_ = NULL;
-                               gchar* _tmp278_ = NULL;
-                               gchar* _tmp279_ = NULL;
-                               gchar* _tmp280_ = NULL;
-                               gchar* _tmp281_ = NULL;
-                               ValaCCodeParameter* _tmp282_ = NULL;
-                               ValaCCodeParameter* _tmp283_ = NULL;
+                       ValaMethod* _tmp278_ = NULL;
+                       ValaBlock* _tmp279_ = NULL;
+                       ValaBlock* _tmp280_ = NULL;
+                       _tmp278_ = m;
+                       _tmp279_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp278_);
+                       _tmp280_ = _tmp279_;
+                       if (_tmp280_ != NULL) {
+                               const gchar* _tmp281_ = NULL;
+                               gchar* _tmp282_ = NULL;
+                               gchar* _tmp283_ = NULL;
                                ValaCCodeFunction* _tmp284_ = NULL;
                                ValaCCodeFunction* _tmp285_ = NULL;
-                               ValaCCodeModifiers _tmp286_ = 0;
-                               ValaCCodeModifiers _tmp287_ = 0;
-                               ValaCCodeFile* _tmp288_ = NULL;
-                               ValaCCodeFunction* _tmp289_ = NULL;
-                               _tmp270_ = real_name;
-                               _tmp271_ = g_strconcat (_tmp270_, "_co", NULL);
-                               _tmp272_ = _tmp271_;
-                               _tmp273_ = vala_ccode_function_new (_tmp272_, "gboolean");
-                               _vala_ccode_node_unref0 (function);
-                               function = _tmp273_;
-                               _g_free0 (_tmp272_);
-                               _tmp274_ = function;
-                               _tmp275_ = m;
-                               _tmp276_ = vala_ccode_base_module_get_ccode_const_name ((ValaCodeNode*) _tmp275_);
-                               _tmp277_ = _tmp276_;
-                               _tmp278_ = vala_symbol_lower_case_to_camel_case (_tmp277_);
-                               _tmp279_ = _tmp278_;
-                               _tmp280_ = g_strconcat (_tmp279_, "Data*", NULL);
-                               _tmp281_ = _tmp280_;
-                               _tmp282_ = vala_ccode_parameter_new ("_data_", _tmp281_);
+                               ValaMethod* _tmp286_ = NULL;
+                               gchar* _tmp287_ = NULL;
+                               gchar* _tmp288_ = NULL;
+                               gchar* _tmp289_ = NULL;
+                               gchar* _tmp290_ = NULL;
+                               gchar* _tmp291_ = NULL;
+                               gchar* _tmp292_ = NULL;
+                               ValaCCodeParameter* _tmp293_ = NULL;
+                               ValaCCodeParameter* _tmp294_ = NULL;
+                               ValaCCodeFunction* _tmp295_ = NULL;
+                               ValaCCodeFunction* _tmp296_ = NULL;
+                               ValaCCodeModifiers _tmp297_ = 0;
+                               ValaCCodeModifiers _tmp298_ = 0;
+                               ValaCCodeFile* _tmp299_ = NULL;
+                               ValaCCodeFunction* _tmp300_ = NULL;
+                               _tmp281_ = real_name;
+                               _tmp282_ = g_strconcat (_tmp281_, "_co", NULL);
                                _tmp283_ = _tmp282_;
-                               vala_ccode_function_add_parameter (_tmp274_, _tmp283_);
-                               _vala_ccode_node_unref0 (_tmp283_);
-                               _g_free0 (_tmp281_);
-                               _g_free0 (_tmp279_);
-                               _g_free0 (_tmp277_);
-                               _tmp284_ = function;
+                               _tmp284_ = vala_ccode_function_new (_tmp283_, "gboolean");
+                               _vala_ccode_node_unref0 (function);
+                               function = _tmp284_;
+                               _g_free0 (_tmp283_);
                                _tmp285_ = function;
-                               _tmp286_ = vala_ccode_function_get_modifiers (_tmp285_);
-                               _tmp287_ = _tmp286_;
-                               vala_ccode_function_set_modifiers (_tmp285_, _tmp287_ | VALA_CCODE_MODIFIERS_STATIC);
-                               _tmp288_ = ((ValaCCodeBaseModule*) self)->cfile;
-                               _tmp289_ = function;
-                               vala_ccode_file_add_function_declaration (_tmp288_, _tmp289_);
+                               _tmp286_ = m;
+                               _tmp287_ = vala_ccode_base_module_get_ccode_const_name ((ValaCodeNode*) _tmp286_);
+                               _tmp288_ = _tmp287_;
+                               _tmp289_ = vala_symbol_lower_case_to_camel_case (_tmp288_);
+                               _tmp290_ = _tmp289_;
+                               _tmp291_ = g_strconcat (_tmp290_, "Data*", NULL);
+                               _tmp292_ = _tmp291_;
+                               _tmp293_ = vala_ccode_parameter_new ("_data_", _tmp292_);
+                               _tmp294_ = _tmp293_;
+                               vala_ccode_function_add_parameter (_tmp285_, _tmp294_);
+                               _vala_ccode_node_unref0 (_tmp294_);
+                               _g_free0 (_tmp292_);
+                               _g_free0 (_tmp290_);
+                               _g_free0 (_tmp288_);
+                               _tmp295_ = function;
+                               _tmp296_ = function;
+                               _tmp297_ = vala_ccode_function_get_modifiers (_tmp296_);
+                               _tmp298_ = _tmp297_;
+                               vala_ccode_function_set_modifiers (_tmp296_, _tmp298_ | VALA_CCODE_MODIFIERS_STATIC);
+                               _tmp299_ = ((ValaCCodeBaseModule*) self)->cfile;
+                               _tmp300_ = function;
+                               vala_ccode_file_add_function_declaration (_tmp299_, _tmp300_);
                        }
                }
        }
-       _tmp290_ = m;
-       _tmp291_ = vala_symbol_get_comment ((ValaSymbol*) _tmp290_);
-       _tmp292_ = _tmp291_;
-       if (_tmp292_ != NULL) {
-               ValaCCodeFile* _tmp293_ = NULL;
-               ValaMethod* _tmp294_ = NULL;
-               ValaComment* _tmp295_ = NULL;
-               ValaComment* _tmp296_ = NULL;
-               const gchar* _tmp297_ = NULL;
-               const gchar* _tmp298_ = NULL;
-               ValaCCodeComment* _tmp299_ = NULL;
-               ValaCCodeComment* _tmp300_ = NULL;
-               _tmp293_ = ((ValaCCodeBaseModule*) self)->cfile;
-               _tmp294_ = m;
-               _tmp295_ = vala_symbol_get_comment ((ValaSymbol*) _tmp294_);
-               _tmp296_ = _tmp295_;
-               _tmp297_ = vala_comment_get_content (_tmp296_);
-               _tmp298_ = _tmp297_;
-               _tmp299_ = vala_ccode_comment_new (_tmp298_);
-               _tmp300_ = _tmp299_;
-               vala_ccode_file_add_type_member_definition (_tmp293_, (ValaCCodeNode*) _tmp300_);
-               _vala_ccode_node_unref0 (_tmp300_);
+       _tmp301_ = m;
+       _tmp302_ = vala_symbol_get_comment ((ValaSymbol*) _tmp301_);
+       _tmp303_ = _tmp302_;
+       if (_tmp303_ != NULL) {
+               ValaCCodeFile* _tmp304_ = NULL;
+               ValaMethod* _tmp305_ = NULL;
+               ValaComment* _tmp306_ = NULL;
+               ValaComment* _tmp307_ = NULL;
+               const gchar* _tmp308_ = NULL;
+               const gchar* _tmp309_ = NULL;
+               ValaCCodeComment* _tmp310_ = NULL;
+               ValaCCodeComment* _tmp311_ = NULL;
+               _tmp304_ = ((ValaCCodeBaseModule*) self)->cfile;
+               _tmp305_ = m;
+               _tmp306_ = vala_symbol_get_comment ((ValaSymbol*) _tmp305_);
+               _tmp307_ = _tmp306_;
+               _tmp308_ = vala_comment_get_content (_tmp307_);
+               _tmp309_ = _tmp308_;
+               _tmp310_ = vala_ccode_comment_new (_tmp309_);
+               _tmp311_ = _tmp310_;
+               vala_ccode_file_add_type_member_definition (_tmp304_, (ValaCCodeNode*) _tmp311_);
+               _vala_ccode_node_unref0 (_tmp311_);
        }
-       _tmp301_ = function;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp301_);
-       _tmp303_ = m;
-       _tmp304_ = vala_method_get_is_abstract (_tmp303_);
-       _tmp305_ = _tmp304_;
-       if (!_tmp305_) {
-               _tmp302_ = TRUE;
+       _tmp312_ = function;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp312_);
+       _tmp314_ = m;
+       _tmp315_ = vala_method_get_is_abstract (_tmp314_);
+       _tmp316_ = _tmp315_;
+       if (!_tmp316_) {
+               _tmp313_ = TRUE;
        } else {
-               gboolean _tmp306_ = FALSE;
-               ValaMethod* _tmp307_ = NULL;
-               gboolean _tmp308_ = FALSE;
-               gboolean _tmp309_ = FALSE;
-               _tmp307_ = m;
-               _tmp308_ = vala_method_get_is_abstract (_tmp307_);
-               _tmp309_ = _tmp308_;
-               if (_tmp309_) {
-                       ValaTypeSymbol* _tmp310_ = NULL;
-                       ValaTypeSymbol* _tmp311_ = NULL;
-                       _tmp310_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
-                       _tmp311_ = _tmp310_;
-                       _tmp306_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp311_, VALA_TYPE_CLASS);
+               gboolean _tmp317_ = FALSE;
+               ValaMethod* _tmp318_ = NULL;
+               gboolean _tmp319_ = FALSE;
+               gboolean _tmp320_ = FALSE;
+               _tmp318_ = m;
+               _tmp319_ = vala_method_get_is_abstract (_tmp318_);
+               _tmp320_ = _tmp319_;
+               if (_tmp320_) {
+                       ValaTypeSymbol* _tmp321_ = NULL;
+                       ValaTypeSymbol* _tmp322_ = NULL;
+                       _tmp321_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
+                       _tmp322_ = _tmp321_;
+                       _tmp317_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp322_, VALA_TYPE_CLASS);
                } else {
-                       _tmp306_ = FALSE;
+                       _tmp317_ = FALSE;
                }
-               _tmp302_ = _tmp306_;
+               _tmp313_ = _tmp317_;
        }
-       if (_tmp302_) {
-               ValaMethod* _tmp312_ = NULL;
-               ValaBlock* _tmp313_ = NULL;
-               ValaBlock* _tmp314_ = NULL;
-               _tmp312_ = m;
-               _tmp313_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp312_);
-               _tmp314_ = _tmp313_;
-               if (_tmp314_ != NULL) {
-                       ValaMethod* _tmp315_ = NULL;
-                       gboolean _tmp316_ = FALSE;
-                       gboolean _tmp317_ = FALSE;
-                       ValaMethod* _tmp360_ = NULL;
-                       gboolean _tmp361_ = FALSE;
-                       gboolean _tmp362_ = FALSE;
-                       gboolean _tmp757_ = FALSE;
-                       gboolean _tmp758_ = FALSE;
-                       ValaMethod* _tmp759_ = NULL;
-                       ValaDataType* _tmp760_ = NULL;
-                       ValaDataType* _tmp761_ = NULL;
-                       ValaMethod* _tmp785_ = NULL;
-                       gboolean _tmp997_ = FALSE;
-                       ValaCodeContext* _tmp998_ = NULL;
-                       ValaCodeContext* _tmp999_ = NULL;
-                       ValaMethod* _tmp1000_ = NULL;
-                       ValaMethod* _tmp1001_ = NULL;
-                       ValaMethod* _tmp1002_ = NULL;
-                       _tmp315_ = m;
-                       _tmp316_ = vala_method_get_coroutine (_tmp315_);
-                       _tmp317_ = _tmp316_;
-                       if (_tmp317_) {
-                               ValaCCodeFunction* _tmp318_ = NULL;
-                               ValaCCodeFunction* _tmp319_ = NULL;
-                               ValaCCodeIdentifier* _tmp320_ = NULL;
-                               ValaCCodeIdentifier* _tmp321_ = NULL;
-                               ValaCCodeMemberAccess* _tmp322_ = NULL;
-                               ValaCCodeMemberAccess* _tmp323_ = NULL;
-                               ValaCCodeFunction* _tmp324_ = NULL;
-                               ValaCCodeFunction* _tmp325_ = NULL;
-                               ValaCCodeConstant* _tmp326_ = NULL;
-                               ValaCCodeConstant* _tmp327_ = NULL;
-                               ValaCCodeFunction* _tmp328_ = NULL;
+       if (_tmp313_) {
+               ValaMethod* _tmp323_ = NULL;
+               ValaBlock* _tmp324_ = NULL;
+               ValaBlock* _tmp325_ = NULL;
+               _tmp323_ = m;
+               _tmp324_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp323_);
+               _tmp325_ = _tmp324_;
+               if (_tmp325_ != NULL) {
+                       ValaMethod* _tmp326_ = NULL;
+                       gboolean _tmp327_ = FALSE;
+                       gboolean _tmp328_ = FALSE;
+                       ValaMethod* _tmp371_ = NULL;
+                       gboolean _tmp372_ = FALSE;
+                       gboolean _tmp373_ = FALSE;
+                       gboolean _tmp768_ = FALSE;
+                       gboolean _tmp769_ = FALSE;
+                       ValaMethod* _tmp770_ = NULL;
+                       ValaDataType* _tmp771_ = NULL;
+                       ValaDataType* _tmp772_ = NULL;
+                       ValaMethod* _tmp796_ = NULL;
+                       gboolean _tmp1008_ = FALSE;
+                       ValaCodeContext* _tmp1009_ = NULL;
+                       ValaCodeContext* _tmp1010_ = NULL;
+                       ValaMethod* _tmp1011_ = NULL;
+                       ValaMethod* _tmp1012_ = NULL;
+                       ValaMethod* _tmp1013_ = NULL;
+                       _tmp326_ = m;
+                       _tmp327_ = vala_method_get_coroutine (_tmp326_);
+                       _tmp328_ = _tmp327_;
+                       if (_tmp328_) {
                                ValaCCodeFunction* _tmp329_ = NULL;
-                               ValaCCodeFunction* _tmp348_ = NULL;
-                               ValaCCodeFunction* _tmp349_ = NULL;
-                               ValaCCodeFunction* _tmp350_ = NULL;
-                               ValaCCodeFunction* _tmp351_ = NULL;
-                               ValaCCodeIdentifier* _tmp352_ = NULL;
-                               ValaCCodeIdentifier* _tmp353_ = NULL;
-                               ValaCCodeFunctionCall* _tmp354_ = NULL;
-                               ValaCCodeFunctionCall* _tmp355_ = NULL;
-                               ValaCCodeFunction* _tmp356_ = NULL;
-                               ValaCCodeFunction* _tmp357_ = NULL;
-                               ValaCCodeFunction* _tmp358_ = NULL;
+                               ValaCCodeFunction* _tmp330_ = NULL;
+                               ValaCCodeIdentifier* _tmp331_ = NULL;
+                               ValaCCodeIdentifier* _tmp332_ = NULL;
+                               ValaCCodeMemberAccess* _tmp333_ = NULL;
+                               ValaCCodeMemberAccess* _tmp334_ = NULL;
+                               ValaCCodeFunction* _tmp335_ = NULL;
+                               ValaCCodeFunction* _tmp336_ = NULL;
+                               ValaCCodeConstant* _tmp337_ = NULL;
+                               ValaCCodeConstant* _tmp338_ = NULL;
+                               ValaCCodeFunction* _tmp339_ = NULL;
+                               ValaCCodeFunction* _tmp340_ = NULL;
                                ValaCCodeFunction* _tmp359_ = NULL;
-                               _tmp318_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp319_ = _tmp318_;
-                               _tmp320_ = vala_ccode_identifier_new ("_data_");
-                               _tmp321_ = _tmp320_;
-                               _tmp322_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp321_, "_state_");
-                               _tmp323_ = _tmp322_;
-                               vala_ccode_function_open_switch (_tmp319_, (ValaCCodeExpression*) _tmp323_);
-                               _vala_ccode_node_unref0 (_tmp323_);
-                               _vala_ccode_node_unref0 (_tmp321_);
-                               _tmp324_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp325_ = _tmp324_;
-                               _tmp326_ = vala_ccode_constant_new ("0");
-                               _tmp327_ = _tmp326_;
-                               vala_ccode_function_add_case (_tmp325_, (ValaCCodeExpression*) _tmp327_);
-                               _vala_ccode_node_unref0 (_tmp327_);
-                               _tmp328_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp329_ = _tmp328_;
-                               vala_ccode_function_add_goto (_tmp329_, "_state_0");
+                               ValaCCodeFunction* _tmp360_ = NULL;
+                               ValaCCodeFunction* _tmp361_ = NULL;
+                               ValaCCodeFunction* _tmp362_ = NULL;
+                               ValaCCodeIdentifier* _tmp363_ = NULL;
+                               ValaCCodeIdentifier* _tmp364_ = NULL;
+                               ValaCCodeFunctionCall* _tmp365_ = NULL;
+                               ValaCCodeFunctionCall* _tmp366_ = NULL;
+                               ValaCCodeFunction* _tmp367_ = NULL;
+                               ValaCCodeFunction* _tmp368_ = NULL;
+                               ValaCCodeFunction* _tmp369_ = NULL;
+                               ValaCCodeFunction* _tmp370_ = NULL;
+                               _tmp329_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp330_ = _tmp329_;
+                               _tmp331_ = vala_ccode_identifier_new ("_data_");
+                               _tmp332_ = _tmp331_;
+                               _tmp333_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp332_, "_state_");
+                               _tmp334_ = _tmp333_;
+                               vala_ccode_function_open_switch (_tmp330_, (ValaCCodeExpression*) _tmp334_);
+                               _vala_ccode_node_unref0 (_tmp334_);
+                               _vala_ccode_node_unref0 (_tmp332_);
+                               _tmp335_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp336_ = _tmp335_;
+                               _tmp337_ = vala_ccode_constant_new ("0");
+                               _tmp338_ = _tmp337_;
+                               vala_ccode_function_add_case (_tmp336_, (ValaCCodeExpression*) _tmp338_);
+                               _vala_ccode_node_unref0 (_tmp338_);
+                               _tmp339_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp340_ = _tmp339_;
+                               vala_ccode_function_add_goto (_tmp340_, "_state_0");
                                {
                                        gint state = 0;
                                        state = 1;
                                        {
-                                               gboolean _tmp330_ = FALSE;
-                                               _tmp330_ = TRUE;
+                                               gboolean _tmp341_ = FALSE;
+                                               _tmp341_ = TRUE;
                                                while (TRUE) {
-                                                       gint _tmp332_ = 0;
-                                                       ValaMethod* _tmp333_ = NULL;
-                                                       gint _tmp334_ = 0;
-                                                       gint _tmp335_ = 0;
-                                                       ValaCCodeFunction* _tmp336_ = NULL;
-                                                       ValaCCodeFunction* _tmp337_ = NULL;
-                                                       gint _tmp338_ = 0;
-                                                       gchar* _tmp339_ = NULL;
-                                                       gchar* _tmp340_ = NULL;
-                                                       ValaCCodeConstant* _tmp341_ = NULL;
-                                                       ValaCCodeConstant* _tmp342_ = NULL;
-                                                       ValaCCodeFunction* _tmp343_ = NULL;
-                                                       ValaCCodeFunction* _tmp344_ = NULL;
+                                                       gint _tmp343_ = 0;
+                                                       ValaMethod* _tmp344_ = NULL;
                                                        gint _tmp345_ = 0;
-                                                       gchar* _tmp346_ = NULL;
-                                                       gchar* _tmp347_ = NULL;
-                                                       if (!_tmp330_) {
-                                                               gint _tmp331_ = 0;
-                                                               _tmp331_ = state;
-                                                               state = _tmp331_ + 1;
+                                                       gint _tmp346_ = 0;
+                                                       ValaCCodeFunction* _tmp347_ = NULL;
+                                                       ValaCCodeFunction* _tmp348_ = NULL;
+                                                       gint _tmp349_ = 0;
+                                                       gchar* _tmp350_ = NULL;
+                                                       gchar* _tmp351_ = NULL;
+                                                       ValaCCodeConstant* _tmp352_ = NULL;
+                                                       ValaCCodeConstant* _tmp353_ = NULL;
+                                                       ValaCCodeFunction* _tmp354_ = NULL;
+                                                       ValaCCodeFunction* _tmp355_ = NULL;
+                                                       gint _tmp356_ = 0;
+                                                       gchar* _tmp357_ = NULL;
+                                                       gchar* _tmp358_ = NULL;
+                                                       if (!_tmp341_) {
+                                                               gint _tmp342_ = 0;
+                                                               _tmp342_ = state;
+                                                               state = _tmp342_ + 1;
                                                        }
-                                                       _tmp330_ = FALSE;
-                                                       _tmp332_ = state;
-                                                       _tmp333_ = m;
-                                                       _tmp334_ = vala_method_get_yield_count (_tmp333_);
-                                                       _tmp335_ = _tmp334_;
-                                                       if (!(_tmp332_ <= _tmp335_)) {
+                                                       _tmp341_ = FALSE;
+                                                       _tmp343_ = state;
+                                                       _tmp344_ = m;
+                                                       _tmp345_ = vala_method_get_yield_count (_tmp344_);
+                                                       _tmp346_ = _tmp345_;
+                                                       if (!(_tmp343_ <= _tmp346_)) {
                                                                break;
                                                        }
-                                                       _tmp336_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                                       _tmp337_ = _tmp336_;
-                                                       _tmp338_ = state;
-                                                       _tmp339_ = g_strdup_printf ("%i", _tmp338_);
-                                                       _tmp340_ = _tmp339_;
-                                                       _tmp341_ = vala_ccode_constant_new (_tmp340_);
-                                                       _tmp342_ = _tmp341_;
-                                                       vala_ccode_function_add_case (_tmp337_, (ValaCCodeExpression*) _tmp342_);
-                                                       _vala_ccode_node_unref0 (_tmp342_);
-                                                       _g_free0 (_tmp340_);
-                                                       _tmp343_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                                       _tmp344_ = _tmp343_;
-                                                       _tmp345_ = state;
-                                                       _tmp346_ = g_strdup_printf ("_state_%d", _tmp345_);
-                                                       _tmp347_ = _tmp346_;
-                                                       vala_ccode_function_add_goto (_tmp344_, _tmp347_);
-                                                       _g_free0 (_tmp347_);
+                                                       _tmp347_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                       _tmp348_ = _tmp347_;
+                                                       _tmp349_ = state;
+                                                       _tmp350_ = g_strdup_printf ("%i", _tmp349_);
+                                                       _tmp351_ = _tmp350_;
+                                                       _tmp352_ = vala_ccode_constant_new (_tmp351_);
+                                                       _tmp353_ = _tmp352_;
+                                                       vala_ccode_function_add_case (_tmp348_, (ValaCCodeExpression*) _tmp353_);
+                                                       _vala_ccode_node_unref0 (_tmp353_);
+                                                       _g_free0 (_tmp351_);
+                                                       _tmp354_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                       _tmp355_ = _tmp354_;
+                                                       _tmp356_ = state;
+                                                       _tmp357_ = g_strdup_printf ("_state_%d", _tmp356_);
+                                                       _tmp358_ = _tmp357_;
+                                                       vala_ccode_function_add_goto (_tmp355_, _tmp358_);
+                                                       _g_free0 (_tmp358_);
                                                }
                                        }
                                }
-                               _tmp348_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp349_ = _tmp348_;
-                               vala_ccode_function_add_default (_tmp349_);
-                               _tmp350_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp351_ = _tmp350_;
-                               _tmp352_ = vala_ccode_identifier_new ("g_assert_not_reached");
-                               _tmp353_ = _tmp352_;
-                               _tmp354_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp353_);
-                               _tmp355_ = _tmp354_;
-                               vala_ccode_function_add_expression (_tmp351_, (ValaCCodeExpression*) _tmp355_);
-                               _vala_ccode_node_unref0 (_tmp355_);
-                               _vala_ccode_node_unref0 (_tmp353_);
-                               _tmp356_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp357_ = _tmp356_;
-                               vala_ccode_function_close (_tmp357_);
-                               _tmp358_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp359_ = _tmp358_;
-                               vala_ccode_function_add_label (_tmp359_, "_state_0");
+                               _tmp359_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp360_ = _tmp359_;
+                               vala_ccode_function_add_default (_tmp360_);
+                               _tmp361_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp362_ = _tmp361_;
+                               _tmp363_ = vala_ccode_identifier_new ("g_assert_not_reached");
+                               _tmp364_ = _tmp363_;
+                               _tmp365_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp364_);
+                               _tmp366_ = _tmp365_;
+                               vala_ccode_function_add_expression (_tmp362_, (ValaCCodeExpression*) _tmp366_);
+                               _vala_ccode_node_unref0 (_tmp366_);
+                               _vala_ccode_node_unref0 (_tmp364_);
+                               _tmp367_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp368_ = _tmp367_;
+                               vala_ccode_function_close (_tmp368_);
+                               _tmp369_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp370_ = _tmp369_;
+                               vala_ccode_function_add_label (_tmp370_, "_state_0");
                        }
-                       _tmp360_ = m;
-                       _tmp361_ = vala_method_get_closure (_tmp360_);
-                       _tmp362_ = _tmp361_;
-                       if (_tmp362_) {
+                       _tmp371_ = m;
+                       _tmp372_ = vala_method_get_closure (_tmp371_);
+                       _tmp373_ = _tmp372_;
+                       if (_tmp373_) {
                                ValaBlock* closure_block = NULL;
-                               ValaBlock* _tmp363_ = NULL;
-                               ValaBlock* _tmp364_ = NULL;
-                               ValaBlock* _tmp365_ = NULL;
+                               ValaBlock* _tmp374_ = NULL;
+                               ValaBlock* _tmp375_ = NULL;
+                               ValaBlock* _tmp376_ = NULL;
                                gint block_id = 0;
-                               ValaBlock* _tmp366_ = NULL;
-                               gint _tmp367_ = 0;
-                               ValaMethod* _tmp407_ = NULL;
-                               ValaMemberBinding _tmp408_ = 0;
-                               ValaMemberBinding _tmp409_ = 0;
-                               _tmp363_ = vala_ccode_base_module_get_current_closure_block ((ValaCCodeBaseModule*) self);
-                               _tmp364_ = _tmp363_;
-                               _tmp365_ = _vala_code_node_ref0 (_tmp364_);
-                               closure_block = _tmp365_;
-                               _tmp366_ = closure_block;
-                               _tmp367_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp366_);
-                               block_id = _tmp367_;
+                               ValaBlock* _tmp377_ = NULL;
+                               gint _tmp378_ = 0;
+                               ValaMethod* _tmp418_ = NULL;
+                               ValaMemberBinding _tmp419_ = 0;
+                               ValaMemberBinding _tmp420_ = 0;
+                               _tmp374_ = vala_ccode_base_module_get_current_closure_block ((ValaCCodeBaseModule*) self);
+                               _tmp375_ = _tmp374_;
+                               _tmp376_ = _vala_code_node_ref0 (_tmp375_);
+                               closure_block = _tmp376_;
+                               _tmp377_ = closure_block;
+                               _tmp378_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp377_);
+                               block_id = _tmp378_;
                                while (TRUE) {
                                        ValaBlock* parent_closure_block = NULL;
-                                       ValaBlock* _tmp368_ = NULL;
-                                       ValaSymbol* _tmp369_ = NULL;
-                                       ValaSymbol* _tmp370_ = NULL;
-                                       ValaBlock* _tmp371_ = NULL;
-                                       ValaBlock* _tmp372_ = NULL;
-                                       ValaBlock* _tmp373_ = NULL;
+                                       ValaBlock* _tmp379_ = NULL;
+                                       ValaSymbol* _tmp380_ = NULL;
+                                       ValaSymbol* _tmp381_ = NULL;
+                                       ValaBlock* _tmp382_ = NULL;
+                                       ValaBlock* _tmp383_ = NULL;
+                                       ValaBlock* _tmp384_ = NULL;
                                        gint parent_block_id = 0;
-                                       ValaBlock* _tmp374_ = NULL;
-                                       gint _tmp375_ = 0;
+                                       ValaBlock* _tmp385_ = NULL;
+                                       gint _tmp386_ = 0;
                                        ValaCCodeMemberAccess* parent_data = NULL;
-                                       gint _tmp376_ = 0;
-                                       gchar* _tmp377_ = NULL;
-                                       gchar* _tmp378_ = NULL;
-                                       ValaCCodeIdentifier* _tmp379_ = NULL;
-                                       ValaCCodeIdentifier* _tmp380_ = NULL;
-                                       gint _tmp381_ = 0;
-                                       gchar* _tmp382_ = NULL;
-                                       gchar* _tmp383_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp384_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp385_ = NULL;
-                                       ValaCCodeFunction* _tmp386_ = NULL;
-                                       ValaCCodeFunction* _tmp387_ = NULL;
-                                       gint _tmp388_ = 0;
+                                       gint _tmp387_ = 0;
+                                       gchar* _tmp388_ = NULL;
                                        gchar* _tmp389_ = NULL;
-                                       gchar* _tmp390_ = NULL;
-                                       gint _tmp391_ = 0;
-                                       gchar* _tmp392_ = NULL;
+                                       ValaCCodeIdentifier* _tmp390_ = NULL;
+                                       ValaCCodeIdentifier* _tmp391_ = NULL;
+                                       gint _tmp392_ = 0;
                                        gchar* _tmp393_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp394_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp395_ = NULL;
-                                       ValaCCodeFunction* _tmp396_ = NULL;
+                                       gchar* _tmp394_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp395_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp396_ = NULL;
                                        ValaCCodeFunction* _tmp397_ = NULL;
-                                       gint _tmp398_ = 0;
-                                       gchar* _tmp399_ = NULL;
+                                       ValaCCodeFunction* _tmp398_ = NULL;
+                                       gint _tmp399_ = 0;
                                        gchar* _tmp400_ = NULL;
-                                       ValaCCodeIdentifier* _tmp401_ = NULL;
-                                       ValaCCodeIdentifier* _tmp402_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp403_ = NULL;
-                                       ValaBlock* _tmp404_ = NULL;
-                                       ValaBlock* _tmp405_ = NULL;
-                                       gint _tmp406_ = 0;
-                                       _tmp368_ = closure_block;
-                                       _tmp369_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp368_);
-                                       _tmp370_ = _tmp369_;
-                                       _tmp371_ = vala_ccode_base_module_next_closure_block ((ValaCCodeBaseModule*) self, _tmp370_);
-                                       _tmp372_ = _vala_code_node_ref0 (_tmp371_);
-                                       parent_closure_block = _tmp372_;
-                                       _tmp373_ = parent_closure_block;
-                                       if (_tmp373_ == NULL) {
+                                       gchar* _tmp401_ = NULL;
+                                       gint _tmp402_ = 0;
+                                       gchar* _tmp403_ = NULL;
+                                       gchar* _tmp404_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp405_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp406_ = NULL;
+                                       ValaCCodeFunction* _tmp407_ = NULL;
+                                       ValaCCodeFunction* _tmp408_ = NULL;
+                                       gint _tmp409_ = 0;
+                                       gchar* _tmp410_ = NULL;
+                                       gchar* _tmp411_ = NULL;
+                                       ValaCCodeIdentifier* _tmp412_ = NULL;
+                                       ValaCCodeIdentifier* _tmp413_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp414_ = NULL;
+                                       ValaBlock* _tmp415_ = NULL;
+                                       ValaBlock* _tmp416_ = NULL;
+                                       gint _tmp417_ = 0;
+                                       _tmp379_ = closure_block;
+                                       _tmp380_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp379_);
+                                       _tmp381_ = _tmp380_;
+                                       _tmp382_ = vala_ccode_base_module_next_closure_block ((ValaCCodeBaseModule*) self, _tmp381_);
+                                       _tmp383_ = _vala_code_node_ref0 (_tmp382_);
+                                       parent_closure_block = _tmp383_;
+                                       _tmp384_ = parent_closure_block;
+                                       if (_tmp384_ == NULL) {
                                                _vala_code_node_unref0 (parent_closure_block);
                                                break;
                                        }
-                                       _tmp374_ = parent_closure_block;
-                                       _tmp375_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp374_);
-                                       parent_block_id = _tmp375_;
-                                       _tmp376_ = block_id;
-                                       _tmp377_ = g_strdup_printf ("_data%d_", _tmp376_);
-                                       _tmp378_ = _tmp377_;
-                                       _tmp379_ = vala_ccode_identifier_new (_tmp378_);
-                                       _tmp380_ = _tmp379_;
-                                       _tmp381_ = parent_block_id;
-                                       _tmp382_ = g_strdup_printf ("_data%d_", _tmp381_);
-                                       _tmp383_ = _tmp382_;
-                                       _tmp384_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp380_, _tmp383_);
-                                       _tmp385_ = _tmp384_;
-                                       _g_free0 (_tmp383_);
-                                       _vala_ccode_node_unref0 (_tmp380_);
-                                       _g_free0 (_tmp378_);
-                                       parent_data = _tmp385_;
-                                       _tmp386_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp387_ = _tmp386_;
-                                       _tmp388_ = parent_block_id;
-                                       _tmp389_ = g_strdup_printf ("Block%dData*", _tmp388_);
-                                       _tmp390_ = _tmp389_;
-                                       _tmp391_ = parent_block_id;
-                                       _tmp392_ = g_strdup_printf ("_data%d_", _tmp391_);
-                                       _tmp393_ = _tmp392_;
-                                       _tmp394_ = vala_ccode_variable_declarator_new (_tmp393_, NULL, NULL);
-                                       _tmp395_ = _tmp394_;
-                                       vala_ccode_function_add_declaration (_tmp387_, _tmp390_, (ValaCCodeDeclarator*) _tmp395_, 0);
-                                       _vala_ccode_node_unref0 (_tmp395_);
-                                       _g_free0 (_tmp393_);
-                                       _g_free0 (_tmp390_);
-                                       _tmp396_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp397_ = _tmp396_;
-                                       _tmp398_ = parent_block_id;
-                                       _tmp399_ = g_strdup_printf ("_data%d_", _tmp398_);
-                                       _tmp400_ = _tmp399_;
-                                       _tmp401_ = vala_ccode_identifier_new (_tmp400_);
-                                       _tmp402_ = _tmp401_;
-                                       _tmp403_ = parent_data;
-                                       vala_ccode_function_add_assignment (_tmp397_, (ValaCCodeExpression*) _tmp402_, (ValaCCodeExpression*) _tmp403_);
-                                       _vala_ccode_node_unref0 (_tmp402_);
-                                       _g_free0 (_tmp400_);
-                                       _tmp404_ = parent_closure_block;
-                                       _tmp405_ = _vala_code_node_ref0 (_tmp404_);
+                                       _tmp385_ = parent_closure_block;
+                                       _tmp386_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp385_);
+                                       parent_block_id = _tmp386_;
+                                       _tmp387_ = block_id;
+                                       _tmp388_ = g_strdup_printf ("_data%d_", _tmp387_);
+                                       _tmp389_ = _tmp388_;
+                                       _tmp390_ = vala_ccode_identifier_new (_tmp389_);
+                                       _tmp391_ = _tmp390_;
+                                       _tmp392_ = parent_block_id;
+                                       _tmp393_ = g_strdup_printf ("_data%d_", _tmp392_);
+                                       _tmp394_ = _tmp393_;
+                                       _tmp395_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp391_, _tmp394_);
+                                       _tmp396_ = _tmp395_;
+                                       _g_free0 (_tmp394_);
+                                       _vala_ccode_node_unref0 (_tmp391_);
+                                       _g_free0 (_tmp389_);
+                                       parent_data = _tmp396_;
+                                       _tmp397_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp398_ = _tmp397_;
+                                       _tmp399_ = parent_block_id;
+                                       _tmp400_ = g_strdup_printf ("Block%dData*", _tmp399_);
+                                       _tmp401_ = _tmp400_;
+                                       _tmp402_ = parent_block_id;
+                                       _tmp403_ = g_strdup_printf ("_data%d_", _tmp402_);
+                                       _tmp404_ = _tmp403_;
+                                       _tmp405_ = vala_ccode_variable_declarator_new (_tmp404_, NULL, NULL);
+                                       _tmp406_ = _tmp405_;
+                                       vala_ccode_function_add_declaration (_tmp398_, _tmp401_, (ValaCCodeDeclarator*) _tmp406_, 0);
+                                       _vala_ccode_node_unref0 (_tmp406_);
+                                       _g_free0 (_tmp404_);
+                                       _g_free0 (_tmp401_);
+                                       _tmp407_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp408_ = _tmp407_;
+                                       _tmp409_ = parent_block_id;
+                                       _tmp410_ = g_strdup_printf ("_data%d_", _tmp409_);
+                                       _tmp411_ = _tmp410_;
+                                       _tmp412_ = vala_ccode_identifier_new (_tmp411_);
+                                       _tmp413_ = _tmp412_;
+                                       _tmp414_ = parent_data;
+                                       vala_ccode_function_add_assignment (_tmp408_, (ValaCCodeExpression*) _tmp413_, (ValaCCodeExpression*) _tmp414_);
+                                       _vala_ccode_node_unref0 (_tmp413_);
+                                       _g_free0 (_tmp411_);
+                                       _tmp415_ = parent_closure_block;
+                                       _tmp416_ = _vala_code_node_ref0 (_tmp415_);
                                        _vala_code_node_unref0 (closure_block);
-                                       closure_block = _tmp405_;
-                                       _tmp406_ = parent_block_id;
-                                       block_id = _tmp406_;
+                                       closure_block = _tmp416_;
+                                       _tmp417_ = parent_block_id;
+                                       block_id = _tmp417_;
                                        _vala_ccode_node_unref0 (parent_data);
                                        _vala_code_node_unref0 (parent_closure_block);
                                }
-                               _tmp407_ = m;
-                               _tmp408_ = vala_method_get_binding (_tmp407_);
-                               _tmp409_ = _tmp408_;
-                               if (_tmp409_ == VALA_MEMBER_BINDING_INSTANCE) {
+                               _tmp418_ = m;
+                               _tmp419_ = vala_method_get_binding (_tmp418_);
+                               _tmp420_ = _tmp419_;
+                               if (_tmp420_ == VALA_MEMBER_BINDING_INSTANCE) {
                                        ValaCCodeMemberAccess* cself = NULL;
-                                       gint _tmp410_ = 0;
-                                       gchar* _tmp411_ = NULL;
-                                       gchar* _tmp412_ = NULL;
-                                       ValaCCodeIdentifier* _tmp413_ = NULL;
-                                       ValaCCodeIdentifier* _tmp414_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp415_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp416_ = NULL;
-                                       ValaCCodeFunction* _tmp417_ = NULL;
-                                       ValaCCodeFunction* _tmp418_ = NULL;
-                                       ValaTypeSymbol* _tmp419_ = NULL;
-                                       ValaTypeSymbol* _tmp420_ = NULL;
-                                       ValaDataType* _tmp421_ = NULL;
-                                       ValaDataType* _tmp422_ = NULL;
+                                       gint _tmp421_ = 0;
+                                       gchar* _tmp422_ = NULL;
                                        gchar* _tmp423_ = NULL;
-                                       gchar* _tmp424_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp425_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp426_ = NULL;
-                                       ValaCCodeFunction* _tmp427_ = NULL;
+                                       ValaCCodeIdentifier* _tmp424_ = NULL;
+                                       ValaCCodeIdentifier* _tmp425_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp426_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp427_ = NULL;
                                        ValaCCodeFunction* _tmp428_ = NULL;
-                                       ValaCCodeIdentifier* _tmp429_ = NULL;
-                                       ValaCCodeIdentifier* _tmp430_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp431_ = NULL;
-                                       _tmp410_ = block_id;
-                                       _tmp411_ = g_strdup_printf ("_data%d_", _tmp410_);
-                                       _tmp412_ = _tmp411_;
-                                       _tmp413_ = vala_ccode_identifier_new (_tmp412_);
-                                       _tmp414_ = _tmp413_;
-                                       _tmp415_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp414_, "self");
-                                       _tmp416_ = _tmp415_;
-                                       _vala_ccode_node_unref0 (_tmp414_);
-                                       _g_free0 (_tmp412_);
-                                       cself = _tmp416_;
-                                       _tmp417_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp418_ = _tmp417_;
-                                       _tmp419_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
-                                       _tmp420_ = _tmp419_;
-                                       _tmp421_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp420_);
-                                       _tmp422_ = _tmp421_;
-                                       _tmp423_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp422_);
-                                       _tmp424_ = _tmp423_;
-                                       _tmp425_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
-                                       _tmp426_ = _tmp425_;
-                                       vala_ccode_function_add_declaration (_tmp418_, _tmp424_, (ValaCCodeDeclarator*) _tmp426_, 0);
-                                       _vala_ccode_node_unref0 (_tmp426_);
-                                       _g_free0 (_tmp424_);
-                                       _vala_code_node_unref0 (_tmp422_);
-                                       _tmp427_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp428_ = _tmp427_;
-                                       _tmp429_ = vala_ccode_identifier_new ("self");
-                                       _tmp430_ = _tmp429_;
-                                       _tmp431_ = cself;
-                                       vala_ccode_function_add_assignment (_tmp428_, (ValaCCodeExpression*) _tmp430_, (ValaCCodeExpression*) _tmp431_);
-                                       _vala_ccode_node_unref0 (_tmp430_);
+                                       ValaCCodeFunction* _tmp429_ = NULL;
+                                       ValaTypeSymbol* _tmp430_ = NULL;
+                                       ValaTypeSymbol* _tmp431_ = NULL;
+                                       ValaDataType* _tmp432_ = NULL;
+                                       ValaDataType* _tmp433_ = NULL;
+                                       gchar* _tmp434_ = NULL;
+                                       gchar* _tmp435_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp436_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp437_ = NULL;
+                                       ValaCCodeFunction* _tmp438_ = NULL;
+                                       ValaCCodeFunction* _tmp439_ = NULL;
+                                       ValaCCodeIdentifier* _tmp440_ = NULL;
+                                       ValaCCodeIdentifier* _tmp441_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp442_ = NULL;
+                                       _tmp421_ = block_id;
+                                       _tmp422_ = g_strdup_printf ("_data%d_", _tmp421_);
+                                       _tmp423_ = _tmp422_;
+                                       _tmp424_ = vala_ccode_identifier_new (_tmp423_);
+                                       _tmp425_ = _tmp424_;
+                                       _tmp426_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp425_, "self");
+                                       _tmp427_ = _tmp426_;
+                                       _vala_ccode_node_unref0 (_tmp425_);
+                                       _g_free0 (_tmp423_);
+                                       cself = _tmp427_;
+                                       _tmp428_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp429_ = _tmp428_;
+                                       _tmp430_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
+                                       _tmp431_ = _tmp430_;
+                                       _tmp432_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp431_);
+                                       _tmp433_ = _tmp432_;
+                                       _tmp434_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp433_);
+                                       _tmp435_ = _tmp434_;
+                                       _tmp436_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
+                                       _tmp437_ = _tmp436_;
+                                       vala_ccode_function_add_declaration (_tmp429_, _tmp435_, (ValaCCodeDeclarator*) _tmp437_, 0);
+                                       _vala_ccode_node_unref0 (_tmp437_);
+                                       _g_free0 (_tmp435_);
+                                       _vala_code_node_unref0 (_tmp433_);
+                                       _tmp438_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp439_ = _tmp438_;
+                                       _tmp440_ = vala_ccode_identifier_new ("self");
+                                       _tmp441_ = _tmp440_;
+                                       _tmp442_ = cself;
+                                       vala_ccode_function_add_assignment (_tmp439_, (ValaCCodeExpression*) _tmp441_, (ValaCCodeExpression*) _tmp442_);
+                                       _vala_ccode_node_unref0 (_tmp441_);
                                        _vala_ccode_node_unref0 (cself);
                                }
                                {
                                        ValaList* _type_param_list = NULL;
-                                       ValaMethod* _tmp432_ = NULL;
-                                       ValaList* _tmp433_ = NULL;
+                                       ValaMethod* _tmp443_ = NULL;
+                                       ValaList* _tmp444_ = NULL;
                                        gint _type_param_size = 0;
-                                       ValaList* _tmp434_ = NULL;
-                                       gint _tmp435_ = 0;
-                                       gint _tmp436_ = 0;
+                                       ValaList* _tmp445_ = NULL;
+                                       gint _tmp446_ = 0;
+                                       gint _tmp447_ = 0;
                                        gint _type_param_index = 0;
-                                       _tmp432_ = m;
-                                       _tmp433_ = vala_method_get_type_parameters (_tmp432_);
-                                       _type_param_list = _tmp433_;
-                                       _tmp434_ = _type_param_list;
-                                       _tmp435_ = vala_collection_get_size ((ValaCollection*) _tmp434_);
-                                       _tmp436_ = _tmp435_;
-                                       _type_param_size = _tmp436_;
+                                       _tmp443_ = m;
+                                       _tmp444_ = vala_method_get_type_parameters (_tmp443_);
+                                       _type_param_list = _tmp444_;
+                                       _tmp445_ = _type_param_list;
+                                       _tmp446_ = vala_collection_get_size ((ValaCollection*) _tmp445_);
+                                       _tmp447_ = _tmp446_;
+                                       _type_param_size = _tmp447_;
                                        _type_param_index = -1;
                                        while (TRUE) {
-                                               gint _tmp437_ = 0;
-                                               gint _tmp438_ = 0;
-                                               gint _tmp439_ = 0;
+                                               gint _tmp448_ = 0;
+                                               gint _tmp449_ = 0;
+                                               gint _tmp450_ = 0;
                                                ValaTypeParameter* type_param = NULL;
-                                               ValaList* _tmp440_ = NULL;
-                                               gint _tmp441_ = 0;
-                                               gpointer _tmp442_ = NULL;
+                                               ValaList* _tmp451_ = NULL;
+                                               gint _tmp452_ = 0;
+                                               gpointer _tmp453_ = NULL;
                                                gchar* func_name = NULL;
-                                               ValaTypeParameter* _tmp443_ = NULL;
-                                               const gchar* _tmp444_ = NULL;
-                                               const gchar* _tmp445_ = NULL;
-                                               gchar* _tmp446_ = NULL;
-                                               gchar* _tmp447_ = NULL;
-                                               gchar* _tmp448_ = NULL;
-                                               ValaCCodeFunction* _tmp449_ = NULL;
-                                               ValaCCodeFunction* _tmp450_ = NULL;
-                                               const gchar* _tmp451_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp452_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp453_ = NULL;
-                                               ValaCCodeFunction* _tmp454_ = NULL;
-                                               ValaCCodeFunction* _tmp455_ = NULL;
+                                               ValaTypeParameter* _tmp454_ = NULL;
+                                               const gchar* _tmp455_ = NULL;
                                                const gchar* _tmp456_ = NULL;
-                                               ValaCCodeIdentifier* _tmp457_ = NULL;
-                                               ValaCCodeIdentifier* _tmp458_ = NULL;
-                                               gint _tmp459_ = 0;
-                                               gchar* _tmp460_ = NULL;
-                                               gchar* _tmp461_ = NULL;
-                                               ValaCCodeExpression* _tmp462_ = NULL;
-                                               ValaCCodeExpression* _tmp463_ = NULL;
-                                               const gchar* _tmp464_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp465_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp466_ = NULL;
-                                               ValaTypeParameter* _tmp467_ = NULL;
-                                               const gchar* _tmp468_ = NULL;
-                                               const gchar* _tmp469_ = NULL;
-                                               gchar* _tmp470_ = NULL;
+                                               gchar* _tmp457_ = NULL;
+                                               gchar* _tmp458_ = NULL;
+                                               gchar* _tmp459_ = NULL;
+                                               ValaCCodeFunction* _tmp460_ = NULL;
+                                               ValaCCodeFunction* _tmp461_ = NULL;
+                                               const gchar* _tmp462_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp463_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp464_ = NULL;
+                                               ValaCCodeFunction* _tmp465_ = NULL;
+                                               ValaCCodeFunction* _tmp466_ = NULL;
+                                               const gchar* _tmp467_ = NULL;
+                                               ValaCCodeIdentifier* _tmp468_ = NULL;
+                                               ValaCCodeIdentifier* _tmp469_ = NULL;
+                                               gint _tmp470_ = 0;
                                                gchar* _tmp471_ = NULL;
                                                gchar* _tmp472_ = NULL;
-                                               ValaCCodeFunction* _tmp473_ = NULL;
-                                               ValaCCodeFunction* _tmp474_ = NULL;
+                                               ValaCCodeExpression* _tmp473_ = NULL;
+                                               ValaCCodeExpression* _tmp474_ = NULL;
                                                const gchar* _tmp475_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp476_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp477_ = NULL;
-                                               ValaCCodeFunction* _tmp478_ = NULL;
-                                               ValaCCodeFunction* _tmp479_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp476_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp477_ = NULL;
+                                               ValaTypeParameter* _tmp478_ = NULL;
+                                               const gchar* _tmp479_ = NULL;
                                                const gchar* _tmp480_ = NULL;
-                                               ValaCCodeIdentifier* _tmp481_ = NULL;
-                                               ValaCCodeIdentifier* _tmp482_ = NULL;
-                                               gint _tmp483_ = 0;
-                                               gchar* _tmp484_ = NULL;
-                                               gchar* _tmp485_ = NULL;
-                                               ValaCCodeExpression* _tmp486_ = NULL;
-                                               ValaCCodeExpression* _tmp487_ = NULL;
-                                               const gchar* _tmp488_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp489_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp490_ = NULL;
-                                               ValaTypeParameter* _tmp491_ = NULL;
-                                               const gchar* _tmp492_ = NULL;
-                                               const gchar* _tmp493_ = NULL;
-                                               gchar* _tmp494_ = NULL;
+                                               gchar* _tmp481_ = NULL;
+                                               gchar* _tmp482_ = NULL;
+                                               gchar* _tmp483_ = NULL;
+                                               ValaCCodeFunction* _tmp484_ = NULL;
+                                               ValaCCodeFunction* _tmp485_ = NULL;
+                                               const gchar* _tmp486_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp487_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp488_ = NULL;
+                                               ValaCCodeFunction* _tmp489_ = NULL;
+                                               ValaCCodeFunction* _tmp490_ = NULL;
+                                               const gchar* _tmp491_ = NULL;
+                                               ValaCCodeIdentifier* _tmp492_ = NULL;
+                                               ValaCCodeIdentifier* _tmp493_ = NULL;
+                                               gint _tmp494_ = 0;
                                                gchar* _tmp495_ = NULL;
                                                gchar* _tmp496_ = NULL;
-                                               ValaCCodeFunction* _tmp497_ = NULL;
-                                               ValaCCodeFunction* _tmp498_ = NULL;
+                                               ValaCCodeExpression* _tmp497_ = NULL;
+                                               ValaCCodeExpression* _tmp498_ = NULL;
                                                const gchar* _tmp499_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp500_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp501_ = NULL;
-                                               ValaCCodeFunction* _tmp502_ = NULL;
-                                               ValaCCodeFunction* _tmp503_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp500_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp501_ = NULL;
+                                               ValaTypeParameter* _tmp502_ = NULL;
+                                               const gchar* _tmp503_ = NULL;
                                                const gchar* _tmp504_ = NULL;
-                                               ValaCCodeIdentifier* _tmp505_ = NULL;
-                                               ValaCCodeIdentifier* _tmp506_ = NULL;
-                                               gint _tmp507_ = 0;
-                                               gchar* _tmp508_ = NULL;
-                                               gchar* _tmp509_ = NULL;
-                                               ValaCCodeExpression* _tmp510_ = NULL;
-                                               ValaCCodeExpression* _tmp511_ = NULL;
-                                               const gchar* _tmp512_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp513_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp514_ = NULL;
-                                               _tmp437_ = _type_param_index;
-                                               _type_param_index = _tmp437_ + 1;
-                                               _tmp438_ = _type_param_index;
-                                               _tmp439_ = _type_param_size;
-                                               if (!(_tmp438_ < _tmp439_)) {
+                                               gchar* _tmp505_ = NULL;
+                                               gchar* _tmp506_ = NULL;
+                                               gchar* _tmp507_ = NULL;
+                                               ValaCCodeFunction* _tmp508_ = NULL;
+                                               ValaCCodeFunction* _tmp509_ = NULL;
+                                               const gchar* _tmp510_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp511_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp512_ = NULL;
+                                               ValaCCodeFunction* _tmp513_ = NULL;
+                                               ValaCCodeFunction* _tmp514_ = NULL;
+                                               const gchar* _tmp515_ = NULL;
+                                               ValaCCodeIdentifier* _tmp516_ = NULL;
+                                               ValaCCodeIdentifier* _tmp517_ = NULL;
+                                               gint _tmp518_ = 0;
+                                               gchar* _tmp519_ = NULL;
+                                               gchar* _tmp520_ = NULL;
+                                               ValaCCodeExpression* _tmp521_ = NULL;
+                                               ValaCCodeExpression* _tmp522_ = NULL;
+                                               const gchar* _tmp523_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp524_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp525_ = NULL;
+                                               _tmp448_ = _type_param_index;
+                                               _type_param_index = _tmp448_ + 1;
+                                               _tmp449_ = _type_param_index;
+                                               _tmp450_ = _type_param_size;
+                                               if (!(_tmp449_ < _tmp450_)) {
                                                        break;
                                                }
-                                               _tmp440_ = _type_param_list;
-                                               _tmp441_ = _type_param_index;
-                                               _tmp442_ = vala_list_get (_tmp440_, _tmp441_);
-                                               type_param = (ValaTypeParameter*) _tmp442_;
-                                               _tmp443_ = type_param;
-                                               _tmp444_ = vala_symbol_get_name ((ValaSymbol*) _tmp443_);
-                                               _tmp445_ = _tmp444_;
-                                               _tmp446_ = g_utf8_strdown (_tmp445_, (gssize) (-1));
-                                               _tmp447_ = _tmp446_;
-                                               _tmp448_ = g_strdup_printf ("%s_type", _tmp447_);
-                                               _g_free0 (func_name);
-                                               func_name = _tmp448_;
-                                               _g_free0 (_tmp447_);
-                                               _tmp449_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                               _tmp450_ = _tmp449_;
-                                               _tmp451_ = func_name;
-                                               _tmp452_ = vala_ccode_variable_declarator_new (_tmp451_, NULL, NULL);
-                                               _tmp453_ = _tmp452_;
-                                               vala_ccode_function_add_declaration (_tmp450_, "GType", (ValaCCodeDeclarator*) _tmp453_, 0);
-                                               _vala_ccode_node_unref0 (_tmp453_);
-                                               _tmp454_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                               _tmp455_ = _tmp454_;
-                                               _tmp456_ = func_name;
-                                               _tmp457_ = vala_ccode_identifier_new (_tmp456_);
+                                               _tmp451_ = _type_param_list;
+                                               _tmp452_ = _type_param_index;
+                                               _tmp453_ = vala_list_get (_tmp451_, _tmp452_);
+                                               type_param = (ValaTypeParameter*) _tmp453_;
+                                               _tmp454_ = type_param;
+                                               _tmp455_ = vala_symbol_get_name ((ValaSymbol*) _tmp454_);
+                                               _tmp456_ = _tmp455_;
+                                               _tmp457_ = g_utf8_strdown (_tmp456_, (gssize) (-1));
                                                _tmp458_ = _tmp457_;
-                                               _tmp459_ = block_id;
-                                               _tmp460_ = g_strdup_printf ("_data%d_", _tmp459_);
+                                               _tmp459_ = g_strdup_printf ("%s_type", _tmp458_);
+                                               _g_free0 (func_name);
+                                               func_name = _tmp459_;
+                                               _g_free0 (_tmp458_);
+                                               _tmp460_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                _tmp461_ = _tmp460_;
-                                               _tmp462_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp461_);
-                                               _tmp463_ = _tmp462_;
-                                               _tmp464_ = func_name;
-                                               _tmp465_ = vala_ccode_member_access_new_pointer (_tmp463_, _tmp464_);
+                                               _tmp462_ = func_name;
+                                               _tmp463_ = vala_ccode_variable_declarator_new (_tmp462_, NULL, NULL);
+                                               _tmp464_ = _tmp463_;
+                                               vala_ccode_function_add_declaration (_tmp461_, "GType", (ValaCCodeDeclarator*) _tmp464_, 0);
+                                               _vala_ccode_node_unref0 (_tmp464_);
+                                               _tmp465_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                _tmp466_ = _tmp465_;
-                                               vala_ccode_function_add_assignment (_tmp455_, (ValaCCodeExpression*) _tmp458_, (ValaCCodeExpression*) _tmp466_);
-                                               _vala_ccode_node_unref0 (_tmp466_);
-                                               _vala_ccode_node_unref0 (_tmp463_);
-                                               _g_free0 (_tmp461_);
-                                               _vala_ccode_node_unref0 (_tmp458_);
-                                               _tmp467_ = type_param;
-                                               _tmp468_ = vala_symbol_get_name ((ValaSymbol*) _tmp467_);
+                                               _tmp467_ = func_name;
+                                               _tmp468_ = vala_ccode_identifier_new (_tmp467_);
                                                _tmp469_ = _tmp468_;
-                                               _tmp470_ = g_utf8_strdown (_tmp469_, (gssize) (-1));
-                                               _tmp471_ = _tmp470_;
-                                               _tmp472_ = g_strdup_printf ("%s_dup_func", _tmp471_);
-                                               _g_free0 (func_name);
-                                               func_name = _tmp472_;
-                                               _g_free0 (_tmp471_);
-                                               _tmp473_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                               _tmp470_ = block_id;
+                                               _tmp471_ = g_strdup_printf ("_data%d_", _tmp470_);
+                                               _tmp472_ = _tmp471_;
+                                               _tmp473_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp472_);
                                                _tmp474_ = _tmp473_;
                                                _tmp475_ = func_name;
-                                               _tmp476_ = vala_ccode_variable_declarator_new (_tmp475_, NULL, NULL);
+                                               _tmp476_ = vala_ccode_member_access_new_pointer (_tmp474_, _tmp475_);
                                                _tmp477_ = _tmp476_;
-                                               vala_ccode_function_add_declaration (_tmp474_, "GBoxedCopyFunc", (ValaCCodeDeclarator*) _tmp477_, 0);
+                                               vala_ccode_function_add_assignment (_tmp466_, (ValaCCodeExpression*) _tmp469_, (ValaCCodeExpression*) _tmp477_);
                                                _vala_ccode_node_unref0 (_tmp477_);
-                                               _tmp478_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                               _tmp479_ = _tmp478_;
-                                               _tmp480_ = func_name;
-                                               _tmp481_ = vala_ccode_identifier_new (_tmp480_);
+                                               _vala_ccode_node_unref0 (_tmp474_);
+                                               _g_free0 (_tmp472_);
+                                               _vala_ccode_node_unref0 (_tmp469_);
+                                               _tmp478_ = type_param;
+                                               _tmp479_ = vala_symbol_get_name ((ValaSymbol*) _tmp478_);
+                                               _tmp480_ = _tmp479_;
+                                               _tmp481_ = g_utf8_strdown (_tmp480_, (gssize) (-1));
                                                _tmp482_ = _tmp481_;
-                                               _tmp483_ = block_id;
-                                               _tmp484_ = g_strdup_printf ("_data%d_", _tmp483_);
+                                               _tmp483_ = g_strdup_printf ("%s_dup_func", _tmp482_);
+                                               _g_free0 (func_name);
+                                               func_name = _tmp483_;
+                                               _g_free0 (_tmp482_);
+                                               _tmp484_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                _tmp485_ = _tmp484_;
-                                               _tmp486_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp485_);
-                                               _tmp487_ = _tmp486_;
-                                               _tmp488_ = func_name;
-                                               _tmp489_ = vala_ccode_member_access_new_pointer (_tmp487_, _tmp488_);
+                                               _tmp486_ = func_name;
+                                               _tmp487_ = vala_ccode_variable_declarator_new (_tmp486_, NULL, NULL);
+                                               _tmp488_ = _tmp487_;
+                                               vala_ccode_function_add_declaration (_tmp485_, "GBoxedCopyFunc", (ValaCCodeDeclarator*) _tmp488_, 0);
+                                               _vala_ccode_node_unref0 (_tmp488_);
+                                               _tmp489_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                _tmp490_ = _tmp489_;
-                                               vala_ccode_function_add_assignment (_tmp479_, (ValaCCodeExpression*) _tmp482_, (ValaCCodeExpression*) _tmp490_);
-                                               _vala_ccode_node_unref0 (_tmp490_);
-                                               _vala_ccode_node_unref0 (_tmp487_);
-                                               _g_free0 (_tmp485_);
-                                               _vala_ccode_node_unref0 (_tmp482_);
-                                               _tmp491_ = type_param;
-                                               _tmp492_ = vala_symbol_get_name ((ValaSymbol*) _tmp491_);
+                                               _tmp491_ = func_name;
+                                               _tmp492_ = vala_ccode_identifier_new (_tmp491_);
                                                _tmp493_ = _tmp492_;
-                                               _tmp494_ = g_utf8_strdown (_tmp493_, (gssize) (-1));
-                                               _tmp495_ = _tmp494_;
-                                               _tmp496_ = g_strdup_printf ("%s_destroy_func", _tmp495_);
-                                               _g_free0 (func_name);
-                                               func_name = _tmp496_;
-                                               _g_free0 (_tmp495_);
-                                               _tmp497_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                               _tmp494_ = block_id;
+                                               _tmp495_ = g_strdup_printf ("_data%d_", _tmp494_);
+                                               _tmp496_ = _tmp495_;
+                                               _tmp497_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp496_);
                                                _tmp498_ = _tmp497_;
                                                _tmp499_ = func_name;
-                                               _tmp500_ = vala_ccode_variable_declarator_new (_tmp499_, NULL, NULL);
+                                               _tmp500_ = vala_ccode_member_access_new_pointer (_tmp498_, _tmp499_);
                                                _tmp501_ = _tmp500_;
-                                               vala_ccode_function_add_declaration (_tmp498_, "GDestroyNotify", (ValaCCodeDeclarator*) _tmp501_, 0);
+                                               vala_ccode_function_add_assignment (_tmp490_, (ValaCCodeExpression*) _tmp493_, (ValaCCodeExpression*) _tmp501_);
                                                _vala_ccode_node_unref0 (_tmp501_);
-                                               _tmp502_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                               _tmp503_ = _tmp502_;
-                                               _tmp504_ = func_name;
-                                               _tmp505_ = vala_ccode_identifier_new (_tmp504_);
+                                               _vala_ccode_node_unref0 (_tmp498_);
+                                               _g_free0 (_tmp496_);
+                                               _vala_ccode_node_unref0 (_tmp493_);
+                                               _tmp502_ = type_param;
+                                               _tmp503_ = vala_symbol_get_name ((ValaSymbol*) _tmp502_);
+                                               _tmp504_ = _tmp503_;
+                                               _tmp505_ = g_utf8_strdown (_tmp504_, (gssize) (-1));
                                                _tmp506_ = _tmp505_;
-                                               _tmp507_ = block_id;
-                                               _tmp508_ = g_strdup_printf ("_data%d_", _tmp507_);
+                                               _tmp507_ = g_strdup_printf ("%s_destroy_func", _tmp506_);
+                                               _g_free0 (func_name);
+                                               func_name = _tmp507_;
+                                               _g_free0 (_tmp506_);
+                                               _tmp508_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                _tmp509_ = _tmp508_;
-                                               _tmp510_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp509_);
-                                               _tmp511_ = _tmp510_;
-                                               _tmp512_ = func_name;
-                                               _tmp513_ = vala_ccode_member_access_new_pointer (_tmp511_, _tmp512_);
+                                               _tmp510_ = func_name;
+                                               _tmp511_ = vala_ccode_variable_declarator_new (_tmp510_, NULL, NULL);
+                                               _tmp512_ = _tmp511_;
+                                               vala_ccode_function_add_declaration (_tmp509_, "GDestroyNotify", (ValaCCodeDeclarator*) _tmp512_, 0);
+                                               _vala_ccode_node_unref0 (_tmp512_);
+                                               _tmp513_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                _tmp514_ = _tmp513_;
-                                               vala_ccode_function_add_assignment (_tmp503_, (ValaCCodeExpression*) _tmp506_, (ValaCCodeExpression*) _tmp514_);
-                                               _vala_ccode_node_unref0 (_tmp514_);
-                                               _vala_ccode_node_unref0 (_tmp511_);
-                                               _g_free0 (_tmp509_);
-                                               _vala_ccode_node_unref0 (_tmp506_);
+                                               _tmp515_ = func_name;
+                                               _tmp516_ = vala_ccode_identifier_new (_tmp515_);
+                                               _tmp517_ = _tmp516_;
+                                               _tmp518_ = block_id;
+                                               _tmp519_ = g_strdup_printf ("_data%d_", _tmp518_);
+                                               _tmp520_ = _tmp519_;
+                                               _tmp521_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp520_);
+                                               _tmp522_ = _tmp521_;
+                                               _tmp523_ = func_name;
+                                               _tmp524_ = vala_ccode_member_access_new_pointer (_tmp522_, _tmp523_);
+                                               _tmp525_ = _tmp524_;
+                                               vala_ccode_function_add_assignment (_tmp514_, (ValaCCodeExpression*) _tmp517_, (ValaCCodeExpression*) _tmp525_);
+                                               _vala_ccode_node_unref0 (_tmp525_);
+                                               _vala_ccode_node_unref0 (_tmp522_);
+                                               _g_free0 (_tmp520_);
+                                               _vala_ccode_node_unref0 (_tmp517_);
                                                _g_free0 (func_name);
                                                _vala_code_node_unref0 (type_param);
                                        }
@@ -3410,247 +3512,247 @@ static void vala_ccode_method_module_real_visit_method (ValaCodeVisitor* base, V
                                }
                                _vala_code_node_unref0 (closure_block);
                        } else {
-                               gboolean _tmp515_ = FALSE;
-                               ValaMethod* _tmp516_ = NULL;
-                               ValaSymbol* _tmp517_ = NULL;
-                               ValaSymbol* _tmp518_ = NULL;
-                               _tmp516_ = m;
-                               _tmp517_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp516_);
-                               _tmp518_ = _tmp517_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp518_, VALA_TYPE_CLASS)) {
-                                       ValaMethod* _tmp519_ = NULL;
-                                       gboolean _tmp520_ = FALSE;
-                                       gboolean _tmp521_ = FALSE;
-                                       _tmp519_ = m;
-                                       _tmp520_ = vala_method_get_coroutine (_tmp519_);
-                                       _tmp521_ = _tmp520_;
-                                       _tmp515_ = !_tmp521_;
+                               gboolean _tmp526_ = FALSE;
+                               ValaMethod* _tmp527_ = NULL;
+                               ValaSymbol* _tmp528_ = NULL;
+                               ValaSymbol* _tmp529_ = NULL;
+                               _tmp527_ = m;
+                               _tmp528_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp527_);
+                               _tmp529_ = _tmp528_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp529_, VALA_TYPE_CLASS)) {
+                                       ValaMethod* _tmp530_ = NULL;
+                                       gboolean _tmp531_ = FALSE;
+                                       gboolean _tmp532_ = FALSE;
+                                       _tmp530_ = m;
+                                       _tmp531_ = vala_method_get_coroutine (_tmp530_);
+                                       _tmp532_ = _tmp531_;
+                                       _tmp526_ = !_tmp532_;
                                } else {
-                                       _tmp515_ = FALSE;
+                                       _tmp526_ = FALSE;
                                }
-                               if (_tmp515_) {
+                               if (_tmp526_) {
                                        ValaClass* cl = NULL;
-                                       ValaMethod* _tmp522_ = NULL;
-                                       ValaSymbol* _tmp523_ = NULL;
-                                       ValaSymbol* _tmp524_ = NULL;
-                                       ValaClass* _tmp525_ = NULL;
-                                       gboolean _tmp526_ = FALSE;
-                                       ValaMethod* _tmp527_ = NULL;
-                                       gboolean _tmp528_ = FALSE;
-                                       gboolean _tmp529_ = FALSE;
-                                       _tmp522_ = m;
-                                       _tmp523_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp522_);
-                                       _tmp524_ = _tmp523_;
-                                       _tmp525_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp524_, VALA_TYPE_CLASS, ValaClass));
-                                       cl = _tmp525_;
-                                       _tmp527_ = m;
-                                       _tmp528_ = vala_method_get_overrides (_tmp527_);
-                                       _tmp529_ = _tmp528_;
-                                       if (_tmp529_) {
-                                               _tmp526_ = TRUE;
+                                       ValaMethod* _tmp533_ = NULL;
+                                       ValaSymbol* _tmp534_ = NULL;
+                                       ValaSymbol* _tmp535_ = NULL;
+                                       ValaClass* _tmp536_ = NULL;
+                                       gboolean _tmp537_ = FALSE;
+                                       ValaMethod* _tmp538_ = NULL;
+                                       gboolean _tmp539_ = FALSE;
+                                       gboolean _tmp540_ = FALSE;
+                                       _tmp533_ = m;
+                                       _tmp534_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp533_);
+                                       _tmp535_ = _tmp534_;
+                                       _tmp536_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp535_, VALA_TYPE_CLASS, ValaClass));
+                                       cl = _tmp536_;
+                                       _tmp538_ = m;
+                                       _tmp539_ = vala_method_get_overrides (_tmp538_);
+                                       _tmp540_ = _tmp539_;
+                                       if (_tmp540_) {
+                                               _tmp537_ = TRUE;
                                        } else {
-                                               gboolean _tmp530_ = FALSE;
-                                               gboolean _tmp531_ = FALSE;
-                                               ValaMethod* _tmp532_ = NULL;
-                                               ValaMethod* _tmp533_ = NULL;
-                                               ValaMethod* _tmp534_ = NULL;
-                                               _tmp532_ = m;
-                                               _tmp533_ = vala_method_get_base_interface_method (_tmp532_);
-                                               _tmp534_ = _tmp533_;
-                                               if (_tmp534_ != NULL) {
-                                                       ValaMethod* _tmp535_ = NULL;
-                                                       gboolean _tmp536_ = FALSE;
-                                                       gboolean _tmp537_ = FALSE;
-                                                       _tmp535_ = m;
-                                                       _tmp536_ = vala_method_get_is_abstract (_tmp535_);
-                                                       _tmp537_ = _tmp536_;
-                                                       _tmp531_ = !_tmp537_;
+                                               gboolean _tmp541_ = FALSE;
+                                               gboolean _tmp542_ = FALSE;
+                                               ValaMethod* _tmp543_ = NULL;
+                                               ValaMethod* _tmp544_ = NULL;
+                                               ValaMethod* _tmp545_ = NULL;
+                                               _tmp543_ = m;
+                                               _tmp544_ = vala_method_get_base_interface_method (_tmp543_);
+                                               _tmp545_ = _tmp544_;
+                                               if (_tmp545_ != NULL) {
+                                                       ValaMethod* _tmp546_ = NULL;
+                                                       gboolean _tmp547_ = FALSE;
+                                                       gboolean _tmp548_ = FALSE;
+                                                       _tmp546_ = m;
+                                                       _tmp547_ = vala_method_get_is_abstract (_tmp546_);
+                                                       _tmp548_ = _tmp547_;
+                                                       _tmp542_ = !_tmp548_;
                                                } else {
-                                                       _tmp531_ = FALSE;
+                                                       _tmp542_ = FALSE;
                                                }
-                                               if (_tmp531_) {
-                                                       ValaMethod* _tmp538_ = NULL;
-                                                       gboolean _tmp539_ = FALSE;
-                                                       gboolean _tmp540_ = FALSE;
-                                                       _tmp538_ = m;
-                                                       _tmp539_ = vala_method_get_is_virtual (_tmp538_);
-                                                       _tmp540_ = _tmp539_;
-                                                       _tmp530_ = !_tmp540_;
+                                               if (_tmp542_) {
+                                                       ValaMethod* _tmp549_ = NULL;
+                                                       gboolean _tmp550_ = FALSE;
+                                                       gboolean _tmp551_ = FALSE;
+                                                       _tmp549_ = m;
+                                                       _tmp550_ = vala_method_get_is_virtual (_tmp549_);
+                                                       _tmp551_ = _tmp550_;
+                                                       _tmp541_ = !_tmp551_;
                                                } else {
-                                                       _tmp530_ = FALSE;
+                                                       _tmp541_ = FALSE;
                                                }
-                                               _tmp526_ = _tmp530_;
+                                               _tmp537_ = _tmp541_;
                                        }
-                                       if (_tmp526_) {
+                                       if (_tmp537_) {
                                                ValaMethod* base_method = NULL;
                                                ValaReferenceType* base_expression_type = NULL;
-                                               ValaMethod* _tmp541_ = NULL;
-                                               gboolean _tmp542_ = FALSE;
-                                               gboolean _tmp543_ = FALSE;
+                                               ValaMethod* _tmp552_ = NULL;
+                                               gboolean _tmp553_ = FALSE;
+                                               gboolean _tmp554_ = FALSE;
                                                ValaObjectType* self_target_type = NULL;
-                                               ValaClass* _tmp560_ = NULL;
-                                               ValaObjectType* _tmp561_ = NULL;
+                                               ValaClass* _tmp571_ = NULL;
+                                               ValaObjectType* _tmp572_ = NULL;
                                                ValaCCodeExpression* cself = NULL;
-                                               ValaReferenceType* _tmp562_ = NULL;
-                                               ValaCCodeIdentifier* _tmp563_ = NULL;
-                                               ValaCCodeIdentifier* _tmp564_ = NULL;
-                                               ValaGLibValue* _tmp565_ = NULL;
-                                               ValaGLibValue* _tmp566_ = NULL;
-                                               ValaObjectType* _tmp567_ = NULL;
-                                               ValaMethod* _tmp568_ = NULL;
-                                               ValaTargetValue* _tmp569_ = NULL;
-                                               ValaTargetValue* _tmp570_ = NULL;
-                                               ValaCCodeExpression* _tmp571_ = NULL;
-                                               ValaCCodeExpression* _tmp572_ = NULL;
-                                               ValaCCodeFunction* _tmp573_ = NULL;
-                                               ValaCCodeFunction* _tmp574_ = NULL;
-                                               ValaClass* _tmp575_ = NULL;
-                                               gchar* _tmp576_ = NULL;
-                                               gchar* _tmp577_ = NULL;
-                                               gchar* _tmp578_ = NULL;
-                                               gchar* _tmp579_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp580_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp581_ = NULL;
-                                               ValaCCodeFunction* _tmp582_ = NULL;
-                                               ValaCCodeFunction* _tmp583_ = NULL;
-                                               ValaCCodeIdentifier* _tmp584_ = NULL;
-                                               ValaCCodeIdentifier* _tmp585_ = NULL;
-                                               ValaCCodeExpression* _tmp586_ = NULL;
-                                               _tmp541_ = m;
-                                               _tmp542_ = vala_method_get_overrides (_tmp541_);
-                                               _tmp543_ = _tmp542_;
-                                               if (_tmp543_) {
-                                                       ValaMethod* _tmp544_ = NULL;
-                                                       ValaMethod* _tmp545_ = NULL;
-                                                       ValaMethod* _tmp546_ = NULL;
-                                                       ValaMethod* _tmp547_ = NULL;
-                                                       ValaMethod* _tmp548_ = NULL;
-                                                       ValaSymbol* _tmp549_ = NULL;
-                                                       ValaSymbol* _tmp550_ = NULL;
-                                                       ValaObjectType* _tmp551_ = NULL;
-                                                       _tmp544_ = m;
-                                                       _tmp545_ = vala_method_get_base_method (_tmp544_);
-                                                       _tmp546_ = _tmp545_;
-                                                       _tmp547_ = _vala_code_node_ref0 (_tmp546_);
+                                               ValaReferenceType* _tmp573_ = NULL;
+                                               ValaCCodeIdentifier* _tmp574_ = NULL;
+                                               ValaCCodeIdentifier* _tmp575_ = NULL;
+                                               ValaGLibValue* _tmp576_ = NULL;
+                                               ValaGLibValue* _tmp577_ = NULL;
+                                               ValaObjectType* _tmp578_ = NULL;
+                                               ValaMethod* _tmp579_ = NULL;
+                                               ValaTargetValue* _tmp580_ = NULL;
+                                               ValaTargetValue* _tmp581_ = NULL;
+                                               ValaCCodeExpression* _tmp582_ = NULL;
+                                               ValaCCodeExpression* _tmp583_ = NULL;
+                                               ValaCCodeFunction* _tmp584_ = NULL;
+                                               ValaCCodeFunction* _tmp585_ = NULL;
+                                               ValaClass* _tmp586_ = NULL;
+                                               gchar* _tmp587_ = NULL;
+                                               gchar* _tmp588_ = NULL;
+                                               gchar* _tmp589_ = NULL;
+                                               gchar* _tmp590_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp591_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp592_ = NULL;
+                                               ValaCCodeFunction* _tmp593_ = NULL;
+                                               ValaCCodeFunction* _tmp594_ = NULL;
+                                               ValaCCodeIdentifier* _tmp595_ = NULL;
+                                               ValaCCodeIdentifier* _tmp596_ = NULL;
+                                               ValaCCodeExpression* _tmp597_ = NULL;
+                                               _tmp552_ = m;
+                                               _tmp553_ = vala_method_get_overrides (_tmp552_);
+                                               _tmp554_ = _tmp553_;
+                                               if (_tmp554_) {
+                                                       ValaMethod* _tmp555_ = NULL;
+                                                       ValaMethod* _tmp556_ = NULL;
+                                                       ValaMethod* _tmp557_ = NULL;
+                                                       ValaMethod* _tmp558_ = NULL;
+                                                       ValaMethod* _tmp559_ = NULL;
+                                                       ValaSymbol* _tmp560_ = NULL;
+                                                       ValaSymbol* _tmp561_ = NULL;
+                                                       ValaObjectType* _tmp562_ = NULL;
+                                                       _tmp555_ = m;
+                                                       _tmp556_ = vala_method_get_base_method (_tmp555_);
+                                                       _tmp557_ = _tmp556_;
+                                                       _tmp558_ = _vala_code_node_ref0 (_tmp557_);
                                                        _vala_code_node_unref0 (base_method);
-                                                       base_method = _tmp547_;
-                                                       _tmp548_ = base_method;
-                                                       _tmp549_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp548_);
-                                                       _tmp550_ = _tmp549_;
-                                                       _tmp551_ = vala_object_type_new ((ValaObjectTypeSymbol*) G_TYPE_CHECK_INSTANCE_CAST (_tmp550_, VALA_TYPE_CLASS, ValaClass));
+                                                       base_method = _tmp558_;
+                                                       _tmp559_ = base_method;
+                                                       _tmp560_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp559_);
+                                                       _tmp561_ = _tmp560_;
+                                                       _tmp562_ = vala_object_type_new ((ValaObjectTypeSymbol*) G_TYPE_CHECK_INSTANCE_CAST (_tmp561_, VALA_TYPE_CLASS, ValaClass));
                                                        _vala_code_node_unref0 (base_expression_type);
-                                                       base_expression_type = (ValaReferenceType*) _tmp551_;
+                                                       base_expression_type = (ValaReferenceType*) _tmp562_;
                                                } else {
-                                                       ValaMethod* _tmp552_ = NULL;
-                                                       ValaMethod* _tmp553_ = NULL;
-                                                       ValaMethod* _tmp554_ = NULL;
-                                                       ValaMethod* _tmp555_ = NULL;
-                                                       ValaMethod* _tmp556_ = NULL;
-                                                       ValaSymbol* _tmp557_ = NULL;
-                                                       ValaSymbol* _tmp558_ = NULL;
-                                                       ValaObjectType* _tmp559_ = NULL;
-                                                       _tmp552_ = m;
-                                                       _tmp553_ = vala_method_get_base_interface_method (_tmp552_);
-                                                       _tmp554_ = _tmp553_;
-                                                       _tmp555_ = _vala_code_node_ref0 (_tmp554_);
+                                                       ValaMethod* _tmp563_ = NULL;
+                                                       ValaMethod* _tmp564_ = NULL;
+                                                       ValaMethod* _tmp565_ = NULL;
+                                                       ValaMethod* _tmp566_ = NULL;
+                                                       ValaMethod* _tmp567_ = NULL;
+                                                       ValaSymbol* _tmp568_ = NULL;
+                                                       ValaSymbol* _tmp569_ = NULL;
+                                                       ValaObjectType* _tmp570_ = NULL;
+                                                       _tmp563_ = m;
+                                                       _tmp564_ = vala_method_get_base_interface_method (_tmp563_);
+                                                       _tmp565_ = _tmp564_;
+                                                       _tmp566_ = _vala_code_node_ref0 (_tmp565_);
                                                        _vala_code_node_unref0 (base_method);
-                                                       base_method = _tmp555_;
-                                                       _tmp556_ = base_method;
-                                                       _tmp557_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp556_);
-                                                       _tmp558_ = _tmp557_;
-                                                       _tmp559_ = vala_object_type_new ((ValaObjectTypeSymbol*) G_TYPE_CHECK_INSTANCE_CAST (_tmp558_, VALA_TYPE_INTERFACE, ValaInterface));
+                                                       base_method = _tmp566_;
+                                                       _tmp567_ = base_method;
+                                                       _tmp568_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp567_);
+                                                       _tmp569_ = _tmp568_;
+                                                       _tmp570_ = vala_object_type_new ((ValaObjectTypeSymbol*) G_TYPE_CHECK_INSTANCE_CAST (_tmp569_, VALA_TYPE_INTERFACE, ValaInterface));
                                                        _vala_code_node_unref0 (base_expression_type);
-                                                       base_expression_type = (ValaReferenceType*) _tmp559_;
+                                                       base_expression_type = (ValaReferenceType*) _tmp570_;
                                                }
-                                               _tmp560_ = cl;
-                                               _tmp561_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp560_);
-                                               self_target_type = _tmp561_;
-                                               _tmp562_ = base_expression_type;
-                                               _tmp563_ = vala_ccode_identifier_new ("base");
-                                               _tmp564_ = _tmp563_;
-                                               _tmp565_ = vala_glib_value_new ((ValaDataType*) _tmp562_, (ValaCCodeExpression*) _tmp564_, TRUE);
-                                               _tmp566_ = _tmp565_;
-                                               _tmp567_ = self_target_type;
-                                               _tmp568_ = m;
-                                               _tmp569_ = vala_ccode_base_module_transform_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp566_, (ValaDataType*) _tmp567_, (ValaCodeNode*) _tmp568_);
-                                               _tmp570_ = _tmp569_;
-                                               _tmp571_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp570_);
-                                               _tmp572_ = _tmp571_;
-                                               _vala_target_value_unref0 (_tmp570_);
-                                               _vala_target_value_unref0 (_tmp566_);
-                                               _vala_ccode_node_unref0 (_tmp564_);
-                                               cself = _tmp572_;
-                                               _tmp573_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                               _tmp574_ = _tmp573_;
-                                               _tmp575_ = cl;
-                                               _tmp576_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp575_);
+                                               _tmp571_ = cl;
+                                               _tmp572_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp571_);
+                                               self_target_type = _tmp572_;
+                                               _tmp573_ = base_expression_type;
+                                               _tmp574_ = vala_ccode_identifier_new ("base");
+                                               _tmp575_ = _tmp574_;
+                                               _tmp576_ = vala_glib_value_new ((ValaDataType*) _tmp573_, (ValaCCodeExpression*) _tmp575_, TRUE);
                                                _tmp577_ = _tmp576_;
-                                               _tmp578_ = g_strdup_printf ("%s *", _tmp577_);
-                                               _tmp579_ = _tmp578_;
-                                               _tmp580_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
+                                               _tmp578_ = self_target_type;
+                                               _tmp579_ = m;
+                                               _tmp580_ = vala_ccode_base_module_transform_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp577_, (ValaDataType*) _tmp578_, (ValaCodeNode*) _tmp579_);
                                                _tmp581_ = _tmp580_;
-                                               vala_ccode_function_add_declaration (_tmp574_, _tmp579_, (ValaCCodeDeclarator*) _tmp581_, 0);
-                                               _vala_ccode_node_unref0 (_tmp581_);
-                                               _g_free0 (_tmp579_);
-                                               _g_free0 (_tmp577_);
-                                               _tmp582_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                               _tmp582_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp581_);
                                                _tmp583_ = _tmp582_;
-                                               _tmp584_ = vala_ccode_identifier_new ("self");
+                                               _vala_target_value_unref0 (_tmp581_);
+                                               _vala_target_value_unref0 (_tmp577_);
+                                               _vala_ccode_node_unref0 (_tmp575_);
+                                               cself = _tmp583_;
+                                               _tmp584_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                _tmp585_ = _tmp584_;
-                                               _tmp586_ = cself;
-                                               vala_ccode_function_add_assignment (_tmp583_, (ValaCCodeExpression*) _tmp585_, _tmp586_);
-                                               _vala_ccode_node_unref0 (_tmp585_);
+                                               _tmp586_ = cl;
+                                               _tmp587_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp586_);
+                                               _tmp588_ = _tmp587_;
+                                               _tmp589_ = g_strdup_printf ("%s *", _tmp588_);
+                                               _tmp590_ = _tmp589_;
+                                               _tmp591_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
+                                               _tmp592_ = _tmp591_;
+                                               vala_ccode_function_add_declaration (_tmp585_, _tmp590_, (ValaCCodeDeclarator*) _tmp592_, 0);
+                                               _vala_ccode_node_unref0 (_tmp592_);
+                                               _g_free0 (_tmp590_);
+                                               _g_free0 (_tmp588_);
+                                               _tmp593_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                               _tmp594_ = _tmp593_;
+                                               _tmp595_ = vala_ccode_identifier_new ("self");
+                                               _tmp596_ = _tmp595_;
+                                               _tmp597_ = cself;
+                                               vala_ccode_function_add_assignment (_tmp594_, (ValaCCodeExpression*) _tmp596_, _tmp597_);
+                                               _vala_ccode_node_unref0 (_tmp596_);
                                                _vala_ccode_node_unref0 (cself);
                                                _vala_code_node_unref0 (self_target_type);
                                                _vala_code_node_unref0 (base_expression_type);
                                                _vala_code_node_unref0 (base_method);
                                        } else {
-                                               gboolean _tmp587_ = FALSE;
-                                               gboolean _tmp588_ = FALSE;
-                                               gboolean _tmp589_ = FALSE;
-                                               ValaMethod* _tmp590_ = NULL;
-                                               ValaMemberBinding _tmp591_ = 0;
-                                               ValaMemberBinding _tmp592_ = 0;
-                                               _tmp590_ = m;
-                                               _tmp591_ = vala_method_get_binding (_tmp590_);
-                                               _tmp592_ = _tmp591_;
-                                               if (_tmp592_ == VALA_MEMBER_BINDING_INSTANCE) {
-                                                       ValaMethod* _tmp593_ = NULL;
-                                                       _tmp593_ = m;
-                                                       _tmp589_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp593_, VALA_TYPE_CREATION_METHOD);
+                                               gboolean _tmp598_ = FALSE;
+                                               gboolean _tmp599_ = FALSE;
+                                               gboolean _tmp600_ = FALSE;
+                                               ValaMethod* _tmp601_ = NULL;
+                                               ValaMemberBinding _tmp602_ = 0;
+                                               ValaMemberBinding _tmp603_ = 0;
+                                               _tmp601_ = m;
+                                               _tmp602_ = vala_method_get_binding (_tmp601_);
+                                               _tmp603_ = _tmp602_;
+                                               if (_tmp603_ == VALA_MEMBER_BINDING_INSTANCE) {
+                                                       ValaMethod* _tmp604_ = NULL;
+                                                       _tmp604_ = m;
+                                                       _tmp600_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp604_, VALA_TYPE_CREATION_METHOD);
                                                } else {
-                                                       _tmp589_ = FALSE;
+                                                       _tmp600_ = FALSE;
                                                }
-                                               if (_tmp589_) {
-                                                       ValaMethod* _tmp594_ = NULL;
-                                                       ValaMethod* _tmp595_ = NULL;
-                                                       ValaMethod* _tmp596_ = NULL;
-                                                       _tmp594_ = m;
-                                                       _tmp595_ = vala_method_get_base_method (_tmp594_);
-                                                       _tmp596_ = _tmp595_;
-                                                       _tmp588_ = _tmp596_ == NULL;
+                                               if (_tmp600_) {
+                                                       ValaMethod* _tmp605_ = NULL;
+                                                       ValaMethod* _tmp606_ = NULL;
+                                                       ValaMethod* _tmp607_ = NULL;
+                                                       _tmp605_ = m;
+                                                       _tmp606_ = vala_method_get_base_method (_tmp605_);
+                                                       _tmp607_ = _tmp606_;
+                                                       _tmp599_ = _tmp607_ == NULL;
                                                } else {
-                                                       _tmp588_ = FALSE;
+                                                       _tmp599_ = FALSE;
                                                }
-                                               if (_tmp588_) {
-                                                       ValaMethod* _tmp597_ = NULL;
-                                                       ValaMethod* _tmp598_ = NULL;
-                                                       ValaMethod* _tmp599_ = NULL;
-                                                       _tmp597_ = m;
-                                                       _tmp598_ = vala_method_get_base_interface_method (_tmp597_);
-                                                       _tmp599_ = _tmp598_;
-                                                       _tmp587_ = _tmp599_ == NULL;
+                                               if (_tmp599_) {
+                                                       ValaMethod* _tmp608_ = NULL;
+                                                       ValaMethod* _tmp609_ = NULL;
+                                                       ValaMethod* _tmp610_ = NULL;
+                                                       _tmp608_ = m;
+                                                       _tmp609_ = vala_method_get_base_interface_method (_tmp608_);
+                                                       _tmp610_ = _tmp609_;
+                                                       _tmp598_ = _tmp610_ == NULL;
                                                } else {
-                                                       _tmp587_ = FALSE;
+                                                       _tmp598_ = FALSE;
                                                }
-                                               if (_tmp587_) {
-                                                       ValaMethod* _tmp600_ = NULL;
-                                                       ValaDataType* _tmp601_ = NULL;
-                                                       ValaClass* _tmp602_ = NULL;
-                                                       _tmp600_ = m;
-                                                       _tmp601_ = creturn_type;
-                                                       _tmp602_ = cl;
-                                                       vala_ccode_method_module_create_method_type_check_statement (self, _tmp600_, _tmp601_, (ValaTypeSymbol*) _tmp602_, TRUE, "self");
+                                               if (_tmp598_) {
+                                                       ValaMethod* _tmp611_ = NULL;
+                                                       ValaDataType* _tmp612_ = NULL;
+                                                       ValaClass* _tmp613_ = NULL;
+                                                       _tmp611_ = m;
+                                                       _tmp612_ = creturn_type;
+                                                       _tmp613_ = cl;
+                                                       vala_ccode_method_module_create_method_type_check_statement (self, _tmp611_, _tmp612_, (ValaTypeSymbol*) _tmp613_, TRUE, "self");
                                                }
                                        }
                                        _vala_code_node_unref0 (cl);
@@ -3658,414 +3760,414 @@ static void vala_ccode_method_module_real_visit_method (ValaCodeVisitor* base, V
                        }
                        {
                                ValaList* _param_list = NULL;
-                               ValaMethod* _tmp603_ = NULL;
-                               ValaList* _tmp604_ = NULL;
+                               ValaMethod* _tmp614_ = NULL;
+                               ValaList* _tmp615_ = NULL;
                                gint _param_size = 0;
-                               ValaList* _tmp605_ = NULL;
-                               gint _tmp606_ = 0;
-                               gint _tmp607_ = 0;
+                               ValaList* _tmp616_ = NULL;
+                               gint _tmp617_ = 0;
+                               gint _tmp618_ = 0;
                                gint _param_index = 0;
-                               _tmp603_ = m;
-                               _tmp604_ = vala_method_get_parameters (_tmp603_);
-                               _param_list = _tmp604_;
-                               _tmp605_ = _param_list;
-                               _tmp606_ = vala_collection_get_size ((ValaCollection*) _tmp605_);
-                               _tmp607_ = _tmp606_;
-                               _param_size = _tmp607_;
+                               _tmp614_ = m;
+                               _tmp615_ = vala_method_get_parameters (_tmp614_);
+                               _param_list = _tmp615_;
+                               _tmp616_ = _param_list;
+                               _tmp617_ = vala_collection_get_size ((ValaCollection*) _tmp616_);
+                               _tmp618_ = _tmp617_;
+                               _param_size = _tmp618_;
                                _param_index = -1;
                                while (TRUE) {
-                                       gint _tmp608_ = 0;
-                                       gint _tmp609_ = 0;
-                                       gint _tmp610_ = 0;
+                                       gint _tmp619_ = 0;
+                                       gint _tmp620_ = 0;
+                                       gint _tmp621_ = 0;
                                        ValaParameter* param = NULL;
-                                       ValaList* _tmp611_ = NULL;
-                                       gint _tmp612_ = 0;
-                                       gpointer _tmp613_ = NULL;
-                                       ValaParameter* _tmp614_ = NULL;
-                                       gboolean _tmp615_ = FALSE;
-                                       gboolean _tmp616_ = FALSE;
-                                       ValaParameter* _tmp617_ = NULL;
-                                       ValaParameterDirection _tmp618_ = 0;
-                                       ValaParameterDirection _tmp619_ = 0;
-                                       _tmp608_ = _param_index;
-                                       _param_index = _tmp608_ + 1;
-                                       _tmp609_ = _param_index;
-                                       _tmp610_ = _param_size;
-                                       if (!(_tmp609_ < _tmp610_)) {
+                                       ValaList* _tmp622_ = NULL;
+                                       gint _tmp623_ = 0;
+                                       gpointer _tmp624_ = NULL;
+                                       ValaParameter* _tmp625_ = NULL;
+                                       gboolean _tmp626_ = FALSE;
+                                       gboolean _tmp627_ = FALSE;
+                                       ValaParameter* _tmp628_ = NULL;
+                                       ValaParameterDirection _tmp629_ = 0;
+                                       ValaParameterDirection _tmp630_ = 0;
+                                       _tmp619_ = _param_index;
+                                       _param_index = _tmp619_ + 1;
+                                       _tmp620_ = _param_index;
+                                       _tmp621_ = _param_size;
+                                       if (!(_tmp620_ < _tmp621_)) {
                                                break;
                                        }
-                                       _tmp611_ = _param_list;
-                                       _tmp612_ = _param_index;
-                                       _tmp613_ = vala_list_get (_tmp611_, _tmp612_);
-                                       param = (ValaParameter*) _tmp613_;
-                                       _tmp614_ = param;
-                                       _tmp615_ = vala_parameter_get_ellipsis (_tmp614_);
-                                       _tmp616_ = _tmp615_;
-                                       if (_tmp616_) {
+                                       _tmp622_ = _param_list;
+                                       _tmp623_ = _param_index;
+                                       _tmp624_ = vala_list_get (_tmp622_, _tmp623_);
+                                       param = (ValaParameter*) _tmp624_;
+                                       _tmp625_ = param;
+                                       _tmp626_ = vala_parameter_get_ellipsis (_tmp625_);
+                                       _tmp627_ = _tmp626_;
+                                       if (_tmp627_) {
                                                _vala_code_node_unref0 (param);
                                                break;
                                        }
-                                       _tmp617_ = param;
-                                       _tmp618_ = vala_parameter_get_direction (_tmp617_);
-                                       _tmp619_ = _tmp618_;
-                                       if (_tmp619_ != VALA_PARAMETER_DIRECTION_OUT) {
+                                       _tmp628_ = param;
+                                       _tmp629_ = vala_parameter_get_direction (_tmp628_);
+                                       _tmp630_ = _tmp629_;
+                                       if (_tmp630_ != VALA_PARAMETER_DIRECTION_OUT) {
                                                ValaTypeSymbol* t = NULL;
-                                               ValaParameter* _tmp620_ = NULL;
-                                               ValaDataType* _tmp621_ = NULL;
-                                               ValaDataType* _tmp622_ = NULL;
-                                               ValaTypeSymbol* _tmp623_ = NULL;
-                                               ValaTypeSymbol* _tmp624_ = NULL;
-                                               ValaTypeSymbol* _tmp625_ = NULL;
-                                               gboolean _tmp626_ = FALSE;
-                                               ValaTypeSymbol* _tmp627_ = NULL;
-                                               _tmp620_ = param;
-                                               _tmp621_ = vala_variable_get_variable_type ((ValaVariable*) _tmp620_);
-                                               _tmp622_ = _tmp621_;
-                                               _tmp623_ = vala_data_type_get_data_type (_tmp622_);
-                                               _tmp624_ = _tmp623_;
-                                               _tmp625_ = _vala_code_node_ref0 (_tmp624_);
-                                               t = _tmp625_;
-                                               _tmp627_ = t;
-                                               if (_tmp627_ != NULL) {
-                                                       gboolean _tmp628_ = FALSE;
-                                                       ValaTypeSymbol* _tmp629_ = NULL;
-                                                       gboolean _tmp630_ = FALSE;
-                                                       _tmp629_ = t;
-                                                       _tmp630_ = vala_typesymbol_is_reference_type (_tmp629_);
-                                                       if (_tmp630_) {
-                                                               _tmp628_ = TRUE;
+                                               ValaParameter* _tmp631_ = NULL;
+                                               ValaDataType* _tmp632_ = NULL;
+                                               ValaDataType* _tmp633_ = NULL;
+                                               ValaTypeSymbol* _tmp634_ = NULL;
+                                               ValaTypeSymbol* _tmp635_ = NULL;
+                                               ValaTypeSymbol* _tmp636_ = NULL;
+                                               gboolean _tmp637_ = FALSE;
+                                               ValaTypeSymbol* _tmp638_ = NULL;
+                                               _tmp631_ = param;
+                                               _tmp632_ = vala_variable_get_variable_type ((ValaVariable*) _tmp631_);
+                                               _tmp633_ = _tmp632_;
+                                               _tmp634_ = vala_data_type_get_data_type (_tmp633_);
+                                               _tmp635_ = _tmp634_;
+                                               _tmp636_ = _vala_code_node_ref0 (_tmp635_);
+                                               t = _tmp636_;
+                                               _tmp638_ = t;
+                                               if (_tmp638_ != NULL) {
+                                                       gboolean _tmp639_ = FALSE;
+                                                       ValaTypeSymbol* _tmp640_ = NULL;
+                                                       gboolean _tmp641_ = FALSE;
+                                                       _tmp640_ = t;
+                                                       _tmp641_ = vala_typesymbol_is_reference_type (_tmp640_);
+                                                       if (_tmp641_) {
+                                                               _tmp639_ = TRUE;
                                                        } else {
-                                                               ValaParameter* _tmp631_ = NULL;
-                                                               ValaDataType* _tmp632_ = NULL;
-                                                               ValaDataType* _tmp633_ = NULL;
-                                                               gboolean _tmp634_ = FALSE;
-                                                               _tmp631_ = param;
-                                                               _tmp632_ = vala_variable_get_variable_type ((ValaVariable*) _tmp631_);
-                                                               _tmp633_ = _tmp632_;
-                                                               _tmp634_ = vala_data_type_is_real_struct_type (_tmp633_);
-                                                               _tmp628_ = _tmp634_;
+                                                               ValaParameter* _tmp642_ = NULL;
+                                                               ValaDataType* _tmp643_ = NULL;
+                                                               ValaDataType* _tmp644_ = NULL;
+                                                               gboolean _tmp645_ = FALSE;
+                                                               _tmp642_ = param;
+                                                               _tmp643_ = vala_variable_get_variable_type ((ValaVariable*) _tmp642_);
+                                                               _tmp644_ = _tmp643_;
+                                                               _tmp645_ = vala_data_type_is_real_struct_type (_tmp644_);
+                                                               _tmp639_ = _tmp645_;
                                                        }
-                                                       _tmp626_ = _tmp628_;
+                                                       _tmp637_ = _tmp639_;
                                                } else {
-                                                       _tmp626_ = FALSE;
+                                                       _tmp637_ = FALSE;
                                                }
-                                               if (_tmp626_) {
+                                               if (_tmp637_) {
                                                        gchar* cname = NULL;
-                                                       ValaParameter* _tmp635_ = NULL;
-                                                       const gchar* _tmp636_ = NULL;
-                                                       const gchar* _tmp637_ = NULL;
-                                                       gchar* _tmp638_ = NULL;
-                                                       gboolean _tmp639_ = FALSE;
-                                                       ValaParameter* _tmp640_ = NULL;
-                                                       ValaParameterDirection _tmp641_ = 0;
-                                                       ValaParameterDirection _tmp642_ = 0;
-                                                       ValaMethod* _tmp649_ = NULL;
-                                                       ValaDataType* _tmp650_ = NULL;
-                                                       ValaTypeSymbol* _tmp651_ = NULL;
-                                                       ValaParameter* _tmp652_ = NULL;
-                                                       ValaDataType* _tmp653_ = NULL;
-                                                       ValaDataType* _tmp654_ = NULL;
-                                                       gboolean _tmp655_ = FALSE;
-                                                       gboolean _tmp656_ = FALSE;
-                                                       const gchar* _tmp657_ = NULL;
-                                                       _tmp635_ = param;
-                                                       _tmp636_ = vala_symbol_get_name ((ValaSymbol*) _tmp635_);
-                                                       _tmp637_ = _tmp636_;
-                                                       _tmp638_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp637_);
-                                                       cname = _tmp638_;
-                                                       _tmp640_ = param;
-                                                       _tmp641_ = vala_parameter_get_direction (_tmp640_);
-                                                       _tmp642_ = _tmp641_;
-                                                       if (_tmp642_ == VALA_PARAMETER_DIRECTION_REF) {
-                                                               ValaParameter* _tmp643_ = NULL;
-                                                               ValaDataType* _tmp644_ = NULL;
-                                                               ValaDataType* _tmp645_ = NULL;
-                                                               gboolean _tmp646_ = FALSE;
-                                                               _tmp643_ = param;
-                                                               _tmp644_ = vala_variable_get_variable_type ((ValaVariable*) _tmp643_);
-                                                               _tmp645_ = _tmp644_;
-                                                               _tmp646_ = vala_data_type_is_real_struct_type (_tmp645_);
-                                                               _tmp639_ = !_tmp646_;
+                                                       ValaParameter* _tmp646_ = NULL;
+                                                       const gchar* _tmp647_ = NULL;
+                                                       const gchar* _tmp648_ = NULL;
+                                                       gchar* _tmp649_ = NULL;
+                                                       gboolean _tmp650_ = FALSE;
+                                                       ValaParameter* _tmp651_ = NULL;
+                                                       ValaParameterDirection _tmp652_ = 0;
+                                                       ValaParameterDirection _tmp653_ = 0;
+                                                       ValaMethod* _tmp660_ = NULL;
+                                                       ValaDataType* _tmp661_ = NULL;
+                                                       ValaTypeSymbol* _tmp662_ = NULL;
+                                                       ValaParameter* _tmp663_ = NULL;
+                                                       ValaDataType* _tmp664_ = NULL;
+                                                       ValaDataType* _tmp665_ = NULL;
+                                                       gboolean _tmp666_ = FALSE;
+                                                       gboolean _tmp667_ = FALSE;
+                                                       const gchar* _tmp668_ = NULL;
+                                                       _tmp646_ = param;
+                                                       _tmp647_ = vala_symbol_get_name ((ValaSymbol*) _tmp646_);
+                                                       _tmp648_ = _tmp647_;
+                                                       _tmp649_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp648_);
+                                                       cname = _tmp649_;
+                                                       _tmp651_ = param;
+                                                       _tmp652_ = vala_parameter_get_direction (_tmp651_);
+                                                       _tmp653_ = _tmp652_;
+                                                       if (_tmp653_ == VALA_PARAMETER_DIRECTION_REF) {
+                                                               ValaParameter* _tmp654_ = NULL;
+                                                               ValaDataType* _tmp655_ = NULL;
+                                                               ValaDataType* _tmp656_ = NULL;
+                                                               gboolean _tmp657_ = FALSE;
+                                                               _tmp654_ = param;
+                                                               _tmp655_ = vala_variable_get_variable_type ((ValaVariable*) _tmp654_);
+                                                               _tmp656_ = _tmp655_;
+                                                               _tmp657_ = vala_data_type_is_real_struct_type (_tmp656_);
+                                                               _tmp650_ = !_tmp657_;
                                                        } else {
-                                                               _tmp639_ = FALSE;
+                                                               _tmp650_ = FALSE;
                                                        }
-                                                       if (_tmp639_) {
-                                                               const gchar* _tmp647_ = NULL;
-                                                               gchar* _tmp648_ = NULL;
-                                                               _tmp647_ = cname;
-                                                               _tmp648_ = g_strconcat ("*", _tmp647_, NULL);
+                                                       if (_tmp650_) {
+                                                               const gchar* _tmp658_ = NULL;
+                                                               gchar* _tmp659_ = NULL;
+                                                               _tmp658_ = cname;
+                                                               _tmp659_ = g_strconcat ("*", _tmp658_, NULL);
                                                                _g_free0 (cname);
-                                                               cname = _tmp648_;
+                                                               cname = _tmp659_;
                                                        }
-                                                       _tmp649_ = m;
-                                                       _tmp650_ = creturn_type;
-                                                       _tmp651_ = t;
-                                                       _tmp652_ = param;
-                                                       _tmp653_ = vala_variable_get_variable_type ((ValaVariable*) _tmp652_);
-                                                       _tmp654_ = _tmp653_;
-                                                       _tmp655_ = vala_data_type_get_nullable (_tmp654_);
-                                                       _tmp656_ = _tmp655_;
-                                                       _tmp657_ = cname;
-                                                       vala_ccode_method_module_create_method_type_check_statement (self, _tmp649_, _tmp650_, _tmp651_, !_tmp656_, _tmp657_);
+                                                       _tmp660_ = m;
+                                                       _tmp661_ = creturn_type;
+                                                       _tmp662_ = t;
+                                                       _tmp663_ = param;
+                                                       _tmp664_ = vala_variable_get_variable_type ((ValaVariable*) _tmp663_);
+                                                       _tmp665_ = _tmp664_;
+                                                       _tmp666_ = vala_data_type_get_nullable (_tmp665_);
+                                                       _tmp667_ = _tmp666_;
+                                                       _tmp668_ = cname;
+                                                       vala_ccode_method_module_create_method_type_check_statement (self, _tmp660_, _tmp661_, _tmp662_, !_tmp667_, _tmp668_);
                                                        _g_free0 (cname);
                                                }
                                                _vala_code_node_unref0 (t);
                                        } else {
-                                               ValaMethod* _tmp658_ = NULL;
-                                               gboolean _tmp659_ = FALSE;
-                                               gboolean _tmp660_ = FALSE;
-                                               _tmp658_ = m;
-                                               _tmp659_ = vala_method_get_coroutine (_tmp658_);
-                                               _tmp660_ = _tmp659_;
-                                               if (!_tmp660_) {
+                                               ValaMethod* _tmp669_ = NULL;
+                                               gboolean _tmp670_ = FALSE;
+                                               gboolean _tmp671_ = FALSE;
+                                               _tmp669_ = m;
+                                               _tmp670_ = vala_method_get_coroutine (_tmp669_);
+                                               _tmp671_ = _tmp670_;
+                                               if (!_tmp671_) {
                                                        ValaCCodeVariableDeclarator* vardecl = NULL;
-                                                       ValaParameter* _tmp661_ = NULL;
-                                                       const gchar* _tmp662_ = NULL;
-                                                       const gchar* _tmp663_ = NULL;
-                                                       gchar* _tmp664_ = NULL;
-                                                       gchar* _tmp665_ = NULL;
-                                                       gchar* _tmp666_ = NULL;
-                                                       gchar* _tmp667_ = NULL;
-                                                       ValaParameter* _tmp668_ = NULL;
-                                                       ValaDataType* _tmp669_ = NULL;
-                                                       ValaDataType* _tmp670_ = NULL;
-                                                       ValaCCodeExpression* _tmp671_ = NULL;
-                                                       ValaCCodeExpression* _tmp672_ = NULL;
-                                                       ValaCCodeVariableDeclarator* _tmp673_ = NULL;
-                                                       ValaCCodeVariableDeclarator* _tmp674_ = NULL;
-                                                       ValaCCodeFunction* _tmp675_ = NULL;
-                                                       ValaCCodeFunction* _tmp676_ = NULL;
-                                                       ValaParameter* _tmp677_ = NULL;
-                                                       ValaDataType* _tmp678_ = NULL;
-                                                       ValaDataType* _tmp679_ = NULL;
-                                                       gchar* _tmp680_ = NULL;
-                                                       gchar* _tmp681_ = NULL;
-                                                       ValaCCodeVariableDeclarator* _tmp682_ = NULL;
-                                                       ValaParameter* _tmp683_ = NULL;
-                                                       ValaDataType* _tmp684_ = NULL;
-                                                       ValaDataType* _tmp685_ = NULL;
-                                                       _tmp661_ = param;
-                                                       _tmp662_ = vala_symbol_get_name ((ValaSymbol*) _tmp661_);
-                                                       _tmp663_ = _tmp662_;
-                                                       _tmp664_ = g_strconcat ("_vala_", _tmp663_, NULL);
-                                                       _tmp665_ = _tmp664_;
-                                                       _tmp666_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp665_);
-                                                       _tmp667_ = _tmp666_;
-                                                       _tmp668_ = param;
-                                                       _tmp669_ = vala_variable_get_variable_type ((ValaVariable*) _tmp668_);
-                                                       _tmp670_ = _tmp669_;
-                                                       _tmp671_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp670_, TRUE);
-                                                       _tmp672_ = _tmp671_;
-                                                       _tmp673_ = vala_ccode_variable_declarator_new_zero (_tmp667_, _tmp672_, NULL);
+                                                       ValaParameter* _tmp672_ = NULL;
+                                                       const gchar* _tmp673_ = NULL;
+                                                       const gchar* _tmp674_ = NULL;
+                                                       gchar* _tmp675_ = NULL;
+                                                       gchar* _tmp676_ = NULL;
+                                                       gchar* _tmp677_ = NULL;
+                                                       gchar* _tmp678_ = NULL;
+                                                       ValaParameter* _tmp679_ = NULL;
+                                                       ValaDataType* _tmp680_ = NULL;
+                                                       ValaDataType* _tmp681_ = NULL;
+                                                       ValaCCodeExpression* _tmp682_ = NULL;
+                                                       ValaCCodeExpression* _tmp683_ = NULL;
+                                                       ValaCCodeVariableDeclarator* _tmp684_ = NULL;
+                                                       ValaCCodeVariableDeclarator* _tmp685_ = NULL;
+                                                       ValaCCodeFunction* _tmp686_ = NULL;
+                                                       ValaCCodeFunction* _tmp687_ = NULL;
+                                                       ValaParameter* _tmp688_ = NULL;
+                                                       ValaDataType* _tmp689_ = NULL;
+                                                       ValaDataType* _tmp690_ = NULL;
+                                                       gchar* _tmp691_ = NULL;
+                                                       gchar* _tmp692_ = NULL;
+                                                       ValaCCodeVariableDeclarator* _tmp693_ = NULL;
+                                                       ValaParameter* _tmp694_ = NULL;
+                                                       ValaDataType* _tmp695_ = NULL;
+                                                       ValaDataType* _tmp696_ = NULL;
+                                                       _tmp672_ = param;
+                                                       _tmp673_ = vala_symbol_get_name ((ValaSymbol*) _tmp672_);
                                                        _tmp674_ = _tmp673_;
-                                                       _vala_ccode_node_unref0 (_tmp672_);
-                                                       _g_free0 (_tmp667_);
-                                                       _g_free0 (_tmp665_);
-                                                       vardecl = _tmp674_;
-                                                       _tmp675_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                       _tmp675_ = g_strconcat ("_vala_", _tmp674_, NULL);
                                                        _tmp676_ = _tmp675_;
-                                                       _tmp677_ = param;
-                                                       _tmp678_ = vala_variable_get_variable_type ((ValaVariable*) _tmp677_);
-                                                       _tmp679_ = _tmp678_;
-                                                       _tmp680_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp679_);
+                                                       _tmp677_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp676_);
+                                                       _tmp678_ = _tmp677_;
+                                                       _tmp679_ = param;
+                                                       _tmp680_ = vala_variable_get_variable_type ((ValaVariable*) _tmp679_);
                                                        _tmp681_ = _tmp680_;
-                                                       _tmp682_ = vardecl;
-                                                       vala_ccode_function_add_declaration (_tmp676_, _tmp681_, (ValaCCodeDeclarator*) _tmp682_, 0);
-                                                       _g_free0 (_tmp681_);
-                                                       _tmp683_ = param;
-                                                       _tmp684_ = vala_variable_get_variable_type ((ValaVariable*) _tmp683_);
+                                                       _tmp682_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp681_, TRUE);
+                                                       _tmp683_ = _tmp682_;
+                                                       _tmp684_ = vala_ccode_variable_declarator_new_zero (_tmp678_, _tmp683_, NULL);
                                                        _tmp685_ = _tmp684_;
-                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp685_, VALA_TYPE_ARRAY_TYPE)) {
+                                                       _vala_ccode_node_unref0 (_tmp683_);
+                                                       _g_free0 (_tmp678_);
+                                                       _g_free0 (_tmp676_);
+                                                       vardecl = _tmp685_;
+                                                       _tmp686_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                       _tmp687_ = _tmp686_;
+                                                       _tmp688_ = param;
+                                                       _tmp689_ = vala_variable_get_variable_type ((ValaVariable*) _tmp688_);
+                                                       _tmp690_ = _tmp689_;
+                                                       _tmp691_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp690_);
+                                                       _tmp692_ = _tmp691_;
+                                                       _tmp693_ = vardecl;
+                                                       vala_ccode_function_add_declaration (_tmp687_, _tmp692_, (ValaCCodeDeclarator*) _tmp693_, 0);
+                                                       _g_free0 (_tmp692_);
+                                                       _tmp694_ = param;
+                                                       _tmp695_ = vala_variable_get_variable_type ((ValaVariable*) _tmp694_);
+                                                       _tmp696_ = _tmp695_;
+                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp696_, VALA_TYPE_ARRAY_TYPE)) {
                                                                ValaArrayType* array_type = NULL;
-                                                               ValaParameter* _tmp686_ = NULL;
-                                                               ValaDataType* _tmp687_ = NULL;
-                                                               ValaDataType* _tmp688_ = NULL;
-                                                               ValaArrayType* _tmp689_ = NULL;
-                                                               ValaArrayType* _tmp690_ = NULL;
-                                                               gboolean _tmp691_ = FALSE;
-                                                               gboolean _tmp692_ = FALSE;
-                                                               _tmp686_ = param;
-                                                               _tmp687_ = vala_variable_get_variable_type ((ValaVariable*) _tmp686_);
-                                                               _tmp688_ = _tmp687_;
-                                                               _tmp689_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp688_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                                               array_type = _tmp689_;
-                                                               _tmp690_ = array_type;
-                                                               _tmp691_ = vala_array_type_get_fixed_length (_tmp690_);
-                                                               _tmp692_ = _tmp691_;
-                                                               if (!_tmp692_) {
+                                                               ValaParameter* _tmp697_ = NULL;
+                                                               ValaDataType* _tmp698_ = NULL;
+                                                               ValaDataType* _tmp699_ = NULL;
+                                                               ValaArrayType* _tmp700_ = NULL;
+                                                               ValaArrayType* _tmp701_ = NULL;
+                                                               gboolean _tmp702_ = FALSE;
+                                                               gboolean _tmp703_ = FALSE;
+                                                               _tmp697_ = param;
+                                                               _tmp698_ = vala_variable_get_variable_type ((ValaVariable*) _tmp697_);
+                                                               _tmp699_ = _tmp698_;
+                                                               _tmp700_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp699_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                                               array_type = _tmp700_;
+                                                               _tmp701_ = array_type;
+                                                               _tmp702_ = vala_array_type_get_fixed_length (_tmp701_);
+                                                               _tmp703_ = _tmp702_;
+                                                               if (!_tmp703_) {
                                                                        {
                                                                                gint dim = 0;
                                                                                dim = 1;
                                                                                {
-                                                                                       gboolean _tmp693_ = FALSE;
-                                                                                       _tmp693_ = TRUE;
+                                                                                       gboolean _tmp704_ = FALSE;
+                                                                                       _tmp704_ = TRUE;
                                                                                        while (TRUE) {
-                                                                                               gint _tmp695_ = 0;
-                                                                                               ValaArrayType* _tmp696_ = NULL;
-                                                                                               gint _tmp697_ = 0;
-                                                                                               gint _tmp698_ = 0;
-                                                                                               ValaParameter* _tmp699_ = NULL;
-                                                                                               const gchar* _tmp700_ = NULL;
-                                                                                               const gchar* _tmp701_ = NULL;
-                                                                                               gchar* _tmp702_ = NULL;
-                                                                                               gchar* _tmp703_ = NULL;
-                                                                                               gchar* _tmp704_ = NULL;
-                                                                                               gchar* _tmp705_ = NULL;
                                                                                                gint _tmp706_ = 0;
-                                                                                               gchar* _tmp707_ = NULL;
-                                                                                               gchar* _tmp708_ = NULL;
-                                                                                               ValaCCodeConstant* _tmp709_ = NULL;
-                                                                                               ValaCCodeConstant* _tmp710_ = NULL;
-                                                                                               ValaCCodeVariableDeclarator* _tmp711_ = NULL;
-                                                                                               ValaCCodeFunction* _tmp712_ = NULL;
-                                                                                               ValaCCodeFunction* _tmp713_ = NULL;
-                                                                                               ValaCCodeVariableDeclarator* _tmp714_ = NULL;
-                                                                                               if (!_tmp693_) {
-                                                                                                       gint _tmp694_ = 0;
-                                                                                                       _tmp694_ = dim;
-                                                                                                       dim = _tmp694_ + 1;
+                                                                                               ValaArrayType* _tmp707_ = NULL;
+                                                                                               gint _tmp708_ = 0;
+                                                                                               gint _tmp709_ = 0;
+                                                                                               ValaParameter* _tmp710_ = NULL;
+                                                                                               const gchar* _tmp711_ = NULL;
+                                                                                               const gchar* _tmp712_ = NULL;
+                                                                                               gchar* _tmp713_ = NULL;
+                                                                                               gchar* _tmp714_ = NULL;
+                                                                                               gchar* _tmp715_ = NULL;
+                                                                                               gchar* _tmp716_ = NULL;
+                                                                                               gint _tmp717_ = 0;
+                                                                                               gchar* _tmp718_ = NULL;
+                                                                                               gchar* _tmp719_ = NULL;
+                                                                                               ValaCCodeConstant* _tmp720_ = NULL;
+                                                                                               ValaCCodeConstant* _tmp721_ = NULL;
+                                                                                               ValaCCodeVariableDeclarator* _tmp722_ = NULL;
+                                                                                               ValaCCodeFunction* _tmp723_ = NULL;
+                                                                                               ValaCCodeFunction* _tmp724_ = NULL;
+                                                                                               ValaCCodeVariableDeclarator* _tmp725_ = NULL;
+                                                                                               if (!_tmp704_) {
+                                                                                                       gint _tmp705_ = 0;
+                                                                                                       _tmp705_ = dim;
+                                                                                                       dim = _tmp705_ + 1;
                                                                                                }
-                                                                                               _tmp693_ = FALSE;
-                                                                                               _tmp695_ = dim;
-                                                                                               _tmp696_ = array_type;
-                                                                                               _tmp697_ = vala_array_type_get_rank (_tmp696_);
-                                                                                               _tmp698_ = _tmp697_;
-                                                                                               if (!(_tmp695_ <= _tmp698_)) {
+                                                                                               _tmp704_ = FALSE;
+                                                                                               _tmp706_ = dim;
+                                                                                               _tmp707_ = array_type;
+                                                                                               _tmp708_ = vala_array_type_get_rank (_tmp707_);
+                                                                                               _tmp709_ = _tmp708_;
+                                                                                               if (!(_tmp706_ <= _tmp709_)) {
                                                                                                        break;
                                                                                                }
-                                                                                               _tmp699_ = param;
-                                                                                               _tmp700_ = vala_symbol_get_name ((ValaSymbol*) _tmp699_);
-                                                                                               _tmp701_ = _tmp700_;
-                                                                                               _tmp702_ = g_strconcat ("_vala_", _tmp701_, NULL);
-                                                                                               _tmp703_ = _tmp702_;
-                                                                                               _tmp704_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp703_);
-                                                                                               _tmp705_ = _tmp704_;
-                                                                                               _tmp706_ = dim;
-                                                                                               _tmp707_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp705_, _tmp706_);
-                                                                                               _tmp708_ = _tmp707_;
-                                                                                               _tmp709_ = vala_ccode_constant_new ("0");
-                                                                                               _tmp710_ = _tmp709_;
-                                                                                               _tmp711_ = vala_ccode_variable_declarator_new_zero (_tmp708_, (ValaCCodeExpression*) _tmp710_, NULL);
+                                                                                               _tmp710_ = param;
+                                                                                               _tmp711_ = vala_symbol_get_name ((ValaSymbol*) _tmp710_);
+                                                                                               _tmp712_ = _tmp711_;
+                                                                                               _tmp713_ = g_strconcat ("_vala_", _tmp712_, NULL);
+                                                                                               _tmp714_ = _tmp713_;
+                                                                                               _tmp715_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp714_);
+                                                                                               _tmp716_ = _tmp715_;
+                                                                                               _tmp717_ = dim;
+                                                                                               _tmp718_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp716_, _tmp717_);
+                                                                                               _tmp719_ = _tmp718_;
+                                                                                               _tmp720_ = vala_ccode_constant_new ("0");
+                                                                                               _tmp721_ = _tmp720_;
+                                                                                               _tmp722_ = vala_ccode_variable_declarator_new_zero (_tmp719_, (ValaCCodeExpression*) _tmp721_, NULL);
                                                                                                _vala_ccode_node_unref0 (vardecl);
-                                                                                               vardecl = _tmp711_;
-                                                                                               _vala_ccode_node_unref0 (_tmp710_);
-                                                                                               _g_free0 (_tmp708_);
-                                                                                               _g_free0 (_tmp705_);
-                                                                                               _g_free0 (_tmp703_);
-                                                                                               _tmp712_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                                                                               _tmp713_ = _tmp712_;
-                                                                                               _tmp714_ = vardecl;
-                                                                                               vala_ccode_function_add_declaration (_tmp713_, "int", (ValaCCodeDeclarator*) _tmp714_, 0);
+                                                                                               vardecl = _tmp722_;
+                                                                                               _vala_ccode_node_unref0 (_tmp721_);
+                                                                                               _g_free0 (_tmp719_);
+                                                                                               _g_free0 (_tmp716_);
+                                                                                               _g_free0 (_tmp714_);
+                                                                                               _tmp723_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                                                               _tmp724_ = _tmp723_;
+                                                                                               _tmp725_ = vardecl;
+                                                                                               vala_ccode_function_add_declaration (_tmp724_, "int", (ValaCCodeDeclarator*) _tmp725_, 0);
                                                                                        }
                                                                                }
                                                                        }
                                                                }
                                                                _vala_code_node_unref0 (array_type);
                                                        } else {
-                                                               ValaParameter* _tmp715_ = NULL;
-                                                               ValaDataType* _tmp716_ = NULL;
-                                                               ValaDataType* _tmp717_ = NULL;
-                                                               _tmp715_ = param;
-                                                               _tmp716_ = vala_variable_get_variable_type ((ValaVariable*) _tmp715_);
-                                                               _tmp717_ = _tmp716_;
-                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp717_, VALA_TYPE_DELEGATE_TYPE)) {
+                                                               ValaParameter* _tmp726_ = NULL;
+                                                               ValaDataType* _tmp727_ = NULL;
+                                                               ValaDataType* _tmp728_ = NULL;
+                                                               _tmp726_ = param;
+                                                               _tmp727_ = vala_variable_get_variable_type ((ValaVariable*) _tmp726_);
+                                                               _tmp728_ = _tmp727_;
+                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp728_, VALA_TYPE_DELEGATE_TYPE)) {
                                                                        ValaDelegateType* deleg_type = NULL;
-                                                                       ValaParameter* _tmp718_ = NULL;
-                                                                       ValaDataType* _tmp719_ = NULL;
-                                                                       ValaDataType* _tmp720_ = NULL;
-                                                                       ValaDelegateType* _tmp721_ = NULL;
+                                                                       ValaParameter* _tmp729_ = NULL;
+                                                                       ValaDataType* _tmp730_ = NULL;
+                                                                       ValaDataType* _tmp731_ = NULL;
+                                                                       ValaDelegateType* _tmp732_ = NULL;
                                                                        ValaDelegate* d = NULL;
-                                                                       ValaDelegateType* _tmp722_ = NULL;
-                                                                       ValaDelegate* _tmp723_ = NULL;
-                                                                       ValaDelegate* _tmp724_ = NULL;
-                                                                       ValaDelegate* _tmp725_ = NULL;
-                                                                       ValaDelegate* _tmp726_ = NULL;
-                                                                       gboolean _tmp727_ = FALSE;
-                                                                       gboolean _tmp728_ = FALSE;
-                                                                       _tmp718_ = param;
-                                                                       _tmp719_ = vala_variable_get_variable_type ((ValaVariable*) _tmp718_);
-                                                                       _tmp720_ = _tmp719_;
-                                                                       _tmp721_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp720_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                                                                       deleg_type = _tmp721_;
-                                                                       _tmp722_ = deleg_type;
-                                                                       _tmp723_ = vala_delegate_type_get_delegate_symbol (_tmp722_);
-                                                                       _tmp724_ = _tmp723_;
-                                                                       _tmp725_ = _vala_code_node_ref0 (_tmp724_);
-                                                                       d = _tmp725_;
-                                                                       _tmp726_ = d;
-                                                                       _tmp727_ = vala_delegate_get_has_target (_tmp726_);
-                                                                       _tmp728_ = _tmp727_;
-                                                                       if (_tmp728_) {
-                                                                               ValaParameter* _tmp729_ = NULL;
-                                                                               gchar* _tmp730_ = NULL;
-                                                                               gchar* _tmp731_ = NULL;
-                                                                               gchar* _tmp732_ = NULL;
-                                                                               gchar* _tmp733_ = NULL;
-                                                                               ValaCCodeConstant* _tmp734_ = NULL;
-                                                                               ValaCCodeConstant* _tmp735_ = NULL;
-                                                                               ValaCCodeVariableDeclarator* _tmp736_ = NULL;
-                                                                               ValaCCodeFunction* _tmp737_ = NULL;
-                                                                               ValaCCodeFunction* _tmp738_ = NULL;
-                                                                               ValaCCodeVariableDeclarator* _tmp739_ = NULL;
-                                                                               ValaDelegateType* _tmp740_ = NULL;
-                                                                               gboolean _tmp741_ = FALSE;
-                                                                               _tmp729_ = param;
-                                                                               _tmp730_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp729_);
-                                                                               _tmp731_ = _tmp730_;
-                                                                               _tmp732_ = g_strconcat ("_vala_", _tmp731_, NULL);
-                                                                               _tmp733_ = _tmp732_;
-                                                                               _tmp734_ = vala_ccode_constant_new ("NULL");
-                                                                               _tmp735_ = _tmp734_;
-                                                                               _tmp736_ = vala_ccode_variable_declarator_new_zero (_tmp733_, (ValaCCodeExpression*) _tmp735_, NULL);
+                                                                       ValaDelegateType* _tmp733_ = NULL;
+                                                                       ValaDelegate* _tmp734_ = NULL;
+                                                                       ValaDelegate* _tmp735_ = NULL;
+                                                                       ValaDelegate* _tmp736_ = NULL;
+                                                                       ValaDelegate* _tmp737_ = NULL;
+                                                                       gboolean _tmp738_ = FALSE;
+                                                                       gboolean _tmp739_ = FALSE;
+                                                                       _tmp729_ = param;
+                                                                       _tmp730_ = vala_variable_get_variable_type ((ValaVariable*) _tmp729_);
+                                                                       _tmp731_ = _tmp730_;
+                                                                       _tmp732_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp731_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                                                                       deleg_type = _tmp732_;
+                                                                       _tmp733_ = deleg_type;
+                                                                       _tmp734_ = vala_delegate_type_get_delegate_symbol (_tmp733_);
+                                                                       _tmp735_ = _tmp734_;
+                                                                       _tmp736_ = _vala_code_node_ref0 (_tmp735_);
+                                                                       d = _tmp736_;
+                                                                       _tmp737_ = d;
+                                                                       _tmp738_ = vala_delegate_get_has_target (_tmp737_);
+                                                                       _tmp739_ = _tmp738_;
+                                                                       if (_tmp739_) {
+                                                                               ValaParameter* _tmp740_ = NULL;
+                                                                               gchar* _tmp741_ = NULL;
+                                                                               gchar* _tmp742_ = NULL;
+                                                                               gchar* _tmp743_ = NULL;
+                                                                               gchar* _tmp744_ = NULL;
+                                                                               ValaCCodeConstant* _tmp745_ = NULL;
+                                                                               ValaCCodeConstant* _tmp746_ = NULL;
+                                                                               ValaCCodeVariableDeclarator* _tmp747_ = NULL;
+                                                                               ValaCCodeFunction* _tmp748_ = NULL;
+                                                                               ValaCCodeFunction* _tmp749_ = NULL;
+                                                                               ValaCCodeVariableDeclarator* _tmp750_ = NULL;
+                                                                               ValaDelegateType* _tmp751_ = NULL;
+                                                                               gboolean _tmp752_ = FALSE;
+                                                                               _tmp740_ = param;
+                                                                               _tmp741_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp740_);
+                                                                               _tmp742_ = _tmp741_;
+                                                                               _tmp743_ = g_strconcat ("_vala_", _tmp742_, NULL);
+                                                                               _tmp744_ = _tmp743_;
+                                                                               _tmp745_ = vala_ccode_constant_new ("NULL");
+                                                                               _tmp746_ = _tmp745_;
+                                                                               _tmp747_ = vala_ccode_variable_declarator_new_zero (_tmp744_, (ValaCCodeExpression*) _tmp746_, NULL);
                                                                                _vala_ccode_node_unref0 (vardecl);
-                                                                               vardecl = _tmp736_;
-                                                                               _vala_ccode_node_unref0 (_tmp735_);
-                                                                               _g_free0 (_tmp733_);
-                                                                               _g_free0 (_tmp731_);
-                                                                               _tmp737_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                                                               _tmp738_ = _tmp737_;
-                                                                               _tmp739_ = vardecl;
-                                                                               vala_ccode_function_add_declaration (_tmp738_, "void *", (ValaCCodeDeclarator*) _tmp739_, 0);
-                                                                               _tmp740_ = deleg_type;
-                                                                               _tmp741_ = vala_data_type_is_disposable ((ValaDataType*) _tmp740_);
-                                                                               if (_tmp741_) {
-                                                                                       ValaParameter* _tmp742_ = NULL;
-                                                                                       const gchar* _tmp743_ = NULL;
-                                                                                       const gchar* _tmp744_ = NULL;
-                                                                                       gchar* _tmp745_ = NULL;
-                                                                                       gchar* _tmp746_ = NULL;
-                                                                                       gchar* _tmp747_ = NULL;
-                                                                                       gchar* _tmp748_ = NULL;
-                                                                                       gchar* _tmp749_ = NULL;
-                                                                                       gchar* _tmp750_ = NULL;
-                                                                                       ValaCCodeConstant* _tmp751_ = NULL;
-                                                                                       ValaCCodeConstant* _tmp752_ = NULL;
-                                                                                       ValaCCodeVariableDeclarator* _tmp753_ = NULL;
-                                                                                       ValaCCodeFunction* _tmp754_ = NULL;
-                                                                                       ValaCCodeFunction* _tmp755_ = NULL;
-                                                                                       ValaCCodeVariableDeclarator* _tmp756_ = NULL;
-                                                                                       _tmp742_ = param;
-                                                                                       _tmp743_ = vala_symbol_get_name ((ValaSymbol*) _tmp742_);
-                                                                                       _tmp744_ = _tmp743_;
-                                                                                       _tmp745_ = g_strconcat ("_vala_", _tmp744_, NULL);
-                                                                                       _tmp746_ = _tmp745_;
-                                                                                       _tmp747_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp746_);
-                                                                                       _tmp748_ = _tmp747_;
-                                                                                       _tmp749_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp748_);
-                                                                                       _tmp750_ = _tmp749_;
-                                                                                       _tmp751_ = vala_ccode_constant_new ("NULL");
-                                                                                       _tmp752_ = _tmp751_;
-                                                                                       _tmp753_ = vala_ccode_variable_declarator_new_zero (_tmp750_, (ValaCCodeExpression*) _tmp752_, NULL);
-                                                                                       _vala_ccode_node_unref0 (vardecl);
-                                                                                       vardecl = _tmp753_;
-                                                                                       _vala_ccode_node_unref0 (_tmp752_);
-                                                                                       _g_free0 (_tmp750_);
-                                                                                       _g_free0 (_tmp748_);
-                                                                                       _g_free0 (_tmp746_);
-                                                                                       _tmp754_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                                               vardecl = _tmp747_;
+                                                                               _vala_ccode_node_unref0 (_tmp746_);
+                                                                               _g_free0 (_tmp744_);
+                                                                               _g_free0 (_tmp742_);
+                                                                               _tmp748_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                                               _tmp749_ = _tmp748_;
+                                                                               _tmp750_ = vardecl;
+                                                                               vala_ccode_function_add_declaration (_tmp749_, "void *", (ValaCCodeDeclarator*) _tmp750_, 0);
+                                                                               _tmp751_ = deleg_type;
+                                                                               _tmp752_ = vala_data_type_is_disposable ((ValaDataType*) _tmp751_);
+                                                                               if (_tmp752_) {
+                                                                                       ValaParameter* _tmp753_ = NULL;
+                                                                                       const gchar* _tmp754_ = NULL;
+                                                                                       const gchar* _tmp755_ = NULL;
+                                                                                       gchar* _tmp756_ = NULL;
+                                                                                       gchar* _tmp757_ = NULL;
+                                                                                       gchar* _tmp758_ = NULL;
+                                                                                       gchar* _tmp759_ = NULL;
+                                                                                       gchar* _tmp760_ = NULL;
+                                                                                       gchar* _tmp761_ = NULL;
+                                                                                       ValaCCodeConstant* _tmp762_ = NULL;
+                                                                                       ValaCCodeConstant* _tmp763_ = NULL;
+                                                                                       ValaCCodeVariableDeclarator* _tmp764_ = NULL;
+                                                                                       ValaCCodeFunction* _tmp765_ = NULL;
+                                                                                       ValaCCodeFunction* _tmp766_ = NULL;
+                                                                                       ValaCCodeVariableDeclarator* _tmp767_ = NULL;
+                                                                                       _tmp753_ = param;
+                                                                                       _tmp754_ = vala_symbol_get_name ((ValaSymbol*) _tmp753_);
                                                                                        _tmp755_ = _tmp754_;
-                                                                                       _tmp756_ = vardecl;
-                                                                                       vala_ccode_function_add_declaration (_tmp755_, "GDestroyNotify", (ValaCCodeDeclarator*) _tmp756_, 0);
+                                                                                       _tmp756_ = g_strconcat ("_vala_", _tmp755_, NULL);
+                                                                                       _tmp757_ = _tmp756_;
+                                                                                       _tmp758_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp757_);
+                                                                                       _tmp759_ = _tmp758_;
+                                                                                       _tmp760_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp759_);
+                                                                                       _tmp761_ = _tmp760_;
+                                                                                       _tmp762_ = vala_ccode_constant_new ("NULL");
+                                                                                       _tmp763_ = _tmp762_;
+                                                                                       _tmp764_ = vala_ccode_variable_declarator_new_zero (_tmp761_, (ValaCCodeExpression*) _tmp763_, NULL);
+                                                                                       _vala_ccode_node_unref0 (vardecl);
+                                                                                       vardecl = _tmp764_;
+                                                                                       _vala_ccode_node_unref0 (_tmp763_);
+                                                                                       _g_free0 (_tmp761_);
+                                                                                       _g_free0 (_tmp759_);
+                                                                                       _g_free0 (_tmp757_);
+                                                                                       _tmp765_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                                                       _tmp766_ = _tmp765_;
+                                                                                       _tmp767_ = vardecl;
+                                                                                       vala_ccode_function_add_declaration (_tmp766_, "GDestroyNotify", (ValaCCodeDeclarator*) _tmp767_, 0);
                                                                                }
                                                                        }
                                                                        _vala_code_node_unref0 (d);
@@ -4079,413 +4181,413 @@ static void vala_ccode_method_module_real_visit_method (ValaCodeVisitor* base, V
                                }
                                _vala_iterable_unref0 (_param_list);
                        }
-                       _tmp759_ = m;
-                       _tmp760_ = vala_method_get_return_type (_tmp759_);
-                       _tmp761_ = _tmp760_;
-                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp761_, VALA_TYPE_VOID_TYPE)) {
-                               ValaMethod* _tmp762_ = NULL;
-                               ValaDataType* _tmp763_ = NULL;
-                               ValaDataType* _tmp764_ = NULL;
-                               gboolean _tmp765_ = FALSE;
-                               _tmp762_ = m;
-                               _tmp763_ = vala_method_get_return_type (_tmp762_);
-                               _tmp764_ = _tmp763_;
-                               _tmp765_ = vala_data_type_is_real_non_null_struct_type (_tmp764_);
-                               _tmp758_ = !_tmp765_;
+                       _tmp770_ = m;
+                       _tmp771_ = vala_method_get_return_type (_tmp770_);
+                       _tmp772_ = _tmp771_;
+                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp772_, VALA_TYPE_VOID_TYPE)) {
+                               ValaMethod* _tmp773_ = NULL;
+                               ValaDataType* _tmp774_ = NULL;
+                               ValaDataType* _tmp775_ = NULL;
+                               gboolean _tmp776_ = FALSE;
+                               _tmp773_ = m;
+                               _tmp774_ = vala_method_get_return_type (_tmp773_);
+                               _tmp775_ = _tmp774_;
+                               _tmp776_ = vala_data_type_is_real_non_null_struct_type (_tmp775_);
+                               _tmp769_ = !_tmp776_;
                        } else {
-                               _tmp758_ = FALSE;
+                               _tmp769_ = FALSE;
                        }
-                       if (_tmp758_) {
-                               ValaMethod* _tmp766_ = NULL;
-                               gboolean _tmp767_ = FALSE;
-                               gboolean _tmp768_ = FALSE;
-                               _tmp766_ = m;
-                               _tmp767_ = vala_method_get_coroutine (_tmp766_);
-                               _tmp768_ = _tmp767_;
-                               _tmp757_ = !_tmp768_;
+                       if (_tmp769_) {
+                               ValaMethod* _tmp777_ = NULL;
+                               gboolean _tmp778_ = FALSE;
+                               gboolean _tmp779_ = FALSE;
+                               _tmp777_ = m;
+                               _tmp778_ = vala_method_get_coroutine (_tmp777_);
+                               _tmp779_ = _tmp778_;
+                               _tmp768_ = !_tmp779_;
                        } else {
-                               _tmp757_ = FALSE;
+                               _tmp768_ = FALSE;
                        }
-                       if (_tmp757_) {
+                       if (_tmp768_) {
                                ValaCCodeVariableDeclarator* vardecl = NULL;
-                               ValaMethod* _tmp769_ = NULL;
-                               ValaDataType* _tmp770_ = NULL;
-                               ValaDataType* _tmp771_ = NULL;
-                               ValaCCodeExpression* _tmp772_ = NULL;
-                               ValaCCodeExpression* _tmp773_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp774_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp775_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp776_ = NULL;
-                               ValaCCodeFunction* _tmp777_ = NULL;
-                               ValaCCodeFunction* _tmp778_ = NULL;
-                               ValaMethod* _tmp779_ = NULL;
-                               ValaDataType* _tmp780_ = NULL;
+                               ValaMethod* _tmp780_ = NULL;
                                ValaDataType* _tmp781_ = NULL;
-                               gchar* _tmp782_ = NULL;
-                               gchar* _tmp783_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp784_ = NULL;
-                               _tmp769_ = m;
-                               _tmp770_ = vala_method_get_return_type (_tmp769_);
-                               _tmp771_ = _tmp770_;
-                               _tmp772_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp771_, TRUE);
-                               _tmp773_ = _tmp772_;
-                               _tmp774_ = vala_ccode_variable_declarator_new ("result", _tmp773_, NULL);
-                               _tmp775_ = _tmp774_;
-                               _vala_ccode_node_unref0 (_tmp773_);
-                               vardecl = _tmp775_;
-                               _tmp776_ = vardecl;
-                               vala_ccode_variable_declarator_set_init0 (_tmp776_, TRUE);
-                               _tmp777_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp778_ = _tmp777_;
-                               _tmp779_ = m;
-                               _tmp780_ = vala_method_get_return_type (_tmp779_);
-                               _tmp781_ = _tmp780_;
-                               _tmp782_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp781_);
-                               _tmp783_ = _tmp782_;
-                               _tmp784_ = vardecl;
-                               vala_ccode_function_add_declaration (_tmp778_, _tmp783_, (ValaCCodeDeclarator*) _tmp784_, 0);
-                               _g_free0 (_tmp783_);
+                               ValaDataType* _tmp782_ = NULL;
+                               ValaCCodeExpression* _tmp783_ = NULL;
+                               ValaCCodeExpression* _tmp784_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp785_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp786_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp787_ = NULL;
+                               ValaCCodeFunction* _tmp788_ = NULL;
+                               ValaCCodeFunction* _tmp789_ = NULL;
+                               ValaMethod* _tmp790_ = NULL;
+                               ValaDataType* _tmp791_ = NULL;
+                               ValaDataType* _tmp792_ = NULL;
+                               gchar* _tmp793_ = NULL;
+                               gchar* _tmp794_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp795_ = NULL;
+                               _tmp780_ = m;
+                               _tmp781_ = vala_method_get_return_type (_tmp780_);
+                               _tmp782_ = _tmp781_;
+                               _tmp783_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp782_, TRUE);
+                               _tmp784_ = _tmp783_;
+                               _tmp785_ = vala_ccode_variable_declarator_new ("result", _tmp784_, NULL);
+                               _tmp786_ = _tmp785_;
+                               _vala_ccode_node_unref0 (_tmp784_);
+                               vardecl = _tmp786_;
+                               _tmp787_ = vardecl;
+                               vala_ccode_variable_declarator_set_init0 (_tmp787_, TRUE);
+                               _tmp788_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp789_ = _tmp788_;
+                               _tmp790_ = m;
+                               _tmp791_ = vala_method_get_return_type (_tmp790_);
+                               _tmp792_ = _tmp791_;
+                               _tmp793_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp792_);
+                               _tmp794_ = _tmp793_;
+                               _tmp795_ = vardecl;
+                               vala_ccode_function_add_declaration (_tmp789_, _tmp794_, (ValaCCodeDeclarator*) _tmp795_, 0);
+                               _g_free0 (_tmp794_);
                                _vala_ccode_node_unref0 (vardecl);
                        }
-                       _tmp785_ = m;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp785_, VALA_TYPE_CREATION_METHOD)) {
-                               gboolean _tmp786_ = FALSE;
-                               _tmp786_ = in_gobject_creation_method;
-                               if (_tmp786_) {
-                                       ValaMethod* _tmp787_ = NULL;
-                                       gboolean _tmp788_ = FALSE;
-                                       gboolean _tmp789_ = FALSE;
-                                       _tmp787_ = m;
-                                       _tmp788_ = vala_method_get_coroutine (_tmp787_);
-                                       _tmp789_ = _tmp788_;
-                                       if (!_tmp789_) {
-                                               ValaCCodeFunction* _tmp790_ = NULL;
-                                               ValaCCodeFunction* _tmp791_ = NULL;
-                                               ValaTypeSymbol* _tmp792_ = NULL;
-                                               ValaTypeSymbol* _tmp793_ = NULL;
-                                               gchar* _tmp794_ = NULL;
-                                               gchar* _tmp795_ = NULL;
-                                               gchar* _tmp796_ = NULL;
-                                               gchar* _tmp797_ = NULL;
-                                               ValaCCodeConstant* _tmp798_ = NULL;
-                                               ValaCCodeConstant* _tmp799_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp800_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp801_ = NULL;
-                                               _tmp790_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                               _tmp791_ = _tmp790_;
-                                               _tmp792_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
-                                               _tmp793_ = _tmp792_;
-                                               _tmp794_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp793_);
-                                               _tmp795_ = _tmp794_;
-                                               _tmp796_ = g_strdup_printf ("%s *", _tmp795_);
-                                               _tmp797_ = _tmp796_;
-                                               _tmp798_ = vala_ccode_constant_new ("NULL");
-                                               _tmp799_ = _tmp798_;
-                                               _tmp800_ = vala_ccode_variable_declarator_new_zero ("self", (ValaCCodeExpression*) _tmp799_, NULL);
-                                               _tmp801_ = _tmp800_;
-                                               vala_ccode_function_add_declaration (_tmp791_, _tmp797_, (ValaCCodeDeclarator*) _tmp801_, 0);
-                                               _vala_ccode_node_unref0 (_tmp801_);
-                                               _vala_ccode_node_unref0 (_tmp799_);
-                                               _g_free0 (_tmp797_);
-                                               _g_free0 (_tmp795_);
+                       _tmp796_ = m;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp796_, VALA_TYPE_CREATION_METHOD)) {
+                               gboolean _tmp797_ = FALSE;
+                               _tmp797_ = in_gobject_creation_method;
+                               if (_tmp797_) {
+                                       ValaMethod* _tmp798_ = NULL;
+                                       gboolean _tmp799_ = FALSE;
+                                       gboolean _tmp800_ = FALSE;
+                                       _tmp798_ = m;
+                                       _tmp799_ = vala_method_get_coroutine (_tmp798_);
+                                       _tmp800_ = _tmp799_;
+                                       if (!_tmp800_) {
+                                               ValaCCodeFunction* _tmp801_ = NULL;
+                                               ValaCCodeFunction* _tmp802_ = NULL;
+                                               ValaTypeSymbol* _tmp803_ = NULL;
+                                               ValaTypeSymbol* _tmp804_ = NULL;
+                                               gchar* _tmp805_ = NULL;
+                                               gchar* _tmp806_ = NULL;
+                                               gchar* _tmp807_ = NULL;
+                                               gchar* _tmp808_ = NULL;
+                                               ValaCCodeConstant* _tmp809_ = NULL;
+                                               ValaCCodeConstant* _tmp810_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp811_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp812_ = NULL;
+                                               _tmp801_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                               _tmp802_ = _tmp801_;
+                                               _tmp803_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
+                                               _tmp804_ = _tmp803_;
+                                               _tmp805_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp804_);
+                                               _tmp806_ = _tmp805_;
+                                               _tmp807_ = g_strdup_printf ("%s *", _tmp806_);
+                                               _tmp808_ = _tmp807_;
+                                               _tmp809_ = vala_ccode_constant_new ("NULL");
+                                               _tmp810_ = _tmp809_;
+                                               _tmp811_ = vala_ccode_variable_declarator_new_zero ("self", (ValaCCodeExpression*) _tmp810_, NULL);
+                                               _tmp812_ = _tmp811_;
+                                               vala_ccode_function_add_declaration (_tmp802_, _tmp808_, (ValaCCodeDeclarator*) _tmp812_, 0);
+                                               _vala_ccode_node_unref0 (_tmp812_);
+                                               _vala_ccode_node_unref0 (_tmp810_);
+                                               _g_free0 (_tmp808_);
+                                               _g_free0 (_tmp806_);
                                        }
                                } else {
-                                       ValaMethod* _tmp802_ = NULL;
-                                       gboolean _tmp803_ = FALSE;
-                                       _tmp802_ = m;
-                                       _tmp803_ = vala_ccode_method_module_is_gtypeinstance_creation_method (self, _tmp802_);
-                                       if (_tmp803_) {
+                                       ValaMethod* _tmp813_ = NULL;
+                                       gboolean _tmp814_ = FALSE;
+                                       _tmp813_ = m;
+                                       _tmp814_ = vala_ccode_method_module_is_gtypeinstance_creation_method (self, _tmp813_);
+                                       if (_tmp814_) {
                                                ValaClass* cl = NULL;
-                                               ValaMethod* _tmp804_ = NULL;
-                                               ValaSymbol* _tmp805_ = NULL;
-                                               ValaSymbol* _tmp806_ = NULL;
-                                               ValaClass* _tmp807_ = NULL;
-                                               ValaCCodeFunction* _tmp808_ = NULL;
-                                               ValaCCodeFunction* _tmp809_ = NULL;
-                                               ValaClass* _tmp810_ = NULL;
-                                               gchar* _tmp811_ = NULL;
-                                               gchar* _tmp812_ = NULL;
-                                               gchar* _tmp813_ = NULL;
-                                               gchar* _tmp814_ = NULL;
-                                               ValaCCodeConstant* _tmp815_ = NULL;
-                                               ValaCCodeConstant* _tmp816_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp817_ = NULL;
-                                               ValaCCodeVariableDeclarator* _tmp818_ = NULL;
-                                               gboolean _tmp819_ = FALSE;
-                                               ValaClass* _tmp820_ = NULL;
-                                               gboolean _tmp821_ = FALSE;
-                                               _tmp804_ = m;
-                                               _tmp805_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp804_);
-                                               _tmp806_ = _tmp805_;
-                                               _tmp807_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp806_, VALA_TYPE_CLASS, ValaClass));
-                                               cl = _tmp807_;
-                                               _tmp808_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                               _tmp809_ = _tmp808_;
-                                               _tmp810_ = cl;
-                                               _tmp811_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp810_);
-                                               _tmp812_ = _tmp811_;
-                                               _tmp813_ = g_strconcat (_tmp812_, "*", NULL);
-                                               _tmp814_ = _tmp813_;
-                                               _tmp815_ = vala_ccode_constant_new ("NULL");
-                                               _tmp816_ = _tmp815_;
-                                               _tmp817_ = vala_ccode_variable_declarator_new_zero ("self", (ValaCCodeExpression*) _tmp816_, NULL);
-                                               _tmp818_ = _tmp817_;
-                                               vala_ccode_function_add_declaration (_tmp809_, _tmp814_, (ValaCCodeDeclarator*) _tmp818_, 0);
-                                               _vala_ccode_node_unref0 (_tmp818_);
-                                               _vala_ccode_node_unref0 (_tmp816_);
-                                               _g_free0 (_tmp814_);
-                                               _g_free0 (_tmp812_);
-                                               _tmp820_ = cl;
-                                               _tmp821_ = vala_class_is_fundamental (_tmp820_);
-                                               if (_tmp821_) {
-                                                       ValaMethod* _tmp822_ = NULL;
-                                                       gboolean _tmp823_ = FALSE;
-                                                       gboolean _tmp824_ = FALSE;
-                                                       _tmp822_ = m;
-                                                       _tmp823_ = vala_creation_method_get_chain_up (G_TYPE_CHECK_INSTANCE_CAST (_tmp822_, VALA_TYPE_CREATION_METHOD, ValaCreationMethod));
-                                                       _tmp824_ = _tmp823_;
-                                                       _tmp819_ = !_tmp824_;
+                                               ValaMethod* _tmp815_ = NULL;
+                                               ValaSymbol* _tmp816_ = NULL;
+                                               ValaSymbol* _tmp817_ = NULL;
+                                               ValaClass* _tmp818_ = NULL;
+                                               ValaCCodeFunction* _tmp819_ = NULL;
+                                               ValaCCodeFunction* _tmp820_ = NULL;
+                                               ValaClass* _tmp821_ = NULL;
+                                               gchar* _tmp822_ = NULL;
+                                               gchar* _tmp823_ = NULL;
+                                               gchar* _tmp824_ = NULL;
+                                               gchar* _tmp825_ = NULL;
+                                               ValaCCodeConstant* _tmp826_ = NULL;
+                                               ValaCCodeConstant* _tmp827_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp828_ = NULL;
+                                               ValaCCodeVariableDeclarator* _tmp829_ = NULL;
+                                               gboolean _tmp830_ = FALSE;
+                                               ValaClass* _tmp831_ = NULL;
+                                               gboolean _tmp832_ = FALSE;
+                                               _tmp815_ = m;
+                                               _tmp816_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp815_);
+                                               _tmp817_ = _tmp816_;
+                                               _tmp818_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp817_, VALA_TYPE_CLASS, ValaClass));
+                                               cl = _tmp818_;
+                                               _tmp819_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                               _tmp820_ = _tmp819_;
+                                               _tmp821_ = cl;
+                                               _tmp822_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp821_);
+                                               _tmp823_ = _tmp822_;
+                                               _tmp824_ = g_strconcat (_tmp823_, "*", NULL);
+                                               _tmp825_ = _tmp824_;
+                                               _tmp826_ = vala_ccode_constant_new ("NULL");
+                                               _tmp827_ = _tmp826_;
+                                               _tmp828_ = vala_ccode_variable_declarator_new_zero ("self", (ValaCCodeExpression*) _tmp827_, NULL);
+                                               _tmp829_ = _tmp828_;
+                                               vala_ccode_function_add_declaration (_tmp820_, _tmp825_, (ValaCCodeDeclarator*) _tmp829_, 0);
+                                               _vala_ccode_node_unref0 (_tmp829_);
+                                               _vala_ccode_node_unref0 (_tmp827_);
+                                               _g_free0 (_tmp825_);
+                                               _g_free0 (_tmp823_);
+                                               _tmp831_ = cl;
+                                               _tmp832_ = vala_class_is_fundamental (_tmp831_);
+                                               if (_tmp832_) {
+                                                       ValaMethod* _tmp833_ = NULL;
+                                                       gboolean _tmp834_ = FALSE;
+                                                       gboolean _tmp835_ = FALSE;
+                                                       _tmp833_ = m;
+                                                       _tmp834_ = vala_creation_method_get_chain_up (G_TYPE_CHECK_INSTANCE_CAST (_tmp833_, VALA_TYPE_CREATION_METHOD, ValaCreationMethod));
+                                                       _tmp835_ = _tmp834_;
+                                                       _tmp830_ = !_tmp835_;
                                                } else {
-                                                       _tmp819_ = FALSE;
+                                                       _tmp830_ = FALSE;
                                                }
-                                               if (_tmp819_) {
+                                               if (_tmp830_) {
                                                        ValaCCodeFunctionCall* ccall = NULL;
-                                                       ValaCCodeIdentifier* _tmp825_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp826_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp827_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp828_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp829_ = NULL;
-                                                       ValaCCodeExpression* _tmp830_ = NULL;
-                                                       ValaCCodeExpression* _tmp831_ = NULL;
-                                                       ValaCCodeFunction* _tmp832_ = NULL;
-                                                       ValaCCodeFunction* _tmp833_ = NULL;
-                                                       ValaCCodeExpression* _tmp834_ = NULL;
-                                                       ValaCCodeExpression* _tmp835_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp836_ = NULL;
-                                                       ValaClass* _tmp837_ = NULL;
-                                                       gchar* _tmp838_ = NULL;
-                                                       gchar* _tmp839_ = NULL;
-                                                       gchar* _tmp840_ = NULL;
-                                                       gchar* _tmp841_ = NULL;
-                                                       ValaCCodeCastExpression* _tmp842_ = NULL;
-                                                       ValaCCodeCastExpression* _tmp843_ = NULL;
-                                                       _tmp825_ = vala_ccode_identifier_new ("g_type_create_instance");
-                                                       _tmp826_ = _tmp825_;
-                                                       _tmp827_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp826_);
-                                                       _tmp828_ = _tmp827_;
-                                                       _vala_ccode_node_unref0 (_tmp826_);
-                                                       ccall = _tmp828_;
-                                                       _tmp829_ = ccall;
-                                                       _tmp830_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, "object_type");
-                                                       _tmp831_ = _tmp830_;
-                                                       vala_ccode_function_call_add_argument (_tmp829_, _tmp831_);
-                                                       _vala_ccode_node_unref0 (_tmp831_);
-                                                       _tmp832_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                                       _tmp833_ = _tmp832_;
-                                                       _tmp834_ = vala_ccode_base_module_get_this_cexpression ((ValaCCodeBaseModule*) self);
-                                                       _tmp835_ = _tmp834_;
-                                                       _tmp836_ = ccall;
-                                                       _tmp837_ = cl;
-                                                       _tmp838_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp837_);
+                                                       ValaCCodeIdentifier* _tmp836_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp837_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp838_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp839_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp840_ = NULL;
+                                                       ValaCCodeExpression* _tmp841_ = NULL;
+                                                       ValaCCodeExpression* _tmp842_ = NULL;
+                                                       ValaCCodeFunction* _tmp843_ = NULL;
+                                                       ValaCCodeFunction* _tmp844_ = NULL;
+                                                       ValaCCodeExpression* _tmp845_ = NULL;
+                                                       ValaCCodeExpression* _tmp846_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp847_ = NULL;
+                                                       ValaClass* _tmp848_ = NULL;
+                                                       gchar* _tmp849_ = NULL;
+                                                       gchar* _tmp850_ = NULL;
+                                                       gchar* _tmp851_ = NULL;
+                                                       gchar* _tmp852_ = NULL;
+                                                       ValaCCodeCastExpression* _tmp853_ = NULL;
+                                                       ValaCCodeCastExpression* _tmp854_ = NULL;
+                                                       _tmp836_ = vala_ccode_identifier_new ("g_type_create_instance");
+                                                       _tmp837_ = _tmp836_;
+                                                       _tmp838_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp837_);
                                                        _tmp839_ = _tmp838_;
-                                                       _tmp840_ = g_strconcat (_tmp839_, "*", NULL);
-                                                       _tmp841_ = _tmp840_;
-                                                       _tmp842_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp836_, _tmp841_);
-                                                       _tmp843_ = _tmp842_;
-                                                       vala_ccode_function_add_assignment (_tmp833_, _tmp835_, (ValaCCodeExpression*) _tmp843_);
-                                                       _vala_ccode_node_unref0 (_tmp843_);
-                                                       _g_free0 (_tmp841_);
-                                                       _g_free0 (_tmp839_);
-                                                       _vala_ccode_node_unref0 (_tmp835_);
+                                                       _vala_ccode_node_unref0 (_tmp837_);
+                                                       ccall = _tmp839_;
+                                                       _tmp840_ = ccall;
+                                                       _tmp841_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, "object_type");
+                                                       _tmp842_ = _tmp841_;
+                                                       vala_ccode_function_call_add_argument (_tmp840_, _tmp842_);
+                                                       _vala_ccode_node_unref0 (_tmp842_);
+                                                       _tmp843_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                       _tmp844_ = _tmp843_;
+                                                       _tmp845_ = vala_ccode_base_module_get_this_cexpression ((ValaCCodeBaseModule*) self);
+                                                       _tmp846_ = _tmp845_;
+                                                       _tmp847_ = ccall;
+                                                       _tmp848_ = cl;
+                                                       _tmp849_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp848_);
+                                                       _tmp850_ = _tmp849_;
+                                                       _tmp851_ = g_strconcat (_tmp850_, "*", NULL);
+                                                       _tmp852_ = _tmp851_;
+                                                       _tmp853_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp847_, _tmp852_);
+                                                       _tmp854_ = _tmp853_;
+                                                       vala_ccode_function_add_assignment (_tmp844_, _tmp846_, (ValaCCodeExpression*) _tmp854_);
+                                                       _vala_ccode_node_unref0 (_tmp854_);
+                                                       _g_free0 (_tmp852_);
+                                                       _g_free0 (_tmp850_);
+                                                       _vala_ccode_node_unref0 (_tmp846_);
                                                        {
                                                                ValaList* _type_param_list = NULL;
-                                                               ValaClass* _tmp844_ = NULL;
-                                                               ValaClass* _tmp845_ = NULL;
-                                                               ValaList* _tmp846_ = NULL;
+                                                               ValaClass* _tmp855_ = NULL;
+                                                               ValaClass* _tmp856_ = NULL;
+                                                               ValaList* _tmp857_ = NULL;
                                                                gint _type_param_size = 0;
-                                                               ValaList* _tmp847_ = NULL;
-                                                               gint _tmp848_ = 0;
-                                                               gint _tmp849_ = 0;
+                                                               ValaList* _tmp858_ = NULL;
+                                                               gint _tmp859_ = 0;
+                                                               gint _tmp860_ = 0;
                                                                gint _type_param_index = 0;
-                                                               _tmp844_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
-                                                               _tmp845_ = _tmp844_;
-                                                               _tmp846_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp845_);
-                                                               _type_param_list = _tmp846_;
-                                                               _tmp847_ = _type_param_list;
-                                                               _tmp848_ = vala_collection_get_size ((ValaCollection*) _tmp847_);
-                                                               _tmp849_ = _tmp848_;
-                                                               _type_param_size = _tmp849_;
+                                                               _tmp855_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
+                                                               _tmp856_ = _tmp855_;
+                                                               _tmp857_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp856_);
+                                                               _type_param_list = _tmp857_;
+                                                               _tmp858_ = _type_param_list;
+                                                               _tmp859_ = vala_collection_get_size ((ValaCollection*) _tmp858_);
+                                                               _tmp860_ = _tmp859_;
+                                                               _type_param_size = _tmp860_;
                                                                _type_param_index = -1;
                                                                while (TRUE) {
-                                                                       gint _tmp850_ = 0;
-                                                                       gint _tmp851_ = 0;
-                                                                       gint _tmp852_ = 0;
+                                                                       gint _tmp861_ = 0;
+                                                                       gint _tmp862_ = 0;
+                                                                       gint _tmp863_ = 0;
                                                                        ValaTypeParameter* type_param = NULL;
-                                                                       ValaList* _tmp853_ = NULL;
-                                                                       gint _tmp854_ = 0;
-                                                                       gpointer _tmp855_ = NULL;
+                                                                       ValaList* _tmp864_ = NULL;
+                                                                       gint _tmp865_ = 0;
+                                                                       gpointer _tmp866_ = NULL;
                                                                        ValaCCodeIdentifier* param_name = NULL;
                                                                        ValaCCodeAssignment* assign = NULL;
                                                                        ValaCCodeMemberAccess* priv_access = NULL;
-                                                                       ValaCCodeIdentifier* _tmp856_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp857_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp858_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp859_ = NULL;
-                                                                       ValaTypeParameter* _tmp860_ = NULL;
-                                                                       const gchar* _tmp861_ = NULL;
-                                                                       const gchar* _tmp862_ = NULL;
-                                                                       gchar* _tmp863_ = NULL;
-                                                                       gchar* _tmp864_ = NULL;
-                                                                       gchar* _tmp865_ = NULL;
-                                                                       gchar* _tmp866_ = NULL;
                                                                        ValaCCodeIdentifier* _tmp867_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp868_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp869_ = NULL;
-                                                                       const gchar* _tmp870_ = NULL;
-                                                                       const gchar* _tmp871_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp872_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp873_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp874_ = NULL;
-                                                                       ValaCCodeAssignment* _tmp875_ = NULL;
-                                                                       ValaCCodeFunction* _tmp876_ = NULL;
-                                                                       ValaCCodeFunction* _tmp877_ = NULL;
-                                                                       ValaCCodeAssignment* _tmp878_ = NULL;
-                                                                       ValaTypeParameter* _tmp879_ = NULL;
-                                                                       const gchar* _tmp880_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp868_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp869_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp870_ = NULL;
+                                                                       ValaTypeParameter* _tmp871_ = NULL;
+                                                                       const gchar* _tmp872_ = NULL;
+                                                                       const gchar* _tmp873_ = NULL;
+                                                                       gchar* _tmp874_ = NULL;
+                                                                       gchar* _tmp875_ = NULL;
+                                                                       gchar* _tmp876_ = NULL;
+                                                                       gchar* _tmp877_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp878_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp879_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp880_ = NULL;
                                                                        const gchar* _tmp881_ = NULL;
-                                                                       gchar* _tmp882_ = NULL;
-                                                                       gchar* _tmp883_ = NULL;
-                                                                       gchar* _tmp884_ = NULL;
-                                                                       gchar* _tmp885_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp886_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp887_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp888_ = NULL;
-                                                                       const gchar* _tmp889_ = NULL;
-                                                                       const gchar* _tmp890_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp891_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp892_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp893_ = NULL;
-                                                                       ValaCCodeAssignment* _tmp894_ = NULL;
-                                                                       ValaCCodeFunction* _tmp895_ = NULL;
-                                                                       ValaCCodeFunction* _tmp896_ = NULL;
-                                                                       ValaCCodeAssignment* _tmp897_ = NULL;
-                                                                       ValaTypeParameter* _tmp898_ = NULL;
-                                                                       const gchar* _tmp899_ = NULL;
+                                                                       const gchar* _tmp882_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp883_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp884_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp885_ = NULL;
+                                                                       ValaCCodeAssignment* _tmp886_ = NULL;
+                                                                       ValaCCodeFunction* _tmp887_ = NULL;
+                                                                       ValaCCodeFunction* _tmp888_ = NULL;
+                                                                       ValaCCodeAssignment* _tmp889_ = NULL;
+                                                                       ValaTypeParameter* _tmp890_ = NULL;
+                                                                       const gchar* _tmp891_ = NULL;
+                                                                       const gchar* _tmp892_ = NULL;
+                                                                       gchar* _tmp893_ = NULL;
+                                                                       gchar* _tmp894_ = NULL;
+                                                                       gchar* _tmp895_ = NULL;
+                                                                       gchar* _tmp896_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp897_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp898_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp899_ = NULL;
                                                                        const gchar* _tmp900_ = NULL;
-                                                                       gchar* _tmp901_ = NULL;
-                                                                       gchar* _tmp902_ = NULL;
-                                                                       gchar* _tmp903_ = NULL;
-                                                                       gchar* _tmp904_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp905_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp906_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp907_ = NULL;
-                                                                       const gchar* _tmp908_ = NULL;
-                                                                       const gchar* _tmp909_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp910_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp911_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp912_ = NULL;
-                                                                       ValaCCodeAssignment* _tmp913_ = NULL;
-                                                                       ValaCCodeFunction* _tmp914_ = NULL;
-                                                                       ValaCCodeFunction* _tmp915_ = NULL;
-                                                                       ValaCCodeAssignment* _tmp916_ = NULL;
-                                                                       _tmp850_ = _type_param_index;
-                                                                       _type_param_index = _tmp850_ + 1;
-                                                                       _tmp851_ = _type_param_index;
-                                                                       _tmp852_ = _type_param_size;
-                                                                       if (!(_tmp851_ < _tmp852_)) {
+                                                                       const gchar* _tmp901_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp902_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp903_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp904_ = NULL;
+                                                                       ValaCCodeAssignment* _tmp905_ = NULL;
+                                                                       ValaCCodeFunction* _tmp906_ = NULL;
+                                                                       ValaCCodeFunction* _tmp907_ = NULL;
+                                                                       ValaCCodeAssignment* _tmp908_ = NULL;
+                                                                       ValaTypeParameter* _tmp909_ = NULL;
+                                                                       const gchar* _tmp910_ = NULL;
+                                                                       const gchar* _tmp911_ = NULL;
+                                                                       gchar* _tmp912_ = NULL;
+                                                                       gchar* _tmp913_ = NULL;
+                                                                       gchar* _tmp914_ = NULL;
+                                                                       gchar* _tmp915_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp916_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp917_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp918_ = NULL;
+                                                                       const gchar* _tmp919_ = NULL;
+                                                                       const gchar* _tmp920_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp921_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp922_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp923_ = NULL;
+                                                                       ValaCCodeAssignment* _tmp924_ = NULL;
+                                                                       ValaCCodeFunction* _tmp925_ = NULL;
+                                                                       ValaCCodeFunction* _tmp926_ = NULL;
+                                                                       ValaCCodeAssignment* _tmp927_ = NULL;
+                                                                       _tmp861_ = _type_param_index;
+                                                                       _type_param_index = _tmp861_ + 1;
+                                                                       _tmp862_ = _type_param_index;
+                                                                       _tmp863_ = _type_param_size;
+                                                                       if (!(_tmp862_ < _tmp863_)) {
                                                                                break;
                                                                        }
-                                                                       _tmp853_ = _type_param_list;
-                                                                       _tmp854_ = _type_param_index;
-                                                                       _tmp855_ = vala_list_get (_tmp853_, _tmp854_);
-                                                                       type_param = (ValaTypeParameter*) _tmp855_;
-                                                                       _tmp856_ = vala_ccode_identifier_new ("self");
-                                                                       _tmp857_ = _tmp856_;
-                                                                       _tmp858_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp857_, "priv");
-                                                                       _tmp859_ = _tmp858_;
-                                                                       _vala_ccode_node_unref0 (_tmp857_);
-                                                                       priv_access = _tmp859_;
-                                                                       _tmp860_ = type_param;
-                                                                       _tmp861_ = vala_symbol_get_name ((ValaSymbol*) _tmp860_);
-                                                                       _tmp862_ = _tmp861_;
-                                                                       _tmp863_ = g_utf8_strdown (_tmp862_, (gssize) (-1));
-                                                                       _tmp864_ = _tmp863_;
-                                                                       _tmp865_ = g_strdup_printf ("%s_type", _tmp864_);
-                                                                       _tmp866_ = _tmp865_;
-                                                                       _tmp867_ = vala_ccode_identifier_new (_tmp866_);
-                                                                       _vala_ccode_node_unref0 (param_name);
-                                                                       param_name = _tmp867_;
-                                                                       _g_free0 (_tmp866_);
-                                                                       _g_free0 (_tmp864_);
-                                                                       _tmp868_ = priv_access;
-                                                                       _tmp869_ = param_name;
-                                                                       _tmp870_ = vala_ccode_identifier_get_name (_tmp869_);
-                                                                       _tmp871_ = _tmp870_;
-                                                                       _tmp872_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp868_, _tmp871_);
+                                                                       _tmp864_ = _type_param_list;
+                                                                       _tmp865_ = _type_param_index;
+                                                                       _tmp866_ = vala_list_get (_tmp864_, _tmp865_);
+                                                                       type_param = (ValaTypeParameter*) _tmp866_;
+                                                                       _tmp867_ = vala_ccode_identifier_new ("self");
+                                                                       _tmp868_ = _tmp867_;
+                                                                       _tmp869_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp868_, "priv");
+                                                                       _tmp870_ = _tmp869_;
+                                                                       _vala_ccode_node_unref0 (_tmp868_);
+                                                                       priv_access = _tmp870_;
+                                                                       _tmp871_ = type_param;
+                                                                       _tmp872_ = vala_symbol_get_name ((ValaSymbol*) _tmp871_);
                                                                        _tmp873_ = _tmp872_;
-                                                                       _tmp874_ = param_name;
-                                                                       _tmp875_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp873_, (ValaCCodeExpression*) _tmp874_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
-                                                                       _vala_ccode_node_unref0 (assign);
-                                                                       assign = _tmp875_;
-                                                                       _vala_ccode_node_unref0 (_tmp873_);
-                                                                       _tmp876_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                                       _tmp874_ = g_utf8_strdown (_tmp873_, (gssize) (-1));
+                                                                       _tmp875_ = _tmp874_;
+                                                                       _tmp876_ = g_strdup_printf ("%s_type", _tmp875_);
                                                                        _tmp877_ = _tmp876_;
-                                                                       _tmp878_ = assign;
-                                                                       vala_ccode_function_add_expression (_tmp877_, (ValaCCodeExpression*) _tmp878_);
-                                                                       _tmp879_ = type_param;
-                                                                       _tmp880_ = vala_symbol_get_name ((ValaSymbol*) _tmp879_);
-                                                                       _tmp881_ = _tmp880_;
-                                                                       _tmp882_ = g_utf8_strdown (_tmp881_, (gssize) (-1));
-                                                                       _tmp883_ = _tmp882_;
-                                                                       _tmp884_ = g_strdup_printf ("%s_dup_func", _tmp883_);
-                                                                       _tmp885_ = _tmp884_;
-                                                                       _tmp886_ = vala_ccode_identifier_new (_tmp885_);
+                                                                       _tmp878_ = vala_ccode_identifier_new (_tmp877_);
                                                                        _vala_ccode_node_unref0 (param_name);
-                                                                       param_name = _tmp886_;
-                                                                       _g_free0 (_tmp885_);
-                                                                       _g_free0 (_tmp883_);
-                                                                       _tmp887_ = priv_access;
-                                                                       _tmp888_ = param_name;
-                                                                       _tmp889_ = vala_ccode_identifier_get_name (_tmp888_);
-                                                                       _tmp890_ = _tmp889_;
-                                                                       _tmp891_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp887_, _tmp890_);
-                                                                       _tmp892_ = _tmp891_;
-                                                                       _tmp893_ = param_name;
-                                                                       _tmp894_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp892_, (ValaCCodeExpression*) _tmp893_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
+                                                                       param_name = _tmp878_;
+                                                                       _g_free0 (_tmp877_);
+                                                                       _g_free0 (_tmp875_);
+                                                                       _tmp879_ = priv_access;
+                                                                       _tmp880_ = param_name;
+                                                                       _tmp881_ = vala_ccode_identifier_get_name (_tmp880_);
+                                                                       _tmp882_ = _tmp881_;
+                                                                       _tmp883_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp879_, _tmp882_);
+                                                                       _tmp884_ = _tmp883_;
+                                                                       _tmp885_ = param_name;
+                                                                       _tmp886_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp884_, (ValaCCodeExpression*) _tmp885_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                                                                        _vala_ccode_node_unref0 (assign);
-                                                                       assign = _tmp894_;
-                                                                       _vala_ccode_node_unref0 (_tmp892_);
-                                                                       _tmp895_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                                       assign = _tmp886_;
+                                                                       _vala_ccode_node_unref0 (_tmp884_);
+                                                                       _tmp887_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                                       _tmp888_ = _tmp887_;
+                                                                       _tmp889_ = assign;
+                                                                       vala_ccode_function_add_expression (_tmp888_, (ValaCCodeExpression*) _tmp889_);
+                                                                       _tmp890_ = type_param;
+                                                                       _tmp891_ = vala_symbol_get_name ((ValaSymbol*) _tmp890_);
+                                                                       _tmp892_ = _tmp891_;
+                                                                       _tmp893_ = g_utf8_strdown (_tmp892_, (gssize) (-1));
+                                                                       _tmp894_ = _tmp893_;
+                                                                       _tmp895_ = g_strdup_printf ("%s_dup_func", _tmp894_);
                                                                        _tmp896_ = _tmp895_;
-                                                                       _tmp897_ = assign;
-                                                                       vala_ccode_function_add_expression (_tmp896_, (ValaCCodeExpression*) _tmp897_);
-                                                                       _tmp898_ = type_param;
-                                                                       _tmp899_ = vala_symbol_get_name ((ValaSymbol*) _tmp898_);
-                                                                       _tmp900_ = _tmp899_;
-                                                                       _tmp901_ = g_utf8_strdown (_tmp900_, (gssize) (-1));
-                                                                       _tmp902_ = _tmp901_;
-                                                                       _tmp903_ = g_strdup_printf ("%s_destroy_func", _tmp902_);
-                                                                       _tmp904_ = _tmp903_;
-                                                                       _tmp905_ = vala_ccode_identifier_new (_tmp904_);
+                                                                       _tmp897_ = vala_ccode_identifier_new (_tmp896_);
                                                                        _vala_ccode_node_unref0 (param_name);
-                                                                       param_name = _tmp905_;
-                                                                       _g_free0 (_tmp904_);
-                                                                       _g_free0 (_tmp902_);
-                                                                       _tmp906_ = priv_access;
-                                                                       _tmp907_ = param_name;
-                                                                       _tmp908_ = vala_ccode_identifier_get_name (_tmp907_);
-                                                                       _tmp909_ = _tmp908_;
-                                                                       _tmp910_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp906_, _tmp909_);
-                                                                       _tmp911_ = _tmp910_;
-                                                                       _tmp912_ = param_name;
-                                                                       _tmp913_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp911_, (ValaCCodeExpression*) _tmp912_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
+                                                                       param_name = _tmp897_;
+                                                                       _g_free0 (_tmp896_);
+                                                                       _g_free0 (_tmp894_);
+                                                                       _tmp898_ = priv_access;
+                                                                       _tmp899_ = param_name;
+                                                                       _tmp900_ = vala_ccode_identifier_get_name (_tmp899_);
+                                                                       _tmp901_ = _tmp900_;
+                                                                       _tmp902_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp898_, _tmp901_);
+                                                                       _tmp903_ = _tmp902_;
+                                                                       _tmp904_ = param_name;
+                                                                       _tmp905_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp903_, (ValaCCodeExpression*) _tmp904_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                                                                        _vala_ccode_node_unref0 (assign);
-                                                                       assign = _tmp913_;
-                                                                       _vala_ccode_node_unref0 (_tmp911_);
-                                                                       _tmp914_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                                       assign = _tmp905_;
+                                                                       _vala_ccode_node_unref0 (_tmp903_);
+                                                                       _tmp906_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                                       _tmp907_ = _tmp906_;
+                                                                       _tmp908_ = assign;
+                                                                       vala_ccode_function_add_expression (_tmp907_, (ValaCCodeExpression*) _tmp908_);
+                                                                       _tmp909_ = type_param;
+                                                                       _tmp910_ = vala_symbol_get_name ((ValaSymbol*) _tmp909_);
+                                                                       _tmp911_ = _tmp910_;
+                                                                       _tmp912_ = g_utf8_strdown (_tmp911_, (gssize) (-1));
+                                                                       _tmp913_ = _tmp912_;
+                                                                       _tmp914_ = g_strdup_printf ("%s_destroy_func", _tmp913_);
                                                                        _tmp915_ = _tmp914_;
-                                                                       _tmp916_ = assign;
-                                                                       vala_ccode_function_add_expression (_tmp915_, (ValaCCodeExpression*) _tmp916_);
+                                                                       _tmp916_ = vala_ccode_identifier_new (_tmp915_);
+                                                                       _vala_ccode_node_unref0 (param_name);
+                                                                       param_name = _tmp916_;
+                                                                       _g_free0 (_tmp915_);
+                                                                       _g_free0 (_tmp913_);
+                                                                       _tmp917_ = priv_access;
+                                                                       _tmp918_ = param_name;
+                                                                       _tmp919_ = vala_ccode_identifier_get_name (_tmp918_);
+                                                                       _tmp920_ = _tmp919_;
+                                                                       _tmp921_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp917_, _tmp920_);
+                                                                       _tmp922_ = _tmp921_;
+                                                                       _tmp923_ = param_name;
+                                                                       _tmp924_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp922_, (ValaCCodeExpression*) _tmp923_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
+                                                                       _vala_ccode_node_unref0 (assign);
+                                                                       assign = _tmp924_;
+                                                                       _vala_ccode_node_unref0 (_tmp922_);
+                                                                       _tmp925_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                                       _tmp926_ = _tmp925_;
+                                                                       _tmp927_ = assign;
+                                                                       vala_ccode_function_add_expression (_tmp926_, (ValaCCodeExpression*) _tmp927_);
                                                                        _vala_ccode_node_unref0 (priv_access);
                                                                        _vala_ccode_node_unref0 (assign);
                                                                        _vala_ccode_node_unref0 (param_name);
@@ -4497,1344 +4599,1344 @@ static void vala_ccode_method_module_real_visit_method (ValaCodeVisitor* base, V
                                                }
                                                _vala_code_node_unref0 (cl);
                                        } else {
-                                               ValaTypeSymbol* _tmp917_ = NULL;
-                                               ValaTypeSymbol* _tmp918_ = NULL;
-                                               _tmp917_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
-                                               _tmp918_ = _tmp917_;
-                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp918_, VALA_TYPE_CLASS)) {
+                                               ValaTypeSymbol* _tmp928_ = NULL;
+                                               ValaTypeSymbol* _tmp929_ = NULL;
+                                               _tmp928_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
+                                               _tmp929_ = _tmp928_;
+                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp929_, VALA_TYPE_CLASS)) {
                                                        ValaClass* cl = NULL;
-                                                       ValaMethod* _tmp919_ = NULL;
-                                                       ValaSymbol* _tmp920_ = NULL;
-                                                       ValaSymbol* _tmp921_ = NULL;
-                                                       ValaClass* _tmp922_ = NULL;
-                                                       ValaMethod* _tmp923_ = NULL;
-                                                       gboolean _tmp924_ = FALSE;
-                                                       gboolean _tmp925_ = FALSE;
-                                                       ValaMethod* _tmp935_ = NULL;
+                                                       ValaMethod* _tmp930_ = NULL;
+                                                       ValaSymbol* _tmp931_ = NULL;
+                                                       ValaSymbol* _tmp932_ = NULL;
+                                                       ValaClass* _tmp933_ = NULL;
+                                                       ValaMethod* _tmp934_ = NULL;
+                                                       gboolean _tmp935_ = FALSE;
                                                        gboolean _tmp936_ = FALSE;
-                                                       gboolean _tmp937_ = FALSE;
-                                                       ValaClass* _tmp953_ = NULL;
-                                                       ValaClass* _tmp954_ = NULL;
-                                                       ValaClass* _tmp955_ = NULL;
-                                                       _tmp919_ = m;
-                                                       _tmp920_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp919_);
-                                                       _tmp921_ = _tmp920_;
-                                                       _tmp922_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp921_, VALA_TYPE_CLASS, ValaClass));
-                                                       cl = _tmp922_;
-                                                       _tmp923_ = m;
-                                                       _tmp924_ = vala_method_get_coroutine (_tmp923_);
-                                                       _tmp925_ = _tmp924_;
-                                                       if (!_tmp925_) {
-                                                               ValaCCodeFunction* _tmp926_ = NULL;
-                                                               ValaCCodeFunction* _tmp927_ = NULL;
-                                                               ValaClass* _tmp928_ = NULL;
-                                                               gchar* _tmp929_ = NULL;
-                                                               gchar* _tmp930_ = NULL;
-                                                               gchar* _tmp931_ = NULL;
-                                                               gchar* _tmp932_ = NULL;
-                                                               ValaCCodeVariableDeclarator* _tmp933_ = NULL;
-                                                               ValaCCodeVariableDeclarator* _tmp934_ = NULL;
-                                                               _tmp926_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                                               _tmp927_ = _tmp926_;
-                                                               _tmp928_ = cl;
-                                                               _tmp929_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp928_);
-                                                               _tmp930_ = _tmp929_;
-                                                               _tmp931_ = g_strconcat (_tmp930_, "*", NULL);
-                                                               _tmp932_ = _tmp931_;
-                                                               _tmp933_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
-                                                               _tmp934_ = _tmp933_;
-                                                               vala_ccode_function_add_declaration (_tmp927_, _tmp932_, (ValaCCodeDeclarator*) _tmp934_, 0);
-                                                               _vala_ccode_node_unref0 (_tmp934_);
-                                                               _g_free0 (_tmp932_);
-                                                               _g_free0 (_tmp930_);
-                                                       }
-                                                       _tmp935_ = m;
-                                                       _tmp936_ = vala_creation_method_get_chain_up (G_TYPE_CHECK_INSTANCE_CAST (_tmp935_, VALA_TYPE_CREATION_METHOD, ValaCreationMethod));
-                                                       _tmp937_ = _tmp936_;
-                                                       if (!_tmp937_) {
-                                                               ValaCCodeFunctionCall* ccall = NULL;
-                                                               ValaCCodeIdentifier* _tmp938_ = NULL;
-                                                               ValaCCodeIdentifier* _tmp939_ = NULL;
-                                                               ValaCCodeFunctionCall* _tmp940_ = NULL;
-                                                               ValaCCodeFunctionCall* _tmp941_ = NULL;
-                                                               ValaCCodeFunctionCall* _tmp942_ = NULL;
-                                                               ValaClass* _tmp943_ = NULL;
-                                                               gchar* _tmp944_ = NULL;
-                                                               gchar* _tmp945_ = NULL;
-                                                               ValaCCodeIdentifier* _tmp946_ = NULL;
-                                                               ValaCCodeIdentifier* _tmp947_ = NULL;
-                                                               ValaCCodeFunction* _tmp948_ = NULL;
-                                                               ValaCCodeFunction* _tmp949_ = NULL;
-                                                               ValaCCodeExpression* _tmp950_ = NULL;
-                                                               ValaCCodeExpression* _tmp951_ = NULL;
-                                                               ValaCCodeFunctionCall* _tmp952_ = NULL;
-                                                               _tmp938_ = vala_ccode_identifier_new ("g_slice_new0");
-                                                               _tmp939_ = _tmp938_;
-                                                               _tmp940_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp939_);
+                                                       ValaMethod* _tmp946_ = NULL;
+                                                       gboolean _tmp947_ = FALSE;
+                                                       gboolean _tmp948_ = FALSE;
+                                                       ValaClass* _tmp964_ = NULL;
+                                                       ValaClass* _tmp965_ = NULL;
+                                                       ValaClass* _tmp966_ = NULL;
+                                                       _tmp930_ = m;
+                                                       _tmp931_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp930_);
+                                                       _tmp932_ = _tmp931_;
+                                                       _tmp933_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp932_, VALA_TYPE_CLASS, ValaClass));
+                                                       cl = _tmp933_;
+                                                       _tmp934_ = m;
+                                                       _tmp935_ = vala_method_get_coroutine (_tmp934_);
+                                                       _tmp936_ = _tmp935_;
+                                                       if (!_tmp936_) {
+                                                               ValaCCodeFunction* _tmp937_ = NULL;
+                                                               ValaCCodeFunction* _tmp938_ = NULL;
+                                                               ValaClass* _tmp939_ = NULL;
+                                                               gchar* _tmp940_ = NULL;
+                                                               gchar* _tmp941_ = NULL;
+                                                               gchar* _tmp942_ = NULL;
+                                                               gchar* _tmp943_ = NULL;
+                                                               ValaCCodeVariableDeclarator* _tmp944_ = NULL;
+                                                               ValaCCodeVariableDeclarator* _tmp945_ = NULL;
+                                                               _tmp937_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                               _tmp938_ = _tmp937_;
+                                                               _tmp939_ = cl;
+                                                               _tmp940_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp939_);
                                                                _tmp941_ = _tmp940_;
-                                                               _vala_ccode_node_unref0 (_tmp939_);
-                                                               ccall = _tmp941_;
-                                                               _tmp942_ = ccall;
-                                                               _tmp943_ = cl;
-                                                               _tmp944_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp943_);
+                                                               _tmp942_ = g_strconcat (_tmp941_, "*", NULL);
+                                                               _tmp943_ = _tmp942_;
+                                                               _tmp944_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
                                                                _tmp945_ = _tmp944_;
-                                                               _tmp946_ = vala_ccode_identifier_new (_tmp945_);
-                                                               _tmp947_ = _tmp946_;
-                                                               vala_ccode_function_call_add_argument (_tmp942_, (ValaCCodeExpression*) _tmp947_);
-                                                               _vala_ccode_node_unref0 (_tmp947_);
-                                                               _g_free0 (_tmp945_);
-                                                               _tmp948_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                                               _tmp949_ = _tmp948_;
-                                                               _tmp950_ = vala_ccode_base_module_get_this_cexpression ((ValaCCodeBaseModule*) self);
-                                                               _tmp951_ = _tmp950_;
-                                                               _tmp952_ = ccall;
-                                                               vala_ccode_function_add_assignment (_tmp949_, _tmp951_, (ValaCCodeExpression*) _tmp952_);
-                                                               _vala_ccode_node_unref0 (_tmp951_);
-                                                               _vala_ccode_node_unref0 (ccall);
+                                                               vala_ccode_function_add_declaration (_tmp938_, _tmp943_, (ValaCCodeDeclarator*) _tmp945_, 0);
+                                                               _vala_ccode_node_unref0 (_tmp945_);
+                                                               _g_free0 (_tmp943_);
+                                                               _g_free0 (_tmp941_);
                                                        }
-                                                       _tmp953_ = cl;
-                                                       _tmp954_ = vala_class_get_base_class (_tmp953_);
-                                                       _tmp955_ = _tmp954_;
-                                                       if (_tmp955_ == NULL) {
-                                                               ValaCCodeFunctionCall* cinitcall = NULL;
-                                                               ValaClass* _tmp956_ = NULL;
-                                                               gchar* _tmp957_ = NULL;
-                                                               gchar* _tmp958_ = NULL;
-                                                               gchar* _tmp959_ = NULL;
-                                                               gchar* _tmp960_ = NULL;
-                                                               ValaCCodeIdentifier* _tmp961_ = NULL;
-                                                               ValaCCodeIdentifier* _tmp962_ = NULL;
+                                                       _tmp946_ = m;
+                                                       _tmp947_ = vala_creation_method_get_chain_up (G_TYPE_CHECK_INSTANCE_CAST (_tmp946_, VALA_TYPE_CREATION_METHOD, ValaCreationMethod));
+                                                       _tmp948_ = _tmp947_;
+                                                       if (!_tmp948_) {
+                                                               ValaCCodeFunctionCall* ccall = NULL;
+                                                               ValaCCodeIdentifier* _tmp949_ = NULL;
+                                                               ValaCCodeIdentifier* _tmp950_ = NULL;
+                                                               ValaCCodeFunctionCall* _tmp951_ = NULL;
+                                                               ValaCCodeFunctionCall* _tmp952_ = NULL;
+                                                               ValaCCodeFunctionCall* _tmp953_ = NULL;
+                                                               ValaClass* _tmp954_ = NULL;
+                                                               gchar* _tmp955_ = NULL;
+                                                               gchar* _tmp956_ = NULL;
+                                                               ValaCCodeIdentifier* _tmp957_ = NULL;
+                                                               ValaCCodeIdentifier* _tmp958_ = NULL;
+                                                               ValaCCodeFunction* _tmp959_ = NULL;
+                                                               ValaCCodeFunction* _tmp960_ = NULL;
+                                                               ValaCCodeExpression* _tmp961_ = NULL;
+                                                               ValaCCodeExpression* _tmp962_ = NULL;
                                                                ValaCCodeFunctionCall* _tmp963_ = NULL;
-                                                               ValaCCodeFunctionCall* _tmp964_ = NULL;
-                                                               ValaCCodeFunctionCall* _tmp965_ = NULL;
-                                                               ValaCCodeExpression* _tmp966_ = NULL;
-                                                               ValaCCodeExpression* _tmp967_ = NULL;
-                                                               ValaCCodeFunction* _tmp968_ = NULL;
-                                                               ValaCCodeFunction* _tmp969_ = NULL;
-                                                               ValaCCodeFunctionCall* _tmp970_ = NULL;
-                                                               _tmp956_ = cl;
-                                                               _tmp957_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp956_, NULL);
+                                                               _tmp949_ = vala_ccode_identifier_new ("g_slice_new0");
+                                                               _tmp950_ = _tmp949_;
+                                                               _tmp951_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp950_);
+                                                               _tmp952_ = _tmp951_;
+                                                               _vala_ccode_node_unref0 (_tmp950_);
+                                                               ccall = _tmp952_;
+                                                               _tmp953_ = ccall;
+                                                               _tmp954_ = cl;
+                                                               _tmp955_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp954_);
+                                                               _tmp956_ = _tmp955_;
+                                                               _tmp957_ = vala_ccode_identifier_new (_tmp956_);
                                                                _tmp958_ = _tmp957_;
-                                                               _tmp959_ = g_strdup_printf ("%s_instance_init", _tmp958_);
+                                                               vala_ccode_function_call_add_argument (_tmp953_, (ValaCCodeExpression*) _tmp958_);
+                                                               _vala_ccode_node_unref0 (_tmp958_);
+                                                               _g_free0 (_tmp956_);
+                                                               _tmp959_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                                _tmp960_ = _tmp959_;
-                                                               _tmp961_ = vala_ccode_identifier_new (_tmp960_);
+                                                               _tmp961_ = vala_ccode_base_module_get_this_cexpression ((ValaCCodeBaseModule*) self);
                                                                _tmp962_ = _tmp961_;
-                                                               _tmp963_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp962_);
-                                                               _tmp964_ = _tmp963_;
+                                                               _tmp963_ = ccall;
+                                                               vala_ccode_function_add_assignment (_tmp960_, _tmp962_, (ValaCCodeExpression*) _tmp963_);
                                                                _vala_ccode_node_unref0 (_tmp962_);
-                                                               _g_free0 (_tmp960_);
-                                                               _g_free0 (_tmp958_);
-                                                               cinitcall = _tmp964_;
-                                                               _tmp965_ = cinitcall;
-                                                               _tmp966_ = vala_ccode_base_module_get_this_cexpression ((ValaCCodeBaseModule*) self);
-                                                               _tmp967_ = _tmp966_;
-                                                               vala_ccode_function_call_add_argument (_tmp965_, _tmp967_);
-                                                               _vala_ccode_node_unref0 (_tmp967_);
-                                                               _tmp968_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                               _vala_ccode_node_unref0 (ccall);
+                                                       }
+                                                       _tmp964_ = cl;
+                                                       _tmp965_ = vala_class_get_base_class (_tmp964_);
+                                                       _tmp966_ = _tmp965_;
+                                                       if (_tmp966_ == NULL) {
+                                                               ValaCCodeFunctionCall* cinitcall = NULL;
+                                                               ValaClass* _tmp967_ = NULL;
+                                                               gchar* _tmp968_ = NULL;
+                                                               gchar* _tmp969_ = NULL;
+                                                               gchar* _tmp970_ = NULL;
+                                                               gchar* _tmp971_ = NULL;
+                                                               ValaCCodeIdentifier* _tmp972_ = NULL;
+                                                               ValaCCodeIdentifier* _tmp973_ = NULL;
+                                                               ValaCCodeFunctionCall* _tmp974_ = NULL;
+                                                               ValaCCodeFunctionCall* _tmp975_ = NULL;
+                                                               ValaCCodeFunctionCall* _tmp976_ = NULL;
+                                                               ValaCCodeExpression* _tmp977_ = NULL;
+                                                               ValaCCodeExpression* _tmp978_ = NULL;
+                                                               ValaCCodeFunction* _tmp979_ = NULL;
+                                                               ValaCCodeFunction* _tmp980_ = NULL;
+                                                               ValaCCodeFunctionCall* _tmp981_ = NULL;
+                                                               _tmp967_ = cl;
+                                                               _tmp968_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp967_, NULL);
                                                                _tmp969_ = _tmp968_;
-                                                               _tmp970_ = cinitcall;
-                                                               vala_ccode_function_add_expression (_tmp969_, (ValaCCodeExpression*) _tmp970_);
+                                                               _tmp970_ = g_strdup_printf ("%s_instance_init", _tmp969_);
+                                                               _tmp971_ = _tmp970_;
+                                                               _tmp972_ = vala_ccode_identifier_new (_tmp971_);
+                                                               _tmp973_ = _tmp972_;
+                                                               _tmp974_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp973_);
+                                                               _tmp975_ = _tmp974_;
+                                                               _vala_ccode_node_unref0 (_tmp973_);
+                                                               _g_free0 (_tmp971_);
+                                                               _g_free0 (_tmp969_);
+                                                               cinitcall = _tmp975_;
+                                                               _tmp976_ = cinitcall;
+                                                               _tmp977_ = vala_ccode_base_module_get_this_cexpression ((ValaCCodeBaseModule*) self);
+                                                               _tmp978_ = _tmp977_;
+                                                               vala_ccode_function_call_add_argument (_tmp976_, _tmp978_);
+                                                               _vala_ccode_node_unref0 (_tmp978_);
+                                                               _tmp979_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                               _tmp980_ = _tmp979_;
+                                                               _tmp981_ = cinitcall;
+                                                               vala_ccode_function_add_expression (_tmp980_, (ValaCCodeExpression*) _tmp981_);
                                                                _vala_ccode_node_unref0 (cinitcall);
                                                        }
                                                        _vala_code_node_unref0 (cl);
                                                } else {
                                                        ValaStruct* st = NULL;
-                                                       ValaMethod* _tmp971_ = NULL;
-                                                       ValaSymbol* _tmp972_ = NULL;
-                                                       ValaSymbol* _tmp973_ = NULL;
-                                                       ValaStruct* _tmp974_ = NULL;
-                                                       ValaCCodeFile* _tmp975_ = NULL;
+                                                       ValaMethod* _tmp982_ = NULL;
+                                                       ValaSymbol* _tmp983_ = NULL;
+                                                       ValaSymbol* _tmp984_ = NULL;
+                                                       ValaStruct* _tmp985_ = NULL;
+                                                       ValaCCodeFile* _tmp986_ = NULL;
                                                        ValaCCodeFunctionCall* czero = NULL;
-                                                       ValaCCodeIdentifier* _tmp976_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp977_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp978_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp979_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp980_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp981_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp982_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp983_ = NULL;
-                                                       ValaCCodeConstant* _tmp984_ = NULL;
-                                                       ValaCCodeConstant* _tmp985_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp986_ = NULL;
-                                                       ValaStruct* _tmp987_ = NULL;
-                                                       gchar* _tmp988_ = NULL;
-                                                       gchar* _tmp989_ = NULL;
-                                                       gchar* _tmp990_ = NULL;
-                                                       gchar* _tmp991_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp987_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp988_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp989_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp990_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp991_ = NULL;
                                                        ValaCCodeIdentifier* _tmp992_ = NULL;
                                                        ValaCCodeIdentifier* _tmp993_ = NULL;
-                                                       ValaCCodeFunction* _tmp994_ = NULL;
-                                                       ValaCCodeFunction* _tmp995_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp996_ = NULL;
-                                                       _tmp971_ = m;
-                                                       _tmp972_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp971_);
-                                                       _tmp973_ = _tmp972_;
-                                                       _tmp974_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp973_, VALA_TYPE_STRUCT, ValaStruct));
-                                                       st = _tmp974_;
-                                                       _tmp975_ = ((ValaCCodeBaseModule*) self)->cfile;
-                                                       vala_ccode_file_add_include (_tmp975_, "string.h", FALSE);
-                                                       _tmp976_ = vala_ccode_identifier_new ("memset");
-                                                       _tmp977_ = _tmp976_;
-                                                       _tmp978_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp977_);
-                                                       _tmp979_ = _tmp978_;
-                                                       _vala_ccode_node_unref0 (_tmp977_);
-                                                       czero = _tmp979_;
-                                                       _tmp980_ = czero;
-                                                       _tmp981_ = vala_ccode_identifier_new ("self");
-                                                       _tmp982_ = _tmp981_;
-                                                       vala_ccode_function_call_add_argument (_tmp980_, (ValaCCodeExpression*) _tmp982_);
-                                                       _vala_ccode_node_unref0 (_tmp982_);
-                                                       _tmp983_ = czero;
-                                                       _tmp984_ = vala_ccode_constant_new ("0");
-                                                       _tmp985_ = _tmp984_;
-                                                       vala_ccode_function_call_add_argument (_tmp983_, (ValaCCodeExpression*) _tmp985_);
-                                                       _vala_ccode_node_unref0 (_tmp985_);
-                                                       _tmp986_ = czero;
-                                                       _tmp987_ = st;
-                                                       _tmp988_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp987_);
-                                                       _tmp989_ = _tmp988_;
-                                                       _tmp990_ = g_strdup_printf ("sizeof (%s)", _tmp989_);
-                                                       _tmp991_ = _tmp990_;
-                                                       _tmp992_ = vala_ccode_identifier_new (_tmp991_);
+                                                       ValaCCodeFunctionCall* _tmp994_ = NULL;
+                                                       ValaCCodeConstant* _tmp995_ = NULL;
+                                                       ValaCCodeConstant* _tmp996_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp997_ = NULL;
+                                                       ValaStruct* _tmp998_ = NULL;
+                                                       gchar* _tmp999_ = NULL;
+                                                       gchar* _tmp1000_ = NULL;
+                                                       gchar* _tmp1001_ = NULL;
+                                                       gchar* _tmp1002_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp1003_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp1004_ = NULL;
+                                                       ValaCCodeFunction* _tmp1005_ = NULL;
+                                                       ValaCCodeFunction* _tmp1006_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp1007_ = NULL;
+                                                       _tmp982_ = m;
+                                                       _tmp983_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp982_);
+                                                       _tmp984_ = _tmp983_;
+                                                       _tmp985_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp984_, VALA_TYPE_STRUCT, ValaStruct));
+                                                       st = _tmp985_;
+                                                       _tmp986_ = ((ValaCCodeBaseModule*) self)->cfile;
+                                                       vala_ccode_file_add_include (_tmp986_, "string.h", FALSE);
+                                                       _tmp987_ = vala_ccode_identifier_new ("memset");
+                                                       _tmp988_ = _tmp987_;
+                                                       _tmp989_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp988_);
+                                                       _tmp990_ = _tmp989_;
+                                                       _vala_ccode_node_unref0 (_tmp988_);
+                                                       czero = _tmp990_;
+                                                       _tmp991_ = czero;
+                                                       _tmp992_ = vala_ccode_identifier_new ("self");
                                                        _tmp993_ = _tmp992_;
-                                                       vala_ccode_function_call_add_argument (_tmp986_, (ValaCCodeExpression*) _tmp993_);
+                                                       vala_ccode_function_call_add_argument (_tmp991_, (ValaCCodeExpression*) _tmp993_);
                                                        _vala_ccode_node_unref0 (_tmp993_);
-                                                       _g_free0 (_tmp991_);
-                                                       _g_free0 (_tmp989_);
-                                                       _tmp994_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                                       _tmp995_ = _tmp994_;
-                                                       _tmp996_ = czero;
-                                                       vala_ccode_function_add_expression (_tmp995_, (ValaCCodeExpression*) _tmp996_);
+                                                       _tmp994_ = czero;
+                                                       _tmp995_ = vala_ccode_constant_new ("0");
+                                                       _tmp996_ = _tmp995_;
+                                                       vala_ccode_function_call_add_argument (_tmp994_, (ValaCCodeExpression*) _tmp996_);
+                                                       _vala_ccode_node_unref0 (_tmp996_);
+                                                       _tmp997_ = czero;
+                                                       _tmp998_ = st;
+                                                       _tmp999_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp998_);
+                                                       _tmp1000_ = _tmp999_;
+                                                       _tmp1001_ = g_strdup_printf ("sizeof (%s)", _tmp1000_);
+                                                       _tmp1002_ = _tmp1001_;
+                                                       _tmp1003_ = vala_ccode_identifier_new (_tmp1002_);
+                                                       _tmp1004_ = _tmp1003_;
+                                                       vala_ccode_function_call_add_argument (_tmp997_, (ValaCCodeExpression*) _tmp1004_);
+                                                       _vala_ccode_node_unref0 (_tmp1004_);
+                                                       _g_free0 (_tmp1002_);
+                                                       _g_free0 (_tmp1000_);
+                                                       _tmp1005_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                       _tmp1006_ = _tmp1005_;
+                                                       _tmp1007_ = czero;
+                                                       vala_ccode_function_add_expression (_tmp1006_, (ValaCCodeExpression*) _tmp1007_);
                                                        _vala_ccode_node_unref0 (czero);
                                                        _vala_code_node_unref0 (st);
                                                }
                                        }
                                }
                        }
-                       _tmp998_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-                       _tmp999_ = _tmp998_;
-                       _tmp1000_ = vala_code_context_get_module_init_method (_tmp999_);
-                       _tmp1001_ = _tmp1000_;
-                       _tmp1002_ = m;
-                       if (_tmp1001_ == _tmp1002_) {
-                               gboolean _tmp1003_ = FALSE;
-                               _tmp1003_ = ((ValaCCodeBaseModule*) self)->in_plugin;
-                               _tmp997_ = _tmp1003_;
+                       _tmp1009_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp1010_ = _tmp1009_;
+                       _tmp1011_ = vala_code_context_get_module_init_method (_tmp1010_);
+                       _tmp1012_ = _tmp1011_;
+                       _tmp1013_ = m;
+                       if (_tmp1012_ == _tmp1013_) {
+                               gboolean _tmp1014_ = FALSE;
+                               _tmp1014_ = ((ValaCCodeBaseModule*) self)->in_plugin;
+                               _tmp1008_ = _tmp1014_;
                        } else {
-                               _tmp997_ = FALSE;
+                               _tmp1008_ = FALSE;
                        }
-                       if (_tmp997_) {
-                               ValaCodeContext* _tmp1004_ = NULL;
-                               ValaCodeContext* _tmp1005_ = NULL;
-                               ValaNamespace* _tmp1006_ = NULL;
-                               ValaNamespace* _tmp1007_ = NULL;
-                               GHashFunc _tmp1008_ = NULL;
-                               GEqualFunc _tmp1009_ = NULL;
-                               ValaHashSet* _tmp1010_ = NULL;
-                               ValaHashSet* _tmp1011_ = NULL;
-                               _tmp1004_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-                               _tmp1005_ = _tmp1004_;
-                               _tmp1006_ = vala_code_context_get_root (_tmp1005_);
-                               _tmp1007_ = _tmp1006_;
-                               _tmp1008_ = g_direct_hash;
-                               _tmp1009_ = g_direct_equal;
-                               _tmp1010_ = vala_hash_set_new (VALA_TYPE_SYMBOL, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp1008_, _tmp1009_);
-                               _tmp1011_ = _tmp1010_;
-                               vala_ccode_method_module_register_plugin_types (self, (ValaSymbol*) _tmp1007_, (ValaSet*) _tmp1011_);
-                               _vala_iterable_unref0 (_tmp1011_);
+                       if (_tmp1008_) {
+                               ValaCodeContext* _tmp1015_ = NULL;
+                               ValaCodeContext* _tmp1016_ = NULL;
+                               ValaNamespace* _tmp1017_ = NULL;
+                               ValaNamespace* _tmp1018_ = NULL;
+                               GHashFunc _tmp1019_ = NULL;
+                               GEqualFunc _tmp1020_ = NULL;
+                               ValaHashSet* _tmp1021_ = NULL;
+                               ValaHashSet* _tmp1022_ = NULL;
+                               _tmp1015_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                               _tmp1016_ = _tmp1015_;
+                               _tmp1017_ = vala_code_context_get_root (_tmp1016_);
+                               _tmp1018_ = _tmp1017_;
+                               _tmp1019_ = g_direct_hash;
+                               _tmp1020_ = g_direct_equal;
+                               _tmp1021_ = vala_hash_set_new (VALA_TYPE_SYMBOL, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp1019_, _tmp1020_);
+                               _tmp1022_ = _tmp1021_;
+                               vala_ccode_method_module_register_plugin_types (self, (ValaSymbol*) _tmp1018_, (ValaSet*) _tmp1022_);
+                               _vala_iterable_unref0 (_tmp1022_);
                        }
                        {
                                ValaList* _precondition_list = NULL;
-                               ValaMethod* _tmp1012_ = NULL;
-                               ValaList* _tmp1013_ = NULL;
+                               ValaMethod* _tmp1023_ = NULL;
+                               ValaList* _tmp1024_ = NULL;
                                gint _precondition_size = 0;
-                               ValaList* _tmp1014_ = NULL;
-                               gint _tmp1015_ = 0;
-                               gint _tmp1016_ = 0;
+                               ValaList* _tmp1025_ = NULL;
+                               gint _tmp1026_ = 0;
+                               gint _tmp1027_ = 0;
                                gint _precondition_index = 0;
-                               _tmp1012_ = m;
-                               _tmp1013_ = vala_method_get_preconditions (_tmp1012_);
-                               _precondition_list = _tmp1013_;
-                               _tmp1014_ = _precondition_list;
-                               _tmp1015_ = vala_collection_get_size ((ValaCollection*) _tmp1014_);
-                               _tmp1016_ = _tmp1015_;
-                               _precondition_size = _tmp1016_;
+                               _tmp1023_ = m;
+                               _tmp1024_ = vala_method_get_preconditions (_tmp1023_);
+                               _precondition_list = _tmp1024_;
+                               _tmp1025_ = _precondition_list;
+                               _tmp1026_ = vala_collection_get_size ((ValaCollection*) _tmp1025_);
+                               _tmp1027_ = _tmp1026_;
+                               _precondition_size = _tmp1027_;
                                _precondition_index = -1;
                                while (TRUE) {
-                                       gint _tmp1017_ = 0;
-                                       gint _tmp1018_ = 0;
-                                       gint _tmp1019_ = 0;
+                                       gint _tmp1028_ = 0;
+                                       gint _tmp1029_ = 0;
+                                       gint _tmp1030_ = 0;
                                        ValaExpression* precondition = NULL;
-                                       ValaList* _tmp1020_ = NULL;
-                                       gint _tmp1021_ = 0;
-                                       gpointer _tmp1022_ = NULL;
-                                       ValaMethod* _tmp1023_ = NULL;
-                                       ValaDataType* _tmp1024_ = NULL;
-                                       ValaExpression* _tmp1025_ = NULL;
-                                       _tmp1017_ = _precondition_index;
-                                       _precondition_index = _tmp1017_ + 1;
-                                       _tmp1018_ = _precondition_index;
-                                       _tmp1019_ = _precondition_size;
-                                       if (!(_tmp1018_ < _tmp1019_)) {
+                                       ValaList* _tmp1031_ = NULL;
+                                       gint _tmp1032_ = 0;
+                                       gpointer _tmp1033_ = NULL;
+                                       ValaMethod* _tmp1034_ = NULL;
+                                       ValaDataType* _tmp1035_ = NULL;
+                                       ValaExpression* _tmp1036_ = NULL;
+                                       _tmp1028_ = _precondition_index;
+                                       _precondition_index = _tmp1028_ + 1;
+                                       _tmp1029_ = _precondition_index;
+                                       _tmp1030_ = _precondition_size;
+                                       if (!(_tmp1029_ < _tmp1030_)) {
                                                break;
                                        }
-                                       _tmp1020_ = _precondition_list;
-                                       _tmp1021_ = _precondition_index;
-                                       _tmp1022_ = vala_list_get (_tmp1020_, _tmp1021_);
-                                       precondition = (ValaExpression*) _tmp1022_;
-                                       _tmp1023_ = m;
-                                       _tmp1024_ = creturn_type;
-                                       _tmp1025_ = precondition;
-                                       vala_ccode_method_module_create_precondition_statement (self, (ValaCodeNode*) _tmp1023_, _tmp1024_, _tmp1025_);
+                                       _tmp1031_ = _precondition_list;
+                                       _tmp1032_ = _precondition_index;
+                                       _tmp1033_ = vala_list_get (_tmp1031_, _tmp1032_);
+                                       precondition = (ValaExpression*) _tmp1033_;
+                                       _tmp1034_ = m;
+                                       _tmp1035_ = creturn_type;
+                                       _tmp1036_ = precondition;
+                                       vala_ccode_method_module_create_precondition_statement (self, (ValaCodeNode*) _tmp1034_, _tmp1035_, _tmp1036_);
                                        _vala_code_node_unref0 (precondition);
                                }
                                _vala_iterable_unref0 (_precondition_list);
                        }
                }
        }
-       _tmp1026_ = profile;
-       if (_tmp1026_) {
+       _tmp1037_ = profile;
+       if (_tmp1037_) {
                gchar* prefix = NULL;
-               const gchar* _tmp1027_ = NULL;
-               gchar* _tmp1028_ = NULL;
+               const gchar* _tmp1038_ = NULL;
+               gchar* _tmp1039_ = NULL;
                ValaCCodeIdentifier* level = NULL;
-               const gchar* _tmp1029_ = NULL;
-               gchar* _tmp1030_ = NULL;
-               gchar* _tmp1031_ = NULL;
-               ValaCCodeIdentifier* _tmp1032_ = NULL;
-               ValaCCodeIdentifier* _tmp1033_ = NULL;
-               ValaCCodeFunction* _tmp1034_ = NULL;
-               ValaCCodeFunction* _tmp1035_ = NULL;
-               ValaCCodeIdentifier* _tmp1036_ = NULL;
-               ValaCCodeUnaryExpression* _tmp1037_ = NULL;
-               ValaCCodeUnaryExpression* _tmp1038_ = NULL;
-               ValaCCodeUnaryExpression* _tmp1039_ = NULL;
-               ValaCCodeUnaryExpression* _tmp1040_ = NULL;
-               ValaCCodeIdentifier* counter = NULL;
-               const gchar* _tmp1041_ = NULL;
+               const gchar* _tmp1040_ = NULL;
+               gchar* _tmp1041_ = NULL;
                gchar* _tmp1042_ = NULL;
-               gchar* _tmp1043_ = NULL;
+               ValaCCodeIdentifier* _tmp1043_ = NULL;
                ValaCCodeIdentifier* _tmp1044_ = NULL;
-               ValaCCodeIdentifier* _tmp1045_ = NULL;
+               ValaCCodeFunction* _tmp1045_ = NULL;
                ValaCCodeFunction* _tmp1046_ = NULL;
-               ValaCCodeFunction* _tmp1047_ = NULL;
-               ValaCCodeIdentifier* _tmp1048_ = NULL;
+               ValaCCodeIdentifier* _tmp1047_ = NULL;
+               ValaCCodeUnaryExpression* _tmp1048_ = NULL;
                ValaCCodeUnaryExpression* _tmp1049_ = NULL;
                ValaCCodeUnaryExpression* _tmp1050_ = NULL;
-               ValaCCodeIdentifier* timer = NULL;
-               const gchar* _tmp1051_ = NULL;
-               gchar* _tmp1052_ = NULL;
+               ValaCCodeUnaryExpression* _tmp1051_ = NULL;
+               ValaCCodeIdentifier* counter = NULL;
+               const gchar* _tmp1052_ = NULL;
                gchar* _tmp1053_ = NULL;
-               ValaCCodeIdentifier* _tmp1054_ = NULL;
+               gchar* _tmp1054_ = NULL;
                ValaCCodeIdentifier* _tmp1055_ = NULL;
-               ValaCCodeFunctionCall* cont_call = NULL;
                ValaCCodeIdentifier* _tmp1056_ = NULL;
-               ValaCCodeIdentifier* _tmp1057_ = NULL;
-               ValaCCodeFunctionCall* _tmp1058_ = NULL;
-               ValaCCodeFunctionCall* _tmp1059_ = NULL;
-               ValaCCodeFunctionCall* _tmp1060_ = NULL;
-               ValaCCodeIdentifier* _tmp1061_ = NULL;
-               ValaCCodeFunction* _tmp1062_ = NULL;
-               ValaCCodeFunction* _tmp1063_ = NULL;
-               ValaCCodeFunctionCall* _tmp1064_ = NULL;
-               ValaCCodeFunction* _tmp1065_ = NULL;
-               ValaCCodeFunction* _tmp1066_ = NULL;
-               _tmp1027_ = real_name;
-               _tmp1028_ = g_strdup_printf ("_vala_prof_%s", _tmp1027_);
-               prefix = _tmp1028_;
-               _tmp1029_ = prefix;
-               _tmp1030_ = g_strconcat (_tmp1029_, "_level", NULL);
-               _tmp1031_ = _tmp1030_;
-               _tmp1032_ = vala_ccode_identifier_new (_tmp1031_);
-               _tmp1033_ = _tmp1032_;
-               _g_free0 (_tmp1031_);
-               level = _tmp1033_;
-               _tmp1034_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp1035_ = _tmp1034_;
-               _tmp1036_ = level;
-               _tmp1037_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, (ValaCCodeExpression*) _tmp1036_);
-               _tmp1038_ = _tmp1037_;
-               _tmp1039_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp1038_);
-               _tmp1040_ = _tmp1039_;
-               vala_ccode_function_open_if (_tmp1035_, (ValaCCodeExpression*) _tmp1040_);
-               _vala_ccode_node_unref0 (_tmp1040_);
-               _vala_ccode_node_unref0 (_tmp1038_);
-               _tmp1041_ = prefix;
-               _tmp1042_ = g_strconcat (_tmp1041_, "_counter", NULL);
-               _tmp1043_ = _tmp1042_;
-               _tmp1044_ = vala_ccode_identifier_new (_tmp1043_);
-               _tmp1045_ = _tmp1044_;
-               _g_free0 (_tmp1043_);
-               counter = _tmp1045_;
-               _tmp1046_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp1047_ = _tmp1046_;
-               _tmp1048_ = counter;
-               _tmp1049_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, (ValaCCodeExpression*) _tmp1048_);
-               _tmp1050_ = _tmp1049_;
-               vala_ccode_function_add_expression (_tmp1047_, (ValaCCodeExpression*) _tmp1050_);
-               _vala_ccode_node_unref0 (_tmp1050_);
-               _tmp1051_ = prefix;
-               _tmp1052_ = g_strconcat (_tmp1051_, "_timer", NULL);
-               _tmp1053_ = _tmp1052_;
-               _tmp1054_ = vala_ccode_identifier_new (_tmp1053_);
-               _tmp1055_ = _tmp1054_;
-               _g_free0 (_tmp1053_);
-               timer = _tmp1055_;
-               _tmp1056_ = vala_ccode_identifier_new ("g_timer_continue");
-               _tmp1057_ = _tmp1056_;
-               _tmp1058_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1057_);
-               _tmp1059_ = _tmp1058_;
-               _vala_ccode_node_unref0 (_tmp1057_);
-               cont_call = _tmp1059_;
-               _tmp1060_ = cont_call;
-               _tmp1061_ = timer;
-               vala_ccode_function_call_add_argument (_tmp1060_, (ValaCCodeExpression*) _tmp1061_);
-               _tmp1062_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp1063_ = _tmp1062_;
-               _tmp1064_ = cont_call;
-               vala_ccode_function_add_expression (_tmp1063_, (ValaCCodeExpression*) _tmp1064_);
-               _tmp1065_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               ValaCCodeFunction* _tmp1057_ = NULL;
+               ValaCCodeFunction* _tmp1058_ = NULL;
+               ValaCCodeIdentifier* _tmp1059_ = NULL;
+               ValaCCodeUnaryExpression* _tmp1060_ = NULL;
+               ValaCCodeUnaryExpression* _tmp1061_ = NULL;
+               ValaCCodeIdentifier* timer = NULL;
+               const gchar* _tmp1062_ = NULL;
+               gchar* _tmp1063_ = NULL;
+               gchar* _tmp1064_ = NULL;
+               ValaCCodeIdentifier* _tmp1065_ = NULL;
+               ValaCCodeIdentifier* _tmp1066_ = NULL;
+               ValaCCodeFunctionCall* cont_call = NULL;
+               ValaCCodeIdentifier* _tmp1067_ = NULL;
+               ValaCCodeIdentifier* _tmp1068_ = NULL;
+               ValaCCodeFunctionCall* _tmp1069_ = NULL;
+               ValaCCodeFunctionCall* _tmp1070_ = NULL;
+               ValaCCodeFunctionCall* _tmp1071_ = NULL;
+               ValaCCodeIdentifier* _tmp1072_ = NULL;
+               ValaCCodeFunction* _tmp1073_ = NULL;
+               ValaCCodeFunction* _tmp1074_ = NULL;
+               ValaCCodeFunctionCall* _tmp1075_ = NULL;
+               ValaCCodeFunction* _tmp1076_ = NULL;
+               ValaCCodeFunction* _tmp1077_ = NULL;
+               _tmp1038_ = real_name;
+               _tmp1039_ = g_strdup_printf ("_vala_prof_%s", _tmp1038_);
+               prefix = _tmp1039_;
+               _tmp1040_ = prefix;
+               _tmp1041_ = g_strconcat (_tmp1040_, "_level", NULL);
+               _tmp1042_ = _tmp1041_;
+               _tmp1043_ = vala_ccode_identifier_new (_tmp1042_);
+               _tmp1044_ = _tmp1043_;
+               _g_free0 (_tmp1042_);
+               level = _tmp1044_;
+               _tmp1045_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp1046_ = _tmp1045_;
+               _tmp1047_ = level;
+               _tmp1048_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, (ValaCCodeExpression*) _tmp1047_);
+               _tmp1049_ = _tmp1048_;
+               _tmp1050_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp1049_);
+               _tmp1051_ = _tmp1050_;
+               vala_ccode_function_open_if (_tmp1046_, (ValaCCodeExpression*) _tmp1051_);
+               _vala_ccode_node_unref0 (_tmp1051_);
+               _vala_ccode_node_unref0 (_tmp1049_);
+               _tmp1052_ = prefix;
+               _tmp1053_ = g_strconcat (_tmp1052_, "_counter", NULL);
+               _tmp1054_ = _tmp1053_;
+               _tmp1055_ = vala_ccode_identifier_new (_tmp1054_);
+               _tmp1056_ = _tmp1055_;
+               _g_free0 (_tmp1054_);
+               counter = _tmp1056_;
+               _tmp1057_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp1058_ = _tmp1057_;
+               _tmp1059_ = counter;
+               _tmp1060_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POSTFIX_INCREMENT, (ValaCCodeExpression*) _tmp1059_);
+               _tmp1061_ = _tmp1060_;
+               vala_ccode_function_add_expression (_tmp1058_, (ValaCCodeExpression*) _tmp1061_);
+               _vala_ccode_node_unref0 (_tmp1061_);
+               _tmp1062_ = prefix;
+               _tmp1063_ = g_strconcat (_tmp1062_, "_timer", NULL);
+               _tmp1064_ = _tmp1063_;
+               _tmp1065_ = vala_ccode_identifier_new (_tmp1064_);
                _tmp1066_ = _tmp1065_;
-               vala_ccode_function_close (_tmp1066_);
+               _g_free0 (_tmp1064_);
+               timer = _tmp1066_;
+               _tmp1067_ = vala_ccode_identifier_new ("g_timer_continue");
+               _tmp1068_ = _tmp1067_;
+               _tmp1069_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1068_);
+               _tmp1070_ = _tmp1069_;
+               _vala_ccode_node_unref0 (_tmp1068_);
+               cont_call = _tmp1070_;
+               _tmp1071_ = cont_call;
+               _tmp1072_ = timer;
+               vala_ccode_function_call_add_argument (_tmp1071_, (ValaCCodeExpression*) _tmp1072_);
+               _tmp1073_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp1074_ = _tmp1073_;
+               _tmp1075_ = cont_call;
+               vala_ccode_function_add_expression (_tmp1074_, (ValaCCodeExpression*) _tmp1075_);
+               _tmp1076_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp1077_ = _tmp1076_;
+               vala_ccode_function_close (_tmp1077_);
                _vala_ccode_node_unref0 (cont_call);
                _vala_ccode_node_unref0 (timer);
                _vala_ccode_node_unref0 (counter);
                _vala_ccode_node_unref0 (level);
                _g_free0 (prefix);
        }
-       _tmp1067_ = m;
-       _tmp1068_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp1067_);
-       _tmp1069_ = _tmp1068_;
-       if (_tmp1069_ != NULL) {
-               ValaMethod* _tmp1070_ = NULL;
-               ValaBlock* _tmp1071_ = NULL;
-               ValaBlock* _tmp1072_ = NULL;
-               _tmp1070_ = m;
-               _tmp1071_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp1070_);
-               _tmp1072_ = _tmp1071_;
-               vala_code_node_emit ((ValaCodeNode*) _tmp1072_, (ValaCodeGenerator*) self);
+       _tmp1078_ = m;
+       _tmp1079_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp1078_);
+       _tmp1080_ = _tmp1079_;
+       if (_tmp1080_ != NULL) {
+               ValaMethod* _tmp1081_ = NULL;
+               ValaBlock* _tmp1082_ = NULL;
+               ValaBlock* _tmp1083_ = NULL;
+               _tmp1081_ = m;
+               _tmp1082_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp1081_);
+               _tmp1083_ = _tmp1082_;
+               vala_code_node_emit ((ValaCodeNode*) _tmp1083_, (ValaCodeGenerator*) self);
        }
-       _tmp1073_ = profile;
-       if (_tmp1073_) {
+       _tmp1084_ = profile;
+       if (_tmp1084_) {
                gchar* prefix = NULL;
-               const gchar* _tmp1074_ = NULL;
-               gchar* _tmp1075_ = NULL;
+               const gchar* _tmp1085_ = NULL;
+               gchar* _tmp1086_ = NULL;
                ValaCCodeIdentifier* level = NULL;
-               const gchar* _tmp1076_ = NULL;
-               gchar* _tmp1077_ = NULL;
-               gchar* _tmp1078_ = NULL;
-               ValaCCodeIdentifier* _tmp1079_ = NULL;
-               ValaCCodeIdentifier* _tmp1080_ = NULL;
-               ValaCCodeFunction* _tmp1081_ = NULL;
-               ValaCCodeFunction* _tmp1082_ = NULL;
-               ValaCCodeIdentifier* _tmp1083_ = NULL;
-               ValaCCodeUnaryExpression* _tmp1084_ = NULL;
-               ValaCCodeUnaryExpression* _tmp1085_ = NULL;
-               ValaCCodeUnaryExpression* _tmp1086_ = NULL;
-               ValaCCodeUnaryExpression* _tmp1087_ = NULL;
-               ValaCCodeIdentifier* timer = NULL;
-               const gchar* _tmp1088_ = NULL;
+               const gchar* _tmp1087_ = NULL;
+               gchar* _tmp1088_ = NULL;
                gchar* _tmp1089_ = NULL;
-               gchar* _tmp1090_ = NULL;
+               ValaCCodeIdentifier* _tmp1090_ = NULL;
                ValaCCodeIdentifier* _tmp1091_ = NULL;
-               ValaCCodeIdentifier* _tmp1092_ = NULL;
-               ValaCCodeFunctionCall* stop_call = NULL;
-               ValaCCodeIdentifier* _tmp1093_ = NULL;
+               ValaCCodeFunction* _tmp1092_ = NULL;
+               ValaCCodeFunction* _tmp1093_ = NULL;
                ValaCCodeIdentifier* _tmp1094_ = NULL;
-               ValaCCodeFunctionCall* _tmp1095_ = NULL;
-               ValaCCodeFunctionCall* _tmp1096_ = NULL;
-               ValaCCodeFunctionCall* _tmp1097_ = NULL;
-               ValaCCodeIdentifier* _tmp1098_ = NULL;
-               ValaCCodeFunction* _tmp1099_ = NULL;
-               ValaCCodeFunction* _tmp1100_ = NULL;
-               ValaCCodeFunctionCall* _tmp1101_ = NULL;
-               ValaCCodeFunction* _tmp1102_ = NULL;
-               ValaCCodeFunction* _tmp1103_ = NULL;
-               _tmp1074_ = real_name;
-               _tmp1075_ = g_strdup_printf ("_vala_prof_%s", _tmp1074_);
-               prefix = _tmp1075_;
-               _tmp1076_ = prefix;
-               _tmp1077_ = g_strconcat (_tmp1076_, "_level", NULL);
-               _tmp1078_ = _tmp1077_;
-               _tmp1079_ = vala_ccode_identifier_new (_tmp1078_);
-               _tmp1080_ = _tmp1079_;
-               _g_free0 (_tmp1078_);
-               level = _tmp1080_;
-               _tmp1081_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp1082_ = _tmp1081_;
-               _tmp1083_ = level;
-               _tmp1084_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT, (ValaCCodeExpression*) _tmp1083_);
-               _tmp1085_ = _tmp1084_;
-               _tmp1086_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp1085_);
-               _tmp1087_ = _tmp1086_;
-               vala_ccode_function_open_if (_tmp1082_, (ValaCCodeExpression*) _tmp1087_);
-               _vala_ccode_node_unref0 (_tmp1087_);
-               _vala_ccode_node_unref0 (_tmp1085_);
-               _tmp1088_ = prefix;
-               _tmp1089_ = g_strconcat (_tmp1088_, "_timer", NULL);
-               _tmp1090_ = _tmp1089_;
-               _tmp1091_ = vala_ccode_identifier_new (_tmp1090_);
-               _tmp1092_ = _tmp1091_;
-               _g_free0 (_tmp1090_);
-               timer = _tmp1092_;
-               _tmp1093_ = vala_ccode_identifier_new ("g_timer_stop");
-               _tmp1094_ = _tmp1093_;
-               _tmp1095_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1094_);
+               ValaCCodeUnaryExpression* _tmp1095_ = NULL;
+               ValaCCodeUnaryExpression* _tmp1096_ = NULL;
+               ValaCCodeUnaryExpression* _tmp1097_ = NULL;
+               ValaCCodeUnaryExpression* _tmp1098_ = NULL;
+               ValaCCodeIdentifier* timer = NULL;
+               const gchar* _tmp1099_ = NULL;
+               gchar* _tmp1100_ = NULL;
+               gchar* _tmp1101_ = NULL;
+               ValaCCodeIdentifier* _tmp1102_ = NULL;
+               ValaCCodeIdentifier* _tmp1103_ = NULL;
+               ValaCCodeFunctionCall* stop_call = NULL;
+               ValaCCodeIdentifier* _tmp1104_ = NULL;
+               ValaCCodeIdentifier* _tmp1105_ = NULL;
+               ValaCCodeFunctionCall* _tmp1106_ = NULL;
+               ValaCCodeFunctionCall* _tmp1107_ = NULL;
+               ValaCCodeFunctionCall* _tmp1108_ = NULL;
+               ValaCCodeIdentifier* _tmp1109_ = NULL;
+               ValaCCodeFunction* _tmp1110_ = NULL;
+               ValaCCodeFunction* _tmp1111_ = NULL;
+               ValaCCodeFunctionCall* _tmp1112_ = NULL;
+               ValaCCodeFunction* _tmp1113_ = NULL;
+               ValaCCodeFunction* _tmp1114_ = NULL;
+               _tmp1085_ = real_name;
+               _tmp1086_ = g_strdup_printf ("_vala_prof_%s", _tmp1085_);
+               prefix = _tmp1086_;
+               _tmp1087_ = prefix;
+               _tmp1088_ = g_strconcat (_tmp1087_, "_level", NULL);
+               _tmp1089_ = _tmp1088_;
+               _tmp1090_ = vala_ccode_identifier_new (_tmp1089_);
+               _tmp1091_ = _tmp1090_;
+               _g_free0 (_tmp1089_);
+               level = _tmp1091_;
+               _tmp1092_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp1093_ = _tmp1092_;
+               _tmp1094_ = level;
+               _tmp1095_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT, (ValaCCodeExpression*) _tmp1094_);
                _tmp1096_ = _tmp1095_;
-               _vala_ccode_node_unref0 (_tmp1094_);
-               stop_call = _tmp1096_;
-               _tmp1097_ = stop_call;
-               _tmp1098_ = timer;
-               vala_ccode_function_call_add_argument (_tmp1097_, (ValaCCodeExpression*) _tmp1098_);
-               _tmp1099_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp1100_ = _tmp1099_;
-               _tmp1101_ = stop_call;
-               vala_ccode_function_add_expression (_tmp1100_, (ValaCCodeExpression*) _tmp1101_);
-               _tmp1102_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp1097_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp1096_);
+               _tmp1098_ = _tmp1097_;
+               vala_ccode_function_open_if (_tmp1093_, (ValaCCodeExpression*) _tmp1098_);
+               _vala_ccode_node_unref0 (_tmp1098_);
+               _vala_ccode_node_unref0 (_tmp1096_);
+               _tmp1099_ = prefix;
+               _tmp1100_ = g_strconcat (_tmp1099_, "_timer", NULL);
+               _tmp1101_ = _tmp1100_;
+               _tmp1102_ = vala_ccode_identifier_new (_tmp1101_);
                _tmp1103_ = _tmp1102_;
-               vala_ccode_function_close (_tmp1103_);
+               _g_free0 (_tmp1101_);
+               timer = _tmp1103_;
+               _tmp1104_ = vala_ccode_identifier_new ("g_timer_stop");
+               _tmp1105_ = _tmp1104_;
+               _tmp1106_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1105_);
+               _tmp1107_ = _tmp1106_;
+               _vala_ccode_node_unref0 (_tmp1105_);
+               stop_call = _tmp1107_;
+               _tmp1108_ = stop_call;
+               _tmp1109_ = timer;
+               vala_ccode_function_call_add_argument (_tmp1108_, (ValaCCodeExpression*) _tmp1109_);
+               _tmp1110_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp1111_ = _tmp1110_;
+               _tmp1112_ = stop_call;
+               vala_ccode_function_add_expression (_tmp1111_, (ValaCCodeExpression*) _tmp1112_);
+               _tmp1113_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp1114_ = _tmp1113_;
+               vala_ccode_function_close (_tmp1114_);
                _vala_ccode_node_unref0 (stop_call);
                _vala_ccode_node_unref0 (timer);
                _vala_ccode_node_unref0 (level);
                _g_free0 (prefix);
        }
-       _tmp1105_ = m;
-       _tmp1106_ = vala_method_get_is_abstract (_tmp1105_);
-       _tmp1107_ = _tmp1106_;
-       if (!_tmp1107_) {
-               _tmp1104_ = TRUE;
+       _tmp1116_ = m;
+       _tmp1117_ = vala_method_get_is_abstract (_tmp1116_);
+       _tmp1118_ = _tmp1117_;
+       if (!_tmp1118_) {
+               _tmp1115_ = TRUE;
        } else {
-               gboolean _tmp1108_ = FALSE;
-               ValaMethod* _tmp1109_ = NULL;
-               gboolean _tmp1110_ = FALSE;
-               gboolean _tmp1111_ = FALSE;
-               _tmp1109_ = m;
-               _tmp1110_ = vala_method_get_is_abstract (_tmp1109_);
-               _tmp1111_ = _tmp1110_;
-               if (_tmp1111_) {
-                       ValaTypeSymbol* _tmp1112_ = NULL;
-                       ValaTypeSymbol* _tmp1113_ = NULL;
-                       _tmp1112_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
-                       _tmp1113_ = _tmp1112_;
-                       _tmp1108_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1113_, VALA_TYPE_CLASS);
+               gboolean _tmp1119_ = FALSE;
+               ValaMethod* _tmp1120_ = NULL;
+               gboolean _tmp1121_ = FALSE;
+               gboolean _tmp1122_ = FALSE;
+               _tmp1120_ = m;
+               _tmp1121_ = vala_method_get_is_abstract (_tmp1120_);
+               _tmp1122_ = _tmp1121_;
+               if (_tmp1122_) {
+                       ValaTypeSymbol* _tmp1123_ = NULL;
+                       ValaTypeSymbol* _tmp1124_ = NULL;
+                       _tmp1123_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
+                       _tmp1124_ = _tmp1123_;
+                       _tmp1119_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1124_, VALA_TYPE_CLASS);
                } else {
-                       _tmp1108_ = FALSE;
+                       _tmp1119_ = FALSE;
                }
-               _tmp1104_ = _tmp1108_;
+               _tmp1115_ = _tmp1119_;
        }
-       if (_tmp1104_) {
-               ValaMethod* _tmp1114_ = NULL;
-               ValaBlock* _tmp1115_ = NULL;
-               ValaBlock* _tmp1116_ = NULL;
-               _tmp1114_ = m;
-               _tmp1115_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp1114_);
-               _tmp1116_ = _tmp1115_;
-               if (_tmp1116_ != NULL) {
-                       gboolean _tmp1117_ = FALSE;
-                       gboolean _tmp1118_ = FALSE;
-                       ValaMethod* _tmp1129_ = NULL;
-                       gboolean _tmp1130_ = FALSE;
-                       gboolean _tmp1131_ = FALSE;
-                       gboolean _tmp1132_ = FALSE;
-                       gboolean _tmp1133_ = FALSE;
-                       ValaMethod* _tmp1134_ = NULL;
-                       ValaDataType* _tmp1135_ = NULL;
-                       ValaDataType* _tmp1136_ = NULL;
-                       ValaMethod* _tmp1159_ = NULL;
-                       ValaCCodeFile* _tmp1246_ = NULL;
-                       ValaCCodeFunction* _tmp1247_ = NULL;
-                       ValaCCodeFunction* _tmp1248_ = NULL;
-                       _tmp1117_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
-                       _tmp1118_ = _tmp1117_;
-                       if (_tmp1118_) {
-                               ValaMethod* _tmp1119_ = NULL;
-                               gboolean _tmp1120_ = FALSE;
-                               gboolean _tmp1121_ = FALSE;
-                               _tmp1119_ = m;
-                               _tmp1120_ = vala_method_get_coroutine (_tmp1119_);
-                               _tmp1121_ = _tmp1120_;
-                               if (_tmp1121_) {
-                                       ValaCCodeStruct* _tmp1122_ = NULL;
-                                       _tmp1122_ = ((ValaCCodeBaseModule*) self)->closure_struct;
-                                       vala_ccode_struct_add_field (_tmp1122_, "GError *", "_inner_error_", NULL);
+       if (_tmp1115_) {
+               ValaMethod* _tmp1125_ = NULL;
+               ValaBlock* _tmp1126_ = NULL;
+               ValaBlock* _tmp1127_ = NULL;
+               _tmp1125_ = m;
+               _tmp1126_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp1125_);
+               _tmp1127_ = _tmp1126_;
+               if (_tmp1127_ != NULL) {
+                       gboolean _tmp1128_ = FALSE;
+                       gboolean _tmp1129_ = FALSE;
+                       ValaMethod* _tmp1140_ = NULL;
+                       gboolean _tmp1141_ = FALSE;
+                       gboolean _tmp1142_ = FALSE;
+                       gboolean _tmp1143_ = FALSE;
+                       gboolean _tmp1144_ = FALSE;
+                       ValaMethod* _tmp1145_ = NULL;
+                       ValaDataType* _tmp1146_ = NULL;
+                       ValaDataType* _tmp1147_ = NULL;
+                       ValaMethod* _tmp1170_ = NULL;
+                       ValaCCodeFile* _tmp1257_ = NULL;
+                       ValaCCodeFunction* _tmp1258_ = NULL;
+                       ValaCCodeFunction* _tmp1259_ = NULL;
+                       _tmp1128_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
+                       _tmp1129_ = _tmp1128_;
+                       if (_tmp1129_) {
+                               ValaMethod* _tmp1130_ = NULL;
+                               gboolean _tmp1131_ = FALSE;
+                               gboolean _tmp1132_ = FALSE;
+                               _tmp1130_ = m;
+                               _tmp1131_ = vala_method_get_coroutine (_tmp1130_);
+                               _tmp1132_ = _tmp1131_;
+                               if (_tmp1132_) {
+                                       ValaCCodeStruct* _tmp1133_ = NULL;
+                                       _tmp1133_ = ((ValaCCodeBaseModule*) self)->closure_struct;
+                                       vala_ccode_struct_add_field (_tmp1133_, "GError *", "_inner_error_", NULL);
                                } else {
-                                       ValaCCodeFunction* _tmp1123_ = NULL;
-                                       ValaCCodeFunction* _tmp1124_ = NULL;
-                                       ValaCCodeConstant* _tmp1125_ = NULL;
-                                       ValaCCodeConstant* _tmp1126_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp1127_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp1128_ = NULL;
-                                       _tmp1123_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp1124_ = _tmp1123_;
-                                       _tmp1125_ = vala_ccode_constant_new ("NULL");
-                                       _tmp1126_ = _tmp1125_;
-                                       _tmp1127_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp1126_, NULL);
-                                       _tmp1128_ = _tmp1127_;
-                                       vala_ccode_function_add_declaration (_tmp1124_, "GError *", (ValaCCodeDeclarator*) _tmp1128_, 0);
-                                       _vala_ccode_node_unref0 (_tmp1128_);
-                                       _vala_ccode_node_unref0 (_tmp1126_);
+                                       ValaCCodeFunction* _tmp1134_ = NULL;
+                                       ValaCCodeFunction* _tmp1135_ = NULL;
+                                       ValaCCodeConstant* _tmp1136_ = NULL;
+                                       ValaCCodeConstant* _tmp1137_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp1138_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp1139_ = NULL;
+                                       _tmp1134_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp1135_ = _tmp1134_;
+                                       _tmp1136_ = vala_ccode_constant_new ("NULL");
+                                       _tmp1137_ = _tmp1136_;
+                                       _tmp1138_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp1137_, NULL);
+                                       _tmp1139_ = _tmp1138_;
+                                       vala_ccode_function_add_declaration (_tmp1135_, "GError *", (ValaCCodeDeclarator*) _tmp1139_, 0);
+                                       _vala_ccode_node_unref0 (_tmp1139_);
+                                       _vala_ccode_node_unref0 (_tmp1137_);
                                }
                        }
-                       _tmp1129_ = m;
-                       _tmp1130_ = vala_method_get_coroutine (_tmp1129_);
-                       _tmp1131_ = _tmp1130_;
-                       if (_tmp1131_) {
+                       _tmp1140_ = m;
+                       _tmp1141_ = vala_method_get_coroutine (_tmp1140_);
+                       _tmp1142_ = _tmp1141_;
+                       if (_tmp1142_) {
                                vala_ccode_method_module_complete_async (self);
                        }
-                       _tmp1134_ = m;
-                       _tmp1135_ = vala_method_get_return_type (_tmp1134_);
-                       _tmp1136_ = _tmp1135_;
-                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp1136_, VALA_TYPE_VOID_TYPE)) {
-                               ValaMethod* _tmp1137_ = NULL;
-                               ValaDataType* _tmp1138_ = NULL;
-                               ValaDataType* _tmp1139_ = NULL;
-                               gboolean _tmp1140_ = FALSE;
-                               _tmp1137_ = m;
-                               _tmp1138_ = vala_method_get_return_type (_tmp1137_);
-                               _tmp1139_ = _tmp1138_;
-                               _tmp1140_ = vala_data_type_is_real_non_null_struct_type (_tmp1139_);
-                               _tmp1133_ = !_tmp1140_;
+                       _tmp1145_ = m;
+                       _tmp1146_ = vala_method_get_return_type (_tmp1145_);
+                       _tmp1147_ = _tmp1146_;
+                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp1147_, VALA_TYPE_VOID_TYPE)) {
+                               ValaMethod* _tmp1148_ = NULL;
+                               ValaDataType* _tmp1149_ = NULL;
+                               ValaDataType* _tmp1150_ = NULL;
+                               gboolean _tmp1151_ = FALSE;
+                               _tmp1148_ = m;
+                               _tmp1149_ = vala_method_get_return_type (_tmp1148_);
+                               _tmp1150_ = _tmp1149_;
+                               _tmp1151_ = vala_data_type_is_real_non_null_struct_type (_tmp1150_);
+                               _tmp1144_ = !_tmp1151_;
                        } else {
-                               _tmp1133_ = FALSE;
+                               _tmp1144_ = FALSE;
                        }
-                       if (_tmp1133_) {
-                               ValaMethod* _tmp1141_ = NULL;
-                               gboolean _tmp1142_ = FALSE;
-                               gboolean _tmp1143_ = FALSE;
-                               _tmp1141_ = m;
-                               _tmp1142_ = vala_method_get_coroutine (_tmp1141_);
-                               _tmp1143_ = _tmp1142_;
-                               _tmp1132_ = !_tmp1143_;
+                       if (_tmp1144_) {
+                               ValaMethod* _tmp1152_ = NULL;
+                               gboolean _tmp1153_ = FALSE;
+                               gboolean _tmp1154_ = FALSE;
+                               _tmp1152_ = m;
+                               _tmp1153_ = vala_method_get_coroutine (_tmp1152_);
+                               _tmp1154_ = _tmp1153_;
+                               _tmp1143_ = !_tmp1154_;
                        } else {
-                               _tmp1132_ = FALSE;
+                               _tmp1143_ = FALSE;
                        }
-                       if (_tmp1132_) {
-                               gboolean _tmp1144_ = FALSE;
-                               ValaMethod* _tmp1145_ = NULL;
-                               ValaBasicBlock* _tmp1146_ = NULL;
-                               ValaBasicBlock* _tmp1147_ = NULL;
-                               _tmp1145_ = m;
-                               _tmp1146_ = vala_subroutine_get_return_block ((ValaSubroutine*) _tmp1145_);
-                               _tmp1147_ = _tmp1146_;
-                               if (_tmp1147_ != NULL) {
-                                       ValaMethod* _tmp1148_ = NULL;
-                                       ValaBasicBlock* _tmp1149_ = NULL;
-                                       ValaBasicBlock* _tmp1150_ = NULL;
-                                       ValaList* _tmp1151_ = NULL;
-                                       ValaList* _tmp1152_ = NULL;
-                                       gint _tmp1153_ = 0;
-                                       gint _tmp1154_ = 0;
-                                       _tmp1148_ = m;
-                                       _tmp1149_ = vala_subroutine_get_return_block ((ValaSubroutine*) _tmp1148_);
-                                       _tmp1150_ = _tmp1149_;
-                                       _tmp1151_ = vala_basic_block_get_predecessors (_tmp1150_);
-                                       _tmp1152_ = _tmp1151_;
-                                       _tmp1153_ = vala_collection_get_size ((ValaCollection*) _tmp1152_);
-                                       _tmp1154_ = _tmp1153_;
-                                       _tmp1144_ = _tmp1154_ == 0;
-                                       _vala_iterable_unref0 (_tmp1152_);
+                       if (_tmp1143_) {
+                               gboolean _tmp1155_ = FALSE;
+                               ValaMethod* _tmp1156_ = NULL;
+                               ValaBasicBlock* _tmp1157_ = NULL;
+                               ValaBasicBlock* _tmp1158_ = NULL;
+                               _tmp1156_ = m;
+                               _tmp1157_ = vala_subroutine_get_return_block ((ValaSubroutine*) _tmp1156_);
+                               _tmp1158_ = _tmp1157_;
+                               if (_tmp1158_ != NULL) {
+                                       ValaMethod* _tmp1159_ = NULL;
+                                       ValaBasicBlock* _tmp1160_ = NULL;
+                                       ValaBasicBlock* _tmp1161_ = NULL;
+                                       ValaList* _tmp1162_ = NULL;
+                                       ValaList* _tmp1163_ = NULL;
+                                       gint _tmp1164_ = 0;
+                                       gint _tmp1165_ = 0;
+                                       _tmp1159_ = m;
+                                       _tmp1160_ = vala_subroutine_get_return_block ((ValaSubroutine*) _tmp1159_);
+                                       _tmp1161_ = _tmp1160_;
+                                       _tmp1162_ = vala_basic_block_get_predecessors (_tmp1161_);
+                                       _tmp1163_ = _tmp1162_;
+                                       _tmp1164_ = vala_collection_get_size ((ValaCollection*) _tmp1163_);
+                                       _tmp1165_ = _tmp1164_;
+                                       _tmp1155_ = _tmp1165_ == 0;
+                                       _vala_iterable_unref0 (_tmp1163_);
                                } else {
-                                       _tmp1144_ = FALSE;
+                                       _tmp1155_ = FALSE;
                                }
-                               if (_tmp1144_) {
-                                       ValaCCodeFunction* _tmp1155_ = NULL;
-                                       ValaCCodeFunction* _tmp1156_ = NULL;
-                                       ValaCCodeIdentifier* _tmp1157_ = NULL;
-                                       ValaCCodeIdentifier* _tmp1158_ = NULL;
-                                       _tmp1155_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp1156_ = _tmp1155_;
-                                       _tmp1157_ = vala_ccode_identifier_new ("result");
-                                       _tmp1158_ = _tmp1157_;
-                                       vala_ccode_function_add_return (_tmp1156_, (ValaCCodeExpression*) _tmp1158_);
-                                       _vala_ccode_node_unref0 (_tmp1158_);
+                               if (_tmp1155_) {
+                                       ValaCCodeFunction* _tmp1166_ = NULL;
+                                       ValaCCodeFunction* _tmp1167_ = NULL;
+                                       ValaCCodeIdentifier* _tmp1168_ = NULL;
+                                       ValaCCodeIdentifier* _tmp1169_ = NULL;
+                                       _tmp1166_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp1167_ = _tmp1166_;
+                                       _tmp1168_ = vala_ccode_identifier_new ("result");
+                                       _tmp1169_ = _tmp1168_;
+                                       vala_ccode_function_add_return (_tmp1167_, (ValaCCodeExpression*) _tmp1169_);
+                                       _vala_ccode_node_unref0 (_tmp1169_);
                                }
                        }
-                       _tmp1159_ = m;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1159_, VALA_TYPE_CREATION_METHOD)) {
-                               ValaTypeSymbol* _tmp1160_ = NULL;
-                               ValaTypeSymbol* _tmp1161_ = NULL;
-                               gboolean _tmp1166_ = FALSE;
-                               gboolean _tmp1167_ = FALSE;
-                               gboolean _tmp1168_ = FALSE;
-                               gboolean _tmp1169_ = FALSE;
-                               ValaTypeSymbol* _tmp1170_ = NULL;
+                       _tmp1170_ = m;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1170_, VALA_TYPE_CREATION_METHOD)) {
                                ValaTypeSymbol* _tmp1171_ = NULL;
-                               gboolean _tmp1227_ = FALSE;
-                               ValaTypeSymbol* _tmp1228_ = NULL;
-                               ValaTypeSymbol* _tmp1229_ = NULL;
-                               _tmp1160_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
-                               _tmp1161_ = _tmp1160_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1161_, VALA_TYPE_CLASS)) {
-                                       ValaClass* _tmp1162_ = NULL;
-                                       ValaClass* _tmp1163_ = NULL;
-                                       ValaObjectType* _tmp1164_ = NULL;
-                                       _tmp1162_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
-                                       _tmp1163_ = _tmp1162_;
-                                       _tmp1164_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp1163_);
+                               ValaTypeSymbol* _tmp1172_ = NULL;
+                               gboolean _tmp1177_ = FALSE;
+                               gboolean _tmp1178_ = FALSE;
+                               gboolean _tmp1179_ = FALSE;
+                               gboolean _tmp1180_ = FALSE;
+                               ValaTypeSymbol* _tmp1181_ = NULL;
+                               ValaTypeSymbol* _tmp1182_ = NULL;
+                               gboolean _tmp1238_ = FALSE;
+                               ValaTypeSymbol* _tmp1239_ = NULL;
+                               ValaTypeSymbol* _tmp1240_ = NULL;
+                               _tmp1171_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
+                               _tmp1172_ = _tmp1171_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1172_, VALA_TYPE_CLASS)) {
+                                       ValaClass* _tmp1173_ = NULL;
+                                       ValaClass* _tmp1174_ = NULL;
+                                       ValaObjectType* _tmp1175_ = NULL;
+                                       _tmp1173_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
+                                       _tmp1174_ = _tmp1173_;
+                                       _tmp1175_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp1174_);
                                        _vala_code_node_unref0 (creturn_type);
-                                       creturn_type = (ValaDataType*) _tmp1164_;
+                                       creturn_type = (ValaDataType*) _tmp1175_;
                                } else {
-                                       ValaVoidType* _tmp1165_ = NULL;
-                                       _tmp1165_ = vala_void_type_new (NULL);
+                                       ValaVoidType* _tmp1176_ = NULL;
+                                       _tmp1176_ = vala_void_type_new (NULL);
                                        _vala_code_node_unref0 (creturn_type);
-                                       creturn_type = (ValaDataType*) _tmp1165_;
+                                       creturn_type = (ValaDataType*) _tmp1176_;
                                }
-                               _tmp1170_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
-                               _tmp1171_ = _tmp1170_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1171_, VALA_TYPE_CLASS)) {
-                                       ValaTypeSymbol* _tmp1172_ = NULL;
-                                       _tmp1172_ = ((ValaCCodeBaseModule*) self)->gobject_type;
-                                       _tmp1169_ = _tmp1172_ != NULL;
+                               _tmp1181_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
+                               _tmp1182_ = _tmp1181_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1182_, VALA_TYPE_CLASS)) {
+                                       ValaTypeSymbol* _tmp1183_ = NULL;
+                                       _tmp1183_ = ((ValaCCodeBaseModule*) self)->gobject_type;
+                                       _tmp1180_ = _tmp1183_ != NULL;
                                } else {
-                                       _tmp1169_ = FALSE;
+                                       _tmp1180_ = FALSE;
                                }
-                               if (_tmp1169_) {
-                                       ValaClass* _tmp1173_ = NULL;
-                                       ValaClass* _tmp1174_ = NULL;
-                                       ValaTypeSymbol* _tmp1175_ = NULL;
-                                       gboolean _tmp1176_ = FALSE;
-                                       _tmp1173_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
-                                       _tmp1174_ = _tmp1173_;
-                                       _tmp1175_ = ((ValaCCodeBaseModule*) self)->gobject_type;
-                                       _tmp1176_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp1174_, _tmp1175_);
-                                       _tmp1168_ = _tmp1176_;
+                               if (_tmp1180_) {
+                                       ValaClass* _tmp1184_ = NULL;
+                                       ValaClass* _tmp1185_ = NULL;
+                                       ValaTypeSymbol* _tmp1186_ = NULL;
+                                       gboolean _tmp1187_ = FALSE;
+                                       _tmp1184_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
+                                       _tmp1185_ = _tmp1184_;
+                                       _tmp1186_ = ((ValaCCodeBaseModule*) self)->gobject_type;
+                                       _tmp1187_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp1185_, _tmp1186_);
+                                       _tmp1179_ = _tmp1187_;
                                } else {
-                                       _tmp1168_ = FALSE;
+                                       _tmp1179_ = FALSE;
                                }
-                               if (_tmp1168_) {
-                                       ValaClass* _tmp1177_ = NULL;
-                                       ValaClass* _tmp1178_ = NULL;
-                                       ValaList* _tmp1179_ = NULL;
-                                       ValaList* _tmp1180_ = NULL;
-                                       gint _tmp1181_ = 0;
-                                       gint _tmp1182_ = 0;
-                                       _tmp1177_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
-                                       _tmp1178_ = _tmp1177_;
-                                       _tmp1179_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp1178_);
-                                       _tmp1180_ = _tmp1179_;
-                                       _tmp1181_ = vala_collection_get_size ((ValaCollection*) _tmp1180_);
-                                       _tmp1182_ = _tmp1181_;
-                                       _tmp1167_ = _tmp1182_ > 0;
-                                       _vala_iterable_unref0 (_tmp1180_);
+                               if (_tmp1179_) {
+                                       ValaClass* _tmp1188_ = NULL;
+                                       ValaClass* _tmp1189_ = NULL;
+                                       ValaList* _tmp1190_ = NULL;
+                                       ValaList* _tmp1191_ = NULL;
+                                       gint _tmp1192_ = 0;
+                                       gint _tmp1193_ = 0;
+                                       _tmp1188_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
+                                       _tmp1189_ = _tmp1188_;
+                                       _tmp1190_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp1189_);
+                                       _tmp1191_ = _tmp1190_;
+                                       _tmp1192_ = vala_collection_get_size ((ValaCollection*) _tmp1191_);
+                                       _tmp1193_ = _tmp1192_;
+                                       _tmp1178_ = _tmp1193_ > 0;
+                                       _vala_iterable_unref0 (_tmp1191_);
                                } else {
-                                       _tmp1167_ = FALSE;
+                                       _tmp1178_ = FALSE;
                                }
-                               if (_tmp1167_) {
-                                       ValaMethod* _tmp1183_ = NULL;
-                                       gboolean _tmp1184_ = FALSE;
-                                       gboolean _tmp1185_ = FALSE;
-                                       _tmp1183_ = m;
-                                       _tmp1184_ = vala_creation_method_get_chain_up (G_TYPE_CHECK_INSTANCE_CAST (_tmp1183_, VALA_TYPE_CREATION_METHOD, ValaCreationMethod));
-                                       _tmp1185_ = _tmp1184_;
-                                       _tmp1166_ = !_tmp1185_;
+                               if (_tmp1178_) {
+                                       ValaMethod* _tmp1194_ = NULL;
+                                       gboolean _tmp1195_ = FALSE;
+                                       gboolean _tmp1196_ = FALSE;
+                                       _tmp1194_ = m;
+                                       _tmp1195_ = vala_creation_method_get_chain_up (G_TYPE_CHECK_INSTANCE_CAST (_tmp1194_, VALA_TYPE_CREATION_METHOD, ValaCreationMethod));
+                                       _tmp1196_ = _tmp1195_;
+                                       _tmp1177_ = !_tmp1196_;
                                } else {
-                                       _tmp1166_ = FALSE;
+                                       _tmp1177_ = FALSE;
                                }
-                               if (_tmp1166_) {
+                               if (_tmp1177_) {
                                        ValaCCodeBinaryExpression* ccond = NULL;
-                                       ValaCCodeIdentifier* _tmp1186_ = NULL;
-                                       ValaCCodeIdentifier* _tmp1187_ = NULL;
-                                       ValaCCodeIdentifier* _tmp1188_ = NULL;
-                                       ValaCCodeIdentifier* _tmp1189_ = NULL;
-                                       ValaCCodeBinaryExpression* _tmp1190_ = NULL;
-                                       ValaCCodeBinaryExpression* _tmp1191_ = NULL;
-                                       ValaCCodeFunction* _tmp1192_ = NULL;
-                                       ValaCCodeFunction* _tmp1193_ = NULL;
-                                       ValaCCodeBinaryExpression* _tmp1194_ = NULL;
-                                       ValaCCodeFunction* _tmp1195_ = NULL;
-                                       ValaCCodeFunction* _tmp1196_ = NULL;
                                        ValaCCodeIdentifier* _tmp1197_ = NULL;
                                        ValaCCodeIdentifier* _tmp1198_ = NULL;
-                                       ValaCCodeUnaryExpression* _tmp1199_ = NULL;
-                                       ValaCCodeUnaryExpression* _tmp1200_ = NULL;
-                                       ValaCCodeFunctionCall* cunsetcall = NULL;
-                                       ValaCCodeIdentifier* _tmp1201_ = NULL;
-                                       ValaCCodeIdentifier* _tmp1202_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp1203_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp1204_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp1205_ = NULL;
-                                       ValaCCodeIdentifier* _tmp1206_ = NULL;
-                                       ValaCCodeIdentifier* _tmp1207_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp1208_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp1209_ = NULL;
+                                       ValaCCodeIdentifier* _tmp1199_ = NULL;
+                                       ValaCCodeIdentifier* _tmp1200_ = NULL;
+                                       ValaCCodeBinaryExpression* _tmp1201_ = NULL;
+                                       ValaCCodeBinaryExpression* _tmp1202_ = NULL;
+                                       ValaCCodeFunction* _tmp1203_ = NULL;
+                                       ValaCCodeFunction* _tmp1204_ = NULL;
+                                       ValaCCodeBinaryExpression* _tmp1205_ = NULL;
+                                       ValaCCodeFunction* _tmp1206_ = NULL;
+                                       ValaCCodeFunction* _tmp1207_ = NULL;
+                                       ValaCCodeIdentifier* _tmp1208_ = NULL;
+                                       ValaCCodeIdentifier* _tmp1209_ = NULL;
                                        ValaCCodeUnaryExpression* _tmp1210_ = NULL;
                                        ValaCCodeUnaryExpression* _tmp1211_ = NULL;
-                                       ValaCCodeFunction* _tmp1212_ = NULL;
-                                       ValaCCodeFunction* _tmp1213_ = NULL;
+                                       ValaCCodeFunctionCall* cunsetcall = NULL;
+                                       ValaCCodeIdentifier* _tmp1212_ = NULL;
+                                       ValaCCodeIdentifier* _tmp1213_ = NULL;
                                        ValaCCodeFunctionCall* _tmp1214_ = NULL;
-                                       ValaCCodeFunction* _tmp1215_ = NULL;
-                                       ValaCCodeFunction* _tmp1216_ = NULL;
-                                       ValaCCodeFunctionCall* cfreeparams = NULL;
+                                       ValaCCodeFunctionCall* _tmp1215_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp1216_ = NULL;
                                        ValaCCodeIdentifier* _tmp1217_ = NULL;
                                        ValaCCodeIdentifier* _tmp1218_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp1219_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp1220_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp1221_ = NULL;
-                                       ValaCCodeIdentifier* _tmp1222_ = NULL;
-                                       ValaCCodeIdentifier* _tmp1223_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp1219_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp1220_ = NULL;
+                                       ValaCCodeUnaryExpression* _tmp1221_ = NULL;
+                                       ValaCCodeUnaryExpression* _tmp1222_ = NULL;
+                                       ValaCCodeFunction* _tmp1223_ = NULL;
                                        ValaCCodeFunction* _tmp1224_ = NULL;
-                                       ValaCCodeFunction* _tmp1225_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp1226_ = NULL;
-                                       _tmp1186_ = vala_ccode_identifier_new ("__params_it");
-                                       _tmp1187_ = _tmp1186_;
-                                       _tmp1188_ = vala_ccode_identifier_new ("__params");
-                                       _tmp1189_ = _tmp1188_;
-                                       _tmp1190_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_GREATER_THAN, (ValaCCodeExpression*) _tmp1187_, (ValaCCodeExpression*) _tmp1189_);
-                                       _tmp1191_ = _tmp1190_;
-                                       _vala_ccode_node_unref0 (_tmp1189_);
-                                       _vala_ccode_node_unref0 (_tmp1187_);
-                                       ccond = _tmp1191_;
-                                       _tmp1192_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp1193_ = _tmp1192_;
-                                       _tmp1194_ = ccond;
-                                       vala_ccode_function_open_while (_tmp1193_, (ValaCCodeExpression*) _tmp1194_);
-                                       _tmp1195_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp1196_ = _tmp1195_;
+                                       ValaCCodeFunctionCall* _tmp1225_ = NULL;
+                                       ValaCCodeFunction* _tmp1226_ = NULL;
+                                       ValaCCodeFunction* _tmp1227_ = NULL;
+                                       ValaCCodeFunctionCall* cfreeparams = NULL;
+                                       ValaCCodeIdentifier* _tmp1228_ = NULL;
+                                       ValaCCodeIdentifier* _tmp1229_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp1230_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp1231_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp1232_ = NULL;
+                                       ValaCCodeIdentifier* _tmp1233_ = NULL;
+                                       ValaCCodeIdentifier* _tmp1234_ = NULL;
+                                       ValaCCodeFunction* _tmp1235_ = NULL;
+                                       ValaCCodeFunction* _tmp1236_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp1237_ = NULL;
                                        _tmp1197_ = vala_ccode_identifier_new ("__params_it");
                                        _tmp1198_ = _tmp1197_;
-                                       _tmp1199_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT, (ValaCCodeExpression*) _tmp1198_);
+                                       _tmp1199_ = vala_ccode_identifier_new ("__params");
                                        _tmp1200_ = _tmp1199_;
-                                       vala_ccode_function_add_expression (_tmp1196_, (ValaCCodeExpression*) _tmp1200_);
+                                       _tmp1201_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_GREATER_THAN, (ValaCCodeExpression*) _tmp1198_, (ValaCCodeExpression*) _tmp1200_);
+                                       _tmp1202_ = _tmp1201_;
                                        _vala_ccode_node_unref0 (_tmp1200_);
                                        _vala_ccode_node_unref0 (_tmp1198_);
-                                       _tmp1201_ = vala_ccode_identifier_new ("g_value_unset");
-                                       _tmp1202_ = _tmp1201_;
-                                       _tmp1203_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1202_);
+                                       ccond = _tmp1202_;
+                                       _tmp1203_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                        _tmp1204_ = _tmp1203_;
-                                       _vala_ccode_node_unref0 (_tmp1202_);
-                                       cunsetcall = _tmp1204_;
-                                       _tmp1205_ = cunsetcall;
-                                       _tmp1206_ = vala_ccode_identifier_new ("__params_it");
+                                       _tmp1205_ = ccond;
+                                       vala_ccode_function_open_while (_tmp1204_, (ValaCCodeExpression*) _tmp1205_);
+                                       _tmp1206_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                        _tmp1207_ = _tmp1206_;
-                                       _tmp1208_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp1207_, "value");
+                                       _tmp1208_ = vala_ccode_identifier_new ("__params_it");
                                        _tmp1209_ = _tmp1208_;
-                                       _tmp1210_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp1209_);
+                                       _tmp1210_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_PREFIX_DECREMENT, (ValaCCodeExpression*) _tmp1209_);
                                        _tmp1211_ = _tmp1210_;
-                                       vala_ccode_function_call_add_argument (_tmp1205_, (ValaCCodeExpression*) _tmp1211_);
+                                       vala_ccode_function_add_expression (_tmp1207_, (ValaCCodeExpression*) _tmp1211_);
                                        _vala_ccode_node_unref0 (_tmp1211_);
                                        _vala_ccode_node_unref0 (_tmp1209_);
-                                       _vala_ccode_node_unref0 (_tmp1207_);
-                                       _tmp1212_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp1212_ = vala_ccode_identifier_new ("g_value_unset");
                                        _tmp1213_ = _tmp1212_;
-                                       _tmp1214_ = cunsetcall;
-                                       vala_ccode_function_add_expression (_tmp1213_, (ValaCCodeExpression*) _tmp1214_);
-                                       _tmp1215_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp1216_ = _tmp1215_;
-                                       vala_ccode_function_close (_tmp1216_);
-                                       _tmp1217_ = vala_ccode_identifier_new ("g_free");
+                                       _tmp1214_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1213_);
+                                       _tmp1215_ = _tmp1214_;
+                                       _vala_ccode_node_unref0 (_tmp1213_);
+                                       cunsetcall = _tmp1215_;
+                                       _tmp1216_ = cunsetcall;
+                                       _tmp1217_ = vala_ccode_identifier_new ("__params_it");
                                        _tmp1218_ = _tmp1217_;
-                                       _tmp1219_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1218_);
+                                       _tmp1219_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp1218_, "value");
                                        _tmp1220_ = _tmp1219_;
+                                       _tmp1221_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp1220_);
+                                       _tmp1222_ = _tmp1221_;
+                                       vala_ccode_function_call_add_argument (_tmp1216_, (ValaCCodeExpression*) _tmp1222_);
+                                       _vala_ccode_node_unref0 (_tmp1222_);
+                                       _vala_ccode_node_unref0 (_tmp1220_);
                                        _vala_ccode_node_unref0 (_tmp1218_);
-                                       cfreeparams = _tmp1220_;
-                                       _tmp1221_ = cfreeparams;
-                                       _tmp1222_ = vala_ccode_identifier_new ("__params");
-                                       _tmp1223_ = _tmp1222_;
-                                       vala_ccode_function_call_add_argument (_tmp1221_, (ValaCCodeExpression*) _tmp1223_);
-                                       _vala_ccode_node_unref0 (_tmp1223_);
-                                       _tmp1224_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp1225_ = _tmp1224_;
-                                       _tmp1226_ = cfreeparams;
-                                       vala_ccode_function_add_expression (_tmp1225_, (ValaCCodeExpression*) _tmp1226_);
+                                       _tmp1223_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp1224_ = _tmp1223_;
+                                       _tmp1225_ = cunsetcall;
+                                       vala_ccode_function_add_expression (_tmp1224_, (ValaCCodeExpression*) _tmp1225_);
+                                       _tmp1226_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp1227_ = _tmp1226_;
+                                       vala_ccode_function_close (_tmp1227_);
+                                       _tmp1228_ = vala_ccode_identifier_new ("g_free");
+                                       _tmp1229_ = _tmp1228_;
+                                       _tmp1230_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1229_);
+                                       _tmp1231_ = _tmp1230_;
+                                       _vala_ccode_node_unref0 (_tmp1229_);
+                                       cfreeparams = _tmp1231_;
+                                       _tmp1232_ = cfreeparams;
+                                       _tmp1233_ = vala_ccode_identifier_new ("__params");
+                                       _tmp1234_ = _tmp1233_;
+                                       vala_ccode_function_call_add_argument (_tmp1232_, (ValaCCodeExpression*) _tmp1234_);
+                                       _vala_ccode_node_unref0 (_tmp1234_);
+                                       _tmp1235_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp1236_ = _tmp1235_;
+                                       _tmp1237_ = cfreeparams;
+                                       vala_ccode_function_add_expression (_tmp1236_, (ValaCCodeExpression*) _tmp1237_);
                                        _vala_ccode_node_unref0 (cfreeparams);
                                        _vala_ccode_node_unref0 (cunsetcall);
                                        _vala_ccode_node_unref0 (ccond);
                                }
-                               _tmp1228_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
-                               _tmp1229_ = _tmp1228_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1229_, VALA_TYPE_CLASS)) {
-                                       ValaMethod* _tmp1230_ = NULL;
-                                       gboolean _tmp1231_ = FALSE;
-                                       gboolean _tmp1232_ = FALSE;
-                                       _tmp1230_ = m;
-                                       _tmp1231_ = vala_method_get_coroutine (_tmp1230_);
-                                       _tmp1232_ = _tmp1231_;
-                                       _tmp1227_ = !_tmp1232_;
+                               _tmp1239_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
+                               _tmp1240_ = _tmp1239_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1240_, VALA_TYPE_CLASS)) {
+                                       ValaMethod* _tmp1241_ = NULL;
+                                       gboolean _tmp1242_ = FALSE;
+                                       gboolean _tmp1243_ = FALSE;
+                                       _tmp1241_ = m;
+                                       _tmp1242_ = vala_method_get_coroutine (_tmp1241_);
+                                       _tmp1243_ = _tmp1242_;
+                                       _tmp1238_ = !_tmp1243_;
                                } else {
-                                       _tmp1227_ = FALSE;
+                                       _tmp1238_ = FALSE;
                                }
-                               if (_tmp1227_) {
+                               if (_tmp1238_) {
                                        ValaCCodeExpression* cresult = NULL;
-                                       ValaCCodeIdentifier* _tmp1233_ = NULL;
-                                       ValaMethod* _tmp1234_ = NULL;
-                                       gchar* _tmp1235_ = NULL;
-                                       gchar* _tmp1236_ = NULL;
-                                       gboolean _tmp1237_ = FALSE;
-                                       ValaCCodeFunction* _tmp1243_ = NULL;
-                                       ValaCCodeFunction* _tmp1244_ = NULL;
-                                       ValaCCodeExpression* _tmp1245_ = NULL;
-                                       _tmp1233_ = vala_ccode_identifier_new ("self");
-                                       cresult = (ValaCCodeExpression*) _tmp1233_;
-                                       _tmp1234_ = m;
-                                       _tmp1235_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp1234_);
-                                       _tmp1236_ = _tmp1235_;
-                                       _tmp1237_ = _tmp1236_ != NULL;
-                                       _g_free0 (_tmp1236_);
-                                       if (_tmp1237_) {
-                                               ValaCCodeExpression* _tmp1238_ = NULL;
-                                               ValaMethod* _tmp1239_ = NULL;
-                                               gchar* _tmp1240_ = NULL;
-                                               gchar* _tmp1241_ = NULL;
-                                               ValaCCodeCastExpression* _tmp1242_ = NULL;
-                                               _tmp1238_ = cresult;
-                                               _tmp1239_ = m;
-                                               _tmp1240_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp1239_);
-                                               _tmp1241_ = _tmp1240_;
-                                               _tmp1242_ = vala_ccode_cast_expression_new (_tmp1238_, _tmp1241_);
+                                       ValaCCodeIdentifier* _tmp1244_ = NULL;
+                                       ValaMethod* _tmp1245_ = NULL;
+                                       gchar* _tmp1246_ = NULL;
+                                       gchar* _tmp1247_ = NULL;
+                                       gboolean _tmp1248_ = FALSE;
+                                       ValaCCodeFunction* _tmp1254_ = NULL;
+                                       ValaCCodeFunction* _tmp1255_ = NULL;
+                                       ValaCCodeExpression* _tmp1256_ = NULL;
+                                       _tmp1244_ = vala_ccode_identifier_new ("self");
+                                       cresult = (ValaCCodeExpression*) _tmp1244_;
+                                       _tmp1245_ = m;
+                                       _tmp1246_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp1245_);
+                                       _tmp1247_ = _tmp1246_;
+                                       _tmp1248_ = _tmp1247_ != NULL;
+                                       _g_free0 (_tmp1247_);
+                                       if (_tmp1248_) {
+                                               ValaCCodeExpression* _tmp1249_ = NULL;
+                                               ValaMethod* _tmp1250_ = NULL;
+                                               gchar* _tmp1251_ = NULL;
+                                               gchar* _tmp1252_ = NULL;
+                                               ValaCCodeCastExpression* _tmp1253_ = NULL;
+                                               _tmp1249_ = cresult;
+                                               _tmp1250_ = m;
+                                               _tmp1251_ = vala_ccode_base_module_get_ccode_type ((ValaCodeNode*) _tmp1250_);
+                                               _tmp1252_ = _tmp1251_;
+                                               _tmp1253_ = vala_ccode_cast_expression_new (_tmp1249_, _tmp1252_);
                                                _vala_ccode_node_unref0 (cresult);
-                                               cresult = (ValaCCodeExpression*) _tmp1242_;
-                                               _g_free0 (_tmp1241_);
+                                               cresult = (ValaCCodeExpression*) _tmp1253_;
+                                               _g_free0 (_tmp1252_);
                                        }
-                                       _tmp1243_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp1244_ = _tmp1243_;
-                                       _tmp1245_ = cresult;
-                                       vala_ccode_function_add_return (_tmp1244_, _tmp1245_);
+                                       _tmp1254_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp1255_ = _tmp1254_;
+                                       _tmp1256_ = cresult;
+                                       vala_ccode_function_add_return (_tmp1255_, _tmp1256_);
                                        _vala_ccode_node_unref0 (cresult);
                                }
                        }
-                       _tmp1246_ = ((ValaCCodeBaseModule*) self)->cfile;
-                       _tmp1247_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp1248_ = _tmp1247_;
-                       vala_ccode_file_add_function (_tmp1246_, _tmp1248_);
+                       _tmp1257_ = ((ValaCCodeBaseModule*) self)->cfile;
+                       _tmp1258_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp1259_ = _tmp1258_;
+                       vala_ccode_file_add_function (_tmp1257_, _tmp1259_);
                }
        }
-       _tmp1250_ = m;
-       _tmp1251_ = vala_method_get_is_abstract (_tmp1250_);
-       _tmp1252_ = _tmp1251_;
-       if (_tmp1252_) {
-               ValaTypeSymbol* _tmp1253_ = NULL;
-               ValaTypeSymbol* _tmp1254_ = NULL;
-               _tmp1253_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
-               _tmp1254_ = _tmp1253_;
-               _tmp1249_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1254_, VALA_TYPE_CLASS);
+       _tmp1261_ = m;
+       _tmp1262_ = vala_method_get_is_abstract (_tmp1261_);
+       _tmp1263_ = _tmp1262_;
+       if (_tmp1263_) {
+               ValaTypeSymbol* _tmp1264_ = NULL;
+               ValaTypeSymbol* _tmp1265_ = NULL;
+               _tmp1264_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
+               _tmp1265_ = _tmp1264_;
+               _tmp1260_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1265_, VALA_TYPE_CLASS);
        } else {
-               _tmp1249_ = FALSE;
+               _tmp1260_ = FALSE;
        }
-       if (_tmp1249_) {
+       if (_tmp1260_) {
                ValaCCodeFunctionCall* type_from_instance_call = NULL;
-               ValaCCodeIdentifier* _tmp1255_ = NULL;
-               ValaCCodeIdentifier* _tmp1256_ = NULL;
-               ValaCCodeFunctionCall* _tmp1257_ = NULL;
-               ValaCCodeFunctionCall* _tmp1258_ = NULL;
-               ValaCCodeFunctionCall* _tmp1259_ = NULL;
-               ValaCCodeIdentifier* _tmp1260_ = NULL;
-               ValaCCodeIdentifier* _tmp1261_ = NULL;
+               ValaCCodeIdentifier* _tmp1266_ = NULL;
+               ValaCCodeIdentifier* _tmp1267_ = NULL;
+               ValaCCodeFunctionCall* _tmp1268_ = NULL;
+               ValaCCodeFunctionCall* _tmp1269_ = NULL;
+               ValaCCodeFunctionCall* _tmp1270_ = NULL;
+               ValaCCodeIdentifier* _tmp1271_ = NULL;
+               ValaCCodeIdentifier* _tmp1272_ = NULL;
                ValaCCodeFunctionCall* type_name_call = NULL;
-               ValaCCodeIdentifier* _tmp1262_ = NULL;
-               ValaCCodeIdentifier* _tmp1263_ = NULL;
-               ValaCCodeFunctionCall* _tmp1264_ = NULL;
-               ValaCCodeFunctionCall* _tmp1265_ = NULL;
-               ValaCCodeFunctionCall* _tmp1266_ = NULL;
-               ValaCCodeFunctionCall* _tmp1267_ = NULL;
-               gchar* error_string = NULL;
-               ValaMethod* _tmp1268_ = NULL;
-               gchar* _tmp1269_ = NULL;
-               gchar* _tmp1270_ = NULL;
-               gchar* _tmp1271_ = NULL;
-               gchar* _tmp1272_ = NULL;
-               ValaCCodeFunctionCall* cerrorcall = NULL;
                ValaCCodeIdentifier* _tmp1273_ = NULL;
                ValaCCodeIdentifier* _tmp1274_ = NULL;
                ValaCCodeFunctionCall* _tmp1275_ = NULL;
                ValaCCodeFunctionCall* _tmp1276_ = NULL;
                ValaCCodeFunctionCall* _tmp1277_ = NULL;
-               const gchar* _tmp1278_ = NULL;
-               ValaCCodeConstant* _tmp1279_ = NULL;
-               ValaCCodeConstant* _tmp1280_ = NULL;
-               ValaCCodeFunctionCall* _tmp1281_ = NULL;
-               ValaCCodeFunctionCall* _tmp1282_ = NULL;
-               ValaCCodeFunction* _tmp1283_ = NULL;
-               ValaCCodeFunction* _tmp1284_ = NULL;
-               ValaCCodeFunctionCall* _tmp1285_ = NULL;
-               ValaDataType* _tmp1286_ = NULL;
-               ValaCCodeFile* _tmp1287_ = NULL;
-               ValaCCodeFunction* _tmp1288_ = NULL;
-               ValaCCodeFunction* _tmp1289_ = NULL;
-               _tmp1255_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
-               _tmp1256_ = _tmp1255_;
-               _tmp1257_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1256_);
-               _tmp1258_ = _tmp1257_;
-               _vala_ccode_node_unref0 (_tmp1256_);
-               type_from_instance_call = _tmp1258_;
-               _tmp1259_ = type_from_instance_call;
-               _tmp1260_ = vala_ccode_identifier_new ("self");
-               _tmp1261_ = _tmp1260_;
-               vala_ccode_function_call_add_argument (_tmp1259_, (ValaCCodeExpression*) _tmp1261_);
-               _vala_ccode_node_unref0 (_tmp1261_);
-               _tmp1262_ = vala_ccode_identifier_new ("g_type_name");
-               _tmp1263_ = _tmp1262_;
-               _tmp1264_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1263_);
-               _tmp1265_ = _tmp1264_;
-               _vala_ccode_node_unref0 (_tmp1263_);
-               type_name_call = _tmp1265_;
-               _tmp1266_ = type_name_call;
-               _tmp1267_ = type_from_instance_call;
-               vala_ccode_function_call_add_argument (_tmp1266_, (ValaCCodeExpression*) _tmp1267_);
-               _tmp1268_ = m;
-               _tmp1269_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp1268_);
-               _tmp1270_ = _tmp1269_;
-               _tmp1271_ = g_strdup_printf ("\"Type `%%s' does not implement abstract method `%s'\"", _tmp1270_);
+               ValaCCodeFunctionCall* _tmp1278_ = NULL;
+               gchar* error_string = NULL;
+               ValaMethod* _tmp1279_ = NULL;
+               gchar* _tmp1280_ = NULL;
+               gchar* _tmp1281_ = NULL;
+               gchar* _tmp1282_ = NULL;
+               gchar* _tmp1283_ = NULL;
+               ValaCCodeFunctionCall* cerrorcall = NULL;
+               ValaCCodeIdentifier* _tmp1284_ = NULL;
+               ValaCCodeIdentifier* _tmp1285_ = NULL;
+               ValaCCodeFunctionCall* _tmp1286_ = NULL;
+               ValaCCodeFunctionCall* _tmp1287_ = NULL;
+               ValaCCodeFunctionCall* _tmp1288_ = NULL;
+               const gchar* _tmp1289_ = NULL;
+               ValaCCodeConstant* _tmp1290_ = NULL;
+               ValaCCodeConstant* _tmp1291_ = NULL;
+               ValaCCodeFunctionCall* _tmp1292_ = NULL;
+               ValaCCodeFunctionCall* _tmp1293_ = NULL;
+               ValaCCodeFunction* _tmp1294_ = NULL;
+               ValaCCodeFunction* _tmp1295_ = NULL;
+               ValaCCodeFunctionCall* _tmp1296_ = NULL;
+               ValaDataType* _tmp1297_ = NULL;
+               ValaCCodeFile* _tmp1298_ = NULL;
+               ValaCCodeFunction* _tmp1299_ = NULL;
+               ValaCCodeFunction* _tmp1300_ = NULL;
+               _tmp1266_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
+               _tmp1267_ = _tmp1266_;
+               _tmp1268_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1267_);
+               _tmp1269_ = _tmp1268_;
+               _vala_ccode_node_unref0 (_tmp1267_);
+               type_from_instance_call = _tmp1269_;
+               _tmp1270_ = type_from_instance_call;
+               _tmp1271_ = vala_ccode_identifier_new ("self");
                _tmp1272_ = _tmp1271_;
-               _g_free0 (_tmp1270_);
-               error_string = _tmp1272_;
-               _tmp1273_ = vala_ccode_identifier_new ("g_critical");
+               vala_ccode_function_call_add_argument (_tmp1270_, (ValaCCodeExpression*) _tmp1272_);
+               _vala_ccode_node_unref0 (_tmp1272_);
+               _tmp1273_ = vala_ccode_identifier_new ("g_type_name");
                _tmp1274_ = _tmp1273_;
                _tmp1275_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1274_);
                _tmp1276_ = _tmp1275_;
                _vala_ccode_node_unref0 (_tmp1274_);
-               cerrorcall = _tmp1276_;
-               _tmp1277_ = cerrorcall;
-               _tmp1278_ = error_string;
-               _tmp1279_ = vala_ccode_constant_new (_tmp1278_);
-               _tmp1280_ = _tmp1279_;
-               vala_ccode_function_call_add_argument (_tmp1277_, (ValaCCodeExpression*) _tmp1280_);
-               _vala_ccode_node_unref0 (_tmp1280_);
-               _tmp1281_ = cerrorcall;
-               _tmp1282_ = type_name_call;
-               vala_ccode_function_call_add_argument (_tmp1281_, (ValaCCodeExpression*) _tmp1282_);
-               _tmp1283_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp1284_ = _tmp1283_;
-               _tmp1285_ = cerrorcall;
-               vala_ccode_function_add_expression (_tmp1284_, (ValaCCodeExpression*) _tmp1285_);
-               _tmp1286_ = creturn_type;
-               vala_ccode_base_module_return_default_value ((ValaCCodeBaseModule*) self, _tmp1286_);
-               _tmp1287_ = ((ValaCCodeBaseModule*) self)->cfile;
-               _tmp1288_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp1289_ = _tmp1288_;
-               vala_ccode_file_add_function (_tmp1287_, _tmp1289_);
+               type_name_call = _tmp1276_;
+               _tmp1277_ = type_name_call;
+               _tmp1278_ = type_from_instance_call;
+               vala_ccode_function_call_add_argument (_tmp1277_, (ValaCCodeExpression*) _tmp1278_);
+               _tmp1279_ = m;
+               _tmp1280_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp1279_);
+               _tmp1281_ = _tmp1280_;
+               _tmp1282_ = g_strdup_printf ("\"Type `%%s' does not implement abstract method `%s'\"", _tmp1281_);
+               _tmp1283_ = _tmp1282_;
+               _g_free0 (_tmp1281_);
+               error_string = _tmp1283_;
+               _tmp1284_ = vala_ccode_identifier_new ("g_critical");
+               _tmp1285_ = _tmp1284_;
+               _tmp1286_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1285_);
+               _tmp1287_ = _tmp1286_;
+               _vala_ccode_node_unref0 (_tmp1285_);
+               cerrorcall = _tmp1287_;
+               _tmp1288_ = cerrorcall;
+               _tmp1289_ = error_string;
+               _tmp1290_ = vala_ccode_constant_new (_tmp1289_);
+               _tmp1291_ = _tmp1290_;
+               vala_ccode_function_call_add_argument (_tmp1288_, (ValaCCodeExpression*) _tmp1291_);
+               _vala_ccode_node_unref0 (_tmp1291_);
+               _tmp1292_ = cerrorcall;
+               _tmp1293_ = type_name_call;
+               vala_ccode_function_call_add_argument (_tmp1292_, (ValaCCodeExpression*) _tmp1293_);
+               _tmp1294_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp1295_ = _tmp1294_;
+               _tmp1296_ = cerrorcall;
+               vala_ccode_function_add_expression (_tmp1295_, (ValaCCodeExpression*) _tmp1296_);
+               _tmp1297_ = creturn_type;
+               vala_ccode_base_module_return_default_value ((ValaCCodeBaseModule*) self, _tmp1297_);
+               _tmp1298_ = ((ValaCCodeBaseModule*) self)->cfile;
+               _tmp1299_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp1300_ = _tmp1299_;
+               vala_ccode_file_add_function (_tmp1298_, _tmp1300_);
                _vala_ccode_node_unref0 (cerrorcall);
                _g_free0 (error_string);
                _vala_ccode_node_unref0 (type_name_call);
                _vala_ccode_node_unref0 (type_from_instance_call);
        }
        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
-       _tmp1293_ = m;
-       _tmp1294_ = vala_method_get_is_abstract (_tmp1293_);
-       _tmp1295_ = _tmp1294_;
-       if (_tmp1295_) {
-               _tmp1292_ = TRUE;
+       _tmp1304_ = m;
+       _tmp1305_ = vala_method_get_is_abstract (_tmp1304_);
+       _tmp1306_ = _tmp1305_;
+       if (_tmp1306_) {
+               _tmp1303_ = TRUE;
        } else {
-               ValaMethod* _tmp1296_ = NULL;
-               gboolean _tmp1297_ = FALSE;
-               gboolean _tmp1298_ = FALSE;
-               _tmp1296_ = m;
-               _tmp1297_ = vala_method_get_is_virtual (_tmp1296_);
-               _tmp1298_ = _tmp1297_;
-               _tmp1292_ = _tmp1298_;
+               ValaMethod* _tmp1307_ = NULL;
+               gboolean _tmp1308_ = FALSE;
+               gboolean _tmp1309_ = FALSE;
+               _tmp1307_ = m;
+               _tmp1308_ = vala_method_get_is_virtual (_tmp1307_);
+               _tmp1309_ = _tmp1308_;
+               _tmp1303_ = _tmp1309_;
        }
-       if (_tmp1292_) {
-               ValaMethod* _tmp1299_ = NULL;
-               gboolean _tmp1300_ = FALSE;
-               gboolean _tmp1301_ = FALSE;
-               _tmp1299_ = m;
-               _tmp1300_ = vala_method_get_coroutine (_tmp1299_);
-               _tmp1301_ = _tmp1300_;
-               _tmp1291_ = !_tmp1301_;
+       if (_tmp1303_) {
+               ValaMethod* _tmp1310_ = NULL;
+               gboolean _tmp1311_ = FALSE;
+               gboolean _tmp1312_ = FALSE;
+               _tmp1310_ = m;
+               _tmp1311_ = vala_method_get_coroutine (_tmp1310_);
+               _tmp1312_ = _tmp1311_;
+               _tmp1302_ = !_tmp1312_;
        } else {
-               _tmp1291_ = FALSE;
+               _tmp1302_ = FALSE;
        }
-       if (_tmp1291_) {
-               ValaMethod* _tmp1302_ = NULL;
-               ValaSignal* _tmp1303_ = NULL;
-               ValaSignal* _tmp1304_ = NULL;
-               _tmp1302_ = m;
-               _tmp1303_ = vala_method_get_signal_reference (_tmp1302_);
-               _tmp1304_ = _tmp1303_;
-               _tmp1290_ = _tmp1304_ == NULL;
+       if (_tmp1302_) {
+               ValaMethod* _tmp1313_ = NULL;
+               ValaSignal* _tmp1314_ = NULL;
+               ValaSignal* _tmp1315_ = NULL;
+               _tmp1313_ = m;
+               _tmp1314_ = vala_method_get_signal_reference (_tmp1313_);
+               _tmp1315_ = _tmp1314_;
+               _tmp1301_ = _tmp1315_ == NULL;
        } else {
-               _tmp1290_ = FALSE;
+               _tmp1301_ = FALSE;
        }
-       if (_tmp1290_) {
-               GHashFunc _tmp1305_ = NULL;
-               GEqualFunc _tmp1306_ = NULL;
-               GEqualFunc _tmp1307_ = NULL;
-               ValaHashMap* _tmp1308_ = NULL;
+       if (_tmp1301_) {
+               GHashFunc _tmp1316_ = NULL;
+               GEqualFunc _tmp1317_ = NULL;
+               GEqualFunc _tmp1318_ = NULL;
+               ValaHashMap* _tmp1319_ = NULL;
                ValaHashMap* carg_map = NULL;
-               GHashFunc _tmp1309_ = NULL;
-               GEqualFunc _tmp1310_ = NULL;
-               GEqualFunc _tmp1311_ = NULL;
-               ValaHashMap* _tmp1312_ = NULL;
-               ValaMethod* _tmp1313_ = NULL;
-               ValaDataType* _tmp1314_ = NULL;
-               ValaHashMap* _tmp1315_ = NULL;
-               ValaHashMap* _tmp1316_ = NULL;
-               _tmp1305_ = g_direct_hash;
-               _tmp1306_ = g_direct_equal;
-               _tmp1307_ = g_direct_equal;
-               _tmp1308_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp1305_, _tmp1306_, _tmp1307_);
+               GHashFunc _tmp1320_ = NULL;
+               GEqualFunc _tmp1321_ = NULL;
+               GEqualFunc _tmp1322_ = NULL;
+               ValaHashMap* _tmp1323_ = NULL;
+               ValaMethod* _tmp1324_ = NULL;
+               ValaDataType* _tmp1325_ = NULL;
+               ValaHashMap* _tmp1326_ = NULL;
+               ValaHashMap* _tmp1327_ = NULL;
+               _tmp1316_ = g_direct_hash;
+               _tmp1317_ = g_direct_equal;
+               _tmp1318_ = g_direct_equal;
+               _tmp1319_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp1316_, _tmp1317_, _tmp1318_);
                _vala_map_unref0 (cparam_map);
-               cparam_map = _tmp1308_;
-               _tmp1309_ = g_direct_hash;
-               _tmp1310_ = g_direct_equal;
-               _tmp1311_ = g_direct_equal;
-               _tmp1312_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp1309_, _tmp1310_, _tmp1311_);
-               carg_map = _tmp1312_;
-               _tmp1313_ = m;
-               _tmp1314_ = creturn_type;
-               _tmp1315_ = cparam_map;
-               _tmp1316_ = carg_map;
-               vala_ccode_method_module_generate_vfunc (self, _tmp1313_, _tmp1314_, (ValaMap*) _tmp1315_, (ValaMap*) _tmp1316_, "", 3);
+               cparam_map = _tmp1319_;
+               _tmp1320_ = g_direct_hash;
+               _tmp1321_ = g_direct_equal;
+               _tmp1322_ = g_direct_equal;
+               _tmp1323_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp1320_, _tmp1321_, _tmp1322_);
+               carg_map = _tmp1323_;
+               _tmp1324_ = m;
+               _tmp1325_ = creturn_type;
+               _tmp1326_ = cparam_map;
+               _tmp1327_ = carg_map;
+               vala_ccode_method_module_generate_vfunc (self, _tmp1324_, _tmp1325_, (ValaMap*) _tmp1326_, (ValaMap*) _tmp1327_, "", 3);
                _vala_map_unref0 (carg_map);
        }
-       _tmp1317_ = m;
-       _tmp1318_ = vala_method_get_entry_point (_tmp1317_);
-       _tmp1319_ = _tmp1318_;
-       if (_tmp1319_) {
+       _tmp1328_ = m;
+       _tmp1329_ = vala_method_get_entry_point (_tmp1328_);
+       _tmp1330_ = _tmp1329_;
+       if (_tmp1330_) {
                ValaCCodeFunction* cmain = NULL;
-               ValaCCodeFunction* _tmp1320_ = NULL;
-               ValaCCodeFunction* _tmp1321_ = NULL;
-               ValaCCodeFunction* _tmp1322_ = NULL;
-               ValaCCodeLineDirective* _tmp1323_ = NULL;
-               ValaCCodeLineDirective* _tmp1324_ = NULL;
-               ValaCCodeFunction* _tmp1325_ = NULL;
-               ValaCCodeParameter* _tmp1326_ = NULL;
-               ValaCCodeParameter* _tmp1327_ = NULL;
-               ValaCCodeFunction* _tmp1328_ = NULL;
-               ValaCCodeParameter* _tmp1329_ = NULL;
-               ValaCCodeParameter* _tmp1330_ = NULL;
                ValaCCodeFunction* _tmp1331_ = NULL;
-               ValaCodeContext* _tmp1332_ = NULL;
-               ValaCodeContext* _tmp1333_ = NULL;
-               gboolean _tmp1334_ = FALSE;
-               gboolean _tmp1335_ = FALSE;
-               ValaCodeContext* _tmp1350_ = NULL;
-               ValaCodeContext* _tmp1351_ = NULL;
-               gboolean _tmp1352_ = FALSE;
-               gboolean _tmp1353_ = FALSE;
+               ValaCCodeFunction* _tmp1332_ = NULL;
+               ValaCCodeFunction* _tmp1333_ = NULL;
+               ValaCCodeLineDirective* _tmp1334_ = NULL;
+               ValaCCodeLineDirective* _tmp1335_ = NULL;
+               ValaCCodeFunction* _tmp1336_ = NULL;
+               ValaCCodeParameter* _tmp1337_ = NULL;
+               ValaCCodeParameter* _tmp1338_ = NULL;
+               ValaCCodeFunction* _tmp1339_ = NULL;
+               ValaCCodeParameter* _tmp1340_ = NULL;
+               ValaCCodeParameter* _tmp1341_ = NULL;
+               ValaCCodeFunction* _tmp1342_ = NULL;
+               ValaCodeContext* _tmp1343_ = NULL;
+               ValaCodeContext* _tmp1344_ = NULL;
+               gboolean _tmp1345_ = FALSE;
+               gboolean _tmp1346_ = FALSE;
+               ValaCodeContext* _tmp1361_ = NULL;
+               ValaCodeContext* _tmp1362_ = NULL;
+               gboolean _tmp1363_ = FALSE;
+               gboolean _tmp1364_ = FALSE;
                ValaCCodeIfSection* cond = NULL;
-               ValaCCodeIfSection* _tmp1373_ = NULL;
-               ValaCCodeFunction* _tmp1374_ = NULL;
-               ValaCCodeFunction* _tmp1375_ = NULL;
-               ValaCCodeIfSection* _tmp1376_ = NULL;
-               ValaCCodeIfSection* _tmp1377_ = NULL;
-               ValaCCodeIdentifier* _tmp1378_ = NULL;
-               ValaCCodeIdentifier* _tmp1379_ = NULL;
-               ValaCCodeFunctionCall* _tmp1380_ = NULL;
-               ValaCCodeFunctionCall* _tmp1381_ = NULL;
-               ValaCCodeExpressionStatement* _tmp1382_ = NULL;
-               ValaCCodeExpressionStatement* _tmp1383_ = NULL;
+               ValaCCodeIfSection* _tmp1384_ = NULL;
+               ValaCCodeFunction* _tmp1385_ = NULL;
+               ValaCCodeFunction* _tmp1386_ = NULL;
+               ValaCCodeIfSection* _tmp1387_ = NULL;
+               ValaCCodeIfSection* _tmp1388_ = NULL;
+               ValaCCodeIdentifier* _tmp1389_ = NULL;
+               ValaCCodeIdentifier* _tmp1390_ = NULL;
+               ValaCCodeFunctionCall* _tmp1391_ = NULL;
+               ValaCCodeFunctionCall* _tmp1392_ = NULL;
+               ValaCCodeExpressionStatement* _tmp1393_ = NULL;
+               ValaCCodeExpressionStatement* _tmp1394_ = NULL;
                ValaCCodeFunctionCall* main_call = NULL;
-               ValaCCodeFunction* _tmp1384_ = NULL;
-               const gchar* _tmp1385_ = NULL;
-               const gchar* _tmp1386_ = NULL;
-               ValaCCodeIdentifier* _tmp1387_ = NULL;
-               ValaCCodeIdentifier* _tmp1388_ = NULL;
-               ValaCCodeFunctionCall* _tmp1389_ = NULL;
-               ValaCCodeFunctionCall* _tmp1390_ = NULL;
-               ValaMethod* _tmp1391_ = NULL;
-               ValaList* _tmp1392_ = NULL;
-               ValaList* _tmp1393_ = NULL;
-               gint _tmp1394_ = 0;
-               gint _tmp1395_ = 0;
-               gboolean _tmp1396_ = FALSE;
-               ValaMethod* _tmp1403_ = NULL;
-               ValaDataType* _tmp1404_ = NULL;
-               ValaDataType* _tmp1405_ = NULL;
-               ValaCCodeFile* _tmp1416_ = NULL;
-               ValaCCodeFunction* _tmp1417_ = NULL;
-               _tmp1320_ = vala_ccode_function_new ("main", "int");
-               cmain = _tmp1320_;
-               _tmp1321_ = cmain;
-               _tmp1322_ = function;
-               _tmp1323_ = vala_ccode_node_get_line ((ValaCCodeNode*) _tmp1322_);
-               _tmp1324_ = _tmp1323_;
-               vala_ccode_node_set_line ((ValaCCodeNode*) _tmp1321_, _tmp1324_);
-               _tmp1325_ = cmain;
-               _tmp1326_ = vala_ccode_parameter_new ("argc", "int");
-               _tmp1327_ = _tmp1326_;
-               vala_ccode_function_add_parameter (_tmp1325_, _tmp1327_);
-               _vala_ccode_node_unref0 (_tmp1327_);
-               _tmp1328_ = cmain;
-               _tmp1329_ = vala_ccode_parameter_new ("argv", "char **");
-               _tmp1330_ = _tmp1329_;
-               vala_ccode_function_add_parameter (_tmp1328_, _tmp1330_);
-               _vala_ccode_node_unref0 (_tmp1330_);
-               _tmp1331_ = cmain;
-               vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp1331_);
-               _tmp1332_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-               _tmp1333_ = _tmp1332_;
-               _tmp1334_ = vala_code_context_get_mem_profiler (_tmp1333_);
+               ValaCCodeFunction* _tmp1395_ = NULL;
+               const gchar* _tmp1396_ = NULL;
+               const gchar* _tmp1397_ = NULL;
+               ValaCCodeIdentifier* _tmp1398_ = NULL;
+               ValaCCodeIdentifier* _tmp1399_ = NULL;
+               ValaCCodeFunctionCall* _tmp1400_ = NULL;
+               ValaCCodeFunctionCall* _tmp1401_ = NULL;
+               ValaMethod* _tmp1402_ = NULL;
+               ValaList* _tmp1403_ = NULL;
+               ValaList* _tmp1404_ = NULL;
+               gint _tmp1405_ = 0;
+               gint _tmp1406_ = 0;
+               gboolean _tmp1407_ = FALSE;
+               ValaMethod* _tmp1414_ = NULL;
+               ValaDataType* _tmp1415_ = NULL;
+               ValaDataType* _tmp1416_ = NULL;
+               ValaCCodeFile* _tmp1427_ = NULL;
+               ValaCCodeFunction* _tmp1428_ = NULL;
+               _tmp1331_ = vala_ccode_function_new ("main", "int");
+               cmain = _tmp1331_;
+               _tmp1332_ = cmain;
+               _tmp1333_ = function;
+               _tmp1334_ = vala_ccode_node_get_line ((ValaCCodeNode*) _tmp1333_);
                _tmp1335_ = _tmp1334_;
-               if (_tmp1335_) {
+               vala_ccode_node_set_line ((ValaCCodeNode*) _tmp1332_, _tmp1335_);
+               _tmp1336_ = cmain;
+               _tmp1337_ = vala_ccode_parameter_new ("argc", "int");
+               _tmp1338_ = _tmp1337_;
+               vala_ccode_function_add_parameter (_tmp1336_, _tmp1338_);
+               _vala_ccode_node_unref0 (_tmp1338_);
+               _tmp1339_ = cmain;
+               _tmp1340_ = vala_ccode_parameter_new ("argv", "char **");
+               _tmp1341_ = _tmp1340_;
+               vala_ccode_function_add_parameter (_tmp1339_, _tmp1341_);
+               _vala_ccode_node_unref0 (_tmp1341_);
+               _tmp1342_ = cmain;
+               vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp1342_);
+               _tmp1343_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp1344_ = _tmp1343_;
+               _tmp1345_ = vala_code_context_get_mem_profiler (_tmp1344_);
+               _tmp1346_ = _tmp1345_;
+               if (_tmp1346_) {
                        ValaCCodeFunctionCall* mem_profiler_init_call = NULL;
-                       ValaCCodeIdentifier* _tmp1336_ = NULL;
-                       ValaCCodeIdentifier* _tmp1337_ = NULL;
-                       ValaCCodeFunctionCall* _tmp1338_ = NULL;
-                       ValaCCodeFunctionCall* _tmp1339_ = NULL;
-                       ValaCCodeFunctionCall* _tmp1340_ = NULL;
-                       ValaCCodeFunction* _tmp1341_ = NULL;
-                       ValaCCodeLineDirective* _tmp1342_ = NULL;
-                       ValaCCodeLineDirective* _tmp1343_ = NULL;
-                       ValaCCodeFunctionCall* _tmp1344_ = NULL;
-                       ValaCCodeConstant* _tmp1345_ = NULL;
-                       ValaCCodeConstant* _tmp1346_ = NULL;
-                       ValaCCodeFunction* _tmp1347_ = NULL;
-                       ValaCCodeFunction* _tmp1348_ = NULL;
+                       ValaCCodeIdentifier* _tmp1347_ = NULL;
+                       ValaCCodeIdentifier* _tmp1348_ = NULL;
                        ValaCCodeFunctionCall* _tmp1349_ = NULL;
-                       _tmp1336_ = vala_ccode_identifier_new ("g_mem_set_vtable");
-                       _tmp1337_ = _tmp1336_;
-                       _tmp1338_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1337_);
-                       _tmp1339_ = _tmp1338_;
-                       _vala_ccode_node_unref0 (_tmp1337_);
-                       mem_profiler_init_call = _tmp1339_;
-                       _tmp1340_ = mem_profiler_init_call;
-                       _tmp1341_ = cmain;
-                       _tmp1342_ = vala_ccode_node_get_line ((ValaCCodeNode*) _tmp1341_);
-                       _tmp1343_ = _tmp1342_;
-                       vala_ccode_node_set_line ((ValaCCodeNode*) _tmp1340_, _tmp1343_);
-                       _tmp1344_ = mem_profiler_init_call;
-                       _tmp1345_ = vala_ccode_constant_new ("glib_mem_profiler_table");
-                       _tmp1346_ = _tmp1345_;
-                       vala_ccode_function_call_add_argument (_tmp1344_, (ValaCCodeExpression*) _tmp1346_);
-                       _vala_ccode_node_unref0 (_tmp1346_);
-                       _tmp1347_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       ValaCCodeFunctionCall* _tmp1350_ = NULL;
+                       ValaCCodeFunctionCall* _tmp1351_ = NULL;
+                       ValaCCodeFunction* _tmp1352_ = NULL;
+                       ValaCCodeLineDirective* _tmp1353_ = NULL;
+                       ValaCCodeLineDirective* _tmp1354_ = NULL;
+                       ValaCCodeFunctionCall* _tmp1355_ = NULL;
+                       ValaCCodeConstant* _tmp1356_ = NULL;
+                       ValaCCodeConstant* _tmp1357_ = NULL;
+                       ValaCCodeFunction* _tmp1358_ = NULL;
+                       ValaCCodeFunction* _tmp1359_ = NULL;
+                       ValaCCodeFunctionCall* _tmp1360_ = NULL;
+                       _tmp1347_ = vala_ccode_identifier_new ("g_mem_set_vtable");
                        _tmp1348_ = _tmp1347_;
-                       _tmp1349_ = mem_profiler_init_call;
-                       vala_ccode_function_add_expression (_tmp1348_, (ValaCCodeExpression*) _tmp1349_);
+                       _tmp1349_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1348_);
+                       _tmp1350_ = _tmp1349_;
+                       _vala_ccode_node_unref0 (_tmp1348_);
+                       mem_profiler_init_call = _tmp1350_;
+                       _tmp1351_ = mem_profiler_init_call;
+                       _tmp1352_ = cmain;
+                       _tmp1353_ = vala_ccode_node_get_line ((ValaCCodeNode*) _tmp1352_);
+                       _tmp1354_ = _tmp1353_;
+                       vala_ccode_node_set_line ((ValaCCodeNode*) _tmp1351_, _tmp1354_);
+                       _tmp1355_ = mem_profiler_init_call;
+                       _tmp1356_ = vala_ccode_constant_new ("glib_mem_profiler_table");
+                       _tmp1357_ = _tmp1356_;
+                       vala_ccode_function_call_add_argument (_tmp1355_, (ValaCCodeExpression*) _tmp1357_);
+                       _vala_ccode_node_unref0 (_tmp1357_);
+                       _tmp1358_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp1359_ = _tmp1358_;
+                       _tmp1360_ = mem_profiler_init_call;
+                       vala_ccode_function_add_expression (_tmp1359_, (ValaCCodeExpression*) _tmp1360_);
                        _vala_ccode_node_unref0 (mem_profiler_init_call);
                }
-               _tmp1350_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-               _tmp1351_ = _tmp1350_;
-               _tmp1352_ = vala_code_context_get_thread (_tmp1351_);
-               _tmp1353_ = _tmp1352_;
-               if (_tmp1353_) {
+               _tmp1361_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp1362_ = _tmp1361_;
+               _tmp1363_ = vala_code_context_get_thread (_tmp1362_);
+               _tmp1364_ = _tmp1363_;
+               if (_tmp1364_) {
                        ValaCCodeFunctionCall* thread_init_call = NULL;
-                       ValaCCodeIdentifier* _tmp1354_ = NULL;
-                       ValaCCodeIdentifier* _tmp1355_ = NULL;
-                       ValaCCodeFunctionCall* _tmp1356_ = NULL;
-                       ValaCCodeFunctionCall* _tmp1357_ = NULL;
-                       ValaCCodeFunctionCall* _tmp1358_ = NULL;
-                       ValaCCodeFunction* _tmp1359_ = NULL;
-                       ValaCCodeLineDirective* _tmp1360_ = NULL;
-                       ValaCCodeLineDirective* _tmp1361_ = NULL;
-                       ValaCCodeFunctionCall* _tmp1362_ = NULL;
-                       ValaCCodeConstant* _tmp1363_ = NULL;
-                       ValaCCodeConstant* _tmp1364_ = NULL;
+                       ValaCCodeIdentifier* _tmp1365_ = NULL;
+                       ValaCCodeIdentifier* _tmp1366_ = NULL;
+                       ValaCCodeFunctionCall* _tmp1367_ = NULL;
+                       ValaCCodeFunctionCall* _tmp1368_ = NULL;
+                       ValaCCodeFunctionCall* _tmp1369_ = NULL;
+                       ValaCCodeFunction* _tmp1370_ = NULL;
+                       ValaCCodeLineDirective* _tmp1371_ = NULL;
+                       ValaCCodeLineDirective* _tmp1372_ = NULL;
+                       ValaCCodeFunctionCall* _tmp1373_ = NULL;
+                       ValaCCodeConstant* _tmp1374_ = NULL;
+                       ValaCCodeConstant* _tmp1375_ = NULL;
                        ValaCCodeIfSection* cond = NULL;
-                       ValaCCodeIfSection* _tmp1365_ = NULL;
-                       ValaCCodeFunction* _tmp1366_ = NULL;
-                       ValaCCodeFunction* _tmp1367_ = NULL;
-                       ValaCCodeIfSection* _tmp1368_ = NULL;
-                       ValaCCodeIfSection* _tmp1369_ = NULL;
-                       ValaCCodeFunctionCall* _tmp1370_ = NULL;
-                       ValaCCodeExpressionStatement* _tmp1371_ = NULL;
-                       ValaCCodeExpressionStatement* _tmp1372_ = NULL;
-                       _tmp1354_ = vala_ccode_identifier_new ("g_thread_init");
-                       _tmp1355_ = _tmp1354_;
-                       _tmp1356_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1355_);
-                       _tmp1357_ = _tmp1356_;
-                       _vala_ccode_node_unref0 (_tmp1355_);
-                       thread_init_call = _tmp1357_;
-                       _tmp1358_ = thread_init_call;
-                       _tmp1359_ = cmain;
-                       _tmp1360_ = vala_ccode_node_get_line ((ValaCCodeNode*) _tmp1359_);
-                       _tmp1361_ = _tmp1360_;
-                       vala_ccode_node_set_line ((ValaCCodeNode*) _tmp1358_, _tmp1361_);
-                       _tmp1362_ = thread_init_call;
-                       _tmp1363_ = vala_ccode_constant_new ("NULL");
-                       _tmp1364_ = _tmp1363_;
-                       vala_ccode_function_call_add_argument (_tmp1362_, (ValaCCodeExpression*) _tmp1364_);
-                       _vala_ccode_node_unref0 (_tmp1364_);
-                       _tmp1365_ = vala_ccode_if_section_new ("!GLIB_CHECK_VERSION (2,32,0)");
-                       cond = _tmp1365_;
-                       _tmp1366_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp1367_ = _tmp1366_;
-                       _tmp1368_ = cond;
-                       vala_ccode_function_add_statement (_tmp1367_, (ValaCCodeNode*) _tmp1368_);
-                       _tmp1369_ = cond;
-                       _tmp1370_ = thread_init_call;
-                       _tmp1371_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp1370_);
+                       ValaCCodeIfSection* _tmp1376_ = NULL;
+                       ValaCCodeFunction* _tmp1377_ = NULL;
+                       ValaCCodeFunction* _tmp1378_ = NULL;
+                       ValaCCodeIfSection* _tmp1379_ = NULL;
+                       ValaCCodeIfSection* _tmp1380_ = NULL;
+                       ValaCCodeFunctionCall* _tmp1381_ = NULL;
+                       ValaCCodeExpressionStatement* _tmp1382_ = NULL;
+                       ValaCCodeExpressionStatement* _tmp1383_ = NULL;
+                       _tmp1365_ = vala_ccode_identifier_new ("g_thread_init");
+                       _tmp1366_ = _tmp1365_;
+                       _tmp1367_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1366_);
+                       _tmp1368_ = _tmp1367_;
+                       _vala_ccode_node_unref0 (_tmp1366_);
+                       thread_init_call = _tmp1368_;
+                       _tmp1369_ = thread_init_call;
+                       _tmp1370_ = cmain;
+                       _tmp1371_ = vala_ccode_node_get_line ((ValaCCodeNode*) _tmp1370_);
                        _tmp1372_ = _tmp1371_;
-                       vala_ccode_fragment_append ((ValaCCodeFragment*) _tmp1369_, (ValaCCodeNode*) _tmp1372_);
-                       _vala_ccode_node_unref0 (_tmp1372_);
+                       vala_ccode_node_set_line ((ValaCCodeNode*) _tmp1369_, _tmp1372_);
+                       _tmp1373_ = thread_init_call;
+                       _tmp1374_ = vala_ccode_constant_new ("NULL");
+                       _tmp1375_ = _tmp1374_;
+                       vala_ccode_function_call_add_argument (_tmp1373_, (ValaCCodeExpression*) _tmp1375_);
+                       _vala_ccode_node_unref0 (_tmp1375_);
+                       _tmp1376_ = vala_ccode_if_section_new ("!GLIB_CHECK_VERSION (2,32,0)");
+                       cond = _tmp1376_;
+                       _tmp1377_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp1378_ = _tmp1377_;
+                       _tmp1379_ = cond;
+                       vala_ccode_function_add_statement (_tmp1378_, (ValaCCodeNode*) _tmp1379_);
+                       _tmp1380_ = cond;
+                       _tmp1381_ = thread_init_call;
+                       _tmp1382_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp1381_);
+                       _tmp1383_ = _tmp1382_;
+                       vala_ccode_fragment_append ((ValaCCodeFragment*) _tmp1380_, (ValaCCodeNode*) _tmp1383_);
+                       _vala_ccode_node_unref0 (_tmp1383_);
                        _vala_ccode_node_unref0 (cond);
                        _vala_ccode_node_unref0 (thread_init_call);
                }
-               _tmp1373_ = vala_ccode_if_section_new ("!GLIB_CHECK_VERSION (2,35,0)");
-               cond = _tmp1373_;
-               _tmp1374_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp1375_ = _tmp1374_;
-               _tmp1376_ = cond;
-               vala_ccode_function_add_statement (_tmp1375_, (ValaCCodeNode*) _tmp1376_);
-               _tmp1377_ = cond;
-               _tmp1378_ = vala_ccode_identifier_new ("g_type_init");
-               _tmp1379_ = _tmp1378_;
-               _tmp1380_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1379_);
-               _tmp1381_ = _tmp1380_;
-               _tmp1382_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp1381_);
-               _tmp1383_ = _tmp1382_;
-               vala_ccode_fragment_append ((ValaCCodeFragment*) _tmp1377_, (ValaCCodeNode*) _tmp1383_);
-               _vala_ccode_node_unref0 (_tmp1383_);
-               _vala_ccode_node_unref0 (_tmp1381_);
-               _vala_ccode_node_unref0 (_tmp1379_);
-               _tmp1384_ = function;
-               _tmp1385_ = vala_ccode_function_get_name (_tmp1384_);
+               _tmp1384_ = vala_ccode_if_section_new ("!GLIB_CHECK_VERSION (2,35,0)");
+               cond = _tmp1384_;
+               _tmp1385_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                _tmp1386_ = _tmp1385_;
-               _tmp1387_ = vala_ccode_identifier_new (_tmp1386_);
-               _tmp1388_ = _tmp1387_;
-               _tmp1389_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1388_);
+               _tmp1387_ = cond;
+               vala_ccode_function_add_statement (_tmp1386_, (ValaCCodeNode*) _tmp1387_);
+               _tmp1388_ = cond;
+               _tmp1389_ = vala_ccode_identifier_new ("g_type_init");
                _tmp1390_ = _tmp1389_;
-               _vala_ccode_node_unref0 (_tmp1388_);
-               main_call = _tmp1390_;
-               _tmp1391_ = m;
-               _tmp1392_ = vala_method_get_parameters (_tmp1391_);
-               _tmp1393_ = _tmp1392_;
-               _tmp1394_ = vala_collection_get_size ((ValaCollection*) _tmp1393_);
-               _tmp1395_ = _tmp1394_;
-               _tmp1396_ = _tmp1395_ == 1;
-               _vala_iterable_unref0 (_tmp1393_);
-               if (_tmp1396_) {
-                       ValaCCodeFunctionCall* _tmp1397_ = NULL;
-                       ValaCCodeIdentifier* _tmp1398_ = NULL;
-                       ValaCCodeIdentifier* _tmp1399_ = NULL;
-                       ValaCCodeFunctionCall* _tmp1400_ = NULL;
-                       ValaCCodeIdentifier* _tmp1401_ = NULL;
-                       ValaCCodeIdentifier* _tmp1402_ = NULL;
-                       _tmp1397_ = main_call;
-                       _tmp1398_ = vala_ccode_identifier_new ("argv");
-                       _tmp1399_ = _tmp1398_;
-                       vala_ccode_function_call_add_argument (_tmp1397_, (ValaCCodeExpression*) _tmp1399_);
-                       _vala_ccode_node_unref0 (_tmp1399_);
-                       _tmp1400_ = main_call;
-                       _tmp1401_ = vala_ccode_identifier_new ("argc");
-                       _tmp1402_ = _tmp1401_;
-                       vala_ccode_function_call_add_argument (_tmp1400_, (ValaCCodeExpression*) _tmp1402_);
-                       _vala_ccode_node_unref0 (_tmp1402_);
-               }
-               _tmp1403_ = m;
-               _tmp1404_ = vala_method_get_return_type (_tmp1403_);
-               _tmp1405_ = _tmp1404_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1405_, VALA_TYPE_VOID_TYPE)) {
-                       ValaCCodeFunction* _tmp1406_ = NULL;
-                       ValaCCodeFunction* _tmp1407_ = NULL;
+               _tmp1391_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1390_);
+               _tmp1392_ = _tmp1391_;
+               _tmp1393_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp1392_);
+               _tmp1394_ = _tmp1393_;
+               vala_ccode_fragment_append ((ValaCCodeFragment*) _tmp1388_, (ValaCCodeNode*) _tmp1394_);
+               _vala_ccode_node_unref0 (_tmp1394_);
+               _vala_ccode_node_unref0 (_tmp1392_);
+               _vala_ccode_node_unref0 (_tmp1390_);
+               _tmp1395_ = function;
+               _tmp1396_ = vala_ccode_function_get_name (_tmp1395_);
+               _tmp1397_ = _tmp1396_;
+               _tmp1398_ = vala_ccode_identifier_new (_tmp1397_);
+               _tmp1399_ = _tmp1398_;
+               _tmp1400_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1399_);
+               _tmp1401_ = _tmp1400_;
+               _vala_ccode_node_unref0 (_tmp1399_);
+               main_call = _tmp1401_;
+               _tmp1402_ = m;
+               _tmp1403_ = vala_method_get_parameters (_tmp1402_);
+               _tmp1404_ = _tmp1403_;
+               _tmp1405_ = vala_collection_get_size ((ValaCollection*) _tmp1404_);
+               _tmp1406_ = _tmp1405_;
+               _tmp1407_ = _tmp1406_ == 1;
+               _vala_iterable_unref0 (_tmp1404_);
+               if (_tmp1407_) {
                        ValaCCodeFunctionCall* _tmp1408_ = NULL;
-                       ValaCCodeFunction* _tmp1409_ = NULL;
-                       ValaCCodeFunction* _tmp1410_ = NULL;
-                       ValaCCodeConstant* _tmp1411_ = NULL;
-                       ValaCCodeConstant* _tmp1412_ = NULL;
-                       _tmp1406_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp1407_ = _tmp1406_;
+                       ValaCCodeIdentifier* _tmp1409_ = NULL;
+                       ValaCCodeIdentifier* _tmp1410_ = NULL;
+                       ValaCCodeFunctionCall* _tmp1411_ = NULL;
+                       ValaCCodeIdentifier* _tmp1412_ = NULL;
+                       ValaCCodeIdentifier* _tmp1413_ = NULL;
                        _tmp1408_ = main_call;
-                       vala_ccode_function_add_expression (_tmp1407_, (ValaCCodeExpression*) _tmp1408_);
-                       _tmp1409_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp1409_ = vala_ccode_identifier_new ("argv");
                        _tmp1410_ = _tmp1409_;
-                       _tmp1411_ = vala_ccode_constant_new ("0");
-                       _tmp1412_ = _tmp1411_;
-                       vala_ccode_function_add_return (_tmp1410_, (ValaCCodeExpression*) _tmp1412_);
-                       _vala_ccode_node_unref0 (_tmp1412_);
+                       vala_ccode_function_call_add_argument (_tmp1408_, (ValaCCodeExpression*) _tmp1410_);
+                       _vala_ccode_node_unref0 (_tmp1410_);
+                       _tmp1411_ = main_call;
+                       _tmp1412_ = vala_ccode_identifier_new ("argc");
+                       _tmp1413_ = _tmp1412_;
+                       vala_ccode_function_call_add_argument (_tmp1411_, (ValaCCodeExpression*) _tmp1413_);
+                       _vala_ccode_node_unref0 (_tmp1413_);
+               }
+               _tmp1414_ = m;
+               _tmp1415_ = vala_method_get_return_type (_tmp1414_);
+               _tmp1416_ = _tmp1415_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1416_, VALA_TYPE_VOID_TYPE)) {
+                       ValaCCodeFunction* _tmp1417_ = NULL;
+                       ValaCCodeFunction* _tmp1418_ = NULL;
+                       ValaCCodeFunctionCall* _tmp1419_ = NULL;
+                       ValaCCodeFunction* _tmp1420_ = NULL;
+                       ValaCCodeFunction* _tmp1421_ = NULL;
+                       ValaCCodeConstant* _tmp1422_ = NULL;
+                       ValaCCodeConstant* _tmp1423_ = NULL;
+                       _tmp1417_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp1418_ = _tmp1417_;
+                       _tmp1419_ = main_call;
+                       vala_ccode_function_add_expression (_tmp1418_, (ValaCCodeExpression*) _tmp1419_);
+                       _tmp1420_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp1421_ = _tmp1420_;
+                       _tmp1422_ = vala_ccode_constant_new ("0");
+                       _tmp1423_ = _tmp1422_;
+                       vala_ccode_function_add_return (_tmp1421_, (ValaCCodeExpression*) _tmp1423_);
+                       _vala_ccode_node_unref0 (_tmp1423_);
                } else {
-                       ValaCCodeFunction* _tmp1413_ = NULL;
-                       ValaCCodeFunction* _tmp1414_ = NULL;
-                       ValaCCodeFunctionCall* _tmp1415_ = NULL;
-                       _tmp1413_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp1414_ = _tmp1413_;
-                       _tmp1415_ = main_call;
-                       vala_ccode_function_add_return (_tmp1414_, (ValaCCodeExpression*) _tmp1415_);
+                       ValaCCodeFunction* _tmp1424_ = NULL;
+                       ValaCCodeFunction* _tmp1425_ = NULL;
+                       ValaCCodeFunctionCall* _tmp1426_ = NULL;
+                       _tmp1424_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp1425_ = _tmp1424_;
+                       _tmp1426_ = main_call;
+                       vala_ccode_function_add_return (_tmp1425_, (ValaCCodeExpression*) _tmp1426_);
                }
                vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-               _tmp1416_ = ((ValaCCodeBaseModule*) self)->cfile;
-               _tmp1417_ = cmain;
-               vala_ccode_file_add_function (_tmp1416_, _tmp1417_);
+               _tmp1427_ = ((ValaCCodeBaseModule*) self)->cfile;
+               _tmp1428_ = cmain;
+               vala_ccode_file_add_function (_tmp1427_, _tmp1428_);
                _vala_ccode_node_unref0 (main_call);
                _vala_ccode_node_unref0 (cond);
                _vala_ccode_node_unref0 (cmain);
@@ -8137,41 +8239,41 @@ static void vala_ccode_method_module_create_aux_constructor (ValaCCodeMethodModu
        ValaCreationMethod* _tmp2_ = NULL;
        gboolean _tmp3_ = FALSE;
        ValaHashMap* cparam_map = NULL;
-       GHashFunc _tmp8_ = NULL;
-       GEqualFunc _tmp9_ = NULL;
-       GEqualFunc _tmp10_ = NULL;
-       ValaHashMap* _tmp11_ = NULL;
+       GHashFunc _tmp19_ = NULL;
+       GEqualFunc _tmp20_ = NULL;
+       GEqualFunc _tmp21_ = NULL;
+       ValaHashMap* _tmp22_ = NULL;
        ValaHashMap* carg_map = NULL;
-       GHashFunc _tmp12_ = NULL;
-       GEqualFunc _tmp13_ = NULL;
-       GEqualFunc _tmp14_ = NULL;
-       ValaHashMap* _tmp15_ = NULL;
-       ValaCCodeFunction* _tmp16_ = NULL;
-       gchar* _tmp17_ = NULL;
-       ValaCreationMethod* _tmp18_ = NULL;
-       gboolean _tmp19_ = FALSE;
+       GHashFunc _tmp23_ = NULL;
+       GEqualFunc _tmp24_ = NULL;
+       GEqualFunc _tmp25_ = NULL;
+       ValaHashMap* _tmp26_ = NULL;
+       ValaCCodeFunction* _tmp27_ = NULL;
+       gchar* _tmp28_ = NULL;
+       ValaCreationMethod* _tmp29_ = NULL;
+       gboolean _tmp30_ = FALSE;
        gchar* constructor = NULL;
-       gchar* _tmp24_ = NULL;
+       gchar* _tmp35_ = NULL;
        ValaCCodeFunctionCall* vcall = NULL;
-       const gchar* _tmp25_ = NULL;
-       ValaCCodeIdentifier* _tmp26_ = NULL;
-       ValaCCodeIdentifier* _tmp27_ = NULL;
-       ValaCCodeFunctionCall* _tmp28_ = NULL;
-       ValaCCodeFunctionCall* _tmp29_ = NULL;
-       gboolean _tmp30_ = FALSE;
-       ValaCreationMethod* _tmp47_ = NULL;
-       ValaCCodeFile* _tmp48_ = NULL;
-       ValaHashMap* _tmp49_ = NULL;
-       ValaCCodeFunction* _tmp50_ = NULL;
-       ValaHashMap* _tmp51_ = NULL;
-       ValaCCodeFunctionCall* _tmp52_ = NULL;
-       ValaCreationMethod* _tmp53_ = NULL;
-       gboolean _tmp54_ = FALSE;
-       ValaCCodeFunction* _tmp93_ = NULL;
-       ValaCCodeFunction* _tmp94_ = NULL;
-       ValaCCodeFunctionCall* _tmp95_ = NULL;
-       ValaCCodeFile* _tmp96_ = NULL;
-       ValaCCodeFunction* _tmp97_ = NULL;
+       const gchar* _tmp36_ = NULL;
+       ValaCCodeIdentifier* _tmp37_ = NULL;
+       ValaCCodeIdentifier* _tmp38_ = NULL;
+       ValaCCodeFunctionCall* _tmp39_ = NULL;
+       ValaCCodeFunctionCall* _tmp40_ = NULL;
+       gboolean _tmp41_ = FALSE;
+       ValaCreationMethod* _tmp58_ = NULL;
+       ValaCCodeFile* _tmp59_ = NULL;
+       ValaHashMap* _tmp60_ = NULL;
+       ValaCCodeFunction* _tmp61_ = NULL;
+       ValaHashMap* _tmp62_ = NULL;
+       ValaCCodeFunctionCall* _tmp63_ = NULL;
+       ValaCreationMethod* _tmp64_ = NULL;
+       gboolean _tmp65_ = FALSE;
+       ValaCCodeFunction* _tmp104_ = NULL;
+       ValaCCodeFunction* _tmp105_ = NULL;
+       ValaCCodeFunctionCall* _tmp106_ = NULL;
+       ValaCCodeFile* _tmp107_ = NULL;
+       ValaCCodeFunction* _tmp108_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (m != NULL);
        g_return_if_fail (func_name != NULL);
@@ -8190,224 +8292,254 @@ static void vala_ccode_method_module_create_aux_constructor (ValaCCodeMethodModu
                _tmp6_ = vala_ccode_function_get_modifiers (_tmp5_);
                _tmp7_ = _tmp6_;
                vala_ccode_function_set_modifiers (_tmp5_, _tmp7_ | VALA_CCODE_MODIFIERS_STATIC);
-       }
-       _tmp8_ = g_direct_hash;
-       _tmp9_ = g_direct_equal;
-       _tmp10_ = g_direct_equal;
-       _tmp11_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp8_, _tmp9_, _tmp10_);
-       cparam_map = _tmp11_;
-       _tmp12_ = g_direct_hash;
-       _tmp13_ = g_direct_equal;
-       _tmp14_ = g_direct_equal;
-       _tmp15_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp12_, _tmp13_, _tmp14_);
-       carg_map = _tmp15_;
-       _tmp16_ = vfunc;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp16_);
-       _tmp18_ = m;
-       _tmp19_ = vala_method_is_variadic ((ValaMethod*) _tmp18_);
-       if (_tmp19_) {
-               ValaCreationMethod* _tmp20_ = NULL;
-               gchar* _tmp21_ = NULL;
-               _tmp20_ = m;
-               _tmp21_ = vala_ccode_base_module_get_ccode_constructv_name (_tmp20_);
-               _g_free0 (_tmp17_);
-               _tmp17_ = _tmp21_;
        } else {
-               ValaCreationMethod* _tmp22_ = NULL;
-               gchar* _tmp23_ = NULL;
-               _tmp22_ = m;
-               _tmp23_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp22_);
-               _g_free0 (_tmp17_);
-               _tmp17_ = _tmp23_;
+               gboolean _tmp8_ = FALSE;
+               ValaCodeContext* _tmp9_ = NULL;
+               ValaCodeContext* _tmp10_ = NULL;
+               gboolean _tmp11_ = FALSE;
+               gboolean _tmp12_ = FALSE;
+               _tmp9_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp10_ = _tmp9_;
+               _tmp11_ = vala_code_context_get_hide_internal (_tmp10_);
+               _tmp12_ = _tmp11_;
+               if (_tmp12_) {
+                       ValaCreationMethod* _tmp13_ = NULL;
+                       gboolean _tmp14_ = FALSE;
+                       _tmp13_ = m;
+                       _tmp14_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp13_);
+                       _tmp8_ = _tmp14_;
+               } else {
+                       _tmp8_ = FALSE;
+               }
+               if (_tmp8_) {
+                       ValaCCodeFunction* _tmp15_ = NULL;
+                       ValaCCodeFunction* _tmp16_ = NULL;
+                       ValaCCodeModifiers _tmp17_ = 0;
+                       ValaCCodeModifiers _tmp18_ = 0;
+                       _tmp15_ = vfunc;
+                       _tmp16_ = vfunc;
+                       _tmp17_ = vala_ccode_function_get_modifiers (_tmp16_);
+                       _tmp18_ = _tmp17_;
+                       vala_ccode_function_set_modifiers (_tmp16_, _tmp18_ | VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp24_ = g_strdup (_tmp17_);
-       constructor = _tmp24_;
-       _tmp25_ = constructor;
-       _tmp26_ = vala_ccode_identifier_new (_tmp25_);
-       _tmp27_ = _tmp26_;
-       _tmp28_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp27_);
-       _tmp29_ = _tmp28_;
-       _vala_ccode_node_unref0 (_tmp27_);
-       vcall = _tmp29_;
-       _tmp30_ = self_as_first_parameter;
+       _tmp19_ = g_direct_hash;
+       _tmp20_ = g_direct_equal;
+       _tmp21_ = g_direct_equal;
+       _tmp22_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp19_, _tmp20_, _tmp21_);
+       cparam_map = _tmp22_;
+       _tmp23_ = g_direct_hash;
+       _tmp24_ = g_direct_equal;
+       _tmp25_ = g_direct_equal;
+       _tmp26_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp23_, _tmp24_, _tmp25_);
+       carg_map = _tmp26_;
+       _tmp27_ = vfunc;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp27_);
+       _tmp29_ = m;
+       _tmp30_ = vala_method_is_variadic ((ValaMethod*) _tmp29_);
        if (_tmp30_) {
-               ValaHashMap* _tmp31_ = NULL;
-               ValaCreationMethod* _tmp32_ = NULL;
-               gdouble _tmp33_ = 0.0;
-               gint _tmp34_ = 0;
-               ValaCCodeParameter* _tmp35_ = NULL;
-               ValaCCodeParameter* _tmp36_ = NULL;
-               ValaCCodeFunctionCall* _tmp37_ = NULL;
-               ValaCCodeExpression* _tmp38_ = NULL;
-               ValaCCodeExpression* _tmp39_ = NULL;
-               _tmp31_ = cparam_map;
-               _tmp32_ = m;
-               _tmp33_ = vala_ccode_base_module_get_ccode_instance_pos ((ValaCodeNode*) _tmp32_);
-               _tmp34_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp33_, FALSE);
-               _tmp35_ = vala_ccode_parameter_new ("object_type", "GType");
-               _tmp36_ = _tmp35_;
-               vala_map_set ((ValaMap*) _tmp31_, (gpointer) ((gintptr) _tmp34_), _tmp36_);
-               _vala_ccode_node_unref0 (_tmp36_);
-               _tmp37_ = vcall;
-               _tmp38_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, "object_type");
-               _tmp39_ = _tmp38_;
-               vala_ccode_function_call_add_argument (_tmp37_, _tmp39_);
-               _vala_ccode_node_unref0 (_tmp39_);
+               ValaCreationMethod* _tmp31_ = NULL;
+               gchar* _tmp32_ = NULL;
+               _tmp31_ = m;
+               _tmp32_ = vala_ccode_base_module_get_ccode_constructv_name (_tmp31_);
+               _g_free0 (_tmp28_);
+               _tmp28_ = _tmp32_;
        } else {
-               ValaCCodeFunctionCall* _tmp40_ = NULL;
-               ValaClass* _tmp41_ = NULL;
-               ValaClass* _tmp42_ = NULL;
-               gchar* _tmp43_ = NULL;
-               gchar* _tmp44_ = NULL;
-               ValaCCodeIdentifier* _tmp45_ = NULL;
-               ValaCCodeIdentifier* _tmp46_ = NULL;
-               _tmp40_ = vcall;
-               _tmp41_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
-               _tmp42_ = _tmp41_;
-               _tmp43_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp42_);
-               _tmp44_ = _tmp43_;
-               _tmp45_ = vala_ccode_identifier_new (_tmp44_);
-               _tmp46_ = _tmp45_;
-               vala_ccode_function_call_add_argument (_tmp40_, (ValaCCodeExpression*) _tmp46_);
-               _vala_ccode_node_unref0 (_tmp46_);
-               _g_free0 (_tmp44_);
+               ValaCreationMethod* _tmp33_ = NULL;
+               gchar* _tmp34_ = NULL;
+               _tmp33_ = m;
+               _tmp34_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp33_);
+               _g_free0 (_tmp28_);
+               _tmp28_ = _tmp34_;
        }
-       _tmp47_ = m;
-       _tmp48_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp49_ = cparam_map;
-       _tmp50_ = vfunc;
-       _tmp51_ = carg_map;
-       _tmp52_ = vcall;
-       vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, (ValaMethod*) _tmp47_, _tmp48_, (ValaMap*) _tmp49_, _tmp50_, NULL, (ValaMap*) _tmp51_, _tmp52_, 3);
-       _tmp53_ = m;
-       _tmp54_ = vala_method_is_variadic ((ValaMethod*) _tmp53_);
-       if (_tmp54_) {
+       _tmp35_ = g_strdup (_tmp28_);
+       constructor = _tmp35_;
+       _tmp36_ = constructor;
+       _tmp37_ = vala_ccode_identifier_new (_tmp36_);
+       _tmp38_ = _tmp37_;
+       _tmp39_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp38_);
+       _tmp40_ = _tmp39_;
+       _vala_ccode_node_unref0 (_tmp38_);
+       vcall = _tmp40_;
+       _tmp41_ = self_as_first_parameter;
+       if (_tmp41_) {
+               ValaHashMap* _tmp42_ = NULL;
+               ValaCreationMethod* _tmp43_ = NULL;
+               gdouble _tmp44_ = 0.0;
+               gint _tmp45_ = 0;
+               ValaCCodeParameter* _tmp46_ = NULL;
+               ValaCCodeParameter* _tmp47_ = NULL;
+               ValaCCodeFunctionCall* _tmp48_ = NULL;
+               ValaCCodeExpression* _tmp49_ = NULL;
+               ValaCCodeExpression* _tmp50_ = NULL;
+               _tmp42_ = cparam_map;
+               _tmp43_ = m;
+               _tmp44_ = vala_ccode_base_module_get_ccode_instance_pos ((ValaCodeNode*) _tmp43_);
+               _tmp45_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp44_, FALSE);
+               _tmp46_ = vala_ccode_parameter_new ("object_type", "GType");
+               _tmp47_ = _tmp46_;
+               vala_map_set ((ValaMap*) _tmp42_, (gpointer) ((gintptr) _tmp45_), _tmp47_);
+               _vala_ccode_node_unref0 (_tmp47_);
+               _tmp48_ = vcall;
+               _tmp49_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, "object_type");
+               _tmp50_ = _tmp49_;
+               vala_ccode_function_call_add_argument (_tmp48_, _tmp50_);
+               _vala_ccode_node_unref0 (_tmp50_);
+       } else {
+               ValaCCodeFunctionCall* _tmp51_ = NULL;
+               ValaClass* _tmp52_ = NULL;
+               ValaClass* _tmp53_ = NULL;
+               gchar* _tmp54_ = NULL;
+               gchar* _tmp55_ = NULL;
+               ValaCCodeIdentifier* _tmp56_ = NULL;
+               ValaCCodeIdentifier* _tmp57_ = NULL;
+               _tmp51_ = vcall;
+               _tmp52_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
+               _tmp53_ = _tmp52_;
+               _tmp54_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp53_);
+               _tmp55_ = _tmp54_;
+               _tmp56_ = vala_ccode_identifier_new (_tmp55_);
+               _tmp57_ = _tmp56_;
+               vala_ccode_function_call_add_argument (_tmp51_, (ValaCCodeExpression*) _tmp57_);
+               _vala_ccode_node_unref0 (_tmp57_);
+               _g_free0 (_tmp55_);
+       }
+       _tmp58_ = m;
+       _tmp59_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp60_ = cparam_map;
+       _tmp61_ = vfunc;
+       _tmp62_ = carg_map;
+       _tmp63_ = vcall;
+       vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, (ValaMethod*) _tmp58_, _tmp59_, (ValaMap*) _tmp60_, _tmp61_, NULL, (ValaMap*) _tmp62_, _tmp63_, 3);
+       _tmp64_ = m;
+       _tmp65_ = vala_method_is_variadic ((ValaMethod*) _tmp64_);
+       if (_tmp65_) {
                gint last_pos = 0;
                gint second_last_pos = 0;
                ValaCCodeFunctionCall* va_start = NULL;
-               ValaCCodeIdentifier* _tmp71_ = NULL;
-               ValaCCodeIdentifier* _tmp72_ = NULL;
-               ValaCCodeFunctionCall* _tmp73_ = NULL;
-               ValaCCodeFunctionCall* _tmp74_ = NULL;
-               ValaCCodeFunctionCall* _tmp75_ = NULL;
-               ValaCCodeIdentifier* _tmp76_ = NULL;
-               ValaCCodeIdentifier* _tmp77_ = NULL;
-               ValaCCodeFunctionCall* _tmp78_ = NULL;
-               ValaHashMap* _tmp79_ = NULL;
-               gint _tmp80_ = 0;
-               gpointer _tmp81_ = NULL;
-               ValaCCodeExpression* _tmp82_ = NULL;
-               ValaCCodeFunction* _tmp83_ = NULL;
-               ValaCCodeFunction* _tmp84_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp85_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp86_ = NULL;
-               ValaCCodeFunction* _tmp87_ = NULL;
-               ValaCCodeFunction* _tmp88_ = NULL;
+               ValaCCodeIdentifier* _tmp82_ = NULL;
+               ValaCCodeIdentifier* _tmp83_ = NULL;
+               ValaCCodeFunctionCall* _tmp84_ = NULL;
+               ValaCCodeFunctionCall* _tmp85_ = NULL;
+               ValaCCodeFunctionCall* _tmp86_ = NULL;
+               ValaCCodeIdentifier* _tmp87_ = NULL;
+               ValaCCodeIdentifier* _tmp88_ = NULL;
                ValaCCodeFunctionCall* _tmp89_ = NULL;
-               ValaCCodeFunctionCall* _tmp90_ = NULL;
-               ValaCCodeIdentifier* _tmp91_ = NULL;
-               ValaCCodeIdentifier* _tmp92_ = NULL;
+               ValaHashMap* _tmp90_ = NULL;
+               gint _tmp91_ = 0;
+               gpointer _tmp92_ = NULL;
+               ValaCCodeExpression* _tmp93_ = NULL;
+               ValaCCodeFunction* _tmp94_ = NULL;
+               ValaCCodeFunction* _tmp95_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp96_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp97_ = NULL;
+               ValaCCodeFunction* _tmp98_ = NULL;
+               ValaCCodeFunction* _tmp99_ = NULL;
+               ValaCCodeFunctionCall* _tmp100_ = NULL;
+               ValaCCodeFunctionCall* _tmp101_ = NULL;
+               ValaCCodeIdentifier* _tmp102_ = NULL;
+               ValaCCodeIdentifier* _tmp103_ = NULL;
                last_pos = -1;
                second_last_pos = -1;
                {
                        ValaIterator* _pos_it = NULL;
-                       ValaHashMap* _tmp55_ = NULL;
-                       ValaSet* _tmp56_ = NULL;
-                       ValaSet* _tmp57_ = NULL;
-                       ValaIterator* _tmp58_ = NULL;
-                       ValaIterator* _tmp59_ = NULL;
-                       _tmp55_ = cparam_map;
-                       _tmp56_ = vala_map_get_keys ((ValaMap*) _tmp55_);
-                       _tmp57_ = _tmp56_;
-                       _tmp58_ = vala_iterable_iterator ((ValaIterable*) _tmp57_);
-                       _tmp59_ = _tmp58_;
-                       _vala_iterable_unref0 (_tmp57_);
-                       _pos_it = _tmp59_;
+                       ValaHashMap* _tmp66_ = NULL;
+                       ValaSet* _tmp67_ = NULL;
+                       ValaSet* _tmp68_ = NULL;
+                       ValaIterator* _tmp69_ = NULL;
+                       ValaIterator* _tmp70_ = NULL;
+                       _tmp66_ = cparam_map;
+                       _tmp67_ = vala_map_get_keys ((ValaMap*) _tmp66_);
+                       _tmp68_ = _tmp67_;
+                       _tmp69_ = vala_iterable_iterator ((ValaIterable*) _tmp68_);
+                       _tmp70_ = _tmp69_;
+                       _vala_iterable_unref0 (_tmp68_);
+                       _pos_it = _tmp70_;
                        while (TRUE) {
-                               ValaIterator* _tmp60_ = NULL;
-                               gboolean _tmp61_ = FALSE;
+                               ValaIterator* _tmp71_ = NULL;
+                               gboolean _tmp72_ = FALSE;
                                gint pos = 0;
-                               ValaIterator* _tmp62_ = NULL;
-                               gpointer _tmp63_ = NULL;
-                               gint _tmp64_ = 0;
-                               gint _tmp65_ = 0;
-                               _tmp60_ = _pos_it;
-                               _tmp61_ = vala_iterator_next (_tmp60_);
-                               if (!_tmp61_) {
+                               ValaIterator* _tmp73_ = NULL;
+                               gpointer _tmp74_ = NULL;
+                               gint _tmp75_ = 0;
+                               gint _tmp76_ = 0;
+                               _tmp71_ = _pos_it;
+                               _tmp72_ = vala_iterator_next (_tmp71_);
+                               if (!_tmp72_) {
                                        break;
                                }
-                               _tmp62_ = _pos_it;
-                               _tmp63_ = vala_iterator_get (_tmp62_);
-                               pos = (gint) ((gintptr) _tmp63_);
-                               _tmp64_ = pos;
-                               _tmp65_ = last_pos;
-                               if (_tmp64_ > _tmp65_) {
-                                       gint _tmp66_ = 0;
-                                       gint _tmp67_ = 0;
-                                       _tmp66_ = last_pos;
-                                       second_last_pos = _tmp66_;
-                                       _tmp67_ = pos;
-                                       last_pos = _tmp67_;
+                               _tmp73_ = _pos_it;
+                               _tmp74_ = vala_iterator_get (_tmp73_);
+                               pos = (gint) ((gintptr) _tmp74_);
+                               _tmp75_ = pos;
+                               _tmp76_ = last_pos;
+                               if (_tmp75_ > _tmp76_) {
+                                       gint _tmp77_ = 0;
+                                       gint _tmp78_ = 0;
+                                       _tmp77_ = last_pos;
+                                       second_last_pos = _tmp77_;
+                                       _tmp78_ = pos;
+                                       last_pos = _tmp78_;
                                } else {
-                                       gint _tmp68_ = 0;
-                                       gint _tmp69_ = 0;
-                                       _tmp68_ = pos;
-                                       _tmp69_ = second_last_pos;
-                                       if (_tmp68_ > _tmp69_) {
-                                               gint _tmp70_ = 0;
-                                               _tmp70_ = pos;
-                                               second_last_pos = _tmp70_;
+                                       gint _tmp79_ = 0;
+                                       gint _tmp80_ = 0;
+                                       _tmp79_ = pos;
+                                       _tmp80_ = second_last_pos;
+                                       if (_tmp79_ > _tmp80_) {
+                                               gint _tmp81_ = 0;
+                                               _tmp81_ = pos;
+                                               second_last_pos = _tmp81_;
                                        }
                                }
                        }
                        _vala_iterator_unref0 (_pos_it);
                }
-               _tmp71_ = vala_ccode_identifier_new ("va_start");
-               _tmp72_ = _tmp71_;
-               _tmp73_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp72_);
-               _tmp74_ = _tmp73_;
-               _vala_ccode_node_unref0 (_tmp72_);
-               va_start = _tmp74_;
-               _tmp75_ = va_start;
-               _tmp76_ = vala_ccode_identifier_new ("_vala_va_list_obj");
-               _tmp77_ = _tmp76_;
-               vala_ccode_function_call_add_argument (_tmp75_, (ValaCCodeExpression*) _tmp77_);
-               _vala_ccode_node_unref0 (_tmp77_);
-               _tmp78_ = va_start;
-               _tmp79_ = carg_map;
-               _tmp80_ = second_last_pos;
-               _tmp81_ = vala_map_get ((ValaMap*) _tmp79_, (gpointer) ((gintptr) _tmp80_));
-               _tmp82_ = (ValaCCodeExpression*) _tmp81_;
-               vala_ccode_function_call_add_argument (_tmp78_, _tmp82_);
-               _vala_ccode_node_unref0 (_tmp82_);
-               _tmp83_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp84_ = _tmp83_;
-               _tmp85_ = vala_ccode_variable_declarator_new ("_vala_va_list_obj", NULL, NULL);
-               _tmp86_ = _tmp85_;
-               vala_ccode_function_add_declaration (_tmp84_, "va_list", (ValaCCodeDeclarator*) _tmp86_, 0);
-               _vala_ccode_node_unref0 (_tmp86_);
-               _tmp87_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp82_ = vala_ccode_identifier_new ("va_start");
+               _tmp83_ = _tmp82_;
+               _tmp84_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp83_);
+               _tmp85_ = _tmp84_;
+               _vala_ccode_node_unref0 (_tmp83_);
+               va_start = _tmp85_;
+               _tmp86_ = va_start;
+               _tmp87_ = vala_ccode_identifier_new ("_vala_va_list_obj");
                _tmp88_ = _tmp87_;
+               vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp88_);
+               _vala_ccode_node_unref0 (_tmp88_);
                _tmp89_ = va_start;
-               vala_ccode_function_add_expression (_tmp88_, (ValaCCodeExpression*) _tmp89_);
-               _tmp90_ = vcall;
-               _tmp91_ = vala_ccode_identifier_new ("_vala_va_list_obj");
-               _tmp92_ = _tmp91_;
-               vala_ccode_function_call_add_argument (_tmp90_, (ValaCCodeExpression*) _tmp92_);
-               _vala_ccode_node_unref0 (_tmp92_);
+               _tmp90_ = carg_map;
+               _tmp91_ = second_last_pos;
+               _tmp92_ = vala_map_get ((ValaMap*) _tmp90_, (gpointer) ((gintptr) _tmp91_));
+               _tmp93_ = (ValaCCodeExpression*) _tmp92_;
+               vala_ccode_function_call_add_argument (_tmp89_, _tmp93_);
+               _vala_ccode_node_unref0 (_tmp93_);
+               _tmp94_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp95_ = _tmp94_;
+               _tmp96_ = vala_ccode_variable_declarator_new ("_vala_va_list_obj", NULL, NULL);
+               _tmp97_ = _tmp96_;
+               vala_ccode_function_add_declaration (_tmp95_, "va_list", (ValaCCodeDeclarator*) _tmp97_, 0);
+               _vala_ccode_node_unref0 (_tmp97_);
+               _tmp98_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp99_ = _tmp98_;
+               _tmp100_ = va_start;
+               vala_ccode_function_add_expression (_tmp99_, (ValaCCodeExpression*) _tmp100_);
+               _tmp101_ = vcall;
+               _tmp102_ = vala_ccode_identifier_new ("_vala_va_list_obj");
+               _tmp103_ = _tmp102_;
+               vala_ccode_function_call_add_argument (_tmp101_, (ValaCCodeExpression*) _tmp103_);
+               _vala_ccode_node_unref0 (_tmp103_);
                _vala_ccode_node_unref0 (va_start);
        }
-       _tmp93_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp94_ = _tmp93_;
-       _tmp95_ = vcall;
-       vala_ccode_function_add_return (_tmp94_, (ValaCCodeExpression*) _tmp95_);
+       _tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp105_ = _tmp104_;
+       _tmp106_ = vcall;
+       vala_ccode_function_add_return (_tmp105_, (ValaCCodeExpression*) _tmp106_);
        vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-       _tmp96_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp97_ = vfunc;
-       vala_ccode_file_add_function (_tmp96_, _tmp97_);
+       _tmp107_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp108_ = vfunc;
+       vala_ccode_file_add_function (_tmp107_, _tmp108_);
        _vala_ccode_node_unref0 (vcall);
        _g_free0 (constructor);
-       _g_free0 (_tmp17_);
+       _g_free0 (_tmp28_);
        _vala_map_unref0 (carg_map);
        _vala_map_unref0 (cparam_map);
        _vala_ccode_node_unref0 (vfunc);
@@ -8423,15 +8555,15 @@ ValaCCodeMethodModule* vala_ccode_method_module_construct (GType object_type) {
 
 static void vala_ccode_method_module_class_init (ValaCCodeMethodModuleClass * klass) {
        vala_ccode_method_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_ccode_method_module_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_ccode_method_module_finalize;
        g_type_class_add_private (klass, sizeof (ValaCCodeMethodModulePrivate));
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->method_has_wrapper = vala_ccode_method_module_real_method_has_wrapper;
-       VALA_CCODE_METHOD_MODULE_CLASS (klass)->generate_method_result_declaration = vala_ccode_method_module_real_generate_method_result_declaration;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_method_declaration = vala_ccode_method_module_real_generate_method_declaration;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method = vala_ccode_method_module_real_visit_method;
-       VALA_CCODE_METHOD_MODULE_CLASS (klass)->generate_parameter = vala_ccode_method_module_real_generate_parameter;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_cparameters = vala_ccode_method_module_real_generate_cparameters;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_creation_method = vala_ccode_method_module_real_visit_creation_method;
+       ((ValaCCodeBaseModuleClass *) klass)->method_has_wrapper = vala_ccode_method_module_real_method_has_wrapper;
+       ((ValaCCodeMethodModuleClass *) klass)->generate_method_result_declaration = vala_ccode_method_module_real_generate_method_result_declaration;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_method_declaration = vala_ccode_method_module_real_generate_method_declaration;
+       ((ValaCodeVisitorClass *) klass)->visit_method = vala_ccode_method_module_real_visit_method;
+       ((ValaCCodeMethodModuleClass *) klass)->generate_parameter = vala_ccode_method_module_real_generate_parameter;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_cparameters = vala_ccode_method_module_real_generate_cparameters;
+       ((ValaCodeVisitorClass *) klass)->visit_creation_method = vala_ccode_method_module_real_visit_creation_method;
 }
 
 
index d48c03e..0a933ac 100644 (file)
@@ -165,6 +165,8 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule {
                        if (m.is_inline) {
                                function.modifiers |= CCodeModifiers.INLINE;
                        }
+               } else if (context.hide_internal && m.is_internal_symbol () && !m.external) {
+                       function.modifiers |= CCodeModifiers.INTERNAL;
                }
 
                if (m.deprecated) {
@@ -192,6 +194,8 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule {
 
                        if (m.is_private_symbol ()) {
                                function.modifiers |= CCodeModifiers.STATIC;
+                       } else if (context.hide_internal && m.is_internal_symbol ()) {
+                               function.modifiers |= CCodeModifiers.INTERNAL;
                        }
 
                        cparam_map = new HashMap<int,CCodeParameter> (direct_hash, direct_equal);
@@ -426,6 +430,8 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule {
                                        cfile.add_function_declaration (function);
                                } else if (m.is_private_symbol ()) {
                                        function.modifiers |= CCodeModifiers.STATIC;
+                               } else if (context.hide_internal && m.is_internal_symbol ()) {
+                                       function.modifiers |= CCodeModifiers.INTERNAL;
                                }
                        } else {
                                if (m.body != null) {
@@ -1178,6 +1184,8 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule {
                var vfunc = new CCodeFunction (func_name);
                if (m.is_private_symbol ()) {
                        vfunc.modifiers |= CCodeModifiers.STATIC;
+               } else if (context.hide_internal && m.is_internal_symbol ()) {
+                       vfunc.modifiers |= CCodeModifiers.INTERNAL;
                }
 
                var cparam_map = new HashMap<int,CCodeParameter> (direct_hash, direct_equal);
index 8f0025a..0797a8a 100644 (file)
@@ -89,6 +89,7 @@ typedef struct _ValaStructRegisterFunction ValaStructRegisterFunction;
 typedef struct _ValaStructRegisterFunctionClass ValaStructRegisterFunctionClass;
 #define _vala_typeregister_function_unref0(var) ((var == NULL) ? NULL : (var = (vala_typeregister_function_unref (var), NULL)))
 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
+#define _vala_ccode_declarator_suffix_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_declarator_suffix_unref (var), NULL)))
 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
 #define _vala_ccode_base_module_emit_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_base_module_emit_context_unref (var), NULL)))
 
@@ -310,7 +311,7 @@ ValaStructRegisterFunction* vala_struct_register_function_construct (GType objec
 void vala_typeregister_function_init_from_type (ValaTypeRegisterFunction* self, gboolean plugin, gboolean declaration_only);
 ValaCCodeFragment* vala_typeregister_function_get_declaration (ValaTypeRegisterFunction* self);
 void vala_ccode_base_module_generate_type_declaration (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeFile* decl_space);
-gchar* vala_ccode_base_module_get_ccode_declarator_suffix (ValaDataType* type);
+ValaCCodeDeclaratorSuffix* vala_ccode_base_module_get_ccode_declarator_suffix (ValaCCodeBaseModule* self, ValaDataType* type);
 gboolean vala_ccode_base_module_get_ccode_array_length (ValaCodeNode* node);
 gchar* vala_ccode_base_module_get_ccode_array_length_name (ValaCodeNode* node);
 gchar* vala_ccode_base_module_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim);
@@ -379,52 +380,52 @@ static void vala_ccode_struct_module_real_generate_struct_declaration (ValaCCode
        ValaStruct* _tmp100_ = NULL;
        gboolean _tmp101_ = FALSE;
        gboolean _tmp102_ = FALSE;
+       ValaStruct* _tmp221_ = NULL;
        ValaStruct* _tmp222_ = NULL;
        ValaStruct* _tmp223_ = NULL;
-       ValaStruct* _tmp224_ = NULL;
        ValaCCodeFunction* function = NULL;
-       ValaStruct* _tmp253_ = NULL;
+       ValaStruct* _tmp252_ = NULL;
+       gchar* _tmp253_ = NULL;
        gchar* _tmp254_ = NULL;
-       gchar* _tmp255_ = NULL;
-       ValaStruct* _tmp256_ = NULL;
+       ValaStruct* _tmp255_ = NULL;
+       gchar* _tmp256_ = NULL;
        gchar* _tmp257_ = NULL;
        gchar* _tmp258_ = NULL;
        gchar* _tmp259_ = NULL;
-       gchar* _tmp260_ = NULL;
+       ValaCCodeFunction* _tmp260_ = NULL;
        ValaCCodeFunction* _tmp261_ = NULL;
-       ValaCCodeFunction* _tmp262_ = NULL;
-       ValaStruct* _tmp263_ = NULL;
-       gboolean _tmp264_ = FALSE;
-       ValaCCodeFunction* _tmp266_ = NULL;
-       ValaStruct* _tmp267_ = NULL;
-       gchar* _tmp268_ = NULL;
-       gchar* _tmp269_ = NULL;
-       gchar* _tmp270_ = NULL;
-       gchar* _tmp271_ = NULL;
-       gchar* _tmp272_ = NULL;
-       gchar* _tmp273_ = NULL;
-       ValaCCodeParameter* _tmp274_ = NULL;
-       ValaCCodeParameter* _tmp275_ = NULL;
-       ValaCCodeFile* _tmp276_ = NULL;
-       ValaCCodeFunction* _tmp277_ = NULL;
-       ValaStruct* _tmp278_ = NULL;
+       ValaStruct* _tmp262_ = NULL;
+       gboolean _tmp263_ = FALSE;
+       ValaCCodeFunction* _tmp273_ = NULL;
+       ValaStruct* _tmp274_ = NULL;
+       gchar* _tmp275_ = NULL;
+       gchar* _tmp276_ = NULL;
+       gchar* _tmp277_ = NULL;
+       gchar* _tmp278_ = NULL;
        gchar* _tmp279_ = NULL;
        gchar* _tmp280_ = NULL;
-       ValaCCodeFunction* _tmp281_ = NULL;
-       ValaStruct* _tmp282_ = NULL;
-       gboolean _tmp283_ = FALSE;
-       ValaCCodeFunction* _tmp285_ = NULL;
-       ValaStruct* _tmp286_ = NULL;
+       ValaCCodeParameter* _tmp281_ = NULL;
+       ValaCCodeParameter* _tmp282_ = NULL;
+       ValaCCodeFile* _tmp283_ = NULL;
+       ValaCCodeFunction* _tmp284_ = NULL;
+       ValaStruct* _tmp285_ = NULL;
+       gchar* _tmp286_ = NULL;
        gchar* _tmp287_ = NULL;
-       gchar* _tmp288_ = NULL;
-       gchar* _tmp289_ = NULL;
-       gchar* _tmp290_ = NULL;
-       ValaCCodeParameter* _tmp291_ = NULL;
-       ValaCCodeParameter* _tmp292_ = NULL;
-       ValaCCodeFile* _tmp293_ = NULL;
-       ValaCCodeFunction* _tmp294_ = NULL;
-       ValaStruct* _tmp295_ = NULL;
-       gboolean _tmp296_ = FALSE;
+       ValaCCodeFunction* _tmp288_ = NULL;
+       ValaStruct* _tmp289_ = NULL;
+       gboolean _tmp290_ = FALSE;
+       ValaCCodeFunction* _tmp300_ = NULL;
+       ValaStruct* _tmp301_ = NULL;
+       gchar* _tmp302_ = NULL;
+       gchar* _tmp303_ = NULL;
+       gchar* _tmp304_ = NULL;
+       gchar* _tmp305_ = NULL;
+       ValaCCodeParameter* _tmp306_ = NULL;
+       ValaCCodeParameter* _tmp307_ = NULL;
+       ValaCCodeFile* _tmp308_ = NULL;
+       ValaCCodeFunction* _tmp309_ = NULL;
+       ValaStruct* _tmp310_ = NULL;
+       gboolean _tmp311_ = FALSE;
        self = (ValaCCodeStructModule*) base;
        g_return_if_fail (st != NULL);
        g_return_if_fail (decl_space != NULL);
@@ -757,533 +758,627 @@ static void vala_ccode_struct_module_real_generate_struct_declaration (ValaCCode
                                ValaDataType* _tmp127_ = NULL;
                                ValaDataType* _tmp128_ = NULL;
                                ValaCCodeFile* _tmp129_ = NULL;
-                               const gchar* _tmp130_ = NULL;
-                               ValaField* _tmp131_ = NULL;
-                               gboolean _tmp132_ = FALSE;
-                               gboolean _tmp133_ = FALSE;
-                               ValaCCodeStruct* _tmp134_ = NULL;
-                               const gchar* _tmp135_ = NULL;
-                               ValaField* _tmp136_ = NULL;
-                               gchar* _tmp137_ = NULL;
-                               gchar* _tmp138_ = NULL;
-                               ValaField* _tmp139_ = NULL;
-                               ValaDataType* _tmp140_ = NULL;
-                               ValaDataType* _tmp141_ = NULL;
+                               ValaCCodeDeclaratorSuffix* suffix = NULL;
+                               ValaField* _tmp130_ = NULL;
+                               ValaDataType* _tmp131_ = NULL;
+                               ValaDataType* _tmp132_ = NULL;
+                               ValaCCodeDeclaratorSuffix* _tmp133_ = NULL;
+                               ValaCCodeDeclaratorSuffix* _tmp134_ = NULL;
+                               ValaCCodeStruct* _tmp139_ = NULL;
+                               const gchar* _tmp140_ = NULL;
+                               ValaField* _tmp141_ = NULL;
                                gchar* _tmp142_ = NULL;
                                gchar* _tmp143_ = NULL;
-                               gchar* _tmp144_ = NULL;
-                               gchar* _tmp145_ = NULL;
-                               gboolean _tmp146_ = FALSE;
-                               ValaField* _tmp147_ = NULL;
+                               ValaCCodeDeclaratorSuffix* _tmp144_ = NULL;
+                               gboolean _tmp145_ = FALSE;
+                               ValaField* _tmp146_ = NULL;
+                               ValaDataType* _tmp147_ = NULL;
                                ValaDataType* _tmp148_ = NULL;
-                               ValaDataType* _tmp149_ = NULL;
                                _tmp126_ = f;
                                _tmp127_ = vala_variable_get_variable_type ((ValaVariable*) _tmp126_);
                                _tmp128_ = _tmp127_;
                                _tmp129_ = decl_space;
                                vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp128_, _tmp129_);
-                               _tmp131_ = f;
-                               _tmp132_ = vala_symbol_get_deprecated ((ValaSymbol*) _tmp131_);
-                               _tmp133_ = _tmp132_;
-                               if (_tmp133_) {
-                                       _tmp130_ = " G_GNUC_DEPRECATED";
-                               } else {
-                                       _tmp130_ = NULL;
+                               _tmp130_ = f;
+                               _tmp131_ = vala_variable_get_variable_type ((ValaVariable*) _tmp130_);
+                               _tmp132_ = _tmp131_;
+                               _tmp133_ = vala_ccode_base_module_get_ccode_declarator_suffix ((ValaCCodeBaseModule*) self, _tmp132_);
+                               suffix = _tmp133_;
+                               _tmp134_ = suffix;
+                               if (_tmp134_ != NULL) {
+                                       ValaCCodeDeclaratorSuffix* _tmp135_ = NULL;
+                                       ValaField* _tmp136_ = NULL;
+                                       gboolean _tmp137_ = FALSE;
+                                       gboolean _tmp138_ = FALSE;
+                                       _tmp135_ = suffix;
+                                       _tmp136_ = f;
+                                       _tmp137_ = vala_symbol_get_deprecated ((ValaSymbol*) _tmp136_);
+                                       _tmp138_ = _tmp137_;
+                                       _tmp135_->deprecated = _tmp138_;
                                }
-                               _tmp134_ = instance_struct;
-                               _tmp135_ = field_ctype;
-                               _tmp136_ = f;
-                               _tmp137_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp136_);
-                               _tmp138_ = _tmp137_;
-                               _tmp139_ = f;
-                               _tmp140_ = vala_variable_get_variable_type ((ValaVariable*) _tmp139_);
-                               _tmp141_ = _tmp140_;
-                               _tmp142_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp141_);
+                               _tmp139_ = instance_struct;
+                               _tmp140_ = field_ctype;
+                               _tmp141_ = f;
+                               _tmp142_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp141_);
                                _tmp143_ = _tmp142_;
-                               _tmp144_ = g_strconcat (_tmp138_, _tmp143_, NULL);
-                               _tmp145_ = _tmp144_;
-                               vala_ccode_struct_add_field (_tmp134_, _tmp135_, _tmp145_, _tmp130_);
-                               _g_free0 (_tmp145_);
+                               _tmp144_ = suffix;
+                               vala_ccode_struct_add_field (_tmp139_, _tmp140_, _tmp143_, _tmp144_);
                                _g_free0 (_tmp143_);
-                               _g_free0 (_tmp138_);
-                               _tmp147_ = f;
-                               _tmp148_ = vala_variable_get_variable_type ((ValaVariable*) _tmp147_);
-                               _tmp149_ = _tmp148_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp149_, VALA_TYPE_ARRAY_TYPE)) {
-                                       ValaField* _tmp150_ = NULL;
-                                       gboolean _tmp151_ = FALSE;
-                                       _tmp150_ = f;
-                                       _tmp151_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp150_);
-                                       _tmp146_ = _tmp151_;
+                               _tmp146_ = f;
+                               _tmp147_ = vala_variable_get_variable_type ((ValaVariable*) _tmp146_);
+                               _tmp148_ = _tmp147_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp148_, VALA_TYPE_ARRAY_TYPE)) {
+                                       ValaField* _tmp149_ = NULL;
+                                       gboolean _tmp150_ = FALSE;
+                                       _tmp149_ = f;
+                                       _tmp150_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp149_);
+                                       _tmp145_ = _tmp150_;
                                } else {
-                                       _tmp146_ = FALSE;
+                                       _tmp145_ = FALSE;
                                }
-                               if (_tmp146_) {
+                               if (_tmp145_) {
                                        ValaArrayType* array_type = NULL;
-                                       ValaField* _tmp152_ = NULL;
+                                       ValaField* _tmp151_ = NULL;
+                                       ValaDataType* _tmp152_ = NULL;
                                        ValaDataType* _tmp153_ = NULL;
-                                       ValaDataType* _tmp154_ = NULL;
+                                       ValaArrayType* _tmp154_ = NULL;
                                        ValaArrayType* _tmp155_ = NULL;
-                                       ValaArrayType* _tmp156_ = NULL;
+                                       gboolean _tmp156_ = FALSE;
                                        gboolean _tmp157_ = FALSE;
-                                       gboolean _tmp158_ = FALSE;
-                                       _tmp152_ = f;
-                                       _tmp153_ = vala_variable_get_variable_type ((ValaVariable*) _tmp152_);
-                                       _tmp154_ = _tmp153_;
-                                       _tmp155_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp154_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                       array_type = _tmp155_;
-                                       _tmp156_ = array_type;
-                                       _tmp157_ = vala_array_type_get_fixed_length (_tmp156_);
-                                       _tmp158_ = _tmp157_;
-                                       if (!_tmp158_) {
+                                       _tmp151_ = f;
+                                       _tmp152_ = vala_variable_get_variable_type ((ValaVariable*) _tmp151_);
+                                       _tmp153_ = _tmp152_;
+                                       _tmp154_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp153_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                       array_type = _tmp154_;
+                                       _tmp155_ = array_type;
+                                       _tmp156_ = vala_array_type_get_fixed_length (_tmp155_);
+                                       _tmp157_ = _tmp156_;
+                                       if (!_tmp157_) {
                                                ValaDataType* len_type = NULL;
+                                               ValaDataType* _tmp158_ = NULL;
                                                ValaDataType* _tmp159_ = NULL;
-                                               ValaDataType* _tmp160_ = NULL;
-                                               gboolean _tmp183_ = FALSE;
-                                               ValaArrayType* _tmp184_ = NULL;
+                                               gboolean _tmp182_ = FALSE;
+                                               ValaArrayType* _tmp183_ = NULL;
+                                               gint _tmp184_ = 0;
                                                gint _tmp185_ = 0;
-                                               gint _tmp186_ = 0;
-                                               _tmp159_ = ((ValaCCodeBaseModule*) self)->int_type;
-                                               _tmp160_ = vala_data_type_copy (_tmp159_);
-                                               len_type = _tmp160_;
+                                               _tmp158_ = ((ValaCCodeBaseModule*) self)->int_type;
+                                               _tmp159_ = vala_data_type_copy (_tmp158_);
+                                               len_type = _tmp159_;
                                                {
                                                        gint dim = 0;
                                                        dim = 1;
                                                        {
-                                                               gboolean _tmp161_ = FALSE;
-                                                               _tmp161_ = TRUE;
+                                                               gboolean _tmp160_ = FALSE;
+                                                               _tmp160_ = TRUE;
                                                                while (TRUE) {
-                                                                       gint _tmp163_ = 0;
-                                                                       ValaArrayType* _tmp164_ = NULL;
+                                                                       gint _tmp162_ = 0;
+                                                                       ValaArrayType* _tmp163_ = NULL;
+                                                                       gint _tmp164_ = 0;
                                                                        gint _tmp165_ = 0;
-                                                                       gint _tmp166_ = 0;
                                                                        gchar* length_cname = NULL;
-                                                                       ValaField* _tmp167_ = NULL;
+                                                                       ValaField* _tmp166_ = NULL;
+                                                                       gchar* _tmp167_ = NULL;
                                                                        gchar* _tmp168_ = NULL;
-                                                                       gchar* _tmp169_ = NULL;
-                                                                       gboolean _tmp170_ = FALSE;
-                                                                       ValaCCodeStruct* _tmp178_ = NULL;
-                                                                       ValaDataType* _tmp179_ = NULL;
+                                                                       gboolean _tmp169_ = FALSE;
+                                                                       ValaCCodeStruct* _tmp177_ = NULL;
+                                                                       ValaDataType* _tmp178_ = NULL;
+                                                                       gchar* _tmp179_ = NULL;
                                                                        gchar* _tmp180_ = NULL;
-                                                                       gchar* _tmp181_ = NULL;
-                                                                       const gchar* _tmp182_ = NULL;
-                                                                       if (!_tmp161_) {
-                                                                               gint _tmp162_ = 0;
-                                                                               _tmp162_ = dim;
-                                                                               dim = _tmp162_ + 1;
+                                                                       const gchar* _tmp181_ = NULL;
+                                                                       if (!_tmp160_) {
+                                                                               gint _tmp161_ = 0;
+                                                                               _tmp161_ = dim;
+                                                                               dim = _tmp161_ + 1;
                                                                        }
-                                                                       _tmp161_ = FALSE;
-                                                                       _tmp163_ = dim;
-                                                                       _tmp164_ = array_type;
-                                                                       _tmp165_ = vala_array_type_get_rank (_tmp164_);
-                                                                       _tmp166_ = _tmp165_;
-                                                                       if (!(_tmp163_ <= _tmp166_)) {
+                                                                       _tmp160_ = FALSE;
+                                                                       _tmp162_ = dim;
+                                                                       _tmp163_ = array_type;
+                                                                       _tmp164_ = vala_array_type_get_rank (_tmp163_);
+                                                                       _tmp165_ = _tmp164_;
+                                                                       if (!(_tmp162_ <= _tmp165_)) {
                                                                                break;
                                                                        }
-                                                                       _tmp167_ = f;
-                                                                       _tmp168_ = vala_ccode_base_module_get_ccode_array_length_name ((ValaCodeNode*) _tmp167_);
-                                                                       _tmp169_ = _tmp168_;
-                                                                       _tmp170_ = _tmp169_ != NULL;
-                                                                       _g_free0 (_tmp169_);
-                                                                       if (_tmp170_) {
-                                                                               ValaField* _tmp171_ = NULL;
-                                                                               gchar* _tmp172_ = NULL;
-                                                                               _tmp171_ = f;
-                                                                               _tmp172_ = vala_ccode_base_module_get_ccode_array_length_name ((ValaCodeNode*) _tmp171_);
+                                                                       _tmp166_ = f;
+                                                                       _tmp167_ = vala_ccode_base_module_get_ccode_array_length_name ((ValaCodeNode*) _tmp166_);
+                                                                       _tmp168_ = _tmp167_;
+                                                                       _tmp169_ = _tmp168_ != NULL;
+                                                                       _g_free0 (_tmp168_);
+                                                                       if (_tmp169_) {
+                                                                               ValaField* _tmp170_ = NULL;
+                                                                               gchar* _tmp171_ = NULL;
+                                                                               _tmp170_ = f;
+                                                                               _tmp171_ = vala_ccode_base_module_get_ccode_array_length_name ((ValaCodeNode*) _tmp170_);
                                                                                _g_free0 (length_cname);
-                                                                               length_cname = _tmp172_;
+                                                                               length_cname = _tmp171_;
                                                                        } else {
-                                                                               ValaField* _tmp173_ = NULL;
+                                                                               ValaField* _tmp172_ = NULL;
+                                                                               const gchar* _tmp173_ = NULL;
                                                                                const gchar* _tmp174_ = NULL;
-                                                                               const gchar* _tmp175_ = NULL;
-                                                                               gint _tmp176_ = 0;
-                                                                               gchar* _tmp177_ = NULL;
-                                                                               _tmp173_ = f;
-                                                                               _tmp174_ = vala_symbol_get_name ((ValaSymbol*) _tmp173_);
-                                                                               _tmp175_ = _tmp174_;
-                                                                               _tmp176_ = dim;
-                                                                               _tmp177_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp175_, _tmp176_);
+                                                                               gint _tmp175_ = 0;
+                                                                               gchar* _tmp176_ = NULL;
+                                                                               _tmp172_ = f;
+                                                                               _tmp173_ = vala_symbol_get_name ((ValaSymbol*) _tmp172_);
+                                                                               _tmp174_ = _tmp173_;
+                                                                               _tmp175_ = dim;
+                                                                               _tmp176_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp174_, _tmp175_);
                                                                                _g_free0 (length_cname);
-                                                                               length_cname = _tmp177_;
+                                                                               length_cname = _tmp176_;
                                                                        }
-                                                                       _tmp178_ = instance_struct;
-                                                                       _tmp179_ = len_type;
-                                                                       _tmp180_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp179_);
-                                                                       _tmp181_ = _tmp180_;
-                                                                       _tmp182_ = length_cname;
-                                                                       vala_ccode_struct_add_field (_tmp178_, _tmp181_, _tmp182_, NULL);
-                                                                       _g_free0 (_tmp181_);
+                                                                       _tmp177_ = instance_struct;
+                                                                       _tmp178_ = len_type;
+                                                                       _tmp179_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp178_);
+                                                                       _tmp180_ = _tmp179_;
+                                                                       _tmp181_ = length_cname;
+                                                                       vala_ccode_struct_add_field (_tmp177_, _tmp180_, _tmp181_, NULL);
+                                                                       _g_free0 (_tmp180_);
                                                                        _g_free0 (length_cname);
                                                                }
                                                        }
                                                }
-                                               _tmp184_ = array_type;
-                                               _tmp185_ = vala_array_type_get_rank (_tmp184_);
-                                               _tmp186_ = _tmp185_;
-                                               if (_tmp186_ == 1) {
-                                                       ValaField* _tmp187_ = NULL;
-                                                       gboolean _tmp188_ = FALSE;
-                                                       _tmp187_ = f;
-                                                       _tmp188_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp187_);
-                                                       _tmp183_ = _tmp188_;
+                                               _tmp183_ = array_type;
+                                               _tmp184_ = vala_array_type_get_rank (_tmp183_);
+                                               _tmp185_ = _tmp184_;
+                                               if (_tmp185_ == 1) {
+                                                       ValaField* _tmp186_ = NULL;
+                                                       gboolean _tmp187_ = FALSE;
+                                                       _tmp186_ = f;
+                                                       _tmp187_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp186_);
+                                                       _tmp182_ = _tmp187_;
                                                } else {
-                                                       _tmp183_ = FALSE;
+                                                       _tmp182_ = FALSE;
                                                }
-                                               if (_tmp183_) {
-                                                       ValaCCodeStruct* _tmp189_ = NULL;
-                                                       ValaDataType* _tmp190_ = NULL;
+                                               if (_tmp182_) {
+                                                       ValaCCodeStruct* _tmp188_ = NULL;
+                                                       ValaDataType* _tmp189_ = NULL;
+                                                       gchar* _tmp190_ = NULL;
                                                        gchar* _tmp191_ = NULL;
-                                                       gchar* _tmp192_ = NULL;
-                                                       ValaField* _tmp193_ = NULL;
+                                                       ValaField* _tmp192_ = NULL;
+                                                       const gchar* _tmp193_ = NULL;
                                                        const gchar* _tmp194_ = NULL;
-                                                       const gchar* _tmp195_ = NULL;
+                                                       gchar* _tmp195_ = NULL;
                                                        gchar* _tmp196_ = NULL;
-                                                       gchar* _tmp197_ = NULL;
-                                                       _tmp189_ = instance_struct;
-                                                       _tmp190_ = len_type;
-                                                       _tmp191_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp190_);
-                                                       _tmp192_ = _tmp191_;
-                                                       _tmp193_ = f;
-                                                       _tmp194_ = vala_symbol_get_name ((ValaSymbol*) _tmp193_);
-                                                       _tmp195_ = _tmp194_;
-                                                       _tmp196_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp195_);
-                                                       _tmp197_ = _tmp196_;
-                                                       vala_ccode_struct_add_field (_tmp189_, _tmp192_, _tmp197_, NULL);
-                                                       _g_free0 (_tmp197_);
-                                                       _g_free0 (_tmp192_);
+                                                       _tmp188_ = instance_struct;
+                                                       _tmp189_ = len_type;
+                                                       _tmp190_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp189_);
+                                                       _tmp191_ = _tmp190_;
+                                                       _tmp192_ = f;
+                                                       _tmp193_ = vala_symbol_get_name ((ValaSymbol*) _tmp192_);
+                                                       _tmp194_ = _tmp193_;
+                                                       _tmp195_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp194_);
+                                                       _tmp196_ = _tmp195_;
+                                                       vala_ccode_struct_add_field (_tmp188_, _tmp191_, _tmp196_, NULL);
+                                                       _g_free0 (_tmp196_);
+                                                       _g_free0 (_tmp191_);
                                                }
                                                _vala_code_node_unref0 (len_type);
                                        }
                                        _vala_code_node_unref0 (array_type);
                                } else {
-                                       ValaField* _tmp198_ = NULL;
+                                       ValaField* _tmp197_ = NULL;
+                                       ValaDataType* _tmp198_ = NULL;
                                        ValaDataType* _tmp199_ = NULL;
-                                       ValaDataType* _tmp200_ = NULL;
-                                       _tmp198_ = f;
-                                       _tmp199_ = vala_variable_get_variable_type ((ValaVariable*) _tmp198_);
-                                       _tmp200_ = _tmp199_;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp200_, VALA_TYPE_DELEGATE_TYPE)) {
+                                       _tmp197_ = f;
+                                       _tmp198_ = vala_variable_get_variable_type ((ValaVariable*) _tmp197_);
+                                       _tmp199_ = _tmp198_;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp199_, VALA_TYPE_DELEGATE_TYPE)) {
                                                ValaDelegateType* delegate_type = NULL;
-                                               ValaField* _tmp201_ = NULL;
+                                               ValaField* _tmp200_ = NULL;
+                                               ValaDataType* _tmp201_ = NULL;
                                                ValaDataType* _tmp202_ = NULL;
-                                               ValaDataType* _tmp203_ = NULL;
+                                               ValaDelegateType* _tmp203_ = NULL;
                                                ValaDelegateType* _tmp204_ = NULL;
-                                               ValaDelegateType* _tmp205_ = NULL;
+                                               ValaDelegate* _tmp205_ = NULL;
                                                ValaDelegate* _tmp206_ = NULL;
-                                               ValaDelegate* _tmp207_ = NULL;
+                                               gboolean _tmp207_ = FALSE;
                                                gboolean _tmp208_ = FALSE;
-                                               gboolean _tmp209_ = FALSE;
-                                               _tmp201_ = f;
-                                               _tmp202_ = vala_variable_get_variable_type ((ValaVariable*) _tmp201_);
-                                               _tmp203_ = _tmp202_;
-                                               _tmp204_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp203_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                                               delegate_type = _tmp204_;
-                                               _tmp205_ = delegate_type;
-                                               _tmp206_ = vala_delegate_type_get_delegate_symbol (_tmp205_);
-                                               _tmp207_ = _tmp206_;
-                                               _tmp208_ = vala_delegate_get_has_target (_tmp207_);
-                                               _tmp209_ = _tmp208_;
-                                               if (_tmp209_) {
-                                                       ValaCCodeStruct* _tmp210_ = NULL;
-                                                       ValaField* _tmp211_ = NULL;
+                                               _tmp200_ = f;
+                                               _tmp201_ = vala_variable_get_variable_type ((ValaVariable*) _tmp200_);
+                                               _tmp202_ = _tmp201_;
+                                               _tmp203_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp202_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                                               delegate_type = _tmp203_;
+                                               _tmp204_ = delegate_type;
+                                               _tmp205_ = vala_delegate_type_get_delegate_symbol (_tmp204_);
+                                               _tmp206_ = _tmp205_;
+                                               _tmp207_ = vala_delegate_get_has_target (_tmp206_);
+                                               _tmp208_ = _tmp207_;
+                                               if (_tmp208_) {
+                                                       ValaCCodeStruct* _tmp209_ = NULL;
+                                                       ValaField* _tmp210_ = NULL;
+                                                       gchar* _tmp211_ = NULL;
                                                        gchar* _tmp212_ = NULL;
-                                                       gchar* _tmp213_ = NULL;
-                                                       ValaDelegateType* _tmp214_ = NULL;
-                                                       gboolean _tmp215_ = FALSE;
-                                                       _tmp210_ = instance_struct;
-                                                       _tmp211_ = f;
-                                                       _tmp212_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp211_);
-                                                       _tmp213_ = _tmp212_;
-                                                       vala_ccode_struct_add_field (_tmp210_, "gpointer", _tmp213_, NULL);
-                                                       _g_free0 (_tmp213_);
-                                                       _tmp214_ = delegate_type;
-                                                       _tmp215_ = vala_data_type_is_disposable ((ValaDataType*) _tmp214_);
-                                                       if (_tmp215_) {
-                                                               ValaCCodeStruct* _tmp216_ = NULL;
-                                                               ValaField* _tmp217_ = NULL;
+                                                       ValaDelegateType* _tmp213_ = NULL;
+                                                       gboolean _tmp214_ = FALSE;
+                                                       _tmp209_ = instance_struct;
+                                                       _tmp210_ = f;
+                                                       _tmp211_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp210_);
+                                                       _tmp212_ = _tmp211_;
+                                                       vala_ccode_struct_add_field (_tmp209_, "gpointer", _tmp212_, NULL);
+                                                       _g_free0 (_tmp212_);
+                                                       _tmp213_ = delegate_type;
+                                                       _tmp214_ = vala_data_type_is_disposable ((ValaDataType*) _tmp213_);
+                                                       if (_tmp214_) {
+                                                               ValaCCodeStruct* _tmp215_ = NULL;
+                                                               ValaField* _tmp216_ = NULL;
+                                                               const gchar* _tmp217_ = NULL;
                                                                const gchar* _tmp218_ = NULL;
-                                                               const gchar* _tmp219_ = NULL;
+                                                               gchar* _tmp219_ = NULL;
                                                                gchar* _tmp220_ = NULL;
-                                                               gchar* _tmp221_ = NULL;
-                                                               _tmp216_ = instance_struct;
-                                                               _tmp217_ = f;
-                                                               _tmp218_ = vala_symbol_get_name ((ValaSymbol*) _tmp217_);
-                                                               _tmp219_ = _tmp218_;
-                                                               _tmp220_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp219_);
-                                                               _tmp221_ = _tmp220_;
-                                                               vala_ccode_struct_add_field (_tmp216_, "GDestroyNotify", _tmp221_, NULL);
-                                                               _g_free0 (_tmp221_);
+                                                               _tmp215_ = instance_struct;
+                                                               _tmp216_ = f;
+                                                               _tmp217_ = vala_symbol_get_name ((ValaSymbol*) _tmp216_);
+                                                               _tmp218_ = _tmp217_;
+                                                               _tmp219_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp218_);
+                                                               _tmp220_ = _tmp219_;
+                                                               vala_ccode_struct_add_field (_tmp215_, "GDestroyNotify", _tmp220_, NULL);
+                                                               _g_free0 (_tmp220_);
                                                        }
                                                }
                                                _vala_code_node_unref0 (delegate_type);
                                        }
                                }
+                               _vala_ccode_declarator_suffix_unref0 (suffix);
                        }
                        _g_free0 (field_ctype);
                        _vala_code_node_unref0 (f);
                }
                _vala_iterable_unref0 (_f_list);
        }
-       _tmp222_ = st;
-       _tmp223_ = vala_struct_get_base_struct (_tmp222_);
-       _tmp224_ = _tmp223_;
-       if (_tmp224_ == NULL) {
-               ValaCCodeFile* _tmp225_ = NULL;
-               ValaStruct* _tmp226_ = NULL;
+       _tmp221_ = st;
+       _tmp222_ = vala_struct_get_base_struct (_tmp221_);
+       _tmp223_ = _tmp222_;
+       if (_tmp223_ == NULL) {
+               ValaCCodeFile* _tmp224_ = NULL;
+               ValaStruct* _tmp225_ = NULL;
+               gchar* _tmp226_ = NULL;
                gchar* _tmp227_ = NULL;
                gchar* _tmp228_ = NULL;
                gchar* _tmp229_ = NULL;
-               gchar* _tmp230_ = NULL;
-               ValaStruct* _tmp231_ = NULL;
+               ValaStruct* _tmp230_ = NULL;
+               gchar* _tmp231_ = NULL;
                gchar* _tmp232_ = NULL;
-               gchar* _tmp233_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp233_ = NULL;
                ValaCCodeVariableDeclarator* _tmp234_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp235_ = NULL;
+               ValaCCodeTypeDefinition* _tmp235_ = NULL;
                ValaCCodeTypeDefinition* _tmp236_ = NULL;
-               ValaCCodeTypeDefinition* _tmp237_ = NULL;
-               ValaCCodeFile* _tmp238_ = NULL;
-               ValaCCodeStruct* _tmp239_ = NULL;
-               _tmp225_ = decl_space;
-               _tmp226_ = st;
-               _tmp227_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp226_);
-               _tmp228_ = _tmp227_;
-               _tmp229_ = g_strdup_printf ("struct _%s", _tmp228_);
-               _tmp230_ = _tmp229_;
-               _tmp231_ = st;
-               _tmp232_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp231_);
-               _tmp233_ = _tmp232_;
-               _tmp234_ = vala_ccode_variable_declarator_new (_tmp233_, NULL, NULL);
-               _tmp235_ = _tmp234_;
-               _tmp236_ = vala_ccode_type_definition_new (_tmp230_, (ValaCCodeDeclarator*) _tmp235_);
-               _tmp237_ = _tmp236_;
-               vala_ccode_file_add_type_declaration (_tmp225_, (ValaCCodeNode*) _tmp237_);
-               _vala_ccode_node_unref0 (_tmp237_);
-               _vala_ccode_node_unref0 (_tmp235_);
-               _g_free0 (_tmp233_);
-               _g_free0 (_tmp230_);
-               _g_free0 (_tmp228_);
-               _tmp238_ = decl_space;
-               _tmp239_ = instance_struct;
-               vala_ccode_file_add_type_definition (_tmp238_, (ValaCCodeNode*) _tmp239_);
+               ValaCCodeFile* _tmp237_ = NULL;
+               ValaCCodeStruct* _tmp238_ = NULL;
+               _tmp224_ = decl_space;
+               _tmp225_ = st;
+               _tmp226_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp225_);
+               _tmp227_ = _tmp226_;
+               _tmp228_ = g_strdup_printf ("struct _%s", _tmp227_);
+               _tmp229_ = _tmp228_;
+               _tmp230_ = st;
+               _tmp231_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp230_);
+               _tmp232_ = _tmp231_;
+               _tmp233_ = vala_ccode_variable_declarator_new (_tmp232_, NULL, NULL);
+               _tmp234_ = _tmp233_;
+               _tmp235_ = vala_ccode_type_definition_new (_tmp229_, (ValaCCodeDeclarator*) _tmp234_);
+               _tmp236_ = _tmp235_;
+               vala_ccode_file_add_type_declaration (_tmp224_, (ValaCCodeNode*) _tmp236_);
+               _vala_ccode_node_unref0 (_tmp236_);
+               _vala_ccode_node_unref0 (_tmp234_);
+               _g_free0 (_tmp232_);
+               _g_free0 (_tmp229_);
+               _g_free0 (_tmp227_);
+               _tmp237_ = decl_space;
+               _tmp238_ = instance_struct;
+               vala_ccode_file_add_type_definition (_tmp237_, (ValaCCodeNode*) _tmp238_);
        } else {
-               ValaCCodeFile* _tmp240_ = NULL;
+               ValaCCodeFile* _tmp239_ = NULL;
+               ValaStruct* _tmp240_ = NULL;
                ValaStruct* _tmp241_ = NULL;
                ValaStruct* _tmp242_ = NULL;
-               ValaStruct* _tmp243_ = NULL;
+               gchar* _tmp243_ = NULL;
                gchar* _tmp244_ = NULL;
-               gchar* _tmp245_ = NULL;
-               ValaStruct* _tmp246_ = NULL;
+               ValaStruct* _tmp245_ = NULL;
+               gchar* _tmp246_ = NULL;
                gchar* _tmp247_ = NULL;
-               gchar* _tmp248_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp248_ = NULL;
                ValaCCodeVariableDeclarator* _tmp249_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp250_ = NULL;
+               ValaCCodeTypeDefinition* _tmp250_ = NULL;
                ValaCCodeTypeDefinition* _tmp251_ = NULL;
-               ValaCCodeTypeDefinition* _tmp252_ = NULL;
-               _tmp240_ = decl_space;
-               _tmp241_ = st;
-               _tmp242_ = vala_struct_get_base_struct (_tmp241_);
-               _tmp243_ = _tmp242_;
-               _tmp244_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp243_);
-               _tmp245_ = _tmp244_;
-               _tmp246_ = st;
-               _tmp247_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp246_);
-               _tmp248_ = _tmp247_;
-               _tmp249_ = vala_ccode_variable_declarator_new (_tmp248_, NULL, NULL);
-               _tmp250_ = _tmp249_;
-               _tmp251_ = vala_ccode_type_definition_new (_tmp245_, (ValaCCodeDeclarator*) _tmp250_);
-               _tmp252_ = _tmp251_;
-               vala_ccode_file_add_type_declaration (_tmp240_, (ValaCCodeNode*) _tmp252_);
-               _vala_ccode_node_unref0 (_tmp252_);
-               _vala_ccode_node_unref0 (_tmp250_);
-               _g_free0 (_tmp248_);
-               _g_free0 (_tmp245_);
+               _tmp239_ = decl_space;
+               _tmp240_ = st;
+               _tmp241_ = vala_struct_get_base_struct (_tmp240_);
+               _tmp242_ = _tmp241_;
+               _tmp243_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp242_);
+               _tmp244_ = _tmp243_;
+               _tmp245_ = st;
+               _tmp246_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp245_);
+               _tmp247_ = _tmp246_;
+               _tmp248_ = vala_ccode_variable_declarator_new (_tmp247_, NULL, NULL);
+               _tmp249_ = _tmp248_;
+               _tmp250_ = vala_ccode_type_definition_new (_tmp244_, (ValaCCodeDeclarator*) _tmp249_);
+               _tmp251_ = _tmp250_;
+               vala_ccode_file_add_type_declaration (_tmp239_, (ValaCCodeNode*) _tmp251_);
+               _vala_ccode_node_unref0 (_tmp251_);
+               _vala_ccode_node_unref0 (_tmp249_);
+               _g_free0 (_tmp247_);
+               _g_free0 (_tmp244_);
        }
-       _tmp253_ = st;
-       _tmp254_ = vala_ccode_base_module_get_ccode_dup_function ((ValaTypeSymbol*) _tmp253_);
-       _tmp255_ = _tmp254_;
-       _tmp256_ = st;
-       _tmp257_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp256_);
-       _tmp258_ = _tmp257_;
-       _tmp259_ = g_strconcat (_tmp258_, "*", NULL);
-       _tmp260_ = _tmp259_;
-       _tmp261_ = vala_ccode_function_new (_tmp255_, _tmp260_);
-       _tmp262_ = _tmp261_;
-       _g_free0 (_tmp260_);
-       _g_free0 (_tmp258_);
-       _g_free0 (_tmp255_);
-       function = _tmp262_;
-       _tmp263_ = st;
-       _tmp264_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp263_);
-       if (_tmp264_) {
-               ValaCCodeFunction* _tmp265_ = NULL;
-               _tmp265_ = function;
-               vala_ccode_function_set_modifiers (_tmp265_, VALA_CCODE_MODIFIERS_STATIC);
+       _tmp252_ = st;
+       _tmp253_ = vala_ccode_base_module_get_ccode_dup_function ((ValaTypeSymbol*) _tmp252_);
+       _tmp254_ = _tmp253_;
+       _tmp255_ = st;
+       _tmp256_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp255_);
+       _tmp257_ = _tmp256_;
+       _tmp258_ = g_strconcat (_tmp257_, "*", NULL);
+       _tmp259_ = _tmp258_;
+       _tmp260_ = vala_ccode_function_new (_tmp254_, _tmp259_);
+       _tmp261_ = _tmp260_;
+       _g_free0 (_tmp259_);
+       _g_free0 (_tmp257_);
+       _g_free0 (_tmp254_);
+       function = _tmp261_;
+       _tmp262_ = st;
+       _tmp263_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp262_);
+       if (_tmp263_) {
+               ValaCCodeFunction* _tmp264_ = NULL;
+               _tmp264_ = function;
+               vala_ccode_function_set_modifiers (_tmp264_, VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp265_ = FALSE;
+               ValaCodeContext* _tmp266_ = NULL;
+               ValaCodeContext* _tmp267_ = NULL;
+               gboolean _tmp268_ = FALSE;
+               gboolean _tmp269_ = FALSE;
+               _tmp266_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp267_ = _tmp266_;
+               _tmp268_ = vala_code_context_get_hide_internal (_tmp267_);
+               _tmp269_ = _tmp268_;
+               if (_tmp269_) {
+                       ValaStruct* _tmp270_ = NULL;
+                       gboolean _tmp271_ = FALSE;
+                       _tmp270_ = st;
+                       _tmp271_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp270_);
+                       _tmp265_ = _tmp271_;
+               } else {
+                       _tmp265_ = FALSE;
+               }
+               if (_tmp265_) {
+                       ValaCCodeFunction* _tmp272_ = NULL;
+                       _tmp272_ = function;
+                       vala_ccode_function_set_modifiers (_tmp272_, VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp266_ = function;
-       _tmp267_ = st;
-       _tmp268_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp267_);
-       _tmp269_ = _tmp268_;
-       _tmp270_ = g_strconcat ("const ", _tmp269_, NULL);
-       _tmp271_ = _tmp270_;
-       _tmp272_ = g_strconcat (_tmp271_, "*", NULL);
-       _tmp273_ = _tmp272_;
-       _tmp274_ = vala_ccode_parameter_new ("self", _tmp273_);
-       _tmp275_ = _tmp274_;
-       vala_ccode_function_add_parameter (_tmp266_, _tmp275_);
-       _vala_ccode_node_unref0 (_tmp275_);
-       _g_free0 (_tmp273_);
-       _g_free0 (_tmp271_);
-       _g_free0 (_tmp269_);
-       _tmp276_ = decl_space;
-       _tmp277_ = function;
-       vala_ccode_file_add_function_declaration (_tmp276_, _tmp277_);
-       _tmp278_ = st;
-       _tmp279_ = vala_ccode_base_module_get_ccode_free_function ((ValaTypeSymbol*) _tmp278_);
+       _tmp273_ = function;
+       _tmp274_ = st;
+       _tmp275_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp274_);
+       _tmp276_ = _tmp275_;
+       _tmp277_ = g_strconcat ("const ", _tmp276_, NULL);
+       _tmp278_ = _tmp277_;
+       _tmp279_ = g_strconcat (_tmp278_, "*", NULL);
        _tmp280_ = _tmp279_;
-       _tmp281_ = vala_ccode_function_new (_tmp280_, "void");
-       _vala_ccode_node_unref0 (function);
-       function = _tmp281_;
+       _tmp281_ = vala_ccode_parameter_new ("self", _tmp280_);
+       _tmp282_ = _tmp281_;
+       vala_ccode_function_add_parameter (_tmp273_, _tmp282_);
+       _vala_ccode_node_unref0 (_tmp282_);
        _g_free0 (_tmp280_);
-       _tmp282_ = st;
-       _tmp283_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp282_);
-       if (_tmp283_) {
-               ValaCCodeFunction* _tmp284_ = NULL;
-               _tmp284_ = function;
-               vala_ccode_function_set_modifiers (_tmp284_, VALA_CCODE_MODIFIERS_STATIC);
+       _g_free0 (_tmp278_);
+       _g_free0 (_tmp276_);
+       _tmp283_ = decl_space;
+       _tmp284_ = function;
+       vala_ccode_file_add_function_declaration (_tmp283_, _tmp284_);
+       _tmp285_ = st;
+       _tmp286_ = vala_ccode_base_module_get_ccode_free_function ((ValaTypeSymbol*) _tmp285_);
+       _tmp287_ = _tmp286_;
+       _tmp288_ = vala_ccode_function_new (_tmp287_, "void");
+       _vala_ccode_node_unref0 (function);
+       function = _tmp288_;
+       _g_free0 (_tmp287_);
+       _tmp289_ = st;
+       _tmp290_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp289_);
+       if (_tmp290_) {
+               ValaCCodeFunction* _tmp291_ = NULL;
+               _tmp291_ = function;
+               vala_ccode_function_set_modifiers (_tmp291_, VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp292_ = FALSE;
+               ValaCodeContext* _tmp293_ = NULL;
+               ValaCodeContext* _tmp294_ = NULL;
+               gboolean _tmp295_ = FALSE;
+               gboolean _tmp296_ = FALSE;
+               _tmp293_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp294_ = _tmp293_;
+               _tmp295_ = vala_code_context_get_hide_internal (_tmp294_);
+               _tmp296_ = _tmp295_;
+               if (_tmp296_) {
+                       ValaStruct* _tmp297_ = NULL;
+                       gboolean _tmp298_ = FALSE;
+                       _tmp297_ = st;
+                       _tmp298_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp297_);
+                       _tmp292_ = _tmp298_;
+               } else {
+                       _tmp292_ = FALSE;
+               }
+               if (_tmp292_) {
+                       ValaCCodeFunction* _tmp299_ = NULL;
+                       _tmp299_ = function;
+                       vala_ccode_function_set_modifiers (_tmp299_, VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp285_ = function;
-       _tmp286_ = st;
-       _tmp287_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp286_);
-       _tmp288_ = _tmp287_;
-       _tmp289_ = g_strconcat (_tmp288_, "*", NULL);
-       _tmp290_ = _tmp289_;
-       _tmp291_ = vala_ccode_parameter_new ("self", _tmp290_);
-       _tmp292_ = _tmp291_;
-       vala_ccode_function_add_parameter (_tmp285_, _tmp292_);
-       _vala_ccode_node_unref0 (_tmp292_);
-       _g_free0 (_tmp290_);
-       _g_free0 (_tmp288_);
-       _tmp293_ = decl_space;
-       _tmp294_ = function;
-       vala_ccode_file_add_function_declaration (_tmp293_, _tmp294_);
-       _tmp295_ = st;
-       _tmp296_ = vala_struct_is_disposable (_tmp295_);
-       if (_tmp296_) {
-               ValaStruct* _tmp297_ = NULL;
-               gchar* _tmp298_ = NULL;
-               gchar* _tmp299_ = NULL;
-               ValaCCodeFunction* _tmp300_ = NULL;
-               ValaStruct* _tmp301_ = NULL;
-               gboolean _tmp302_ = FALSE;
-               ValaCCodeFunction* _tmp304_ = NULL;
-               ValaStruct* _tmp305_ = NULL;
-               gchar* _tmp306_ = NULL;
-               gchar* _tmp307_ = NULL;
-               gchar* _tmp308_ = NULL;
-               gchar* _tmp309_ = NULL;
-               gchar* _tmp310_ = NULL;
-               gchar* _tmp311_ = NULL;
-               ValaCCodeParameter* _tmp312_ = NULL;
-               ValaCCodeParameter* _tmp313_ = NULL;
-               ValaCCodeFunction* _tmp314_ = NULL;
-               ValaStruct* _tmp315_ = NULL;
-               gchar* _tmp316_ = NULL;
-               gchar* _tmp317_ = NULL;
-               gchar* _tmp318_ = NULL;
-               gchar* _tmp319_ = NULL;
-               ValaCCodeParameter* _tmp320_ = NULL;
-               ValaCCodeParameter* _tmp321_ = NULL;
-               ValaCCodeFile* _tmp322_ = NULL;
-               ValaCCodeFunction* _tmp323_ = NULL;
-               ValaStruct* _tmp324_ = NULL;
-               gchar* _tmp325_ = NULL;
-               gchar* _tmp326_ = NULL;
+       _tmp300_ = function;
+       _tmp301_ = st;
+       _tmp302_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp301_);
+       _tmp303_ = _tmp302_;
+       _tmp304_ = g_strconcat (_tmp303_, "*", NULL);
+       _tmp305_ = _tmp304_;
+       _tmp306_ = vala_ccode_parameter_new ("self", _tmp305_);
+       _tmp307_ = _tmp306_;
+       vala_ccode_function_add_parameter (_tmp300_, _tmp307_);
+       _vala_ccode_node_unref0 (_tmp307_);
+       _g_free0 (_tmp305_);
+       _g_free0 (_tmp303_);
+       _tmp308_ = decl_space;
+       _tmp309_ = function;
+       vala_ccode_file_add_function_declaration (_tmp308_, _tmp309_);
+       _tmp310_ = st;
+       _tmp311_ = vala_struct_is_disposable (_tmp310_);
+       if (_tmp311_) {
+               ValaStruct* _tmp312_ = NULL;
+               gchar* _tmp313_ = NULL;
+               gchar* _tmp314_ = NULL;
+               ValaCCodeFunction* _tmp315_ = NULL;
+               ValaStruct* _tmp316_ = NULL;
+               gboolean _tmp317_ = FALSE;
                ValaCCodeFunction* _tmp327_ = NULL;
                ValaStruct* _tmp328_ = NULL;
-               gboolean _tmp329_ = FALSE;
-               ValaCCodeFunction* _tmp331_ = NULL;
-               ValaStruct* _tmp332_ = NULL;
+               gchar* _tmp329_ = NULL;
+               gchar* _tmp330_ = NULL;
+               gchar* _tmp331_ = NULL;
+               gchar* _tmp332_ = NULL;
                gchar* _tmp333_ = NULL;
                gchar* _tmp334_ = NULL;
-               gchar* _tmp335_ = NULL;
-               gchar* _tmp336_ = NULL;
-               ValaCCodeParameter* _tmp337_ = NULL;
-               ValaCCodeParameter* _tmp338_ = NULL;
-               ValaCCodeFile* _tmp339_ = NULL;
-               ValaCCodeFunction* _tmp340_ = NULL;
-               _tmp297_ = st;
-               _tmp298_ = vala_ccode_base_module_get_ccode_copy_function ((ValaTypeSymbol*) _tmp297_);
-               _tmp299_ = _tmp298_;
-               _tmp300_ = vala_ccode_function_new (_tmp299_, "void");
+               ValaCCodeParameter* _tmp335_ = NULL;
+               ValaCCodeParameter* _tmp336_ = NULL;
+               ValaCCodeFunction* _tmp337_ = NULL;
+               ValaStruct* _tmp338_ = NULL;
+               gchar* _tmp339_ = NULL;
+               gchar* _tmp340_ = NULL;
+               gchar* _tmp341_ = NULL;
+               gchar* _tmp342_ = NULL;
+               ValaCCodeParameter* _tmp343_ = NULL;
+               ValaCCodeParameter* _tmp344_ = NULL;
+               ValaCCodeFile* _tmp345_ = NULL;
+               ValaCCodeFunction* _tmp346_ = NULL;
+               ValaStruct* _tmp347_ = NULL;
+               gchar* _tmp348_ = NULL;
+               gchar* _tmp349_ = NULL;
+               ValaCCodeFunction* _tmp350_ = NULL;
+               ValaStruct* _tmp351_ = NULL;
+               gboolean _tmp352_ = FALSE;
+               ValaCCodeFunction* _tmp362_ = NULL;
+               ValaStruct* _tmp363_ = NULL;
+               gchar* _tmp364_ = NULL;
+               gchar* _tmp365_ = NULL;
+               gchar* _tmp366_ = NULL;
+               gchar* _tmp367_ = NULL;
+               ValaCCodeParameter* _tmp368_ = NULL;
+               ValaCCodeParameter* _tmp369_ = NULL;
+               ValaCCodeFile* _tmp370_ = NULL;
+               ValaCCodeFunction* _tmp371_ = NULL;
+               _tmp312_ = st;
+               _tmp313_ = vala_ccode_base_module_get_ccode_copy_function ((ValaTypeSymbol*) _tmp312_);
+               _tmp314_ = _tmp313_;
+               _tmp315_ = vala_ccode_function_new (_tmp314_, "void");
                _vala_ccode_node_unref0 (function);
-               function = _tmp300_;
-               _g_free0 (_tmp299_);
-               _tmp301_ = st;
-               _tmp302_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp301_);
-               if (_tmp302_) {
-                       ValaCCodeFunction* _tmp303_ = NULL;
-                       _tmp303_ = function;
-                       vala_ccode_function_set_modifiers (_tmp303_, VALA_CCODE_MODIFIERS_STATIC);
+               function = _tmp315_;
+               _g_free0 (_tmp314_);
+               _tmp316_ = st;
+               _tmp317_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp316_);
+               if (_tmp317_) {
+                       ValaCCodeFunction* _tmp318_ = NULL;
+                       _tmp318_ = function;
+                       vala_ccode_function_set_modifiers (_tmp318_, VALA_CCODE_MODIFIERS_STATIC);
+               } else {
+                       gboolean _tmp319_ = FALSE;
+                       ValaCodeContext* _tmp320_ = NULL;
+                       ValaCodeContext* _tmp321_ = NULL;
+                       gboolean _tmp322_ = FALSE;
+                       gboolean _tmp323_ = FALSE;
+                       _tmp320_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp321_ = _tmp320_;
+                       _tmp322_ = vala_code_context_get_hide_internal (_tmp321_);
+                       _tmp323_ = _tmp322_;
+                       if (_tmp323_) {
+                               ValaStruct* _tmp324_ = NULL;
+                               gboolean _tmp325_ = FALSE;
+                               _tmp324_ = st;
+                               _tmp325_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp324_);
+                               _tmp319_ = _tmp325_;
+                       } else {
+                               _tmp319_ = FALSE;
+                       }
+                       if (_tmp319_) {
+                               ValaCCodeFunction* _tmp326_ = NULL;
+                               _tmp326_ = function;
+                               vala_ccode_function_set_modifiers (_tmp326_, VALA_CCODE_MODIFIERS_INTERNAL);
+                       }
                }
-               _tmp304_ = function;
-               _tmp305_ = st;
-               _tmp306_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp305_);
-               _tmp307_ = _tmp306_;
-               _tmp308_ = g_strconcat ("const ", _tmp307_, NULL);
-               _tmp309_ = _tmp308_;
-               _tmp310_ = g_strconcat (_tmp309_, "*", NULL);
-               _tmp311_ = _tmp310_;
-               _tmp312_ = vala_ccode_parameter_new ("self", _tmp311_);
-               _tmp313_ = _tmp312_;
-               vala_ccode_function_add_parameter (_tmp304_, _tmp313_);
-               _vala_ccode_node_unref0 (_tmp313_);
-               _g_free0 (_tmp311_);
-               _g_free0 (_tmp309_);
-               _g_free0 (_tmp307_);
-               _tmp314_ = function;
-               _tmp315_ = st;
-               _tmp316_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp315_);
-               _tmp317_ = _tmp316_;
-               _tmp318_ = g_strconcat (_tmp317_, "*", NULL);
-               _tmp319_ = _tmp318_;
-               _tmp320_ = vala_ccode_parameter_new ("dest", _tmp319_);
-               _tmp321_ = _tmp320_;
-               vala_ccode_function_add_parameter (_tmp314_, _tmp321_);
-               _vala_ccode_node_unref0 (_tmp321_);
-               _g_free0 (_tmp319_);
-               _g_free0 (_tmp317_);
-               _tmp322_ = decl_space;
-               _tmp323_ = function;
-               vala_ccode_file_add_function_declaration (_tmp322_, _tmp323_);
-               _tmp324_ = st;
-               _tmp325_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp324_);
-               _tmp326_ = _tmp325_;
-               _tmp327_ = vala_ccode_function_new (_tmp326_, "void");
-               _vala_ccode_node_unref0 (function);
-               function = _tmp327_;
-               _g_free0 (_tmp326_);
+               _tmp327_ = function;
                _tmp328_ = st;
-               _tmp329_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp328_);
-               if (_tmp329_) {
-                       ValaCCodeFunction* _tmp330_ = NULL;
-                       _tmp330_ = function;
-                       vala_ccode_function_set_modifiers (_tmp330_, VALA_CCODE_MODIFIERS_STATIC);
-               }
-               _tmp331_ = function;
-               _tmp332_ = st;
-               _tmp333_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp332_);
+               _tmp329_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp328_);
+               _tmp330_ = _tmp329_;
+               _tmp331_ = g_strconcat ("const ", _tmp330_, NULL);
+               _tmp332_ = _tmp331_;
+               _tmp333_ = g_strconcat (_tmp332_, "*", NULL);
                _tmp334_ = _tmp333_;
-               _tmp335_ = g_strconcat (_tmp334_, "*", NULL);
+               _tmp335_ = vala_ccode_parameter_new ("self", _tmp334_);
                _tmp336_ = _tmp335_;
-               _tmp337_ = vala_ccode_parameter_new ("self", _tmp336_);
-               _tmp338_ = _tmp337_;
-               vala_ccode_function_add_parameter (_tmp331_, _tmp338_);
-               _vala_ccode_node_unref0 (_tmp338_);
-               _g_free0 (_tmp336_);
+               vala_ccode_function_add_parameter (_tmp327_, _tmp336_);
+               _vala_ccode_node_unref0 (_tmp336_);
                _g_free0 (_tmp334_);
-               _tmp339_ = decl_space;
-               _tmp340_ = function;
-               vala_ccode_file_add_function_declaration (_tmp339_, _tmp340_);
+               _g_free0 (_tmp332_);
+               _g_free0 (_tmp330_);
+               _tmp337_ = function;
+               _tmp338_ = st;
+               _tmp339_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp338_);
+               _tmp340_ = _tmp339_;
+               _tmp341_ = g_strconcat (_tmp340_, "*", NULL);
+               _tmp342_ = _tmp341_;
+               _tmp343_ = vala_ccode_parameter_new ("dest", _tmp342_);
+               _tmp344_ = _tmp343_;
+               vala_ccode_function_add_parameter (_tmp337_, _tmp344_);
+               _vala_ccode_node_unref0 (_tmp344_);
+               _g_free0 (_tmp342_);
+               _g_free0 (_tmp340_);
+               _tmp345_ = decl_space;
+               _tmp346_ = function;
+               vala_ccode_file_add_function_declaration (_tmp345_, _tmp346_);
+               _tmp347_ = st;
+               _tmp348_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp347_);
+               _tmp349_ = _tmp348_;
+               _tmp350_ = vala_ccode_function_new (_tmp349_, "void");
+               _vala_ccode_node_unref0 (function);
+               function = _tmp350_;
+               _g_free0 (_tmp349_);
+               _tmp351_ = st;
+               _tmp352_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp351_);
+               if (_tmp352_) {
+                       ValaCCodeFunction* _tmp353_ = NULL;
+                       _tmp353_ = function;
+                       vala_ccode_function_set_modifiers (_tmp353_, VALA_CCODE_MODIFIERS_STATIC);
+               } else {
+                       gboolean _tmp354_ = FALSE;
+                       ValaCodeContext* _tmp355_ = NULL;
+                       ValaCodeContext* _tmp356_ = NULL;
+                       gboolean _tmp357_ = FALSE;
+                       gboolean _tmp358_ = FALSE;
+                       _tmp355_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp356_ = _tmp355_;
+                       _tmp357_ = vala_code_context_get_hide_internal (_tmp356_);
+                       _tmp358_ = _tmp357_;
+                       if (_tmp358_) {
+                               ValaStruct* _tmp359_ = NULL;
+                               gboolean _tmp360_ = FALSE;
+                               _tmp359_ = st;
+                               _tmp360_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp359_);
+                               _tmp354_ = _tmp360_;
+                       } else {
+                               _tmp354_ = FALSE;
+                       }
+                       if (_tmp354_) {
+                               ValaCCodeFunction* _tmp361_ = NULL;
+                               _tmp361_ = function;
+                               vala_ccode_function_set_modifiers (_tmp361_, VALA_CCODE_MODIFIERS_INTERNAL);
+                       }
+               }
+               _tmp362_ = function;
+               _tmp363_ = st;
+               _tmp364_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp363_);
+               _tmp365_ = _tmp364_;
+               _tmp366_ = g_strconcat (_tmp365_, "*", NULL);
+               _tmp367_ = _tmp366_;
+               _tmp368_ = vala_ccode_parameter_new ("self", _tmp367_);
+               _tmp369_ = _tmp368_;
+               vala_ccode_function_add_parameter (_tmp362_, _tmp369_);
+               _vala_ccode_node_unref0 (_tmp369_);
+               _g_free0 (_tmp367_);
+               _g_free0 (_tmp365_);
+               _tmp370_ = decl_space;
+               _tmp371_ = function;
+               vala_ccode_file_add_function_declaration (_tmp370_, _tmp371_);
        }
        _vala_ccode_node_unref0 (function);
        _vala_ccode_node_unref0 (instance_struct);
@@ -1728,30 +1823,29 @@ static void vala_ccode_struct_module_add_struct_free_function (ValaCCodeStructMo
        ValaCCodeFunction* _tmp3_ = NULL;
        ValaCCodeFunction* _tmp4_ = NULL;
        ValaStruct* _tmp5_ = NULL;
-       ValaSymbolAccessibility _tmp6_ = 0;
-       ValaSymbolAccessibility _tmp7_ = 0;
-       ValaCCodeFunction* _tmp9_ = NULL;
-       ValaStruct* _tmp10_ = NULL;
-       gchar* _tmp11_ = NULL;
-       gchar* _tmp12_ = NULL;
-       gchar* _tmp13_ = NULL;
-       gchar* _tmp14_ = NULL;
-       ValaCCodeParameter* _tmp15_ = NULL;
-       ValaCCodeParameter* _tmp16_ = NULL;
-       ValaCCodeFunction* _tmp17_ = NULL;
-       ValaStruct* _tmp18_ = NULL;
-       gboolean _tmp19_ = FALSE;
+       gboolean _tmp6_ = FALSE;
+       ValaCCodeFunction* _tmp16_ = NULL;
+       ValaStruct* _tmp17_ = NULL;
+       gchar* _tmp18_ = NULL;
+       gchar* _tmp19_ = NULL;
+       gchar* _tmp20_ = NULL;
+       gchar* _tmp21_ = NULL;
+       ValaCCodeParameter* _tmp22_ = NULL;
+       ValaCCodeParameter* _tmp23_ = NULL;
+       ValaCCodeFunction* _tmp24_ = NULL;
+       ValaStruct* _tmp25_ = NULL;
+       gboolean _tmp26_ = FALSE;
        ValaCCodeFunctionCall* free_call = NULL;
-       ValaCCodeIdentifier* _tmp33_ = NULL;
-       ValaCCodeIdentifier* _tmp34_ = NULL;
-       ValaCCodeFunctionCall* _tmp35_ = NULL;
-       ValaCCodeFunctionCall* _tmp36_ = NULL;
-       ValaCCodeIdentifier* _tmp37_ = NULL;
-       ValaCCodeIdentifier* _tmp38_ = NULL;
-       ValaCCodeFunction* _tmp39_ = NULL;
-       ValaCCodeFunction* _tmp40_ = NULL;
-       ValaCCodeFile* _tmp41_ = NULL;
-       ValaCCodeFunction* _tmp42_ = NULL;
+       ValaCCodeIdentifier* _tmp40_ = NULL;
+       ValaCCodeIdentifier* _tmp41_ = NULL;
+       ValaCCodeFunctionCall* _tmp42_ = NULL;
+       ValaCCodeFunctionCall* _tmp43_ = NULL;
+       ValaCCodeIdentifier* _tmp44_ = NULL;
+       ValaCCodeIdentifier* _tmp45_ = NULL;
+       ValaCCodeFunction* _tmp46_ = NULL;
+       ValaCCodeFunction* _tmp47_ = NULL;
+       ValaCCodeFile* _tmp48_ = NULL;
+       ValaCCodeFunction* _tmp49_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (st != NULL);
        _tmp0_ = st;
@@ -1762,82 +1856,105 @@ static void vala_ccode_struct_module_add_struct_free_function (ValaCCodeStructMo
        _g_free0 (_tmp2_);
        function = _tmp4_;
        _tmp5_ = st;
-       _tmp6_ = vala_symbol_get_access ((ValaSymbol*) _tmp5_);
-       _tmp7_ = _tmp6_;
-       if (_tmp7_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-               ValaCCodeFunction* _tmp8_ = NULL;
-               _tmp8_ = function;
-               vala_ccode_function_set_modifiers (_tmp8_, VALA_CCODE_MODIFIERS_STATIC);
+       _tmp6_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp5_);
+       if (_tmp6_) {
+               ValaCCodeFunction* _tmp7_ = NULL;
+               _tmp7_ = function;
+               vala_ccode_function_set_modifiers (_tmp7_, VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp8_ = FALSE;
+               ValaCodeContext* _tmp9_ = NULL;
+               ValaCodeContext* _tmp10_ = NULL;
+               gboolean _tmp11_ = FALSE;
+               gboolean _tmp12_ = FALSE;
+               _tmp9_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp10_ = _tmp9_;
+               _tmp11_ = vala_code_context_get_hide_internal (_tmp10_);
+               _tmp12_ = _tmp11_;
+               if (_tmp12_) {
+                       ValaStruct* _tmp13_ = NULL;
+                       gboolean _tmp14_ = FALSE;
+                       _tmp13_ = st;
+                       _tmp14_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp13_);
+                       _tmp8_ = _tmp14_;
+               } else {
+                       _tmp8_ = FALSE;
+               }
+               if (_tmp8_) {
+                       ValaCCodeFunction* _tmp15_ = NULL;
+                       _tmp15_ = function;
+                       vala_ccode_function_set_modifiers (_tmp15_, VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp9_ = function;
-       _tmp10_ = st;
-       _tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_);
-       _tmp12_ = _tmp11_;
-       _tmp13_ = g_strconcat (_tmp12_, "*", NULL);
-       _tmp14_ = _tmp13_;
-       _tmp15_ = vala_ccode_parameter_new ("self", _tmp14_);
-       _tmp16_ = _tmp15_;
-       vala_ccode_function_add_parameter (_tmp9_, _tmp16_);
-       _vala_ccode_node_unref0 (_tmp16_);
-       _g_free0 (_tmp14_);
-       _g_free0 (_tmp12_);
-       _tmp17_ = function;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp17_);
-       _tmp18_ = st;
-       _tmp19_ = vala_struct_is_disposable (_tmp18_);
-       if (_tmp19_) {
+       _tmp16_ = function;
+       _tmp17_ = st;
+       _tmp18_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp17_);
+       _tmp19_ = _tmp18_;
+       _tmp20_ = g_strconcat (_tmp19_, "*", NULL);
+       _tmp21_ = _tmp20_;
+       _tmp22_ = vala_ccode_parameter_new ("self", _tmp21_);
+       _tmp23_ = _tmp22_;
+       vala_ccode_function_add_parameter (_tmp16_, _tmp23_);
+       _vala_ccode_node_unref0 (_tmp23_);
+       _g_free0 (_tmp21_);
+       _g_free0 (_tmp19_);
+       _tmp24_ = function;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp24_);
+       _tmp25_ = st;
+       _tmp26_ = vala_struct_is_disposable (_tmp25_);
+       if (_tmp26_) {
                ValaCCodeFunctionCall* destroy_call = NULL;
-               ValaStruct* _tmp20_ = NULL;
-               gchar* _tmp21_ = NULL;
-               gchar* _tmp22_ = NULL;
-               ValaCCodeIdentifier* _tmp23_ = NULL;
-               ValaCCodeIdentifier* _tmp24_ = NULL;
-               ValaCCodeFunctionCall* _tmp25_ = NULL;
-               ValaCCodeFunctionCall* _tmp26_ = NULL;
-               ValaCCodeFunctionCall* _tmp27_ = NULL;
-               ValaCCodeIdentifier* _tmp28_ = NULL;
-               ValaCCodeIdentifier* _tmp29_ = NULL;
-               ValaCCodeFunction* _tmp30_ = NULL;
-               ValaCCodeFunction* _tmp31_ = NULL;
+               ValaStruct* _tmp27_ = NULL;
+               gchar* _tmp28_ = NULL;
+               gchar* _tmp29_ = NULL;
+               ValaCCodeIdentifier* _tmp30_ = NULL;
+               ValaCCodeIdentifier* _tmp31_ = NULL;
                ValaCCodeFunctionCall* _tmp32_ = NULL;
-               _tmp20_ = st;
-               _tmp21_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp20_);
-               _tmp22_ = _tmp21_;
-               _tmp23_ = vala_ccode_identifier_new (_tmp22_);
-               _tmp24_ = _tmp23_;
-               _tmp25_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp24_);
-               _tmp26_ = _tmp25_;
-               _vala_ccode_node_unref0 (_tmp24_);
-               _g_free0 (_tmp22_);
-               destroy_call = _tmp26_;
-               _tmp27_ = destroy_call;
-               _tmp28_ = vala_ccode_identifier_new ("self");
+               ValaCCodeFunctionCall* _tmp33_ = NULL;
+               ValaCCodeFunctionCall* _tmp34_ = NULL;
+               ValaCCodeIdentifier* _tmp35_ = NULL;
+               ValaCCodeIdentifier* _tmp36_ = NULL;
+               ValaCCodeFunction* _tmp37_ = NULL;
+               ValaCCodeFunction* _tmp38_ = NULL;
+               ValaCCodeFunctionCall* _tmp39_ = NULL;
+               _tmp27_ = st;
+               _tmp28_ = vala_ccode_base_module_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp27_);
                _tmp29_ = _tmp28_;
-               vala_ccode_function_call_add_argument (_tmp27_, (ValaCCodeExpression*) _tmp29_);
-               _vala_ccode_node_unref0 (_tmp29_);
-               _tmp30_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp30_ = vala_ccode_identifier_new (_tmp29_);
                _tmp31_ = _tmp30_;
-               _tmp32_ = destroy_call;
-               vala_ccode_function_add_expression (_tmp31_, (ValaCCodeExpression*) _tmp32_);
+               _tmp32_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp31_);
+               _tmp33_ = _tmp32_;
+               _vala_ccode_node_unref0 (_tmp31_);
+               _g_free0 (_tmp29_);
+               destroy_call = _tmp33_;
+               _tmp34_ = destroy_call;
+               _tmp35_ = vala_ccode_identifier_new ("self");
+               _tmp36_ = _tmp35_;
+               vala_ccode_function_call_add_argument (_tmp34_, (ValaCCodeExpression*) _tmp36_);
+               _vala_ccode_node_unref0 (_tmp36_);
+               _tmp37_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp38_ = _tmp37_;
+               _tmp39_ = destroy_call;
+               vala_ccode_function_add_expression (_tmp38_, (ValaCCodeExpression*) _tmp39_);
                _vala_ccode_node_unref0 (destroy_call);
        }
-       _tmp33_ = vala_ccode_identifier_new ("g_free");
-       _tmp34_ = _tmp33_;
-       _tmp35_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp34_);
-       _tmp36_ = _tmp35_;
-       _vala_ccode_node_unref0 (_tmp34_);
-       free_call = _tmp36_;
-       _tmp37_ = vala_ccode_identifier_new ("self");
-       _tmp38_ = _tmp37_;
-       vala_ccode_function_call_add_argument (free_call, (ValaCCodeExpression*) _tmp38_);
-       _vala_ccode_node_unref0 (_tmp38_);
-       _tmp39_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp40_ = _tmp39_;
-       vala_ccode_function_add_expression (_tmp40_, (ValaCCodeExpression*) free_call);
+       _tmp40_ = vala_ccode_identifier_new ("g_free");
+       _tmp41_ = _tmp40_;
+       _tmp42_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp41_);
+       _tmp43_ = _tmp42_;
+       _vala_ccode_node_unref0 (_tmp41_);
+       free_call = _tmp43_;
+       _tmp44_ = vala_ccode_identifier_new ("self");
+       _tmp45_ = _tmp44_;
+       vala_ccode_function_call_add_argument (free_call, (ValaCCodeExpression*) _tmp45_);
+       _vala_ccode_node_unref0 (_tmp45_);
+       _tmp46_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp47_ = _tmp46_;
+       vala_ccode_function_add_expression (_tmp47_, (ValaCCodeExpression*) free_call);
        vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-       _tmp41_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp42_ = function;
-       vala_ccode_file_add_function (_tmp41_, _tmp42_);
+       _tmp48_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp49_ = function;
+       vala_ccode_file_add_function (_tmp48_, _tmp49_);
        _vala_ccode_node_unref0 (free_call);
        _vala_ccode_node_unref0 (function);
 }
@@ -1851,37 +1968,36 @@ static void vala_ccode_struct_module_add_struct_copy_function (ValaCCodeStructMo
        ValaCCodeFunction* _tmp3_ = NULL;
        ValaCCodeFunction* _tmp4_ = NULL;
        ValaStruct* _tmp5_ = NULL;
-       ValaSymbolAccessibility _tmp6_ = 0;
-       ValaSymbolAccessibility _tmp7_ = 0;
-       ValaCCodeFunction* _tmp9_ = NULL;
-       ValaStruct* _tmp10_ = NULL;
-       gchar* _tmp11_ = NULL;
-       gchar* _tmp12_ = NULL;
-       gchar* _tmp13_ = NULL;
-       gchar* _tmp14_ = NULL;
-       gchar* _tmp15_ = NULL;
-       gchar* _tmp16_ = NULL;
-       ValaCCodeParameter* _tmp17_ = NULL;
-       ValaCCodeParameter* _tmp18_ = NULL;
-       ValaCCodeFunction* _tmp19_ = NULL;
-       ValaStruct* _tmp20_ = NULL;
+       gboolean _tmp6_ = FALSE;
+       ValaCCodeFunction* _tmp16_ = NULL;
+       ValaStruct* _tmp17_ = NULL;
+       gchar* _tmp18_ = NULL;
+       gchar* _tmp19_ = NULL;
+       gchar* _tmp20_ = NULL;
        gchar* _tmp21_ = NULL;
        gchar* _tmp22_ = NULL;
        gchar* _tmp23_ = NULL;
-       gchar* _tmp24_ = NULL;
+       ValaCCodeParameter* _tmp24_ = NULL;
        ValaCCodeParameter* _tmp25_ = NULL;
-       ValaCCodeParameter* _tmp26_ = NULL;
-       ValaCCodeFunction* _tmp27_ = NULL;
+       ValaCCodeFunction* _tmp26_ = NULL;
+       ValaStruct* _tmp27_ = NULL;
+       gchar* _tmp28_ = NULL;
+       gchar* _tmp29_ = NULL;
+       gchar* _tmp30_ = NULL;
+       gchar* _tmp31_ = NULL;
+       ValaCCodeParameter* _tmp32_ = NULL;
+       ValaCCodeParameter* _tmp33_ = NULL;
+       ValaCCodeFunction* _tmp34_ = NULL;
        ValaGLibValue* dest_struct = NULL;
-       ValaStruct* _tmp28_ = NULL;
-       ValaDataType* _tmp29_ = NULL;
-       ValaDataType* _tmp30_ = NULL;
-       ValaCCodeIdentifier* _tmp31_ = NULL;
-       ValaCCodeIdentifier* _tmp32_ = NULL;
-       ValaGLibValue* _tmp33_ = NULL;
-       ValaGLibValue* _tmp34_ = NULL;
-       ValaCCodeFile* _tmp66_ = NULL;
-       ValaCCodeFunction* _tmp67_ = NULL;
+       ValaStruct* _tmp35_ = NULL;
+       ValaDataType* _tmp36_ = NULL;
+       ValaDataType* _tmp37_ = NULL;
+       ValaCCodeIdentifier* _tmp38_ = NULL;
+       ValaCCodeIdentifier* _tmp39_ = NULL;
+       ValaGLibValue* _tmp40_ = NULL;
+       ValaGLibValue* _tmp41_ = NULL;
+       ValaCCodeFile* _tmp73_ = NULL;
+       ValaCCodeFunction* _tmp74_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (st != NULL);
        _tmp0_ = st;
@@ -1892,142 +2008,165 @@ static void vala_ccode_struct_module_add_struct_copy_function (ValaCCodeStructMo
        _g_free0 (_tmp2_);
        function = _tmp4_;
        _tmp5_ = st;
-       _tmp6_ = vala_symbol_get_access ((ValaSymbol*) _tmp5_);
-       _tmp7_ = _tmp6_;
-       if (_tmp7_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-               ValaCCodeFunction* _tmp8_ = NULL;
-               _tmp8_ = function;
-               vala_ccode_function_set_modifiers (_tmp8_, VALA_CCODE_MODIFIERS_STATIC);
+       _tmp6_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp5_);
+       if (_tmp6_) {
+               ValaCCodeFunction* _tmp7_ = NULL;
+               _tmp7_ = function;
+               vala_ccode_function_set_modifiers (_tmp7_, VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp8_ = FALSE;
+               ValaCodeContext* _tmp9_ = NULL;
+               ValaCodeContext* _tmp10_ = NULL;
+               gboolean _tmp11_ = FALSE;
+               gboolean _tmp12_ = FALSE;
+               _tmp9_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp10_ = _tmp9_;
+               _tmp11_ = vala_code_context_get_hide_internal (_tmp10_);
+               _tmp12_ = _tmp11_;
+               if (_tmp12_) {
+                       ValaStruct* _tmp13_ = NULL;
+                       gboolean _tmp14_ = FALSE;
+                       _tmp13_ = st;
+                       _tmp14_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp13_);
+                       _tmp8_ = _tmp14_;
+               } else {
+                       _tmp8_ = FALSE;
+               }
+               if (_tmp8_) {
+                       ValaCCodeFunction* _tmp15_ = NULL;
+                       _tmp15_ = function;
+                       vala_ccode_function_set_modifiers (_tmp15_, VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp9_ = function;
-       _tmp10_ = st;
-       _tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_);
-       _tmp12_ = _tmp11_;
-       _tmp13_ = g_strconcat ("const ", _tmp12_, NULL);
-       _tmp14_ = _tmp13_;
-       _tmp15_ = g_strconcat (_tmp14_, "*", NULL);
-       _tmp16_ = _tmp15_;
-       _tmp17_ = vala_ccode_parameter_new ("self", _tmp16_);
-       _tmp18_ = _tmp17_;
-       vala_ccode_function_add_parameter (_tmp9_, _tmp18_);
-       _vala_ccode_node_unref0 (_tmp18_);
-       _g_free0 (_tmp16_);
-       _g_free0 (_tmp14_);
-       _g_free0 (_tmp12_);
-       _tmp19_ = function;
-       _tmp20_ = st;
-       _tmp21_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp20_);
-       _tmp22_ = _tmp21_;
-       _tmp23_ = g_strconcat (_tmp22_, "*", NULL);
-       _tmp24_ = _tmp23_;
-       _tmp25_ = vala_ccode_parameter_new ("dest", _tmp24_);
-       _tmp26_ = _tmp25_;
-       vala_ccode_function_add_parameter (_tmp19_, _tmp26_);
-       _vala_ccode_node_unref0 (_tmp26_);
-       _g_free0 (_tmp24_);
-       _g_free0 (_tmp22_);
-       _tmp27_ = function;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp27_);
-       _tmp28_ = st;
-       _tmp29_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp28_);
-       _tmp30_ = _tmp29_;
-       _tmp31_ = vala_ccode_identifier_new ("(*dest)");
-       _tmp32_ = _tmp31_;
-       _tmp33_ = vala_glib_value_new (_tmp30_, (ValaCCodeExpression*) _tmp32_, TRUE);
-       _tmp34_ = _tmp33_;
-       _vala_ccode_node_unref0 (_tmp32_);
-       _vala_code_node_unref0 (_tmp30_);
-       dest_struct = _tmp34_;
+       _tmp16_ = function;
+       _tmp17_ = st;
+       _tmp18_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp17_);
+       _tmp19_ = _tmp18_;
+       _tmp20_ = g_strconcat ("const ", _tmp19_, NULL);
+       _tmp21_ = _tmp20_;
+       _tmp22_ = g_strconcat (_tmp21_, "*", NULL);
+       _tmp23_ = _tmp22_;
+       _tmp24_ = vala_ccode_parameter_new ("self", _tmp23_);
+       _tmp25_ = _tmp24_;
+       vala_ccode_function_add_parameter (_tmp16_, _tmp25_);
+       _vala_ccode_node_unref0 (_tmp25_);
+       _g_free0 (_tmp23_);
+       _g_free0 (_tmp21_);
+       _g_free0 (_tmp19_);
+       _tmp26_ = function;
+       _tmp27_ = st;
+       _tmp28_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp27_);
+       _tmp29_ = _tmp28_;
+       _tmp30_ = g_strconcat (_tmp29_, "*", NULL);
+       _tmp31_ = _tmp30_;
+       _tmp32_ = vala_ccode_parameter_new ("dest", _tmp31_);
+       _tmp33_ = _tmp32_;
+       vala_ccode_function_add_parameter (_tmp26_, _tmp33_);
+       _vala_ccode_node_unref0 (_tmp33_);
+       _g_free0 (_tmp31_);
+       _g_free0 (_tmp29_);
+       _tmp34_ = function;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp34_);
+       _tmp35_ = st;
+       _tmp36_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp35_);
+       _tmp37_ = _tmp36_;
+       _tmp38_ = vala_ccode_identifier_new ("(*dest)");
+       _tmp39_ = _tmp38_;
+       _tmp40_ = vala_glib_value_new (_tmp37_, (ValaCCodeExpression*) _tmp39_, TRUE);
+       _tmp41_ = _tmp40_;
+       _vala_ccode_node_unref0 (_tmp39_);
+       _vala_code_node_unref0 (_tmp37_);
+       dest_struct = _tmp41_;
        {
                ValaList* _f_list = NULL;
-               ValaStruct* _tmp35_ = NULL;
-               ValaList* _tmp36_ = NULL;
+               ValaStruct* _tmp42_ = NULL;
+               ValaList* _tmp43_ = NULL;
                gint _f_size = 0;
-               ValaList* _tmp37_ = NULL;
-               gint _tmp38_ = 0;
-               gint _tmp39_ = 0;
+               ValaList* _tmp44_ = NULL;
+               gint _tmp45_ = 0;
+               gint _tmp46_ = 0;
                gint _f_index = 0;
-               _tmp35_ = st;
-               _tmp36_ = vala_struct_get_fields (_tmp35_);
-               _f_list = _tmp36_;
-               _tmp37_ = _f_list;
-               _tmp38_ = vala_collection_get_size ((ValaCollection*) _tmp37_);
-               _tmp39_ = _tmp38_;
-               _f_size = _tmp39_;
+               _tmp42_ = st;
+               _tmp43_ = vala_struct_get_fields (_tmp42_);
+               _f_list = _tmp43_;
+               _tmp44_ = _f_list;
+               _tmp45_ = vala_collection_get_size ((ValaCollection*) _tmp44_);
+               _tmp46_ = _tmp45_;
+               _f_size = _tmp46_;
                _f_index = -1;
                while (TRUE) {
-                       gint _tmp40_ = 0;
-                       gint _tmp41_ = 0;
-                       gint _tmp42_ = 0;
+                       gint _tmp47_ = 0;
+                       gint _tmp48_ = 0;
+                       gint _tmp49_ = 0;
                        ValaField* f = NULL;
-                       ValaList* _tmp43_ = NULL;
-                       gint _tmp44_ = 0;
-                       gpointer _tmp45_ = NULL;
-                       ValaField* _tmp46_ = NULL;
-                       ValaMemberBinding _tmp47_ = 0;
-                       ValaMemberBinding _tmp48_ = 0;
-                       _tmp40_ = _f_index;
-                       _f_index = _tmp40_ + 1;
-                       _tmp41_ = _f_index;
-                       _tmp42_ = _f_size;
-                       if (!(_tmp41_ < _tmp42_)) {
+                       ValaList* _tmp50_ = NULL;
+                       gint _tmp51_ = 0;
+                       gpointer _tmp52_ = NULL;
+                       ValaField* _tmp53_ = NULL;
+                       ValaMemberBinding _tmp54_ = 0;
+                       ValaMemberBinding _tmp55_ = 0;
+                       _tmp47_ = _f_index;
+                       _f_index = _tmp47_ + 1;
+                       _tmp48_ = _f_index;
+                       _tmp49_ = _f_size;
+                       if (!(_tmp48_ < _tmp49_)) {
                                break;
                        }
-                       _tmp43_ = _f_list;
-                       _tmp44_ = _f_index;
-                       _tmp45_ = vala_list_get (_tmp43_, _tmp44_);
-                       f = (ValaField*) _tmp45_;
-                       _tmp46_ = f;
-                       _tmp47_ = vala_field_get_binding (_tmp46_);
-                       _tmp48_ = _tmp47_;
-                       if (_tmp48_ == VALA_MEMBER_BINDING_INSTANCE) {
+                       _tmp50_ = _f_list;
+                       _tmp51_ = _f_index;
+                       _tmp52_ = vala_list_get (_tmp50_, _tmp51_);
+                       f = (ValaField*) _tmp52_;
+                       _tmp53_ = f;
+                       _tmp54_ = vala_field_get_binding (_tmp53_);
+                       _tmp55_ = _tmp54_;
+                       if (_tmp55_ == VALA_MEMBER_BINDING_INSTANCE) {
                                ValaTargetValue* value = NULL;
-                               ValaField* _tmp49_ = NULL;
-                               ValaStruct* _tmp50_ = NULL;
-                               ValaTargetValue* _tmp51_ = NULL;
-                               ValaTargetValue* _tmp52_ = NULL;
-                               ValaTargetValue* _tmp53_ = NULL;
-                               ValaTargetValue* _tmp54_ = NULL;
-                               ValaField* _tmp55_ = NULL;
-                               ValaDataType* _tmp56_ = NULL;
-                               ValaDataType* _tmp57_ = NULL;
-                               gboolean _tmp58_ = FALSE;
-                               ValaField* _tmp63_ = NULL;
-                               ValaGLibValue* _tmp64_ = NULL;
-                               ValaTargetValue* _tmp65_ = NULL;
-                               _tmp49_ = f;
-                               _tmp50_ = st;
-                               _tmp51_ = vala_ccode_base_module_load_this_parameter ((ValaCCodeBaseModule*) self, G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
-                               _tmp52_ = _tmp51_;
-                               _tmp53_ = vala_code_generator_load_field ((ValaCodeGenerator*) self, _tmp49_, _tmp52_);
-                               _tmp54_ = _tmp53_;
-                               _vala_target_value_unref0 (_tmp52_);
-                               value = _tmp54_;
-                               _tmp55_ = f;
-                               _tmp56_ = vala_variable_get_variable_type ((ValaVariable*) _tmp55_);
-                               _tmp57_ = _tmp56_;
-                               _tmp58_ = vala_ccode_base_module_requires_copy ((ValaCCodeBaseModule*) self, _tmp57_);
-                               if (_tmp58_) {
-                                       ValaTargetValue* _tmp59_ = NULL;
-                                       ValaField* _tmp60_ = NULL;
-                                       ValaTargetValue* _tmp61_ = NULL;
-                                       ValaTargetValue* _tmp62_ = NULL;
-                                       _tmp59_ = value;
-                                       _tmp60_ = f;
-                                       _tmp61_ = vala_ccode_base_module_copy_value ((ValaCCodeBaseModule*) self, _tmp59_, (ValaCodeNode*) _tmp60_);
+                               ValaField* _tmp56_ = NULL;
+                               ValaStruct* _tmp57_ = NULL;
+                               ValaTargetValue* _tmp58_ = NULL;
+                               ValaTargetValue* _tmp59_ = NULL;
+                               ValaTargetValue* _tmp60_ = NULL;
+                               ValaTargetValue* _tmp61_ = NULL;
+                               ValaField* _tmp62_ = NULL;
+                               ValaDataType* _tmp63_ = NULL;
+                               ValaDataType* _tmp64_ = NULL;
+                               gboolean _tmp65_ = FALSE;
+                               ValaField* _tmp70_ = NULL;
+                               ValaGLibValue* _tmp71_ = NULL;
+                               ValaTargetValue* _tmp72_ = NULL;
+                               _tmp56_ = f;
+                               _tmp57_ = st;
+                               _tmp58_ = vala_ccode_base_module_load_this_parameter ((ValaCCodeBaseModule*) self, G_TYPE_CHECK_INSTANCE_CAST (_tmp57_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+                               _tmp59_ = _tmp58_;
+                               _tmp60_ = vala_code_generator_load_field ((ValaCodeGenerator*) self, _tmp56_, _tmp59_);
+                               _tmp61_ = _tmp60_;
+                               _vala_target_value_unref0 (_tmp59_);
+                               value = _tmp61_;
+                               _tmp62_ = f;
+                               _tmp63_ = vala_variable_get_variable_type ((ValaVariable*) _tmp62_);
+                               _tmp64_ = _tmp63_;
+                               _tmp65_ = vala_ccode_base_module_requires_copy ((ValaCCodeBaseModule*) self, _tmp64_);
+                               if (_tmp65_) {
+                                       ValaTargetValue* _tmp66_ = NULL;
+                                       ValaField* _tmp67_ = NULL;
+                                       ValaTargetValue* _tmp68_ = NULL;
+                                       ValaTargetValue* _tmp69_ = NULL;
+                                       _tmp66_ = value;
+                                       _tmp67_ = f;
+                                       _tmp68_ = vala_ccode_base_module_copy_value ((ValaCCodeBaseModule*) self, _tmp66_, (ValaCodeNode*) _tmp67_);
                                        _vala_target_value_unref0 (value);
-                                       value = _tmp61_;
-                                       _tmp62_ = value;
-                                       if (_tmp62_ == NULL) {
+                                       value = _tmp68_;
+                                       _tmp69_ = value;
+                                       if (_tmp69_ == NULL) {
                                                _vala_target_value_unref0 (value);
                                                _vala_code_node_unref0 (f);
                                                continue;
                                        }
                                }
-                               _tmp63_ = f;
-                               _tmp64_ = dest_struct;
-                               _tmp65_ = value;
-                               vala_code_generator_store_field ((ValaCodeGenerator*) self, _tmp63_, (ValaTargetValue*) _tmp64_, _tmp65_);
+                               _tmp70_ = f;
+                               _tmp71_ = dest_struct;
+                               _tmp72_ = value;
+                               vala_code_generator_store_field ((ValaCodeGenerator*) self, _tmp70_, (ValaTargetValue*) _tmp71_, _tmp72_);
                                _vala_target_value_unref0 (value);
                        }
                        _vala_code_node_unref0 (f);
@@ -2035,9 +2174,9 @@ static void vala_ccode_struct_module_add_struct_copy_function (ValaCCodeStructMo
                _vala_iterable_unref0 (_f_list);
        }
        vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-       _tmp66_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp67_ = function;
-       vala_ccode_file_add_function (_tmp66_, _tmp67_);
+       _tmp73_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp74_ = function;
+       vala_ccode_file_add_function (_tmp73_, _tmp74_);
        _vala_target_value_unref0 (dest_struct);
        _vala_ccode_node_unref0 (function);
 }
@@ -2052,17 +2191,16 @@ static void vala_ccode_struct_module_begin_struct_destroy_function (ValaCCodeStr
        ValaCCodeFunction* _tmp4_ = NULL;
        ValaCCodeFunction* _tmp5_ = NULL;
        ValaStruct* _tmp6_ = NULL;
-       ValaSymbolAccessibility _tmp7_ = 0;
-       ValaSymbolAccessibility _tmp8_ = 0;
-       ValaCCodeFunction* _tmp10_ = NULL;
-       ValaStruct* _tmp11_ = NULL;
-       gchar* _tmp12_ = NULL;
-       gchar* _tmp13_ = NULL;
-       gchar* _tmp14_ = NULL;
-       gchar* _tmp15_ = NULL;
-       ValaCCodeParameter* _tmp16_ = NULL;
-       ValaCCodeParameter* _tmp17_ = NULL;
-       ValaCCodeFunction* _tmp18_ = NULL;
+       gboolean _tmp7_ = FALSE;
+       ValaCCodeFunction* _tmp17_ = NULL;
+       ValaStruct* _tmp18_ = NULL;
+       gchar* _tmp19_ = NULL;
+       gchar* _tmp20_ = NULL;
+       gchar* _tmp21_ = NULL;
+       gchar* _tmp22_ = NULL;
+       ValaCCodeParameter* _tmp23_ = NULL;
+       ValaCCodeParameter* _tmp24_ = NULL;
+       ValaCCodeFunction* _tmp25_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (st != NULL);
        _tmp0_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
@@ -2075,27 +2213,50 @@ static void vala_ccode_struct_module_begin_struct_destroy_function (ValaCCodeStr
        _g_free0 (_tmp3_);
        function = _tmp5_;
        _tmp6_ = st;
-       _tmp7_ = vala_symbol_get_access ((ValaSymbol*) _tmp6_);
-       _tmp8_ = _tmp7_;
-       if (_tmp8_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-               ValaCCodeFunction* _tmp9_ = NULL;
-               _tmp9_ = function;
-               vala_ccode_function_set_modifiers (_tmp9_, VALA_CCODE_MODIFIERS_STATIC);
+       _tmp7_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp6_);
+       if (_tmp7_) {
+               ValaCCodeFunction* _tmp8_ = NULL;
+               _tmp8_ = function;
+               vala_ccode_function_set_modifiers (_tmp8_, VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp9_ = FALSE;
+               ValaCodeContext* _tmp10_ = NULL;
+               ValaCodeContext* _tmp11_ = NULL;
+               gboolean _tmp12_ = FALSE;
+               gboolean _tmp13_ = FALSE;
+               _tmp10_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp11_ = _tmp10_;
+               _tmp12_ = vala_code_context_get_hide_internal (_tmp11_);
+               _tmp13_ = _tmp12_;
+               if (_tmp13_) {
+                       ValaStruct* _tmp14_ = NULL;
+                       gboolean _tmp15_ = FALSE;
+                       _tmp14_ = st;
+                       _tmp15_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp14_);
+                       _tmp9_ = _tmp15_;
+               } else {
+                       _tmp9_ = FALSE;
+               }
+               if (_tmp9_) {
+                       ValaCCodeFunction* _tmp16_ = NULL;
+                       _tmp16_ = function;
+                       vala_ccode_function_set_modifiers (_tmp16_, VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp10_ = function;
-       _tmp11_ = st;
-       _tmp12_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp11_);
-       _tmp13_ = _tmp12_;
-       _tmp14_ = g_strconcat (_tmp13_, "*", NULL);
-       _tmp15_ = _tmp14_;
-       _tmp16_ = vala_ccode_parameter_new ("self", _tmp15_);
-       _tmp17_ = _tmp16_;
-       vala_ccode_function_add_parameter (_tmp10_, _tmp17_);
-       _vala_ccode_node_unref0 (_tmp17_);
-       _g_free0 (_tmp15_);
-       _g_free0 (_tmp13_);
-       _tmp18_ = function;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp18_);
+       _tmp17_ = function;
+       _tmp18_ = st;
+       _tmp19_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp18_);
+       _tmp20_ = _tmp19_;
+       _tmp21_ = g_strconcat (_tmp20_, "*", NULL);
+       _tmp22_ = _tmp21_;
+       _tmp23_ = vala_ccode_parameter_new ("self", _tmp22_);
+       _tmp24_ = _tmp23_;
+       vala_ccode_function_add_parameter (_tmp17_, _tmp24_);
+       _vala_ccode_node_unref0 (_tmp24_);
+       _g_free0 (_tmp22_);
+       _g_free0 (_tmp20_);
+       _tmp25_ = function;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp25_);
        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
        _vala_ccode_node_unref0 (function);
 }
@@ -2123,8 +2284,8 @@ ValaCCodeStructModule* vala_ccode_struct_module_construct (GType object_type) {
 
 static void vala_ccode_struct_module_class_init (ValaCCodeStructModuleClass * klass) {
        vala_ccode_struct_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_struct_declaration = vala_ccode_struct_module_real_generate_struct_declaration;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_struct = vala_ccode_struct_module_real_visit_struct;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_struct_declaration = vala_ccode_struct_module_real_generate_struct_declaration;
+       ((ValaCodeVisitorClass *) klass)->visit_struct = vala_ccode_struct_module_real_visit_struct;
 }
 
 
index 51cef5d..fe2a7c2 100644 (file)
@@ -75,7 +75,12 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule {
                        if (f.binding == MemberBinding.INSTANCE)  {
                                generate_type_declaration (f.variable_type, decl_space);
 
-                               instance_struct.add_field (field_ctype, get_ccode_name (f) + get_ccode_declarator_suffix (f.variable_type), f.deprecated ? " G_GNUC_DEPRECATED" : null);
+                               var suffix = get_ccode_declarator_suffix (f.variable_type);
+                               if (suffix != null) {
+                                       suffix.deprecated = f.deprecated;
+                               }
+
+                               instance_struct.add_field (field_ctype, get_ccode_name (f), suffix);
                                if (f.variable_type is ArrayType && get_ccode_array_length (f)) {
                                        // create fields to store array dimensions
                                        var array_type = (ArrayType) f.variable_type;
@@ -121,6 +126,8 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule {
                var function = new CCodeFunction (get_ccode_dup_function (st), get_ccode_name (st) + "*");
                if (st.is_private_symbol ()) {
                        function.modifiers = CCodeModifiers.STATIC;
+               } else if (context.hide_internal && st.is_internal_symbol ()) {
+                       function.modifiers = CCodeModifiers.INTERNAL;
                }
                function.add_parameter (new CCodeParameter ("self", "const " + get_ccode_name (st) + "*"));
                decl_space.add_function_declaration (function);
@@ -128,6 +135,8 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule {
                function = new CCodeFunction (get_ccode_free_function (st), "void");
                if (st.is_private_symbol ()) {
                        function.modifiers = CCodeModifiers.STATIC;
+               } else if (context.hide_internal && st.is_internal_symbol ()) {
+                       function.modifiers = CCodeModifiers.INTERNAL;
                }
                function.add_parameter (new CCodeParameter ("self", get_ccode_name (st) + "*"));
                decl_space.add_function_declaration (function);
@@ -136,6 +145,8 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule {
                        function = new CCodeFunction (get_ccode_copy_function (st), "void");
                        if (st.is_private_symbol ()) {
                                function.modifiers = CCodeModifiers.STATIC;
+                       } else if (context.hide_internal && st.is_internal_symbol ()) {
+                               function.modifiers = CCodeModifiers.INTERNAL;
                        }
                        function.add_parameter (new CCodeParameter ("self", "const " + get_ccode_name (st) + "*"));
                        function.add_parameter (new CCodeParameter ("dest", get_ccode_name (st) + "*"));
@@ -144,6 +155,8 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule {
                        function = new CCodeFunction (get_ccode_destroy_function (st), "void");
                        if (st.is_private_symbol ()) {
                                function.modifiers = CCodeModifiers.STATIC;
+                       } else if (context.hide_internal && st.is_internal_symbol ()) {
+                               function.modifiers = CCodeModifiers.INTERNAL;
                        }
                        function.add_parameter (new CCodeParameter ("self", get_ccode_name (st) + "*"));
                        decl_space.add_function_declaration (function);
@@ -234,8 +247,10 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule {
 
        void add_struct_free_function (Struct st) {
                var function = new CCodeFunction (get_ccode_free_function (st), "void");
-               if (st.access == SymbolAccessibility.PRIVATE) {
+               if (st.is_private_symbol ()) {
                        function.modifiers = CCodeModifiers.STATIC;
+               } else if (context.hide_internal && st.is_internal_symbol ()) {
+                       function.modifiers = CCodeModifiers.INTERNAL;
                }
 
                function.add_parameter (new CCodeParameter ("self", get_ccode_name (st) + "*"));
@@ -259,8 +274,10 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule {
 
        void add_struct_copy_function (Struct st) {
                var function = new CCodeFunction (get_ccode_copy_function (st), "void");
-               if (st.access == SymbolAccessibility.PRIVATE) {
+               if (st.is_private_symbol ()) {
                        function.modifiers = CCodeModifiers.STATIC;
+               } else if (context.hide_internal && st.is_internal_symbol ()) {
+                       function.modifiers = CCodeModifiers.INTERNAL;
                }
 
                function.add_parameter (new CCodeParameter ("self", "const " + get_ccode_name (st) + "*"));
@@ -292,8 +309,10 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule {
                push_context (instance_finalize_context);
 
                var function = new CCodeFunction (get_ccode_destroy_function (st), "void");
-               if (st.access == SymbolAccessibility.PRIVATE) {
+               if (st.is_private_symbol ()) {
                        function.modifiers = CCodeModifiers.STATIC;
+               } else if (context.hide_internal && st.is_internal_symbol ()) {
+                       function.modifiers = CCodeModifiers.INTERNAL;
                }
 
                function.add_parameter (new CCodeParameter ("self", get_ccode_name (st) + "*"));
index b0d572b..48eaa1a 100644 (file)
@@ -136,7 +136,6 @@ ValaClass* vala_class_register_function_get_class_reference (ValaClassRegisterFu
 static gchar* vala_class_register_function_real_get_type_struct_name (ValaTypeRegisterFunction* base);
 gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node);
 static gchar* vala_class_register_function_real_get_base_init_func_name (ValaTypeRegisterFunction* base);
-ValaCodeContext* vala_typeregister_function_get_context (ValaTypeRegisterFunction* self);
 gchar* vala_ccode_base_module_get_ccode_lower_case_name (ValaCodeNode* node, const gchar* infix);
 static gchar* vala_class_register_function_real_get_class_finalize_func_name (ValaTypeRegisterFunction* base);
 static gchar* vala_class_register_function_real_get_base_finalize_func_name (ValaTypeRegisterFunction* base);
@@ -155,6 +154,7 @@ static gchar* vala_class_register_function_real_get_gtype_value_table_collect_va
 static gchar* vala_class_register_function_real_get_gtype_value_table_lcopy_value_function_name (ValaTypeRegisterFunction* base);
 static ValaCCodeFragment* vala_class_register_function_real_get_type_interface_init_declaration (ValaTypeRegisterFunction* base);
 static void vala_class_register_function_real_get_type_interface_init_statements (ValaTypeRegisterFunction* base, ValaCCodeBlock* block, gboolean plugin);
+ValaCodeContext* vala_typeregister_function_get_context (ValaTypeRegisterFunction* self);
 GType vala_ccode_base_module_get_type (void) G_GNUC_CONST;
 void vala_ccode_base_module_register_dbus_info (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable);
 static void vala_class_register_function_finalize (ValaTypeRegisterFunction* obj);
@@ -227,55 +227,31 @@ static gchar* vala_class_register_function_real_get_type_struct_name (ValaTypeRe
 static gchar* vala_class_register_function_real_get_base_init_func_name (ValaTypeRegisterFunction* base) {
        ValaClassRegisterFunction * self;
        gchar* result = NULL;
-       gboolean _tmp0_ = FALSE;
-       ValaClass* _tmp1_ = NULL;
+       ValaClass* _tmp0_ = NULL;
+       ValaConstructor* _tmp1_ = NULL;
        ValaConstructor* _tmp2_ = NULL;
-       ValaConstructor* _tmp3_ = NULL;
        self = (ValaClassRegisterFunction*) base;
-       _tmp1_ = self->priv->_class_reference;
-       _tmp2_ = vala_class_get_class_constructor (_tmp1_);
-       _tmp3_ = _tmp2_;
-       if (_tmp3_ != NULL) {
-               _tmp0_ = TRUE;
-       } else {
-               gboolean _tmp4_ = FALSE;
-               ValaCodeContext* _tmp5_ = NULL;
-               ValaCodeContext* _tmp6_ = NULL;
-               gboolean _tmp7_ = FALSE;
-               _tmp5_ = vala_typeregister_function_get_context ((ValaTypeRegisterFunction*) self);
-               _tmp6_ = _tmp5_;
-               _tmp7_ = vala_code_context_require_glib_version (_tmp6_, 2, 24);
-               if (!_tmp7_) {
-                       ValaClass* _tmp8_ = NULL;
-                       gboolean _tmp9_ = FALSE;
-                       gboolean _tmp10_ = FALSE;
-                       _tmp8_ = self->priv->_class_reference;
-                       _tmp9_ = vala_class_get_has_class_private_fields (_tmp8_);
-                       _tmp10_ = _tmp9_;
-                       _tmp4_ = _tmp10_;
-               } else {
-                       _tmp4_ = FALSE;
-               }
-               _tmp0_ = _tmp4_;
-       }
-       if (_tmp0_) {
-               ValaClass* _tmp11_ = NULL;
-               gchar* _tmp12_ = NULL;
-               gchar* _tmp13_ = NULL;
-               gchar* _tmp14_ = NULL;
-               gchar* _tmp15_ = NULL;
-               _tmp11_ = self->priv->_class_reference;
-               _tmp12_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp11_, NULL);
-               _tmp13_ = _tmp12_;
-               _tmp14_ = g_strdup_printf ("%s_base_init", _tmp13_);
-               _tmp15_ = _tmp14_;
-               _g_free0 (_tmp13_);
-               result = _tmp15_;
+       _tmp0_ = self->priv->_class_reference;
+       _tmp1_ = vala_class_get_class_constructor (_tmp0_);
+       _tmp2_ = _tmp1_;
+       if (_tmp2_ != NULL) {
+               ValaClass* _tmp3_ = NULL;
+               gchar* _tmp4_ = NULL;
+               gchar* _tmp5_ = NULL;
+               gchar* _tmp6_ = NULL;
+               gchar* _tmp7_ = NULL;
+               _tmp3_ = self->priv->_class_reference;
+               _tmp4_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp3_, NULL);
+               _tmp5_ = _tmp4_;
+               _tmp6_ = g_strdup_printf ("%s_base_init", _tmp5_);
+               _tmp7_ = _tmp6_;
+               _g_free0 (_tmp5_);
+               result = _tmp7_;
                return result;
        } else {
-               gchar* _tmp16_ = NULL;
-               _tmp16_ = g_strdup ("NULL");
-               result = _tmp16_;
+               gchar* _tmp8_ = NULL;
+               _tmp8_ = g_strdup ("NULL");
+               result = _tmp8_;
                return result;
        }
 }
@@ -317,55 +293,31 @@ static gchar* vala_class_register_function_real_get_class_finalize_func_name (Va
 static gchar* vala_class_register_function_real_get_base_finalize_func_name (ValaTypeRegisterFunction* base) {
        ValaClassRegisterFunction * self;
        gchar* result = NULL;
-       gboolean _tmp0_ = FALSE;
-       ValaClass* _tmp1_ = NULL;
+       ValaClass* _tmp0_ = NULL;
+       ValaDestructor* _tmp1_ = NULL;
        ValaDestructor* _tmp2_ = NULL;
-       ValaDestructor* _tmp3_ = NULL;
        self = (ValaClassRegisterFunction*) base;
-       _tmp1_ = self->priv->_class_reference;
-       _tmp2_ = vala_class_get_class_destructor (_tmp1_);
-       _tmp3_ = _tmp2_;
-       if (_tmp3_ != NULL) {
-               _tmp0_ = TRUE;
-       } else {
-               gboolean _tmp4_ = FALSE;
-               ValaCodeContext* _tmp5_ = NULL;
-               ValaCodeContext* _tmp6_ = NULL;
-               gboolean _tmp7_ = FALSE;
-               _tmp5_ = vala_typeregister_function_get_context ((ValaTypeRegisterFunction*) self);
-               _tmp6_ = _tmp5_;
-               _tmp7_ = vala_code_context_require_glib_version (_tmp6_, 2, 24);
-               if (!_tmp7_) {
-                       ValaClass* _tmp8_ = NULL;
-                       gboolean _tmp9_ = FALSE;
-                       gboolean _tmp10_ = FALSE;
-                       _tmp8_ = self->priv->_class_reference;
-                       _tmp9_ = vala_class_get_has_class_private_fields (_tmp8_);
-                       _tmp10_ = _tmp9_;
-                       _tmp4_ = _tmp10_;
-               } else {
-                       _tmp4_ = FALSE;
-               }
-               _tmp0_ = _tmp4_;
-       }
-       if (_tmp0_) {
-               ValaClass* _tmp11_ = NULL;
-               gchar* _tmp12_ = NULL;
-               gchar* _tmp13_ = NULL;
-               gchar* _tmp14_ = NULL;
-               gchar* _tmp15_ = NULL;
-               _tmp11_ = self->priv->_class_reference;
-               _tmp12_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp11_, NULL);
-               _tmp13_ = _tmp12_;
-               _tmp14_ = g_strdup_printf ("%s_base_finalize", _tmp13_);
-               _tmp15_ = _tmp14_;
-               _g_free0 (_tmp13_);
-               result = _tmp15_;
+       _tmp0_ = self->priv->_class_reference;
+       _tmp1_ = vala_class_get_class_destructor (_tmp0_);
+       _tmp2_ = _tmp1_;
+       if (_tmp2_ != NULL) {
+               ValaClass* _tmp3_ = NULL;
+               gchar* _tmp4_ = NULL;
+               gchar* _tmp5_ = NULL;
+               gchar* _tmp6_ = NULL;
+               gchar* _tmp7_ = NULL;
+               _tmp3_ = self->priv->_class_reference;
+               _tmp4_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp3_, NULL);
+               _tmp5_ = _tmp4_;
+               _tmp6_ = g_strdup_printf ("%s_base_finalize", _tmp5_);
+               _tmp7_ = _tmp6_;
+               _g_free0 (_tmp5_);
+               result = _tmp7_;
                return result;
        } else {
-               gchar* _tmp16_ = NULL;
-               _tmp16_ = g_strdup ("NULL");
-               result = _tmp16_;
+               gchar* _tmp8_ = NULL;
+               _tmp8_ = g_strdup ("NULL");
+               result = _tmp8_;
                return result;
        }
 }
@@ -1171,27 +1123,27 @@ void vala_class_register_function_set_class_reference (ValaClassRegisterFunction
 
 static void vala_class_register_function_class_init (ValaClassRegisterFunctionClass * klass) {
        vala_class_register_function_parent_class = g_type_class_peek_parent (klass);
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->finalize = vala_class_register_function_finalize;
+       ((ValaTypeRegisterFunctionClass *) klass)->finalize = vala_class_register_function_finalize;
        g_type_class_add_private (klass, sizeof (ValaClassRegisterFunctionPrivate));
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_declaration = vala_class_register_function_real_get_type_declaration;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_struct_name = vala_class_register_function_real_get_type_struct_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_base_init_func_name = vala_class_register_function_real_get_base_init_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_class_finalize_func_name = vala_class_register_function_real_get_class_finalize_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_base_finalize_func_name = vala_class_register_function_real_get_base_finalize_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_class_init_func_name = vala_class_register_function_real_get_class_init_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_instance_struct_size = vala_class_register_function_real_get_instance_struct_size;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_instance_init_func_name = vala_class_register_function_real_get_instance_init_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_parent_type_name = vala_class_register_function_real_get_parent_type_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_flags = vala_class_register_function_real_get_type_flags;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_accessibility = vala_class_register_function_real_get_accessibility;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_gtype_value_table_init_function_name = vala_class_register_function_real_get_gtype_value_table_init_function_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_gtype_value_table_free_function_name = vala_class_register_function_real_get_gtype_value_table_free_function_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_gtype_value_table_copy_function_name = vala_class_register_function_real_get_gtype_value_table_copy_function_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_gtype_value_table_peek_pointer_function_name = vala_class_register_function_real_get_gtype_value_table_peek_pointer_function_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_gtype_value_table_collect_value_function_name = vala_class_register_function_real_get_gtype_value_table_collect_value_function_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_gtype_value_table_lcopy_value_function_name = vala_class_register_function_real_get_gtype_value_table_lcopy_value_function_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_interface_init_declaration = vala_class_register_function_real_get_type_interface_init_declaration;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_interface_init_statements = vala_class_register_function_real_get_type_interface_init_statements;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_declaration = vala_class_register_function_real_get_type_declaration;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_struct_name = vala_class_register_function_real_get_type_struct_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_base_init_func_name = vala_class_register_function_real_get_base_init_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_class_finalize_func_name = vala_class_register_function_real_get_class_finalize_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_base_finalize_func_name = vala_class_register_function_real_get_base_finalize_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_class_init_func_name = vala_class_register_function_real_get_class_init_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_instance_struct_size = vala_class_register_function_real_get_instance_struct_size;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_instance_init_func_name = vala_class_register_function_real_get_instance_init_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_parent_type_name = vala_class_register_function_real_get_parent_type_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_flags = vala_class_register_function_real_get_type_flags;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_accessibility = vala_class_register_function_real_get_accessibility;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_gtype_value_table_init_function_name = vala_class_register_function_real_get_gtype_value_table_init_function_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_gtype_value_table_free_function_name = vala_class_register_function_real_get_gtype_value_table_free_function_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_gtype_value_table_copy_function_name = vala_class_register_function_real_get_gtype_value_table_copy_function_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_gtype_value_table_peek_pointer_function_name = vala_class_register_function_real_get_gtype_value_table_peek_pointer_function_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_gtype_value_table_collect_value_function_name = vala_class_register_function_real_get_gtype_value_table_collect_value_function_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_gtype_value_table_lcopy_value_function_name = vala_class_register_function_real_get_gtype_value_table_lcopy_value_function_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_interface_init_declaration = vala_class_register_function_real_get_type_interface_init_declaration;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_interface_init_statements = vala_class_register_function_real_get_type_interface_init_statements;
 }
 
 
index cc9b95e..01aa54c 100644 (file)
@@ -51,7 +51,7 @@ public class Vala.ClassRegisterFunction : TypeRegisterFunction {
        }
 
        public override string get_base_init_func_name () {
-               if (class_reference.class_constructor != null || (!context.require_glib_version (2, 24) && class_reference.has_class_private_fields)) {
+               if (class_reference.class_constructor != null) {
                        return "%s_base_init".printf (CCodeBaseModule.get_ccode_lower_case_name (class_reference, null));
                } else {
                        return "NULL";
@@ -67,7 +67,7 @@ public class Vala.ClassRegisterFunction : TypeRegisterFunction {
        }
 
        public override string get_base_finalize_func_name () {
-               if (class_reference.class_destructor != null || (!context.require_glib_version (2, 24) && class_reference.has_class_private_fields)) {
+               if (class_reference.class_destructor != null) {
                        return "%s_base_finalize".printf (CCodeBaseModule.get_ccode_lower_case_name (class_reference, null));
                } else {
                        return "NULL";
index 1965469..ac2acfc 100644 (file)
@@ -987,6 +987,7 @@ gchar* vala_ccode_base_module_get_ccode_prefix (ValaSymbol* sym);
 gchar* vala_ccode_base_module_get_ccode_lower_case_prefix (ValaSymbol* sym);
 gchar* vala_ccode_base_module_get_ccode_lower_case_suffix (ValaSymbol* sym);
 gchar* vala_ccode_base_module_get_ccode_ref_function (ValaTypeSymbol* sym);
+gchar* vala_ccode_base_module_get_quark_name (ValaErrorDomain* edomain);
 gboolean vala_ccode_base_module_is_reference_counting (ValaTypeSymbol* sym);
 gboolean vala_ccode_base_module_get_ccode_ref_function_void (ValaClass* cl);
 gboolean vala_ccode_base_module_get_ccode_free_function_address_of (ValaClass* cl);
@@ -1036,7 +1037,7 @@ gchar* vala_ccode_base_module_get_ccode_sentinel (ValaMethod* m);
 gboolean vala_ccode_base_module_get_ccode_notify (ValaProperty* prop);
 gchar* vala_ccode_base_module_get_ccode_nick (ValaProperty* prop);
 gchar* vala_ccode_base_module_get_ccode_blurb (ValaProperty* prop);
-gchar* vala_ccode_base_module_get_ccode_declarator_suffix (ValaDataType* type);
+ValaCCodeDeclaratorSuffix* vala_ccode_base_module_get_ccode_declarator_suffix (ValaCCodeBaseModule* self, ValaDataType* type);
 ValaCCodeConstant* vala_ccode_base_module_get_signal_canonical_constant (ValaCCodeBaseModule* self, ValaSignal* sig, const gchar* detail);
 ValaCCodeConstant* vala_ccode_base_module_get_enum_value_canonical_cconstant (ValaEnumValue* ev);
 gboolean vala_ccode_base_module_get_signal_has_emitter (ValaCCodeBaseModule* self, ValaSignal* sig);
@@ -1123,7 +1124,7 @@ gpointer vala_value_get_ccode_compiler (const GValue* value);
 GType vala_ccode_compiler_get_type (void) G_GNUC_CONST;
 ValaCCodeCompiler* vala_ccode_compiler_new (void);
 ValaCCodeCompiler* vala_ccode_compiler_construct (GType object_type);
-void vala_ccode_compiler_compile (ValaCCodeCompiler* self, ValaCodeContext* context, const gchar* cc_command, gchar** cc_options, int cc_options_length1);
+void vala_ccode_compiler_compile (ValaCCodeCompiler* self, ValaCodeContext* context, const gchar* cc_command, gchar** cc_options, int cc_options_length1, const gchar* pkg_config_command);
 ValaCCodeControlFlowModule* vala_ccode_control_flow_module_construct (GType object_type);
 GType vala_ccode_delegate_module_get_type (void) G_GNUC_CONST;
 gchar* vala_ccode_delegate_module_generate_delegate_wrapper (ValaCCodeDelegateModule* self, ValaMethod* m, ValaDelegateType* dt, ValaCodeNode* node);
@@ -1177,15 +1178,16 @@ ValaGDBusClientModule* vala_gd_bus_client_module_new (void);
 ValaGDBusClientModule* vala_gd_bus_client_module_construct (GType object_type);
 gchar* vala_gd_bus_module_get_dbus_name (ValaTypeSymbol* symbol);
 gchar* vala_gd_bus_module_get_dbus_name_for_member (ValaSymbol* symbol);
+gboolean vala_gd_bus_module_is_dbus_visible (ValaCodeNode* node);
 gboolean vala_gd_bus_module_is_dbus_no_reply (ValaMethod* m);
+gchar* vala_gd_bus_module_dbus_result_name (ValaMethod* m);
 gboolean vala_gd_bus_module_dbus_method_uses_file_descriptor (ValaGDBusModule* self, ValaMethod* method);
 void vala_gd_bus_module_send_dbus_value (ValaGDBusModule* self, ValaDataType* type, ValaCCodeExpression* builder_expr, ValaCCodeExpression* expr, ValaSymbol* sym);
 void vala_gd_bus_module_receive_dbus_value (ValaGDBusModule* self, ValaDataType* type, ValaCCodeExpression* message_expr, ValaCCodeExpression* iter_expr, ValaCCodeExpression* target_expr, ValaSymbol* sym, ValaCCodeExpression* error_expr, gboolean* may_fail);
+ValaCCodeExpression* vala_gd_bus_module_get_interface_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym);
 ValaGDBusModule* vala_gd_bus_module_new (void);
 ValaGDBusModule* vala_gd_bus_module_construct (GType object_type);
 GType vala_gd_bus_server_module_get_type (void) G_GNUC_CONST;
-gboolean vala_gd_bus_server_module_is_dbus_visible (ValaCodeNode* node);
-gchar* vala_gd_bus_server_module_dbus_result_name (ValaMethod* m);
 ValaGDBusServerModule* vala_gd_bus_server_module_new (void);
 ValaGDBusServerModule* vala_gd_bus_server_module_construct (GType object_type);
 void vala_gerror_module_return_with_exception (ValaGErrorModule* self, ValaCCodeExpression* error_expr);
index e06eecd..4f49653 100644 (file)
@@ -123,9 +123,9 @@ void vala_ctype_set_ctype_name (ValaCType* self, const gchar* value) {
 
 static void vala_ctype_class_init (ValaCTypeClass * klass) {
        vala_ctype_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_ctype_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_ctype_finalize;
        g_type_class_add_private (klass, sizeof (ValaCTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_ctype_real_copy;
+       ((ValaDataTypeClass *) klass)->copy = vala_ctype_real_copy;
 }
 
 
index 68ca772..d4ab4b2 100644 (file)
@@ -202,10 +202,10 @@ void vala_enum_register_function_set_enum_reference (ValaEnumRegisterFunction* s
 
 static void vala_enum_register_function_class_init (ValaEnumRegisterFunctionClass * klass) {
        vala_enum_register_function_parent_class = g_type_class_peek_parent (klass);
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->finalize = vala_enum_register_function_finalize;
+       ((ValaTypeRegisterFunctionClass *) klass)->finalize = vala_enum_register_function_finalize;
        g_type_class_add_private (klass, sizeof (ValaEnumRegisterFunctionPrivate));
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_declaration = vala_enum_register_function_real_get_type_declaration;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_accessibility = vala_enum_register_function_real_get_accessibility;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_declaration = vala_enum_register_function_real_get_type_declaration;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_accessibility = vala_enum_register_function_real_get_accessibility;
 }
 
 
index ce1fa5e..ca6c109 100644 (file)
@@ -208,8 +208,8 @@ typedef struct _ValaGtkModulePrivate ValaGtkModulePrivate;
 typedef struct _ValaGAsyncModule ValaGAsyncModule;
 typedef struct _ValaGAsyncModuleClass ValaGAsyncModuleClass;
 typedef struct _ValaGAsyncModulePrivate ValaGAsyncModulePrivate;
-#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
 #define _g_free0(var) (var = (g_free (var), NULL))
+#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
 #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
 #define _vala_ccode_base_module_emit_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_base_module_emit_context_unref (var), NULL)))
@@ -523,8 +523,6 @@ GType vala_gasync_module_get_type (void) G_GNUC_CONST;
 enum  {
        VALA_GASYNC_MODULE_DUMMY_PROPERTY
 };
-static gboolean vala_gasync_module_needs_dummy_object (ValaGAsyncModule* self, ValaMethod* m);
-ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self);
 static ValaCCodeStruct* vala_gasync_module_generate_data_struct (ValaGAsyncModule* self, ValaMethod* m);
 gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node);
 gchar* vala_ccode_base_module_get_variable_cname (ValaCCodeBaseModule* self, const gchar* name);
@@ -549,6 +547,7 @@ void vala_ccode_base_module_pop_context (ValaCCodeBaseModule* self);
 static void vala_gasync_module_generate_async_function (ValaGAsyncModule* self, ValaMethod* m);
 gint vala_ccode_base_module_get_param_pos (ValaCCodeBaseModule* self, gdouble param_pos, gboolean ellipsis);
 void vala_ccode_base_module_generate_cparameters (ValaCCodeBaseModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaCCodeFunction* func, ValaCCodeFunctionDeclarator* vdeclarator, ValaMap* carg_map, ValaCCodeFunctionCall* vcall, gint direction);
+ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self);
 ValaCCodeExpression* vala_ccode_base_module_get_cvalue_ (ValaCCodeBaseModule* self, ValaTargetValue* value);
 ValaTargetValue* vala_ccode_base_module_transform_value (ValaCCodeBaseModule* self, ValaTargetValue* value, ValaDataType* target_type, ValaCodeNode* node);
 ValaGLibValue* vala_glib_value_new (ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue);
@@ -609,72 +608,6 @@ static gpointer _vala_code_node_ref0 (gpointer self) {
 }
 
 
-static gboolean vala_gasync_module_needs_dummy_object (ValaGAsyncModule* self, ValaMethod* m) {
-       gboolean result = FALSE;
-       ValaTypeSymbol* t = NULL;
-       ValaMethod* _tmp0_ = NULL;
-       ValaSymbol* _tmp1_ = NULL;
-       ValaSymbol* _tmp2_ = NULL;
-       ValaTypeSymbol* _tmp3_ = NULL;
-       gboolean _tmp4_ = FALSE;
-       gboolean _tmp5_ = FALSE;
-       gboolean _tmp6_ = FALSE;
-       gboolean _tmp7_ = FALSE;
-       ValaTypeSymbol* _tmp8_ = NULL;
-       g_return_val_if_fail (self != NULL, FALSE);
-       g_return_val_if_fail (m != NULL, FALSE);
-       _tmp0_ = m;
-       _tmp1_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp0_);
-       _tmp2_ = _tmp1_;
-       _tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_TYPESYMBOL) ? ((ValaTypeSymbol*) _tmp2_) : NULL);
-       t = _tmp3_;
-       _tmp8_ = t;
-       if (_tmp8_ == NULL) {
-               _tmp7_ = TRUE;
-       } else {
-               ValaTypeSymbol* _tmp9_ = NULL;
-               ValaTypeSymbol* _tmp10_ = NULL;
-               gboolean _tmp11_ = FALSE;
-               _tmp9_ = t;
-               _tmp10_ = ((ValaCCodeBaseModule*) self)->gobject_type;
-               _tmp11_ = vala_typesymbol_is_subtype_of (_tmp9_, _tmp10_);
-               _tmp7_ = !_tmp11_;
-       }
-       if (_tmp7_) {
-               _tmp6_ = TRUE;
-       } else {
-               ValaMethod* _tmp12_ = NULL;
-               _tmp12_ = m;
-               _tmp6_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp12_, VALA_TYPE_CREATION_METHOD);
-       }
-       if (_tmp6_) {
-               _tmp5_ = TRUE;
-       } else {
-               ValaMethod* _tmp13_ = NULL;
-               ValaMemberBinding _tmp14_ = 0;
-               ValaMemberBinding _tmp15_ = 0;
-               _tmp13_ = m;
-               _tmp14_ = vala_method_get_binding (_tmp13_);
-               _tmp15_ = _tmp14_;
-               _tmp5_ = _tmp15_ != VALA_MEMBER_BINDING_INSTANCE;
-       }
-       if (_tmp5_) {
-               ValaCodeContext* _tmp16_ = NULL;
-               ValaCodeContext* _tmp17_ = NULL;
-               gboolean _tmp18_ = FALSE;
-               _tmp16_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-               _tmp17_ = _tmp16_;
-               _tmp18_ = vala_code_context_require_glib_version (_tmp17_, 2, 20);
-               _tmp4_ = !_tmp18_;
-       } else {
-               _tmp4_ = FALSE;
-       }
-       result = _tmp4_;
-       _vala_code_node_unref0 (t);
-       return result;
-}
-
-
 static ValaCCodeStruct* vala_gasync_module_generate_data_struct (ValaGAsyncModule* self, ValaMethod* m) {
        ValaCCodeStruct* result = NULL;
        gchar* dataname = NULL;
@@ -692,18 +625,16 @@ static ValaCCodeStruct* vala_gasync_module_generate_data_struct (ValaGAsyncModul
        ValaCCodeStruct* _tmp10_ = NULL;
        ValaCCodeStruct* _tmp11_ = NULL;
        ValaCCodeStruct* _tmp12_ = NULL;
-       ValaMethod* _tmp13_ = NULL;
-       gboolean _tmp14_ = FALSE;
-       ValaCCodeStruct* _tmp16_ = NULL;
-       ValaCCodeStruct* _tmp17_ = NULL;
-       ValaCCodeStruct* _tmp18_ = NULL;
-       ValaMethod* _tmp19_ = NULL;
-       ValaMethod* _tmp21_ = NULL;
-       ValaMemberBinding _tmp22_ = 0;
-       ValaMemberBinding _tmp23_ = 0;
-       ValaMethod* _tmp153_ = NULL;
-       ValaDataType* _tmp154_ = NULL;
-       ValaDataType* _tmp155_ = NULL;
+       ValaCCodeStruct* _tmp13_ = NULL;
+       ValaCCodeStruct* _tmp14_ = NULL;
+       ValaCCodeStruct* _tmp15_ = NULL;
+       ValaMethod* _tmp16_ = NULL;
+       ValaMethod* _tmp18_ = NULL;
+       ValaMemberBinding _tmp19_ = 0;
+       ValaMemberBinding _tmp20_ = 0;
+       ValaMethod* _tmp150_ = NULL;
+       ValaDataType* _tmp151_ = NULL;
+       ValaDataType* _tmp152_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (m != NULL, NULL);
        _tmp0_ = m;
@@ -725,289 +656,282 @@ static ValaCCodeStruct* vala_gasync_module_generate_data_struct (ValaGAsyncModul
        data = _tmp11_;
        _tmp12_ = data;
        vala_ccode_struct_add_field (_tmp12_, "int", "_state_", NULL);
-       _tmp13_ = m;
-       _tmp14_ = vala_gasync_module_needs_dummy_object (self, _tmp13_);
-       if (_tmp14_) {
-               ValaCCodeStruct* _tmp15_ = NULL;
-               _tmp15_ = data;
-               vala_ccode_struct_add_field (_tmp15_, "GObject*", "_dummy_object_", NULL);
+       _tmp13_ = data;
+       vala_ccode_struct_add_field (_tmp13_, "GObject*", "_source_object_", NULL);
+       _tmp14_ = data;
+       vala_ccode_struct_add_field (_tmp14_, "GAsyncResult*", "_res_", NULL);
+       _tmp15_ = data;
+       vala_ccode_struct_add_field (_tmp15_, "GSimpleAsyncResult*", "_async_result", NULL);
+       _tmp16_ = m;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp16_, VALA_TYPE_CREATION_METHOD)) {
+               ValaCCodeStruct* _tmp17_ = NULL;
+               _tmp17_ = data;
+               vala_ccode_struct_add_field (_tmp17_, "GType", "object_type", NULL);
        }
-       _tmp16_ = data;
-       vala_ccode_struct_add_field (_tmp16_, "GObject*", "_source_object_", NULL);
-       _tmp17_ = data;
-       vala_ccode_struct_add_field (_tmp17_, "GAsyncResult*", "_res_", NULL);
-       _tmp18_ = data;
-       vala_ccode_struct_add_field (_tmp18_, "GSimpleAsyncResult*", "_async_result", NULL);
-       _tmp19_ = m;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, VALA_TYPE_CREATION_METHOD)) {
-               ValaCCodeStruct* _tmp20_ = NULL;
-               _tmp20_ = data;
-               vala_ccode_struct_add_field (_tmp20_, "GType", "object_type", NULL);
-       }
-       _tmp21_ = m;
-       _tmp22_ = vala_method_get_binding (_tmp21_);
-       _tmp23_ = _tmp22_;
-       if (_tmp23_ == VALA_MEMBER_BINDING_INSTANCE) {
+       _tmp18_ = m;
+       _tmp19_ = vala_method_get_binding (_tmp18_);
+       _tmp20_ = _tmp19_;
+       if (_tmp20_ == VALA_MEMBER_BINDING_INSTANCE) {
                ValaTypeSymbol* type_sym = NULL;
-               ValaMethod* _tmp24_ = NULL;
-               ValaSymbol* _tmp25_ = NULL;
-               ValaSymbol* _tmp26_ = NULL;
-               ValaTypeSymbol* _tmp27_ = NULL;
-               ValaTypeSymbol* _tmp28_ = NULL;
-               _tmp24_ = m;
-               _tmp25_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp24_);
-               _tmp26_ = _tmp25_;
-               _tmp27_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
-               type_sym = _tmp27_;
-               _tmp28_ = type_sym;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp28_, VALA_TYPE_OBJECT_TYPE_SYMBOL)) {
-                       ValaCCodeStruct* _tmp29_ = NULL;
-                       ValaTypeSymbol* _tmp30_ = NULL;
+               ValaMethod* _tmp21_ = NULL;
+               ValaSymbol* _tmp22_ = NULL;
+               ValaSymbol* _tmp23_ = NULL;
+               ValaTypeSymbol* _tmp24_ = NULL;
+               ValaTypeSymbol* _tmp25_ = NULL;
+               _tmp21_ = m;
+               _tmp22_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp21_);
+               _tmp23_ = _tmp22_;
+               _tmp24_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+               type_sym = _tmp24_;
+               _tmp25_ = type_sym;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_OBJECT_TYPE_SYMBOL)) {
+                       ValaCCodeStruct* _tmp26_ = NULL;
+                       ValaTypeSymbol* _tmp27_ = NULL;
+                       gchar* _tmp28_ = NULL;
+                       gchar* _tmp29_ = NULL;
+                       gchar* _tmp30_ = NULL;
                        gchar* _tmp31_ = NULL;
-                       gchar* _tmp32_ = NULL;
-                       gchar* _tmp33_ = NULL;
-                       gchar* _tmp34_ = NULL;
-                       _tmp29_ = data;
-                       _tmp30_ = type_sym;
-                       _tmp31_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp30_);
-                       _tmp32_ = _tmp31_;
-                       _tmp33_ = g_strconcat (_tmp32_, "*", NULL);
-                       _tmp34_ = _tmp33_;
-                       vala_ccode_struct_add_field (_tmp29_, _tmp34_, "self", NULL);
-                       _g_free0 (_tmp34_);
-                       _g_free0 (_tmp32_);
+                       _tmp26_ = data;
+                       _tmp27_ = type_sym;
+                       _tmp28_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp27_);
+                       _tmp29_ = _tmp28_;
+                       _tmp30_ = g_strconcat (_tmp29_, "*", NULL);
+                       _tmp31_ = _tmp30_;
+                       vala_ccode_struct_add_field (_tmp26_, _tmp31_, "self", NULL);
+                       _g_free0 (_tmp31_);
+                       _g_free0 (_tmp29_);
                } else {
-                       ValaCCodeStruct* _tmp35_ = NULL;
-                       ValaTypeSymbol* _tmp36_ = NULL;
-                       gchar* _tmp37_ = NULL;
-                       gchar* _tmp38_ = NULL;
-                       _tmp35_ = data;
-                       _tmp36_ = type_sym;
-                       _tmp37_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp36_);
-                       _tmp38_ = _tmp37_;
-                       vala_ccode_struct_add_field (_tmp35_, _tmp38_, "self", NULL);
-                       _g_free0 (_tmp38_);
+                       ValaCCodeStruct* _tmp32_ = NULL;
+                       ValaTypeSymbol* _tmp33_ = NULL;
+                       gchar* _tmp34_ = NULL;
+                       gchar* _tmp35_ = NULL;
+                       _tmp32_ = data;
+                       _tmp33_ = type_sym;
+                       _tmp34_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp33_);
+                       _tmp35_ = _tmp34_;
+                       vala_ccode_struct_add_field (_tmp32_, _tmp35_, "self", NULL);
+                       _g_free0 (_tmp35_);
                }
                _vala_code_node_unref0 (type_sym);
        }
        {
                ValaList* _param_list = NULL;
-               ValaMethod* _tmp39_ = NULL;
-               ValaList* _tmp40_ = NULL;
+               ValaMethod* _tmp36_ = NULL;
+               ValaList* _tmp37_ = NULL;
                gint _param_size = 0;
-               ValaList* _tmp41_ = NULL;
-               gint _tmp42_ = 0;
-               gint _tmp43_ = 0;
+               ValaList* _tmp38_ = NULL;
+               gint _tmp39_ = 0;
+               gint _tmp40_ = 0;
                gint _param_index = 0;
-               _tmp39_ = m;
-               _tmp40_ = vala_method_get_parameters (_tmp39_);
-               _param_list = _tmp40_;
-               _tmp41_ = _param_list;
-               _tmp42_ = vala_collection_get_size ((ValaCollection*) _tmp41_);
-               _tmp43_ = _tmp42_;
-               _param_size = _tmp43_;
+               _tmp36_ = m;
+               _tmp37_ = vala_method_get_parameters (_tmp36_);
+               _param_list = _tmp37_;
+               _tmp38_ = _param_list;
+               _tmp39_ = vala_collection_get_size ((ValaCollection*) _tmp38_);
+               _tmp40_ = _tmp39_;
+               _param_size = _tmp40_;
                _param_index = -1;
                while (TRUE) {
-                       gint _tmp44_ = 0;
-                       gint _tmp45_ = 0;
-                       gint _tmp46_ = 0;
+                       gint _tmp41_ = 0;
+                       gint _tmp42_ = 0;
+                       gint _tmp43_ = 0;
                        ValaParameter* param = NULL;
-                       ValaList* _tmp47_ = NULL;
-                       gint _tmp48_ = 0;
-                       gpointer _tmp49_ = NULL;
-                       gboolean _tmp50_ = FALSE;
-                       ValaParameter* _tmp51_ = NULL;
-                       ValaDataType* _tmp52_ = NULL;
-                       ValaDataType* _tmp53_ = NULL;
+                       ValaList* _tmp44_ = NULL;
+                       gint _tmp45_ = 0;
+                       gpointer _tmp46_ = NULL;
+                       gboolean _tmp47_ = FALSE;
+                       ValaParameter* _tmp48_ = NULL;
+                       ValaDataType* _tmp49_ = NULL;
+                       ValaDataType* _tmp50_ = NULL;
                        gboolean is_unowned_delegate = FALSE;
                        ValaDataType* param_type = NULL;
-                       ValaParameter* _tmp59_ = NULL;
+                       ValaParameter* _tmp56_ = NULL;
+                       ValaDataType* _tmp57_ = NULL;
+                       ValaDataType* _tmp58_ = NULL;
+                       ValaDataType* _tmp59_ = NULL;
                        ValaDataType* _tmp60_ = NULL;
-                       ValaDataType* _tmp61_ = NULL;
+                       ValaCCodeStruct* _tmp61_ = NULL;
                        ValaDataType* _tmp62_ = NULL;
-                       ValaDataType* _tmp63_ = NULL;
-                       ValaCCodeStruct* _tmp64_ = NULL;
-                       ValaDataType* _tmp65_ = NULL;
-                       gchar* _tmp66_ = NULL;
-                       gchar* _tmp67_ = NULL;
-                       ValaParameter* _tmp68_ = NULL;
-                       const gchar* _tmp69_ = NULL;
-                       const gchar* _tmp70_ = NULL;
-                       gchar* _tmp71_ = NULL;
-                       gchar* _tmp72_ = NULL;
-                       ValaParameter* _tmp73_ = NULL;
-                       ValaDataType* _tmp74_ = NULL;
-                       ValaDataType* _tmp75_ = NULL;
-                       _tmp44_ = _param_index;
-                       _param_index = _tmp44_ + 1;
-                       _tmp45_ = _param_index;
-                       _tmp46_ = _param_size;
-                       if (!(_tmp45_ < _tmp46_)) {
+                       gchar* _tmp63_ = NULL;
+                       gchar* _tmp64_ = NULL;
+                       ValaParameter* _tmp65_ = NULL;
+                       const gchar* _tmp66_ = NULL;
+                       const gchar* _tmp67_ = NULL;
+                       gchar* _tmp68_ = NULL;
+                       gchar* _tmp69_ = NULL;
+                       ValaParameter* _tmp70_ = NULL;
+                       ValaDataType* _tmp71_ = NULL;
+                       ValaDataType* _tmp72_ = NULL;
+                       _tmp41_ = _param_index;
+                       _param_index = _tmp41_ + 1;
+                       _tmp42_ = _param_index;
+                       _tmp43_ = _param_size;
+                       if (!(_tmp42_ < _tmp43_)) {
                                break;
                        }
-                       _tmp47_ = _param_list;
-                       _tmp48_ = _param_index;
-                       _tmp49_ = vala_list_get (_tmp47_, _tmp48_);
-                       param = (ValaParameter*) _tmp49_;
-                       _tmp51_ = param;
-                       _tmp52_ = vala_variable_get_variable_type ((ValaVariable*) _tmp51_);
-                       _tmp53_ = _tmp52_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp53_, VALA_TYPE_DELEGATE_TYPE)) {
-                               ValaParameter* _tmp54_ = NULL;
-                               ValaDataType* _tmp55_ = NULL;
-                               ValaDataType* _tmp56_ = NULL;
-                               gboolean _tmp57_ = FALSE;
-                               gboolean _tmp58_ = FALSE;
-                               _tmp54_ = param;
-                               _tmp55_ = vala_variable_get_variable_type ((ValaVariable*) _tmp54_);
-                               _tmp56_ = _tmp55_;
-                               _tmp57_ = vala_data_type_get_value_owned (_tmp56_);
-                               _tmp58_ = _tmp57_;
-                               _tmp50_ = !_tmp58_;
+                       _tmp44_ = _param_list;
+                       _tmp45_ = _param_index;
+                       _tmp46_ = vala_list_get (_tmp44_, _tmp45_);
+                       param = (ValaParameter*) _tmp46_;
+                       _tmp48_ = param;
+                       _tmp49_ = vala_variable_get_variable_type ((ValaVariable*) _tmp48_);
+                       _tmp50_ = _tmp49_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp50_, VALA_TYPE_DELEGATE_TYPE)) {
+                               ValaParameter* _tmp51_ = NULL;
+                               ValaDataType* _tmp52_ = NULL;
+                               ValaDataType* _tmp53_ = NULL;
+                               gboolean _tmp54_ = FALSE;
+                               gboolean _tmp55_ = FALSE;
+                               _tmp51_ = param;
+                               _tmp52_ = vala_variable_get_variable_type ((ValaVariable*) _tmp51_);
+                               _tmp53_ = _tmp52_;
+                               _tmp54_ = vala_data_type_get_value_owned (_tmp53_);
+                               _tmp55_ = _tmp54_;
+                               _tmp47_ = !_tmp55_;
                        } else {
-                               _tmp50_ = FALSE;
+                               _tmp47_ = FALSE;
                        }
-                       is_unowned_delegate = _tmp50_;
-                       _tmp59_ = param;
-                       _tmp60_ = vala_variable_get_variable_type ((ValaVariable*) _tmp59_);
-                       _tmp61_ = _tmp60_;
-                       _tmp62_ = vala_data_type_copy (_tmp61_);
-                       param_type = _tmp62_;
-                       _tmp63_ = param_type;
-                       vala_data_type_set_value_owned (_tmp63_, TRUE);
-                       _tmp64_ = data;
-                       _tmp65_ = param_type;
-                       _tmp66_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp65_);
+                       is_unowned_delegate = _tmp47_;
+                       _tmp56_ = param;
+                       _tmp57_ = vala_variable_get_variable_type ((ValaVariable*) _tmp56_);
+                       _tmp58_ = _tmp57_;
+                       _tmp59_ = vala_data_type_copy (_tmp58_);
+                       param_type = _tmp59_;
+                       _tmp60_ = param_type;
+                       vala_data_type_set_value_owned (_tmp60_, TRUE);
+                       _tmp61_ = data;
+                       _tmp62_ = param_type;
+                       _tmp63_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp62_);
+                       _tmp64_ = _tmp63_;
+                       _tmp65_ = param;
+                       _tmp66_ = vala_symbol_get_name ((ValaSymbol*) _tmp65_);
                        _tmp67_ = _tmp66_;
-                       _tmp68_ = param;
-                       _tmp69_ = vala_symbol_get_name ((ValaSymbol*) _tmp68_);
-                       _tmp70_ = _tmp69_;
-                       _tmp71_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp70_);
+                       _tmp68_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp67_);
+                       _tmp69_ = _tmp68_;
+                       vala_ccode_struct_add_field (_tmp61_, _tmp64_, _tmp69_, NULL);
+                       _g_free0 (_tmp69_);
+                       _g_free0 (_tmp64_);
+                       _tmp70_ = param;
+                       _tmp71_ = vala_variable_get_variable_type ((ValaVariable*) _tmp70_);
                        _tmp72_ = _tmp71_;
-                       vala_ccode_struct_add_field (_tmp64_, _tmp67_, _tmp72_, NULL);
-                       _g_free0 (_tmp72_);
-                       _g_free0 (_tmp67_);
-                       _tmp73_ = param;
-                       _tmp74_ = vala_variable_get_variable_type ((ValaVariable*) _tmp73_);
-                       _tmp75_ = _tmp74_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp75_, VALA_TYPE_ARRAY_TYPE)) {
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp72_, VALA_TYPE_ARRAY_TYPE)) {
                                ValaArrayType* array_type = NULL;
-                               ValaParameter* _tmp76_ = NULL;
-                               ValaDataType* _tmp77_ = NULL;
-                               ValaDataType* _tmp78_ = NULL;
-                               ValaArrayType* _tmp79_ = NULL;
-                               ValaParameter* _tmp80_ = NULL;
-                               gboolean _tmp81_ = FALSE;
-                               _tmp76_ = param;
-                               _tmp77_ = vala_variable_get_variable_type ((ValaVariable*) _tmp76_);
-                               _tmp78_ = _tmp77_;
-                               _tmp79_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp78_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                               array_type = _tmp79_;
-                               _tmp80_ = param;
-                               _tmp81_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp80_);
-                               if (_tmp81_) {
+                               ValaParameter* _tmp73_ = NULL;
+                               ValaDataType* _tmp74_ = NULL;
+                               ValaDataType* _tmp75_ = NULL;
+                               ValaArrayType* _tmp76_ = NULL;
+                               ValaParameter* _tmp77_ = NULL;
+                               gboolean _tmp78_ = FALSE;
+                               _tmp73_ = param;
+                               _tmp74_ = vala_variable_get_variable_type ((ValaVariable*) _tmp73_);
+                               _tmp75_ = _tmp74_;
+                               _tmp76_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp75_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                               array_type = _tmp76_;
+                               _tmp77_ = param;
+                               _tmp78_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp77_);
+                               if (_tmp78_) {
                                        {
                                                gint dim = 0;
                                                dim = 1;
                                                {
-                                                       gboolean _tmp82_ = FALSE;
-                                                       _tmp82_ = TRUE;
+                                                       gboolean _tmp79_ = FALSE;
+                                                       _tmp79_ = TRUE;
                                                        while (TRUE) {
+                                                               gint _tmp81_ = 0;
+                                                               ValaArrayType* _tmp82_ = NULL;
+                                                               gint _tmp83_ = 0;
                                                                gint _tmp84_ = 0;
-                                                               ValaArrayType* _tmp85_ = NULL;
-                                                               gint _tmp86_ = 0;
+                                                               ValaCCodeStruct* _tmp85_ = NULL;
+                                                               ValaParameter* _tmp86_ = NULL;
                                                                gint _tmp87_ = 0;
-                                                               ValaCCodeStruct* _tmp88_ = NULL;
-                                                               ValaParameter* _tmp89_ = NULL;
-                                                               gint _tmp90_ = 0;
-                                                               gchar* _tmp91_ = NULL;
-                                                               gchar* _tmp92_ = NULL;
-                                                               if (!_tmp82_) {
-                                                                       gint _tmp83_ = 0;
-                                                                       _tmp83_ = dim;
-                                                                       dim = _tmp83_ + 1;
+                                                               gchar* _tmp88_ = NULL;
+                                                               gchar* _tmp89_ = NULL;
+                                                               if (!_tmp79_) {
+                                                                       gint _tmp80_ = 0;
+                                                                       _tmp80_ = dim;
+                                                                       dim = _tmp80_ + 1;
                                                                }
-                                                               _tmp82_ = FALSE;
-                                                               _tmp84_ = dim;
-                                                               _tmp85_ = array_type;
-                                                               _tmp86_ = vala_array_type_get_rank (_tmp85_);
-                                                               _tmp87_ = _tmp86_;
-                                                               if (!(_tmp84_ <= _tmp87_)) {
+                                                               _tmp79_ = FALSE;
+                                                               _tmp81_ = dim;
+                                                               _tmp82_ = array_type;
+                                                               _tmp83_ = vala_array_type_get_rank (_tmp82_);
+                                                               _tmp84_ = _tmp83_;
+                                                               if (!(_tmp81_ <= _tmp84_)) {
                                                                        break;
                                                                }
-                                                               _tmp88_ = data;
-                                                               _tmp89_ = param;
-                                                               _tmp90_ = dim;
-                                                               _tmp91_ = vala_ccode_base_module_get_parameter_array_length_cname ((ValaCCodeBaseModule*) self, _tmp89_, _tmp90_);
-                                                               _tmp92_ = _tmp91_;
-                                                               vala_ccode_struct_add_field (_tmp88_, "gint", _tmp92_, NULL);
-                                                               _g_free0 (_tmp92_);
+                                                               _tmp85_ = data;
+                                                               _tmp86_ = param;
+                                                               _tmp87_ = dim;
+                                                               _tmp88_ = vala_ccode_base_module_get_parameter_array_length_cname ((ValaCCodeBaseModule*) self, _tmp86_, _tmp87_);
+                                                               _tmp89_ = _tmp88_;
+                                                               vala_ccode_struct_add_field (_tmp85_, "gint", _tmp89_, NULL);
+                                                               _g_free0 (_tmp89_);
                                                        }
                                                }
                                        }
                                }
                                _vala_code_node_unref0 (array_type);
                        } else {
-                               ValaParameter* _tmp93_ = NULL;
-                               ValaDataType* _tmp94_ = NULL;
-                               ValaDataType* _tmp95_ = NULL;
-                               _tmp93_ = param;
-                               _tmp94_ = vala_variable_get_variable_type ((ValaVariable*) _tmp93_);
-                               _tmp95_ = _tmp94_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp95_, VALA_TYPE_DELEGATE_TYPE)) {
+                               ValaParameter* _tmp90_ = NULL;
+                               ValaDataType* _tmp91_ = NULL;
+                               ValaDataType* _tmp92_ = NULL;
+                               _tmp90_ = param;
+                               _tmp91_ = vala_variable_get_variable_type ((ValaVariable*) _tmp90_);
+                               _tmp92_ = _tmp91_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp92_, VALA_TYPE_DELEGATE_TYPE)) {
                                        ValaDelegateType* deleg_type = NULL;
-                                       ValaParameter* _tmp96_ = NULL;
-                                       ValaDataType* _tmp97_ = NULL;
-                                       ValaDataType* _tmp98_ = NULL;
-                                       ValaDelegateType* _tmp99_ = NULL;
-                                       ValaDelegateType* _tmp100_ = NULL;
-                                       ValaDelegate* _tmp101_ = NULL;
-                                       ValaDelegate* _tmp102_ = NULL;
-                                       gboolean _tmp103_ = FALSE;
-                                       gboolean _tmp104_ = FALSE;
-                                       _tmp96_ = param;
-                                       _tmp97_ = vala_variable_get_variable_type ((ValaVariable*) _tmp96_);
-                                       _tmp98_ = _tmp97_;
-                                       _tmp99_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp98_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                                       deleg_type = _tmp99_;
-                                       _tmp100_ = deleg_type;
-                                       _tmp101_ = vala_delegate_type_get_delegate_symbol (_tmp100_);
-                                       _tmp102_ = _tmp101_;
-                                       _tmp103_ = vala_delegate_get_has_target (_tmp102_);
-                                       _tmp104_ = _tmp103_;
-                                       if (_tmp104_) {
-                                               ValaCCodeStruct* _tmp105_ = NULL;
-                                               ValaParameter* _tmp106_ = NULL;
-                                               gchar* _tmp107_ = NULL;
-                                               gchar* _tmp108_ = NULL;
-                                               gboolean _tmp109_ = FALSE;
-                                               _tmp105_ = data;
-                                               _tmp106_ = param;
-                                               _tmp107_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp106_);
-                                               _tmp108_ = _tmp107_;
-                                               vala_ccode_struct_add_field (_tmp105_, "gpointer", _tmp108_, NULL);
-                                               _g_free0 (_tmp108_);
-                                               _tmp109_ = is_unowned_delegate;
-                                               if (!_tmp109_) {
-                                                       ValaCCodeStruct* _tmp110_ = NULL;
-                                                       ValaParameter* _tmp111_ = NULL;
-                                                       const gchar* _tmp112_ = NULL;
-                                                       const gchar* _tmp113_ = NULL;
+                                       ValaParameter* _tmp93_ = NULL;
+                                       ValaDataType* _tmp94_ = NULL;
+                                       ValaDataType* _tmp95_ = NULL;
+                                       ValaDelegateType* _tmp96_ = NULL;
+                                       ValaDelegateType* _tmp97_ = NULL;
+                                       ValaDelegate* _tmp98_ = NULL;
+                                       ValaDelegate* _tmp99_ = NULL;
+                                       gboolean _tmp100_ = FALSE;
+                                       gboolean _tmp101_ = FALSE;
+                                       _tmp93_ = param;
+                                       _tmp94_ = vala_variable_get_variable_type ((ValaVariable*) _tmp93_);
+                                       _tmp95_ = _tmp94_;
+                                       _tmp96_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp95_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                                       deleg_type = _tmp96_;
+                                       _tmp97_ = deleg_type;
+                                       _tmp98_ = vala_delegate_type_get_delegate_symbol (_tmp97_);
+                                       _tmp99_ = _tmp98_;
+                                       _tmp100_ = vala_delegate_get_has_target (_tmp99_);
+                                       _tmp101_ = _tmp100_;
+                                       if (_tmp101_) {
+                                               ValaCCodeStruct* _tmp102_ = NULL;
+                                               ValaParameter* _tmp103_ = NULL;
+                                               gchar* _tmp104_ = NULL;
+                                               gchar* _tmp105_ = NULL;
+                                               gboolean _tmp106_ = FALSE;
+                                               _tmp102_ = data;
+                                               _tmp103_ = param;
+                                               _tmp104_ = vala_ccode_base_module_get_ccode_delegate_target_name ((ValaVariable*) _tmp103_);
+                                               _tmp105_ = _tmp104_;
+                                               vala_ccode_struct_add_field (_tmp102_, "gpointer", _tmp105_, NULL);
+                                               _g_free0 (_tmp105_);
+                                               _tmp106_ = is_unowned_delegate;
+                                               if (!_tmp106_) {
+                                                       ValaCCodeStruct* _tmp107_ = NULL;
+                                                       ValaParameter* _tmp108_ = NULL;
+                                                       const gchar* _tmp109_ = NULL;
+                                                       const gchar* _tmp110_ = NULL;
+                                                       gchar* _tmp111_ = NULL;
+                                                       gchar* _tmp112_ = NULL;
+                                                       gchar* _tmp113_ = NULL;
                                                        gchar* _tmp114_ = NULL;
-                                                       gchar* _tmp115_ = NULL;
-                                                       gchar* _tmp116_ = NULL;
-                                                       gchar* _tmp117_ = NULL;
-                                                       _tmp110_ = data;
-                                                       _tmp111_ = param;
-                                                       _tmp112_ = vala_symbol_get_name ((ValaSymbol*) _tmp111_);
-                                                       _tmp113_ = _tmp112_;
-                                                       _tmp114_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp113_);
-                                                       _tmp115_ = _tmp114_;
-                                                       _tmp116_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp115_);
-                                                       _tmp117_ = _tmp116_;
-                                                       vala_ccode_struct_add_field (_tmp110_, "GDestroyNotify", _tmp117_, NULL);
-                                                       _g_free0 (_tmp117_);
-                                                       _g_free0 (_tmp115_);
+                                                       _tmp107_ = data;
+                                                       _tmp108_ = param;
+                                                       _tmp109_ = vala_symbol_get_name ((ValaSymbol*) _tmp108_);
+                                                       _tmp110_ = _tmp109_;
+                                                       _tmp111_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp110_);
+                                                       _tmp112_ = _tmp111_;
+                                                       _tmp113_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp112_);
+                                                       _tmp114_ = _tmp113_;
+                                                       vala_ccode_struct_add_field (_tmp107_, "GDestroyNotify", _tmp114_, NULL);
+                                                       _g_free0 (_tmp114_);
+                                                       _g_free0 (_tmp112_);
                                                }
                                        }
                                        _vala_code_node_unref0 (deleg_type);
@@ -1020,225 +944,225 @@ static ValaCCodeStruct* vala_gasync_module_generate_data_struct (ValaGAsyncModul
        }
        {
                ValaList* _type_param_list = NULL;
-               ValaMethod* _tmp118_ = NULL;
-               ValaList* _tmp119_ = NULL;
+               ValaMethod* _tmp115_ = NULL;
+               ValaList* _tmp116_ = NULL;
                gint _type_param_size = 0;
-               ValaList* _tmp120_ = NULL;
-               gint _tmp121_ = 0;
-               gint _tmp122_ = 0;
+               ValaList* _tmp117_ = NULL;
+               gint _tmp118_ = 0;
+               gint _tmp119_ = 0;
                gint _type_param_index = 0;
-               _tmp118_ = m;
-               _tmp119_ = vala_method_get_type_parameters (_tmp118_);
-               _type_param_list = _tmp119_;
-               _tmp120_ = _type_param_list;
-               _tmp121_ = vala_collection_get_size ((ValaCollection*) _tmp120_);
-               _tmp122_ = _tmp121_;
-               _type_param_size = _tmp122_;
+               _tmp115_ = m;
+               _tmp116_ = vala_method_get_type_parameters (_tmp115_);
+               _type_param_list = _tmp116_;
+               _tmp117_ = _type_param_list;
+               _tmp118_ = vala_collection_get_size ((ValaCollection*) _tmp117_);
+               _tmp119_ = _tmp118_;
+               _type_param_size = _tmp119_;
                _type_param_index = -1;
                while (TRUE) {
-                       gint _tmp123_ = 0;
-                       gint _tmp124_ = 0;
-                       gint _tmp125_ = 0;
+                       gint _tmp120_ = 0;
+                       gint _tmp121_ = 0;
+                       gint _tmp122_ = 0;
                        ValaTypeParameter* type_param = NULL;
-                       ValaList* _tmp126_ = NULL;
-                       gint _tmp127_ = 0;
-                       gpointer _tmp128_ = NULL;
-                       ValaCCodeStruct* _tmp129_ = NULL;
-                       ValaTypeParameter* _tmp130_ = NULL;
-                       const gchar* _tmp131_ = NULL;
-                       const gchar* _tmp132_ = NULL;
+                       ValaList* _tmp123_ = NULL;
+                       gint _tmp124_ = 0;
+                       gpointer _tmp125_ = NULL;
+                       ValaCCodeStruct* _tmp126_ = NULL;
+                       ValaTypeParameter* _tmp127_ = NULL;
+                       const gchar* _tmp128_ = NULL;
+                       const gchar* _tmp129_ = NULL;
+                       gchar* _tmp130_ = NULL;
+                       gchar* _tmp131_ = NULL;
+                       gchar* _tmp132_ = NULL;
                        gchar* _tmp133_ = NULL;
-                       gchar* _tmp134_ = NULL;
-                       gchar* _tmp135_ = NULL;
-                       gchar* _tmp136_ = NULL;
-                       ValaCCodeStruct* _tmp137_ = NULL;
-                       ValaTypeParameter* _tmp138_ = NULL;
-                       const gchar* _tmp139_ = NULL;
-                       const gchar* _tmp140_ = NULL;
+                       ValaCCodeStruct* _tmp134_ = NULL;
+                       ValaTypeParameter* _tmp135_ = NULL;
+                       const gchar* _tmp136_ = NULL;
+                       const gchar* _tmp137_ = NULL;
+                       gchar* _tmp138_ = NULL;
+                       gchar* _tmp139_ = NULL;
+                       gchar* _tmp140_ = NULL;
                        gchar* _tmp141_ = NULL;
-                       gchar* _tmp142_ = NULL;
-                       gchar* _tmp143_ = NULL;
-                       gchar* _tmp144_ = NULL;
-                       ValaCCodeStruct* _tmp145_ = NULL;
-                       ValaTypeParameter* _tmp146_ = NULL;
-                       const gchar* _tmp147_ = NULL;
-                       const gchar* _tmp148_ = NULL;
+                       ValaCCodeStruct* _tmp142_ = NULL;
+                       ValaTypeParameter* _tmp143_ = NULL;
+                       const gchar* _tmp144_ = NULL;
+                       const gchar* _tmp145_ = NULL;
+                       gchar* _tmp146_ = NULL;
+                       gchar* _tmp147_ = NULL;
+                       gchar* _tmp148_ = NULL;
                        gchar* _tmp149_ = NULL;
-                       gchar* _tmp150_ = NULL;
-                       gchar* _tmp151_ = NULL;
-                       gchar* _tmp152_ = NULL;
-                       _tmp123_ = _type_param_index;
-                       _type_param_index = _tmp123_ + 1;
-                       _tmp124_ = _type_param_index;
-                       _tmp125_ = _type_param_size;
-                       if (!(_tmp124_ < _tmp125_)) {
+                       _tmp120_ = _type_param_index;
+                       _type_param_index = _tmp120_ + 1;
+                       _tmp121_ = _type_param_index;
+                       _tmp122_ = _type_param_size;
+                       if (!(_tmp121_ < _tmp122_)) {
                                break;
                        }
-                       _tmp126_ = _type_param_list;
-                       _tmp127_ = _type_param_index;
-                       _tmp128_ = vala_list_get (_tmp126_, _tmp127_);
-                       type_param = (ValaTypeParameter*) _tmp128_;
-                       _tmp129_ = data;
-                       _tmp130_ = type_param;
-                       _tmp131_ = vala_symbol_get_name ((ValaSymbol*) _tmp130_);
-                       _tmp132_ = _tmp131_;
-                       _tmp133_ = g_utf8_strdown (_tmp132_, (gssize) (-1));
-                       _tmp134_ = _tmp133_;
-                       _tmp135_ = g_strdup_printf ("%s_type", _tmp134_);
-                       _tmp136_ = _tmp135_;
-                       vala_ccode_struct_add_field (_tmp129_, "GType", _tmp136_, NULL);
-                       _g_free0 (_tmp136_);
-                       _g_free0 (_tmp134_);
-                       _tmp137_ = data;
-                       _tmp138_ = type_param;
-                       _tmp139_ = vala_symbol_get_name ((ValaSymbol*) _tmp138_);
-                       _tmp140_ = _tmp139_;
-                       _tmp141_ = g_utf8_strdown (_tmp140_, (gssize) (-1));
-                       _tmp142_ = _tmp141_;
-                       _tmp143_ = g_strdup_printf ("%s_dup_func", _tmp142_);
-                       _tmp144_ = _tmp143_;
-                       vala_ccode_struct_add_field (_tmp137_, "GBoxedCopyFunc", _tmp144_, NULL);
-                       _g_free0 (_tmp144_);
-                       _g_free0 (_tmp142_);
-                       _tmp145_ = data;
-                       _tmp146_ = type_param;
-                       _tmp147_ = vala_symbol_get_name ((ValaSymbol*) _tmp146_);
-                       _tmp148_ = _tmp147_;
-                       _tmp149_ = g_utf8_strdown (_tmp148_, (gssize) (-1));
-                       _tmp150_ = _tmp149_;
-                       _tmp151_ = g_strdup_printf ("%s_destroy_func", _tmp150_);
-                       _tmp152_ = _tmp151_;
-                       vala_ccode_struct_add_field (_tmp145_, "GDestroyNotify", _tmp152_, NULL);
-                       _g_free0 (_tmp152_);
-                       _g_free0 (_tmp150_);
+                       _tmp123_ = _type_param_list;
+                       _tmp124_ = _type_param_index;
+                       _tmp125_ = vala_list_get (_tmp123_, _tmp124_);
+                       type_param = (ValaTypeParameter*) _tmp125_;
+                       _tmp126_ = data;
+                       _tmp127_ = type_param;
+                       _tmp128_ = vala_symbol_get_name ((ValaSymbol*) _tmp127_);
+                       _tmp129_ = _tmp128_;
+                       _tmp130_ = g_utf8_strdown (_tmp129_, (gssize) (-1));
+                       _tmp131_ = _tmp130_;
+                       _tmp132_ = g_strdup_printf ("%s_type", _tmp131_);
+                       _tmp133_ = _tmp132_;
+                       vala_ccode_struct_add_field (_tmp126_, "GType", _tmp133_, NULL);
+                       _g_free0 (_tmp133_);
+                       _g_free0 (_tmp131_);
+                       _tmp134_ = data;
+                       _tmp135_ = type_param;
+                       _tmp136_ = vala_symbol_get_name ((ValaSymbol*) _tmp135_);
+                       _tmp137_ = _tmp136_;
+                       _tmp138_ = g_utf8_strdown (_tmp137_, (gssize) (-1));
+                       _tmp139_ = _tmp138_;
+                       _tmp140_ = g_strdup_printf ("%s_dup_func", _tmp139_);
+                       _tmp141_ = _tmp140_;
+                       vala_ccode_struct_add_field (_tmp134_, "GBoxedCopyFunc", _tmp141_, NULL);
+                       _g_free0 (_tmp141_);
+                       _g_free0 (_tmp139_);
+                       _tmp142_ = data;
+                       _tmp143_ = type_param;
+                       _tmp144_ = vala_symbol_get_name ((ValaSymbol*) _tmp143_);
+                       _tmp145_ = _tmp144_;
+                       _tmp146_ = g_utf8_strdown (_tmp145_, (gssize) (-1));
+                       _tmp147_ = _tmp146_;
+                       _tmp148_ = g_strdup_printf ("%s_destroy_func", _tmp147_);
+                       _tmp149_ = _tmp148_;
+                       vala_ccode_struct_add_field (_tmp142_, "GDestroyNotify", _tmp149_, NULL);
+                       _g_free0 (_tmp149_);
+                       _g_free0 (_tmp147_);
                        _vala_code_node_unref0 (type_param);
                }
                _vala_iterable_unref0 (_type_param_list);
        }
-       _tmp153_ = m;
-       _tmp154_ = vala_method_get_return_type (_tmp153_);
-       _tmp155_ = _tmp154_;
-       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp155_, VALA_TYPE_VOID_TYPE)) {
-               ValaCCodeStruct* _tmp156_ = NULL;
-               ValaMethod* _tmp157_ = NULL;
-               ValaDataType* _tmp158_ = NULL;
-               ValaDataType* _tmp159_ = NULL;
-               gchar* _tmp160_ = NULL;
-               gchar* _tmp161_ = NULL;
-               ValaMethod* _tmp162_ = NULL;
-               ValaDataType* _tmp163_ = NULL;
-               ValaDataType* _tmp164_ = NULL;
-               _tmp156_ = data;
-               _tmp157_ = m;
-               _tmp158_ = vala_method_get_return_type (_tmp157_);
-               _tmp159_ = _tmp158_;
-               _tmp160_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp159_);
+       _tmp150_ = m;
+       _tmp151_ = vala_method_get_return_type (_tmp150_);
+       _tmp152_ = _tmp151_;
+       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp152_, VALA_TYPE_VOID_TYPE)) {
+               ValaCCodeStruct* _tmp153_ = NULL;
+               ValaMethod* _tmp154_ = NULL;
+               ValaDataType* _tmp155_ = NULL;
+               ValaDataType* _tmp156_ = NULL;
+               gchar* _tmp157_ = NULL;
+               gchar* _tmp158_ = NULL;
+               ValaMethod* _tmp159_ = NULL;
+               ValaDataType* _tmp160_ = NULL;
+               ValaDataType* _tmp161_ = NULL;
+               _tmp153_ = data;
+               _tmp154_ = m;
+               _tmp155_ = vala_method_get_return_type (_tmp154_);
+               _tmp156_ = _tmp155_;
+               _tmp157_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp156_);
+               _tmp158_ = _tmp157_;
+               vala_ccode_struct_add_field (_tmp153_, _tmp158_, "result", NULL);
+               _g_free0 (_tmp158_);
+               _tmp159_ = m;
+               _tmp160_ = vala_method_get_return_type (_tmp159_);
                _tmp161_ = _tmp160_;
-               vala_ccode_struct_add_field (_tmp156_, _tmp161_, "result", NULL);
-               _g_free0 (_tmp161_);
-               _tmp162_ = m;
-               _tmp163_ = vala_method_get_return_type (_tmp162_);
-               _tmp164_ = _tmp163_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp164_, VALA_TYPE_ARRAY_TYPE)) {
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp161_, VALA_TYPE_ARRAY_TYPE)) {
                        ValaArrayType* array_type = NULL;
-                       ValaMethod* _tmp165_ = NULL;
-                       ValaDataType* _tmp166_ = NULL;
-                       ValaDataType* _tmp167_ = NULL;
-                       ValaArrayType* _tmp168_ = NULL;
-                       ValaMethod* _tmp169_ = NULL;
-                       gboolean _tmp170_ = FALSE;
-                       _tmp165_ = m;
-                       _tmp166_ = vala_method_get_return_type (_tmp165_);
-                       _tmp167_ = _tmp166_;
-                       _tmp168_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp167_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                       array_type = _tmp168_;
-                       _tmp169_ = m;
-                       _tmp170_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp169_);
-                       if (_tmp170_) {
+                       ValaMethod* _tmp162_ = NULL;
+                       ValaDataType* _tmp163_ = NULL;
+                       ValaDataType* _tmp164_ = NULL;
+                       ValaArrayType* _tmp165_ = NULL;
+                       ValaMethod* _tmp166_ = NULL;
+                       gboolean _tmp167_ = FALSE;
+                       _tmp162_ = m;
+                       _tmp163_ = vala_method_get_return_type (_tmp162_);
+                       _tmp164_ = _tmp163_;
+                       _tmp165_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp164_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                       array_type = _tmp165_;
+                       _tmp166_ = m;
+                       _tmp167_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp166_);
+                       if (_tmp167_) {
                                {
                                        gint dim = 0;
                                        dim = 1;
                                        {
-                                               gboolean _tmp171_ = FALSE;
-                                               _tmp171_ = TRUE;
+                                               gboolean _tmp168_ = FALSE;
+                                               _tmp168_ = TRUE;
                                                while (TRUE) {
+                                                       gint _tmp170_ = 0;
+                                                       ValaArrayType* _tmp171_ = NULL;
+                                                       gint _tmp172_ = 0;
                                                        gint _tmp173_ = 0;
-                                                       ValaArrayType* _tmp174_ = NULL;
+                                                       ValaCCodeStruct* _tmp174_ = NULL;
                                                        gint _tmp175_ = 0;
-                                                       gint _tmp176_ = 0;
-                                                       ValaCCodeStruct* _tmp177_ = NULL;
-                                                       gint _tmp178_ = 0;
-                                                       gchar* _tmp179_ = NULL;
-                                                       gchar* _tmp180_ = NULL;
-                                                       if (!_tmp171_) {
-                                                               gint _tmp172_ = 0;
-                                                               _tmp172_ = dim;
-                                                               dim = _tmp172_ + 1;
+                                                       gchar* _tmp176_ = NULL;
+                                                       gchar* _tmp177_ = NULL;
+                                                       if (!_tmp168_) {
+                                                               gint _tmp169_ = 0;
+                                                               _tmp169_ = dim;
+                                                               dim = _tmp169_ + 1;
                                                        }
-                                                       _tmp171_ = FALSE;
-                                                       _tmp173_ = dim;
-                                                       _tmp174_ = array_type;
-                                                       _tmp175_ = vala_array_type_get_rank (_tmp174_);
-                                                       _tmp176_ = _tmp175_;
-                                                       if (!(_tmp173_ <= _tmp176_)) {
+                                                       _tmp168_ = FALSE;
+                                                       _tmp170_ = dim;
+                                                       _tmp171_ = array_type;
+                                                       _tmp172_ = vala_array_type_get_rank (_tmp171_);
+                                                       _tmp173_ = _tmp172_;
+                                                       if (!(_tmp170_ <= _tmp173_)) {
                                                                break;
                                                        }
-                                                       _tmp177_ = data;
-                                                       _tmp178_ = dim;
-                                                       _tmp179_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp178_);
-                                                       _tmp180_ = _tmp179_;
-                                                       vala_ccode_struct_add_field (_tmp177_, "gint", _tmp180_, NULL);
-                                                       _g_free0 (_tmp180_);
+                                                       _tmp174_ = data;
+                                                       _tmp175_ = dim;
+                                                       _tmp176_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp175_);
+                                                       _tmp177_ = _tmp176_;
+                                                       vala_ccode_struct_add_field (_tmp174_, "gint", _tmp177_, NULL);
+                                                       _g_free0 (_tmp177_);
                                                }
                                        }
                                }
                        }
                        _vala_code_node_unref0 (array_type);
                } else {
-                       ValaMethod* _tmp181_ = NULL;
-                       ValaDataType* _tmp182_ = NULL;
-                       ValaDataType* _tmp183_ = NULL;
-                       _tmp181_ = m;
-                       _tmp182_ = vala_method_get_return_type (_tmp181_);
-                       _tmp183_ = _tmp182_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp183_, VALA_TYPE_DELEGATE_TYPE)) {
+                       ValaMethod* _tmp178_ = NULL;
+                       ValaDataType* _tmp179_ = NULL;
+                       ValaDataType* _tmp180_ = NULL;
+                       _tmp178_ = m;
+                       _tmp179_ = vala_method_get_return_type (_tmp178_);
+                       _tmp180_ = _tmp179_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp180_, VALA_TYPE_DELEGATE_TYPE)) {
                                ValaDelegateType* deleg_type = NULL;
-                               ValaMethod* _tmp184_ = NULL;
-                               ValaDataType* _tmp185_ = NULL;
-                               ValaDataType* _tmp186_ = NULL;
-                               ValaDelegateType* _tmp187_ = NULL;
-                               ValaDelegateType* _tmp188_ = NULL;
-                               ValaDelegate* _tmp189_ = NULL;
-                               ValaDelegate* _tmp190_ = NULL;
-                               gboolean _tmp191_ = FALSE;
-                               gboolean _tmp192_ = FALSE;
-                               _tmp184_ = m;
-                               _tmp185_ = vala_method_get_return_type (_tmp184_);
-                               _tmp186_ = _tmp185_;
-                               _tmp187_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp186_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                               deleg_type = _tmp187_;
-                               _tmp188_ = deleg_type;
-                               _tmp189_ = vala_delegate_type_get_delegate_symbol (_tmp188_);
-                               _tmp190_ = _tmp189_;
-                               _tmp191_ = vala_delegate_get_has_target (_tmp190_);
-                               _tmp192_ = _tmp191_;
-                               if (_tmp192_) {
+                               ValaMethod* _tmp181_ = NULL;
+                               ValaDataType* _tmp182_ = NULL;
+                               ValaDataType* _tmp183_ = NULL;
+                               ValaDelegateType* _tmp184_ = NULL;
+                               ValaDelegateType* _tmp185_ = NULL;
+                               ValaDelegate* _tmp186_ = NULL;
+                               ValaDelegate* _tmp187_ = NULL;
+                               gboolean _tmp188_ = FALSE;
+                               gboolean _tmp189_ = FALSE;
+                               _tmp181_ = m;
+                               _tmp182_ = vala_method_get_return_type (_tmp181_);
+                               _tmp183_ = _tmp182_;
+                               _tmp184_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp183_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                               deleg_type = _tmp184_;
+                               _tmp185_ = deleg_type;
+                               _tmp186_ = vala_delegate_type_get_delegate_symbol (_tmp185_);
+                               _tmp187_ = _tmp186_;
+                               _tmp188_ = vala_delegate_get_has_target (_tmp187_);
+                               _tmp189_ = _tmp188_;
+                               if (_tmp189_) {
+                                       ValaCCodeStruct* _tmp190_ = NULL;
+                                       gchar* _tmp191_ = NULL;
+                                       gchar* _tmp192_ = NULL;
                                        ValaCCodeStruct* _tmp193_ = NULL;
                                        gchar* _tmp194_ = NULL;
                                        gchar* _tmp195_ = NULL;
-                                       ValaCCodeStruct* _tmp196_ = NULL;
-                                       gchar* _tmp197_ = NULL;
-                                       gchar* _tmp198_ = NULL;
+                                       _tmp190_ = data;
+                                       _tmp191_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
+                                       _tmp192_ = _tmp191_;
+                                       vala_ccode_struct_add_field (_tmp190_, "gpointer", _tmp192_, NULL);
+                                       _g_free0 (_tmp192_);
                                        _tmp193_ = data;
-                                       _tmp194_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
+                                       _tmp194_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, "result");
                                        _tmp195_ = _tmp194_;
-                                       vala_ccode_struct_add_field (_tmp193_, "gpointer", _tmp195_, NULL);
+                                       vala_ccode_struct_add_field (_tmp193_, "GDestroyNotify", _tmp195_, NULL);
                                        _g_free0 (_tmp195_);
-                                       _tmp196_ = data;
-                                       _tmp197_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, "result");
-                                       _tmp198_ = _tmp197_;
-                                       vala_ccode_struct_add_field (_tmp196_, "GDestroyNotify", _tmp198_, NULL);
-                                       _g_free0 (_tmp198_);
                                }
                                _vala_code_node_unref0 (deleg_type);
                        }
@@ -1292,24 +1216,22 @@ static ValaCCodeFunction* vala_gasync_module_generate_free_function (ValaGAsyncM
        ValaMethod* _tmp79_ = NULL;
        ValaMemberBinding _tmp80_ = 0;
        ValaMemberBinding _tmp81_ = 0;
-       ValaMethod* _tmp98_ = NULL;
-       gboolean _tmp99_ = FALSE;
        ValaCCodeFunctionCall* freecall = NULL;
-       ValaCCodeIdentifier* _tmp113_ = NULL;
-       ValaCCodeIdentifier* _tmp114_ = NULL;
-       ValaCCodeFunctionCall* _tmp115_ = NULL;
-       ValaCCodeFunctionCall* _tmp116_ = NULL;
-       const gchar* _tmp117_ = NULL;
-       ValaCCodeIdentifier* _tmp118_ = NULL;
-       ValaCCodeIdentifier* _tmp119_ = NULL;
-       ValaCCodeIdentifier* _tmp120_ = NULL;
-       ValaCCodeIdentifier* _tmp121_ = NULL;
-       ValaCCodeFunction* _tmp122_ = NULL;
-       ValaCCodeFunction* _tmp123_ = NULL;
-       ValaCCodeFile* _tmp124_ = NULL;
-       ValaCCodeFunction* _tmp125_ = NULL;
-       ValaCCodeFile* _tmp126_ = NULL;
-       ValaCCodeFunction* _tmp127_ = NULL;
+       ValaCCodeIdentifier* _tmp98_ = NULL;
+       ValaCCodeIdentifier* _tmp99_ = NULL;
+       ValaCCodeFunctionCall* _tmp100_ = NULL;
+       ValaCCodeFunctionCall* _tmp101_ = NULL;
+       const gchar* _tmp102_ = NULL;
+       ValaCCodeIdentifier* _tmp103_ = NULL;
+       ValaCCodeIdentifier* _tmp104_ = NULL;
+       ValaCCodeIdentifier* _tmp105_ = NULL;
+       ValaCCodeIdentifier* _tmp106_ = NULL;
+       ValaCCodeFunction* _tmp107_ = NULL;
+       ValaCCodeFunction* _tmp108_ = NULL;
+       ValaCCodeFile* _tmp109_ = NULL;
+       ValaCCodeFunction* _tmp110_ = NULL;
+       ValaCCodeFile* _tmp111_ = NULL;
+       ValaCCodeFunction* _tmp112_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (m != NULL, NULL);
        _tmp0_ = m;
@@ -1537,71 +1459,31 @@ static ValaCCodeFunction* vala_gasync_module_generate_free_function (ValaGAsyncM
                }
                _vala_code_node_unref0 (this_type);
        }
-       _tmp98_ = m;
-       _tmp99_ = vala_gasync_module_needs_dummy_object (self, _tmp98_);
-       if (_tmp99_) {
-               ValaCCodeMemberAccess* dummy_object = NULL;
-               ValaCCodeIdentifier* _tmp100_ = NULL;
-               ValaCCodeIdentifier* _tmp101_ = NULL;
-               ValaCCodeMemberAccess* _tmp102_ = NULL;
-               ValaCCodeMemberAccess* _tmp103_ = NULL;
-               ValaCCodeFunctionCall* free_dummy_object = NULL;
-               ValaCCodeIdentifier* _tmp104_ = NULL;
-               ValaCCodeIdentifier* _tmp105_ = NULL;
-               ValaCCodeFunctionCall* _tmp106_ = NULL;
-               ValaCCodeFunctionCall* _tmp107_ = NULL;
-               ValaCCodeFunctionCall* _tmp108_ = NULL;
-               ValaCCodeMemberAccess* _tmp109_ = NULL;
-               ValaCCodeFunction* _tmp110_ = NULL;
-               ValaCCodeFunction* _tmp111_ = NULL;
-               ValaCCodeFunctionCall* _tmp112_ = NULL;
-               _tmp100_ = vala_ccode_identifier_new ("_data_");
-               _tmp101_ = _tmp100_;
-               _tmp102_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp101_, "_dummy_object_");
-               _tmp103_ = _tmp102_;
-               _vala_ccode_node_unref0 (_tmp101_);
-               dummy_object = _tmp103_;
-               _tmp104_ = vala_ccode_identifier_new ("g_object_unref");
-               _tmp105_ = _tmp104_;
-               _tmp106_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp105_);
-               _tmp107_ = _tmp106_;
-               _vala_ccode_node_unref0 (_tmp105_);
-               free_dummy_object = _tmp107_;
-               _tmp108_ = free_dummy_object;
-               _tmp109_ = dummy_object;
-               vala_ccode_function_call_add_argument (_tmp108_, (ValaCCodeExpression*) _tmp109_);
-               _tmp110_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp111_ = _tmp110_;
-               _tmp112_ = free_dummy_object;
-               vala_ccode_function_add_expression (_tmp111_, (ValaCCodeExpression*) _tmp112_);
-               _vala_ccode_node_unref0 (free_dummy_object);
-               _vala_ccode_node_unref0 (dummy_object);
-       }
-       _tmp113_ = vala_ccode_identifier_new ("g_slice_free");
-       _tmp114_ = _tmp113_;
-       _tmp115_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp114_);
-       _tmp116_ = _tmp115_;
-       _vala_ccode_node_unref0 (_tmp114_);
-       freecall = _tmp116_;
-       _tmp117_ = dataname;
-       _tmp118_ = vala_ccode_identifier_new (_tmp117_);
-       _tmp119_ = _tmp118_;
-       vala_ccode_function_call_add_argument (freecall, (ValaCCodeExpression*) _tmp119_);
-       _vala_ccode_node_unref0 (_tmp119_);
-       _tmp120_ = vala_ccode_identifier_new ("_data_");
-       _tmp121_ = _tmp120_;
-       vala_ccode_function_call_add_argument (freecall, (ValaCCodeExpression*) _tmp121_);
-       _vala_ccode_node_unref0 (_tmp121_);
-       _tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp123_ = _tmp122_;
-       vala_ccode_function_add_expression (_tmp123_, (ValaCCodeExpression*) freecall);
+       _tmp98_ = vala_ccode_identifier_new ("g_slice_free");
+       _tmp99_ = _tmp98_;
+       _tmp100_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp99_);
+       _tmp101_ = _tmp100_;
+       _vala_ccode_node_unref0 (_tmp99_);
+       freecall = _tmp101_;
+       _tmp102_ = dataname;
+       _tmp103_ = vala_ccode_identifier_new (_tmp102_);
+       _tmp104_ = _tmp103_;
+       vala_ccode_function_call_add_argument (freecall, (ValaCCodeExpression*) _tmp104_);
+       _vala_ccode_node_unref0 (_tmp104_);
+       _tmp105_ = vala_ccode_identifier_new ("_data_");
+       _tmp106_ = _tmp105_;
+       vala_ccode_function_call_add_argument (freecall, (ValaCCodeExpression*) _tmp106_);
+       _vala_ccode_node_unref0 (_tmp106_);
+       _tmp107_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp108_ = _tmp107_;
+       vala_ccode_function_add_expression (_tmp108_, (ValaCCodeExpression*) freecall);
        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
-       _tmp124_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp125_ = freefunc;
-       vala_ccode_file_add_function_declaration (_tmp124_, _tmp125_);
-       _tmp126_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp127_ = freefunc;
-       vala_ccode_file_add_function (_tmp126_, _tmp127_);
+       _tmp109_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp110_ = freefunc;
+       vala_ccode_file_add_function_declaration (_tmp109_, _tmp110_);
+       _tmp111_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp112_ = freefunc;
+       vala_ccode_file_add_function (_tmp111_, _tmp112_);
        result = freefunc;
        _vala_ccode_node_unref0 (freecall);
        _g_free0 (dataname);
@@ -1647,106 +1529,106 @@ static void vala_gasync_module_generate_async_function (ValaGAsyncModule* self,
        ValaMethod* _tmp31_ = NULL;
        ValaMethod* _tmp32_ = NULL;
        ValaMethod* _tmp33_ = NULL;
-       ValaCCodeFunction* _tmp49_ = NULL;
-       gboolean _tmp50_ = FALSE;
-       ValaMethod* _tmp51_ = NULL;
-       gboolean _tmp52_ = FALSE;
-       gboolean _tmp53_ = FALSE;
+       ValaCCodeFunction* _tmp60_ = NULL;
+       gboolean _tmp61_ = FALSE;
+       ValaMethod* _tmp62_ = NULL;
+       gboolean _tmp63_ = FALSE;
+       gboolean _tmp64_ = FALSE;
        ValaCCodeFunctionCall* dataalloc = NULL;
-       ValaCCodeIdentifier* _tmp111_ = NULL;
-       ValaCCodeIdentifier* _tmp112_ = NULL;
-       ValaCCodeFunctionCall* _tmp113_ = NULL;
-       ValaCCodeFunctionCall* _tmp114_ = NULL;
-       ValaCCodeFunctionCall* _tmp115_ = NULL;
-       const gchar* _tmp116_ = NULL;
-       ValaCCodeIdentifier* _tmp117_ = NULL;
-       ValaCCodeIdentifier* _tmp118_ = NULL;
-       ValaCCodeIdentifier* data_var = NULL;
-       ValaCCodeIdentifier* _tmp119_ = NULL;
-       ValaCCodeFunction* _tmp120_ = NULL;
-       ValaCCodeFunction* _tmp121_ = NULL;
-       const gchar* _tmp122_ = NULL;
-       gchar* _tmp123_ = NULL;
-       gchar* _tmp124_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp125_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp126_ = NULL;
-       ValaCCodeFunction* _tmp127_ = NULL;
-       ValaCCodeFunction* _tmp128_ = NULL;
+       ValaCCodeIdentifier* _tmp122_ = NULL;
+       ValaCCodeIdentifier* _tmp123_ = NULL;
+       ValaCCodeFunctionCall* _tmp124_ = NULL;
+       ValaCCodeFunctionCall* _tmp125_ = NULL;
+       ValaCCodeFunctionCall* _tmp126_ = NULL;
+       const gchar* _tmp127_ = NULL;
+       ValaCCodeIdentifier* _tmp128_ = NULL;
        ValaCCodeIdentifier* _tmp129_ = NULL;
-       ValaCCodeFunctionCall* _tmp130_ = NULL;
+       ValaCCodeIdentifier* data_var = NULL;
+       ValaCCodeIdentifier* _tmp130_ = NULL;
+       ValaCCodeFunction* _tmp131_ = NULL;
+       ValaCCodeFunction* _tmp132_ = NULL;
+       const gchar* _tmp133_ = NULL;
+       gchar* _tmp134_ = NULL;
+       gchar* _tmp135_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp136_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp137_ = NULL;
+       ValaCCodeFunction* _tmp138_ = NULL;
+       ValaCCodeFunction* _tmp139_ = NULL;
+       ValaCCodeIdentifier* _tmp140_ = NULL;
+       ValaCCodeFunctionCall* _tmp141_ = NULL;
        ValaCCodeFunctionCall* create_result = NULL;
-       ValaCCodeIdentifier* _tmp131_ = NULL;
-       ValaCCodeIdentifier* _tmp132_ = NULL;
-       ValaCCodeFunctionCall* _tmp133_ = NULL;
-       ValaCCodeFunctionCall* _tmp134_ = NULL;
+       ValaCCodeIdentifier* _tmp142_ = NULL;
+       ValaCCodeIdentifier* _tmp143_ = NULL;
+       ValaCCodeFunctionCall* _tmp144_ = NULL;
+       ValaCCodeFunctionCall* _tmp145_ = NULL;
        ValaTypeSymbol* t = NULL;
-       ValaMethod* _tmp135_ = NULL;
-       ValaSymbol* _tmp136_ = NULL;
-       ValaSymbol* _tmp137_ = NULL;
-       ValaTypeSymbol* _tmp138_ = NULL;
-       gboolean _tmp139_ = FALSE;
-       gboolean _tmp140_ = FALSE;
-       gboolean _tmp141_ = FALSE;
-       ValaMethod* _tmp142_ = NULL;
-       ValaCCodeFunctionCall* _tmp188_ = NULL;
-       ValaCCodeIdentifier* _tmp189_ = NULL;
-       ValaCCodeIdentifier* _tmp190_ = NULL;
-       ValaCCodeFunctionCall* _tmp191_ = NULL;
+       ValaMethod* _tmp146_ = NULL;
+       ValaSymbol* _tmp147_ = NULL;
+       ValaSymbol* _tmp148_ = NULL;
+       ValaTypeSymbol* _tmp149_ = NULL;
+       gboolean _tmp150_ = FALSE;
+       gboolean _tmp151_ = FALSE;
+       gboolean _tmp152_ = FALSE;
+       ValaMethod* _tmp153_ = NULL;
+       ValaCCodeFunctionCall* _tmp173_ = NULL;
+       ValaCCodeIdentifier* _tmp174_ = NULL;
+       ValaCCodeIdentifier* _tmp175_ = NULL;
+       ValaCCodeFunctionCall* _tmp176_ = NULL;
+       ValaCCodeIdentifier* _tmp177_ = NULL;
+       ValaCCodeIdentifier* _tmp178_ = NULL;
+       ValaCCodeFunctionCall* _tmp179_ = NULL;
+       ValaMethod* _tmp180_ = NULL;
+       gchar* _tmp181_ = NULL;
+       gchar* _tmp182_ = NULL;
+       ValaCCodeIdentifier* _tmp183_ = NULL;
+       ValaCCodeIdentifier* _tmp184_ = NULL;
+       ValaCCodeFunction* _tmp185_ = NULL;
+       ValaCCodeFunction* _tmp186_ = NULL;
+       ValaCCodeIdentifier* _tmp187_ = NULL;
+       ValaCCodeMemberAccess* _tmp188_ = NULL;
+       ValaCCodeMemberAccess* _tmp189_ = NULL;
+       ValaCCodeFunctionCall* _tmp190_ = NULL;
+       ValaCCodeFunctionCall* set_op_res_call = NULL;
+       ValaCCodeIdentifier* _tmp191_ = NULL;
        ValaCCodeIdentifier* _tmp192_ = NULL;
-       ValaCCodeIdentifier* _tmp193_ = NULL;
+       ValaCCodeFunctionCall* _tmp193_ = NULL;
        ValaCCodeFunctionCall* _tmp194_ = NULL;
-       ValaMethod* _tmp195_ = NULL;
-       gchar* _tmp196_ = NULL;
-       gchar* _tmp197_ = NULL;
-       ValaCCodeIdentifier* _tmp198_ = NULL;
-       ValaCCodeIdentifier* _tmp199_ = NULL;
-       ValaCCodeFunction* _tmp200_ = NULL;
-       ValaCCodeFunction* _tmp201_ = NULL;
-       ValaCCodeIdentifier* _tmp202_ = NULL;
-       ValaCCodeMemberAccess* _tmp203_ = NULL;
-       ValaCCodeMemberAccess* _tmp204_ = NULL;
-       ValaCCodeFunctionCall* _tmp205_ = NULL;
-       ValaCCodeFunctionCall* set_op_res_call = NULL;
-       ValaCCodeIdentifier* _tmp206_ = NULL;
+       ValaCCodeFunctionCall* _tmp195_ = NULL;
+       ValaCCodeIdentifier* _tmp196_ = NULL;
+       ValaCCodeMemberAccess* _tmp197_ = NULL;
+       ValaCCodeMemberAccess* _tmp198_ = NULL;
+       ValaCCodeFunctionCall* _tmp199_ = NULL;
+       ValaCCodeIdentifier* _tmp200_ = NULL;
+       ValaCCodeFunctionCall* _tmp201_ = NULL;
+       ValaMethod* _tmp202_ = NULL;
+       gchar* _tmp203_ = NULL;
+       gchar* _tmp204_ = NULL;
+       gchar* _tmp205_ = NULL;
+       gchar* _tmp206_ = NULL;
        ValaCCodeIdentifier* _tmp207_ = NULL;
-       ValaCCodeFunctionCall* _tmp208_ = NULL;
-       ValaCCodeFunctionCall* _tmp209_ = NULL;
-       ValaCCodeFunctionCall* _tmp210_ = NULL;
-       ValaCCodeIdentifier* _tmp211_ = NULL;
-       ValaCCodeMemberAccess* _tmp212_ = NULL;
-       ValaCCodeMemberAccess* _tmp213_ = NULL;
-       ValaCCodeFunctionCall* _tmp214_ = NULL;
-       ValaCCodeIdentifier* _tmp215_ = NULL;
-       ValaCCodeFunctionCall* _tmp216_ = NULL;
-       ValaMethod* _tmp217_ = NULL;
-       gchar* _tmp218_ = NULL;
-       gchar* _tmp219_ = NULL;
-       gchar* _tmp220_ = NULL;
-       gchar* _tmp221_ = NULL;
-       ValaCCodeIdentifier* _tmp222_ = NULL;
-       ValaCCodeIdentifier* _tmp223_ = NULL;
-       ValaCCodeFunction* _tmp224_ = NULL;
-       ValaCCodeFunction* _tmp225_ = NULL;
-       ValaCCodeFunctionCall* _tmp226_ = NULL;
-       ValaMethod* _tmp227_ = NULL;
-       ValaCCodeBaseModuleEmitContext* _tmp272_ = NULL;
-       ValaMethod* _tmp273_ = NULL;
-       ValaCCodeBaseModuleEmitContext* _tmp309_ = NULL;
+       ValaCCodeIdentifier* _tmp208_ = NULL;
+       ValaCCodeFunction* _tmp209_ = NULL;
+       ValaCCodeFunction* _tmp210_ = NULL;
+       ValaCCodeFunctionCall* _tmp211_ = NULL;
+       ValaMethod* _tmp212_ = NULL;
+       ValaCCodeBaseModuleEmitContext* _tmp257_ = NULL;
+       ValaMethod* _tmp258_ = NULL;
+       ValaCCodeBaseModuleEmitContext* _tmp294_ = NULL;
        ValaCCodeFunctionCall* ccall = NULL;
-       ValaMethod* _tmp369_ = NULL;
-       gchar* _tmp370_ = NULL;
-       gchar* _tmp371_ = NULL;
-       gchar* _tmp372_ = NULL;
-       gchar* _tmp373_ = NULL;
-       ValaCCodeIdentifier* _tmp374_ = NULL;
-       ValaCCodeIdentifier* _tmp375_ = NULL;
-       ValaCCodeFunctionCall* _tmp376_ = NULL;
-       ValaCCodeFunctionCall* _tmp377_ = NULL;
-       ValaCCodeIdentifier* _tmp378_ = NULL;
-       ValaCCodeFunction* _tmp379_ = NULL;
-       ValaCCodeFunction* _tmp380_ = NULL;
-       ValaCCodeFile* _tmp381_ = NULL;
-       ValaCCodeFunction* _tmp382_ = NULL;
+       ValaMethod* _tmp354_ = NULL;
+       gchar* _tmp355_ = NULL;
+       gchar* _tmp356_ = NULL;
+       gchar* _tmp357_ = NULL;
+       gchar* _tmp358_ = NULL;
+       ValaCCodeIdentifier* _tmp359_ = NULL;
+       ValaCCodeIdentifier* _tmp360_ = NULL;
+       ValaCCodeFunctionCall* _tmp361_ = NULL;
+       ValaCCodeFunctionCall* _tmp362_ = NULL;
+       ValaCCodeIdentifier* _tmp363_ = NULL;
+       ValaCCodeFunction* _tmp364_ = NULL;
+       ValaCCodeFunction* _tmp365_ = NULL;
+       ValaCCodeFile* _tmp366_ = NULL;
+       ValaCCodeFunction* _tmp367_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (m != NULL);
        _tmp0_ = vala_ccode_base_module_emit_context_new (NULL);
@@ -1836,782 +1718,743 @@ static void vala_gasync_module_generate_async_function (ValaGAsyncModule* self,
                        _tmp47_ = vala_ccode_function_get_modifiers (_tmp46_);
                        _tmp48_ = _tmp47_;
                        vala_ccode_function_set_modifiers (_tmp46_, _tmp48_ | VALA_CCODE_MODIFIERS_STATIC);
+               } else {
+                       gboolean _tmp49_ = FALSE;
+                       ValaCodeContext* _tmp50_ = NULL;
+                       ValaCodeContext* _tmp51_ = NULL;
+                       gboolean _tmp52_ = FALSE;
+                       gboolean _tmp53_ = FALSE;
+                       _tmp50_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp51_ = _tmp50_;
+                       _tmp52_ = vala_code_context_get_hide_internal (_tmp51_);
+                       _tmp53_ = _tmp52_;
+                       if (_tmp53_) {
+                               ValaMethod* _tmp54_ = NULL;
+                               gboolean _tmp55_ = FALSE;
+                               _tmp54_ = m;
+                               _tmp55_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp54_);
+                               _tmp49_ = _tmp55_;
+                       } else {
+                               _tmp49_ = FALSE;
+                       }
+                       if (_tmp49_) {
+                               ValaCCodeFunction* _tmp56_ = NULL;
+                               ValaCCodeFunction* _tmp57_ = NULL;
+                               ValaCCodeModifiers _tmp58_ = 0;
+                               ValaCCodeModifiers _tmp59_ = 0;
+                               _tmp56_ = asyncfunc;
+                               _tmp57_ = asyncfunc;
+                               _tmp58_ = vala_ccode_function_get_modifiers (_tmp57_);
+                               _tmp59_ = _tmp58_;
+                               vala_ccode_function_set_modifiers (_tmp57_, _tmp59_ | VALA_CCODE_MODIFIERS_INTERNAL);
+                       }
                }
        }
-       _tmp49_ = asyncfunc;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp49_);
-       _tmp51_ = m;
-       _tmp52_ = vala_method_get_overrides (_tmp51_);
-       _tmp53_ = _tmp52_;
-       if (_tmp53_) {
-               _tmp50_ = TRUE;
+       _tmp60_ = asyncfunc;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp60_);
+       _tmp62_ = m;
+       _tmp63_ = vala_method_get_overrides (_tmp62_);
+       _tmp64_ = _tmp63_;
+       if (_tmp64_) {
+               _tmp61_ = TRUE;
        } else {
-               gboolean _tmp54_ = FALSE;
-               gboolean _tmp55_ = FALSE;
-               ValaMethod* _tmp56_ = NULL;
-               ValaMethod* _tmp57_ = NULL;
-               ValaMethod* _tmp58_ = NULL;
-               _tmp56_ = m;
-               _tmp57_ = vala_method_get_base_interface_method (_tmp56_);
-               _tmp58_ = _tmp57_;
-               if (_tmp58_ != NULL) {
-                       ValaMethod* _tmp59_ = NULL;
-                       gboolean _tmp60_ = FALSE;
-                       gboolean _tmp61_ = FALSE;
-                       _tmp59_ = m;
-                       _tmp60_ = vala_method_get_is_abstract (_tmp59_);
-                       _tmp61_ = _tmp60_;
-                       _tmp55_ = !_tmp61_;
+               gboolean _tmp65_ = FALSE;
+               gboolean _tmp66_ = FALSE;
+               ValaMethod* _tmp67_ = NULL;
+               ValaMethod* _tmp68_ = NULL;
+               ValaMethod* _tmp69_ = NULL;
+               _tmp67_ = m;
+               _tmp68_ = vala_method_get_base_interface_method (_tmp67_);
+               _tmp69_ = _tmp68_;
+               if (_tmp69_ != NULL) {
+                       ValaMethod* _tmp70_ = NULL;
+                       gboolean _tmp71_ = FALSE;
+                       gboolean _tmp72_ = FALSE;
+                       _tmp70_ = m;
+                       _tmp71_ = vala_method_get_is_abstract (_tmp70_);
+                       _tmp72_ = _tmp71_;
+                       _tmp66_ = !_tmp72_;
                } else {
-                       _tmp55_ = FALSE;
+                       _tmp66_ = FALSE;
                }
-               if (_tmp55_) {
-                       ValaMethod* _tmp62_ = NULL;
-                       gboolean _tmp63_ = FALSE;
-                       gboolean _tmp64_ = FALSE;
-                       _tmp62_ = m;
-                       _tmp63_ = vala_method_get_is_virtual (_tmp62_);
-                       _tmp64_ = _tmp63_;
-                       _tmp54_ = !_tmp64_;
+               if (_tmp66_) {
+                       ValaMethod* _tmp73_ = NULL;
+                       gboolean _tmp74_ = FALSE;
+                       gboolean _tmp75_ = FALSE;
+                       _tmp73_ = m;
+                       _tmp74_ = vala_method_get_is_virtual (_tmp73_);
+                       _tmp75_ = _tmp74_;
+                       _tmp65_ = !_tmp75_;
                } else {
-                       _tmp54_ = FALSE;
+                       _tmp65_ = FALSE;
                }
-               _tmp50_ = _tmp54_;
+               _tmp61_ = _tmp65_;
        }
-       if (_tmp50_) {
+       if (_tmp61_) {
                ValaMethod* base_method = NULL;
-               ValaMethod* _tmp65_ = NULL;
-               gboolean _tmp66_ = FALSE;
-               gboolean _tmp67_ = FALSE;
-               ValaObjectType* base_expression_type = NULL;
                ValaMethod* _tmp76_ = NULL;
-               ValaSymbol* _tmp77_ = NULL;
-               ValaSymbol* _tmp78_ = NULL;
-               ValaObjectType* _tmp79_ = NULL;
+               gboolean _tmp77_ = FALSE;
+               gboolean _tmp78_ = FALSE;
+               ValaObjectType* base_expression_type = NULL;
+               ValaMethod* _tmp87_ = NULL;
+               ValaSymbol* _tmp88_ = NULL;
+               ValaSymbol* _tmp89_ = NULL;
+               ValaObjectType* _tmp90_ = NULL;
                ValaObjectTypeSymbol* type_symbol = NULL;
-               ValaMethod* _tmp80_ = NULL;
-               ValaSymbol* _tmp81_ = NULL;
-               ValaSymbol* _tmp82_ = NULL;
-               ValaObjectTypeSymbol* _tmp83_ = NULL;
+               ValaMethod* _tmp91_ = NULL;
+               ValaSymbol* _tmp92_ = NULL;
+               ValaSymbol* _tmp93_ = NULL;
+               ValaObjectTypeSymbol* _tmp94_ = NULL;
                ValaObjectType* self_target_type = NULL;
-               ValaObjectTypeSymbol* _tmp84_ = NULL;
-               ValaObjectType* _tmp85_ = NULL;
+               ValaObjectTypeSymbol* _tmp95_ = NULL;
+               ValaObjectType* _tmp96_ = NULL;
                ValaCCodeExpression* cself = NULL;
-               ValaObjectType* _tmp86_ = NULL;
-               ValaCCodeIdentifier* _tmp87_ = NULL;
-               ValaCCodeIdentifier* _tmp88_ = NULL;
-               ValaGLibValue* _tmp89_ = NULL;
-               ValaGLibValue* _tmp90_ = NULL;
-               ValaObjectType* _tmp91_ = NULL;
-               ValaMethod* _tmp92_ = NULL;
-               ValaTargetValue* _tmp93_ = NULL;
-               ValaTargetValue* _tmp94_ = NULL;
-               ValaCCodeExpression* _tmp95_ = NULL;
-               ValaCCodeExpression* _tmp96_ = NULL;
-               ValaCCodeFunction* _tmp97_ = NULL;
-               ValaCCodeFunction* _tmp98_ = NULL;
-               ValaObjectTypeSymbol* _tmp99_ = NULL;
-               gchar* _tmp100_ = NULL;
-               gchar* _tmp101_ = NULL;
-               gchar* _tmp102_ = NULL;
-               gchar* _tmp103_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp104_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp105_ = NULL;
-               ValaCCodeFunction* _tmp106_ = NULL;
-               ValaCCodeFunction* _tmp107_ = NULL;
-               ValaCCodeIdentifier* _tmp108_ = NULL;
-               ValaCCodeIdentifier* _tmp109_ = NULL;
-               ValaCCodeExpression* _tmp110_ = NULL;
-               _tmp65_ = m;
-               _tmp66_ = vala_method_get_overrides (_tmp65_);
-               _tmp67_ = _tmp66_;
-               if (_tmp67_) {
-                       ValaMethod* _tmp68_ = NULL;
-                       ValaMethod* _tmp69_ = NULL;
-                       ValaMethod* _tmp70_ = NULL;
-                       ValaMethod* _tmp71_ = NULL;
-                       _tmp68_ = m;
-                       _tmp69_ = vala_method_get_base_method (_tmp68_);
-                       _tmp70_ = _tmp69_;
-                       _tmp71_ = _vala_code_node_ref0 (_tmp70_);
+               ValaObjectType* _tmp97_ = NULL;
+               ValaCCodeIdentifier* _tmp98_ = NULL;
+               ValaCCodeIdentifier* _tmp99_ = NULL;
+               ValaGLibValue* _tmp100_ = NULL;
+               ValaGLibValue* _tmp101_ = NULL;
+               ValaObjectType* _tmp102_ = NULL;
+               ValaMethod* _tmp103_ = NULL;
+               ValaTargetValue* _tmp104_ = NULL;
+               ValaTargetValue* _tmp105_ = NULL;
+               ValaCCodeExpression* _tmp106_ = NULL;
+               ValaCCodeExpression* _tmp107_ = NULL;
+               ValaCCodeFunction* _tmp108_ = NULL;
+               ValaCCodeFunction* _tmp109_ = NULL;
+               ValaObjectTypeSymbol* _tmp110_ = NULL;
+               gchar* _tmp111_ = NULL;
+               gchar* _tmp112_ = NULL;
+               gchar* _tmp113_ = NULL;
+               gchar* _tmp114_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp115_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp116_ = NULL;
+               ValaCCodeFunction* _tmp117_ = NULL;
+               ValaCCodeFunction* _tmp118_ = NULL;
+               ValaCCodeIdentifier* _tmp119_ = NULL;
+               ValaCCodeIdentifier* _tmp120_ = NULL;
+               ValaCCodeExpression* _tmp121_ = NULL;
+               _tmp76_ = m;
+               _tmp77_ = vala_method_get_overrides (_tmp76_);
+               _tmp78_ = _tmp77_;
+               if (_tmp78_) {
+                       ValaMethod* _tmp79_ = NULL;
+                       ValaMethod* _tmp80_ = NULL;
+                       ValaMethod* _tmp81_ = NULL;
+                       ValaMethod* _tmp82_ = NULL;
+                       _tmp79_ = m;
+                       _tmp80_ = vala_method_get_base_method (_tmp79_);
+                       _tmp81_ = _tmp80_;
+                       _tmp82_ = _vala_code_node_ref0 (_tmp81_);
                        _vala_code_node_unref0 (base_method);
-                       base_method = _tmp71_;
+                       base_method = _tmp82_;
                } else {
-                       ValaMethod* _tmp72_ = NULL;
-                       ValaMethod* _tmp73_ = NULL;
-                       ValaMethod* _tmp74_ = NULL;
-                       ValaMethod* _tmp75_ = NULL;
-                       _tmp72_ = m;
-                       _tmp73_ = vala_method_get_base_interface_method (_tmp72_);
-                       _tmp74_ = _tmp73_;
-                       _tmp75_ = _vala_code_node_ref0 (_tmp74_);
+                       ValaMethod* _tmp83_ = NULL;
+                       ValaMethod* _tmp84_ = NULL;
+                       ValaMethod* _tmp85_ = NULL;
+                       ValaMethod* _tmp86_ = NULL;
+                       _tmp83_ = m;
+                       _tmp84_ = vala_method_get_base_interface_method (_tmp83_);
+                       _tmp85_ = _tmp84_;
+                       _tmp86_ = _vala_code_node_ref0 (_tmp85_);
                        _vala_code_node_unref0 (base_method);
-                       base_method = _tmp75_;
+                       base_method = _tmp86_;
                }
-               _tmp76_ = base_method;
-               _tmp77_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp76_);
-               _tmp78_ = _tmp77_;
-               _tmp79_ = vala_object_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp78_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
-               base_expression_type = _tmp79_;
-               _tmp80_ = m;
-               _tmp81_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp80_);
-               _tmp82_ = _tmp81_;
-               _tmp83_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp82_, VALA_TYPE_OBJECT_TYPE_SYMBOL) ? ((ValaObjectTypeSymbol*) _tmp82_) : NULL);
-               type_symbol = _tmp83_;
-               _tmp84_ = type_symbol;
-               _tmp85_ = vala_object_type_new (_tmp84_);
-               self_target_type = _tmp85_;
-               _tmp86_ = base_expression_type;
-               _tmp87_ = vala_ccode_identifier_new ("base");
-               _tmp88_ = _tmp87_;
-               _tmp89_ = vala_glib_value_new ((ValaDataType*) _tmp86_, (ValaCCodeExpression*) _tmp88_, TRUE);
-               _tmp90_ = _tmp89_;
-               _tmp91_ = self_target_type;
-               _tmp92_ = m;
-               _tmp93_ = vala_ccode_base_module_transform_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp90_, (ValaDataType*) _tmp91_, (ValaCodeNode*) _tmp92_);
-               _tmp94_ = _tmp93_;
-               _tmp95_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp94_);
-               _tmp96_ = _tmp95_;
-               _vala_target_value_unref0 (_tmp94_);
-               _vala_target_value_unref0 (_tmp90_);
-               _vala_ccode_node_unref0 (_tmp88_);
-               cself = _tmp96_;
-               _tmp97_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp98_ = _tmp97_;
-               _tmp99_ = type_symbol;
-               _tmp100_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp99_);
+               _tmp87_ = base_method;
+               _tmp88_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp87_);
+               _tmp89_ = _tmp88_;
+               _tmp90_ = vala_object_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp89_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
+               base_expression_type = _tmp90_;
+               _tmp91_ = m;
+               _tmp92_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp91_);
+               _tmp93_ = _tmp92_;
+               _tmp94_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp93_, VALA_TYPE_OBJECT_TYPE_SYMBOL) ? ((ValaObjectTypeSymbol*) _tmp93_) : NULL);
+               type_symbol = _tmp94_;
+               _tmp95_ = type_symbol;
+               _tmp96_ = vala_object_type_new (_tmp95_);
+               self_target_type = _tmp96_;
+               _tmp97_ = base_expression_type;
+               _tmp98_ = vala_ccode_identifier_new ("base");
+               _tmp99_ = _tmp98_;
+               _tmp100_ = vala_glib_value_new ((ValaDataType*) _tmp97_, (ValaCCodeExpression*) _tmp99_, TRUE);
                _tmp101_ = _tmp100_;
-               _tmp102_ = g_strdup_printf ("%s *", _tmp101_);
-               _tmp103_ = _tmp102_;
-               _tmp104_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
+               _tmp102_ = self_target_type;
+               _tmp103_ = m;
+               _tmp104_ = vala_ccode_base_module_transform_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp101_, (ValaDataType*) _tmp102_, (ValaCodeNode*) _tmp103_);
                _tmp105_ = _tmp104_;
-               vala_ccode_function_add_declaration (_tmp98_, _tmp103_, (ValaCCodeDeclarator*) _tmp105_, 0);
-               _vala_ccode_node_unref0 (_tmp105_);
-               _g_free0 (_tmp103_);
-               _g_free0 (_tmp101_);
-               _tmp106_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp106_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp105_);
                _tmp107_ = _tmp106_;
-               _tmp108_ = vala_ccode_identifier_new ("self");
+               _vala_target_value_unref0 (_tmp105_);
+               _vala_target_value_unref0 (_tmp101_);
+               _vala_ccode_node_unref0 (_tmp99_);
+               cself = _tmp107_;
+               _tmp108_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                _tmp109_ = _tmp108_;
-               _tmp110_ = cself;
-               vala_ccode_function_add_assignment (_tmp107_, (ValaCCodeExpression*) _tmp109_, _tmp110_);
-               _vala_ccode_node_unref0 (_tmp109_);
+               _tmp110_ = type_symbol;
+               _tmp111_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp110_);
+               _tmp112_ = _tmp111_;
+               _tmp113_ = g_strdup_printf ("%s *", _tmp112_);
+               _tmp114_ = _tmp113_;
+               _tmp115_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
+               _tmp116_ = _tmp115_;
+               vala_ccode_function_add_declaration (_tmp109_, _tmp114_, (ValaCCodeDeclarator*) _tmp116_, 0);
+               _vala_ccode_node_unref0 (_tmp116_);
+               _g_free0 (_tmp114_);
+               _g_free0 (_tmp112_);
+               _tmp117_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp118_ = _tmp117_;
+               _tmp119_ = vala_ccode_identifier_new ("self");
+               _tmp120_ = _tmp119_;
+               _tmp121_ = cself;
+               vala_ccode_function_add_assignment (_tmp118_, (ValaCCodeExpression*) _tmp120_, _tmp121_);
+               _vala_ccode_node_unref0 (_tmp120_);
                _vala_ccode_node_unref0 (cself);
                _vala_code_node_unref0 (self_target_type);
                _vala_code_node_unref0 (type_symbol);
                _vala_code_node_unref0 (base_expression_type);
                _vala_code_node_unref0 (base_method);
        }
-       _tmp111_ = vala_ccode_identifier_new ("g_slice_new0");
-       _tmp112_ = _tmp111_;
-       _tmp113_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp112_);
-       _tmp114_ = _tmp113_;
-       _vala_ccode_node_unref0 (_tmp112_);
-       dataalloc = _tmp114_;
-       _tmp115_ = dataalloc;
-       _tmp116_ = dataname;
-       _tmp117_ = vala_ccode_identifier_new (_tmp116_);
-       _tmp118_ = _tmp117_;
-       vala_ccode_function_call_add_argument (_tmp115_, (ValaCCodeExpression*) _tmp118_);
-       _vala_ccode_node_unref0 (_tmp118_);
-       _tmp119_ = vala_ccode_identifier_new ("_data_");
-       data_var = _tmp119_;
-       _tmp120_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp121_ = _tmp120_;
-       _tmp122_ = dataname;
-       _tmp123_ = g_strconcat (_tmp122_, "*", NULL);
-       _tmp124_ = _tmp123_;
-       _tmp125_ = vala_ccode_variable_declarator_new ("_data_", NULL, NULL);
-       _tmp126_ = _tmp125_;
-       vala_ccode_function_add_declaration (_tmp121_, _tmp124_, (ValaCCodeDeclarator*) _tmp126_, 0);
-       _vala_ccode_node_unref0 (_tmp126_);
-       _g_free0 (_tmp124_);
-       _tmp127_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp128_ = _tmp127_;
-       _tmp129_ = data_var;
-       _tmp130_ = dataalloc;
-       vala_ccode_function_add_assignment (_tmp128_, (ValaCCodeExpression*) _tmp129_, (ValaCCodeExpression*) _tmp130_);
-       _tmp131_ = vala_ccode_identifier_new ("g_simple_async_result_new");
+       _tmp122_ = vala_ccode_identifier_new ("g_slice_new0");
+       _tmp123_ = _tmp122_;
+       _tmp124_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp123_);
+       _tmp125_ = _tmp124_;
+       _vala_ccode_node_unref0 (_tmp123_);
+       dataalloc = _tmp125_;
+       _tmp126_ = dataalloc;
+       _tmp127_ = dataname;
+       _tmp128_ = vala_ccode_identifier_new (_tmp127_);
+       _tmp129_ = _tmp128_;
+       vala_ccode_function_call_add_argument (_tmp126_, (ValaCCodeExpression*) _tmp129_);
+       _vala_ccode_node_unref0 (_tmp129_);
+       _tmp130_ = vala_ccode_identifier_new ("_data_");
+       data_var = _tmp130_;
+       _tmp131_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp132_ = _tmp131_;
-       _tmp133_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp132_);
-       _tmp134_ = _tmp133_;
-       _vala_ccode_node_unref0 (_tmp132_);
-       create_result = _tmp134_;
-       _tmp135_ = m;
-       _tmp136_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp135_);
+       _tmp133_ = dataname;
+       _tmp134_ = g_strconcat (_tmp133_, "*", NULL);
+       _tmp135_ = _tmp134_;
+       _tmp136_ = vala_ccode_variable_declarator_new ("_data_", NULL, NULL);
        _tmp137_ = _tmp136_;
-       _tmp138_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp137_, VALA_TYPE_TYPESYMBOL) ? ((ValaTypeSymbol*) _tmp137_) : NULL);
-       t = _tmp138_;
-       _tmp142_ = m;
-       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp142_, VALA_TYPE_CREATION_METHOD)) {
-               ValaMethod* _tmp143_ = NULL;
-               ValaMemberBinding _tmp144_ = 0;
-               ValaMemberBinding _tmp145_ = 0;
-               _tmp143_ = m;
-               _tmp144_ = vala_method_get_binding (_tmp143_);
-               _tmp145_ = _tmp144_;
-               _tmp141_ = _tmp145_ == VALA_MEMBER_BINDING_INSTANCE;
+       vala_ccode_function_add_declaration (_tmp132_, _tmp135_, (ValaCCodeDeclarator*) _tmp137_, 0);
+       _vala_ccode_node_unref0 (_tmp137_);
+       _g_free0 (_tmp135_);
+       _tmp138_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp139_ = _tmp138_;
+       _tmp140_ = data_var;
+       _tmp141_ = dataalloc;
+       vala_ccode_function_add_assignment (_tmp139_, (ValaCCodeExpression*) _tmp140_, (ValaCCodeExpression*) _tmp141_);
+       _tmp142_ = vala_ccode_identifier_new ("g_simple_async_result_new");
+       _tmp143_ = _tmp142_;
+       _tmp144_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp143_);
+       _tmp145_ = _tmp144_;
+       _vala_ccode_node_unref0 (_tmp143_);
+       create_result = _tmp145_;
+       _tmp146_ = m;
+       _tmp147_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp146_);
+       _tmp148_ = _tmp147_;
+       _tmp149_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp148_, VALA_TYPE_TYPESYMBOL) ? ((ValaTypeSymbol*) _tmp148_) : NULL);
+       t = _tmp149_;
+       _tmp153_ = m;
+       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp153_, VALA_TYPE_CREATION_METHOD)) {
+               ValaMethod* _tmp154_ = NULL;
+               ValaMemberBinding _tmp155_ = 0;
+               ValaMemberBinding _tmp156_ = 0;
+               _tmp154_ = m;
+               _tmp155_ = vala_method_get_binding (_tmp154_);
+               _tmp156_ = _tmp155_;
+               _tmp152_ = _tmp156_ == VALA_MEMBER_BINDING_INSTANCE;
        } else {
-               _tmp141_ = FALSE;
+               _tmp152_ = FALSE;
        }
-       if (_tmp141_) {
-               ValaTypeSymbol* _tmp146_ = NULL;
-               _tmp146_ = t;
-               _tmp140_ = _tmp146_ != NULL;
+       if (_tmp152_) {
+               ValaTypeSymbol* _tmp157_ = NULL;
+               _tmp157_ = t;
+               _tmp151_ = _tmp157_ != NULL;
        } else {
-               _tmp140_ = FALSE;
+               _tmp151_ = FALSE;
        }
-       if (_tmp140_) {
-               ValaTypeSymbol* _tmp147_ = NULL;
-               ValaTypeSymbol* _tmp148_ = NULL;
-               gboolean _tmp149_ = FALSE;
-               _tmp147_ = t;
-               _tmp148_ = ((ValaCCodeBaseModule*) self)->gobject_type;
-               _tmp149_ = vala_typesymbol_is_subtype_of (_tmp147_, _tmp148_);
-               _tmp139_ = _tmp149_;
+       if (_tmp151_) {
+               ValaTypeSymbol* _tmp158_ = NULL;
+               ValaTypeSymbol* _tmp159_ = NULL;
+               gboolean _tmp160_ = FALSE;
+               _tmp158_ = t;
+               _tmp159_ = ((ValaCCodeBaseModule*) self)->gobject_type;
+               _tmp160_ = vala_typesymbol_is_subtype_of (_tmp158_, _tmp159_);
+               _tmp150_ = _tmp160_;
        } else {
-               _tmp139_ = FALSE;
+               _tmp150_ = FALSE;
        }
-       if (_tmp139_) {
+       if (_tmp150_) {
                ValaCCodeFunctionCall* gobject_cast = NULL;
-               ValaCCodeIdentifier* _tmp150_ = NULL;
-               ValaCCodeIdentifier* _tmp151_ = NULL;
-               ValaCCodeFunctionCall* _tmp152_ = NULL;
-               ValaCCodeFunctionCall* _tmp153_ = NULL;
-               ValaCCodeFunctionCall* _tmp154_ = NULL;
-               ValaCCodeIdentifier* _tmp155_ = NULL;
-               ValaCCodeIdentifier* _tmp156_ = NULL;
-               ValaCCodeFunctionCall* _tmp157_ = NULL;
-               ValaCCodeFunctionCall* _tmp158_ = NULL;
-               _tmp150_ = vala_ccode_identifier_new ("G_OBJECT");
-               _tmp151_ = _tmp150_;
-               _tmp152_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp151_);
-               _tmp153_ = _tmp152_;
-               _vala_ccode_node_unref0 (_tmp151_);
-               gobject_cast = _tmp153_;
-               _tmp154_ = gobject_cast;
-               _tmp155_ = vala_ccode_identifier_new ("self");
-               _tmp156_ = _tmp155_;
-               vala_ccode_function_call_add_argument (_tmp154_, (ValaCCodeExpression*) _tmp156_);
-               _vala_ccode_node_unref0 (_tmp156_);
-               _tmp157_ = create_result;
-               _tmp158_ = gobject_cast;
-               vala_ccode_function_call_add_argument (_tmp157_, (ValaCCodeExpression*) _tmp158_);
+               ValaCCodeIdentifier* _tmp161_ = NULL;
+               ValaCCodeIdentifier* _tmp162_ = NULL;
+               ValaCCodeFunctionCall* _tmp163_ = NULL;
+               ValaCCodeFunctionCall* _tmp164_ = NULL;
+               ValaCCodeFunctionCall* _tmp165_ = NULL;
+               ValaCCodeIdentifier* _tmp166_ = NULL;
+               ValaCCodeIdentifier* _tmp167_ = NULL;
+               ValaCCodeFunctionCall* _tmp168_ = NULL;
+               ValaCCodeFunctionCall* _tmp169_ = NULL;
+               _tmp161_ = vala_ccode_identifier_new ("G_OBJECT");
+               _tmp162_ = _tmp161_;
+               _tmp163_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp162_);
+               _tmp164_ = _tmp163_;
+               _vala_ccode_node_unref0 (_tmp162_);
+               gobject_cast = _tmp164_;
+               _tmp165_ = gobject_cast;
+               _tmp166_ = vala_ccode_identifier_new ("self");
+               _tmp167_ = _tmp166_;
+               vala_ccode_function_call_add_argument (_tmp165_, (ValaCCodeExpression*) _tmp167_);
+               _vala_ccode_node_unref0 (_tmp167_);
+               _tmp168_ = create_result;
+               _tmp169_ = gobject_cast;
+               vala_ccode_function_call_add_argument (_tmp168_, (ValaCCodeExpression*) _tmp169_);
                _vala_ccode_node_unref0 (gobject_cast);
        } else {
-               ValaCodeContext* _tmp159_ = NULL;
-               ValaCodeContext* _tmp160_ = NULL;
-               gboolean _tmp161_ = FALSE;
-               _tmp159_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-               _tmp160_ = _tmp159_;
-               _tmp161_ = vala_code_context_require_glib_version (_tmp160_, 2, 20);
-               if (_tmp161_) {
-                       ValaCCodeFunctionCall* _tmp162_ = NULL;
-                       ValaCCodeConstant* _tmp163_ = NULL;
-                       ValaCCodeConstant* _tmp164_ = NULL;
-                       _tmp162_ = create_result;
-                       _tmp163_ = vala_ccode_constant_new ("NULL");
-                       _tmp164_ = _tmp163_;
-                       vala_ccode_function_call_add_argument (_tmp162_, (ValaCCodeExpression*) _tmp164_);
-                       _vala_ccode_node_unref0 (_tmp164_);
-               } else {
-                       ValaCCodeFunctionCall* object_creation = NULL;
-                       ValaCCodeIdentifier* _tmp165_ = NULL;
-                       ValaCCodeIdentifier* _tmp166_ = NULL;
-                       ValaCCodeFunctionCall* _tmp167_ = NULL;
-                       ValaCCodeFunctionCall* _tmp168_ = NULL;
-                       ValaCCodeFunctionCall* _tmp169_ = NULL;
-                       ValaCCodeConstant* _tmp170_ = NULL;
-                       ValaCCodeConstant* _tmp171_ = NULL;
-                       ValaCCodeFunctionCall* _tmp172_ = NULL;
-                       ValaCCodeConstant* _tmp173_ = NULL;
-                       ValaCCodeConstant* _tmp174_ = NULL;
-                       ValaCCodeFunctionCall* _tmp175_ = NULL;
-                       ValaCCodeConstant* _tmp176_ = NULL;
-                       ValaCCodeConstant* _tmp177_ = NULL;
-                       ValaCCodeFunction* _tmp178_ = NULL;
-                       ValaCCodeFunction* _tmp179_ = NULL;
-                       ValaCCodeIdentifier* _tmp180_ = NULL;
-                       ValaCCodeMemberAccess* _tmp181_ = NULL;
-                       ValaCCodeMemberAccess* _tmp182_ = NULL;
-                       ValaCCodeFunctionCall* _tmp183_ = NULL;
-                       ValaCCodeFunctionCall* _tmp184_ = NULL;
-                       ValaCCodeIdentifier* _tmp185_ = NULL;
-                       ValaCCodeMemberAccess* _tmp186_ = NULL;
-                       ValaCCodeMemberAccess* _tmp187_ = NULL;
-                       _tmp165_ = vala_ccode_identifier_new ("g_object_newv");
-                       _tmp166_ = _tmp165_;
-                       _tmp167_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp166_);
-                       _tmp168_ = _tmp167_;
-                       _vala_ccode_node_unref0 (_tmp166_);
-                       object_creation = _tmp168_;
-                       _tmp169_ = object_creation;
-                       _tmp170_ = vala_ccode_constant_new ("G_TYPE_OBJECT");
-                       _tmp171_ = _tmp170_;
-                       vala_ccode_function_call_add_argument (_tmp169_, (ValaCCodeExpression*) _tmp171_);
-                       _vala_ccode_node_unref0 (_tmp171_);
-                       _tmp172_ = object_creation;
-                       _tmp173_ = vala_ccode_constant_new ("0");
-                       _tmp174_ = _tmp173_;
-                       vala_ccode_function_call_add_argument (_tmp172_, (ValaCCodeExpression*) _tmp174_);
-                       _vala_ccode_node_unref0 (_tmp174_);
-                       _tmp175_ = object_creation;
-                       _tmp176_ = vala_ccode_constant_new ("NULL");
-                       _tmp177_ = _tmp176_;
-                       vala_ccode_function_call_add_argument (_tmp175_, (ValaCCodeExpression*) _tmp177_);
-                       _vala_ccode_node_unref0 (_tmp177_);
-                       _tmp178_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp179_ = _tmp178_;
-                       _tmp180_ = data_var;
-                       _tmp181_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp180_, "_dummy_object_");
-                       _tmp182_ = _tmp181_;
-                       _tmp183_ = object_creation;
-                       vala_ccode_function_add_assignment (_tmp179_, (ValaCCodeExpression*) _tmp182_, (ValaCCodeExpression*) _tmp183_);
-                       _vala_ccode_node_unref0 (_tmp182_);
-                       _tmp184_ = create_result;
-                       _tmp185_ = data_var;
-                       _tmp186_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp185_, "_dummy_object_");
-                       _tmp187_ = _tmp186_;
-                       vala_ccode_function_call_add_argument (_tmp184_, (ValaCCodeExpression*) _tmp187_);
-                       _vala_ccode_node_unref0 (_tmp187_);
-                       _vala_ccode_node_unref0 (object_creation);
-               }
+               ValaCCodeFunctionCall* _tmp170_ = NULL;
+               ValaCCodeConstant* _tmp171_ = NULL;
+               ValaCCodeConstant* _tmp172_ = NULL;
+               _tmp170_ = create_result;
+               _tmp171_ = vala_ccode_constant_new ("NULL");
+               _tmp172_ = _tmp171_;
+               vala_ccode_function_call_add_argument (_tmp170_, (ValaCCodeExpression*) _tmp172_);
+               _vala_ccode_node_unref0 (_tmp172_);
        }
-       _tmp188_ = create_result;
-       _tmp189_ = vala_ccode_identifier_new ("_callback_");
-       _tmp190_ = _tmp189_;
-       vala_ccode_function_call_add_argument (_tmp188_, (ValaCCodeExpression*) _tmp190_);
-       _vala_ccode_node_unref0 (_tmp190_);
-       _tmp191_ = create_result;
-       _tmp192_ = vala_ccode_identifier_new ("_user_data_");
-       _tmp193_ = _tmp192_;
-       vala_ccode_function_call_add_argument (_tmp191_, (ValaCCodeExpression*) _tmp193_);
-       _vala_ccode_node_unref0 (_tmp193_);
-       _tmp194_ = create_result;
-       _tmp195_ = m;
-       _tmp196_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp195_);
-       _tmp197_ = _tmp196_;
-       _tmp198_ = vala_ccode_identifier_new (_tmp197_);
-       _tmp199_ = _tmp198_;
-       vala_ccode_function_call_add_argument (_tmp194_, (ValaCCodeExpression*) _tmp199_);
-       _vala_ccode_node_unref0 (_tmp199_);
-       _g_free0 (_tmp197_);
-       _tmp200_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp201_ = _tmp200_;
-       _tmp202_ = data_var;
-       _tmp203_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp202_, "_async_result");
+       _tmp173_ = create_result;
+       _tmp174_ = vala_ccode_identifier_new ("_callback_");
+       _tmp175_ = _tmp174_;
+       vala_ccode_function_call_add_argument (_tmp173_, (ValaCCodeExpression*) _tmp175_);
+       _vala_ccode_node_unref0 (_tmp175_);
+       _tmp176_ = create_result;
+       _tmp177_ = vala_ccode_identifier_new ("_user_data_");
+       _tmp178_ = _tmp177_;
+       vala_ccode_function_call_add_argument (_tmp176_, (ValaCCodeExpression*) _tmp178_);
+       _vala_ccode_node_unref0 (_tmp178_);
+       _tmp179_ = create_result;
+       _tmp180_ = m;
+       _tmp181_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp180_);
+       _tmp182_ = _tmp181_;
+       _tmp183_ = vala_ccode_identifier_new (_tmp182_);
+       _tmp184_ = _tmp183_;
+       vala_ccode_function_call_add_argument (_tmp179_, (ValaCCodeExpression*) _tmp184_);
+       _vala_ccode_node_unref0 (_tmp184_);
+       _g_free0 (_tmp182_);
+       _tmp185_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp186_ = _tmp185_;
+       _tmp187_ = data_var;
+       _tmp188_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp187_, "_async_result");
+       _tmp189_ = _tmp188_;
+       _tmp190_ = create_result;
+       vala_ccode_function_add_assignment (_tmp186_, (ValaCCodeExpression*) _tmp189_, (ValaCCodeExpression*) _tmp190_);
+       _vala_ccode_node_unref0 (_tmp189_);
+       _tmp191_ = vala_ccode_identifier_new ("g_simple_async_result_set_op_res_gpointer");
+       _tmp192_ = _tmp191_;
+       _tmp193_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp192_);
+       _tmp194_ = _tmp193_;
+       _vala_ccode_node_unref0 (_tmp192_);
+       set_op_res_call = _tmp194_;
+       _tmp195_ = set_op_res_call;
+       _tmp196_ = data_var;
+       _tmp197_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp196_, "_async_result");
+       _tmp198_ = _tmp197_;
+       vala_ccode_function_call_add_argument (_tmp195_, (ValaCCodeExpression*) _tmp198_);
+       _vala_ccode_node_unref0 (_tmp198_);
+       _tmp199_ = set_op_res_call;
+       _tmp200_ = data_var;
+       vala_ccode_function_call_add_argument (_tmp199_, (ValaCCodeExpression*) _tmp200_);
+       _tmp201_ = set_op_res_call;
+       _tmp202_ = m;
+       _tmp203_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp202_);
        _tmp204_ = _tmp203_;
-       _tmp205_ = create_result;
-       vala_ccode_function_add_assignment (_tmp201_, (ValaCCodeExpression*) _tmp204_, (ValaCCodeExpression*) _tmp205_);
-       _vala_ccode_node_unref0 (_tmp204_);
-       _tmp206_ = vala_ccode_identifier_new ("g_simple_async_result_set_op_res_gpointer");
-       _tmp207_ = _tmp206_;
-       _tmp208_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp207_);
-       _tmp209_ = _tmp208_;
-       _vala_ccode_node_unref0 (_tmp207_);
-       set_op_res_call = _tmp209_;
-       _tmp210_ = set_op_res_call;
-       _tmp211_ = data_var;
-       _tmp212_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp211_, "_async_result");
-       _tmp213_ = _tmp212_;
-       vala_ccode_function_call_add_argument (_tmp210_, (ValaCCodeExpression*) _tmp213_);
-       _vala_ccode_node_unref0 (_tmp213_);
-       _tmp214_ = set_op_res_call;
-       _tmp215_ = data_var;
-       vala_ccode_function_call_add_argument (_tmp214_, (ValaCCodeExpression*) _tmp215_);
-       _tmp216_ = set_op_res_call;
-       _tmp217_ = m;
-       _tmp218_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp217_);
-       _tmp219_ = _tmp218_;
-       _tmp220_ = g_strconcat (_tmp219_, "_data_free", NULL);
-       _tmp221_ = _tmp220_;
-       _tmp222_ = vala_ccode_identifier_new (_tmp221_);
-       _tmp223_ = _tmp222_;
-       vala_ccode_function_call_add_argument (_tmp216_, (ValaCCodeExpression*) _tmp223_);
-       _vala_ccode_node_unref0 (_tmp223_);
-       _g_free0 (_tmp221_);
-       _g_free0 (_tmp219_);
-       _tmp224_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp225_ = _tmp224_;
-       _tmp226_ = set_op_res_call;
-       vala_ccode_function_add_expression (_tmp225_, (ValaCCodeExpression*) _tmp226_);
-       _tmp227_ = m;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp227_, VALA_TYPE_CREATION_METHOD)) {
-               ValaCCodeFunction* _tmp228_ = NULL;
-               ValaCCodeFunction* _tmp229_ = NULL;
-               ValaCCodeIdentifier* _tmp230_ = NULL;
-               ValaCCodeMemberAccess* _tmp231_ = NULL;
-               ValaCCodeMemberAccess* _tmp232_ = NULL;
-               ValaCCodeIdentifier* _tmp233_ = NULL;
-               ValaCCodeIdentifier* _tmp234_ = NULL;
-               _tmp228_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp229_ = _tmp228_;
-               _tmp230_ = data_var;
-               _tmp231_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp230_, "object_type");
-               _tmp232_ = _tmp231_;
-               _tmp233_ = vala_ccode_identifier_new ("object_type");
-               _tmp234_ = _tmp233_;
-               vala_ccode_function_add_assignment (_tmp229_, (ValaCCodeExpression*) _tmp232_, (ValaCCodeExpression*) _tmp234_);
-               _vala_ccode_node_unref0 (_tmp234_);
-               _vala_ccode_node_unref0 (_tmp232_);
+       _tmp205_ = g_strconcat (_tmp204_, "_data_free", NULL);
+       _tmp206_ = _tmp205_;
+       _tmp207_ = vala_ccode_identifier_new (_tmp206_);
+       _tmp208_ = _tmp207_;
+       vala_ccode_function_call_add_argument (_tmp201_, (ValaCCodeExpression*) _tmp208_);
+       _vala_ccode_node_unref0 (_tmp208_);
+       _g_free0 (_tmp206_);
+       _g_free0 (_tmp204_);
+       _tmp209_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp210_ = _tmp209_;
+       _tmp211_ = set_op_res_call;
+       vala_ccode_function_add_expression (_tmp210_, (ValaCCodeExpression*) _tmp211_);
+       _tmp212_ = m;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp212_, VALA_TYPE_CREATION_METHOD)) {
+               ValaCCodeFunction* _tmp213_ = NULL;
+               ValaCCodeFunction* _tmp214_ = NULL;
+               ValaCCodeIdentifier* _tmp215_ = NULL;
+               ValaCCodeMemberAccess* _tmp216_ = NULL;
+               ValaCCodeMemberAccess* _tmp217_ = NULL;
+               ValaCCodeIdentifier* _tmp218_ = NULL;
+               ValaCCodeIdentifier* _tmp219_ = NULL;
+               _tmp213_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp214_ = _tmp213_;
+               _tmp215_ = data_var;
+               _tmp216_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp215_, "object_type");
+               _tmp217_ = _tmp216_;
+               _tmp218_ = vala_ccode_identifier_new ("object_type");
+               _tmp219_ = _tmp218_;
+               vala_ccode_function_add_assignment (_tmp214_, (ValaCCodeExpression*) _tmp217_, (ValaCCodeExpression*) _tmp219_);
+               _vala_ccode_node_unref0 (_tmp219_);
+               _vala_ccode_node_unref0 (_tmp217_);
        } else {
-               ValaMethod* _tmp235_ = NULL;
-               ValaMemberBinding _tmp236_ = 0;
-               ValaMemberBinding _tmp237_ = 0;
-               _tmp235_ = m;
-               _tmp236_ = vala_method_get_binding (_tmp235_);
-               _tmp237_ = _tmp236_;
-               if (_tmp237_ == VALA_MEMBER_BINDING_INSTANCE) {
+               ValaMethod* _tmp220_ = NULL;
+               ValaMemberBinding _tmp221_ = 0;
+               ValaMemberBinding _tmp222_ = 0;
+               _tmp220_ = m;
+               _tmp221_ = vala_method_get_binding (_tmp220_);
+               _tmp222_ = _tmp221_;
+               if (_tmp222_ == VALA_MEMBER_BINDING_INSTANCE) {
                        ValaDataType* this_type = NULL;
-                       ValaMethod* _tmp238_ = NULL;
-                       ValaParameter* _tmp239_ = NULL;
-                       ValaParameter* _tmp240_ = NULL;
-                       ValaDataType* _tmp241_ = NULL;
-                       ValaDataType* _tmp242_ = NULL;
-                       ValaDataType* _tmp243_ = NULL;
-                       ValaDataType* _tmp244_ = NULL;
+                       ValaMethod* _tmp223_ = NULL;
+                       ValaParameter* _tmp224_ = NULL;
+                       ValaParameter* _tmp225_ = NULL;
+                       ValaDataType* _tmp226_ = NULL;
+                       ValaDataType* _tmp227_ = NULL;
+                       ValaDataType* _tmp228_ = NULL;
+                       ValaDataType* _tmp229_ = NULL;
                        ValaCCodeExpression* cself = NULL;
-                       ValaCCodeIdentifier* _tmp245_ = NULL;
-                       ValaDataType* _tmp246_ = NULL;
-                       gboolean _tmp247_ = FALSE;
-                       ValaDataType* _tmp250_ = NULL;
-                       gboolean _tmp251_ = FALSE;
-                       ValaCCodeFunction* _tmp266_ = NULL;
-                       ValaCCodeFunction* _tmp267_ = NULL;
-                       ValaCCodeIdentifier* _tmp268_ = NULL;
-                       ValaCCodeMemberAccess* _tmp269_ = NULL;
-                       ValaCCodeMemberAccess* _tmp270_ = NULL;
-                       ValaCCodeExpression* _tmp271_ = NULL;
-                       _tmp238_ = m;
-                       _tmp239_ = vala_method_get_this_parameter (_tmp238_);
-                       _tmp240_ = _tmp239_;
-                       _tmp241_ = vala_variable_get_variable_type ((ValaVariable*) _tmp240_);
-                       _tmp242_ = _tmp241_;
-                       _tmp243_ = vala_data_type_copy (_tmp242_);
-                       this_type = _tmp243_;
-                       _tmp244_ = this_type;
-                       vala_data_type_set_value_owned (_tmp244_, TRUE);
-                       _tmp245_ = vala_ccode_identifier_new ("self");
-                       cself = (ValaCCodeExpression*) _tmp245_;
-                       _tmp246_ = this_type;
-                       _tmp247_ = vala_data_type_is_real_non_null_struct_type (_tmp246_);
-                       if (_tmp247_) {
-                               ValaCCodeExpression* _tmp248_ = NULL;
-                               ValaCCodeUnaryExpression* _tmp249_ = NULL;
-                               _tmp248_ = cself;
-                               _tmp249_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp248_);
+                       ValaCCodeIdentifier* _tmp230_ = NULL;
+                       ValaDataType* _tmp231_ = NULL;
+                       gboolean _tmp232_ = FALSE;
+                       ValaDataType* _tmp235_ = NULL;
+                       gboolean _tmp236_ = FALSE;
+                       ValaCCodeFunction* _tmp251_ = NULL;
+                       ValaCCodeFunction* _tmp252_ = NULL;
+                       ValaCCodeIdentifier* _tmp253_ = NULL;
+                       ValaCCodeMemberAccess* _tmp254_ = NULL;
+                       ValaCCodeMemberAccess* _tmp255_ = NULL;
+                       ValaCCodeExpression* _tmp256_ = NULL;
+                       _tmp223_ = m;
+                       _tmp224_ = vala_method_get_this_parameter (_tmp223_);
+                       _tmp225_ = _tmp224_;
+                       _tmp226_ = vala_variable_get_variable_type ((ValaVariable*) _tmp225_);
+                       _tmp227_ = _tmp226_;
+                       _tmp228_ = vala_data_type_copy (_tmp227_);
+                       this_type = _tmp228_;
+                       _tmp229_ = this_type;
+                       vala_data_type_set_value_owned (_tmp229_, TRUE);
+                       _tmp230_ = vala_ccode_identifier_new ("self");
+                       cself = (ValaCCodeExpression*) _tmp230_;
+                       _tmp231_ = this_type;
+                       _tmp232_ = vala_data_type_is_real_non_null_struct_type (_tmp231_);
+                       if (_tmp232_) {
+                               ValaCCodeExpression* _tmp233_ = NULL;
+                               ValaCCodeUnaryExpression* _tmp234_ = NULL;
+                               _tmp233_ = cself;
+                               _tmp234_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp233_);
                                _vala_ccode_node_unref0 (cself);
-                               cself = (ValaCCodeExpression*) _tmp249_;
+                               cself = (ValaCCodeExpression*) _tmp234_;
                        }
-                       _tmp250_ = this_type;
-                       _tmp251_ = vala_ccode_base_module_requires_copy ((ValaCCodeBaseModule*) self, _tmp250_);
-                       if (_tmp251_) {
-                               ValaMethod* _tmp252_ = NULL;
-                               ValaParameter* _tmp253_ = NULL;
-                               ValaParameter* _tmp254_ = NULL;
-                               ValaDataType* _tmp255_ = NULL;
-                               ValaDataType* _tmp256_ = NULL;
-                               ValaCCodeExpression* _tmp257_ = NULL;
-                               ValaGLibValue* _tmp258_ = NULL;
-                               ValaGLibValue* _tmp259_ = NULL;
-                               ValaMethod* _tmp260_ = NULL;
-                               ValaParameter* _tmp261_ = NULL;
-                               ValaParameter* _tmp262_ = NULL;
-                               ValaTargetValue* _tmp263_ = NULL;
-                               ValaTargetValue* _tmp264_ = NULL;
-                               ValaCCodeExpression* _tmp265_ = NULL;
-                               _tmp252_ = m;
-                               _tmp253_ = vala_method_get_this_parameter (_tmp252_);
-                               _tmp254_ = _tmp253_;
-                               _tmp255_ = vala_variable_get_variable_type ((ValaVariable*) _tmp254_);
-                               _tmp256_ = _tmp255_;
-                               _tmp257_ = cself;
-                               _tmp258_ = vala_glib_value_new (_tmp256_, _tmp257_, TRUE);
-                               _tmp259_ = _tmp258_;
-                               _tmp260_ = m;
-                               _tmp261_ = vala_method_get_this_parameter (_tmp260_);
-                               _tmp262_ = _tmp261_;
-                               _tmp263_ = vala_ccode_base_module_copy_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp259_, (ValaCodeNode*) _tmp262_);
-                               _tmp264_ = _tmp263_;
-                               _tmp265_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp264_);
+                       _tmp235_ = this_type;
+                       _tmp236_ = vala_ccode_base_module_requires_copy ((ValaCCodeBaseModule*) self, _tmp235_);
+                       if (_tmp236_) {
+                               ValaMethod* _tmp237_ = NULL;
+                               ValaParameter* _tmp238_ = NULL;
+                               ValaParameter* _tmp239_ = NULL;
+                               ValaDataType* _tmp240_ = NULL;
+                               ValaDataType* _tmp241_ = NULL;
+                               ValaCCodeExpression* _tmp242_ = NULL;
+                               ValaGLibValue* _tmp243_ = NULL;
+                               ValaGLibValue* _tmp244_ = NULL;
+                               ValaMethod* _tmp245_ = NULL;
+                               ValaParameter* _tmp246_ = NULL;
+                               ValaParameter* _tmp247_ = NULL;
+                               ValaTargetValue* _tmp248_ = NULL;
+                               ValaTargetValue* _tmp249_ = NULL;
+                               ValaCCodeExpression* _tmp250_ = NULL;
+                               _tmp237_ = m;
+                               _tmp238_ = vala_method_get_this_parameter (_tmp237_);
+                               _tmp239_ = _tmp238_;
+                               _tmp240_ = vala_variable_get_variable_type ((ValaVariable*) _tmp239_);
+                               _tmp241_ = _tmp240_;
+                               _tmp242_ = cself;
+                               _tmp243_ = vala_glib_value_new (_tmp241_, _tmp242_, TRUE);
+                               _tmp244_ = _tmp243_;
+                               _tmp245_ = m;
+                               _tmp246_ = vala_method_get_this_parameter (_tmp245_);
+                               _tmp247_ = _tmp246_;
+                               _tmp248_ = vala_ccode_base_module_copy_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp244_, (ValaCodeNode*) _tmp247_);
+                               _tmp249_ = _tmp248_;
+                               _tmp250_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp249_);
                                _vala_ccode_node_unref0 (cself);
-                               cself = _tmp265_;
-                               _vala_target_value_unref0 (_tmp264_);
-                               _vala_target_value_unref0 (_tmp259_);
+                               cself = _tmp250_;
+                               _vala_target_value_unref0 (_tmp249_);
+                               _vala_target_value_unref0 (_tmp244_);
                        }
-                       _tmp266_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp267_ = _tmp266_;
-                       _tmp268_ = data_var;
-                       _tmp269_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp268_, "self");
-                       _tmp270_ = _tmp269_;
-                       _tmp271_ = cself;
-                       vala_ccode_function_add_assignment (_tmp267_, (ValaCCodeExpression*) _tmp270_, _tmp271_);
-                       _vala_ccode_node_unref0 (_tmp270_);
+                       _tmp251_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp252_ = _tmp251_;
+                       _tmp253_ = data_var;
+                       _tmp254_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp253_, "self");
+                       _tmp255_ = _tmp254_;
+                       _tmp256_ = cself;
+                       vala_ccode_function_add_assignment (_tmp252_, (ValaCCodeExpression*) _tmp255_, _tmp256_);
+                       _vala_ccode_node_unref0 (_tmp255_);
                        _vala_ccode_node_unref0 (cself);
                        _vala_code_node_unref0 (this_type);
                }
        }
-       _tmp272_ = ((ValaCCodeBaseModule*) self)->emit_context;
-       _tmp273_ = m;
-       vala_ccode_base_module_emit_context_push_symbol (_tmp272_, (ValaSymbol*) _tmp273_);
+       _tmp257_ = ((ValaCCodeBaseModule*) self)->emit_context;
+       _tmp258_ = m;
+       vala_ccode_base_module_emit_context_push_symbol (_tmp257_, (ValaSymbol*) _tmp258_);
        {
                ValaList* _param_list = NULL;
-               ValaMethod* _tmp274_ = NULL;
-               ValaList* _tmp275_ = NULL;
+               ValaMethod* _tmp259_ = NULL;
+               ValaList* _tmp260_ = NULL;
                gint _param_size = 0;
-               ValaList* _tmp276_ = NULL;
-               gint _tmp277_ = 0;
-               gint _tmp278_ = 0;
+               ValaList* _tmp261_ = NULL;
+               gint _tmp262_ = 0;
+               gint _tmp263_ = 0;
                gint _param_index = 0;
-               _tmp274_ = m;
-               _tmp275_ = vala_method_get_parameters (_tmp274_);
-               _param_list = _tmp275_;
-               _tmp276_ = _param_list;
-               _tmp277_ = vala_collection_get_size ((ValaCollection*) _tmp276_);
-               _tmp278_ = _tmp277_;
-               _param_size = _tmp278_;
+               _tmp259_ = m;
+               _tmp260_ = vala_method_get_parameters (_tmp259_);
+               _param_list = _tmp260_;
+               _tmp261_ = _param_list;
+               _tmp262_ = vala_collection_get_size ((ValaCollection*) _tmp261_);
+               _tmp263_ = _tmp262_;
+               _param_size = _tmp263_;
                _param_index = -1;
                while (TRUE) {
-                       gint _tmp279_ = 0;
-                       gint _tmp280_ = 0;
-                       gint _tmp281_ = 0;
+                       gint _tmp264_ = 0;
+                       gint _tmp265_ = 0;
+                       gint _tmp266_ = 0;
                        ValaParameter* param = NULL;
-                       ValaList* _tmp282_ = NULL;
-                       gint _tmp283_ = 0;
-                       gpointer _tmp284_ = NULL;
-                       ValaParameter* _tmp285_ = NULL;
-                       ValaParameterDirection _tmp286_ = 0;
-                       ValaParameterDirection _tmp287_ = 0;
-                       _tmp279_ = _param_index;
-                       _param_index = _tmp279_ + 1;
-                       _tmp280_ = _param_index;
-                       _tmp281_ = _param_size;
-                       if (!(_tmp280_ < _tmp281_)) {
+                       ValaList* _tmp267_ = NULL;
+                       gint _tmp268_ = 0;
+                       gpointer _tmp269_ = NULL;
+                       ValaParameter* _tmp270_ = NULL;
+                       ValaParameterDirection _tmp271_ = 0;
+                       ValaParameterDirection _tmp272_ = 0;
+                       _tmp264_ = _param_index;
+                       _param_index = _tmp264_ + 1;
+                       _tmp265_ = _param_index;
+                       _tmp266_ = _param_size;
+                       if (!(_tmp265_ < _tmp266_)) {
                                break;
                        }
-                       _tmp282_ = _param_list;
-                       _tmp283_ = _param_index;
-                       _tmp284_ = vala_list_get (_tmp282_, _tmp283_);
-                       param = (ValaParameter*) _tmp284_;
-                       _tmp285_ = param;
-                       _tmp286_ = vala_parameter_get_direction (_tmp285_);
-                       _tmp287_ = _tmp286_;
-                       if (_tmp287_ != VALA_PARAMETER_DIRECTION_OUT) {
+                       _tmp267_ = _param_list;
+                       _tmp268_ = _param_index;
+                       _tmp269_ = vala_list_get (_tmp267_, _tmp268_);
+                       param = (ValaParameter*) _tmp269_;
+                       _tmp270_ = param;
+                       _tmp271_ = vala_parameter_get_direction (_tmp270_);
+                       _tmp272_ = _tmp271_;
+                       if (_tmp272_ != VALA_PARAMETER_DIRECTION_OUT) {
                                gboolean old_captured = FALSE;
-                               ValaParameter* _tmp288_ = NULL;
-                               gboolean _tmp289_ = FALSE;
-                               gboolean _tmp290_ = FALSE;
-                               ValaParameter* _tmp291_ = NULL;
-                               ValaMethod* _tmp292_ = NULL;
-                               ValaMethod* _tmp293_ = NULL;
+                               ValaParameter* _tmp273_ = NULL;
+                               gboolean _tmp274_ = FALSE;
+                               gboolean _tmp275_ = FALSE;
+                               ValaParameter* _tmp276_ = NULL;
+                               ValaMethod* _tmp277_ = NULL;
+                               ValaMethod* _tmp278_ = NULL;
                                ValaTargetValue* value = NULL;
-                               ValaParameter* _tmp294_ = NULL;
-                               ValaDataType* _tmp295_ = NULL;
-                               ValaDataType* _tmp296_ = NULL;
-                               gboolean _tmp297_ = FALSE;
-                               gboolean _tmp298_ = FALSE;
-                               ValaMethod* _tmp303_ = NULL;
-                               ValaMethod* _tmp304_ = NULL;
-                               ValaParameter* _tmp305_ = NULL;
-                               ValaTargetValue* _tmp306_ = NULL;
-                               ValaParameter* _tmp307_ = NULL;
-                               gboolean _tmp308_ = FALSE;
-                               _tmp288_ = param;
-                               _tmp289_ = vala_parameter_get_captured (_tmp288_);
-                               _tmp290_ = _tmp289_;
-                               old_captured = _tmp290_;
-                               _tmp291_ = param;
-                               vala_parameter_set_captured (_tmp291_, FALSE);
-                               _tmp292_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
-                               _tmp293_ = _tmp292_;
-                               vala_method_set_coroutine (_tmp293_, FALSE);
-                               _tmp294_ = param;
-                               _tmp295_ = vala_variable_get_variable_type ((ValaVariable*) _tmp294_);
-                               _tmp296_ = _tmp295_;
-                               _tmp297_ = vala_data_type_get_value_owned (_tmp296_);
-                               _tmp298_ = _tmp297_;
-                               if (_tmp298_) {
-                                       ValaParameter* _tmp299_ = NULL;
-                                       ValaTargetValue* _tmp300_ = NULL;
-                                       _tmp299_ = param;
-                                       _tmp300_ = vala_ccode_base_module_get_parameter_cvalue ((ValaCCodeBaseModule*) self, _tmp299_);
+                               ValaParameter* _tmp279_ = NULL;
+                               ValaDataType* _tmp280_ = NULL;
+                               ValaDataType* _tmp281_ = NULL;
+                               gboolean _tmp282_ = FALSE;
+                               gboolean _tmp283_ = FALSE;
+                               ValaMethod* _tmp288_ = NULL;
+                               ValaMethod* _tmp289_ = NULL;
+                               ValaParameter* _tmp290_ = NULL;
+                               ValaTargetValue* _tmp291_ = NULL;
+                               ValaParameter* _tmp292_ = NULL;
+                               gboolean _tmp293_ = FALSE;
+                               _tmp273_ = param;
+                               _tmp274_ = vala_parameter_get_captured (_tmp273_);
+                               _tmp275_ = _tmp274_;
+                               old_captured = _tmp275_;
+                               _tmp276_ = param;
+                               vala_parameter_set_captured (_tmp276_, FALSE);
+                               _tmp277_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
+                               _tmp278_ = _tmp277_;
+                               vala_method_set_coroutine (_tmp278_, FALSE);
+                               _tmp279_ = param;
+                               _tmp280_ = vala_variable_get_variable_type ((ValaVariable*) _tmp279_);
+                               _tmp281_ = _tmp280_;
+                               _tmp282_ = vala_data_type_get_value_owned (_tmp281_);
+                               _tmp283_ = _tmp282_;
+                               if (_tmp283_) {
+                                       ValaParameter* _tmp284_ = NULL;
+                                       ValaTargetValue* _tmp285_ = NULL;
+                                       _tmp284_ = param;
+                                       _tmp285_ = vala_ccode_base_module_get_parameter_cvalue ((ValaCCodeBaseModule*) self, _tmp284_);
                                        _vala_target_value_unref0 (value);
-                                       value = _tmp300_;
+                                       value = _tmp285_;
                                } else {
-                                       ValaParameter* _tmp301_ = NULL;
-                                       ValaTargetValue* _tmp302_ = NULL;
-                                       _tmp301_ = param;
-                                       _tmp302_ = vala_code_generator_load_parameter ((ValaCodeGenerator*) self, _tmp301_);
+                                       ValaParameter* _tmp286_ = NULL;
+                                       ValaTargetValue* _tmp287_ = NULL;
+                                       _tmp286_ = param;
+                                       _tmp287_ = vala_code_generator_load_parameter ((ValaCodeGenerator*) self, _tmp286_);
                                        _vala_target_value_unref0 (value);
-                                       value = _tmp302_;
+                                       value = _tmp287_;
                                }
-                               _tmp303_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
-                               _tmp304_ = _tmp303_;
-                               vala_method_set_coroutine (_tmp304_, TRUE);
-                               _tmp305_ = param;
-                               _tmp306_ = value;
-                               vala_code_generator_store_parameter ((ValaCodeGenerator*) self, _tmp305_, _tmp306_, FALSE);
-                               _tmp307_ = param;
-                               _tmp308_ = old_captured;
-                               vala_parameter_set_captured (_tmp307_, _tmp308_);
+                               _tmp288_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
+                               _tmp289_ = _tmp288_;
+                               vala_method_set_coroutine (_tmp289_, TRUE);
+                               _tmp290_ = param;
+                               _tmp291_ = value;
+                               vala_code_generator_store_parameter ((ValaCodeGenerator*) self, _tmp290_, _tmp291_, FALSE);
+                               _tmp292_ = param;
+                               _tmp293_ = old_captured;
+                               vala_parameter_set_captured (_tmp292_, _tmp293_);
                                _vala_target_value_unref0 (value);
                        }
                        _vala_code_node_unref0 (param);
                }
                _vala_iterable_unref0 (_param_list);
        }
-       _tmp309_ = ((ValaCCodeBaseModule*) self)->emit_context;
-       vala_ccode_base_module_emit_context_pop_symbol (_tmp309_);
+       _tmp294_ = ((ValaCCodeBaseModule*) self)->emit_context;
+       vala_ccode_base_module_emit_context_pop_symbol (_tmp294_);
        {
                ValaList* _type_param_list = NULL;
-               ValaMethod* _tmp310_ = NULL;
-               ValaList* _tmp311_ = NULL;
+               ValaMethod* _tmp295_ = NULL;
+               ValaList* _tmp296_ = NULL;
                gint _type_param_size = 0;
-               ValaList* _tmp312_ = NULL;
-               gint _tmp313_ = 0;
-               gint _tmp314_ = 0;
+               ValaList* _tmp297_ = NULL;
+               gint _tmp298_ = 0;
+               gint _tmp299_ = 0;
                gint _type_param_index = 0;
-               _tmp310_ = m;
-               _tmp311_ = vala_method_get_type_parameters (_tmp310_);
-               _type_param_list = _tmp311_;
-               _tmp312_ = _type_param_list;
-               _tmp313_ = vala_collection_get_size ((ValaCollection*) _tmp312_);
-               _tmp314_ = _tmp313_;
-               _type_param_size = _tmp314_;
+               _tmp295_ = m;
+               _tmp296_ = vala_method_get_type_parameters (_tmp295_);
+               _type_param_list = _tmp296_;
+               _tmp297_ = _type_param_list;
+               _tmp298_ = vala_collection_get_size ((ValaCollection*) _tmp297_);
+               _tmp299_ = _tmp298_;
+               _type_param_size = _tmp299_;
                _type_param_index = -1;
                while (TRUE) {
-                       gint _tmp315_ = 0;
-                       gint _tmp316_ = 0;
-                       gint _tmp317_ = 0;
+                       gint _tmp300_ = 0;
+                       gint _tmp301_ = 0;
+                       gint _tmp302_ = 0;
                        ValaTypeParameter* type_param = NULL;
-                       ValaList* _tmp318_ = NULL;
-                       gint _tmp319_ = 0;
-                       gpointer _tmp320_ = NULL;
+                       ValaList* _tmp303_ = NULL;
+                       gint _tmp304_ = 0;
+                       gpointer _tmp305_ = NULL;
                        gchar* type = NULL;
-                       ValaTypeParameter* _tmp321_ = NULL;
+                       ValaTypeParameter* _tmp306_ = NULL;
+                       const gchar* _tmp307_ = NULL;
+                       const gchar* _tmp308_ = NULL;
+                       gchar* _tmp309_ = NULL;
+                       gchar* _tmp310_ = NULL;
+                       gchar* _tmp311_ = NULL;
+                       gchar* _tmp312_ = NULL;
+                       gchar* dup_func = NULL;
+                       ValaTypeParameter* _tmp313_ = NULL;
+                       const gchar* _tmp314_ = NULL;
+                       const gchar* _tmp315_ = NULL;
+                       gchar* _tmp316_ = NULL;
+                       gchar* _tmp317_ = NULL;
+                       gchar* _tmp318_ = NULL;
+                       gchar* _tmp319_ = NULL;
+                       gchar* destroy_func = NULL;
+                       ValaTypeParameter* _tmp320_ = NULL;
+                       const gchar* _tmp321_ = NULL;
                        const gchar* _tmp322_ = NULL;
-                       const gchar* _tmp323_ = NULL;
+                       gchar* _tmp323_ = NULL;
                        gchar* _tmp324_ = NULL;
                        gchar* _tmp325_ = NULL;
                        gchar* _tmp326_ = NULL;
-                       gchar* _tmp327_ = NULL;
-                       gchar* dup_func = NULL;
-                       ValaTypeParameter* _tmp328_ = NULL;
-                       const gchar* _tmp329_ = NULL;
+                       ValaCCodeFunction* _tmp327_ = NULL;
+                       ValaCCodeFunction* _tmp328_ = NULL;
+                       ValaCCodeIdentifier* _tmp329_ = NULL;
                        const gchar* _tmp330_ = NULL;
-                       gchar* _tmp331_ = NULL;
-                       gchar* _tmp332_ = NULL;
-                       gchar* _tmp333_ = NULL;
-                       gchar* _tmp334_ = NULL;
-                       gchar* destroy_func = NULL;
-                       ValaTypeParameter* _tmp335_ = NULL;
-                       const gchar* _tmp336_ = NULL;
-                       const gchar* _tmp337_ = NULL;
-                       gchar* _tmp338_ = NULL;
-                       gchar* _tmp339_ = NULL;
-                       gchar* _tmp340_ = NULL;
-                       gchar* _tmp341_ = NULL;
-                       ValaCCodeFunction* _tmp342_ = NULL;
-                       ValaCCodeFunction* _tmp343_ = NULL;
+                       ValaCCodeMemberAccess* _tmp331_ = NULL;
+                       ValaCCodeMemberAccess* _tmp332_ = NULL;
+                       const gchar* _tmp333_ = NULL;
+                       ValaCCodeIdentifier* _tmp334_ = NULL;
+                       ValaCCodeIdentifier* _tmp335_ = NULL;
+                       ValaCCodeFunction* _tmp336_ = NULL;
+                       ValaCCodeFunction* _tmp337_ = NULL;
+                       ValaCCodeIdentifier* _tmp338_ = NULL;
+                       const gchar* _tmp339_ = NULL;
+                       ValaCCodeMemberAccess* _tmp340_ = NULL;
+                       ValaCCodeMemberAccess* _tmp341_ = NULL;
+                       const gchar* _tmp342_ = NULL;
+                       ValaCCodeIdentifier* _tmp343_ = NULL;
                        ValaCCodeIdentifier* _tmp344_ = NULL;
-                       const gchar* _tmp345_ = NULL;
-                       ValaCCodeMemberAccess* _tmp346_ = NULL;
-                       ValaCCodeMemberAccess* _tmp347_ = NULL;
+                       ValaCCodeFunction* _tmp345_ = NULL;
+                       ValaCCodeFunction* _tmp346_ = NULL;
+                       ValaCCodeIdentifier* _tmp347_ = NULL;
                        const gchar* _tmp348_ = NULL;
-                       ValaCCodeIdentifier* _tmp349_ = NULL;
-                       ValaCCodeIdentifier* _tmp350_ = NULL;
-                       ValaCCodeFunction* _tmp351_ = NULL;
-                       ValaCCodeFunction* _tmp352_ = NULL;
+                       ValaCCodeMemberAccess* _tmp349_ = NULL;
+                       ValaCCodeMemberAccess* _tmp350_ = NULL;
+                       const gchar* _tmp351_ = NULL;
+                       ValaCCodeIdentifier* _tmp352_ = NULL;
                        ValaCCodeIdentifier* _tmp353_ = NULL;
-                       const gchar* _tmp354_ = NULL;
-                       ValaCCodeMemberAccess* _tmp355_ = NULL;
-                       ValaCCodeMemberAccess* _tmp356_ = NULL;
-                       const gchar* _tmp357_ = NULL;
-                       ValaCCodeIdentifier* _tmp358_ = NULL;
-                       ValaCCodeIdentifier* _tmp359_ = NULL;
-                       ValaCCodeFunction* _tmp360_ = NULL;
-                       ValaCCodeFunction* _tmp361_ = NULL;
-                       ValaCCodeIdentifier* _tmp362_ = NULL;
-                       const gchar* _tmp363_ = NULL;
-                       ValaCCodeMemberAccess* _tmp364_ = NULL;
-                       ValaCCodeMemberAccess* _tmp365_ = NULL;
-                       const gchar* _tmp366_ = NULL;
-                       ValaCCodeIdentifier* _tmp367_ = NULL;
-                       ValaCCodeIdentifier* _tmp368_ = NULL;
-                       _tmp315_ = _type_param_index;
-                       _type_param_index = _tmp315_ + 1;
-                       _tmp316_ = _type_param_index;
-                       _tmp317_ = _type_param_size;
-                       if (!(_tmp316_ < _tmp317_)) {
+                       _tmp300_ = _type_param_index;
+                       _type_param_index = _tmp300_ + 1;
+                       _tmp301_ = _type_param_index;
+                       _tmp302_ = _type_param_size;
+                       if (!(_tmp301_ < _tmp302_)) {
                                break;
                        }
-                       _tmp318_ = _type_param_list;
-                       _tmp319_ = _type_param_index;
-                       _tmp320_ = vala_list_get (_tmp318_, _tmp319_);
-                       type_param = (ValaTypeParameter*) _tmp320_;
-                       _tmp321_ = type_param;
-                       _tmp322_ = vala_symbol_get_name ((ValaSymbol*) _tmp321_);
-                       _tmp323_ = _tmp322_;
-                       _tmp324_ = g_utf8_strdown (_tmp323_, (gssize) (-1));
-                       _tmp325_ = _tmp324_;
-                       _tmp326_ = g_strdup_printf ("%s_type", _tmp325_);
-                       _tmp327_ = _tmp326_;
-                       _g_free0 (_tmp325_);
-                       type = _tmp327_;
-                       _tmp328_ = type_param;
-                       _tmp329_ = vala_symbol_get_name ((ValaSymbol*) _tmp328_);
-                       _tmp330_ = _tmp329_;
-                       _tmp331_ = g_utf8_strdown (_tmp330_, (gssize) (-1));
+                       _tmp303_ = _type_param_list;
+                       _tmp304_ = _type_param_index;
+                       _tmp305_ = vala_list_get (_tmp303_, _tmp304_);
+                       type_param = (ValaTypeParameter*) _tmp305_;
+                       _tmp306_ = type_param;
+                       _tmp307_ = vala_symbol_get_name ((ValaSymbol*) _tmp306_);
+                       _tmp308_ = _tmp307_;
+                       _tmp309_ = g_utf8_strdown (_tmp308_, (gssize) (-1));
+                       _tmp310_ = _tmp309_;
+                       _tmp311_ = g_strdup_printf ("%s_type", _tmp310_);
+                       _tmp312_ = _tmp311_;
+                       _g_free0 (_tmp310_);
+                       type = _tmp312_;
+                       _tmp313_ = type_param;
+                       _tmp314_ = vala_symbol_get_name ((ValaSymbol*) _tmp313_);
+                       _tmp315_ = _tmp314_;
+                       _tmp316_ = g_utf8_strdown (_tmp315_, (gssize) (-1));
+                       _tmp317_ = _tmp316_;
+                       _tmp318_ = g_strdup_printf ("%s_dup_func", _tmp317_);
+                       _tmp319_ = _tmp318_;
+                       _g_free0 (_tmp317_);
+                       dup_func = _tmp319_;
+                       _tmp320_ = type_param;
+                       _tmp321_ = vala_symbol_get_name ((ValaSymbol*) _tmp320_);
+                       _tmp322_ = _tmp321_;
+                       _tmp323_ = g_utf8_strdown (_tmp322_, (gssize) (-1));
+                       _tmp324_ = _tmp323_;
+                       _tmp325_ = g_strdup_printf ("%s_destroy_func", _tmp324_);
+                       _tmp326_ = _tmp325_;
+                       _g_free0 (_tmp324_);
+                       destroy_func = _tmp326_;
+                       _tmp327_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp328_ = _tmp327_;
+                       _tmp329_ = data_var;
+                       _tmp330_ = type;
+                       _tmp331_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp329_, _tmp330_);
                        _tmp332_ = _tmp331_;
-                       _tmp333_ = g_strdup_printf ("%s_dup_func", _tmp332_);
-                       _tmp334_ = _tmp333_;
-                       _g_free0 (_tmp332_);
-                       dup_func = _tmp334_;
-                       _tmp335_ = type_param;
-                       _tmp336_ = vala_symbol_get_name ((ValaSymbol*) _tmp335_);
+                       _tmp333_ = type;
+                       _tmp334_ = vala_ccode_identifier_new (_tmp333_);
+                       _tmp335_ = _tmp334_;
+                       vala_ccode_function_add_assignment (_tmp328_, (ValaCCodeExpression*) _tmp332_, (ValaCCodeExpression*) _tmp335_);
+                       _vala_ccode_node_unref0 (_tmp335_);
+                       _vala_ccode_node_unref0 (_tmp332_);
+                       _tmp336_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp337_ = _tmp336_;
-                       _tmp338_ = g_utf8_strdown (_tmp337_, (gssize) (-1));
-                       _tmp339_ = _tmp338_;
-                       _tmp340_ = g_strdup_printf ("%s_destroy_func", _tmp339_);
+                       _tmp338_ = data_var;
+                       _tmp339_ = dup_func;
+                       _tmp340_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp338_, _tmp339_);
                        _tmp341_ = _tmp340_;
-                       _g_free0 (_tmp339_);
-                       destroy_func = _tmp341_;
-                       _tmp342_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp343_ = _tmp342_;
-                       _tmp344_ = data_var;
-                       _tmp345_ = type;
-                       _tmp346_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp344_, _tmp345_);
-                       _tmp347_ = _tmp346_;
-                       _tmp348_ = type;
-                       _tmp349_ = vala_ccode_identifier_new (_tmp348_);
+                       _tmp342_ = dup_func;
+                       _tmp343_ = vala_ccode_identifier_new (_tmp342_);
+                       _tmp344_ = _tmp343_;
+                       vala_ccode_function_add_assignment (_tmp337_, (ValaCCodeExpression*) _tmp341_, (ValaCCodeExpression*) _tmp344_);
+                       _vala_ccode_node_unref0 (_tmp344_);
+                       _vala_ccode_node_unref0 (_tmp341_);
+                       _tmp345_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp346_ = _tmp345_;
+                       _tmp347_ = data_var;
+                       _tmp348_ = destroy_func;
+                       _tmp349_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp347_, _tmp348_);
                        _tmp350_ = _tmp349_;
-                       vala_ccode_function_add_assignment (_tmp343_, (ValaCCodeExpression*) _tmp347_, (ValaCCodeExpression*) _tmp350_);
+                       _tmp351_ = destroy_func;
+                       _tmp352_ = vala_ccode_identifier_new (_tmp351_);
+                       _tmp353_ = _tmp352_;
+                       vala_ccode_function_add_assignment (_tmp346_, (ValaCCodeExpression*) _tmp350_, (ValaCCodeExpression*) _tmp353_);
+                       _vala_ccode_node_unref0 (_tmp353_);
                        _vala_ccode_node_unref0 (_tmp350_);
-                       _vala_ccode_node_unref0 (_tmp347_);
-                       _tmp351_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp352_ = _tmp351_;
-                       _tmp353_ = data_var;
-                       _tmp354_ = dup_func;
-                       _tmp355_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp353_, _tmp354_);
-                       _tmp356_ = _tmp355_;
-                       _tmp357_ = dup_func;
-                       _tmp358_ = vala_ccode_identifier_new (_tmp357_);
-                       _tmp359_ = _tmp358_;
-                       vala_ccode_function_add_assignment (_tmp352_, (ValaCCodeExpression*) _tmp356_, (ValaCCodeExpression*) _tmp359_);
-                       _vala_ccode_node_unref0 (_tmp359_);
-                       _vala_ccode_node_unref0 (_tmp356_);
-                       _tmp360_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp361_ = _tmp360_;
-                       _tmp362_ = data_var;
-                       _tmp363_ = destroy_func;
-                       _tmp364_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp362_, _tmp363_);
-                       _tmp365_ = _tmp364_;
-                       _tmp366_ = destroy_func;
-                       _tmp367_ = vala_ccode_identifier_new (_tmp366_);
-                       _tmp368_ = _tmp367_;
-                       vala_ccode_function_add_assignment (_tmp361_, (ValaCCodeExpression*) _tmp365_, (ValaCCodeExpression*) _tmp368_);
-                       _vala_ccode_node_unref0 (_tmp368_);
-                       _vala_ccode_node_unref0 (_tmp365_);
                        _g_free0 (destroy_func);
                        _g_free0 (dup_func);
                        _g_free0 (type);
@@ -2619,27 +2462,27 @@ static void vala_gasync_module_generate_async_function (ValaGAsyncModule* self,
                }
                _vala_iterable_unref0 (_type_param_list);
        }
-       _tmp369_ = m;
-       _tmp370_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp369_);
-       _tmp371_ = _tmp370_;
-       _tmp372_ = g_strconcat (_tmp371_, "_co", NULL);
-       _tmp373_ = _tmp372_;
-       _tmp374_ = vala_ccode_identifier_new (_tmp373_);
-       _tmp375_ = _tmp374_;
-       _tmp376_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp375_);
-       _tmp377_ = _tmp376_;
-       _vala_ccode_node_unref0 (_tmp375_);
-       _g_free0 (_tmp373_);
-       _g_free0 (_tmp371_);
-       ccall = _tmp377_;
-       _tmp378_ = data_var;
-       vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp378_);
-       _tmp379_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp380_ = _tmp379_;
-       vala_ccode_function_add_expression (_tmp380_, (ValaCCodeExpression*) ccall);
-       _tmp381_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp382_ = asyncfunc;
-       vala_ccode_file_add_function (_tmp381_, _tmp382_);
+       _tmp354_ = m;
+       _tmp355_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp354_);
+       _tmp356_ = _tmp355_;
+       _tmp357_ = g_strconcat (_tmp356_, "_co", NULL);
+       _tmp358_ = _tmp357_;
+       _tmp359_ = vala_ccode_identifier_new (_tmp358_);
+       _tmp360_ = _tmp359_;
+       _tmp361_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp360_);
+       _tmp362_ = _tmp361_;
+       _vala_ccode_node_unref0 (_tmp360_);
+       _g_free0 (_tmp358_);
+       _g_free0 (_tmp356_);
+       ccall = _tmp362_;
+       _tmp363_ = data_var;
+       vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp363_);
+       _tmp364_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp365_ = _tmp364_;
+       vala_ccode_function_add_expression (_tmp365_, (ValaCCodeExpression*) ccall);
+       _tmp366_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp367_ = asyncfunc;
+       vala_ccode_file_add_function (_tmp366_, _tmp367_);
        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
        _vala_ccode_node_unref0 (ccall);
        _vala_ccode_node_unref0 (set_op_res_call);
@@ -2847,30 +2690,30 @@ static void vala_gasync_module_real_generate_method_declaration (ValaCCodeBaseMo
                ValaHashMap* _tmp26_ = NULL;
                ValaMethod* _tmp27_ = NULL;
                gboolean _tmp28_ = FALSE;
-               gboolean _tmp33_ = FALSE;
-               gboolean _tmp34_ = FALSE;
-               ValaMethod* _tmp35_ = NULL;
+               gboolean _tmp44_ = FALSE;
+               gboolean _tmp45_ = FALSE;
+               ValaMethod* _tmp46_ = NULL;
                ValaCCodeFunction* finishfunc = NULL;
-               ValaMethod* _tmp51_ = NULL;
-               gchar* _tmp52_ = NULL;
-               gchar* _tmp53_ = NULL;
-               ValaCCodeFunction* _tmp54_ = NULL;
-               ValaCCodeFunction* _tmp55_ = NULL;
-               GHashFunc _tmp56_ = NULL;
-               GEqualFunc _tmp57_ = NULL;
-               GEqualFunc _tmp58_ = NULL;
-               ValaHashMap* _tmp59_ = NULL;
-               GHashFunc _tmp60_ = NULL;
-               GEqualFunc _tmp61_ = NULL;
-               GEqualFunc _tmp62_ = NULL;
-               ValaHashMap* _tmp63_ = NULL;
-               ValaMethod* _tmp64_ = NULL;
-               gboolean _tmp65_ = FALSE;
-               gboolean _tmp70_ = FALSE;
-               gboolean _tmp71_ = FALSE;
-               ValaMethod* _tmp72_ = NULL;
-               gboolean _tmp88_ = FALSE;
-               ValaMethod* _tmp89_ = NULL;
+               ValaMethod* _tmp62_ = NULL;
+               gchar* _tmp63_ = NULL;
+               gchar* _tmp64_ = NULL;
+               ValaCCodeFunction* _tmp65_ = NULL;
+               ValaCCodeFunction* _tmp66_ = NULL;
+               GHashFunc _tmp67_ = NULL;
+               GEqualFunc _tmp68_ = NULL;
+               GEqualFunc _tmp69_ = NULL;
+               ValaHashMap* _tmp70_ = NULL;
+               GHashFunc _tmp71_ = NULL;
+               GEqualFunc _tmp72_ = NULL;
+               GEqualFunc _tmp73_ = NULL;
+               ValaHashMap* _tmp74_ = NULL;
+               ValaMethod* _tmp75_ = NULL;
+               gboolean _tmp76_ = FALSE;
+               gboolean _tmp92_ = FALSE;
+               gboolean _tmp93_ = FALSE;
+               ValaMethod* _tmp94_ = NULL;
+               gboolean _tmp110_ = FALSE;
+               ValaMethod* _tmp111_ = NULL;
                _tmp3_ = decl_space;
                _tmp4_ = m;
                _tmp5_ = m;
@@ -2916,244 +2759,364 @@ static void vala_gasync_module_real_generate_method_declaration (ValaCCodeBaseMo
                        _tmp31_ = vala_ccode_function_get_modifiers (_tmp30_);
                        _tmp32_ = _tmp31_;
                        vala_ccode_function_set_modifiers (_tmp30_, _tmp32_ | VALA_CCODE_MODIFIERS_STATIC);
+               } else {
+                       gboolean _tmp33_ = FALSE;
+                       ValaCodeContext* _tmp34_ = NULL;
+                       ValaCodeContext* _tmp35_ = NULL;
+                       gboolean _tmp36_ = FALSE;
+                       gboolean _tmp37_ = FALSE;
+                       _tmp34_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp35_ = _tmp34_;
+                       _tmp36_ = vala_code_context_get_hide_internal (_tmp35_);
+                       _tmp37_ = _tmp36_;
+                       if (_tmp37_) {
+                               ValaMethod* _tmp38_ = NULL;
+                               gboolean _tmp39_ = FALSE;
+                               _tmp38_ = m;
+                               _tmp39_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp38_);
+                               _tmp33_ = _tmp39_;
+                       } else {
+                               _tmp33_ = FALSE;
+                       }
+                       if (_tmp33_) {
+                               ValaCCodeFunction* _tmp40_ = NULL;
+                               ValaCCodeFunction* _tmp41_ = NULL;
+                               ValaCCodeModifiers _tmp42_ = 0;
+                               ValaCCodeModifiers _tmp43_ = 0;
+                               _tmp40_ = asyncfunc;
+                               _tmp41_ = asyncfunc;
+                               _tmp42_ = vala_ccode_function_get_modifiers (_tmp41_);
+                               _tmp43_ = _tmp42_;
+                               vala_ccode_function_set_modifiers (_tmp41_, _tmp43_ | VALA_CCODE_MODIFIERS_INTERNAL);
+                       }
                }
-               _tmp35_ = m;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp35_, VALA_TYPE_CREATION_METHOD)) {
-                       ValaClass* _tmp36_ = NULL;
-                       _tmp36_ = cl;
-                       _tmp34_ = _tmp36_ != NULL;
+               _tmp46_ = m;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp46_, VALA_TYPE_CREATION_METHOD)) {
+                       ValaClass* _tmp47_ = NULL;
+                       _tmp47_ = cl;
+                       _tmp45_ = _tmp47_ != NULL;
                } else {
-                       _tmp34_ = FALSE;
+                       _tmp45_ = FALSE;
                }
-               if (_tmp34_) {
-                       ValaClass* _tmp37_ = NULL;
-                       gboolean _tmp38_ = FALSE;
-                       gboolean _tmp39_ = FALSE;
-                       _tmp37_ = cl;
-                       _tmp38_ = vala_class_get_is_abstract (_tmp37_);
-                       _tmp39_ = _tmp38_;
-                       _tmp33_ = _tmp39_;
+               if (_tmp45_) {
+                       ValaClass* _tmp48_ = NULL;
+                       gboolean _tmp49_ = FALSE;
+                       gboolean _tmp50_ = FALSE;
+                       _tmp48_ = cl;
+                       _tmp49_ = vala_class_get_is_abstract (_tmp48_);
+                       _tmp50_ = _tmp49_;
+                       _tmp44_ = _tmp50_;
                } else {
-                       _tmp33_ = FALSE;
+                       _tmp44_ = FALSE;
                }
-               if (!_tmp33_) {
-                       ValaMethod* _tmp40_ = NULL;
-                       ValaCCodeFile* _tmp41_ = NULL;
-                       ValaHashMap* _tmp42_ = NULL;
-                       ValaCCodeFunction* _tmp43_ = NULL;
-                       ValaHashMap* _tmp44_ = NULL;
-                       ValaCCodeIdentifier* _tmp45_ = NULL;
-                       ValaCCodeIdentifier* _tmp46_ = NULL;
-                       ValaCCodeFunctionCall* _tmp47_ = NULL;
-                       ValaCCodeFunctionCall* _tmp48_ = NULL;
-                       ValaCCodeFile* _tmp49_ = NULL;
-                       ValaCCodeFunction* _tmp50_ = NULL;
-                       _tmp40_ = m;
-                       _tmp41_ = decl_space;
-                       _tmp42_ = cparam_map;
-                       _tmp43_ = asyncfunc;
-                       _tmp44_ = carg_map;
-                       _tmp45_ = vala_ccode_identifier_new ("fake");
-                       _tmp46_ = _tmp45_;
-                       _tmp47_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp46_);
-                       _tmp48_ = _tmp47_;
-                       vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp40_, _tmp41_, (ValaMap*) _tmp42_, _tmp43_, NULL, (ValaMap*) _tmp44_, _tmp48_, 1);
-                       _vala_ccode_node_unref0 (_tmp48_);
-                       _vala_ccode_node_unref0 (_tmp46_);
-                       _tmp49_ = decl_space;
-                       _tmp50_ = asyncfunc;
-                       vala_ccode_file_add_function_declaration (_tmp49_, _tmp50_);
+               if (!_tmp44_) {
+                       ValaMethod* _tmp51_ = NULL;
+                       ValaCCodeFile* _tmp52_ = NULL;
+                       ValaHashMap* _tmp53_ = NULL;
+                       ValaCCodeFunction* _tmp54_ = NULL;
+                       ValaHashMap* _tmp55_ = NULL;
+                       ValaCCodeIdentifier* _tmp56_ = NULL;
+                       ValaCCodeIdentifier* _tmp57_ = NULL;
+                       ValaCCodeFunctionCall* _tmp58_ = NULL;
+                       ValaCCodeFunctionCall* _tmp59_ = NULL;
+                       ValaCCodeFile* _tmp60_ = NULL;
+                       ValaCCodeFunction* _tmp61_ = NULL;
+                       _tmp51_ = m;
+                       _tmp52_ = decl_space;
+                       _tmp53_ = cparam_map;
+                       _tmp54_ = asyncfunc;
+                       _tmp55_ = carg_map;
+                       _tmp56_ = vala_ccode_identifier_new ("fake");
+                       _tmp57_ = _tmp56_;
+                       _tmp58_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp57_);
+                       _tmp59_ = _tmp58_;
+                       vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp51_, _tmp52_, (ValaMap*) _tmp53_, _tmp54_, NULL, (ValaMap*) _tmp55_, _tmp59_, 1);
+                       _vala_ccode_node_unref0 (_tmp59_);
+                       _vala_ccode_node_unref0 (_tmp57_);
+                       _tmp60_ = decl_space;
+                       _tmp61_ = asyncfunc;
+                       vala_ccode_file_add_function_declaration (_tmp60_, _tmp61_);
                }
-               _tmp51_ = m;
-               _tmp52_ = vala_ccode_base_module_get_ccode_finish_name (_tmp51_);
-               _tmp53_ = _tmp52_;
-               _tmp54_ = vala_ccode_function_new (_tmp53_, "void");
-               _tmp55_ = _tmp54_;
-               _g_free0 (_tmp53_);
-               finishfunc = _tmp55_;
-               _tmp56_ = g_direct_hash;
-               _tmp57_ = g_direct_equal;
-               _tmp58_ = g_direct_equal;
-               _tmp59_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp56_, _tmp57_, _tmp58_);
+               _tmp62_ = m;
+               _tmp63_ = vala_ccode_base_module_get_ccode_finish_name (_tmp62_);
+               _tmp64_ = _tmp63_;
+               _tmp65_ = vala_ccode_function_new (_tmp64_, "void");
+               _tmp66_ = _tmp65_;
+               _g_free0 (_tmp64_);
+               finishfunc = _tmp66_;
+               _tmp67_ = g_direct_hash;
+               _tmp68_ = g_direct_equal;
+               _tmp69_ = g_direct_equal;
+               _tmp70_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp67_, _tmp68_, _tmp69_);
                _vala_map_unref0 (cparam_map);
-               cparam_map = _tmp59_;
-               _tmp60_ = g_direct_hash;
-               _tmp61_ = g_direct_equal;
-               _tmp62_ = g_direct_equal;
-               _tmp63_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp60_, _tmp61_, _tmp62_);
+               cparam_map = _tmp70_;
+               _tmp71_ = g_direct_hash;
+               _tmp72_ = g_direct_equal;
+               _tmp73_ = g_direct_equal;
+               _tmp74_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_EXPRESSION, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp71_, _tmp72_, _tmp73_);
                _vala_map_unref0 (carg_map);
-               carg_map = _tmp63_;
-               _tmp64_ = m;
-               _tmp65_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp64_);
-               if (_tmp65_) {
-                       ValaCCodeFunction* _tmp66_ = NULL;
-                       ValaCCodeFunction* _tmp67_ = NULL;
-                       ValaCCodeModifiers _tmp68_ = 0;
-                       ValaCCodeModifiers _tmp69_ = 0;
-                       _tmp66_ = finishfunc;
-                       _tmp67_ = finishfunc;
-                       _tmp68_ = vala_ccode_function_get_modifiers (_tmp67_);
-                       _tmp69_ = _tmp68_;
-                       vala_ccode_function_set_modifiers (_tmp67_, _tmp69_ | VALA_CCODE_MODIFIERS_STATIC);
+               carg_map = _tmp74_;
+               _tmp75_ = m;
+               _tmp76_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp75_);
+               if (_tmp76_) {
+                       ValaCCodeFunction* _tmp77_ = NULL;
+                       ValaCCodeFunction* _tmp78_ = NULL;
+                       ValaCCodeModifiers _tmp79_ = 0;
+                       ValaCCodeModifiers _tmp80_ = 0;
+                       _tmp77_ = finishfunc;
+                       _tmp78_ = finishfunc;
+                       _tmp79_ = vala_ccode_function_get_modifiers (_tmp78_);
+                       _tmp80_ = _tmp79_;
+                       vala_ccode_function_set_modifiers (_tmp78_, _tmp80_ | VALA_CCODE_MODIFIERS_STATIC);
+               } else {
+                       gboolean _tmp81_ = FALSE;
+                       ValaCodeContext* _tmp82_ = NULL;
+                       ValaCodeContext* _tmp83_ = NULL;
+                       gboolean _tmp84_ = FALSE;
+                       gboolean _tmp85_ = FALSE;
+                       _tmp82_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp83_ = _tmp82_;
+                       _tmp84_ = vala_code_context_get_hide_internal (_tmp83_);
+                       _tmp85_ = _tmp84_;
+                       if (_tmp85_) {
+                               ValaMethod* _tmp86_ = NULL;
+                               gboolean _tmp87_ = FALSE;
+                               _tmp86_ = m;
+                               _tmp87_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp86_);
+                               _tmp81_ = _tmp87_;
+                       } else {
+                               _tmp81_ = FALSE;
+                       }
+                       if (_tmp81_) {
+                               ValaCCodeFunction* _tmp88_ = NULL;
+                               ValaCCodeFunction* _tmp89_ = NULL;
+                               ValaCCodeModifiers _tmp90_ = 0;
+                               ValaCCodeModifiers _tmp91_ = 0;
+                               _tmp88_ = finishfunc;
+                               _tmp89_ = finishfunc;
+                               _tmp90_ = vala_ccode_function_get_modifiers (_tmp89_);
+                               _tmp91_ = _tmp90_;
+                               vala_ccode_function_set_modifiers (_tmp89_, _tmp91_ | VALA_CCODE_MODIFIERS_INTERNAL);
+                       }
                }
-               _tmp72_ = m;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp72_, VALA_TYPE_CREATION_METHOD)) {
-                       ValaClass* _tmp73_ = NULL;
-                       _tmp73_ = cl;
-                       _tmp71_ = _tmp73_ != NULL;
+               _tmp94_ = m;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp94_, VALA_TYPE_CREATION_METHOD)) {
+                       ValaClass* _tmp95_ = NULL;
+                       _tmp95_ = cl;
+                       _tmp93_ = _tmp95_ != NULL;
                } else {
-                       _tmp71_ = FALSE;
+                       _tmp93_ = FALSE;
                }
-               if (_tmp71_) {
-                       ValaClass* _tmp74_ = NULL;
-                       gboolean _tmp75_ = FALSE;
-                       gboolean _tmp76_ = FALSE;
-                       _tmp74_ = cl;
-                       _tmp75_ = vala_class_get_is_abstract (_tmp74_);
-                       _tmp76_ = _tmp75_;
-                       _tmp70_ = _tmp76_;
+               if (_tmp93_) {
+                       ValaClass* _tmp96_ = NULL;
+                       gboolean _tmp97_ = FALSE;
+                       gboolean _tmp98_ = FALSE;
+                       _tmp96_ = cl;
+                       _tmp97_ = vala_class_get_is_abstract (_tmp96_);
+                       _tmp98_ = _tmp97_;
+                       _tmp92_ = _tmp98_;
                } else {
-                       _tmp70_ = FALSE;
+                       _tmp92_ = FALSE;
                }
-               if (!_tmp70_) {
-                       ValaMethod* _tmp77_ = NULL;
-                       ValaCCodeFile* _tmp78_ = NULL;
-                       ValaHashMap* _tmp79_ = NULL;
-                       ValaCCodeFunction* _tmp80_ = NULL;
-                       ValaHashMap* _tmp81_ = NULL;
-                       ValaCCodeIdentifier* _tmp82_ = NULL;
-                       ValaCCodeIdentifier* _tmp83_ = NULL;
-                       ValaCCodeFunctionCall* _tmp84_ = NULL;
-                       ValaCCodeFunctionCall* _tmp85_ = NULL;
-                       ValaCCodeFile* _tmp86_ = NULL;
-                       ValaCCodeFunction* _tmp87_ = NULL;
-                       _tmp77_ = m;
-                       _tmp78_ = decl_space;
-                       _tmp79_ = cparam_map;
-                       _tmp80_ = finishfunc;
-                       _tmp81_ = carg_map;
-                       _tmp82_ = vala_ccode_identifier_new ("fake");
-                       _tmp83_ = _tmp82_;
-                       _tmp84_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp83_);
-                       _tmp85_ = _tmp84_;
-                       vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp77_, _tmp78_, (ValaMap*) _tmp79_, _tmp80_, NULL, (ValaMap*) _tmp81_, _tmp85_, 2);
-                       _vala_ccode_node_unref0 (_tmp85_);
-                       _vala_ccode_node_unref0 (_tmp83_);
-                       _tmp86_ = decl_space;
-                       _tmp87_ = finishfunc;
-                       vala_ccode_file_add_function_declaration (_tmp86_, _tmp87_);
+               if (!_tmp92_) {
+                       ValaMethod* _tmp99_ = NULL;
+                       ValaCCodeFile* _tmp100_ = NULL;
+                       ValaHashMap* _tmp101_ = NULL;
+                       ValaCCodeFunction* _tmp102_ = NULL;
+                       ValaHashMap* _tmp103_ = NULL;
+                       ValaCCodeIdentifier* _tmp104_ = NULL;
+                       ValaCCodeIdentifier* _tmp105_ = NULL;
+                       ValaCCodeFunctionCall* _tmp106_ = NULL;
+                       ValaCCodeFunctionCall* _tmp107_ = NULL;
+                       ValaCCodeFile* _tmp108_ = NULL;
+                       ValaCCodeFunction* _tmp109_ = NULL;
+                       _tmp99_ = m;
+                       _tmp100_ = decl_space;
+                       _tmp101_ = cparam_map;
+                       _tmp102_ = finishfunc;
+                       _tmp103_ = carg_map;
+                       _tmp104_ = vala_ccode_identifier_new ("fake");
+                       _tmp105_ = _tmp104_;
+                       _tmp106_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp105_);
+                       _tmp107_ = _tmp106_;
+                       vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp99_, _tmp100_, (ValaMap*) _tmp101_, _tmp102_, NULL, (ValaMap*) _tmp103_, _tmp107_, 2);
+                       _vala_ccode_node_unref0 (_tmp107_);
+                       _vala_ccode_node_unref0 (_tmp105_);
+                       _tmp108_ = decl_space;
+                       _tmp109_ = finishfunc;
+                       vala_ccode_file_add_function_declaration (_tmp108_, _tmp109_);
                }
-               _tmp89_ = m;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp89_, VALA_TYPE_CREATION_METHOD)) {
-                       ValaClass* _tmp90_ = NULL;
-                       _tmp90_ = cl;
-                       _tmp88_ = _tmp90_ != NULL;
+               _tmp111_ = m;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp111_, VALA_TYPE_CREATION_METHOD)) {
+                       ValaClass* _tmp112_ = NULL;
+                       _tmp112_ = cl;
+                       _tmp110_ = _tmp112_ != NULL;
                } else {
-                       _tmp88_ = FALSE;
+                       _tmp110_ = FALSE;
                }
-               if (_tmp88_) {
+               if (_tmp110_) {
                        ValaCCodeFunction* function = NULL;
-                       ValaMethod* _tmp91_ = NULL;
-                       gchar* _tmp92_ = NULL;
-                       gchar* _tmp93_ = NULL;
-                       ValaCCodeFunction* _tmp94_ = NULL;
-                       ValaCCodeFunction* _tmp95_ = NULL;
-                       ValaMethod* _tmp96_ = NULL;
-                       gboolean _tmp97_ = FALSE;
-                       GHashFunc _tmp102_ = NULL;
-                       GEqualFunc _tmp103_ = NULL;
-                       GEqualFunc _tmp104_ = NULL;
-                       ValaHashMap* _tmp105_ = NULL;
-                       ValaMethod* _tmp106_ = NULL;
-                       ValaCCodeFile* _tmp107_ = NULL;
-                       ValaHashMap* _tmp108_ = NULL;
-                       ValaCCodeFunction* _tmp109_ = NULL;
-                       ValaCCodeFile* _tmp110_ = NULL;
-                       ValaCCodeFunction* _tmp111_ = NULL;
-                       ValaMethod* _tmp112_ = NULL;
-                       gchar* _tmp113_ = NULL;
+                       ValaMethod* _tmp113_ = NULL;
                        gchar* _tmp114_ = NULL;
-                       ValaCCodeFunction* _tmp115_ = NULL;
-                       ValaMethod* _tmp116_ = NULL;
-                       gboolean _tmp117_ = FALSE;
-                       GHashFunc _tmp122_ = NULL;
-                       GEqualFunc _tmp123_ = NULL;
-                       GEqualFunc _tmp124_ = NULL;
-                       ValaHashMap* _tmp125_ = NULL;
-                       ValaMethod* _tmp126_ = NULL;
-                       ValaCCodeFile* _tmp127_ = NULL;
-                       ValaHashMap* _tmp128_ = NULL;
-                       ValaCCodeFunction* _tmp129_ = NULL;
-                       ValaCCodeFile* _tmp130_ = NULL;
-                       ValaCCodeFunction* _tmp131_ = NULL;
-                       _tmp91_ = m;
-                       _tmp92_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp91_);
-                       _tmp93_ = _tmp92_;
-                       _tmp94_ = vala_ccode_function_new (_tmp93_, "void");
-                       _tmp95_ = _tmp94_;
-                       _g_free0 (_tmp93_);
-                       function = _tmp95_;
-                       _tmp96_ = m;
-                       _tmp97_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp96_);
-                       if (_tmp97_) {
-                               ValaCCodeFunction* _tmp98_ = NULL;
-                               ValaCCodeFunction* _tmp99_ = NULL;
-                               ValaCCodeModifiers _tmp100_ = 0;
-                               ValaCCodeModifiers _tmp101_ = 0;
-                               _tmp98_ = function;
-                               _tmp99_ = function;
-                               _tmp100_ = vala_ccode_function_get_modifiers (_tmp99_);
-                               _tmp101_ = _tmp100_;
-                               vala_ccode_function_set_modifiers (_tmp99_, _tmp101_ | VALA_CCODE_MODIFIERS_STATIC);
+                       gchar* _tmp115_ = NULL;
+                       ValaCCodeFunction* _tmp116_ = NULL;
+                       ValaCCodeFunction* _tmp117_ = NULL;
+                       ValaMethod* _tmp118_ = NULL;
+                       gboolean _tmp119_ = FALSE;
+                       GHashFunc _tmp135_ = NULL;
+                       GEqualFunc _tmp136_ = NULL;
+                       GEqualFunc _tmp137_ = NULL;
+                       ValaHashMap* _tmp138_ = NULL;
+                       ValaMethod* _tmp139_ = NULL;
+                       ValaCCodeFile* _tmp140_ = NULL;
+                       ValaHashMap* _tmp141_ = NULL;
+                       ValaCCodeFunction* _tmp142_ = NULL;
+                       ValaCCodeFile* _tmp143_ = NULL;
+                       ValaCCodeFunction* _tmp144_ = NULL;
+                       ValaMethod* _tmp145_ = NULL;
+                       gchar* _tmp146_ = NULL;
+                       gchar* _tmp147_ = NULL;
+                       ValaCCodeFunction* _tmp148_ = NULL;
+                       ValaMethod* _tmp149_ = NULL;
+                       gboolean _tmp150_ = FALSE;
+                       GHashFunc _tmp166_ = NULL;
+                       GEqualFunc _tmp167_ = NULL;
+                       GEqualFunc _tmp168_ = NULL;
+                       ValaHashMap* _tmp169_ = NULL;
+                       ValaMethod* _tmp170_ = NULL;
+                       ValaCCodeFile* _tmp171_ = NULL;
+                       ValaHashMap* _tmp172_ = NULL;
+                       ValaCCodeFunction* _tmp173_ = NULL;
+                       ValaCCodeFile* _tmp174_ = NULL;
+                       ValaCCodeFunction* _tmp175_ = NULL;
+                       _tmp113_ = m;
+                       _tmp114_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp113_);
+                       _tmp115_ = _tmp114_;
+                       _tmp116_ = vala_ccode_function_new (_tmp115_, "void");
+                       _tmp117_ = _tmp116_;
+                       _g_free0 (_tmp115_);
+                       function = _tmp117_;
+                       _tmp118_ = m;
+                       _tmp119_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp118_);
+                       if (_tmp119_) {
+                               ValaCCodeFunction* _tmp120_ = NULL;
+                               ValaCCodeFunction* _tmp121_ = NULL;
+                               ValaCCodeModifiers _tmp122_ = 0;
+                               ValaCCodeModifiers _tmp123_ = 0;
+                               _tmp120_ = function;
+                               _tmp121_ = function;
+                               _tmp122_ = vala_ccode_function_get_modifiers (_tmp121_);
+                               _tmp123_ = _tmp122_;
+                               vala_ccode_function_set_modifiers (_tmp121_, _tmp123_ | VALA_CCODE_MODIFIERS_STATIC);
+                       } else {
+                               gboolean _tmp124_ = FALSE;
+                               ValaCodeContext* _tmp125_ = NULL;
+                               ValaCodeContext* _tmp126_ = NULL;
+                               gboolean _tmp127_ = FALSE;
+                               gboolean _tmp128_ = FALSE;
+                               _tmp125_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                               _tmp126_ = _tmp125_;
+                               _tmp127_ = vala_code_context_get_hide_internal (_tmp126_);
+                               _tmp128_ = _tmp127_;
+                               if (_tmp128_) {
+                                       ValaMethod* _tmp129_ = NULL;
+                                       gboolean _tmp130_ = FALSE;
+                                       _tmp129_ = m;
+                                       _tmp130_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp129_);
+                                       _tmp124_ = _tmp130_;
+                               } else {
+                                       _tmp124_ = FALSE;
+                               }
+                               if (_tmp124_) {
+                                       ValaCCodeFunction* _tmp131_ = NULL;
+                                       ValaCCodeFunction* _tmp132_ = NULL;
+                                       ValaCCodeModifiers _tmp133_ = 0;
+                                       ValaCCodeModifiers _tmp134_ = 0;
+                                       _tmp131_ = function;
+                                       _tmp132_ = function;
+                                       _tmp133_ = vala_ccode_function_get_modifiers (_tmp132_);
+                                       _tmp134_ = _tmp133_;
+                                       vala_ccode_function_set_modifiers (_tmp132_, _tmp134_ | VALA_CCODE_MODIFIERS_INTERNAL);
+                               }
                        }
-                       _tmp102_ = g_direct_hash;
-                       _tmp103_ = g_direct_equal;
-                       _tmp104_ = g_direct_equal;
-                       _tmp105_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp102_, _tmp103_, _tmp104_);
+                       _tmp135_ = g_direct_hash;
+                       _tmp136_ = g_direct_equal;
+                       _tmp137_ = g_direct_equal;
+                       _tmp138_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp135_, _tmp136_, _tmp137_);
                        _vala_map_unref0 (cparam_map);
-                       cparam_map = _tmp105_;
-                       _tmp106_ = m;
-                       _tmp107_ = decl_space;
-                       _tmp108_ = cparam_map;
-                       _tmp109_ = function;
-                       vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp106_, _tmp107_, (ValaMap*) _tmp108_, _tmp109_, NULL, NULL, NULL, 1);
-                       _tmp110_ = decl_space;
-                       _tmp111_ = function;
-                       vala_ccode_file_add_function_declaration (_tmp110_, _tmp111_);
-                       _tmp112_ = m;
-                       _tmp113_ = vala_ccode_base_module_get_ccode_finish_real_name (_tmp112_);
-                       _tmp114_ = _tmp113_;
-                       _tmp115_ = vala_ccode_function_new (_tmp114_, "void");
+                       cparam_map = _tmp138_;
+                       _tmp139_ = m;
+                       _tmp140_ = decl_space;
+                       _tmp141_ = cparam_map;
+                       _tmp142_ = function;
+                       vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp139_, _tmp140_, (ValaMap*) _tmp141_, _tmp142_, NULL, NULL, NULL, 1);
+                       _tmp143_ = decl_space;
+                       _tmp144_ = function;
+                       vala_ccode_file_add_function_declaration (_tmp143_, _tmp144_);
+                       _tmp145_ = m;
+                       _tmp146_ = vala_ccode_base_module_get_ccode_finish_real_name (_tmp145_);
+                       _tmp147_ = _tmp146_;
+                       _tmp148_ = vala_ccode_function_new (_tmp147_, "void");
                        _vala_ccode_node_unref0 (function);
-                       function = _tmp115_;
-                       _g_free0 (_tmp114_);
-                       _tmp116_ = m;
-                       _tmp117_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp116_);
-                       if (_tmp117_) {
-                               ValaCCodeFunction* _tmp118_ = NULL;
-                               ValaCCodeFunction* _tmp119_ = NULL;
-                               ValaCCodeModifiers _tmp120_ = 0;
-                               ValaCCodeModifiers _tmp121_ = 0;
-                               _tmp118_ = function;
-                               _tmp119_ = function;
-                               _tmp120_ = vala_ccode_function_get_modifiers (_tmp119_);
-                               _tmp121_ = _tmp120_;
-                               vala_ccode_function_set_modifiers (_tmp119_, _tmp121_ | VALA_CCODE_MODIFIERS_STATIC);
+                       function = _tmp148_;
+                       _g_free0 (_tmp147_);
+                       _tmp149_ = m;
+                       _tmp150_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp149_);
+                       if (_tmp150_) {
+                               ValaCCodeFunction* _tmp151_ = NULL;
+                               ValaCCodeFunction* _tmp152_ = NULL;
+                               ValaCCodeModifiers _tmp153_ = 0;
+                               ValaCCodeModifiers _tmp154_ = 0;
+                               _tmp151_ = function;
+                               _tmp152_ = function;
+                               _tmp153_ = vala_ccode_function_get_modifiers (_tmp152_);
+                               _tmp154_ = _tmp153_;
+                               vala_ccode_function_set_modifiers (_tmp152_, _tmp154_ | VALA_CCODE_MODIFIERS_STATIC);
+                       } else {
+                               gboolean _tmp155_ = FALSE;
+                               ValaCodeContext* _tmp156_ = NULL;
+                               ValaCodeContext* _tmp157_ = NULL;
+                               gboolean _tmp158_ = FALSE;
+                               gboolean _tmp159_ = FALSE;
+                               _tmp156_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                               _tmp157_ = _tmp156_;
+                               _tmp158_ = vala_code_context_get_hide_internal (_tmp157_);
+                               _tmp159_ = _tmp158_;
+                               if (_tmp159_) {
+                                       ValaMethod* _tmp160_ = NULL;
+                                       gboolean _tmp161_ = FALSE;
+                                       _tmp160_ = m;
+                                       _tmp161_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp160_);
+                                       _tmp155_ = _tmp161_;
+                               } else {
+                                       _tmp155_ = FALSE;
+                               }
+                               if (_tmp155_) {
+                                       ValaCCodeFunction* _tmp162_ = NULL;
+                                       ValaCCodeFunction* _tmp163_ = NULL;
+                                       ValaCCodeModifiers _tmp164_ = 0;
+                                       ValaCCodeModifiers _tmp165_ = 0;
+                                       _tmp162_ = function;
+                                       _tmp163_ = function;
+                                       _tmp164_ = vala_ccode_function_get_modifiers (_tmp163_);
+                                       _tmp165_ = _tmp164_;
+                                       vala_ccode_function_set_modifiers (_tmp163_, _tmp165_ | VALA_CCODE_MODIFIERS_INTERNAL);
+                               }
                        }
-                       _tmp122_ = g_direct_hash;
-                       _tmp123_ = g_direct_equal;
-                       _tmp124_ = g_direct_equal;
-                       _tmp125_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp122_, _tmp123_, _tmp124_);
+                       _tmp166_ = g_direct_hash;
+                       _tmp167_ = g_direct_equal;
+                       _tmp168_ = g_direct_equal;
+                       _tmp169_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, vala_ccode_node_unref, _tmp166_, _tmp167_, _tmp168_);
                        _vala_map_unref0 (cparam_map);
-                       cparam_map = _tmp125_;
-                       _tmp126_ = m;
-                       _tmp127_ = decl_space;
-                       _tmp128_ = cparam_map;
-                       _tmp129_ = function;
-                       vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp126_, _tmp127_, (ValaMap*) _tmp128_, _tmp129_, NULL, NULL, NULL, 2);
-                       _tmp130_ = decl_space;
-                       _tmp131_ = function;
-                       vala_ccode_file_add_function_declaration (_tmp130_, _tmp131_);
+                       cparam_map = _tmp169_;
+                       _tmp170_ = m;
+                       _tmp171_ = decl_space;
+                       _tmp172_ = cparam_map;
+                       _tmp173_ = function;
+                       vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp170_, _tmp171_, (ValaMap*) _tmp172_, _tmp173_, NULL, NULL, NULL, 2);
+                       _tmp174_ = decl_space;
+                       _tmp175_ = function;
+                       vala_ccode_file_add_function_declaration (_tmp174_, _tmp175_);
                        _vala_ccode_node_unref0 (function);
                }
                _vala_ccode_node_unref0 (finishfunc);
@@ -3162,11 +3125,11 @@ static void vala_gasync_module_real_generate_method_declaration (ValaCCodeBaseMo
                _vala_ccode_node_unref0 (asyncfunc);
                _vala_code_node_unref0 (cl);
        } else {
-               ValaMethod* _tmp132_ = NULL;
-               ValaCCodeFile* _tmp133_ = NULL;
-               _tmp132_ = m;
-               _tmp133_ = decl_space;
-               VALA_CCODE_BASE_MODULE_CLASS (vala_gasync_module_parent_class)->generate_method_declaration ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTK_MODULE, ValaGtkModule), _tmp132_, _tmp133_);
+               ValaMethod* _tmp176_ = NULL;
+               ValaCCodeFile* _tmp177_ = NULL;
+               _tmp176_ = m;
+               _tmp177_ = decl_space;
+               VALA_CCODE_BASE_MODULE_CLASS (vala_gasync_module_parent_class)->generate_method_declaration ((ValaCCodeBaseModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTK_MODULE, ValaGtkModule), _tmp176_, _tmp177_);
        }
 }
 
@@ -3692,53 +3655,53 @@ static void vala_gasync_module_generate_finish_function (ValaGAsyncModule* self,
        gboolean _tmp27_ = FALSE;
        ValaMethod* _tmp28_ = NULL;
        gboolean _tmp29_ = FALSE;
-       ValaCCodeFunction* _tmp40_ = NULL;
+       ValaCCodeFunction* _tmp51_ = NULL;
        ValaDataType* return_type = NULL;
-       ValaMethod* _tmp41_ = NULL;
-       ValaDataType* _tmp42_ = NULL;
-       ValaDataType* _tmp43_ = NULL;
-       ValaDataType* _tmp44_ = NULL;
-       ValaMethod* _tmp45_ = NULL;
+       ValaMethod* _tmp52_ = NULL;
+       ValaDataType* _tmp53_ = NULL;
+       ValaDataType* _tmp54_ = NULL;
+       ValaDataType* _tmp55_ = NULL;
+       ValaMethod* _tmp56_ = NULL;
        ValaCCodeIdentifier* data_var = NULL;
-       ValaCCodeIdentifier* _tmp73_ = NULL;
-       ValaCCodeFunction* _tmp74_ = NULL;
-       ValaCCodeFunction* _tmp75_ = NULL;
-       const gchar* _tmp76_ = NULL;
-       gchar* _tmp77_ = NULL;
-       gchar* _tmp78_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp79_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp80_ = NULL;
+       ValaCCodeIdentifier* _tmp84_ = NULL;
+       ValaCCodeFunction* _tmp85_ = NULL;
+       ValaCCodeFunction* _tmp86_ = NULL;
+       const gchar* _tmp87_ = NULL;
+       gchar* _tmp88_ = NULL;
+       gchar* _tmp89_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp90_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp91_ = NULL;
        ValaCCodeFunctionCall* simple_async_result_cast = NULL;
-       ValaCCodeIdentifier* _tmp81_ = NULL;
-       ValaCCodeIdentifier* _tmp82_ = NULL;
-       ValaCCodeFunctionCall* _tmp83_ = NULL;
-       ValaCCodeFunctionCall* _tmp84_ = NULL;
-       ValaCCodeFunctionCall* _tmp85_ = NULL;
-       ValaCCodeIdentifier* _tmp86_ = NULL;
-       ValaCCodeIdentifier* _tmp87_ = NULL;
-       ValaMethod* _tmp88_ = NULL;
-       ValaList* _tmp89_ = NULL;
-       ValaList* _tmp90_ = NULL;
-       gint _tmp91_ = 0;
-       gint _tmp92_ = 0;
-       gboolean _tmp93_ = FALSE;
+       ValaCCodeIdentifier* _tmp92_ = NULL;
+       ValaCCodeIdentifier* _tmp93_ = NULL;
+       ValaCCodeFunctionCall* _tmp94_ = NULL;
+       ValaCCodeFunctionCall* _tmp95_ = NULL;
+       ValaCCodeFunctionCall* _tmp96_ = NULL;
+       ValaCCodeIdentifier* _tmp97_ = NULL;
+       ValaCCodeIdentifier* _tmp98_ = NULL;
+       ValaMethod* _tmp99_ = NULL;
+       ValaList* _tmp100_ = NULL;
+       ValaList* _tmp101_ = NULL;
+       gint _tmp102_ = 0;
+       gint _tmp103_ = 0;
+       gboolean _tmp104_ = FALSE;
        ValaCCodeFunctionCall* ccall = NULL;
-       ValaCCodeIdentifier* _tmp109_ = NULL;
-       ValaCCodeIdentifier* _tmp110_ = NULL;
-       ValaCCodeFunctionCall* _tmp111_ = NULL;
-       ValaCCodeFunctionCall* _tmp112_ = NULL;
-       ValaCCodeFunctionCall* _tmp113_ = NULL;
-       ValaCCodeFunctionCall* _tmp114_ = NULL;
-       ValaCCodeFunction* _tmp115_ = NULL;
-       ValaCCodeFunction* _tmp116_ = NULL;
-       ValaCCodeIdentifier* _tmp117_ = NULL;
-       ValaCCodeFunctionCall* _tmp118_ = NULL;
-       ValaCCodeBaseModuleEmitContext* _tmp119_ = NULL;
-       ValaMethod* _tmp120_ = NULL;
-       ValaCCodeBaseModuleEmitContext* _tmp157_ = NULL;
-       ValaMethod* _tmp158_ = NULL;
-       ValaCCodeFile* _tmp268_ = NULL;
-       ValaCCodeFunction* _tmp269_ = NULL;
+       ValaCCodeIdentifier* _tmp120_ = NULL;
+       ValaCCodeIdentifier* _tmp121_ = NULL;
+       ValaCCodeFunctionCall* _tmp122_ = NULL;
+       ValaCCodeFunctionCall* _tmp123_ = NULL;
+       ValaCCodeFunctionCall* _tmp124_ = NULL;
+       ValaCCodeFunctionCall* _tmp125_ = NULL;
+       ValaCCodeFunction* _tmp126_ = NULL;
+       ValaCCodeFunction* _tmp127_ = NULL;
+       ValaCCodeIdentifier* _tmp128_ = NULL;
+       ValaCCodeFunctionCall* _tmp129_ = NULL;
+       ValaCCodeBaseModuleEmitContext* _tmp130_ = NULL;
+       ValaMethod* _tmp131_ = NULL;
+       ValaCCodeBaseModuleEmitContext* _tmp168_ = NULL;
+       ValaMethod* _tmp169_ = NULL;
+       ValaCCodeFile* _tmp279_ = NULL;
+       ValaCCodeFunction* _tmp280_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (m != NULL);
        _tmp0_ = vala_ccode_base_module_emit_context_new (NULL);
@@ -3812,590 +3775,620 @@ static void vala_gasync_module_generate_finish_function (ValaGAsyncModule* self,
                _tmp38_ = vala_ccode_function_get_modifiers (_tmp37_);
                _tmp39_ = _tmp38_;
                vala_ccode_function_set_modifiers (_tmp37_, _tmp39_ | VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp40_ = FALSE;
+               ValaCodeContext* _tmp41_ = NULL;
+               ValaCodeContext* _tmp42_ = NULL;
+               gboolean _tmp43_ = FALSE;
+               gboolean _tmp44_ = FALSE;
+               _tmp41_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp42_ = _tmp41_;
+               _tmp43_ = vala_code_context_get_hide_internal (_tmp42_);
+               _tmp44_ = _tmp43_;
+               if (_tmp44_) {
+                       ValaMethod* _tmp45_ = NULL;
+                       gboolean _tmp46_ = FALSE;
+                       _tmp45_ = m;
+                       _tmp46_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp45_);
+                       _tmp40_ = _tmp46_;
+               } else {
+                       _tmp40_ = FALSE;
+               }
+               if (_tmp40_) {
+                       ValaCCodeFunction* _tmp47_ = NULL;
+                       ValaCCodeFunction* _tmp48_ = NULL;
+                       ValaCCodeModifiers _tmp49_ = 0;
+                       ValaCCodeModifiers _tmp50_ = 0;
+                       _tmp47_ = finishfunc;
+                       _tmp48_ = finishfunc;
+                       _tmp49_ = vala_ccode_function_get_modifiers (_tmp48_);
+                       _tmp50_ = _tmp49_;
+                       vala_ccode_function_set_modifiers (_tmp48_, _tmp50_ | VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp40_ = finishfunc;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp40_);
-       _tmp41_ = m;
-       _tmp42_ = vala_method_get_return_type (_tmp41_);
-       _tmp43_ = _tmp42_;
-       _tmp44_ = _vala_code_node_ref0 (_tmp43_);
-       return_type = _tmp44_;
-       _tmp45_ = m;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp45_, VALA_TYPE_CREATION_METHOD)) {
+       _tmp51_ = finishfunc;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp51_);
+       _tmp52_ = m;
+       _tmp53_ = vala_method_get_return_type (_tmp52_);
+       _tmp54_ = _tmp53_;
+       _tmp55_ = _vala_code_node_ref0 (_tmp54_);
+       return_type = _tmp55_;
+       _tmp56_ = m;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp56_, VALA_TYPE_CREATION_METHOD)) {
                ValaTypeSymbol* type_sym = NULL;
-               ValaMethod* _tmp46_ = NULL;
-               ValaSymbol* _tmp47_ = NULL;
-               ValaSymbol* _tmp48_ = NULL;
-               ValaTypeSymbol* _tmp49_ = NULL;
-               ValaTypeSymbol* _tmp50_ = NULL;
-               _tmp46_ = m;
-               _tmp47_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp46_);
-               _tmp48_ = _tmp47_;
-               _tmp49_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp48_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
-               type_sym = _tmp49_;
-               _tmp50_ = type_sym;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp50_, VALA_TYPE_OBJECT_TYPE_SYMBOL)) {
-                       ValaCCodeFunction* _tmp51_ = NULL;
-                       ValaCCodeFunction* _tmp52_ = NULL;
-                       ValaTypeSymbol* _tmp53_ = NULL;
-                       gchar* _tmp54_ = NULL;
-                       gchar* _tmp55_ = NULL;
-                       gchar* _tmp56_ = NULL;
-                       gchar* _tmp57_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp58_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp59_ = NULL;
-                       _tmp51_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp52_ = _tmp51_;
-                       _tmp53_ = type_sym;
-                       _tmp54_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp53_);
-                       _tmp55_ = _tmp54_;
-                       _tmp56_ = g_strconcat (_tmp55_, "*", NULL);
-                       _tmp57_ = _tmp56_;
-                       _tmp58_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
-                       _tmp59_ = _tmp58_;
-                       vala_ccode_function_add_declaration (_tmp52_, _tmp57_, (ValaCCodeDeclarator*) _tmp59_, 0);
-                       _vala_ccode_node_unref0 (_tmp59_);
-                       _g_free0 (_tmp57_);
-                       _g_free0 (_tmp55_);
+               ValaMethod* _tmp57_ = NULL;
+               ValaSymbol* _tmp58_ = NULL;
+               ValaSymbol* _tmp59_ = NULL;
+               ValaTypeSymbol* _tmp60_ = NULL;
+               ValaTypeSymbol* _tmp61_ = NULL;
+               _tmp57_ = m;
+               _tmp58_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp57_);
+               _tmp59_ = _tmp58_;
+               _tmp60_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp59_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+               type_sym = _tmp60_;
+               _tmp61_ = type_sym;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp61_, VALA_TYPE_OBJECT_TYPE_SYMBOL)) {
+                       ValaCCodeFunction* _tmp62_ = NULL;
+                       ValaCCodeFunction* _tmp63_ = NULL;
+                       ValaTypeSymbol* _tmp64_ = NULL;
+                       gchar* _tmp65_ = NULL;
+                       gchar* _tmp66_ = NULL;
+                       gchar* _tmp67_ = NULL;
+                       gchar* _tmp68_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp69_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp70_ = NULL;
+                       _tmp62_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp63_ = _tmp62_;
+                       _tmp64_ = type_sym;
+                       _tmp65_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp64_);
+                       _tmp66_ = _tmp65_;
+                       _tmp67_ = g_strconcat (_tmp66_, "*", NULL);
+                       _tmp68_ = _tmp67_;
+                       _tmp69_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
+                       _tmp70_ = _tmp69_;
+                       vala_ccode_function_add_declaration (_tmp63_, _tmp68_, (ValaCCodeDeclarator*) _tmp70_, 0);
+                       _vala_ccode_node_unref0 (_tmp70_);
+                       _g_free0 (_tmp68_);
+                       _g_free0 (_tmp66_);
                }
                _vala_code_node_unref0 (type_sym);
        } else {
-               gboolean _tmp60_ = FALSE;
-               ValaDataType* _tmp61_ = NULL;
-               _tmp61_ = return_type;
-               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp61_, VALA_TYPE_VOID_TYPE)) {
-                       ValaDataType* _tmp62_ = NULL;
-                       gboolean _tmp63_ = FALSE;
-                       _tmp62_ = return_type;
-                       _tmp63_ = vala_data_type_is_real_non_null_struct_type (_tmp62_);
-                       _tmp60_ = !_tmp63_;
+               gboolean _tmp71_ = FALSE;
+               ValaDataType* _tmp72_ = NULL;
+               _tmp72_ = return_type;
+               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp72_, VALA_TYPE_VOID_TYPE)) {
+                       ValaDataType* _tmp73_ = NULL;
+                       gboolean _tmp74_ = FALSE;
+                       _tmp73_ = return_type;
+                       _tmp74_ = vala_data_type_is_real_non_null_struct_type (_tmp73_);
+                       _tmp71_ = !_tmp74_;
                } else {
-                       _tmp60_ = FALSE;
+                       _tmp71_ = FALSE;
                }
-               if (_tmp60_) {
-                       ValaCCodeFunction* _tmp64_ = NULL;
-                       ValaCCodeFunction* _tmp65_ = NULL;
-                       ValaMethod* _tmp66_ = NULL;
-                       ValaDataType* _tmp67_ = NULL;
-                       ValaDataType* _tmp68_ = NULL;
-                       gchar* _tmp69_ = NULL;
-                       gchar* _tmp70_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp71_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp72_ = NULL;
-                       _tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp65_ = _tmp64_;
-                       _tmp66_ = m;
-                       _tmp67_ = vala_method_get_return_type (_tmp66_);
-                       _tmp68_ = _tmp67_;
-                       _tmp69_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp68_);
-                       _tmp70_ = _tmp69_;
-                       _tmp71_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
-                       _tmp72_ = _tmp71_;
-                       vala_ccode_function_add_declaration (_tmp65_, _tmp70_, (ValaCCodeDeclarator*) _tmp72_, 0);
-                       _vala_ccode_node_unref0 (_tmp72_);
-                       _g_free0 (_tmp70_);
+               if (_tmp71_) {
+                       ValaCCodeFunction* _tmp75_ = NULL;
+                       ValaCCodeFunction* _tmp76_ = NULL;
+                       ValaMethod* _tmp77_ = NULL;
+                       ValaDataType* _tmp78_ = NULL;
+                       ValaDataType* _tmp79_ = NULL;
+                       gchar* _tmp80_ = NULL;
+                       gchar* _tmp81_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp82_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp83_ = NULL;
+                       _tmp75_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp76_ = _tmp75_;
+                       _tmp77_ = m;
+                       _tmp78_ = vala_method_get_return_type (_tmp77_);
+                       _tmp79_ = _tmp78_;
+                       _tmp80_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp79_);
+                       _tmp81_ = _tmp80_;
+                       _tmp82_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
+                       _tmp83_ = _tmp82_;
+                       vala_ccode_function_add_declaration (_tmp76_, _tmp81_, (ValaCCodeDeclarator*) _tmp83_, 0);
+                       _vala_ccode_node_unref0 (_tmp83_);
+                       _g_free0 (_tmp81_);
                }
        }
-       _tmp73_ = vala_ccode_identifier_new ("_data_");
-       data_var = _tmp73_;
-       _tmp74_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp75_ = _tmp74_;
-       _tmp76_ = dataname;
-       _tmp77_ = g_strconcat (_tmp76_, "*", NULL);
-       _tmp78_ = _tmp77_;
-       _tmp79_ = vala_ccode_variable_declarator_new ("_data_", NULL, NULL);
-       _tmp80_ = _tmp79_;
-       vala_ccode_function_add_declaration (_tmp75_, _tmp78_, (ValaCCodeDeclarator*) _tmp80_, 0);
-       _vala_ccode_node_unref0 (_tmp80_);
-       _g_free0 (_tmp78_);
-       _tmp81_ = vala_ccode_identifier_new ("G_SIMPLE_ASYNC_RESULT");
-       _tmp82_ = _tmp81_;
-       _tmp83_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp82_);
-       _tmp84_ = _tmp83_;
-       _vala_ccode_node_unref0 (_tmp82_);
-       simple_async_result_cast = _tmp84_;
-       _tmp85_ = simple_async_result_cast;
-       _tmp86_ = vala_ccode_identifier_new ("_res_");
-       _tmp87_ = _tmp86_;
-       vala_ccode_function_call_add_argument (_tmp85_, (ValaCCodeExpression*) _tmp87_);
-       _vala_ccode_node_unref0 (_tmp87_);
-       _tmp88_ = m;
-       _tmp89_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp88_);
-       _tmp90_ = _tmp89_;
-       _tmp91_ = vala_collection_get_size ((ValaCollection*) _tmp90_);
-       _tmp92_ = _tmp91_;
-       _tmp93_ = _tmp92_ > 0;
-       _vala_iterable_unref0 (_tmp90_);
-       if (_tmp93_) {
+       _tmp84_ = vala_ccode_identifier_new ("_data_");
+       data_var = _tmp84_;
+       _tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp86_ = _tmp85_;
+       _tmp87_ = dataname;
+       _tmp88_ = g_strconcat (_tmp87_, "*", NULL);
+       _tmp89_ = _tmp88_;
+       _tmp90_ = vala_ccode_variable_declarator_new ("_data_", NULL, NULL);
+       _tmp91_ = _tmp90_;
+       vala_ccode_function_add_declaration (_tmp86_, _tmp89_, (ValaCCodeDeclarator*) _tmp91_, 0);
+       _vala_ccode_node_unref0 (_tmp91_);
+       _g_free0 (_tmp89_);
+       _tmp92_ = vala_ccode_identifier_new ("G_SIMPLE_ASYNC_RESULT");
+       _tmp93_ = _tmp92_;
+       _tmp94_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp93_);
+       _tmp95_ = _tmp94_;
+       _vala_ccode_node_unref0 (_tmp93_);
+       simple_async_result_cast = _tmp95_;
+       _tmp96_ = simple_async_result_cast;
+       _tmp97_ = vala_ccode_identifier_new ("_res_");
+       _tmp98_ = _tmp97_;
+       vala_ccode_function_call_add_argument (_tmp96_, (ValaCCodeExpression*) _tmp98_);
+       _vala_ccode_node_unref0 (_tmp98_);
+       _tmp99_ = m;
+       _tmp100_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp99_);
+       _tmp101_ = _tmp100_;
+       _tmp102_ = vala_collection_get_size ((ValaCollection*) _tmp101_);
+       _tmp103_ = _tmp102_;
+       _tmp104_ = _tmp103_ > 0;
+       _vala_iterable_unref0 (_tmp101_);
+       if (_tmp104_) {
                ValaCCodeFunctionCall* propagate_error = NULL;
-               ValaCCodeIdentifier* _tmp94_ = NULL;
-               ValaCCodeIdentifier* _tmp95_ = NULL;
-               ValaCCodeFunctionCall* _tmp96_ = NULL;
-               ValaCCodeFunctionCall* _tmp97_ = NULL;
-               ValaCCodeFunctionCall* _tmp98_ = NULL;
-               ValaCCodeFunctionCall* _tmp99_ = NULL;
-               ValaCCodeFunctionCall* _tmp100_ = NULL;
-               ValaCCodeIdentifier* _tmp101_ = NULL;
-               ValaCCodeIdentifier* _tmp102_ = NULL;
-               ValaCCodeFunction* _tmp103_ = NULL;
-               ValaCCodeFunction* _tmp104_ = NULL;
-               ValaCCodeFunctionCall* _tmp105_ = NULL;
-               ValaDataType* _tmp106_ = NULL;
-               ValaCCodeFunction* _tmp107_ = NULL;
-               ValaCCodeFunction* _tmp108_ = NULL;
-               _tmp94_ = vala_ccode_identifier_new ("g_simple_async_result_propagate_error");
-               _tmp95_ = _tmp94_;
-               _tmp96_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp95_);
-               _tmp97_ = _tmp96_;
-               _vala_ccode_node_unref0 (_tmp95_);
-               propagate_error = _tmp97_;
-               _tmp98_ = propagate_error;
-               _tmp99_ = simple_async_result_cast;
-               vala_ccode_function_call_add_argument (_tmp98_, (ValaCCodeExpression*) _tmp99_);
-               _tmp100_ = propagate_error;
-               _tmp101_ = vala_ccode_identifier_new ("error");
-               _tmp102_ = _tmp101_;
-               vala_ccode_function_call_add_argument (_tmp100_, (ValaCCodeExpression*) _tmp102_);
-               _vala_ccode_node_unref0 (_tmp102_);
-               _tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp104_ = _tmp103_;
-               _tmp105_ = propagate_error;
-               vala_ccode_function_open_if (_tmp104_, (ValaCCodeExpression*) _tmp105_);
-               _tmp106_ = return_type;
-               vala_ccode_base_module_return_default_value ((ValaCCodeBaseModule*) self, _tmp106_);
-               _tmp107_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               ValaCCodeIdentifier* _tmp105_ = NULL;
+               ValaCCodeIdentifier* _tmp106_ = NULL;
+               ValaCCodeFunctionCall* _tmp107_ = NULL;
+               ValaCCodeFunctionCall* _tmp108_ = NULL;
+               ValaCCodeFunctionCall* _tmp109_ = NULL;
+               ValaCCodeFunctionCall* _tmp110_ = NULL;
+               ValaCCodeFunctionCall* _tmp111_ = NULL;
+               ValaCCodeIdentifier* _tmp112_ = NULL;
+               ValaCCodeIdentifier* _tmp113_ = NULL;
+               ValaCCodeFunction* _tmp114_ = NULL;
+               ValaCCodeFunction* _tmp115_ = NULL;
+               ValaCCodeFunctionCall* _tmp116_ = NULL;
+               ValaDataType* _tmp117_ = NULL;
+               ValaCCodeFunction* _tmp118_ = NULL;
+               ValaCCodeFunction* _tmp119_ = NULL;
+               _tmp105_ = vala_ccode_identifier_new ("g_simple_async_result_propagate_error");
+               _tmp106_ = _tmp105_;
+               _tmp107_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp106_);
                _tmp108_ = _tmp107_;
-               vala_ccode_function_close (_tmp108_);
+               _vala_ccode_node_unref0 (_tmp106_);
+               propagate_error = _tmp108_;
+               _tmp109_ = propagate_error;
+               _tmp110_ = simple_async_result_cast;
+               vala_ccode_function_call_add_argument (_tmp109_, (ValaCCodeExpression*) _tmp110_);
+               _tmp111_ = propagate_error;
+               _tmp112_ = vala_ccode_identifier_new ("error");
+               _tmp113_ = _tmp112_;
+               vala_ccode_function_call_add_argument (_tmp111_, (ValaCCodeExpression*) _tmp113_);
+               _vala_ccode_node_unref0 (_tmp113_);
+               _tmp114_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp115_ = _tmp114_;
+               _tmp116_ = propagate_error;
+               vala_ccode_function_open_if (_tmp115_, (ValaCCodeExpression*) _tmp116_);
+               _tmp117_ = return_type;
+               vala_ccode_base_module_return_default_value ((ValaCCodeBaseModule*) self, _tmp117_);
+               _tmp118_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp119_ = _tmp118_;
+               vala_ccode_function_close (_tmp119_);
                _vala_ccode_node_unref0 (propagate_error);
        }
-       _tmp109_ = vala_ccode_identifier_new ("g_simple_async_result_get_op_res_gpointer");
-       _tmp110_ = _tmp109_;
-       _tmp111_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp110_);
-       _tmp112_ = _tmp111_;
-       _vala_ccode_node_unref0 (_tmp110_);
-       ccall = _tmp112_;
-       _tmp113_ = ccall;
-       _tmp114_ = simple_async_result_cast;
-       vala_ccode_function_call_add_argument (_tmp113_, (ValaCCodeExpression*) _tmp114_);
-       _tmp115_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp116_ = _tmp115_;
-       _tmp117_ = data_var;
-       _tmp118_ = ccall;
-       vala_ccode_function_add_assignment (_tmp116_, (ValaCCodeExpression*) _tmp117_, (ValaCCodeExpression*) _tmp118_);
-       _tmp119_ = ((ValaCCodeBaseModule*) self)->emit_context;
-       _tmp120_ = m;
-       vala_ccode_base_module_emit_context_push_symbol (_tmp119_, (ValaSymbol*) _tmp120_);
+       _tmp120_ = vala_ccode_identifier_new ("g_simple_async_result_get_op_res_gpointer");
+       _tmp121_ = _tmp120_;
+       _tmp122_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp121_);
+       _tmp123_ = _tmp122_;
+       _vala_ccode_node_unref0 (_tmp121_);
+       ccall = _tmp123_;
+       _tmp124_ = ccall;
+       _tmp125_ = simple_async_result_cast;
+       vala_ccode_function_call_add_argument (_tmp124_, (ValaCCodeExpression*) _tmp125_);
+       _tmp126_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp127_ = _tmp126_;
+       _tmp128_ = data_var;
+       _tmp129_ = ccall;
+       vala_ccode_function_add_assignment (_tmp127_, (ValaCCodeExpression*) _tmp128_, (ValaCCodeExpression*) _tmp129_);
+       _tmp130_ = ((ValaCCodeBaseModule*) self)->emit_context;
+       _tmp131_ = m;
+       vala_ccode_base_module_emit_context_push_symbol (_tmp130_, (ValaSymbol*) _tmp131_);
        {
                ValaList* _param_list = NULL;
-               ValaMethod* _tmp121_ = NULL;
-               ValaList* _tmp122_ = NULL;
+               ValaMethod* _tmp132_ = NULL;
+               ValaList* _tmp133_ = NULL;
                gint _param_size = 0;
-               ValaList* _tmp123_ = NULL;
-               gint _tmp124_ = 0;
-               gint _tmp125_ = 0;
+               ValaList* _tmp134_ = NULL;
+               gint _tmp135_ = 0;
+               gint _tmp136_ = 0;
                gint _param_index = 0;
-               _tmp121_ = m;
-               _tmp122_ = vala_method_get_parameters (_tmp121_);
-               _param_list = _tmp122_;
-               _tmp123_ = _param_list;
-               _tmp124_ = vala_collection_get_size ((ValaCollection*) _tmp123_);
-               _tmp125_ = _tmp124_;
-               _param_size = _tmp125_;
+               _tmp132_ = m;
+               _tmp133_ = vala_method_get_parameters (_tmp132_);
+               _param_list = _tmp133_;
+               _tmp134_ = _param_list;
+               _tmp135_ = vala_collection_get_size ((ValaCollection*) _tmp134_);
+               _tmp136_ = _tmp135_;
+               _param_size = _tmp136_;
                _param_index = -1;
                while (TRUE) {
-                       gint _tmp126_ = 0;
-                       gint _tmp127_ = 0;
-                       gint _tmp128_ = 0;
+                       gint _tmp137_ = 0;
+                       gint _tmp138_ = 0;
+                       gint _tmp139_ = 0;
                        ValaParameter* param = NULL;
-                       ValaList* _tmp129_ = NULL;
-                       gint _tmp130_ = 0;
-                       gpointer _tmp131_ = NULL;
-                       ValaParameter* _tmp132_ = NULL;
-                       ValaParameterDirection _tmp133_ = 0;
-                       ValaParameterDirection _tmp134_ = 0;
-                       _tmp126_ = _param_index;
-                       _param_index = _tmp126_ + 1;
-                       _tmp127_ = _param_index;
-                       _tmp128_ = _param_size;
-                       if (!(_tmp127_ < _tmp128_)) {
+                       ValaList* _tmp140_ = NULL;
+                       gint _tmp141_ = 0;
+                       gpointer _tmp142_ = NULL;
+                       ValaParameter* _tmp143_ = NULL;
+                       ValaParameterDirection _tmp144_ = 0;
+                       ValaParameterDirection _tmp145_ = 0;
+                       _tmp137_ = _param_index;
+                       _param_index = _tmp137_ + 1;
+                       _tmp138_ = _param_index;
+                       _tmp139_ = _param_size;
+                       if (!(_tmp138_ < _tmp139_)) {
                                break;
                        }
-                       _tmp129_ = _param_list;
-                       _tmp130_ = _param_index;
-                       _tmp131_ = vala_list_get (_tmp129_, _tmp130_);
-                       param = (ValaParameter*) _tmp131_;
-                       _tmp132_ = param;
-                       _tmp133_ = vala_parameter_get_direction (_tmp132_);
-                       _tmp134_ = _tmp133_;
-                       if (_tmp134_ != VALA_PARAMETER_DIRECTION_IN) {
-                               ValaParameter* _tmp135_ = NULL;
-                               gboolean _tmp136_ = FALSE;
-                               ValaParameter* _tmp137_ = NULL;
-                               ValaDataType* _tmp138_ = NULL;
-                               ValaDataType* _tmp139_ = NULL;
-                               _tmp135_ = param;
-                               vala_ccode_base_module_return_out_parameter ((ValaCCodeBaseModule*) self, _tmp135_);
-                               _tmp137_ = param;
-                               _tmp138_ = vala_variable_get_variable_type ((ValaVariable*) _tmp137_);
-                               _tmp139_ = _tmp138_;
-                               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp139_, VALA_TYPE_VALUE_TYPE)) {
-                                       _tmp136_ = TRUE;
+                       _tmp140_ = _param_list;
+                       _tmp141_ = _param_index;
+                       _tmp142_ = vala_list_get (_tmp140_, _tmp141_);
+                       param = (ValaParameter*) _tmp142_;
+                       _tmp143_ = param;
+                       _tmp144_ = vala_parameter_get_direction (_tmp143_);
+                       _tmp145_ = _tmp144_;
+                       if (_tmp145_ != VALA_PARAMETER_DIRECTION_IN) {
+                               ValaParameter* _tmp146_ = NULL;
+                               gboolean _tmp147_ = FALSE;
+                               ValaParameter* _tmp148_ = NULL;
+                               ValaDataType* _tmp149_ = NULL;
+                               ValaDataType* _tmp150_ = NULL;
+                               _tmp146_ = param;
+                               vala_ccode_base_module_return_out_parameter ((ValaCCodeBaseModule*) self, _tmp146_);
+                               _tmp148_ = param;
+                               _tmp149_ = vala_variable_get_variable_type ((ValaVariable*) _tmp148_);
+                               _tmp150_ = _tmp149_;
+                               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp150_, VALA_TYPE_VALUE_TYPE)) {
+                                       _tmp147_ = TRUE;
                                } else {
-                                       ValaParameter* _tmp140_ = NULL;
-                                       ValaDataType* _tmp141_ = NULL;
-                                       ValaDataType* _tmp142_ = NULL;
-                                       gboolean _tmp143_ = FALSE;
-                                       gboolean _tmp144_ = FALSE;
-                                       _tmp140_ = param;
-                                       _tmp141_ = vala_variable_get_variable_type ((ValaVariable*) _tmp140_);
-                                       _tmp142_ = _tmp141_;
-                                       _tmp143_ = vala_data_type_get_nullable (_tmp142_);
-                                       _tmp144_ = _tmp143_;
-                                       _tmp136_ = _tmp144_;
+                                       ValaParameter* _tmp151_ = NULL;
+                                       ValaDataType* _tmp152_ = NULL;
+                                       ValaDataType* _tmp153_ = NULL;
+                                       gboolean _tmp154_ = FALSE;
+                                       gboolean _tmp155_ = FALSE;
+                                       _tmp151_ = param;
+                                       _tmp152_ = vala_variable_get_variable_type ((ValaVariable*) _tmp151_);
+                                       _tmp153_ = _tmp152_;
+                                       _tmp154_ = vala_data_type_get_nullable (_tmp153_);
+                                       _tmp155_ = _tmp154_;
+                                       _tmp147_ = _tmp155_;
                                }
-                               if (_tmp136_) {
-                                       ValaCCodeFunction* _tmp145_ = NULL;
-                                       ValaCCodeFunction* _tmp146_ = NULL;
-                                       ValaCCodeIdentifier* _tmp147_ = NULL;
-                                       ValaParameter* _tmp148_ = NULL;
-                                       const gchar* _tmp149_ = NULL;
-                                       const gchar* _tmp150_ = NULL;
-                                       gchar* _tmp151_ = NULL;
-                                       gchar* _tmp152_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp153_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp154_ = NULL;
-                                       ValaCCodeConstant* _tmp155_ = NULL;
-                                       ValaCCodeConstant* _tmp156_ = NULL;
-                                       _tmp145_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp146_ = _tmp145_;
-                                       _tmp147_ = data_var;
-                                       _tmp148_ = param;
-                                       _tmp149_ = vala_symbol_get_name ((ValaSymbol*) _tmp148_);
-                                       _tmp150_ = _tmp149_;
-                                       _tmp151_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp150_);
-                                       _tmp152_ = _tmp151_;
-                                       _tmp153_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp147_, _tmp152_);
-                                       _tmp154_ = _tmp153_;
-                                       _tmp155_ = vala_ccode_constant_new ("NULL");
-                                       _tmp156_ = _tmp155_;
-                                       vala_ccode_function_add_assignment (_tmp146_, (ValaCCodeExpression*) _tmp154_, (ValaCCodeExpression*) _tmp156_);
-                                       _vala_ccode_node_unref0 (_tmp156_);
-                                       _vala_ccode_node_unref0 (_tmp154_);
-                                       _g_free0 (_tmp152_);
+                               if (_tmp147_) {
+                                       ValaCCodeFunction* _tmp156_ = NULL;
+                                       ValaCCodeFunction* _tmp157_ = NULL;
+                                       ValaCCodeIdentifier* _tmp158_ = NULL;
+                                       ValaParameter* _tmp159_ = NULL;
+                                       const gchar* _tmp160_ = NULL;
+                                       const gchar* _tmp161_ = NULL;
+                                       gchar* _tmp162_ = NULL;
+                                       gchar* _tmp163_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp164_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp165_ = NULL;
+                                       ValaCCodeConstant* _tmp166_ = NULL;
+                                       ValaCCodeConstant* _tmp167_ = NULL;
+                                       _tmp156_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp157_ = _tmp156_;
+                                       _tmp158_ = data_var;
+                                       _tmp159_ = param;
+                                       _tmp160_ = vala_symbol_get_name ((ValaSymbol*) _tmp159_);
+                                       _tmp161_ = _tmp160_;
+                                       _tmp162_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp161_);
+                                       _tmp163_ = _tmp162_;
+                                       _tmp164_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp158_, _tmp163_);
+                                       _tmp165_ = _tmp164_;
+                                       _tmp166_ = vala_ccode_constant_new ("NULL");
+                                       _tmp167_ = _tmp166_;
+                                       vala_ccode_function_add_assignment (_tmp157_, (ValaCCodeExpression*) _tmp165_, (ValaCCodeExpression*) _tmp167_);
+                                       _vala_ccode_node_unref0 (_tmp167_);
+                                       _vala_ccode_node_unref0 (_tmp165_);
+                                       _g_free0 (_tmp163_);
                                }
                        }
                        _vala_code_node_unref0 (param);
                }
                _vala_iterable_unref0 (_param_list);
        }
-       _tmp157_ = ((ValaCCodeBaseModule*) self)->emit_context;
-       vala_ccode_base_module_emit_context_pop_symbol (_tmp157_);
-       _tmp158_ = m;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp158_, VALA_TYPE_CREATION_METHOD)) {
-               ValaCCodeFunction* _tmp159_ = NULL;
-               ValaCCodeFunction* _tmp160_ = NULL;
-               ValaCCodeIdentifier* _tmp161_ = NULL;
-               ValaCCodeIdentifier* _tmp162_ = NULL;
-               ValaCCodeIdentifier* _tmp163_ = NULL;
-               ValaCCodeMemberAccess* _tmp164_ = NULL;
-               ValaCCodeMemberAccess* _tmp165_ = NULL;
-               ValaCCodeFunction* _tmp166_ = NULL;
-               ValaCCodeFunction* _tmp167_ = NULL;
-               ValaCCodeIdentifier* _tmp168_ = NULL;
-               ValaCCodeMemberAccess* _tmp169_ = NULL;
-               ValaCCodeMemberAccess* _tmp170_ = NULL;
-               ValaCCodeConstant* _tmp171_ = NULL;
-               ValaCCodeConstant* _tmp172_ = NULL;
-               ValaCCodeFunction* _tmp173_ = NULL;
-               ValaCCodeFunction* _tmp174_ = NULL;
-               ValaCCodeIdentifier* _tmp175_ = NULL;
-               ValaCCodeIdentifier* _tmp176_ = NULL;
-               _tmp159_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp160_ = _tmp159_;
-               _tmp161_ = vala_ccode_identifier_new ("result");
-               _tmp162_ = _tmp161_;
-               _tmp163_ = data_var;
-               _tmp164_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp163_, "self");
-               _tmp165_ = _tmp164_;
-               vala_ccode_function_add_assignment (_tmp160_, (ValaCCodeExpression*) _tmp162_, (ValaCCodeExpression*) _tmp165_);
-               _vala_ccode_node_unref0 (_tmp165_);
-               _vala_ccode_node_unref0 (_tmp162_);
-               _tmp166_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp167_ = _tmp166_;
-               _tmp168_ = data_var;
-               _tmp169_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp168_, "self");
-               _tmp170_ = _tmp169_;
-               _tmp171_ = vala_ccode_constant_new ("NULL");
-               _tmp172_ = _tmp171_;
-               vala_ccode_function_add_assignment (_tmp167_, (ValaCCodeExpression*) _tmp170_, (ValaCCodeExpression*) _tmp172_);
-               _vala_ccode_node_unref0 (_tmp172_);
-               _vala_ccode_node_unref0 (_tmp170_);
-               _tmp173_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp174_ = _tmp173_;
-               _tmp175_ = vala_ccode_identifier_new ("result");
+       _tmp168_ = ((ValaCCodeBaseModule*) self)->emit_context;
+       vala_ccode_base_module_emit_context_pop_symbol (_tmp168_);
+       _tmp169_ = m;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp169_, VALA_TYPE_CREATION_METHOD)) {
+               ValaCCodeFunction* _tmp170_ = NULL;
+               ValaCCodeFunction* _tmp171_ = NULL;
+               ValaCCodeIdentifier* _tmp172_ = NULL;
+               ValaCCodeIdentifier* _tmp173_ = NULL;
+               ValaCCodeIdentifier* _tmp174_ = NULL;
+               ValaCCodeMemberAccess* _tmp175_ = NULL;
+               ValaCCodeMemberAccess* _tmp176_ = NULL;
+               ValaCCodeFunction* _tmp177_ = NULL;
+               ValaCCodeFunction* _tmp178_ = NULL;
+               ValaCCodeIdentifier* _tmp179_ = NULL;
+               ValaCCodeMemberAccess* _tmp180_ = NULL;
+               ValaCCodeMemberAccess* _tmp181_ = NULL;
+               ValaCCodeConstant* _tmp182_ = NULL;
+               ValaCCodeConstant* _tmp183_ = NULL;
+               ValaCCodeFunction* _tmp184_ = NULL;
+               ValaCCodeFunction* _tmp185_ = NULL;
+               ValaCCodeIdentifier* _tmp186_ = NULL;
+               ValaCCodeIdentifier* _tmp187_ = NULL;
+               _tmp170_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp171_ = _tmp170_;
+               _tmp172_ = vala_ccode_identifier_new ("result");
+               _tmp173_ = _tmp172_;
+               _tmp174_ = data_var;
+               _tmp175_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp174_, "self");
                _tmp176_ = _tmp175_;
-               vala_ccode_function_add_return (_tmp174_, (ValaCCodeExpression*) _tmp176_);
+               vala_ccode_function_add_assignment (_tmp171_, (ValaCCodeExpression*) _tmp173_, (ValaCCodeExpression*) _tmp176_);
                _vala_ccode_node_unref0 (_tmp176_);
+               _vala_ccode_node_unref0 (_tmp173_);
+               _tmp177_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp178_ = _tmp177_;
+               _tmp179_ = data_var;
+               _tmp180_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp179_, "self");
+               _tmp181_ = _tmp180_;
+               _tmp182_ = vala_ccode_constant_new ("NULL");
+               _tmp183_ = _tmp182_;
+               vala_ccode_function_add_assignment (_tmp178_, (ValaCCodeExpression*) _tmp181_, (ValaCCodeExpression*) _tmp183_);
+               _vala_ccode_node_unref0 (_tmp183_);
+               _vala_ccode_node_unref0 (_tmp181_);
+               _tmp184_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp185_ = _tmp184_;
+               _tmp186_ = vala_ccode_identifier_new ("result");
+               _tmp187_ = _tmp186_;
+               vala_ccode_function_add_return (_tmp185_, (ValaCCodeExpression*) _tmp187_);
+               _vala_ccode_node_unref0 (_tmp187_);
        } else {
-               ValaDataType* _tmp177_ = NULL;
-               gboolean _tmp178_ = FALSE;
-               _tmp177_ = return_type;
-               _tmp178_ = vala_data_type_is_real_non_null_struct_type (_tmp177_);
-               if (_tmp178_) {
+               ValaDataType* _tmp188_ = NULL;
+               gboolean _tmp189_ = FALSE;
+               _tmp188_ = return_type;
+               _tmp189_ = vala_data_type_is_real_non_null_struct_type (_tmp188_);
+               if (_tmp189_) {
                        ValaCCodeExpression* cexpr = NULL;
-                       ValaCCodeIdentifier* _tmp179_ = NULL;
-                       ValaCCodeMemberAccess* _tmp180_ = NULL;
-                       ValaDataType* _tmp181_ = NULL;
-                       gboolean _tmp182_ = FALSE;
-                       ValaCCodeFunction* _tmp191_ = NULL;
-                       ValaCCodeFunction* _tmp192_ = NULL;
-                       ValaCCodeIdentifier* _tmp193_ = NULL;
-                       ValaCCodeIdentifier* _tmp194_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp195_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp196_ = NULL;
-                       ValaCCodeExpression* _tmp197_ = NULL;
-                       _tmp179_ = data_var;
-                       _tmp180_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp179_, "result");
-                       cexpr = (ValaCCodeExpression*) _tmp180_;
-                       _tmp181_ = return_type;
-                       _tmp182_ = vala_ccode_base_module_requires_copy ((ValaCCodeBaseModule*) self, _tmp181_);
-                       if (_tmp182_) {
-                               ValaDataType* _tmp183_ = NULL;
-                               ValaCCodeExpression* _tmp184_ = NULL;
-                               ValaGLibValue* _tmp185_ = NULL;
-                               ValaGLibValue* _tmp186_ = NULL;
-                               ValaDataType* _tmp187_ = NULL;
-                               ValaTargetValue* _tmp188_ = NULL;
-                               ValaTargetValue* _tmp189_ = NULL;
-                               ValaCCodeExpression* _tmp190_ = NULL;
-                               _tmp183_ = return_type;
-                               _tmp184_ = cexpr;
-                               _tmp185_ = vala_glib_value_new (_tmp183_, _tmp184_, TRUE);
-                               _tmp186_ = _tmp185_;
-                               _tmp187_ = return_type;
-                               _tmp188_ = vala_ccode_base_module_copy_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp186_, (ValaCodeNode*) _tmp187_);
-                               _tmp189_ = _tmp188_;
-                               _tmp190_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp189_);
+                       ValaCCodeIdentifier* _tmp190_ = NULL;
+                       ValaCCodeMemberAccess* _tmp191_ = NULL;
+                       ValaDataType* _tmp192_ = NULL;
+                       gboolean _tmp193_ = FALSE;
+                       ValaCCodeFunction* _tmp202_ = NULL;
+                       ValaCCodeFunction* _tmp203_ = NULL;
+                       ValaCCodeIdentifier* _tmp204_ = NULL;
+                       ValaCCodeIdentifier* _tmp205_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp206_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp207_ = NULL;
+                       ValaCCodeExpression* _tmp208_ = NULL;
+                       _tmp190_ = data_var;
+                       _tmp191_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp190_, "result");
+                       cexpr = (ValaCCodeExpression*) _tmp191_;
+                       _tmp192_ = return_type;
+                       _tmp193_ = vala_ccode_base_module_requires_copy ((ValaCCodeBaseModule*) self, _tmp192_);
+                       if (_tmp193_) {
+                               ValaDataType* _tmp194_ = NULL;
+                               ValaCCodeExpression* _tmp195_ = NULL;
+                               ValaGLibValue* _tmp196_ = NULL;
+                               ValaGLibValue* _tmp197_ = NULL;
+                               ValaDataType* _tmp198_ = NULL;
+                               ValaTargetValue* _tmp199_ = NULL;
+                               ValaTargetValue* _tmp200_ = NULL;
+                               ValaCCodeExpression* _tmp201_ = NULL;
+                               _tmp194_ = return_type;
+                               _tmp195_ = cexpr;
+                               _tmp196_ = vala_glib_value_new (_tmp194_, _tmp195_, TRUE);
+                               _tmp197_ = _tmp196_;
+                               _tmp198_ = return_type;
+                               _tmp199_ = vala_ccode_base_module_copy_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp197_, (ValaCodeNode*) _tmp198_);
+                               _tmp200_ = _tmp199_;
+                               _tmp201_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp200_);
                                _vala_ccode_node_unref0 (cexpr);
-                               cexpr = _tmp190_;
-                               _vala_target_value_unref0 (_tmp189_);
-                               _vala_target_value_unref0 (_tmp186_);
+                               cexpr = _tmp201_;
+                               _vala_target_value_unref0 (_tmp200_);
+                               _vala_target_value_unref0 (_tmp197_);
                        }
-                       _tmp191_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp192_ = _tmp191_;
-                       _tmp193_ = vala_ccode_identifier_new ("result");
-                       _tmp194_ = _tmp193_;
-                       _tmp195_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp194_);
-                       _tmp196_ = _tmp195_;
-                       _tmp197_ = cexpr;
-                       vala_ccode_function_add_assignment (_tmp192_, (ValaCCodeExpression*) _tmp196_, _tmp197_);
-                       _vala_ccode_node_unref0 (_tmp196_);
-                       _vala_ccode_node_unref0 (_tmp194_);
+                       _tmp202_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp203_ = _tmp202_;
+                       _tmp204_ = vala_ccode_identifier_new ("result");
+                       _tmp205_ = _tmp204_;
+                       _tmp206_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp205_);
+                       _tmp207_ = _tmp206_;
+                       _tmp208_ = cexpr;
+                       vala_ccode_function_add_assignment (_tmp203_, (ValaCCodeExpression*) _tmp207_, _tmp208_);
+                       _vala_ccode_node_unref0 (_tmp207_);
+                       _vala_ccode_node_unref0 (_tmp205_);
                        _vala_ccode_node_unref0 (cexpr);
                } else {
-                       ValaDataType* _tmp198_ = NULL;
-                       _tmp198_ = return_type;
-                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp198_, VALA_TYPE_VOID_TYPE)) {
-                               ValaCCodeFunction* _tmp199_ = NULL;
-                               ValaCCodeFunction* _tmp200_ = NULL;
-                               ValaCCodeIdentifier* _tmp201_ = NULL;
-                               ValaCCodeIdentifier* _tmp202_ = NULL;
-                               ValaCCodeIdentifier* _tmp203_ = NULL;
-                               ValaCCodeMemberAccess* _tmp204_ = NULL;
-                               ValaCCodeMemberAccess* _tmp205_ = NULL;
-                               ValaDataType* _tmp206_ = NULL;
-                               gboolean _tmp252_ = FALSE;
-                               ValaDataType* _tmp253_ = NULL;
-                               ValaCCodeFunction* _tmp264_ = NULL;
-                               ValaCCodeFunction* _tmp265_ = NULL;
-                               ValaCCodeIdentifier* _tmp266_ = NULL;
-                               ValaCCodeIdentifier* _tmp267_ = NULL;
-                               _tmp199_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp200_ = _tmp199_;
-                               _tmp201_ = vala_ccode_identifier_new ("result");
-                               _tmp202_ = _tmp201_;
-                               _tmp203_ = data_var;
-                               _tmp204_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp203_, "result");
-                               _tmp205_ = _tmp204_;
-                               vala_ccode_function_add_assignment (_tmp200_, (ValaCCodeExpression*) _tmp202_, (ValaCCodeExpression*) _tmp205_);
-                               _vala_ccode_node_unref0 (_tmp205_);
-                               _vala_ccode_node_unref0 (_tmp202_);
-                               _tmp206_ = return_type;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp206_, VALA_TYPE_ARRAY_TYPE)) {
+                       ValaDataType* _tmp209_ = NULL;
+                       _tmp209_ = return_type;
+                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp209_, VALA_TYPE_VOID_TYPE)) {
+                               ValaCCodeFunction* _tmp210_ = NULL;
+                               ValaCCodeFunction* _tmp211_ = NULL;
+                               ValaCCodeIdentifier* _tmp212_ = NULL;
+                               ValaCCodeIdentifier* _tmp213_ = NULL;
+                               ValaCCodeIdentifier* _tmp214_ = NULL;
+                               ValaCCodeMemberAccess* _tmp215_ = NULL;
+                               ValaCCodeMemberAccess* _tmp216_ = NULL;
+                               ValaDataType* _tmp217_ = NULL;
+                               gboolean _tmp263_ = FALSE;
+                               ValaDataType* _tmp264_ = NULL;
+                               ValaCCodeFunction* _tmp275_ = NULL;
+                               ValaCCodeFunction* _tmp276_ = NULL;
+                               ValaCCodeIdentifier* _tmp277_ = NULL;
+                               ValaCCodeIdentifier* _tmp278_ = NULL;
+                               _tmp210_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp211_ = _tmp210_;
+                               _tmp212_ = vala_ccode_identifier_new ("result");
+                               _tmp213_ = _tmp212_;
+                               _tmp214_ = data_var;
+                               _tmp215_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp214_, "result");
+                               _tmp216_ = _tmp215_;
+                               vala_ccode_function_add_assignment (_tmp211_, (ValaCCodeExpression*) _tmp213_, (ValaCCodeExpression*) _tmp216_);
+                               _vala_ccode_node_unref0 (_tmp216_);
+                               _vala_ccode_node_unref0 (_tmp213_);
+                               _tmp217_ = return_type;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp217_, VALA_TYPE_ARRAY_TYPE)) {
                                        ValaArrayType* array_type = NULL;
-                                       ValaDataType* _tmp207_ = NULL;
-                                       ValaArrayType* _tmp208_ = NULL;
-                                       ValaMethod* _tmp209_ = NULL;
-                                       gboolean _tmp210_ = FALSE;
-                                       _tmp207_ = return_type;
-                                       _tmp208_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp207_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                       array_type = _tmp208_;
-                                       _tmp209_ = m;
-                                       _tmp210_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp209_);
-                                       if (_tmp210_) {
+                                       ValaDataType* _tmp218_ = NULL;
+                                       ValaArrayType* _tmp219_ = NULL;
+                                       ValaMethod* _tmp220_ = NULL;
+                                       gboolean _tmp221_ = FALSE;
+                                       _tmp218_ = return_type;
+                                       _tmp219_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp218_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                       array_type = _tmp219_;
+                                       _tmp220_ = m;
+                                       _tmp221_ = vala_ccode_base_module_get_ccode_array_length ((ValaCodeNode*) _tmp220_);
+                                       if (_tmp221_) {
                                                {
                                                        gint dim = 0;
                                                        dim = 1;
                                                        {
-                                                               gboolean _tmp211_ = FALSE;
-                                                               _tmp211_ = TRUE;
+                                                               gboolean _tmp222_ = FALSE;
+                                                               _tmp222_ = TRUE;
                                                                while (TRUE) {
-                                                                       gint _tmp213_ = 0;
-                                                                       ValaArrayType* _tmp214_ = NULL;
-                                                                       gint _tmp215_ = 0;
-                                                                       gint _tmp216_ = 0;
-                                                                       ValaCCodeFunction* _tmp217_ = NULL;
-                                                                       ValaCCodeFunction* _tmp218_ = NULL;
-                                                                       gint _tmp219_ = 0;
-                                                                       gchar* _tmp220_ = NULL;
-                                                                       gchar* _tmp221_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp222_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp223_ = NULL;
-                                                                       ValaCCodeUnaryExpression* _tmp224_ = NULL;
-                                                                       ValaCCodeUnaryExpression* _tmp225_ = NULL;
-                                                                       ValaCCodeIdentifier* _tmp226_ = NULL;
+                                                                       gint _tmp224_ = 0;
+                                                                       ValaArrayType* _tmp225_ = NULL;
+                                                                       gint _tmp226_ = 0;
                                                                        gint _tmp227_ = 0;
-                                                                       gchar* _tmp228_ = NULL;
-                                                                       gchar* _tmp229_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp230_ = NULL;
-                                                                       ValaCCodeMemberAccess* _tmp231_ = NULL;
-                                                                       if (!_tmp211_) {
-                                                                               gint _tmp212_ = 0;
-                                                                               _tmp212_ = dim;
-                                                                               dim = _tmp212_ + 1;
+                                                                       ValaCCodeFunction* _tmp228_ = NULL;
+                                                                       ValaCCodeFunction* _tmp229_ = NULL;
+                                                                       gint _tmp230_ = 0;
+                                                                       gchar* _tmp231_ = NULL;
+                                                                       gchar* _tmp232_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp233_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp234_ = NULL;
+                                                                       ValaCCodeUnaryExpression* _tmp235_ = NULL;
+                                                                       ValaCCodeUnaryExpression* _tmp236_ = NULL;
+                                                                       ValaCCodeIdentifier* _tmp237_ = NULL;
+                                                                       gint _tmp238_ = 0;
+                                                                       gchar* _tmp239_ = NULL;
+                                                                       gchar* _tmp240_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp241_ = NULL;
+                                                                       ValaCCodeMemberAccess* _tmp242_ = NULL;
+                                                                       if (!_tmp222_) {
+                                                                               gint _tmp223_ = 0;
+                                                                               _tmp223_ = dim;
+                                                                               dim = _tmp223_ + 1;
                                                                        }
-                                                                       _tmp211_ = FALSE;
-                                                                       _tmp213_ = dim;
-                                                                       _tmp214_ = array_type;
-                                                                       _tmp215_ = vala_array_type_get_rank (_tmp214_);
-                                                                       _tmp216_ = _tmp215_;
-                                                                       if (!(_tmp213_ <= _tmp216_)) {
+                                                                       _tmp222_ = FALSE;
+                                                                       _tmp224_ = dim;
+                                                                       _tmp225_ = array_type;
+                                                                       _tmp226_ = vala_array_type_get_rank (_tmp225_);
+                                                                       _tmp227_ = _tmp226_;
+                                                                       if (!(_tmp224_ <= _tmp227_)) {
                                                                                break;
                                                                        }
-                                                                       _tmp217_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                                                       _tmp218_ = _tmp217_;
-                                                                       _tmp219_ = dim;
-                                                                       _tmp220_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp219_);
-                                                                       _tmp221_ = _tmp220_;
-                                                                       _tmp222_ = vala_ccode_identifier_new (_tmp221_);
-                                                                       _tmp223_ = _tmp222_;
-                                                                       _tmp224_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp223_);
-                                                                       _tmp225_ = _tmp224_;
-                                                                       _tmp226_ = data_var;
-                                                                       _tmp227_ = dim;
-                                                                       _tmp228_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp227_);
+                                                                       _tmp228_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                                        _tmp229_ = _tmp228_;
-                                                                       _tmp230_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp226_, _tmp229_);
-                                                                       _tmp231_ = _tmp230_;
-                                                                       vala_ccode_function_add_assignment (_tmp218_, (ValaCCodeExpression*) _tmp225_, (ValaCCodeExpression*) _tmp231_);
-                                                                       _vala_ccode_node_unref0 (_tmp231_);
-                                                                       _g_free0 (_tmp229_);
-                                                                       _vala_ccode_node_unref0 (_tmp225_);
-                                                                       _vala_ccode_node_unref0 (_tmp223_);
-                                                                       _g_free0 (_tmp221_);
+                                                                       _tmp230_ = dim;
+                                                                       _tmp231_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp230_);
+                                                                       _tmp232_ = _tmp231_;
+                                                                       _tmp233_ = vala_ccode_identifier_new (_tmp232_);
+                                                                       _tmp234_ = _tmp233_;
+                                                                       _tmp235_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp234_);
+                                                                       _tmp236_ = _tmp235_;
+                                                                       _tmp237_ = data_var;
+                                                                       _tmp238_ = dim;
+                                                                       _tmp239_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp238_);
+                                                                       _tmp240_ = _tmp239_;
+                                                                       _tmp241_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp237_, _tmp240_);
+                                                                       _tmp242_ = _tmp241_;
+                                                                       vala_ccode_function_add_assignment (_tmp229_, (ValaCCodeExpression*) _tmp236_, (ValaCCodeExpression*) _tmp242_);
+                                                                       _vala_ccode_node_unref0 (_tmp242_);
+                                                                       _g_free0 (_tmp240_);
+                                                                       _vala_ccode_node_unref0 (_tmp236_);
+                                                                       _vala_ccode_node_unref0 (_tmp234_);
+                                                                       _g_free0 (_tmp232_);
                                                                }
                                                        }
                                                }
                                        }
                                        _vala_code_node_unref0 (array_type);
                                } else {
-                                       gboolean _tmp232_ = FALSE;
-                                       ValaDataType* _tmp233_ = NULL;
-                                       _tmp233_ = return_type;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp233_, VALA_TYPE_DELEGATE_TYPE)) {
-                                               ValaDataType* _tmp234_ = NULL;
-                                               ValaDelegate* _tmp235_ = NULL;
-                                               ValaDelegate* _tmp236_ = NULL;
-                                               gboolean _tmp237_ = FALSE;
-                                               gboolean _tmp238_ = FALSE;
-                                               _tmp234_ = return_type;
-                                               _tmp235_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp234_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                                               _tmp236_ = _tmp235_;
-                                               _tmp237_ = vala_delegate_get_has_target (_tmp236_);
-                                               _tmp238_ = _tmp237_;
-                                               _tmp232_ = _tmp238_;
+                                       gboolean _tmp243_ = FALSE;
+                                       ValaDataType* _tmp244_ = NULL;
+                                       _tmp244_ = return_type;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp244_, VALA_TYPE_DELEGATE_TYPE)) {
+                                               ValaDataType* _tmp245_ = NULL;
+                                               ValaDelegate* _tmp246_ = NULL;
+                                               ValaDelegate* _tmp247_ = NULL;
+                                               gboolean _tmp248_ = FALSE;
+                                               gboolean _tmp249_ = FALSE;
+                                               _tmp245_ = return_type;
+                                               _tmp246_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp245_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                                               _tmp247_ = _tmp246_;
+                                               _tmp248_ = vala_delegate_get_has_target (_tmp247_);
+                                               _tmp249_ = _tmp248_;
+                                               _tmp243_ = _tmp249_;
                                        } else {
-                                               _tmp232_ = FALSE;
+                                               _tmp243_ = FALSE;
                                        }
-                                       if (_tmp232_) {
-                                               ValaCCodeFunction* _tmp239_ = NULL;
-                                               ValaCCodeFunction* _tmp240_ = NULL;
-                                               gchar* _tmp241_ = NULL;
-                                               gchar* _tmp242_ = NULL;
-                                               ValaCCodeIdentifier* _tmp243_ = NULL;
-                                               ValaCCodeIdentifier* _tmp244_ = NULL;
-                                               ValaCCodeUnaryExpression* _tmp245_ = NULL;
-                                               ValaCCodeUnaryExpression* _tmp246_ = NULL;
-                                               ValaCCodeIdentifier* _tmp247_ = NULL;
-                                               gchar* _tmp248_ = NULL;
-                                               gchar* _tmp249_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp250_ = NULL;
-                                               ValaCCodeMemberAccess* _tmp251_ = NULL;
-                                               _tmp239_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                               _tmp240_ = _tmp239_;
-                                               _tmp241_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
-                                               _tmp242_ = _tmp241_;
-                                               _tmp243_ = vala_ccode_identifier_new (_tmp242_);
-                                               _tmp244_ = _tmp243_;
-                                               _tmp245_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp244_);
-                                               _tmp246_ = _tmp245_;
-                                               _tmp247_ = data_var;
-                                               _tmp248_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
-                                               _tmp249_ = _tmp248_;
-                                               _tmp250_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp247_, _tmp249_);
+                                       if (_tmp243_) {
+                                               ValaCCodeFunction* _tmp250_ = NULL;
+                                               ValaCCodeFunction* _tmp251_ = NULL;
+                                               gchar* _tmp252_ = NULL;
+                                               gchar* _tmp253_ = NULL;
+                                               ValaCCodeIdentifier* _tmp254_ = NULL;
+                                               ValaCCodeIdentifier* _tmp255_ = NULL;
+                                               ValaCCodeUnaryExpression* _tmp256_ = NULL;
+                                               ValaCCodeUnaryExpression* _tmp257_ = NULL;
+                                               ValaCCodeIdentifier* _tmp258_ = NULL;
+                                               gchar* _tmp259_ = NULL;
+                                               gchar* _tmp260_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp261_ = NULL;
+                                               ValaCCodeMemberAccess* _tmp262_ = NULL;
+                                               _tmp250_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                                                _tmp251_ = _tmp250_;
-                                               vala_ccode_function_add_assignment (_tmp240_, (ValaCCodeExpression*) _tmp246_, (ValaCCodeExpression*) _tmp251_);
-                                               _vala_ccode_node_unref0 (_tmp251_);
-                                               _g_free0 (_tmp249_);
-                                               _vala_ccode_node_unref0 (_tmp246_);
-                                               _vala_ccode_node_unref0 (_tmp244_);
-                                               _g_free0 (_tmp242_);
+                                               _tmp252_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
+                                               _tmp253_ = _tmp252_;
+                                               _tmp254_ = vala_ccode_identifier_new (_tmp253_);
+                                               _tmp255_ = _tmp254_;
+                                               _tmp256_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp255_);
+                                               _tmp257_ = _tmp256_;
+                                               _tmp258_ = data_var;
+                                               _tmp259_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
+                                               _tmp260_ = _tmp259_;
+                                               _tmp261_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp258_, _tmp260_);
+                                               _tmp262_ = _tmp261_;
+                                               vala_ccode_function_add_assignment (_tmp251_, (ValaCCodeExpression*) _tmp257_, (ValaCCodeExpression*) _tmp262_);
+                                               _vala_ccode_node_unref0 (_tmp262_);
+                                               _g_free0 (_tmp260_);
+                                               _vala_ccode_node_unref0 (_tmp257_);
+                                               _vala_ccode_node_unref0 (_tmp255_);
+                                               _g_free0 (_tmp253_);
                                        }
                                }
-                               _tmp253_ = return_type;
-                               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp253_, VALA_TYPE_VALUE_TYPE)) {
-                                       _tmp252_ = TRUE;
+                               _tmp264_ = return_type;
+                               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp264_, VALA_TYPE_VALUE_TYPE)) {
+                                       _tmp263_ = TRUE;
                                } else {
-                                       ValaDataType* _tmp254_ = NULL;
-                                       gboolean _tmp255_ = FALSE;
-                                       gboolean _tmp256_ = FALSE;
-                                       _tmp254_ = return_type;
-                                       _tmp255_ = vala_data_type_get_nullable (_tmp254_);
-                                       _tmp256_ = _tmp255_;
-                                       _tmp252_ = _tmp256_;
+                                       ValaDataType* _tmp265_ = NULL;
+                                       gboolean _tmp266_ = FALSE;
+                                       gboolean _tmp267_ = FALSE;
+                                       _tmp265_ = return_type;
+                                       _tmp266_ = vala_data_type_get_nullable (_tmp265_);
+                                       _tmp267_ = _tmp266_;
+                                       _tmp263_ = _tmp267_;
                                }
-                               if (_tmp252_) {
-                                       ValaCCodeFunction* _tmp257_ = NULL;
-                                       ValaCCodeFunction* _tmp258_ = NULL;
-                                       ValaCCodeIdentifier* _tmp259_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp260_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp261_ = NULL;
-                                       ValaCCodeConstant* _tmp262_ = NULL;
-                                       ValaCCodeConstant* _tmp263_ = NULL;
-                                       _tmp257_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp258_ = _tmp257_;
-                                       _tmp259_ = data_var;
-                                       _tmp260_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp259_, "result");
-                                       _tmp261_ = _tmp260_;
-                                       _tmp262_ = vala_ccode_constant_new ("NULL");
-                                       _tmp263_ = _tmp262_;
-                                       vala_ccode_function_add_assignment (_tmp258_, (ValaCCodeExpression*) _tmp261_, (ValaCCodeExpression*) _tmp263_);
-                                       _vala_ccode_node_unref0 (_tmp263_);
-                                       _vala_ccode_node_unref0 (_tmp261_);
+                               if (_tmp263_) {
+                                       ValaCCodeFunction* _tmp268_ = NULL;
+                                       ValaCCodeFunction* _tmp269_ = NULL;
+                                       ValaCCodeIdentifier* _tmp270_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp271_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp272_ = NULL;
+                                       ValaCCodeConstant* _tmp273_ = NULL;
+                                       ValaCCodeConstant* _tmp274_ = NULL;
+                                       _tmp268_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp269_ = _tmp268_;
+                                       _tmp270_ = data_var;
+                                       _tmp271_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp270_, "result");
+                                       _tmp272_ = _tmp271_;
+                                       _tmp273_ = vala_ccode_constant_new ("NULL");
+                                       _tmp274_ = _tmp273_;
+                                       vala_ccode_function_add_assignment (_tmp269_, (ValaCCodeExpression*) _tmp272_, (ValaCCodeExpression*) _tmp274_);
+                                       _vala_ccode_node_unref0 (_tmp274_);
+                                       _vala_ccode_node_unref0 (_tmp272_);
                                }
-                               _tmp264_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp265_ = _tmp264_;
-                               _tmp266_ = vala_ccode_identifier_new ("result");
-                               _tmp267_ = _tmp266_;
-                               vala_ccode_function_add_return (_tmp265_, (ValaCCodeExpression*) _tmp267_);
-                               _vala_ccode_node_unref0 (_tmp267_);
+                               _tmp275_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp276_ = _tmp275_;
+                               _tmp277_ = vala_ccode_identifier_new ("result");
+                               _tmp278_ = _tmp277_;
+                               vala_ccode_function_add_return (_tmp276_, (ValaCCodeExpression*) _tmp278_);
+                               _vala_ccode_node_unref0 (_tmp278_);
                        }
                }
        }
        vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-       _tmp268_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp269_ = finishfunc;
-       vala_ccode_file_add_function (_tmp268_, _tmp269_);
+       _tmp279_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp280_ = finishfunc;
+       vala_ccode_file_add_function (_tmp279_, _tmp280_);
        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
        _vala_ccode_node_unref0 (ccall);
        _vala_ccode_node_unref0 (simple_async_result_cast);
@@ -5439,15 +5432,15 @@ ValaGAsyncModule* vala_gasync_module_new (void) {
 
 static void vala_gasync_module_class_init (ValaGAsyncModuleClass * klass) {
        vala_gasync_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_method_declaration = vala_gasync_module_real_generate_method_declaration;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method = vala_gasync_module_real_visit_method;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_creation_method = vala_gasync_module_real_visit_creation_method;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_ready_function = vala_gasync_module_real_generate_ready_function;
-       VALA_GTYPE_MODULE_CLASS (klass)->generate_virtual_method_declaration = vala_gasync_module_real_generate_virtual_method_declaration;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_yield_statement = vala_gasync_module_real_visit_yield_statement;
-       VALA_GERROR_MODULE_CLASS (klass)->return_with_exception = vala_gasync_module_real_return_with_exception;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_return_statement = vala_gasync_module_real_visit_return_statement;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_cparameters = vala_gasync_module_real_generate_cparameters;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_method_declaration = vala_gasync_module_real_generate_method_declaration;
+       ((ValaCodeVisitorClass *) klass)->visit_method = vala_gasync_module_real_visit_method;
+       ((ValaCodeVisitorClass *) klass)->visit_creation_method = vala_gasync_module_real_visit_creation_method;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_ready_function = vala_gasync_module_real_generate_ready_function;
+       ((ValaGTypeModuleClass *) klass)->generate_virtual_method_declaration = vala_gasync_module_real_generate_virtual_method_declaration;
+       ((ValaCodeVisitorClass *) klass)->visit_yield_statement = vala_gasync_module_real_visit_yield_statement;
+       ((ValaGErrorModuleClass *) klass)->return_with_exception = vala_gasync_module_real_return_with_exception;
+       ((ValaCodeVisitorClass *) klass)->visit_return_statement = vala_gasync_module_real_visit_return_statement;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_cparameters = vala_gasync_module_real_generate_cparameters;
 }
 
 
index 1d18369..928e67b 100644 (file)
 using GLib;
 
 public class Vala.GAsyncModule : GtkModule {
-       bool needs_dummy_object (Method m) {
-               var t = m.parent_symbol as TypeSymbol;
-               return (t == null || !t.is_subtype_of (gobject_type) || m is CreationMethod || m.binding != MemberBinding.INSTANCE)
-                       && !context.require_glib_version (2, 20);
-       }
-
        CCodeStruct generate_data_struct (Method m) {
                string dataname = Symbol.lower_case_to_camel_case (get_ccode_name (m)) + "Data";
                var data = new CCodeStruct ("_" + dataname);
 
                data.add_field ("int", "_state_");
-               if (needs_dummy_object (m)) {
-                       data.add_field ("GObject*", "_dummy_object_");
-               }
                data.add_field ("GObject*", "_source_object_");
                data.add_field ("GAsyncResult*", "_res_");
                data.add_field ("GSimpleAsyncResult*", "_async_result");
@@ -146,15 +137,6 @@ public class Vala.GAsyncModule : GtkModule {
                        }
                }
 
-               if (needs_dummy_object (m)) {
-                       // free dummy object being created in g_simple_async_result_new
-                       var dummy_object = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_dummy_object_");
-                       var free_dummy_object = new CCodeFunctionCall (new CCodeIdentifier ("g_object_unref"));
-                       free_dummy_object.add_argument (dummy_object);
-
-                       ccode.add_expression (free_dummy_object);
-               }
-
                var freecall = new CCodeFunctionCall (new CCodeIdentifier ("g_slice_free"));
                freecall.add_argument (new CCodeIdentifier (dataname));
                freecall.add_argument (new CCodeIdentifier ("_data_"));
@@ -186,6 +168,8 @@ public class Vala.GAsyncModule : GtkModule {
                        cfile.add_function_declaration (asyncfunc);
                } else if (m.is_private_symbol ()) {
                        asyncfunc.modifiers |= CCodeModifiers.STATIC;
+               } else if (context.hide_internal && m.is_internal_symbol ()) {
+                       asyncfunc.modifiers |= CCodeModifiers.INTERNAL;
                }
 
                push_function (asyncfunc);
@@ -227,19 +211,7 @@ public class Vala.GAsyncModule : GtkModule {
 
                        create_result.add_argument (gobject_cast);
                } else {
-                       if (context.require_glib_version (2, 20)) {
-                               create_result.add_argument (new CCodeConstant ("NULL"));
-                       } else {
-                               // needs dummy object
-                               var object_creation = new CCodeFunctionCall (new CCodeIdentifier ("g_object_newv"));
-                               object_creation.add_argument (new CCodeConstant ("G_TYPE_OBJECT"));
-                               object_creation.add_argument (new CCodeConstant ("0"));
-                               object_creation.add_argument (new CCodeConstant ("NULL"));
-
-                               ccode.add_assignment (new CCodeMemberAccess.pointer (data_var, "_dummy_object_"), object_creation);
-
-                               create_result.add_argument (new CCodeMemberAccess.pointer (data_var, "_dummy_object_"));
-                       }
+                       create_result.add_argument (new CCodeConstant ("NULL"));
                }
 
                create_result.add_argument (new CCodeIdentifier ("_callback_"));
@@ -337,6 +309,8 @@ public class Vala.GAsyncModule : GtkModule {
 
                        if (m.is_private_symbol ()) {
                                asyncfunc.modifiers |= CCodeModifiers.STATIC;
+                       } else if (context.hide_internal && m.is_internal_symbol ()) {
+                               asyncfunc.modifiers |= CCodeModifiers.INTERNAL;
                        }
 
                        // do not generate _new functions for creation methods of abstract classes
@@ -352,6 +326,8 @@ public class Vala.GAsyncModule : GtkModule {
 
                        if (m.is_private_symbol ()) {
                                finishfunc.modifiers |= CCodeModifiers.STATIC;
+                       } else if (context.hide_internal && m.is_internal_symbol ()) {
+                               finishfunc.modifiers |= CCodeModifiers.INTERNAL;
                        }
 
                        // do not generate _new functions for creation methods of abstract classes
@@ -367,6 +343,8 @@ public class Vala.GAsyncModule : GtkModule {
 
                                if (m.is_private_symbol ()) {
                                        function.modifiers |= CCodeModifiers.STATIC;
+                               } else if (context.hide_internal && m.is_internal_symbol ()) {
+                                       function.modifiers |= CCodeModifiers.INTERNAL;
                                }
 
                                cparam_map = new HashMap<int,CCodeParameter> (direct_hash, direct_equal);
@@ -378,6 +356,8 @@ public class Vala.GAsyncModule : GtkModule {
 
                                if (m.is_private_symbol ()) {
                                        function.modifiers |= CCodeModifiers.STATIC;
+                               } else if (context.hide_internal && m.is_internal_symbol ()) {
+                                       function.modifiers |= CCodeModifiers.INTERNAL;
                                }
 
                                cparam_map = new HashMap<int,CCodeParameter> (direct_hash, direct_equal);
@@ -517,6 +497,8 @@ public class Vala.GAsyncModule : GtkModule {
 
                if (m.is_private_symbol () || m.base_method != null || m.base_interface_method != null) {
                        finishfunc.modifiers |= CCodeModifiers.STATIC;
+               } else if (context.hide_internal && m.is_internal_symbol ()) {
+                       finishfunc.modifiers |= CCodeModifiers.INTERNAL;
                }
 
                push_function (finishfunc);
index 2d4c248..c7361ff 100644 (file)
@@ -584,7 +584,7 @@ GType vala_gd_bus_client_module_get_type (void) G_GNUC_CONST;
 enum  {
        VALA_GD_BUS_CLIENT_MODULE_DUMMY_PROPERTY
 };
-static GType vala_gd_bus_client_module_call_type_get_type (void) G_GNUC_UNUSED;
+static GType vala_gd_bus_client_module_call_type_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
 ValaCCodeConstant* vala_gd_bus_client_module_get_dbus_timeout (ValaGDBusClientModule* self, ValaSymbol* symbol);
 static void vala_gd_bus_client_module_real_generate_dynamic_method_wrapper (ValaCCodeBaseModule* base, ValaDynamicMethod* method);
 gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node);
@@ -642,6 +642,7 @@ gint vala_ccode_base_module_get_param_pos (ValaCCodeBaseModule* self, gdouble pa
 void vala_gvariant_module_write_expression (ValaGVariantModule* self, ValaDataType* type, ValaCCodeExpression* builder_expr, ValaCCodeExpression* expr, ValaSymbol* sym);
 ValaCCodeExpression* vala_ccode_base_module_deserialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail);
 static void vala_gd_bus_client_module_real_register_dbus_info (ValaCCodeBaseModule* base, ValaCCodeBlock* block, ValaObjectTypeSymbol* sym);
+ValaCCodeExpression* vala_gd_bus_module_get_interface_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym);
 ValaGDBusClientModule* vala_gd_bus_client_module_new (void);
 ValaGDBusClientModule* vala_gd_bus_client_module_construct (GType object_type);
 ValaGDBusModule* vala_gd_bus_module_new (void);
@@ -2043,102 +2044,125 @@ static void vala_gd_bus_client_module_real_visit_method_call (ValaCodeVisitor* b
        ValaDataType* _tmp50_ = NULL;
        ValaCCodeExpression* proxy_type = NULL;
        ValaCCodeExpression* dbus_iface_name = NULL;
+       ValaCCodeExpression* dbus_iface_info = NULL;
        ValaObjectType* object_type = NULL;
        ValaDataType* _tmp51_ = NULL;
        ValaObjectType* _tmp52_ = NULL;
        ValaObjectType* _tmp53_ = NULL;
-       gboolean _tmp120_ = FALSE;
-       gboolean _tmp121_ = FALSE;
+       ValaCCodeFunctionCall* quark = NULL;
+       ValaCCodeIdentifier* _tmp120_ = NULL;
+       ValaCCodeIdentifier* _tmp121_ = NULL;
+       ValaCCodeFunctionCall* _tmp122_ = NULL;
+       ValaCCodeFunctionCall* _tmp123_ = NULL;
+       ValaCCodeFunctionCall* _tmp124_ = NULL;
+       ValaCCodeConstant* _tmp125_ = NULL;
+       ValaCCodeConstant* _tmp126_ = NULL;
+       ValaCCodeFunctionCall* get_qdata = NULL;
+       ValaCCodeIdentifier* _tmp127_ = NULL;
+       ValaCCodeIdentifier* _tmp128_ = NULL;
+       ValaCCodeFunctionCall* _tmp129_ = NULL;
+       ValaCCodeFunctionCall* _tmp130_ = NULL;
+       ValaCCodeFunctionCall* _tmp131_ = NULL;
+       ValaDataType* _tmp132_ = NULL;
+       ValaCCodeExpression* _tmp133_ = NULL;
+       ValaCCodeExpression* _tmp134_ = NULL;
+       ValaCCodeFunctionCall* _tmp135_ = NULL;
+       ValaCCodeFunctionCall* _tmp136_ = NULL;
+       ValaCCodeFunctionCall* _tmp137_ = NULL;
+       ValaCCodeExpression* _tmp138_ = NULL;
+       gboolean _tmp139_ = FALSE;
+       gboolean _tmp140_ = FALSE;
        gint base_arg_index = 0;
-       gboolean _tmp209_ = FALSE;
-       gboolean _tmp210_ = FALSE;
+       gboolean _tmp228_ = FALSE;
+       gboolean _tmp229_ = FALSE;
        ValaList* args = NULL;
-       ValaMethodCall* _tmp212_ = NULL;
-       ValaList* _tmp213_ = NULL;
+       ValaMethodCall* _tmp231_ = NULL;
+       ValaList* _tmp232_ = NULL;
        ValaExpression* name = NULL;
-       ValaList* _tmp214_ = NULL;
-       gint _tmp215_ = 0;
-       gpointer _tmp216_ = NULL;
+       ValaList* _tmp233_ = NULL;
+       gint _tmp234_ = 0;
+       gpointer _tmp235_ = NULL;
        ValaExpression* object_path = NULL;
-       ValaList* _tmp217_ = NULL;
-       gint _tmp218_ = 0;
-       gpointer _tmp219_ = NULL;
+       ValaList* _tmp236_ = NULL;
+       gint _tmp237_ = 0;
+       gpointer _tmp238_ = NULL;
        ValaExpression* flags = NULL;
-       ValaList* _tmp220_ = NULL;
-       gint _tmp221_ = 0;
-       gpointer _tmp222_ = NULL;
+       ValaList* _tmp239_ = NULL;
+       gint _tmp240_ = 0;
+       gpointer _tmp241_ = NULL;
        ValaExpression* cancellable = NULL;
-       ValaList* _tmp223_ = NULL;
-       gint _tmp224_ = 0;
-       gpointer _tmp225_ = NULL;
+       ValaList* _tmp242_ = NULL;
+       gint _tmp243_ = 0;
+       gpointer _tmp244_ = NULL;
        ValaCCodeFunctionCall* ccall = NULL;
-       gboolean _tmp226_ = FALSE;
-       gboolean _tmp227_ = FALSE;
-       ValaCCodeFunctionCall* _tmp235_ = NULL;
-       ValaCCodeExpression* _tmp236_ = NULL;
-       gboolean _tmp237_ = FALSE;
-       gboolean _tmp238_ = FALSE;
-       ValaCCodeFunctionCall* _tmp243_ = NULL;
-       ValaExpression* _tmp244_ = NULL;
-       ValaCCodeExpression* _tmp245_ = NULL;
-       ValaCCodeExpression* _tmp246_ = NULL;
-       gboolean _tmp247_ = FALSE;
-       gboolean _tmp248_ = FALSE;
-       ValaCCodeFunctionCall* _tmp279_ = NULL;
-       ValaCCodeConstant* _tmp280_ = NULL;
-       ValaCCodeConstant* _tmp281_ = NULL;
-       ValaCCodeFunctionCall* _tmp282_ = NULL;
-       ValaExpression* _tmp283_ = NULL;
-       ValaCCodeExpression* _tmp284_ = NULL;
-       ValaCCodeExpression* _tmp285_ = NULL;
-       ValaCCodeFunctionCall* _tmp286_ = NULL;
-       ValaCCodeConstant* _tmp287_ = NULL;
-       ValaCCodeConstant* _tmp288_ = NULL;
-       ValaCCodeFunctionCall* _tmp289_ = NULL;
-       ValaExpression* _tmp290_ = NULL;
-       ValaCCodeExpression* _tmp291_ = NULL;
-       ValaCCodeExpression* _tmp292_ = NULL;
-       gboolean _tmp293_ = FALSE;
-       gboolean _tmp294_ = FALSE;
-       ValaCCodeFunctionCall* _tmp336_ = NULL;
-       ValaCCodeConstant* _tmp337_ = NULL;
-       ValaCCodeConstant* _tmp338_ = NULL;
-       ValaCCodeFunctionCall* _tmp339_ = NULL;
-       ValaExpression* _tmp340_ = NULL;
-       ValaCCodeExpression* _tmp341_ = NULL;
-       ValaCCodeExpression* _tmp342_ = NULL;
-       ValaCCodeFunctionCall* _tmp343_ = NULL;
-       ValaCCodeConstant* _tmp344_ = NULL;
-       ValaCCodeConstant* _tmp345_ = NULL;
-       ValaCCodeFunctionCall* _tmp346_ = NULL;
-       ValaCCodeExpression* _tmp347_ = NULL;
-       ValaCCodeFunctionCall* _tmp348_ = NULL;
-       ValaCCodeConstant* _tmp349_ = NULL;
-       ValaCCodeConstant* _tmp350_ = NULL;
-       gboolean _tmp351_ = FALSE;
-       gboolean _tmp352_ = FALSE;
+       gboolean _tmp245_ = FALSE;
+       gboolean _tmp246_ = FALSE;
+       ValaCCodeFunctionCall* _tmp254_ = NULL;
+       ValaCCodeExpression* _tmp255_ = NULL;
+       gboolean _tmp256_ = FALSE;
+       gboolean _tmp257_ = FALSE;
+       ValaCCodeFunctionCall* _tmp262_ = NULL;
+       ValaExpression* _tmp263_ = NULL;
+       ValaCCodeExpression* _tmp264_ = NULL;
+       ValaCCodeExpression* _tmp265_ = NULL;
+       gboolean _tmp266_ = FALSE;
+       gboolean _tmp267_ = FALSE;
+       ValaCCodeFunctionCall* _tmp298_ = NULL;
+       ValaCCodeConstant* _tmp299_ = NULL;
+       ValaCCodeConstant* _tmp300_ = NULL;
+       ValaCCodeFunctionCall* _tmp301_ = NULL;
+       ValaExpression* _tmp302_ = NULL;
+       ValaCCodeExpression* _tmp303_ = NULL;
+       ValaCCodeExpression* _tmp304_ = NULL;
+       ValaCCodeFunctionCall* _tmp305_ = NULL;
+       ValaCCodeConstant* _tmp306_ = NULL;
+       ValaCCodeConstant* _tmp307_ = NULL;
+       ValaCCodeFunctionCall* _tmp308_ = NULL;
+       ValaExpression* _tmp309_ = NULL;
+       ValaCCodeExpression* _tmp310_ = NULL;
+       ValaCCodeExpression* _tmp311_ = NULL;
+       gboolean _tmp312_ = FALSE;
+       gboolean _tmp313_ = FALSE;
+       ValaCCodeFunctionCall* _tmp355_ = NULL;
+       ValaCCodeConstant* _tmp356_ = NULL;
+       ValaCCodeConstant* _tmp357_ = NULL;
+       ValaCCodeFunctionCall* _tmp358_ = NULL;
+       ValaExpression* _tmp359_ = NULL;
+       ValaCCodeExpression* _tmp360_ = NULL;
+       ValaCCodeExpression* _tmp361_ = NULL;
+       ValaCCodeFunctionCall* _tmp362_ = NULL;
+       ValaCCodeConstant* _tmp363_ = NULL;
+       ValaCCodeConstant* _tmp364_ = NULL;
+       ValaCCodeFunctionCall* _tmp365_ = NULL;
+       ValaCCodeExpression* _tmp366_ = NULL;
+       ValaCCodeExpression* _tmp367_ = NULL;
+       ValaCCodeFunctionCall* _tmp373_ = NULL;
+       ValaCCodeConstant* _tmp374_ = NULL;
+       ValaCCodeConstant* _tmp375_ = NULL;
+       gboolean _tmp376_ = FALSE;
+       gboolean _tmp377_ = FALSE;
        ValaLocalVariable* temp_var = NULL;
-       ValaMethodCall* _tmp402_ = NULL;
-       ValaDataType* _tmp403_ = NULL;
-       ValaDataType* _tmp404_ = NULL;
-       ValaMethodCall* _tmp405_ = NULL;
-       ValaDataType* _tmp406_ = NULL;
-       ValaDataType* _tmp407_ = NULL;
-       gboolean _tmp408_ = FALSE;
-       gboolean _tmp409_ = FALSE;
-       ValaLocalVariable* _tmp410_ = NULL;
+       ValaMethodCall* _tmp427_ = NULL;
+       ValaDataType* _tmp428_ = NULL;
+       ValaDataType* _tmp429_ = NULL;
+       ValaMethodCall* _tmp430_ = NULL;
+       ValaDataType* _tmp431_ = NULL;
+       ValaDataType* _tmp432_ = NULL;
+       gboolean _tmp433_ = FALSE;
+       gboolean _tmp434_ = FALSE;
+       ValaLocalVariable* _tmp435_ = NULL;
        ValaCCodeExpression* temp_ref = NULL;
-       ValaLocalVariable* _tmp411_ = NULL;
-       const gchar* _tmp412_ = NULL;
-       const gchar* _tmp413_ = NULL;
-       ValaCCodeExpression* _tmp414_ = NULL;
-       ValaLocalVariable* _tmp415_ = NULL;
-       ValaCCodeFunction* _tmp416_ = NULL;
-       ValaCCodeFunction* _tmp417_ = NULL;
-       ValaCCodeExpression* _tmp418_ = NULL;
-       ValaCCodeFunctionCall* _tmp419_ = NULL;
-       ValaMethodCall* _tmp420_ = NULL;
-       ValaCCodeExpression* _tmp421_ = NULL;
+       ValaLocalVariable* _tmp436_ = NULL;
+       const gchar* _tmp437_ = NULL;
+       const gchar* _tmp438_ = NULL;
+       ValaCCodeExpression* _tmp439_ = NULL;
+       ValaLocalVariable* _tmp440_ = NULL;
+       ValaCCodeFunction* _tmp441_ = NULL;
+       ValaCCodeFunction* _tmp442_ = NULL;
+       ValaCCodeExpression* _tmp443_ = NULL;
+       ValaCCodeFunctionCall* _tmp444_ = NULL;
+       ValaMethodCall* _tmp445_ = NULL;
+       ValaCCodeExpression* _tmp446_ = NULL;
        self = (ValaGDBusClientModule*) base;
        g_return_if_fail (expr != NULL);
        _tmp0_ = expr;
@@ -2319,6 +2343,7 @@ static void vala_gd_bus_client_module_real_visit_method_call (ValaCodeVisitor* b
                        _g_free0 (_tmp67_);
                        _vala_code_node_unref0 (iface);
                        _vala_code_node_unref0 (object_type);
+                       _vala_ccode_node_unref0 (dbus_iface_info);
                        _vala_ccode_node_unref0 (dbus_iface_name);
                        _vala_ccode_node_unref0 (proxy_type);
                        _vala_code_node_unref0 (type_arg);
@@ -2454,229 +2479,259 @@ static void vala_gd_bus_client_module_real_visit_method_call (ValaCodeVisitor* b
                _vala_ccode_node_unref0 (get_qdata);
                _vala_ccode_node_unref0 (quark);
        }
-       _tmp121_ = bus_get_proxy_async;
-       if (_tmp121_) {
-               _tmp120_ = TRUE;
+       _tmp120_ = vala_ccode_identifier_new ("g_quark_from_static_string");
+       _tmp121_ = _tmp120_;
+       _tmp122_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp121_);
+       _tmp123_ = _tmp122_;
+       _vala_ccode_node_unref0 (_tmp121_);
+       quark = _tmp123_;
+       _tmp124_ = quark;
+       _tmp125_ = vala_ccode_constant_new ("\"vala-dbus-interface-info\"");
+       _tmp126_ = _tmp125_;
+       vala_ccode_function_call_add_argument (_tmp124_, (ValaCCodeExpression*) _tmp126_);
+       _vala_ccode_node_unref0 (_tmp126_);
+       _tmp127_ = vala_ccode_identifier_new ("g_type_get_qdata");
+       _tmp128_ = _tmp127_;
+       _tmp129_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp128_);
+       _tmp130_ = _tmp129_;
+       _vala_ccode_node_unref0 (_tmp128_);
+       get_qdata = _tmp130_;
+       _tmp131_ = get_qdata;
+       _tmp132_ = type_arg;
+       _tmp133_ = vala_ccode_base_module_get_type_id_expression ((ValaCCodeBaseModule*) self, _tmp132_, FALSE);
+       _tmp134_ = _tmp133_;
+       vala_ccode_function_call_add_argument (_tmp131_, _tmp134_);
+       _vala_ccode_node_unref0 (_tmp134_);
+       _tmp135_ = get_qdata;
+       _tmp136_ = quark;
+       vala_ccode_function_call_add_argument (_tmp135_, (ValaCCodeExpression*) _tmp136_);
+       _tmp137_ = get_qdata;
+       _tmp138_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp137_);
+       _vala_ccode_node_unref0 (dbus_iface_info);
+       dbus_iface_info = _tmp138_;
+       _tmp140_ = bus_get_proxy_async;
+       if (_tmp140_) {
+               _tmp139_ = TRUE;
        } else {
-               gboolean _tmp122_ = FALSE;
-               _tmp122_ = conn_get_proxy_async;
-               _tmp120_ = _tmp122_;
+               gboolean _tmp141_ = FALSE;
+               _tmp141_ = conn_get_proxy_async;
+               _tmp139_ = _tmp141_;
        }
-       if (_tmp120_) {
-               gboolean _tmp123_ = FALSE;
-               ValaMemberAccess* _tmp124_ = NULL;
-               const gchar* _tmp125_ = NULL;
-               const gchar* _tmp126_ = NULL;
-               _tmp124_ = ma;
-               _tmp125_ = vala_member_access_get_member_name (_tmp124_);
-               _tmp126_ = _tmp125_;
-               if (g_strcmp0 (_tmp126_, "end") == 0) {
-                       ValaMemberAccess* _tmp127_ = NULL;
-                       ValaExpression* _tmp128_ = NULL;
-                       ValaExpression* _tmp129_ = NULL;
-                       ValaSymbol* _tmp130_ = NULL;
-                       ValaSymbol* _tmp131_ = NULL;
-                       ValaMemberAccess* _tmp132_ = NULL;
-                       ValaSymbol* _tmp133_ = NULL;
-                       ValaSymbol* _tmp134_ = NULL;
-                       _tmp127_ = ma;
-                       _tmp128_ = vala_member_access_get_inner (_tmp127_);
-                       _tmp129_ = _tmp128_;
-                       _tmp130_ = vala_expression_get_symbol_reference (_tmp129_);
-                       _tmp131_ = _tmp130_;
-                       _tmp132_ = ma;
-                       _tmp133_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp132_);
-                       _tmp134_ = _tmp133_;
-                       _tmp123_ = _tmp131_ == _tmp134_;
+       if (_tmp139_) {
+               gboolean _tmp142_ = FALSE;
+               ValaMemberAccess* _tmp143_ = NULL;
+               const gchar* _tmp144_ = NULL;
+               const gchar* _tmp145_ = NULL;
+               _tmp143_ = ma;
+               _tmp144_ = vala_member_access_get_member_name (_tmp143_);
+               _tmp145_ = _tmp144_;
+               if (g_strcmp0 (_tmp145_, "end") == 0) {
+                       ValaMemberAccess* _tmp146_ = NULL;
+                       ValaExpression* _tmp147_ = NULL;
+                       ValaExpression* _tmp148_ = NULL;
+                       ValaSymbol* _tmp149_ = NULL;
+                       ValaSymbol* _tmp150_ = NULL;
+                       ValaMemberAccess* _tmp151_ = NULL;
+                       ValaSymbol* _tmp152_ = NULL;
+                       ValaSymbol* _tmp153_ = NULL;
+                       _tmp146_ = ma;
+                       _tmp147_ = vala_member_access_get_inner (_tmp146_);
+                       _tmp148_ = _tmp147_;
+                       _tmp149_ = vala_expression_get_symbol_reference (_tmp148_);
+                       _tmp150_ = _tmp149_;
+                       _tmp151_ = ma;
+                       _tmp152_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp151_);
+                       _tmp153_ = _tmp152_;
+                       _tmp142_ = _tmp150_ == _tmp153_;
                } else {
-                       _tmp123_ = FALSE;
+                       _tmp142_ = FALSE;
                }
-               if (_tmp123_) {
+               if (_tmp142_) {
                        ValaList* args = NULL;
-                       ValaMethodCall* _tmp135_ = NULL;
-                       ValaList* _tmp136_ = NULL;
+                       ValaMethodCall* _tmp154_ = NULL;
+                       ValaList* _tmp155_ = NULL;
                        ValaExpression* res = NULL;
-                       ValaList* _tmp137_ = NULL;
-                       gpointer _tmp138_ = NULL;
+                       ValaList* _tmp156_ = NULL;
+                       gpointer _tmp157_ = NULL;
                        ValaLocalVariable* source_var = NULL;
-                       ValaMethodCall* _tmp139_ = NULL;
-                       ValaDataType* _tmp140_ = NULL;
-                       ValaDataType* _tmp141_ = NULL;
-                       ValaMethodCall* _tmp142_ = NULL;
-                       ValaDataType* _tmp143_ = NULL;
-                       ValaDataType* _tmp144_ = NULL;
-                       gboolean _tmp145_ = FALSE;
-                       gboolean _tmp146_ = FALSE;
-                       ValaLocalVariable* _tmp147_ = NULL;
+                       ValaMethodCall* _tmp158_ = NULL;
+                       ValaDataType* _tmp159_ = NULL;
+                       ValaDataType* _tmp160_ = NULL;
+                       ValaMethodCall* _tmp161_ = NULL;
+                       ValaDataType* _tmp162_ = NULL;
+                       ValaDataType* _tmp163_ = NULL;
+                       gboolean _tmp164_ = FALSE;
+                       gboolean _tmp165_ = FALSE;
+                       ValaLocalVariable* _tmp166_ = NULL;
                        ValaCCodeExpression* source_ref = NULL;
-                       ValaLocalVariable* _tmp148_ = NULL;
-                       const gchar* _tmp149_ = NULL;
-                       const gchar* _tmp150_ = NULL;
-                       ValaCCodeExpression* _tmp151_ = NULL;
-                       ValaLocalVariable* _tmp152_ = NULL;
-                       ValaCCodeFunctionCall* source = NULL;
-                       ValaCCodeIdentifier* _tmp153_ = NULL;
-                       ValaCCodeIdentifier* _tmp154_ = NULL;
-                       ValaCCodeFunctionCall* _tmp155_ = NULL;
-                       ValaCCodeFunctionCall* _tmp156_ = NULL;
-                       ValaCCodeFunctionCall* _tmp157_ = NULL;
-                       ValaExpression* _tmp158_ = NULL;
-                       ValaCCodeExpression* _tmp159_ = NULL;
-                       ValaCCodeExpression* _tmp160_ = NULL;
-                       ValaCCodeFunction* _tmp161_ = NULL;
-                       ValaCCodeFunction* _tmp162_ = NULL;
-                       ValaCCodeExpression* _tmp163_ = NULL;
-                       ValaCCodeFunctionCall* _tmp164_ = NULL;
-                       ValaCCodeFunctionCall* ccall = NULL;
-                       ValaCCodeIdentifier* _tmp165_ = NULL;
-                       ValaCCodeIdentifier* _tmp166_ = NULL;
-                       ValaCCodeFunctionCall* _tmp167_ = NULL;
-                       ValaCCodeFunctionCall* _tmp168_ = NULL;
-                       ValaCCodeFunctionCall* _tmp169_ = NULL;
+                       ValaLocalVariable* _tmp167_ = NULL;
+                       const gchar* _tmp168_ = NULL;
+                       const gchar* _tmp169_ = NULL;
                        ValaCCodeExpression* _tmp170_ = NULL;
-                       ValaCCodeFunctionCall* _tmp171_ = NULL;
-                       ValaExpression* _tmp172_ = NULL;
-                       ValaCCodeExpression* _tmp173_ = NULL;
-                       ValaCCodeExpression* _tmp174_ = NULL;
+                       ValaLocalVariable* _tmp171_ = NULL;
+                       ValaCCodeFunctionCall* source = NULL;
+                       ValaCCodeIdentifier* _tmp172_ = NULL;
+                       ValaCCodeIdentifier* _tmp173_ = NULL;
+                       ValaCCodeFunctionCall* _tmp174_ = NULL;
                        ValaCCodeFunctionCall* _tmp175_ = NULL;
-                       ValaCCodeExpression* _tmp176_ = NULL;
-                       ValaCCodeExpression* _tmp177_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp178_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp179_ = NULL;
-                       ValaLocalVariable* temp_var = NULL;
-                       ValaMethodCall* _tmp180_ = NULL;
-                       ValaDataType* _tmp181_ = NULL;
-                       ValaDataType* _tmp182_ = NULL;
-                       ValaMethodCall* _tmp183_ = NULL;
-                       ValaDataType* _tmp184_ = NULL;
-                       ValaDataType* _tmp185_ = NULL;
-                       gboolean _tmp186_ = FALSE;
-                       gboolean _tmp187_ = FALSE;
-                       ValaLocalVariable* _tmp188_ = NULL;
-                       ValaCCodeExpression* temp_ref = NULL;
-                       ValaLocalVariable* _tmp189_ = NULL;
-                       const gchar* _tmp190_ = NULL;
-                       const gchar* _tmp191_ = NULL;
+                       ValaCCodeFunctionCall* _tmp176_ = NULL;
+                       ValaExpression* _tmp177_ = NULL;
+                       ValaCCodeExpression* _tmp178_ = NULL;
+                       ValaCCodeExpression* _tmp179_ = NULL;
+                       ValaCCodeFunction* _tmp180_ = NULL;
+                       ValaCCodeFunction* _tmp181_ = NULL;
+                       ValaCCodeExpression* _tmp182_ = NULL;
+                       ValaCCodeFunctionCall* _tmp183_ = NULL;
+                       ValaCCodeFunctionCall* ccall = NULL;
+                       ValaCCodeIdentifier* _tmp184_ = NULL;
+                       ValaCCodeIdentifier* _tmp185_ = NULL;
+                       ValaCCodeFunctionCall* _tmp186_ = NULL;
+                       ValaCCodeFunctionCall* _tmp187_ = NULL;
+                       ValaCCodeFunctionCall* _tmp188_ = NULL;
+                       ValaCCodeExpression* _tmp189_ = NULL;
+                       ValaCCodeFunctionCall* _tmp190_ = NULL;
+                       ValaExpression* _tmp191_ = NULL;
                        ValaCCodeExpression* _tmp192_ = NULL;
-                       ValaLocalVariable* _tmp193_ = NULL;
-                       ValaCCodeFunction* _tmp194_ = NULL;
-                       ValaCCodeFunction* _tmp195_ = NULL;
+                       ValaCCodeExpression* _tmp193_ = NULL;
+                       ValaCCodeFunctionCall* _tmp194_ = NULL;
+                       ValaCCodeExpression* _tmp195_ = NULL;
                        ValaCCodeExpression* _tmp196_ = NULL;
-                       ValaCCodeFunctionCall* _tmp197_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp197_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp198_ = NULL;
+                       ValaLocalVariable* temp_var = NULL;
+                       ValaMethodCall* _tmp199_ = NULL;
+                       ValaDataType* _tmp200_ = NULL;
+                       ValaDataType* _tmp201_ = NULL;
+                       ValaMethodCall* _tmp202_ = NULL;
+                       ValaDataType* _tmp203_ = NULL;
+                       ValaDataType* _tmp204_ = NULL;
+                       gboolean _tmp205_ = FALSE;
+                       gboolean _tmp206_ = FALSE;
+                       ValaLocalVariable* _tmp207_ = NULL;
+                       ValaCCodeExpression* temp_ref = NULL;
+                       ValaLocalVariable* _tmp208_ = NULL;
+                       const gchar* _tmp209_ = NULL;
+                       const gchar* _tmp210_ = NULL;
+                       ValaCCodeExpression* _tmp211_ = NULL;
+                       ValaLocalVariable* _tmp212_ = NULL;
+                       ValaCCodeFunction* _tmp213_ = NULL;
+                       ValaCCodeFunction* _tmp214_ = NULL;
+                       ValaCCodeExpression* _tmp215_ = NULL;
+                       ValaCCodeFunctionCall* _tmp216_ = NULL;
                        ValaCCodeFunctionCall* unref_proxy = NULL;
-                       ValaCCodeIdentifier* _tmp198_ = NULL;
-                       ValaCCodeIdentifier* _tmp199_ = NULL;
-                       ValaCCodeFunctionCall* _tmp200_ = NULL;
-                       ValaCCodeFunctionCall* _tmp201_ = NULL;
-                       ValaCCodeFunctionCall* _tmp202_ = NULL;
-                       ValaCCodeExpression* _tmp203_ = NULL;
-                       ValaCCodeFunction* _tmp204_ = NULL;
-                       ValaCCodeFunction* _tmp205_ = NULL;
-                       ValaCCodeFunctionCall* _tmp206_ = NULL;
-                       ValaMethodCall* _tmp207_ = NULL;
-                       ValaCCodeExpression* _tmp208_ = NULL;
+                       ValaCCodeIdentifier* _tmp217_ = NULL;
+                       ValaCCodeIdentifier* _tmp218_ = NULL;
+                       ValaCCodeFunctionCall* _tmp219_ = NULL;
+                       ValaCCodeFunctionCall* _tmp220_ = NULL;
+                       ValaCCodeFunctionCall* _tmp221_ = NULL;
+                       ValaCCodeExpression* _tmp222_ = NULL;
+                       ValaCCodeFunction* _tmp223_ = NULL;
+                       ValaCCodeFunction* _tmp224_ = NULL;
+                       ValaCCodeFunctionCall* _tmp225_ = NULL;
+                       ValaMethodCall* _tmp226_ = NULL;
+                       ValaCCodeExpression* _tmp227_ = NULL;
                        vala_ccode_base_module_set_current_method_inner_error ((ValaCCodeBaseModule*) self, TRUE);
-                       _tmp135_ = expr;
-                       _tmp136_ = vala_method_call_get_argument_list (_tmp135_);
-                       args = _tmp136_;
-                       _tmp137_ = args;
-                       _tmp138_ = vala_list_get (_tmp137_, 0);
-                       res = (ValaExpression*) _tmp138_;
-                       _tmp139_ = expr;
-                       _tmp140_ = vala_expression_get_value_type ((ValaExpression*) _tmp139_);
-                       _tmp141_ = _tmp140_;
-                       _tmp142_ = expr;
-                       _tmp143_ = vala_expression_get_value_type ((ValaExpression*) _tmp142_);
-                       _tmp144_ = _tmp143_;
-                       _tmp145_ = vala_data_type_get_value_owned (_tmp144_);
-                       _tmp146_ = _tmp145_;
-                       _tmp147_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp141_, _tmp146_, NULL, TRUE);
-                       source_var = _tmp147_;
-                       _tmp148_ = source_var;
-                       _tmp149_ = vala_symbol_get_name ((ValaSymbol*) _tmp148_);
-                       _tmp150_ = _tmp149_;
-                       _tmp151_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp150_);
-                       source_ref = _tmp151_;
-                       _tmp152_ = source_var;
-                       vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp152_);
-                       _tmp153_ = vala_ccode_identifier_new ("g_async_result_get_source_object");
-                       _tmp154_ = _tmp153_;
-                       _tmp155_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp154_);
-                       _tmp156_ = _tmp155_;
-                       _vala_ccode_node_unref0 (_tmp154_);
-                       source = _tmp156_;
-                       _tmp157_ = source;
-                       _tmp158_ = res;
-                       _tmp159_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp158_);
+                       _tmp154_ = expr;
+                       _tmp155_ = vala_method_call_get_argument_list (_tmp154_);
+                       args = _tmp155_;
+                       _tmp156_ = args;
+                       _tmp157_ = vala_list_get (_tmp156_, 0);
+                       res = (ValaExpression*) _tmp157_;
+                       _tmp158_ = expr;
+                       _tmp159_ = vala_expression_get_value_type ((ValaExpression*) _tmp158_);
                        _tmp160_ = _tmp159_;
-                       vala_ccode_function_call_add_argument (_tmp157_, _tmp160_);
-                       _vala_ccode_node_unref0 (_tmp160_);
-                       _tmp161_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp162_ = _tmp161_;
-                       _tmp163_ = source_ref;
-                       _tmp164_ = source;
-                       vala_ccode_function_add_assignment (_tmp162_, _tmp163_, (ValaCCodeExpression*) _tmp164_);
-                       _tmp165_ = vala_ccode_identifier_new ("g_async_initable_new_finish");
-                       _tmp166_ = _tmp165_;
-                       _tmp167_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp166_);
-                       _tmp168_ = _tmp167_;
-                       _vala_ccode_node_unref0 (_tmp166_);
-                       ccall = _tmp168_;
-                       _tmp169_ = ccall;
-                       _tmp170_ = source_ref;
-                       vala_ccode_function_call_add_argument (_tmp169_, _tmp170_);
-                       _tmp171_ = ccall;
-                       _tmp172_ = res;
-                       _tmp173_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp172_);
-                       _tmp174_ = _tmp173_;
-                       vala_ccode_function_call_add_argument (_tmp171_, _tmp174_);
-                       _vala_ccode_node_unref0 (_tmp174_);
-                       _tmp175_ = ccall;
-                       _tmp176_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, "_inner_error_");
-                       _tmp177_ = _tmp176_;
-                       _tmp178_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp177_);
+                       _tmp161_ = expr;
+                       _tmp162_ = vala_expression_get_value_type ((ValaExpression*) _tmp161_);
+                       _tmp163_ = _tmp162_;
+                       _tmp164_ = vala_data_type_get_value_owned (_tmp163_);
+                       _tmp165_ = _tmp164_;
+                       _tmp166_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp160_, _tmp165_, NULL, TRUE);
+                       source_var = _tmp166_;
+                       _tmp167_ = source_var;
+                       _tmp168_ = vala_symbol_get_name ((ValaSymbol*) _tmp167_);
+                       _tmp169_ = _tmp168_;
+                       _tmp170_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp169_);
+                       source_ref = _tmp170_;
+                       _tmp171_ = source_var;
+                       vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp171_);
+                       _tmp172_ = vala_ccode_identifier_new ("g_async_result_get_source_object");
+                       _tmp173_ = _tmp172_;
+                       _tmp174_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp173_);
+                       _tmp175_ = _tmp174_;
+                       _vala_ccode_node_unref0 (_tmp173_);
+                       source = _tmp175_;
+                       _tmp176_ = source;
+                       _tmp177_ = res;
+                       _tmp178_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp177_);
                        _tmp179_ = _tmp178_;
-                       vala_ccode_function_call_add_argument (_tmp175_, (ValaCCodeExpression*) _tmp179_);
+                       vala_ccode_function_call_add_argument (_tmp176_, _tmp179_);
                        _vala_ccode_node_unref0 (_tmp179_);
-                       _vala_ccode_node_unref0 (_tmp177_);
-                       _tmp180_ = expr;
-                       _tmp181_ = vala_expression_get_value_type ((ValaExpression*) _tmp180_);
-                       _tmp182_ = _tmp181_;
-                       _tmp183_ = expr;
-                       _tmp184_ = vala_expression_get_value_type ((ValaExpression*) _tmp183_);
+                       _tmp180_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp181_ = _tmp180_;
+                       _tmp182_ = source_ref;
+                       _tmp183_ = source;
+                       vala_ccode_function_add_assignment (_tmp181_, _tmp182_, (ValaCCodeExpression*) _tmp183_);
+                       _tmp184_ = vala_ccode_identifier_new ("g_async_initable_new_finish");
                        _tmp185_ = _tmp184_;
-                       _tmp186_ = vala_data_type_get_value_owned (_tmp185_);
+                       _tmp186_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp185_);
                        _tmp187_ = _tmp186_;
-                       _tmp188_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp182_, _tmp187_, NULL, TRUE);
-                       temp_var = _tmp188_;
-                       _tmp189_ = temp_var;
-                       _tmp190_ = vala_symbol_get_name ((ValaSymbol*) _tmp189_);
-                       _tmp191_ = _tmp190_;
-                       _tmp192_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp191_);
-                       temp_ref = _tmp192_;
-                       _tmp193_ = temp_var;
-                       vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp193_);
-                       _tmp194_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp195_ = _tmp194_;
-                       _tmp196_ = temp_ref;
-                       _tmp197_ = ccall;
-                       vala_ccode_function_add_assignment (_tmp195_, _tmp196_, (ValaCCodeExpression*) _tmp197_);
-                       _tmp198_ = vala_ccode_identifier_new ("g_object_unref");
-                       _tmp199_ = _tmp198_;
-                       _tmp200_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp199_);
+                       _vala_ccode_node_unref0 (_tmp185_);
+                       ccall = _tmp187_;
+                       _tmp188_ = ccall;
+                       _tmp189_ = source_ref;
+                       vala_ccode_function_call_add_argument (_tmp188_, _tmp189_);
+                       _tmp190_ = ccall;
+                       _tmp191_ = res;
+                       _tmp192_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp191_);
+                       _tmp193_ = _tmp192_;
+                       vala_ccode_function_call_add_argument (_tmp190_, _tmp193_);
+                       _vala_ccode_node_unref0 (_tmp193_);
+                       _tmp194_ = ccall;
+                       _tmp195_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, "_inner_error_");
+                       _tmp196_ = _tmp195_;
+                       _tmp197_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp196_);
+                       _tmp198_ = _tmp197_;
+                       vala_ccode_function_call_add_argument (_tmp194_, (ValaCCodeExpression*) _tmp198_);
+                       _vala_ccode_node_unref0 (_tmp198_);
+                       _vala_ccode_node_unref0 (_tmp196_);
+                       _tmp199_ = expr;
+                       _tmp200_ = vala_expression_get_value_type ((ValaExpression*) _tmp199_);
                        _tmp201_ = _tmp200_;
-                       _vala_ccode_node_unref0 (_tmp199_);
-                       unref_proxy = _tmp201_;
-                       _tmp202_ = unref_proxy;
-                       _tmp203_ = source_ref;
-                       vala_ccode_function_call_add_argument (_tmp202_, _tmp203_);
-                       _tmp204_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp205_ = _tmp204_;
-                       _tmp206_ = unref_proxy;
-                       vala_ccode_function_add_expression (_tmp205_, (ValaCCodeExpression*) _tmp206_);
-                       _tmp207_ = expr;
-                       _tmp208_ = temp_ref;
-                       vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp207_, _tmp208_);
+                       _tmp202_ = expr;
+                       _tmp203_ = vala_expression_get_value_type ((ValaExpression*) _tmp202_);
+                       _tmp204_ = _tmp203_;
+                       _tmp205_ = vala_data_type_get_value_owned (_tmp204_);
+                       _tmp206_ = _tmp205_;
+                       _tmp207_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp201_, _tmp206_, NULL, TRUE);
+                       temp_var = _tmp207_;
+                       _tmp208_ = temp_var;
+                       _tmp209_ = vala_symbol_get_name ((ValaSymbol*) _tmp208_);
+                       _tmp210_ = _tmp209_;
+                       _tmp211_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp210_);
+                       temp_ref = _tmp211_;
+                       _tmp212_ = temp_var;
+                       vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp212_);
+                       _tmp213_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp214_ = _tmp213_;
+                       _tmp215_ = temp_ref;
+                       _tmp216_ = ccall;
+                       vala_ccode_function_add_assignment (_tmp214_, _tmp215_, (ValaCCodeExpression*) _tmp216_);
+                       _tmp217_ = vala_ccode_identifier_new ("g_object_unref");
+                       _tmp218_ = _tmp217_;
+                       _tmp219_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp218_);
+                       _tmp220_ = _tmp219_;
+                       _vala_ccode_node_unref0 (_tmp218_);
+                       unref_proxy = _tmp220_;
+                       _tmp221_ = unref_proxy;
+                       _tmp222_ = source_ref;
+                       vala_ccode_function_call_add_argument (_tmp221_, _tmp222_);
+                       _tmp223_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp224_ = _tmp223_;
+                       _tmp225_ = unref_proxy;
+                       vala_ccode_function_add_expression (_tmp224_, (ValaCCodeExpression*) _tmp225_);
+                       _tmp226_ = expr;
+                       _tmp227_ = temp_ref;
+                       vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp226_, _tmp227_);
                        _vala_ccode_node_unref0 (unref_proxy);
                        _vala_ccode_node_unref0 (temp_ref);
                        _vala_code_node_unref0 (temp_var);
@@ -2686,7 +2741,10 @@ static void vala_gd_bus_client_module_real_visit_method_call (ValaCodeVisitor* b
                        _vala_code_node_unref0 (source_var);
                        _vala_code_node_unref0 (res);
                        _vala_iterable_unref0 (args);
+                       _vala_ccode_node_unref0 (get_qdata);
+                       _vala_ccode_node_unref0 (quark);
                        _vala_code_node_unref0 (object_type);
+                       _vala_ccode_node_unref0 (dbus_iface_info);
                        _vala_ccode_node_unref0 (dbus_iface_name);
                        _vala_ccode_node_unref0 (proxy_type);
                        _vala_code_node_unref0 (type_arg);
@@ -2696,482 +2754,501 @@ static void vala_gd_bus_client_module_real_visit_method_call (ValaCodeVisitor* b
                }
        }
        base_arg_index = 0;
-       _tmp210_ = bus_get_proxy_async;
-       if (_tmp210_) {
-               _tmp209_ = TRUE;
+       _tmp229_ = bus_get_proxy_async;
+       if (_tmp229_) {
+               _tmp228_ = TRUE;
        } else {
-               gboolean _tmp211_ = FALSE;
-               _tmp211_ = bus_get_proxy_sync;
-               _tmp209_ = _tmp211_;
+               gboolean _tmp230_ = FALSE;
+               _tmp230_ = bus_get_proxy_sync;
+               _tmp228_ = _tmp230_;
        }
-       if (_tmp209_) {
+       if (_tmp228_) {
                base_arg_index = 1;
        }
-       _tmp212_ = expr;
-       _tmp213_ = vala_method_call_get_argument_list (_tmp212_);
-       args = _tmp213_;
-       _tmp214_ = args;
-       _tmp215_ = base_arg_index;
-       _tmp216_ = vala_list_get (_tmp214_, _tmp215_ + 0);
-       name = (ValaExpression*) _tmp216_;
-       _tmp217_ = args;
-       _tmp218_ = base_arg_index;
-       _tmp219_ = vala_list_get (_tmp217_, _tmp218_ + 1);
-       object_path = (ValaExpression*) _tmp219_;
-       _tmp220_ = args;
-       _tmp221_ = base_arg_index;
-       _tmp222_ = vala_list_get (_tmp220_, _tmp221_ + 2);
-       flags = (ValaExpression*) _tmp222_;
-       _tmp223_ = args;
-       _tmp224_ = base_arg_index;
-       _tmp225_ = vala_list_get (_tmp223_, _tmp224_ + 3);
-       cancellable = (ValaExpression*) _tmp225_;
+       _tmp231_ = expr;
+       _tmp232_ = vala_method_call_get_argument_list (_tmp231_);
+       args = _tmp232_;
+       _tmp233_ = args;
+       _tmp234_ = base_arg_index;
+       _tmp235_ = vala_list_get (_tmp233_, _tmp234_ + 0);
+       name = (ValaExpression*) _tmp235_;
+       _tmp236_ = args;
+       _tmp237_ = base_arg_index;
+       _tmp238_ = vala_list_get (_tmp236_, _tmp237_ + 1);
+       object_path = (ValaExpression*) _tmp238_;
+       _tmp239_ = args;
+       _tmp240_ = base_arg_index;
+       _tmp241_ = vala_list_get (_tmp239_, _tmp240_ + 2);
+       flags = (ValaExpression*) _tmp241_;
+       _tmp242_ = args;
+       _tmp243_ = base_arg_index;
+       _tmp244_ = vala_list_get (_tmp242_, _tmp243_ + 3);
+       cancellable = (ValaExpression*) _tmp244_;
        vala_ccode_base_module_set_current_method_inner_error ((ValaCCodeBaseModule*) self, TRUE);
-       _tmp227_ = bus_get_proxy_async;
-       if (_tmp227_) {
-               _tmp226_ = TRUE;
+       _tmp246_ = bus_get_proxy_async;
+       if (_tmp246_) {
+               _tmp245_ = TRUE;
        } else {
-               gboolean _tmp228_ = FALSE;
-               _tmp228_ = conn_get_proxy_async;
-               _tmp226_ = _tmp228_;
+               gboolean _tmp247_ = FALSE;
+               _tmp247_ = conn_get_proxy_async;
+               _tmp245_ = _tmp247_;
        }
-       if (_tmp226_) {
-               ValaCCodeIdentifier* _tmp229_ = NULL;
-               ValaCCodeIdentifier* _tmp230_ = NULL;
-               ValaCCodeFunctionCall* _tmp231_ = NULL;
-               _tmp229_ = vala_ccode_identifier_new ("g_async_initable_new_async");
-               _tmp230_ = _tmp229_;
-               _tmp231_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp230_);
+       if (_tmp245_) {
+               ValaCCodeIdentifier* _tmp248_ = NULL;
+               ValaCCodeIdentifier* _tmp249_ = NULL;
+               ValaCCodeFunctionCall* _tmp250_ = NULL;
+               _tmp248_ = vala_ccode_identifier_new ("g_async_initable_new_async");
+               _tmp249_ = _tmp248_;
+               _tmp250_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp249_);
                _vala_ccode_node_unref0 (ccall);
-               ccall = _tmp231_;
-               _vala_ccode_node_unref0 (_tmp230_);
+               ccall = _tmp250_;
+               _vala_ccode_node_unref0 (_tmp249_);
        } else {
-               ValaCCodeIdentifier* _tmp232_ = NULL;
-               ValaCCodeIdentifier* _tmp233_ = NULL;
-               ValaCCodeFunctionCall* _tmp234_ = NULL;
-               _tmp232_ = vala_ccode_identifier_new ("g_initable_new");
-               _tmp233_ = _tmp232_;
-               _tmp234_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp233_);
+               ValaCCodeIdentifier* _tmp251_ = NULL;
+               ValaCCodeIdentifier* _tmp252_ = NULL;
+               ValaCCodeFunctionCall* _tmp253_ = NULL;
+               _tmp251_ = vala_ccode_identifier_new ("g_initable_new");
+               _tmp252_ = _tmp251_;
+               _tmp253_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp252_);
                _vala_ccode_node_unref0 (ccall);
-               ccall = _tmp234_;
-               _vala_ccode_node_unref0 (_tmp233_);
+               ccall = _tmp253_;
+               _vala_ccode_node_unref0 (_tmp252_);
        }
-       _tmp235_ = ccall;
-       _tmp236_ = proxy_type;
-       vala_ccode_function_call_add_argument (_tmp235_, _tmp236_);
-       _tmp238_ = bus_get_proxy_async;
-       if (_tmp238_) {
-               _tmp237_ = TRUE;
+       _tmp254_ = ccall;
+       _tmp255_ = proxy_type;
+       vala_ccode_function_call_add_argument (_tmp254_, _tmp255_);
+       _tmp257_ = bus_get_proxy_async;
+       if (_tmp257_) {
+               _tmp256_ = TRUE;
        } else {
-               gboolean _tmp239_ = FALSE;
-               _tmp239_ = conn_get_proxy_async;
-               _tmp237_ = _tmp239_;
+               gboolean _tmp258_ = FALSE;
+               _tmp258_ = conn_get_proxy_async;
+               _tmp256_ = _tmp258_;
        }
-       if (_tmp237_) {
-               ValaCCodeFunctionCall* _tmp240_ = NULL;
-               ValaCCodeConstant* _tmp241_ = NULL;
-               ValaCCodeConstant* _tmp242_ = NULL;
-               _tmp240_ = ccall;
-               _tmp241_ = vala_ccode_constant_new ("0");
-               _tmp242_ = _tmp241_;
-               vala_ccode_function_call_add_argument (_tmp240_, (ValaCCodeExpression*) _tmp242_);
-               _vala_ccode_node_unref0 (_tmp242_);
+       if (_tmp256_) {
+               ValaCCodeFunctionCall* _tmp259_ = NULL;
+               ValaCCodeConstant* _tmp260_ = NULL;
+               ValaCCodeConstant* _tmp261_ = NULL;
+               _tmp259_ = ccall;
+               _tmp260_ = vala_ccode_constant_new ("0");
+               _tmp261_ = _tmp260_;
+               vala_ccode_function_call_add_argument (_tmp259_, (ValaCCodeExpression*) _tmp261_);
+               _vala_ccode_node_unref0 (_tmp261_);
        }
-       _tmp243_ = ccall;
-       _tmp244_ = cancellable;
-       _tmp245_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp244_);
-       _tmp246_ = _tmp245_;
-       vala_ccode_function_call_add_argument (_tmp243_, _tmp246_);
-       _vala_ccode_node_unref0 (_tmp246_);
-       _tmp248_ = bus_get_proxy_async;
-       if (_tmp248_) {
-               _tmp247_ = TRUE;
+       _tmp262_ = ccall;
+       _tmp263_ = cancellable;
+       _tmp264_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp263_);
+       _tmp265_ = _tmp264_;
+       vala_ccode_function_call_add_argument (_tmp262_, _tmp265_);
+       _vala_ccode_node_unref0 (_tmp265_);
+       _tmp267_ = bus_get_proxy_async;
+       if (_tmp267_) {
+               _tmp266_ = TRUE;
        } else {
-               gboolean _tmp249_ = FALSE;
-               _tmp249_ = conn_get_proxy_async;
-               _tmp247_ = _tmp249_;
+               gboolean _tmp268_ = FALSE;
+               _tmp268_ = conn_get_proxy_async;
+               _tmp266_ = _tmp268_;
        }
-       if (_tmp247_) {
-               ValaMethodCall* _tmp250_ = NULL;
-               gboolean _tmp251_ = FALSE;
-               gboolean _tmp252_ = FALSE;
-               _tmp250_ = expr;
-               _tmp251_ = vala_method_call_get_is_yield_expression (_tmp250_);
-               _tmp252_ = _tmp251_;
-               if (_tmp252_) {
-                       ValaCCodeFunctionCall* _tmp253_ = NULL;
-                       ValaMethod* _tmp254_ = NULL;
-                       ValaMethod* _tmp255_ = NULL;
-                       gchar* _tmp256_ = NULL;
-                       gchar* _tmp257_ = NULL;
-                       ValaCCodeIdentifier* _tmp258_ = NULL;
-                       ValaCCodeIdentifier* _tmp259_ = NULL;
-                       ValaCCodeFunctionCall* _tmp260_ = NULL;
-                       ValaCCodeIdentifier* _tmp261_ = NULL;
-                       ValaCCodeIdentifier* _tmp262_ = NULL;
-                       _tmp253_ = ccall;
-                       _tmp254_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
-                       _tmp255_ = _tmp254_;
-                       _tmp256_ = vala_ccode_base_module_generate_ready_function ((ValaCCodeBaseModule*) self, _tmp255_);
-                       _tmp257_ = _tmp256_;
-                       _tmp258_ = vala_ccode_identifier_new (_tmp257_);
-                       _tmp259_ = _tmp258_;
-                       vala_ccode_function_call_add_argument (_tmp253_, (ValaCCodeExpression*) _tmp259_);
-                       _vala_ccode_node_unref0 (_tmp259_);
-                       _g_free0 (_tmp257_);
-                       _tmp260_ = ccall;
-                       _tmp261_ = vala_ccode_identifier_new ("_data_");
-                       _tmp262_ = _tmp261_;
-                       vala_ccode_function_call_add_argument (_tmp260_, (ValaCCodeExpression*) _tmp262_);
-                       _vala_ccode_node_unref0 (_tmp262_);
+       if (_tmp266_) {
+               ValaMethodCall* _tmp269_ = NULL;
+               gboolean _tmp270_ = FALSE;
+               gboolean _tmp271_ = FALSE;
+               _tmp269_ = expr;
+               _tmp270_ = vala_method_call_get_is_yield_expression (_tmp269_);
+               _tmp271_ = _tmp270_;
+               if (_tmp271_) {
+                       ValaCCodeFunctionCall* _tmp272_ = NULL;
+                       ValaMethod* _tmp273_ = NULL;
+                       ValaMethod* _tmp274_ = NULL;
+                       gchar* _tmp275_ = NULL;
+                       gchar* _tmp276_ = NULL;
+                       ValaCCodeIdentifier* _tmp277_ = NULL;
+                       ValaCCodeIdentifier* _tmp278_ = NULL;
+                       ValaCCodeFunctionCall* _tmp279_ = NULL;
+                       ValaCCodeIdentifier* _tmp280_ = NULL;
+                       ValaCCodeIdentifier* _tmp281_ = NULL;
+                       _tmp272_ = ccall;
+                       _tmp273_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
+                       _tmp274_ = _tmp273_;
+                       _tmp275_ = vala_ccode_base_module_generate_ready_function ((ValaCCodeBaseModule*) self, _tmp274_);
+                       _tmp276_ = _tmp275_;
+                       _tmp277_ = vala_ccode_identifier_new (_tmp276_);
+                       _tmp278_ = _tmp277_;
+                       vala_ccode_function_call_add_argument (_tmp272_, (ValaCCodeExpression*) _tmp278_);
+                       _vala_ccode_node_unref0 (_tmp278_);
+                       _g_free0 (_tmp276_);
+                       _tmp279_ = ccall;
+                       _tmp280_ = vala_ccode_identifier_new ("_data_");
+                       _tmp281_ = _tmp280_;
+                       vala_ccode_function_call_add_argument (_tmp279_, (ValaCCodeExpression*) _tmp281_);
+                       _vala_ccode_node_unref0 (_tmp281_);
                } else {
                        ValaExpression* callback = NULL;
-                       ValaList* _tmp263_ = NULL;
-                       gint _tmp264_ = 0;
-                       gpointer _tmp265_ = NULL;
-                       ValaCCodeFunctionCall* _tmp266_ = NULL;
-                       ValaExpression* _tmp267_ = NULL;
-                       ValaCCodeExpression* _tmp268_ = NULL;
-                       ValaCCodeExpression* _tmp269_ = NULL;
-                       ValaCCodeFunctionCall* _tmp270_ = NULL;
-                       ValaExpression* _tmp271_ = NULL;
-                       ValaCCodeExpression* _tmp272_ = NULL;
-                       ValaCCodeExpression* _tmp273_ = NULL;
-                       _tmp263_ = args;
-                       _tmp264_ = base_arg_index;
-                       _tmp265_ = vala_list_get (_tmp263_, _tmp264_ + 4);
-                       callback = (ValaExpression*) _tmp265_;
-                       _tmp266_ = ccall;
-                       _tmp267_ = callback;
-                       _tmp268_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp267_);
-                       _tmp269_ = _tmp268_;
-                       vala_ccode_function_call_add_argument (_tmp266_, _tmp269_);
-                       _vala_ccode_node_unref0 (_tmp269_);
-                       _tmp270_ = ccall;
-                       _tmp271_ = callback;
-                       _tmp272_ = vala_ccode_base_module_get_delegate_target ((ValaCCodeBaseModule*) self, _tmp271_);
-                       _tmp273_ = _tmp272_;
-                       vala_ccode_function_call_add_argument (_tmp270_, _tmp273_);
-                       _vala_ccode_node_unref0 (_tmp273_);
+                       ValaList* _tmp282_ = NULL;
+                       gint _tmp283_ = 0;
+                       gpointer _tmp284_ = NULL;
+                       ValaCCodeFunctionCall* _tmp285_ = NULL;
+                       ValaExpression* _tmp286_ = NULL;
+                       ValaCCodeExpression* _tmp287_ = NULL;
+                       ValaCCodeExpression* _tmp288_ = NULL;
+                       ValaCCodeFunctionCall* _tmp289_ = NULL;
+                       ValaExpression* _tmp290_ = NULL;
+                       ValaCCodeExpression* _tmp291_ = NULL;
+                       ValaCCodeExpression* _tmp292_ = NULL;
+                       _tmp282_ = args;
+                       _tmp283_ = base_arg_index;
+                       _tmp284_ = vala_list_get (_tmp282_, _tmp283_ + 4);
+                       callback = (ValaExpression*) _tmp284_;
+                       _tmp285_ = ccall;
+                       _tmp286_ = callback;
+                       _tmp287_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp286_);
+                       _tmp288_ = _tmp287_;
+                       vala_ccode_function_call_add_argument (_tmp285_, _tmp288_);
+                       _vala_ccode_node_unref0 (_tmp288_);
+                       _tmp289_ = ccall;
+                       _tmp290_ = callback;
+                       _tmp291_ = vala_ccode_base_module_get_delegate_target ((ValaCCodeBaseModule*) self, _tmp290_);
+                       _tmp292_ = _tmp291_;
+                       vala_ccode_function_call_add_argument (_tmp289_, _tmp292_);
+                       _vala_ccode_node_unref0 (_tmp292_);
                        _vala_code_node_unref0 (callback);
                }
        } else {
-               ValaCCodeFunctionCall* _tmp274_ = NULL;
-               ValaCCodeExpression* _tmp275_ = NULL;
-               ValaCCodeExpression* _tmp276_ = NULL;
-               ValaCCodeUnaryExpression* _tmp277_ = NULL;
-               ValaCCodeUnaryExpression* _tmp278_ = NULL;
-               _tmp274_ = ccall;
-               _tmp275_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, "_inner_error_");
-               _tmp276_ = _tmp275_;
-               _tmp277_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp276_);
-               _tmp278_ = _tmp277_;
-               vala_ccode_function_call_add_argument (_tmp274_, (ValaCCodeExpression*) _tmp278_);
-               _vala_ccode_node_unref0 (_tmp278_);
-               _vala_ccode_node_unref0 (_tmp276_);
+               ValaCCodeFunctionCall* _tmp293_ = NULL;
+               ValaCCodeExpression* _tmp294_ = NULL;
+               ValaCCodeExpression* _tmp295_ = NULL;
+               ValaCCodeUnaryExpression* _tmp296_ = NULL;
+               ValaCCodeUnaryExpression* _tmp297_ = NULL;
+               _tmp293_ = ccall;
+               _tmp294_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, "_inner_error_");
+               _tmp295_ = _tmp294_;
+               _tmp296_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp295_);
+               _tmp297_ = _tmp296_;
+               vala_ccode_function_call_add_argument (_tmp293_, (ValaCCodeExpression*) _tmp297_);
+               _vala_ccode_node_unref0 (_tmp297_);
+               _vala_ccode_node_unref0 (_tmp295_);
        }
-       _tmp279_ = ccall;
-       _tmp280_ = vala_ccode_constant_new ("\"g-flags\"");
-       _tmp281_ = _tmp280_;
-       vala_ccode_function_call_add_argument (_tmp279_, (ValaCCodeExpression*) _tmp281_);
-       _vala_ccode_node_unref0 (_tmp281_);
-       _tmp282_ = ccall;
-       _tmp283_ = flags;
-       _tmp284_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp283_);
-       _tmp285_ = _tmp284_;
-       vala_ccode_function_call_add_argument (_tmp282_, _tmp285_);
-       _vala_ccode_node_unref0 (_tmp285_);
-       _tmp286_ = ccall;
-       _tmp287_ = vala_ccode_constant_new ("\"g-name\"");
-       _tmp288_ = _tmp287_;
-       vala_ccode_function_call_add_argument (_tmp286_, (ValaCCodeExpression*) _tmp288_);
-       _vala_ccode_node_unref0 (_tmp288_);
-       _tmp289_ = ccall;
-       _tmp290_ = name;
-       _tmp291_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp290_);
-       _tmp292_ = _tmp291_;
-       vala_ccode_function_call_add_argument (_tmp289_, _tmp292_);
-       _vala_ccode_node_unref0 (_tmp292_);
-       _tmp294_ = bus_get_proxy_async;
-       if (_tmp294_) {
-               _tmp293_ = TRUE;
+       _tmp298_ = ccall;
+       _tmp299_ = vala_ccode_constant_new ("\"g-flags\"");
+       _tmp300_ = _tmp299_;
+       vala_ccode_function_call_add_argument (_tmp298_, (ValaCCodeExpression*) _tmp300_);
+       _vala_ccode_node_unref0 (_tmp300_);
+       _tmp301_ = ccall;
+       _tmp302_ = flags;
+       _tmp303_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp302_);
+       _tmp304_ = _tmp303_;
+       vala_ccode_function_call_add_argument (_tmp301_, _tmp304_);
+       _vala_ccode_node_unref0 (_tmp304_);
+       _tmp305_ = ccall;
+       _tmp306_ = vala_ccode_constant_new ("\"g-name\"");
+       _tmp307_ = _tmp306_;
+       vala_ccode_function_call_add_argument (_tmp305_, (ValaCCodeExpression*) _tmp307_);
+       _vala_ccode_node_unref0 (_tmp307_);
+       _tmp308_ = ccall;
+       _tmp309_ = name;
+       _tmp310_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp309_);
+       _tmp311_ = _tmp310_;
+       vala_ccode_function_call_add_argument (_tmp308_, _tmp311_);
+       _vala_ccode_node_unref0 (_tmp311_);
+       _tmp313_ = bus_get_proxy_async;
+       if (_tmp313_) {
+               _tmp312_ = TRUE;
        } else {
-               gboolean _tmp295_ = FALSE;
-               _tmp295_ = bus_get_proxy_sync;
-               _tmp293_ = _tmp295_;
+               gboolean _tmp314_ = FALSE;
+               _tmp314_ = bus_get_proxy_sync;
+               _tmp312_ = _tmp314_;
        }
-       if (_tmp293_) {
+       if (_tmp312_) {
                ValaExpression* bus_type = NULL;
-               ValaList* _tmp296_ = NULL;
-               gpointer _tmp297_ = NULL;
-               ValaCCodeFunctionCall* _tmp298_ = NULL;
-               ValaCCodeConstant* _tmp299_ = NULL;
-               ValaCCodeConstant* _tmp300_ = NULL;
-               ValaCCodeFunctionCall* _tmp301_ = NULL;
-               ValaExpression* _tmp302_ = NULL;
-               ValaCCodeExpression* _tmp303_ = NULL;
-               ValaCCodeExpression* _tmp304_ = NULL;
-               _tmp296_ = args;
-               _tmp297_ = vala_list_get (_tmp296_, 0);
-               bus_type = (ValaExpression*) _tmp297_;
-               _tmp298_ = ccall;
-               _tmp299_ = vala_ccode_constant_new ("\"g-bus-type\"");
-               _tmp300_ = _tmp299_;
-               vala_ccode_function_call_add_argument (_tmp298_, (ValaCCodeExpression*) _tmp300_);
-               _vala_ccode_node_unref0 (_tmp300_);
-               _tmp301_ = ccall;
-               _tmp302_ = bus_type;
-               _tmp303_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp302_);
-               _tmp304_ = _tmp303_;
-               vala_ccode_function_call_add_argument (_tmp301_, _tmp304_);
-               _vala_ccode_node_unref0 (_tmp304_);
+               ValaList* _tmp315_ = NULL;
+               gpointer _tmp316_ = NULL;
+               ValaCCodeFunctionCall* _tmp317_ = NULL;
+               ValaCCodeConstant* _tmp318_ = NULL;
+               ValaCCodeConstant* _tmp319_ = NULL;
+               ValaCCodeFunctionCall* _tmp320_ = NULL;
+               ValaExpression* _tmp321_ = NULL;
+               ValaCCodeExpression* _tmp322_ = NULL;
+               ValaCCodeExpression* _tmp323_ = NULL;
+               _tmp315_ = args;
+               _tmp316_ = vala_list_get (_tmp315_, 0);
+               bus_type = (ValaExpression*) _tmp316_;
+               _tmp317_ = ccall;
+               _tmp318_ = vala_ccode_constant_new ("\"g-bus-type\"");
+               _tmp319_ = _tmp318_;
+               vala_ccode_function_call_add_argument (_tmp317_, (ValaCCodeExpression*) _tmp319_);
+               _vala_ccode_node_unref0 (_tmp319_);
+               _tmp320_ = ccall;
+               _tmp321_ = bus_type;
+               _tmp322_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp321_);
+               _tmp323_ = _tmp322_;
+               vala_ccode_function_call_add_argument (_tmp320_, _tmp323_);
+               _vala_ccode_node_unref0 (_tmp323_);
                _vala_code_node_unref0 (bus_type);
        } else {
                ValaExpression* connection = NULL;
-               ValaMemberAccess* _tmp305_ = NULL;
-               ValaExpression* _tmp306_ = NULL;
-               ValaExpression* _tmp307_ = NULL;
-               ValaExpression* _tmp308_ = NULL;
-               gboolean _tmp309_ = FALSE;
-               ValaMemberAccess* _tmp310_ = NULL;
-               const gchar* _tmp311_ = NULL;
-               const gchar* _tmp312_ = NULL;
-               ValaCCodeFunctionCall* _tmp329_ = NULL;
-               ValaCCodeConstant* _tmp330_ = NULL;
-               ValaCCodeConstant* _tmp331_ = NULL;
-               ValaCCodeFunctionCall* _tmp332_ = NULL;
-               ValaExpression* _tmp333_ = NULL;
-               ValaCCodeExpression* _tmp334_ = NULL;
-               ValaCCodeExpression* _tmp335_ = NULL;
-               _tmp305_ = ma;
-               _tmp306_ = vala_member_access_get_inner (_tmp305_);
-               _tmp307_ = _tmp306_;
-               _tmp308_ = _vala_code_node_ref0 (_tmp307_);
-               connection = _tmp308_;
-               _tmp310_ = ma;
-               _tmp311_ = vala_member_access_get_member_name (_tmp310_);
-               _tmp312_ = _tmp311_;
-               if (g_strcmp0 (_tmp312_, "begin") == 0) {
-                       ValaMemberAccess* _tmp313_ = NULL;
-                       ValaExpression* _tmp314_ = NULL;
-                       ValaExpression* _tmp315_ = NULL;
-                       ValaSymbol* _tmp316_ = NULL;
-                       ValaSymbol* _tmp317_ = NULL;
-                       ValaMemberAccess* _tmp318_ = NULL;
-                       ValaSymbol* _tmp319_ = NULL;
-                       ValaSymbol* _tmp320_ = NULL;
-                       _tmp313_ = ma;
-                       _tmp314_ = vala_member_access_get_inner (_tmp313_);
-                       _tmp315_ = _tmp314_;
-                       _tmp316_ = vala_expression_get_symbol_reference (_tmp315_);
-                       _tmp317_ = _tmp316_;
-                       _tmp318_ = ma;
-                       _tmp319_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp318_);
-                       _tmp320_ = _tmp319_;
-                       _tmp309_ = _tmp317_ == _tmp320_;
+               ValaMemberAccess* _tmp324_ = NULL;
+               ValaExpression* _tmp325_ = NULL;
+               ValaExpression* _tmp326_ = NULL;
+               ValaExpression* _tmp327_ = NULL;
+               gboolean _tmp328_ = FALSE;
+               ValaMemberAccess* _tmp329_ = NULL;
+               const gchar* _tmp330_ = NULL;
+               const gchar* _tmp331_ = NULL;
+               ValaCCodeFunctionCall* _tmp348_ = NULL;
+               ValaCCodeConstant* _tmp349_ = NULL;
+               ValaCCodeConstant* _tmp350_ = NULL;
+               ValaCCodeFunctionCall* _tmp351_ = NULL;
+               ValaExpression* _tmp352_ = NULL;
+               ValaCCodeExpression* _tmp353_ = NULL;
+               ValaCCodeExpression* _tmp354_ = NULL;
+               _tmp324_ = ma;
+               _tmp325_ = vala_member_access_get_inner (_tmp324_);
+               _tmp326_ = _tmp325_;
+               _tmp327_ = _vala_code_node_ref0 (_tmp326_);
+               connection = _tmp327_;
+               _tmp329_ = ma;
+               _tmp330_ = vala_member_access_get_member_name (_tmp329_);
+               _tmp331_ = _tmp330_;
+               if (g_strcmp0 (_tmp331_, "begin") == 0) {
+                       ValaMemberAccess* _tmp332_ = NULL;
+                       ValaExpression* _tmp333_ = NULL;
+                       ValaExpression* _tmp334_ = NULL;
+                       ValaSymbol* _tmp335_ = NULL;
+                       ValaSymbol* _tmp336_ = NULL;
+                       ValaMemberAccess* _tmp337_ = NULL;
+                       ValaSymbol* _tmp338_ = NULL;
+                       ValaSymbol* _tmp339_ = NULL;
+                       _tmp332_ = ma;
+                       _tmp333_ = vala_member_access_get_inner (_tmp332_);
+                       _tmp334_ = _tmp333_;
+                       _tmp335_ = vala_expression_get_symbol_reference (_tmp334_);
+                       _tmp336_ = _tmp335_;
+                       _tmp337_ = ma;
+                       _tmp338_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp337_);
+                       _tmp339_ = _tmp338_;
+                       _tmp328_ = _tmp336_ == _tmp339_;
                } else {
-                       _tmp309_ = FALSE;
+                       _tmp328_ = FALSE;
                }
-               if (_tmp309_) {
+               if (_tmp328_) {
                        ValaMemberAccess* inner_ma = NULL;
-                       ValaMemberAccess* _tmp321_ = NULL;
-                       ValaExpression* _tmp322_ = NULL;
-                       ValaExpression* _tmp323_ = NULL;
-                       ValaMemberAccess* _tmp324_ = NULL;
-                       ValaMemberAccess* _tmp325_ = NULL;
-                       ValaExpression* _tmp326_ = NULL;
-                       ValaExpression* _tmp327_ = NULL;
-                       ValaExpression* _tmp328_ = NULL;
-                       _tmp321_ = ma;
-                       _tmp322_ = vala_member_access_get_inner (_tmp321_);
-                       _tmp323_ = _tmp322_;
-                       _tmp324_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp323_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
-                       inner_ma = _tmp324_;
-                       _tmp325_ = inner_ma;
-                       _tmp326_ = vala_member_access_get_inner (_tmp325_);
-                       _tmp327_ = _tmp326_;
-                       _tmp328_ = _vala_code_node_ref0 (_tmp327_);
+                       ValaMemberAccess* _tmp340_ = NULL;
+                       ValaExpression* _tmp341_ = NULL;
+                       ValaExpression* _tmp342_ = NULL;
+                       ValaMemberAccess* _tmp343_ = NULL;
+                       ValaMemberAccess* _tmp344_ = NULL;
+                       ValaExpression* _tmp345_ = NULL;
+                       ValaExpression* _tmp346_ = NULL;
+                       ValaExpression* _tmp347_ = NULL;
+                       _tmp340_ = ma;
+                       _tmp341_ = vala_member_access_get_inner (_tmp340_);
+                       _tmp342_ = _tmp341_;
+                       _tmp343_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp342_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
+                       inner_ma = _tmp343_;
+                       _tmp344_ = inner_ma;
+                       _tmp345_ = vala_member_access_get_inner (_tmp344_);
+                       _tmp346_ = _tmp345_;
+                       _tmp347_ = _vala_code_node_ref0 (_tmp346_);
                        _vala_code_node_unref0 (connection);
-                       connection = _tmp328_;
+                       connection = _tmp347_;
                        _vala_code_node_unref0 (inner_ma);
                }
-               _tmp329_ = ccall;
-               _tmp330_ = vala_ccode_constant_new ("\"g-connection\"");
-               _tmp331_ = _tmp330_;
-               vala_ccode_function_call_add_argument (_tmp329_, (ValaCCodeExpression*) _tmp331_);
-               _vala_ccode_node_unref0 (_tmp331_);
-               _tmp332_ = ccall;
-               _tmp333_ = connection;
-               _tmp334_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp333_);
-               _tmp335_ = _tmp334_;
-               vala_ccode_function_call_add_argument (_tmp332_, _tmp335_);
-               _vala_ccode_node_unref0 (_tmp335_);
+               _tmp348_ = ccall;
+               _tmp349_ = vala_ccode_constant_new ("\"g-connection\"");
+               _tmp350_ = _tmp349_;
+               vala_ccode_function_call_add_argument (_tmp348_, (ValaCCodeExpression*) _tmp350_);
+               _vala_ccode_node_unref0 (_tmp350_);
+               _tmp351_ = ccall;
+               _tmp352_ = connection;
+               _tmp353_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp352_);
+               _tmp354_ = _tmp353_;
+               vala_ccode_function_call_add_argument (_tmp351_, _tmp354_);
+               _vala_ccode_node_unref0 (_tmp354_);
                _vala_code_node_unref0 (connection);
        }
-       _tmp336_ = ccall;
-       _tmp337_ = vala_ccode_constant_new ("\"g-object-path\"");
-       _tmp338_ = _tmp337_;
-       vala_ccode_function_call_add_argument (_tmp336_, (ValaCCodeExpression*) _tmp338_);
-       _vala_ccode_node_unref0 (_tmp338_);
-       _tmp339_ = ccall;
-       _tmp340_ = object_path;
-       _tmp341_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp340_);
-       _tmp342_ = _tmp341_;
-       vala_ccode_function_call_add_argument (_tmp339_, _tmp342_);
-       _vala_ccode_node_unref0 (_tmp342_);
-       _tmp343_ = ccall;
-       _tmp344_ = vala_ccode_constant_new ("\"g-interface-name\"");
-       _tmp345_ = _tmp344_;
-       vala_ccode_function_call_add_argument (_tmp343_, (ValaCCodeExpression*) _tmp345_);
-       _vala_ccode_node_unref0 (_tmp345_);
-       _tmp346_ = ccall;
-       _tmp347_ = dbus_iface_name;
-       vala_ccode_function_call_add_argument (_tmp346_, _tmp347_);
-       _tmp348_ = ccall;
-       _tmp349_ = vala_ccode_constant_new ("NULL");
-       _tmp350_ = _tmp349_;
-       vala_ccode_function_call_add_argument (_tmp348_, (ValaCCodeExpression*) _tmp350_);
-       _vala_ccode_node_unref0 (_tmp350_);
-       _tmp352_ = bus_get_proxy_async;
-       if (_tmp352_) {
-               _tmp351_ = TRUE;
+       _tmp355_ = ccall;
+       _tmp356_ = vala_ccode_constant_new ("\"g-object-path\"");
+       _tmp357_ = _tmp356_;
+       vala_ccode_function_call_add_argument (_tmp355_, (ValaCCodeExpression*) _tmp357_);
+       _vala_ccode_node_unref0 (_tmp357_);
+       _tmp358_ = ccall;
+       _tmp359_ = object_path;
+       _tmp360_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp359_);
+       _tmp361_ = _tmp360_;
+       vala_ccode_function_call_add_argument (_tmp358_, _tmp361_);
+       _vala_ccode_node_unref0 (_tmp361_);
+       _tmp362_ = ccall;
+       _tmp363_ = vala_ccode_constant_new ("\"g-interface-name\"");
+       _tmp364_ = _tmp363_;
+       vala_ccode_function_call_add_argument (_tmp362_, (ValaCCodeExpression*) _tmp364_);
+       _vala_ccode_node_unref0 (_tmp364_);
+       _tmp365_ = ccall;
+       _tmp366_ = dbus_iface_name;
+       vala_ccode_function_call_add_argument (_tmp365_, _tmp366_);
+       _tmp367_ = dbus_iface_info;
+       if (_tmp367_ != NULL) {
+               ValaCCodeFunctionCall* _tmp368_ = NULL;
+               ValaCCodeConstant* _tmp369_ = NULL;
+               ValaCCodeConstant* _tmp370_ = NULL;
+               ValaCCodeFunctionCall* _tmp371_ = NULL;
+               ValaCCodeExpression* _tmp372_ = NULL;
+               _tmp368_ = ccall;
+               _tmp369_ = vala_ccode_constant_new ("\"g-interface-info\"");
+               _tmp370_ = _tmp369_;
+               vala_ccode_function_call_add_argument (_tmp368_, (ValaCCodeExpression*) _tmp370_);
+               _vala_ccode_node_unref0 (_tmp370_);
+               _tmp371_ = ccall;
+               _tmp372_ = dbus_iface_info;
+               vala_ccode_function_call_add_argument (_tmp371_, _tmp372_);
+       }
+       _tmp373_ = ccall;
+       _tmp374_ = vala_ccode_constant_new ("NULL");
+       _tmp375_ = _tmp374_;
+       vala_ccode_function_call_add_argument (_tmp373_, (ValaCCodeExpression*) _tmp375_);
+       _vala_ccode_node_unref0 (_tmp375_);
+       _tmp377_ = bus_get_proxy_async;
+       if (_tmp377_) {
+               _tmp376_ = TRUE;
        } else {
-               gboolean _tmp353_ = FALSE;
-               _tmp353_ = conn_get_proxy_async;
-               _tmp351_ = _tmp353_;
+               gboolean _tmp378_ = FALSE;
+               _tmp378_ = conn_get_proxy_async;
+               _tmp376_ = _tmp378_;
        }
-       if (_tmp351_) {
-               ValaMethodCall* _tmp354_ = NULL;
-               gboolean _tmp355_ = FALSE;
-               gboolean _tmp356_ = FALSE;
-               _tmp354_ = expr;
-               _tmp355_ = vala_method_call_get_is_yield_expression (_tmp354_);
-               _tmp356_ = _tmp355_;
-               if (_tmp356_) {
+       if (_tmp376_) {
+               ValaMethodCall* _tmp379_ = NULL;
+               gboolean _tmp380_ = FALSE;
+               gboolean _tmp381_ = FALSE;
+               _tmp379_ = expr;
+               _tmp380_ = vala_method_call_get_is_yield_expression (_tmp379_);
+               _tmp381_ = _tmp380_;
+               if (_tmp381_) {
                        gint state = 0;
-                       gint _tmp357_ = 0;
-                       ValaCCodeFunction* _tmp358_ = NULL;
-                       ValaCCodeFunction* _tmp359_ = NULL;
-                       ValaCCodeIdentifier* _tmp360_ = NULL;
-                       ValaCCodeIdentifier* _tmp361_ = NULL;
-                       ValaCCodeMemberAccess* _tmp362_ = NULL;
-                       ValaCCodeMemberAccess* _tmp363_ = NULL;
-                       gint _tmp364_ = 0;
-                       gchar* _tmp365_ = NULL;
-                       gchar* _tmp366_ = NULL;
-                       ValaCCodeConstant* _tmp367_ = NULL;
-                       ValaCCodeConstant* _tmp368_ = NULL;
-                       ValaCCodeFunction* _tmp369_ = NULL;
-                       ValaCCodeFunction* _tmp370_ = NULL;
-                       ValaCCodeFunctionCall* _tmp371_ = NULL;
-                       ValaCCodeFunction* _tmp372_ = NULL;
-                       ValaCCodeFunction* _tmp373_ = NULL;
-                       ValaCCodeConstant* _tmp374_ = NULL;
-                       ValaCCodeConstant* _tmp375_ = NULL;
-                       ValaCCodeFunction* _tmp376_ = NULL;
-                       ValaCCodeFunction* _tmp377_ = NULL;
-                       gint _tmp378_ = 0;
-                       gchar* _tmp379_ = NULL;
-                       gchar* _tmp380_ = NULL;
-                       ValaCCodeIdentifier* _tmp381_ = NULL;
-                       ValaCCodeIdentifier* _tmp382_ = NULL;
-                       ValaCCodeFunctionCall* _tmp383_ = NULL;
-                       ValaCCodeFunctionCall* _tmp384_ = NULL;
+                       gint _tmp382_ = 0;
+                       ValaCCodeFunction* _tmp383_ = NULL;
+                       ValaCCodeFunction* _tmp384_ = NULL;
                        ValaCCodeIdentifier* _tmp385_ = NULL;
                        ValaCCodeIdentifier* _tmp386_ = NULL;
                        ValaCCodeMemberAccess* _tmp387_ = NULL;
                        ValaCCodeMemberAccess* _tmp388_ = NULL;
-                       ValaCCodeFunctionCall* _tmp389_ = NULL;
-                       ValaCCodeIdentifier* _tmp390_ = NULL;
-                       ValaCCodeIdentifier* _tmp391_ = NULL;
-                       ValaCCodeMemberAccess* _tmp392_ = NULL;
-                       ValaCCodeMemberAccess* _tmp393_ = NULL;
-                       ValaCCodeFunctionCall* _tmp394_ = NULL;
-                       ValaCCodeExpression* _tmp395_ = NULL;
-                       ValaCCodeExpression* _tmp396_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp397_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp398_ = NULL;
-                       _tmp357_ = ((ValaCCodeBaseModule*) self)->next_coroutine_state;
-                       ((ValaCCodeBaseModule*) self)->next_coroutine_state = _tmp357_ + 1;
-                       state = _tmp357_;
-                       _tmp358_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp359_ = _tmp358_;
-                       _tmp360_ = vala_ccode_identifier_new ("_data_");
-                       _tmp361_ = _tmp360_;
-                       _tmp362_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp361_, "_state_");
-                       _tmp363_ = _tmp362_;
-                       _tmp364_ = state;
-                       _tmp365_ = g_strdup_printf ("%i", _tmp364_);
-                       _tmp366_ = _tmp365_;
-                       _tmp367_ = vala_ccode_constant_new (_tmp366_);
-                       _tmp368_ = _tmp367_;
-                       vala_ccode_function_add_assignment (_tmp359_, (ValaCCodeExpression*) _tmp363_, (ValaCCodeExpression*) _tmp368_);
-                       _vala_ccode_node_unref0 (_tmp368_);
-                       _g_free0 (_tmp366_);
-                       _vala_ccode_node_unref0 (_tmp363_);
-                       _vala_ccode_node_unref0 (_tmp361_);
-                       _tmp369_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp370_ = _tmp369_;
-                       _tmp371_ = ccall;
-                       vala_ccode_function_add_expression (_tmp370_, (ValaCCodeExpression*) _tmp371_);
-                       _tmp372_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp373_ = _tmp372_;
-                       _tmp374_ = vala_ccode_constant_new ("FALSE");
-                       _tmp375_ = _tmp374_;
-                       vala_ccode_function_add_return (_tmp373_, (ValaCCodeExpression*) _tmp375_);
-                       _vala_ccode_node_unref0 (_tmp375_);
-                       _tmp376_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp377_ = _tmp376_;
-                       _tmp378_ = state;
-                       _tmp379_ = g_strdup_printf ("_state_%d", _tmp378_);
-                       _tmp380_ = _tmp379_;
-                       vala_ccode_function_add_label (_tmp377_, _tmp380_);
-                       _g_free0 (_tmp380_);
-                       _tmp381_ = vala_ccode_identifier_new ("g_async_initable_new_finish");
-                       _tmp382_ = _tmp381_;
-                       _tmp383_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp382_);
-                       _vala_ccode_node_unref0 (ccall);
-                       ccall = _tmp383_;
-                       _vala_ccode_node_unref0 (_tmp382_);
-                       _tmp384_ = ccall;
+                       gint _tmp389_ = 0;
+                       gchar* _tmp390_ = NULL;
+                       gchar* _tmp391_ = NULL;
+                       ValaCCodeConstant* _tmp392_ = NULL;
+                       ValaCCodeConstant* _tmp393_ = NULL;
+                       ValaCCodeFunction* _tmp394_ = NULL;
+                       ValaCCodeFunction* _tmp395_ = NULL;
+                       ValaCCodeFunctionCall* _tmp396_ = NULL;
+                       ValaCCodeFunction* _tmp397_ = NULL;
+                       ValaCCodeFunction* _tmp398_ = NULL;
+                       ValaCCodeConstant* _tmp399_ = NULL;
+                       ValaCCodeConstant* _tmp400_ = NULL;
+                       ValaCCodeFunction* _tmp401_ = NULL;
+                       ValaCCodeFunction* _tmp402_ = NULL;
+                       gint _tmp403_ = 0;
+                       gchar* _tmp404_ = NULL;
+                       gchar* _tmp405_ = NULL;
+                       ValaCCodeIdentifier* _tmp406_ = NULL;
+                       ValaCCodeIdentifier* _tmp407_ = NULL;
+                       ValaCCodeFunctionCall* _tmp408_ = NULL;
+                       ValaCCodeFunctionCall* _tmp409_ = NULL;
+                       ValaCCodeIdentifier* _tmp410_ = NULL;
+                       ValaCCodeIdentifier* _tmp411_ = NULL;
+                       ValaCCodeMemberAccess* _tmp412_ = NULL;
+                       ValaCCodeMemberAccess* _tmp413_ = NULL;
+                       ValaCCodeFunctionCall* _tmp414_ = NULL;
+                       ValaCCodeIdentifier* _tmp415_ = NULL;
+                       ValaCCodeIdentifier* _tmp416_ = NULL;
+                       ValaCCodeMemberAccess* _tmp417_ = NULL;
+                       ValaCCodeMemberAccess* _tmp418_ = NULL;
+                       ValaCCodeFunctionCall* _tmp419_ = NULL;
+                       ValaCCodeExpression* _tmp420_ = NULL;
+                       ValaCCodeExpression* _tmp421_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp422_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp423_ = NULL;
+                       _tmp382_ = ((ValaCCodeBaseModule*) self)->next_coroutine_state;
+                       ((ValaCCodeBaseModule*) self)->next_coroutine_state = _tmp382_ + 1;
+                       state = _tmp382_;
+                       _tmp383_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp384_ = _tmp383_;
                        _tmp385_ = vala_ccode_identifier_new ("_data_");
                        _tmp386_ = _tmp385_;
-                       _tmp387_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp386_, "_source_object_");
+                       _tmp387_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp386_, "_state_");
                        _tmp388_ = _tmp387_;
-                       vala_ccode_function_call_add_argument (_tmp384_, (ValaCCodeExpression*) _tmp388_);
-                       _vala_ccode_node_unref0 (_tmp388_);
-                       _vala_ccode_node_unref0 (_tmp386_);
-                       _tmp389_ = ccall;
-                       _tmp390_ = vala_ccode_identifier_new ("_data_");
+                       _tmp389_ = state;
+                       _tmp390_ = g_strdup_printf ("%i", _tmp389_);
                        _tmp391_ = _tmp390_;
-                       _tmp392_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp391_, "_res_");
+                       _tmp392_ = vala_ccode_constant_new (_tmp391_);
                        _tmp393_ = _tmp392_;
-                       vala_ccode_function_call_add_argument (_tmp389_, (ValaCCodeExpression*) _tmp393_);
+                       vala_ccode_function_add_assignment (_tmp384_, (ValaCCodeExpression*) _tmp388_, (ValaCCodeExpression*) _tmp393_);
                        _vala_ccode_node_unref0 (_tmp393_);
-                       _vala_ccode_node_unref0 (_tmp391_);
-                       _tmp394_ = ccall;
-                       _tmp395_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, "_inner_error_");
-                       _tmp396_ = _tmp395_;
-                       _tmp397_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp396_);
+                       _g_free0 (_tmp391_);
+                       _vala_ccode_node_unref0 (_tmp388_);
+                       _vala_ccode_node_unref0 (_tmp386_);
+                       _tmp394_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp395_ = _tmp394_;
+                       _tmp396_ = ccall;
+                       vala_ccode_function_add_expression (_tmp395_, (ValaCCodeExpression*) _tmp396_);
+                       _tmp397_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp398_ = _tmp397_;
-                       vala_ccode_function_call_add_argument (_tmp394_, (ValaCCodeExpression*) _tmp398_);
-                       _vala_ccode_node_unref0 (_tmp398_);
-                       _vala_ccode_node_unref0 (_tmp396_);
-               } else {
-                       ValaCCodeFunction* _tmp399_ = NULL;
-                       ValaCCodeFunction* _tmp400_ = NULL;
-                       ValaCCodeFunctionCall* _tmp401_ = NULL;
-                       _tmp399_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp399_ = vala_ccode_constant_new ("FALSE");
                        _tmp400_ = _tmp399_;
-                       _tmp401_ = ccall;
-                       vala_ccode_function_add_expression (_tmp400_, (ValaCCodeExpression*) _tmp401_);
+                       vala_ccode_function_add_return (_tmp398_, (ValaCCodeExpression*) _tmp400_);
+                       _vala_ccode_node_unref0 (_tmp400_);
+                       _tmp401_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp402_ = _tmp401_;
+                       _tmp403_ = state;
+                       _tmp404_ = g_strdup_printf ("_state_%d", _tmp403_);
+                       _tmp405_ = _tmp404_;
+                       vala_ccode_function_add_label (_tmp402_, _tmp405_);
+                       _g_free0 (_tmp405_);
+                       _tmp406_ = vala_ccode_identifier_new ("g_async_initable_new_finish");
+                       _tmp407_ = _tmp406_;
+                       _tmp408_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp407_);
+                       _vala_ccode_node_unref0 (ccall);
+                       ccall = _tmp408_;
+                       _vala_ccode_node_unref0 (_tmp407_);
+                       _tmp409_ = ccall;
+                       _tmp410_ = vala_ccode_identifier_new ("_data_");
+                       _tmp411_ = _tmp410_;
+                       _tmp412_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp411_, "_source_object_");
+                       _tmp413_ = _tmp412_;
+                       vala_ccode_function_call_add_argument (_tmp409_, (ValaCCodeExpression*) _tmp413_);
+                       _vala_ccode_node_unref0 (_tmp413_);
+                       _vala_ccode_node_unref0 (_tmp411_);
+                       _tmp414_ = ccall;
+                       _tmp415_ = vala_ccode_identifier_new ("_data_");
+                       _tmp416_ = _tmp415_;
+                       _tmp417_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp416_, "_res_");
+                       _tmp418_ = _tmp417_;
+                       vala_ccode_function_call_add_argument (_tmp414_, (ValaCCodeExpression*) _tmp418_);
+                       _vala_ccode_node_unref0 (_tmp418_);
+                       _vala_ccode_node_unref0 (_tmp416_);
+                       _tmp419_ = ccall;
+                       _tmp420_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, "_inner_error_");
+                       _tmp421_ = _tmp420_;
+                       _tmp422_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp421_);
+                       _tmp423_ = _tmp422_;
+                       vala_ccode_function_call_add_argument (_tmp419_, (ValaCCodeExpression*) _tmp423_);
+                       _vala_ccode_node_unref0 (_tmp423_);
+                       _vala_ccode_node_unref0 (_tmp421_);
+               } else {
+                       ValaCCodeFunction* _tmp424_ = NULL;
+                       ValaCCodeFunction* _tmp425_ = NULL;
+                       ValaCCodeFunctionCall* _tmp426_ = NULL;
+                       _tmp424_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp425_ = _tmp424_;
+                       _tmp426_ = ccall;
+                       vala_ccode_function_add_expression (_tmp425_, (ValaCCodeExpression*) _tmp426_);
                        _vala_ccode_node_unref0 (ccall);
                        _vala_code_node_unref0 (cancellable);
                        _vala_code_node_unref0 (flags);
                        _vala_code_node_unref0 (object_path);
                        _vala_code_node_unref0 (name);
                        _vala_iterable_unref0 (args);
+                       _vala_ccode_node_unref0 (get_qdata);
+                       _vala_ccode_node_unref0 (quark);
                        _vala_code_node_unref0 (object_type);
+                       _vala_ccode_node_unref0 (dbus_iface_info);
                        _vala_ccode_node_unref0 (dbus_iface_name);
                        _vala_ccode_node_unref0 (proxy_type);
                        _vala_code_node_unref0 (type_arg);
@@ -3180,31 +3257,31 @@ static void vala_gd_bus_client_module_real_visit_method_call (ValaCodeVisitor* b
                        return;
                }
        }
-       _tmp402_ = expr;
-       _tmp403_ = vala_expression_get_value_type ((ValaExpression*) _tmp402_);
-       _tmp404_ = _tmp403_;
-       _tmp405_ = expr;
-       _tmp406_ = vala_expression_get_value_type ((ValaExpression*) _tmp405_);
-       _tmp407_ = _tmp406_;
-       _tmp408_ = vala_data_type_get_value_owned (_tmp407_);
-       _tmp409_ = _tmp408_;
-       _tmp410_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp404_, _tmp409_, NULL, TRUE);
-       temp_var = _tmp410_;
-       _tmp411_ = temp_var;
-       _tmp412_ = vala_symbol_get_name ((ValaSymbol*) _tmp411_);
-       _tmp413_ = _tmp412_;
-       _tmp414_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp413_);
-       temp_ref = _tmp414_;
-       _tmp415_ = temp_var;
-       vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp415_);
-       _tmp416_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp417_ = _tmp416_;
-       _tmp418_ = temp_ref;
-       _tmp419_ = ccall;
-       vala_ccode_function_add_assignment (_tmp417_, _tmp418_, (ValaCCodeExpression*) _tmp419_);
-       _tmp420_ = expr;
-       _tmp421_ = temp_ref;
-       vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp420_, _tmp421_);
+       _tmp427_ = expr;
+       _tmp428_ = vala_expression_get_value_type ((ValaExpression*) _tmp427_);
+       _tmp429_ = _tmp428_;
+       _tmp430_ = expr;
+       _tmp431_ = vala_expression_get_value_type ((ValaExpression*) _tmp430_);
+       _tmp432_ = _tmp431_;
+       _tmp433_ = vala_data_type_get_value_owned (_tmp432_);
+       _tmp434_ = _tmp433_;
+       _tmp435_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp429_, _tmp434_, NULL, TRUE);
+       temp_var = _tmp435_;
+       _tmp436_ = temp_var;
+       _tmp437_ = vala_symbol_get_name ((ValaSymbol*) _tmp436_);
+       _tmp438_ = _tmp437_;
+       _tmp439_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp438_);
+       temp_ref = _tmp439_;
+       _tmp440_ = temp_var;
+       vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp440_);
+       _tmp441_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp442_ = _tmp441_;
+       _tmp443_ = temp_ref;
+       _tmp444_ = ccall;
+       vala_ccode_function_add_assignment (_tmp442_, _tmp443_, (ValaCCodeExpression*) _tmp444_);
+       _tmp445_ = expr;
+       _tmp446_ = temp_ref;
+       vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp445_, _tmp446_);
        _vala_ccode_node_unref0 (temp_ref);
        _vala_code_node_unref0 (temp_var);
        _vala_ccode_node_unref0 (ccall);
@@ -3213,7 +3290,10 @@ static void vala_gd_bus_client_module_real_visit_method_call (ValaCodeVisitor* b
        _vala_code_node_unref0 (object_path);
        _vala_code_node_unref0 (name);
        _vala_iterable_unref0 (args);
+       _vala_ccode_node_unref0 (get_qdata);
+       _vala_ccode_node_unref0 (quark);
        _vala_code_node_unref0 (object_type);
+       _vala_ccode_node_unref0 (dbus_iface_info);
        _vala_ccode_node_unref0 (dbus_iface_name);
        _vala_ccode_node_unref0 (proxy_type);
        _vala_code_node_unref0 (type_arg);
@@ -7956,6 +8036,37 @@ static void vala_gd_bus_client_module_real_register_dbus_info (ValaCCodeBaseModu
        ValaCCodeFunctionCall* _tmp66_ = NULL;
        ValaCCodeExpressionStatement* _tmp67_ = NULL;
        ValaCCodeExpressionStatement* _tmp68_ = NULL;
+       ValaCCodeIdentifier* _tmp69_ = NULL;
+       ValaCCodeIdentifier* _tmp70_ = NULL;
+       ValaCCodeFunctionCall* _tmp71_ = NULL;
+       ValaCCodeFunctionCall* _tmp72_ = NULL;
+       ValaCCodeConstant* _tmp73_ = NULL;
+       ValaCCodeConstant* _tmp74_ = NULL;
+       ValaCCodeIdentifier* _tmp75_ = NULL;
+       ValaCCodeIdentifier* _tmp76_ = NULL;
+       ValaCCodeFunctionCall* _tmp77_ = NULL;
+       ValaCCodeFunctionCall* _tmp78_ = NULL;
+       ValaObjectTypeSymbol* _tmp79_ = NULL;
+       gchar* _tmp80_ = NULL;
+       gchar* _tmp81_ = NULL;
+       gchar* _tmp82_ = NULL;
+       gchar* _tmp83_ = NULL;
+       ValaCCodeIdentifier* _tmp84_ = NULL;
+       ValaCCodeIdentifier* _tmp85_ = NULL;
+       ValaCCodeFunctionCall* _tmp86_ = NULL;
+       ValaCCodeFunctionCall* _tmp87_ = NULL;
+       ValaCCodeFunctionCall* _tmp88_ = NULL;
+       ValaObjectTypeSymbol* _tmp89_ = NULL;
+       ValaCCodeExpression* _tmp90_ = NULL;
+       ValaCCodeExpression* _tmp91_ = NULL;
+       ValaCCodeUnaryExpression* _tmp92_ = NULL;
+       ValaCCodeUnaryExpression* _tmp93_ = NULL;
+       ValaCCodeCastExpression* _tmp94_ = NULL;
+       ValaCCodeCastExpression* _tmp95_ = NULL;
+       ValaCCodeBlock* _tmp96_ = NULL;
+       ValaCCodeFunctionCall* _tmp97_ = NULL;
+       ValaCCodeExpressionStatement* _tmp98_ = NULL;
+       ValaCCodeExpressionStatement* _tmp99_ = NULL;
        self = (ValaGDBusClientModule*) base;
        g_return_if_fail (block != NULL);
        g_return_if_fail (sym != NULL);
@@ -8072,6 +8183,56 @@ static void vala_gd_bus_client_module_real_register_dbus_info (ValaCCodeBaseModu
        _tmp68_ = _tmp67_;
        vala_ccode_block_add_statement (_tmp65_, (ValaCCodeNode*) _tmp68_);
        _vala_ccode_node_unref0 (_tmp68_);
+       _tmp69_ = vala_ccode_identifier_new ("g_quark_from_static_string");
+       _tmp70_ = _tmp69_;
+       _tmp71_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp70_);
+       _vala_ccode_node_unref0 (quark);
+       quark = _tmp71_;
+       _vala_ccode_node_unref0 (_tmp70_);
+       _tmp72_ = quark;
+       _tmp73_ = vala_ccode_constant_new ("\"vala-dbus-interface-info\"");
+       _tmp74_ = _tmp73_;
+       vala_ccode_function_call_add_argument (_tmp72_, (ValaCCodeExpression*) _tmp74_);
+       _vala_ccode_node_unref0 (_tmp74_);
+       _tmp75_ = vala_ccode_identifier_new ("g_type_set_qdata");
+       _tmp76_ = _tmp75_;
+       _tmp77_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp76_);
+       _vala_ccode_node_unref0 (set_qdata);
+       set_qdata = _tmp77_;
+       _vala_ccode_node_unref0 (_tmp76_);
+       _tmp78_ = set_qdata;
+       _tmp79_ = sym;
+       _tmp80_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp79_, NULL);
+       _tmp81_ = _tmp80_;
+       _tmp82_ = g_strdup_printf ("%s_type_id", _tmp81_);
+       _tmp83_ = _tmp82_;
+       _tmp84_ = vala_ccode_identifier_new (_tmp83_);
+       _tmp85_ = _tmp84_;
+       vala_ccode_function_call_add_argument (_tmp78_, (ValaCCodeExpression*) _tmp85_);
+       _vala_ccode_node_unref0 (_tmp85_);
+       _g_free0 (_tmp83_);
+       _g_free0 (_tmp81_);
+       _tmp86_ = set_qdata;
+       _tmp87_ = quark;
+       vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp87_);
+       _tmp88_ = set_qdata;
+       _tmp89_ = sym;
+       _tmp90_ = vala_gd_bus_module_get_interface_info ((ValaGDBusModule*) self, _tmp89_);
+       _tmp91_ = _tmp90_;
+       _tmp92_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp91_);
+       _tmp93_ = _tmp92_;
+       _tmp94_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp93_, "void*");
+       _tmp95_ = _tmp94_;
+       vala_ccode_function_call_add_argument (_tmp88_, (ValaCCodeExpression*) _tmp95_);
+       _vala_ccode_node_unref0 (_tmp95_);
+       _vala_ccode_node_unref0 (_tmp93_);
+       _vala_ccode_node_unref0 (_tmp91_);
+       _tmp96_ = block;
+       _tmp97_ = set_qdata;
+       _tmp98_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp97_);
+       _tmp99_ = _tmp98_;
+       vala_ccode_block_add_statement (_tmp96_, (ValaCCodeNode*) _tmp99_);
+       _vala_ccode_node_unref0 (_tmp99_);
        _vala_ccode_node_unref0 (set_qdata);
        _vala_ccode_node_unref0 (proxy_type);
        _vala_ccode_node_unref0 (quark);
@@ -8093,11 +8254,11 @@ ValaGDBusClientModule* vala_gd_bus_client_module_new (void) {
 
 static void vala_gd_bus_client_module_class_init (ValaGDBusClientModuleClass * klass) {
        vala_gd_bus_client_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_dynamic_method_wrapper = vala_gd_bus_client_module_real_generate_dynamic_method_wrapper;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_interface_declaration = vala_gd_bus_client_module_real_generate_interface_declaration;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_interface = vala_gd_bus_client_module_real_visit_interface;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method_call = vala_gd_bus_client_module_real_visit_method_call;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->register_dbus_info = vala_gd_bus_client_module_real_register_dbus_info;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_dynamic_method_wrapper = vala_gd_bus_client_module_real_generate_dynamic_method_wrapper;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_interface_declaration = vala_gd_bus_client_module_real_generate_interface_declaration;
+       ((ValaCodeVisitorClass *) klass)->visit_interface = vala_gd_bus_client_module_real_visit_interface;
+       ((ValaCodeVisitorClass *) klass)->visit_method_call = vala_gd_bus_client_module_real_visit_method_call;
+       ((ValaCCodeBaseModuleClass *) klass)->register_dbus_info = vala_gd_bus_client_module_real_register_dbus_info;
 }
 
 
index 4d01c15..59aa20e 100644 (file)
@@ -259,6 +259,7 @@ public class Vala.GDBusClientModule : GDBusModule {
 
                CCodeExpression proxy_type;
                CCodeExpression dbus_iface_name;
+               CCodeExpression dbus_iface_info;
 
                var object_type = type_arg as ObjectType;
                if (object_type != null) {
@@ -293,6 +294,15 @@ public class Vala.GDBusClientModule : GDBusModule {
                        dbus_iface_name = get_qdata;
                }
 
+               var quark = new CCodeFunctionCall (new CCodeIdentifier ("g_quark_from_static_string"));
+               quark.add_argument (new CCodeConstant ("\"vala-dbus-interface-info\""));
+
+               var get_qdata = new CCodeFunctionCall (new CCodeIdentifier ("g_type_get_qdata"));
+               get_qdata.add_argument (get_type_id_expression (type_arg));
+               get_qdata.add_argument (quark);
+
+               dbus_iface_info = get_qdata;
+
                if (bus_get_proxy_async || conn_get_proxy_async) {
                        if (ma.member_name == "end" && ma.inner.symbol_reference == ma.symbol_reference) {
                                // method can fail
@@ -389,6 +399,10 @@ public class Vala.GDBusClientModule : GDBusModule {
                ccall.add_argument (get_cvalue (object_path));
                ccall.add_argument (new CCodeConstant ("\"g-interface-name\""));
                ccall.add_argument (dbus_iface_name);
+               if (dbus_iface_info != null) {
+                       ccall.add_argument (new CCodeConstant ("\"g-interface-info\""));
+                       ccall.add_argument (dbus_iface_info);
+               }
                ccall.add_argument (new CCodeConstant ("NULL"));
 
                if (bus_get_proxy_async || conn_get_proxy_async) {
@@ -1160,5 +1174,15 @@ public class Vala.GDBusClientModule : GDBusModule {
                set_qdata.add_argument (new CCodeConstant ("\"%s\"".printf (dbus_iface_name)));
 
                block.add_statement (new CCodeExpressionStatement (set_qdata));
+
+               quark = new CCodeFunctionCall (new CCodeIdentifier ("g_quark_from_static_string"));
+               quark.add_argument (new CCodeConstant ("\"vala-dbus-interface-info\""));
+
+               set_qdata = new CCodeFunctionCall (new CCodeIdentifier ("g_type_set_qdata"));
+               set_qdata.add_argument (new CCodeIdentifier ("%s_type_id".printf (get_ccode_lower_case_name (sym, null))));
+               set_qdata.add_argument (quark);
+               set_qdata.add_argument (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_interface_info (sym)), "void*"));
+
+               block.add_statement (new CCodeExpressionStatement (set_qdata));
        }
 }
index 9086b0c..44bfdd7 100644 (file)
@@ -229,8 +229,8 @@ typedef struct _ValaGDBusModule ValaGDBusModule;
 typedef struct _ValaGDBusModuleClass ValaGDBusModuleClass;
 typedef struct _ValaGDBusModulePrivate ValaGDBusModulePrivate;
 #define _g_free0(var) (var = (g_free (var), NULL))
-#define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
+#define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
 
 struct _ValaCCodeBaseModule {
@@ -552,7 +552,9 @@ enum  {
 };
 gchar* vala_gd_bus_module_get_dbus_name (ValaTypeSymbol* symbol);
 gchar* vala_gd_bus_module_get_dbus_name_for_member (ValaSymbol* symbol);
+gboolean vala_gd_bus_module_is_dbus_visible (ValaCodeNode* node);
 gboolean vala_gd_bus_module_is_dbus_no_reply (ValaMethod* m);
+gchar* vala_gd_bus_module_dbus_result_name (ValaMethod* m);
 static void vala_gd_bus_module_real_visit_error_domain (ValaCodeVisitor* base, ValaErrorDomain* edomain);
 void vala_ccode_base_module_generate_error_domain_declaration (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space);
 gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node);
@@ -560,6 +562,7 @@ gchar* vala_ccode_base_module_get_ccode_lower_case_name (ValaCodeNode* node, con
 gchar* vala_ccode_base_module_get_ccode_lower_case_prefix (ValaSymbol* sym);
 void vala_ccode_base_module_push_function (ValaCCodeBaseModule* self, ValaCCodeFunction* func);
 ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self);
+gchar* vala_ccode_base_module_get_quark_name (ValaErrorDomain* edomain);
 void vala_ccode_base_module_pop_function (ValaCCodeBaseModule* self);
 static gboolean vala_gd_bus_module_is_file_descriptor (ValaGDBusModule* self, ValaDataType* type);
 gboolean vala_gd_bus_module_dbus_method_uses_file_descriptor (ValaGDBusModule* self, ValaMethod* method);
@@ -569,6 +572,15 @@ void vala_gvariant_module_write_expression (ValaGVariantModule* self, ValaDataTy
 static ValaCCodeExpression* vala_gd_bus_module_create_from_file_descriptor (ValaGDBusModule* self, ValaDataType* type, ValaCCodeExpression* expr);
 void vala_gd_bus_module_receive_dbus_value (ValaGDBusModule* self, ValaDataType* type, ValaCCodeExpression* message_expr, ValaCCodeExpression* iter_expr, ValaCCodeExpression* target_expr, ValaSymbol* sym, ValaCCodeExpression* error_expr, gboolean* may_fail);
 void vala_gvariant_module_read_expression (ValaGVariantModule* self, ValaDataType* type, ValaCCodeExpression* iter_expr, ValaCCodeExpression* target_expr, ValaSymbol* sym, ValaCCodeExpression* error_expr, gboolean* may_fail);
+static ValaCCodeExpression* vala_gd_bus_module_get_method_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym);
+gchar* vala_gvariant_module_get_type_signature (ValaDataType* datatype, ValaSymbol* symbol);
+static ValaCCodeExpression* vala_gd_bus_module_get_signal_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym);
+static ValaCCodeExpression* vala_gd_bus_module_get_property_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym);
+static void vala_gd_bus_module_declare_interface_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym);
+ValaCCodeExpression* vala_gd_bus_module_get_interface_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym);
+static void vala_gd_bus_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl);
+static void vala_gd_bus_module_visit_object_type_symbol (ValaGDBusModule* self, ValaObjectTypeSymbol* sym);
+static void vala_gd_bus_module_real_visit_interface (ValaCodeVisitor* base, ValaInterface* iface);
 ValaGDBusModule* vala_gd_bus_module_new (void);
 ValaGDBusModule* vala_gd_bus_module_construct (GType object_type);
 ValaGVariantModule* vala_gvariant_module_new (void);
@@ -616,6 +628,48 @@ gchar* vala_gd_bus_module_get_dbus_name_for_member (ValaSymbol* symbol) {
 }
 
 
+gboolean vala_gd_bus_module_is_dbus_visible (ValaCodeNode* node) {
+       gboolean result = FALSE;
+       ValaAttribute* dbus_attribute = NULL;
+       ValaCodeNode* _tmp0_ = NULL;
+       ValaAttribute* _tmp1_ = NULL;
+       gboolean _tmp2_ = FALSE;
+       gboolean _tmp3_ = FALSE;
+       ValaAttribute* _tmp4_ = NULL;
+       g_return_val_if_fail (node != NULL, FALSE);
+       _tmp0_ = node;
+       _tmp1_ = vala_code_node_get_attribute (_tmp0_, "DBus");
+       dbus_attribute = _tmp1_;
+       _tmp4_ = dbus_attribute;
+       if (_tmp4_ != NULL) {
+               ValaAttribute* _tmp5_ = NULL;
+               gboolean _tmp6_ = FALSE;
+               _tmp5_ = dbus_attribute;
+               _tmp6_ = vala_attribute_has_argument (_tmp5_, "visible");
+               _tmp3_ = _tmp6_;
+       } else {
+               _tmp3_ = FALSE;
+       }
+       if (_tmp3_) {
+               ValaAttribute* _tmp7_ = NULL;
+               gboolean _tmp8_ = FALSE;
+               _tmp7_ = dbus_attribute;
+               _tmp8_ = vala_attribute_get_bool (_tmp7_, "visible", FALSE);
+               _tmp2_ = !_tmp8_;
+       } else {
+               _tmp2_ = FALSE;
+       }
+       if (_tmp2_) {
+               result = FALSE;
+               _vala_code_node_unref0 (dbus_attribute);
+               return result;
+       }
+       result = TRUE;
+       _vala_code_node_unref0 (dbus_attribute);
+       return result;
+}
+
+
 gboolean vala_gd_bus_module_is_dbus_no_reply (ValaMethod* m) {
        gboolean result = FALSE;
        ValaMethod* _tmp0_ = NULL;
@@ -628,6 +682,37 @@ gboolean vala_gd_bus_module_is_dbus_no_reply (ValaMethod* m) {
 }
 
 
+gchar* vala_gd_bus_module_dbus_result_name (ValaMethod* m) {
+       gchar* result = NULL;
+       gchar* dbus_name = NULL;
+       ValaMethod* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       gboolean _tmp2_ = FALSE;
+       const gchar* _tmp3_ = NULL;
+       gchar* _tmp5_ = NULL;
+       g_return_val_if_fail (m != NULL, NULL);
+       _tmp0_ = m;
+       _tmp1_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp0_, "DBus", "result", NULL);
+       dbus_name = _tmp1_;
+       _tmp3_ = dbus_name;
+       if (_tmp3_ != NULL) {
+               const gchar* _tmp4_ = NULL;
+               _tmp4_ = dbus_name;
+               _tmp2_ = g_strcmp0 (_tmp4_, "") != 0;
+       } else {
+               _tmp2_ = FALSE;
+       }
+       if (_tmp2_) {
+               result = dbus_name;
+               return result;
+       }
+       _tmp5_ = g_strdup ("result");
+       result = _tmp5_;
+       _g_free0 (dbus_name);
+       return result;
+}
+
+
 static void vala_gd_bus_module_real_visit_error_domain (ValaCodeVisitor* base, ValaErrorDomain* edomain) {
        ValaGDBusModule * self;
        gchar* edomain_dbus_name = NULL;
@@ -952,11 +1037,11 @@ static void vala_gd_bus_module_real_visit_error_domain (ValaCodeVisitor* base, V
        register_call = _tmp94_;
        _tmp95_ = register_call;
        _tmp96_ = edomain;
-       _tmp97_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp96_, NULL);
+       _tmp97_ = vala_ccode_base_module_get_quark_name (_tmp96_);
        _tmp98_ = _tmp97_;
        _tmp99_ = g_strconcat ("\"", _tmp98_, NULL);
        _tmp100_ = _tmp99_;
-       _tmp101_ = g_strconcat (_tmp100_, "-quark\"", NULL);
+       _tmp101_ = g_strconcat (_tmp100_, "\"", NULL);
        _tmp102_ = _tmp101_;
        _tmp103_ = vala_ccode_constant_new (_tmp102_);
        _tmp104_ = _tmp103_;
@@ -1746,6 +1831,2237 @@ void vala_gd_bus_module_receive_dbus_value (ValaGDBusModule* self, ValaDataType*
 }
 
 
+static ValaCCodeExpression* vala_gd_bus_module_get_method_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym) {
+       ValaCCodeExpression* result = NULL;
+       ValaCCodeInitializerList* infos = NULL;
+       ValaCCodeInitializerList* _tmp0_ = NULL;
+       ValaCCodeInitializerList* _tmp371_ = NULL;
+       ValaCCodeConstant* _tmp372_ = NULL;
+       ValaCCodeConstant* _tmp373_ = NULL;
+       ValaCCodeDeclaration* _cdecl_ = NULL;
+       ValaCCodeDeclaration* _tmp374_ = NULL;
+       ValaObjectTypeSymbol* _tmp375_ = NULL;
+       gchar* _tmp376_ = NULL;
+       gchar* _tmp377_ = NULL;
+       gchar* _tmp378_ = NULL;
+       gchar* _tmp379_ = NULL;
+       gchar* _tmp380_ = NULL;
+       gchar* _tmp381_ = NULL;
+       ValaCCodeInitializerList* _tmp382_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp383_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp384_ = NULL;
+       ValaCCodeFile* _tmp385_ = NULL;
+       ValaObjectTypeSymbol* _tmp386_ = NULL;
+       gchar* _tmp387_ = NULL;
+       gchar* _tmp388_ = NULL;
+       gchar* _tmp389_ = NULL;
+       gchar* _tmp390_ = NULL;
+       gchar* _tmp391_ = NULL;
+       gchar* _tmp392_ = NULL;
+       ValaCCodeIdentifier* _tmp393_ = NULL;
+       ValaCCodeExpression* _tmp394_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (sym != NULL, NULL);
+       _tmp0_ = vala_ccode_initializer_list_new ();
+       infos = _tmp0_;
+       {
+               ValaList* _m_list = NULL;
+               ValaObjectTypeSymbol* _tmp1_ = NULL;
+               ValaList* _tmp2_ = NULL;
+               gint _m_size = 0;
+               ValaList* _tmp3_ = NULL;
+               gint _tmp4_ = 0;
+               gint _tmp5_ = 0;
+               gint _m_index = 0;
+               _tmp1_ = sym;
+               _tmp2_ = vala_object_type_symbol_get_methods (_tmp1_);
+               _m_list = _tmp2_;
+               _tmp3_ = _m_list;
+               _tmp4_ = vala_collection_get_size ((ValaCollection*) _tmp3_);
+               _tmp5_ = _tmp4_;
+               _m_size = _tmp5_;
+               _m_index = -1;
+               while (TRUE) {
+                       gint _tmp6_ = 0;
+                       gint _tmp7_ = 0;
+                       gint _tmp8_ = 0;
+                       ValaMethod* m = NULL;
+                       ValaList* _tmp9_ = NULL;
+                       gint _tmp10_ = 0;
+                       gpointer _tmp11_ = NULL;
+                       gboolean _tmp12_ = FALSE;
+                       gboolean _tmp13_ = FALSE;
+                       gboolean _tmp14_ = FALSE;
+                       ValaMethod* _tmp15_ = NULL;
+                       ValaMethod* _tmp25_ = NULL;
+                       gboolean _tmp26_ = FALSE;
+                       ValaCCodeInitializerList* in_args_info = NULL;
+                       ValaCCodeInitializerList* _tmp27_ = NULL;
+                       ValaCCodeInitializerList* out_args_info = NULL;
+                       ValaCCodeInitializerList* _tmp28_ = NULL;
+                       ValaMethod* _tmp163_ = NULL;
+                       ValaDataType* _tmp164_ = NULL;
+                       ValaDataType* _tmp165_ = NULL;
+                       ValaCCodeInitializerList* _tmp230_ = NULL;
+                       ValaCCodeConstant* _tmp231_ = NULL;
+                       ValaCCodeConstant* _tmp232_ = NULL;
+                       ValaCCodeInitializerList* _tmp233_ = NULL;
+                       ValaCCodeConstant* _tmp234_ = NULL;
+                       ValaCCodeConstant* _tmp235_ = NULL;
+                       ValaCCodeDeclaration* _cdecl_ = NULL;
+                       ValaCCodeDeclaration* _tmp236_ = NULL;
+                       ValaCCodeDeclaration* _tmp237_ = NULL;
+                       ValaObjectTypeSymbol* _tmp238_ = NULL;
+                       gchar* _tmp239_ = NULL;
+                       gchar* _tmp240_ = NULL;
+                       gchar* _tmp241_ = NULL;
+                       gchar* _tmp242_ = NULL;
+                       gchar* _tmp243_ = NULL;
+                       gchar* _tmp244_ = NULL;
+                       ValaMethod* _tmp245_ = NULL;
+                       const gchar* _tmp246_ = NULL;
+                       const gchar* _tmp247_ = NULL;
+                       gchar* _tmp248_ = NULL;
+                       gchar* _tmp249_ = NULL;
+                       gchar* _tmp250_ = NULL;
+                       gchar* _tmp251_ = NULL;
+                       ValaCCodeInitializerList* _tmp252_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp253_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp254_ = NULL;
+                       ValaCCodeDeclaration* _tmp255_ = NULL;
+                       ValaCCodeFile* _tmp256_ = NULL;
+                       ValaCCodeDeclaration* _tmp257_ = NULL;
+                       ValaCCodeDeclaration* _tmp258_ = NULL;
+                       ValaCCodeDeclaration* _tmp259_ = NULL;
+                       ValaObjectTypeSymbol* _tmp260_ = NULL;
+                       gchar* _tmp261_ = NULL;
+                       gchar* _tmp262_ = NULL;
+                       gchar* _tmp263_ = NULL;
+                       gchar* _tmp264_ = NULL;
+                       gchar* _tmp265_ = NULL;
+                       gchar* _tmp266_ = NULL;
+                       ValaMethod* _tmp267_ = NULL;
+                       const gchar* _tmp268_ = NULL;
+                       const gchar* _tmp269_ = NULL;
+                       gchar* _tmp270_ = NULL;
+                       gchar* _tmp271_ = NULL;
+                       gchar* _tmp272_ = NULL;
+                       gchar* _tmp273_ = NULL;
+                       ValaCCodeInitializerList* _tmp274_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp275_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp276_ = NULL;
+                       ValaCCodeDeclaration* _tmp277_ = NULL;
+                       ValaCCodeFile* _tmp278_ = NULL;
+                       ValaCCodeDeclaration* _tmp279_ = NULL;
+                       ValaCCodeInitializerList* info = NULL;
+                       ValaCCodeInitializerList* _tmp280_ = NULL;
+                       ValaCCodeInitializerList* _tmp281_ = NULL;
+                       ValaCCodeConstant* _tmp282_ = NULL;
+                       ValaCCodeConstant* _tmp283_ = NULL;
+                       ValaCCodeInitializerList* _tmp284_ = NULL;
+                       ValaMethod* _tmp285_ = NULL;
+                       gchar* _tmp286_ = NULL;
+                       gchar* _tmp287_ = NULL;
+                       gchar* _tmp288_ = NULL;
+                       gchar* _tmp289_ = NULL;
+                       ValaCCodeConstant* _tmp290_ = NULL;
+                       ValaCCodeConstant* _tmp291_ = NULL;
+                       ValaCCodeInitializerList* _tmp292_ = NULL;
+                       ValaObjectTypeSymbol* _tmp293_ = NULL;
+                       gchar* _tmp294_ = NULL;
+                       gchar* _tmp295_ = NULL;
+                       gchar* _tmp296_ = NULL;
+                       gchar* _tmp297_ = NULL;
+                       gchar* _tmp298_ = NULL;
+                       gchar* _tmp299_ = NULL;
+                       ValaMethod* _tmp300_ = NULL;
+                       const gchar* _tmp301_ = NULL;
+                       const gchar* _tmp302_ = NULL;
+                       gchar* _tmp303_ = NULL;
+                       gchar* _tmp304_ = NULL;
+                       gchar* _tmp305_ = NULL;
+                       gchar* _tmp306_ = NULL;
+                       ValaCCodeIdentifier* _tmp307_ = NULL;
+                       ValaCCodeIdentifier* _tmp308_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp309_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp310_ = NULL;
+                       ValaCCodeCastExpression* _tmp311_ = NULL;
+                       ValaCCodeCastExpression* _tmp312_ = NULL;
+                       ValaCCodeInitializerList* _tmp313_ = NULL;
+                       ValaObjectTypeSymbol* _tmp314_ = NULL;
+                       gchar* _tmp315_ = NULL;
+                       gchar* _tmp316_ = NULL;
+                       gchar* _tmp317_ = NULL;
+                       gchar* _tmp318_ = NULL;
+                       gchar* _tmp319_ = NULL;
+                       gchar* _tmp320_ = NULL;
+                       ValaMethod* _tmp321_ = NULL;
+                       const gchar* _tmp322_ = NULL;
+                       const gchar* _tmp323_ = NULL;
+                       gchar* _tmp324_ = NULL;
+                       gchar* _tmp325_ = NULL;
+                       gchar* _tmp326_ = NULL;
+                       gchar* _tmp327_ = NULL;
+                       ValaCCodeIdentifier* _tmp328_ = NULL;
+                       ValaCCodeIdentifier* _tmp329_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp330_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp331_ = NULL;
+                       ValaCCodeCastExpression* _tmp332_ = NULL;
+                       ValaCCodeCastExpression* _tmp333_ = NULL;
+                       ValaCCodeDeclaration* _tmp334_ = NULL;
+                       ValaCCodeDeclaration* _tmp335_ = NULL;
+                       ValaObjectTypeSymbol* _tmp336_ = NULL;
+                       gchar* _tmp337_ = NULL;
+                       gchar* _tmp338_ = NULL;
+                       gchar* _tmp339_ = NULL;
+                       gchar* _tmp340_ = NULL;
+                       gchar* _tmp341_ = NULL;
+                       gchar* _tmp342_ = NULL;
+                       ValaMethod* _tmp343_ = NULL;
+                       const gchar* _tmp344_ = NULL;
+                       const gchar* _tmp345_ = NULL;
+                       gchar* _tmp346_ = NULL;
+                       gchar* _tmp347_ = NULL;
+                       ValaCCodeInitializerList* _tmp348_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp349_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp350_ = NULL;
+                       ValaCCodeDeclaration* _tmp351_ = NULL;
+                       ValaCCodeFile* _tmp352_ = NULL;
+                       ValaCCodeDeclaration* _tmp353_ = NULL;
+                       ValaCCodeInitializerList* _tmp354_ = NULL;
+                       ValaObjectTypeSymbol* _tmp355_ = NULL;
+                       gchar* _tmp356_ = NULL;
+                       gchar* _tmp357_ = NULL;
+                       gchar* _tmp358_ = NULL;
+                       gchar* _tmp359_ = NULL;
+                       gchar* _tmp360_ = NULL;
+                       gchar* _tmp361_ = NULL;
+                       ValaMethod* _tmp362_ = NULL;
+                       const gchar* _tmp363_ = NULL;
+                       const gchar* _tmp364_ = NULL;
+                       gchar* _tmp365_ = NULL;
+                       gchar* _tmp366_ = NULL;
+                       ValaCCodeIdentifier* _tmp367_ = NULL;
+                       ValaCCodeIdentifier* _tmp368_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp369_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp370_ = NULL;
+                       _tmp6_ = _m_index;
+                       _m_index = _tmp6_ + 1;
+                       _tmp7_ = _m_index;
+                       _tmp8_ = _m_size;
+                       if (!(_tmp7_ < _tmp8_)) {
+                               break;
+                       }
+                       _tmp9_ = _m_list;
+                       _tmp10_ = _m_index;
+                       _tmp11_ = vala_list_get (_tmp9_, _tmp10_);
+                       m = (ValaMethod*) _tmp11_;
+                       _tmp15_ = m;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp15_, VALA_TYPE_CREATION_METHOD)) {
+                               _tmp14_ = TRUE;
+                       } else {
+                               ValaMethod* _tmp16_ = NULL;
+                               ValaMemberBinding _tmp17_ = 0;
+                               ValaMemberBinding _tmp18_ = 0;
+                               _tmp16_ = m;
+                               _tmp17_ = vala_method_get_binding (_tmp16_);
+                               _tmp18_ = _tmp17_;
+                               _tmp14_ = _tmp18_ != VALA_MEMBER_BINDING_INSTANCE;
+                       }
+                       if (_tmp14_) {
+                               _tmp13_ = TRUE;
+                       } else {
+                               ValaMethod* _tmp19_ = NULL;
+                               gboolean _tmp20_ = FALSE;
+                               gboolean _tmp21_ = FALSE;
+                               _tmp19_ = m;
+                               _tmp20_ = vala_method_get_overrides (_tmp19_);
+                               _tmp21_ = _tmp20_;
+                               _tmp13_ = _tmp21_;
+                       }
+                       if (_tmp13_) {
+                               _tmp12_ = TRUE;
+                       } else {
+                               ValaMethod* _tmp22_ = NULL;
+                               ValaSymbolAccessibility _tmp23_ = 0;
+                               ValaSymbolAccessibility _tmp24_ = 0;
+                               _tmp22_ = m;
+                               _tmp23_ = vala_symbol_get_access ((ValaSymbol*) _tmp22_);
+                               _tmp24_ = _tmp23_;
+                               _tmp12_ = _tmp24_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
+                       }
+                       if (_tmp12_) {
+                               _vala_code_node_unref0 (m);
+                               continue;
+                       }
+                       _tmp25_ = m;
+                       _tmp26_ = vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp25_);
+                       if (!_tmp26_) {
+                               _vala_code_node_unref0 (m);
+                               continue;
+                       }
+                       _tmp27_ = vala_ccode_initializer_list_new ();
+                       in_args_info = _tmp27_;
+                       _tmp28_ = vala_ccode_initializer_list_new ();
+                       out_args_info = _tmp28_;
+                       {
+                               ValaList* _param_list = NULL;
+                               ValaMethod* _tmp29_ = NULL;
+                               ValaList* _tmp30_ = NULL;
+                               gint _param_size = 0;
+                               ValaList* _tmp31_ = NULL;
+                               gint _tmp32_ = 0;
+                               gint _tmp33_ = 0;
+                               gint _param_index = 0;
+                               _tmp29_ = m;
+                               _tmp30_ = vala_method_get_parameters (_tmp29_);
+                               _param_list = _tmp30_;
+                               _tmp31_ = _param_list;
+                               _tmp32_ = vala_collection_get_size ((ValaCollection*) _tmp31_);
+                               _tmp33_ = _tmp32_;
+                               _param_size = _tmp33_;
+                               _param_index = -1;
+                               while (TRUE) {
+                                       gint _tmp34_ = 0;
+                                       gint _tmp35_ = 0;
+                                       gint _tmp36_ = 0;
+                                       ValaParameter* param = NULL;
+                                       ValaList* _tmp37_ = NULL;
+                                       gint _tmp38_ = 0;
+                                       gpointer _tmp39_ = NULL;
+                                       gboolean _tmp40_ = FALSE;
+                                       ValaParameter* _tmp41_ = NULL;
+                                       ValaDataType* _tmp42_ = NULL;
+                                       ValaDataType* _tmp43_ = NULL;
+                                       gboolean _tmp51_ = FALSE;
+                                       ValaParameter* _tmp52_ = NULL;
+                                       ValaDataType* _tmp53_ = NULL;
+                                       ValaDataType* _tmp54_ = NULL;
+                                       ValaCCodeInitializerList* info = NULL;
+                                       ValaCCodeInitializerList* _tmp62_ = NULL;
+                                       ValaCCodeInitializerList* _tmp63_ = NULL;
+                                       ValaCCodeConstant* _tmp64_ = NULL;
+                                       ValaCCodeConstant* _tmp65_ = NULL;
+                                       ValaCCodeInitializerList* _tmp66_ = NULL;
+                                       ValaParameter* _tmp67_ = NULL;
+                                       const gchar* _tmp68_ = NULL;
+                                       const gchar* _tmp69_ = NULL;
+                                       gchar* _tmp70_ = NULL;
+                                       gchar* _tmp71_ = NULL;
+                                       ValaCCodeConstant* _tmp72_ = NULL;
+                                       ValaCCodeConstant* _tmp73_ = NULL;
+                                       ValaCCodeInitializerList* _tmp74_ = NULL;
+                                       ValaParameter* _tmp75_ = NULL;
+                                       ValaDataType* _tmp76_ = NULL;
+                                       ValaDataType* _tmp77_ = NULL;
+                                       ValaParameter* _tmp78_ = NULL;
+                                       gchar* _tmp79_ = NULL;
+                                       gchar* _tmp80_ = NULL;
+                                       gchar* _tmp81_ = NULL;
+                                       gchar* _tmp82_ = NULL;
+                                       ValaCCodeConstant* _tmp83_ = NULL;
+                                       ValaCCodeConstant* _tmp84_ = NULL;
+                                       ValaCCodeDeclaration* _cdecl_ = NULL;
+                                       ValaCCodeDeclaration* _tmp85_ = NULL;
+                                       ValaCCodeDeclaration* _tmp86_ = NULL;
+                                       ValaObjectTypeSymbol* _tmp87_ = NULL;
+                                       gchar* _tmp88_ = NULL;
+                                       gchar* _tmp89_ = NULL;
+                                       gchar* _tmp90_ = NULL;
+                                       gchar* _tmp91_ = NULL;
+                                       gchar* _tmp92_ = NULL;
+                                       gchar* _tmp93_ = NULL;
+                                       ValaMethod* _tmp94_ = NULL;
+                                       const gchar* _tmp95_ = NULL;
+                                       const gchar* _tmp96_ = NULL;
+                                       gchar* _tmp97_ = NULL;
+                                       gchar* _tmp98_ = NULL;
+                                       gchar* _tmp99_ = NULL;
+                                       gchar* _tmp100_ = NULL;
+                                       ValaParameter* _tmp101_ = NULL;
+                                       const gchar* _tmp102_ = NULL;
+                                       const gchar* _tmp103_ = NULL;
+                                       gchar* _tmp104_ = NULL;
+                                       gchar* _tmp105_ = NULL;
+                                       ValaCCodeInitializerList* _tmp106_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp107_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp108_ = NULL;
+                                       ValaCCodeDeclaration* _tmp109_ = NULL;
+                                       ValaCCodeFile* _tmp110_ = NULL;
+                                       ValaCCodeDeclaration* _tmp111_ = NULL;
+                                       ValaParameter* _tmp112_ = NULL;
+                                       ValaParameterDirection _tmp113_ = 0;
+                                       ValaParameterDirection _tmp114_ = 0;
+                                       _tmp34_ = _param_index;
+                                       _param_index = _tmp34_ + 1;
+                                       _tmp35_ = _param_index;
+                                       _tmp36_ = _param_size;
+                                       if (!(_tmp35_ < _tmp36_)) {
+                                               break;
+                                       }
+                                       _tmp37_ = _param_list;
+                                       _tmp38_ = _param_index;
+                                       _tmp39_ = vala_list_get (_tmp37_, _tmp38_);
+                                       param = (ValaParameter*) _tmp39_;
+                                       _tmp41_ = param;
+                                       _tmp42_ = vala_variable_get_variable_type ((ValaVariable*) _tmp41_);
+                                       _tmp43_ = _tmp42_;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp43_, VALA_TYPE_OBJECT_TYPE)) {
+                                               ValaParameter* _tmp44_ = NULL;
+                                               ValaDataType* _tmp45_ = NULL;
+                                               ValaDataType* _tmp46_ = NULL;
+                                               ValaTypeSymbol* _tmp47_ = NULL;
+                                               ValaTypeSymbol* _tmp48_ = NULL;
+                                               gchar* _tmp49_ = NULL;
+                                               gchar* _tmp50_ = NULL;
+                                               _tmp44_ = param;
+                                               _tmp45_ = vala_variable_get_variable_type ((ValaVariable*) _tmp44_);
+                                               _tmp46_ = _tmp45_;
+                                               _tmp47_ = vala_data_type_get_data_type (_tmp46_);
+                                               _tmp48_ = _tmp47_;
+                                               _tmp49_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp48_);
+                                               _tmp50_ = _tmp49_;
+                                               _tmp40_ = g_strcmp0 (_tmp50_, "GLib.Cancellable") == 0;
+                                               _g_free0 (_tmp50_);
+                                       } else {
+                                               _tmp40_ = FALSE;
+                                       }
+                                       if (_tmp40_) {
+                                               _vala_code_node_unref0 (param);
+                                               continue;
+                                       }
+                                       _tmp52_ = param;
+                                       _tmp53_ = vala_variable_get_variable_type ((ValaVariable*) _tmp52_);
+                                       _tmp54_ = _tmp53_;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp54_, VALA_TYPE_OBJECT_TYPE)) {
+                                               ValaParameter* _tmp55_ = NULL;
+                                               ValaDataType* _tmp56_ = NULL;
+                                               ValaDataType* _tmp57_ = NULL;
+                                               ValaTypeSymbol* _tmp58_ = NULL;
+                                               ValaTypeSymbol* _tmp59_ = NULL;
+                                               gchar* _tmp60_ = NULL;
+                                               gchar* _tmp61_ = NULL;
+                                               _tmp55_ = param;
+                                               _tmp56_ = vala_variable_get_variable_type ((ValaVariable*) _tmp55_);
+                                               _tmp57_ = _tmp56_;
+                                               _tmp58_ = vala_data_type_get_data_type (_tmp57_);
+                                               _tmp59_ = _tmp58_;
+                                               _tmp60_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp59_);
+                                               _tmp61_ = _tmp60_;
+                                               _tmp51_ = g_strcmp0 (_tmp61_, "GLib.BusName") == 0;
+                                               _g_free0 (_tmp61_);
+                                       } else {
+                                               _tmp51_ = FALSE;
+                                       }
+                                       if (_tmp51_) {
+                                               _vala_code_node_unref0 (param);
+                                               continue;
+                                       }
+                                       _tmp62_ = vala_ccode_initializer_list_new ();
+                                       info = _tmp62_;
+                                       _tmp63_ = info;
+                                       _tmp64_ = vala_ccode_constant_new ("-1");
+                                       _tmp65_ = _tmp64_;
+                                       vala_ccode_initializer_list_append (_tmp63_, (ValaCCodeExpression*) _tmp65_);
+                                       _vala_ccode_node_unref0 (_tmp65_);
+                                       _tmp66_ = info;
+                                       _tmp67_ = param;
+                                       _tmp68_ = vala_symbol_get_name ((ValaSymbol*) _tmp67_);
+                                       _tmp69_ = _tmp68_;
+                                       _tmp70_ = g_strdup_printf ("\"%s\"", _tmp69_);
+                                       _tmp71_ = _tmp70_;
+                                       _tmp72_ = vala_ccode_constant_new (_tmp71_);
+                                       _tmp73_ = _tmp72_;
+                                       vala_ccode_initializer_list_append (_tmp66_, (ValaCCodeExpression*) _tmp73_);
+                                       _vala_ccode_node_unref0 (_tmp73_);
+                                       _g_free0 (_tmp71_);
+                                       _tmp74_ = info;
+                                       _tmp75_ = param;
+                                       _tmp76_ = vala_variable_get_variable_type ((ValaVariable*) _tmp75_);
+                                       _tmp77_ = _tmp76_;
+                                       _tmp78_ = param;
+                                       _tmp79_ = vala_gvariant_module_get_type_signature (_tmp77_, (ValaSymbol*) _tmp78_);
+                                       _tmp80_ = _tmp79_;
+                                       _tmp81_ = g_strdup_printf ("\"%s\"", _tmp80_);
+                                       _tmp82_ = _tmp81_;
+                                       _tmp83_ = vala_ccode_constant_new (_tmp82_);
+                                       _tmp84_ = _tmp83_;
+                                       vala_ccode_initializer_list_append (_tmp74_, (ValaCCodeExpression*) _tmp84_);
+                                       _vala_ccode_node_unref0 (_tmp84_);
+                                       _g_free0 (_tmp82_);
+                                       _g_free0 (_tmp80_);
+                                       _tmp85_ = vala_ccode_declaration_new ("const GDBusArgInfo");
+                                       _cdecl_ = _tmp85_;
+                                       _tmp86_ = _cdecl_;
+                                       _tmp87_ = sym;
+                                       _tmp88_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp87_);
+                                       _tmp89_ = _tmp88_;
+                                       _tmp90_ = g_strconcat ("_", _tmp89_, NULL);
+                                       _tmp91_ = _tmp90_;
+                                       _tmp92_ = g_strconcat (_tmp91_, "dbus_arg_info_", NULL);
+                                       _tmp93_ = _tmp92_;
+                                       _tmp94_ = m;
+                                       _tmp95_ = vala_symbol_get_name ((ValaSymbol*) _tmp94_);
+                                       _tmp96_ = _tmp95_;
+                                       _tmp97_ = g_strconcat (_tmp93_, _tmp96_, NULL);
+                                       _tmp98_ = _tmp97_;
+                                       _tmp99_ = g_strconcat (_tmp98_, "_", NULL);
+                                       _tmp100_ = _tmp99_;
+                                       _tmp101_ = param;
+                                       _tmp102_ = vala_symbol_get_name ((ValaSymbol*) _tmp101_);
+                                       _tmp103_ = _tmp102_;
+                                       _tmp104_ = g_strconcat (_tmp100_, _tmp103_, NULL);
+                                       _tmp105_ = _tmp104_;
+                                       _tmp106_ = info;
+                                       _tmp107_ = vala_ccode_variable_declarator_new (_tmp105_, (ValaCCodeExpression*) _tmp106_, NULL);
+                                       _tmp108_ = _tmp107_;
+                                       vala_ccode_declaration_add_declarator (_tmp86_, (ValaCCodeDeclarator*) _tmp108_);
+                                       _vala_ccode_node_unref0 (_tmp108_);
+                                       _g_free0 (_tmp105_);
+                                       _g_free0 (_tmp100_);
+                                       _g_free0 (_tmp98_);
+                                       _g_free0 (_tmp93_);
+                                       _g_free0 (_tmp91_);
+                                       _g_free0 (_tmp89_);
+                                       _tmp109_ = _cdecl_;
+                                       vala_ccode_declaration_set_modifiers (_tmp109_, VALA_CCODE_MODIFIERS_STATIC);
+                                       _tmp110_ = ((ValaCCodeBaseModule*) self)->cfile;
+                                       _tmp111_ = _cdecl_;
+                                       vala_ccode_file_add_constant_declaration (_tmp110_, (ValaCCodeNode*) _tmp111_);
+                                       _tmp112_ = param;
+                                       _tmp113_ = vala_parameter_get_direction (_tmp112_);
+                                       _tmp114_ = _tmp113_;
+                                       if (_tmp114_ == VALA_PARAMETER_DIRECTION_IN) {
+                                               ValaCCodeInitializerList* _tmp115_ = NULL;
+                                               ValaObjectTypeSymbol* _tmp116_ = NULL;
+                                               gchar* _tmp117_ = NULL;
+                                               gchar* _tmp118_ = NULL;
+                                               gchar* _tmp119_ = NULL;
+                                               gchar* _tmp120_ = NULL;
+                                               gchar* _tmp121_ = NULL;
+                                               gchar* _tmp122_ = NULL;
+                                               ValaMethod* _tmp123_ = NULL;
+                                               const gchar* _tmp124_ = NULL;
+                                               const gchar* _tmp125_ = NULL;
+                                               gchar* _tmp126_ = NULL;
+                                               gchar* _tmp127_ = NULL;
+                                               gchar* _tmp128_ = NULL;
+                                               gchar* _tmp129_ = NULL;
+                                               ValaParameter* _tmp130_ = NULL;
+                                               const gchar* _tmp131_ = NULL;
+                                               const gchar* _tmp132_ = NULL;
+                                               gchar* _tmp133_ = NULL;
+                                               gchar* _tmp134_ = NULL;
+                                               ValaCCodeIdentifier* _tmp135_ = NULL;
+                                               ValaCCodeIdentifier* _tmp136_ = NULL;
+                                               ValaCCodeUnaryExpression* _tmp137_ = NULL;
+                                               ValaCCodeUnaryExpression* _tmp138_ = NULL;
+                                               _tmp115_ = in_args_info;
+                                               _tmp116_ = sym;
+                                               _tmp117_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp116_);
+                                               _tmp118_ = _tmp117_;
+                                               _tmp119_ = g_strconcat ("_", _tmp118_, NULL);
+                                               _tmp120_ = _tmp119_;
+                                               _tmp121_ = g_strconcat (_tmp120_, "dbus_arg_info_", NULL);
+                                               _tmp122_ = _tmp121_;
+                                               _tmp123_ = m;
+                                               _tmp124_ = vala_symbol_get_name ((ValaSymbol*) _tmp123_);
+                                               _tmp125_ = _tmp124_;
+                                               _tmp126_ = g_strconcat (_tmp122_, _tmp125_, NULL);
+                                               _tmp127_ = _tmp126_;
+                                               _tmp128_ = g_strconcat (_tmp127_, "_", NULL);
+                                               _tmp129_ = _tmp128_;
+                                               _tmp130_ = param;
+                                               _tmp131_ = vala_symbol_get_name ((ValaSymbol*) _tmp130_);
+                                               _tmp132_ = _tmp131_;
+                                               _tmp133_ = g_strconcat (_tmp129_, _tmp132_, NULL);
+                                               _tmp134_ = _tmp133_;
+                                               _tmp135_ = vala_ccode_identifier_new (_tmp134_);
+                                               _tmp136_ = _tmp135_;
+                                               _tmp137_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp136_);
+                                               _tmp138_ = _tmp137_;
+                                               vala_ccode_initializer_list_append (_tmp115_, (ValaCCodeExpression*) _tmp138_);
+                                               _vala_ccode_node_unref0 (_tmp138_);
+                                               _vala_ccode_node_unref0 (_tmp136_);
+                                               _g_free0 (_tmp134_);
+                                               _g_free0 (_tmp129_);
+                                               _g_free0 (_tmp127_);
+                                               _g_free0 (_tmp122_);
+                                               _g_free0 (_tmp120_);
+                                               _g_free0 (_tmp118_);
+                                       } else {
+                                               ValaCCodeInitializerList* _tmp139_ = NULL;
+                                               ValaObjectTypeSymbol* _tmp140_ = NULL;
+                                               gchar* _tmp141_ = NULL;
+                                               gchar* _tmp142_ = NULL;
+                                               gchar* _tmp143_ = NULL;
+                                               gchar* _tmp144_ = NULL;
+                                               gchar* _tmp145_ = NULL;
+                                               gchar* _tmp146_ = NULL;
+                                               ValaMethod* _tmp147_ = NULL;
+                                               const gchar* _tmp148_ = NULL;
+                                               const gchar* _tmp149_ = NULL;
+                                               gchar* _tmp150_ = NULL;
+                                               gchar* _tmp151_ = NULL;
+                                               gchar* _tmp152_ = NULL;
+                                               gchar* _tmp153_ = NULL;
+                                               ValaParameter* _tmp154_ = NULL;
+                                               const gchar* _tmp155_ = NULL;
+                                               const gchar* _tmp156_ = NULL;
+                                               gchar* _tmp157_ = NULL;
+                                               gchar* _tmp158_ = NULL;
+                                               ValaCCodeIdentifier* _tmp159_ = NULL;
+                                               ValaCCodeIdentifier* _tmp160_ = NULL;
+                                               ValaCCodeUnaryExpression* _tmp161_ = NULL;
+                                               ValaCCodeUnaryExpression* _tmp162_ = NULL;
+                                               _tmp139_ = out_args_info;
+                                               _tmp140_ = sym;
+                                               _tmp141_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp140_);
+                                               _tmp142_ = _tmp141_;
+                                               _tmp143_ = g_strconcat ("_", _tmp142_, NULL);
+                                               _tmp144_ = _tmp143_;
+                                               _tmp145_ = g_strconcat (_tmp144_, "dbus_arg_info_", NULL);
+                                               _tmp146_ = _tmp145_;
+                                               _tmp147_ = m;
+                                               _tmp148_ = vala_symbol_get_name ((ValaSymbol*) _tmp147_);
+                                               _tmp149_ = _tmp148_;
+                                               _tmp150_ = g_strconcat (_tmp146_, _tmp149_, NULL);
+                                               _tmp151_ = _tmp150_;
+                                               _tmp152_ = g_strconcat (_tmp151_, "_", NULL);
+                                               _tmp153_ = _tmp152_;
+                                               _tmp154_ = param;
+                                               _tmp155_ = vala_symbol_get_name ((ValaSymbol*) _tmp154_);
+                                               _tmp156_ = _tmp155_;
+                                               _tmp157_ = g_strconcat (_tmp153_, _tmp156_, NULL);
+                                               _tmp158_ = _tmp157_;
+                                               _tmp159_ = vala_ccode_identifier_new (_tmp158_);
+                                               _tmp160_ = _tmp159_;
+                                               _tmp161_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp160_);
+                                               _tmp162_ = _tmp161_;
+                                               vala_ccode_initializer_list_append (_tmp139_, (ValaCCodeExpression*) _tmp162_);
+                                               _vala_ccode_node_unref0 (_tmp162_);
+                                               _vala_ccode_node_unref0 (_tmp160_);
+                                               _g_free0 (_tmp158_);
+                                               _g_free0 (_tmp153_);
+                                               _g_free0 (_tmp151_);
+                                               _g_free0 (_tmp146_);
+                                               _g_free0 (_tmp144_);
+                                               _g_free0 (_tmp142_);
+                                       }
+                                       _vala_ccode_node_unref0 (_cdecl_);
+                                       _vala_ccode_node_unref0 (info);
+                                       _vala_code_node_unref0 (param);
+                               }
+                               _vala_iterable_unref0 (_param_list);
+                       }
+                       _tmp163_ = m;
+                       _tmp164_ = vala_method_get_return_type (_tmp163_);
+                       _tmp165_ = _tmp164_;
+                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp165_, VALA_TYPE_VOID_TYPE)) {
+                               ValaCCodeInitializerList* info = NULL;
+                               ValaCCodeInitializerList* _tmp166_ = NULL;
+                               ValaCCodeInitializerList* _tmp167_ = NULL;
+                               ValaCCodeConstant* _tmp168_ = NULL;
+                               ValaCCodeConstant* _tmp169_ = NULL;
+                               ValaCCodeInitializerList* _tmp170_ = NULL;
+                               ValaMethod* _tmp171_ = NULL;
+                               gchar* _tmp172_ = NULL;
+                               gchar* _tmp173_ = NULL;
+                               gchar* _tmp174_ = NULL;
+                               gchar* _tmp175_ = NULL;
+                               ValaCCodeConstant* _tmp176_ = NULL;
+                               ValaCCodeConstant* _tmp177_ = NULL;
+                               ValaCCodeInitializerList* _tmp178_ = NULL;
+                               ValaMethod* _tmp179_ = NULL;
+                               ValaDataType* _tmp180_ = NULL;
+                               ValaDataType* _tmp181_ = NULL;
+                               ValaMethod* _tmp182_ = NULL;
+                               gchar* _tmp183_ = NULL;
+                               gchar* _tmp184_ = NULL;
+                               gchar* _tmp185_ = NULL;
+                               gchar* _tmp186_ = NULL;
+                               ValaCCodeConstant* _tmp187_ = NULL;
+                               ValaCCodeConstant* _tmp188_ = NULL;
+                               ValaCCodeDeclaration* _cdecl_ = NULL;
+                               ValaCCodeDeclaration* _tmp189_ = NULL;
+                               ValaCCodeDeclaration* _tmp190_ = NULL;
+                               ValaObjectTypeSymbol* _tmp191_ = NULL;
+                               gchar* _tmp192_ = NULL;
+                               gchar* _tmp193_ = NULL;
+                               gchar* _tmp194_ = NULL;
+                               gchar* _tmp195_ = NULL;
+                               gchar* _tmp196_ = NULL;
+                               gchar* _tmp197_ = NULL;
+                               ValaMethod* _tmp198_ = NULL;
+                               const gchar* _tmp199_ = NULL;
+                               const gchar* _tmp200_ = NULL;
+                               gchar* _tmp201_ = NULL;
+                               gchar* _tmp202_ = NULL;
+                               gchar* _tmp203_ = NULL;
+                               gchar* _tmp204_ = NULL;
+                               ValaCCodeInitializerList* _tmp205_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp206_ = NULL;
+                               ValaCCodeVariableDeclarator* _tmp207_ = NULL;
+                               ValaCCodeDeclaration* _tmp208_ = NULL;
+                               ValaCCodeFile* _tmp209_ = NULL;
+                               ValaCCodeDeclaration* _tmp210_ = NULL;
+                               ValaCCodeInitializerList* _tmp211_ = NULL;
+                               ValaObjectTypeSymbol* _tmp212_ = NULL;
+                               gchar* _tmp213_ = NULL;
+                               gchar* _tmp214_ = NULL;
+                               gchar* _tmp215_ = NULL;
+                               gchar* _tmp216_ = NULL;
+                               gchar* _tmp217_ = NULL;
+                               gchar* _tmp218_ = NULL;
+                               ValaMethod* _tmp219_ = NULL;
+                               const gchar* _tmp220_ = NULL;
+                               const gchar* _tmp221_ = NULL;
+                               gchar* _tmp222_ = NULL;
+                               gchar* _tmp223_ = NULL;
+                               gchar* _tmp224_ = NULL;
+                               gchar* _tmp225_ = NULL;
+                               ValaCCodeIdentifier* _tmp226_ = NULL;
+                               ValaCCodeIdentifier* _tmp227_ = NULL;
+                               ValaCCodeUnaryExpression* _tmp228_ = NULL;
+                               ValaCCodeUnaryExpression* _tmp229_ = NULL;
+                               _tmp166_ = vala_ccode_initializer_list_new ();
+                               info = _tmp166_;
+                               _tmp167_ = info;
+                               _tmp168_ = vala_ccode_constant_new ("-1");
+                               _tmp169_ = _tmp168_;
+                               vala_ccode_initializer_list_append (_tmp167_, (ValaCCodeExpression*) _tmp169_);
+                               _vala_ccode_node_unref0 (_tmp169_);
+                               _tmp170_ = info;
+                               _tmp171_ = m;
+                               _tmp172_ = vala_gd_bus_module_dbus_result_name (_tmp171_);
+                               _tmp173_ = _tmp172_;
+                               _tmp174_ = g_strdup_printf ("\"%s\"", _tmp173_);
+                               _tmp175_ = _tmp174_;
+                               _tmp176_ = vala_ccode_constant_new (_tmp175_);
+                               _tmp177_ = _tmp176_;
+                               vala_ccode_initializer_list_append (_tmp170_, (ValaCCodeExpression*) _tmp177_);
+                               _vala_ccode_node_unref0 (_tmp177_);
+                               _g_free0 (_tmp175_);
+                               _g_free0 (_tmp173_);
+                               _tmp178_ = info;
+                               _tmp179_ = m;
+                               _tmp180_ = vala_method_get_return_type (_tmp179_);
+                               _tmp181_ = _tmp180_;
+                               _tmp182_ = m;
+                               _tmp183_ = vala_gvariant_module_get_type_signature (_tmp181_, (ValaSymbol*) _tmp182_);
+                               _tmp184_ = _tmp183_;
+                               _tmp185_ = g_strdup_printf ("\"%s\"", _tmp184_);
+                               _tmp186_ = _tmp185_;
+                               _tmp187_ = vala_ccode_constant_new (_tmp186_);
+                               _tmp188_ = _tmp187_;
+                               vala_ccode_initializer_list_append (_tmp178_, (ValaCCodeExpression*) _tmp188_);
+                               _vala_ccode_node_unref0 (_tmp188_);
+                               _g_free0 (_tmp186_);
+                               _g_free0 (_tmp184_);
+                               _tmp189_ = vala_ccode_declaration_new ("const GDBusArgInfo");
+                               _cdecl_ = _tmp189_;
+                               _tmp190_ = _cdecl_;
+                               _tmp191_ = sym;
+                               _tmp192_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp191_);
+                               _tmp193_ = _tmp192_;
+                               _tmp194_ = g_strconcat ("_", _tmp193_, NULL);
+                               _tmp195_ = _tmp194_;
+                               _tmp196_ = g_strconcat (_tmp195_, "dbus_arg_info_", NULL);
+                               _tmp197_ = _tmp196_;
+                               _tmp198_ = m;
+                               _tmp199_ = vala_symbol_get_name ((ValaSymbol*) _tmp198_);
+                               _tmp200_ = _tmp199_;
+                               _tmp201_ = g_strconcat (_tmp197_, _tmp200_, NULL);
+                               _tmp202_ = _tmp201_;
+                               _tmp203_ = g_strconcat (_tmp202_, "_result", NULL);
+                               _tmp204_ = _tmp203_;
+                               _tmp205_ = info;
+                               _tmp206_ = vala_ccode_variable_declarator_new (_tmp204_, (ValaCCodeExpression*) _tmp205_, NULL);
+                               _tmp207_ = _tmp206_;
+                               vala_ccode_declaration_add_declarator (_tmp190_, (ValaCCodeDeclarator*) _tmp207_);
+                               _vala_ccode_node_unref0 (_tmp207_);
+                               _g_free0 (_tmp204_);
+                               _g_free0 (_tmp202_);
+                               _g_free0 (_tmp197_);
+                               _g_free0 (_tmp195_);
+                               _g_free0 (_tmp193_);
+                               _tmp208_ = _cdecl_;
+                               vala_ccode_declaration_set_modifiers (_tmp208_, VALA_CCODE_MODIFIERS_STATIC);
+                               _tmp209_ = ((ValaCCodeBaseModule*) self)->cfile;
+                               _tmp210_ = _cdecl_;
+                               vala_ccode_file_add_constant_declaration (_tmp209_, (ValaCCodeNode*) _tmp210_);
+                               _tmp211_ = out_args_info;
+                               _tmp212_ = sym;
+                               _tmp213_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp212_);
+                               _tmp214_ = _tmp213_;
+                               _tmp215_ = g_strconcat ("_", _tmp214_, NULL);
+                               _tmp216_ = _tmp215_;
+                               _tmp217_ = g_strconcat (_tmp216_, "dbus_arg_info_", NULL);
+                               _tmp218_ = _tmp217_;
+                               _tmp219_ = m;
+                               _tmp220_ = vala_symbol_get_name ((ValaSymbol*) _tmp219_);
+                               _tmp221_ = _tmp220_;
+                               _tmp222_ = g_strconcat (_tmp218_, _tmp221_, NULL);
+                               _tmp223_ = _tmp222_;
+                               _tmp224_ = g_strconcat (_tmp223_, "_result", NULL);
+                               _tmp225_ = _tmp224_;
+                               _tmp226_ = vala_ccode_identifier_new (_tmp225_);
+                               _tmp227_ = _tmp226_;
+                               _tmp228_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp227_);
+                               _tmp229_ = _tmp228_;
+                               vala_ccode_initializer_list_append (_tmp211_, (ValaCCodeExpression*) _tmp229_);
+                               _vala_ccode_node_unref0 (_tmp229_);
+                               _vala_ccode_node_unref0 (_tmp227_);
+                               _g_free0 (_tmp225_);
+                               _g_free0 (_tmp223_);
+                               _g_free0 (_tmp218_);
+                               _g_free0 (_tmp216_);
+                               _g_free0 (_tmp214_);
+                               _vala_ccode_node_unref0 (_cdecl_);
+                               _vala_ccode_node_unref0 (info);
+                       }
+                       _tmp230_ = in_args_info;
+                       _tmp231_ = vala_ccode_constant_new ("NULL");
+                       _tmp232_ = _tmp231_;
+                       vala_ccode_initializer_list_append (_tmp230_, (ValaCCodeExpression*) _tmp232_);
+                       _vala_ccode_node_unref0 (_tmp232_);
+                       _tmp233_ = out_args_info;
+                       _tmp234_ = vala_ccode_constant_new ("NULL");
+                       _tmp235_ = _tmp234_;
+                       vala_ccode_initializer_list_append (_tmp233_, (ValaCCodeExpression*) _tmp235_);
+                       _vala_ccode_node_unref0 (_tmp235_);
+                       _tmp236_ = vala_ccode_declaration_new ("const GDBusArgInfo * const");
+                       _cdecl_ = _tmp236_;
+                       _tmp237_ = _cdecl_;
+                       _tmp238_ = sym;
+                       _tmp239_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp238_);
+                       _tmp240_ = _tmp239_;
+                       _tmp241_ = g_strconcat ("_", _tmp240_, NULL);
+                       _tmp242_ = _tmp241_;
+                       _tmp243_ = g_strconcat (_tmp242_, "dbus_arg_info_", NULL);
+                       _tmp244_ = _tmp243_;
+                       _tmp245_ = m;
+                       _tmp246_ = vala_symbol_get_name ((ValaSymbol*) _tmp245_);
+                       _tmp247_ = _tmp246_;
+                       _tmp248_ = g_strconcat (_tmp244_, _tmp247_, NULL);
+                       _tmp249_ = _tmp248_;
+                       _tmp250_ = g_strconcat (_tmp249_, "_in[]", NULL);
+                       _tmp251_ = _tmp250_;
+                       _tmp252_ = in_args_info;
+                       _tmp253_ = vala_ccode_variable_declarator_new (_tmp251_, (ValaCCodeExpression*) _tmp252_, NULL);
+                       _tmp254_ = _tmp253_;
+                       vala_ccode_declaration_add_declarator (_tmp237_, (ValaCCodeDeclarator*) _tmp254_);
+                       _vala_ccode_node_unref0 (_tmp254_);
+                       _g_free0 (_tmp251_);
+                       _g_free0 (_tmp249_);
+                       _g_free0 (_tmp244_);
+                       _g_free0 (_tmp242_);
+                       _g_free0 (_tmp240_);
+                       _tmp255_ = _cdecl_;
+                       vala_ccode_declaration_set_modifiers (_tmp255_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp256_ = ((ValaCCodeBaseModule*) self)->cfile;
+                       _tmp257_ = _cdecl_;
+                       vala_ccode_file_add_constant_declaration (_tmp256_, (ValaCCodeNode*) _tmp257_);
+                       _tmp258_ = vala_ccode_declaration_new ("const GDBusArgInfo * const");
+                       _vala_ccode_node_unref0 (_cdecl_);
+                       _cdecl_ = _tmp258_;
+                       _tmp259_ = _cdecl_;
+                       _tmp260_ = sym;
+                       _tmp261_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp260_);
+                       _tmp262_ = _tmp261_;
+                       _tmp263_ = g_strconcat ("_", _tmp262_, NULL);
+                       _tmp264_ = _tmp263_;
+                       _tmp265_ = g_strconcat (_tmp264_, "dbus_arg_info_", NULL);
+                       _tmp266_ = _tmp265_;
+                       _tmp267_ = m;
+                       _tmp268_ = vala_symbol_get_name ((ValaSymbol*) _tmp267_);
+                       _tmp269_ = _tmp268_;
+                       _tmp270_ = g_strconcat (_tmp266_, _tmp269_, NULL);
+                       _tmp271_ = _tmp270_;
+                       _tmp272_ = g_strconcat (_tmp271_, "_out[]", NULL);
+                       _tmp273_ = _tmp272_;
+                       _tmp274_ = out_args_info;
+                       _tmp275_ = vala_ccode_variable_declarator_new (_tmp273_, (ValaCCodeExpression*) _tmp274_, NULL);
+                       _tmp276_ = _tmp275_;
+                       vala_ccode_declaration_add_declarator (_tmp259_, (ValaCCodeDeclarator*) _tmp276_);
+                       _vala_ccode_node_unref0 (_tmp276_);
+                       _g_free0 (_tmp273_);
+                       _g_free0 (_tmp271_);
+                       _g_free0 (_tmp266_);
+                       _g_free0 (_tmp264_);
+                       _g_free0 (_tmp262_);
+                       _tmp277_ = _cdecl_;
+                       vala_ccode_declaration_set_modifiers (_tmp277_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp278_ = ((ValaCCodeBaseModule*) self)->cfile;
+                       _tmp279_ = _cdecl_;
+                       vala_ccode_file_add_constant_declaration (_tmp278_, (ValaCCodeNode*) _tmp279_);
+                       _tmp280_ = vala_ccode_initializer_list_new ();
+                       info = _tmp280_;
+                       _tmp281_ = info;
+                       _tmp282_ = vala_ccode_constant_new ("-1");
+                       _tmp283_ = _tmp282_;
+                       vala_ccode_initializer_list_append (_tmp281_, (ValaCCodeExpression*) _tmp283_);
+                       _vala_ccode_node_unref0 (_tmp283_);
+                       _tmp284_ = info;
+                       _tmp285_ = m;
+                       _tmp286_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp285_);
+                       _tmp287_ = _tmp286_;
+                       _tmp288_ = g_strdup_printf ("\"%s\"", _tmp287_);
+                       _tmp289_ = _tmp288_;
+                       _tmp290_ = vala_ccode_constant_new (_tmp289_);
+                       _tmp291_ = _tmp290_;
+                       vala_ccode_initializer_list_append (_tmp284_, (ValaCCodeExpression*) _tmp291_);
+                       _vala_ccode_node_unref0 (_tmp291_);
+                       _g_free0 (_tmp289_);
+                       _g_free0 (_tmp287_);
+                       _tmp292_ = info;
+                       _tmp293_ = sym;
+                       _tmp294_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp293_);
+                       _tmp295_ = _tmp294_;
+                       _tmp296_ = g_strconcat ("_", _tmp295_, NULL);
+                       _tmp297_ = _tmp296_;
+                       _tmp298_ = g_strconcat (_tmp297_, "dbus_arg_info_", NULL);
+                       _tmp299_ = _tmp298_;
+                       _tmp300_ = m;
+                       _tmp301_ = vala_symbol_get_name ((ValaSymbol*) _tmp300_);
+                       _tmp302_ = _tmp301_;
+                       _tmp303_ = g_strconcat (_tmp299_, _tmp302_, NULL);
+                       _tmp304_ = _tmp303_;
+                       _tmp305_ = g_strconcat (_tmp304_, "_in", NULL);
+                       _tmp306_ = _tmp305_;
+                       _tmp307_ = vala_ccode_identifier_new (_tmp306_);
+                       _tmp308_ = _tmp307_;
+                       _tmp309_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp308_);
+                       _tmp310_ = _tmp309_;
+                       _tmp311_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp310_, "GDBusArgInfo **");
+                       _tmp312_ = _tmp311_;
+                       vala_ccode_initializer_list_append (_tmp292_, (ValaCCodeExpression*) _tmp312_);
+                       _vala_ccode_node_unref0 (_tmp312_);
+                       _vala_ccode_node_unref0 (_tmp310_);
+                       _vala_ccode_node_unref0 (_tmp308_);
+                       _g_free0 (_tmp306_);
+                       _g_free0 (_tmp304_);
+                       _g_free0 (_tmp299_);
+                       _g_free0 (_tmp297_);
+                       _g_free0 (_tmp295_);
+                       _tmp313_ = info;
+                       _tmp314_ = sym;
+                       _tmp315_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp314_);
+                       _tmp316_ = _tmp315_;
+                       _tmp317_ = g_strconcat ("_", _tmp316_, NULL);
+                       _tmp318_ = _tmp317_;
+                       _tmp319_ = g_strconcat (_tmp318_, "dbus_arg_info_", NULL);
+                       _tmp320_ = _tmp319_;
+                       _tmp321_ = m;
+                       _tmp322_ = vala_symbol_get_name ((ValaSymbol*) _tmp321_);
+                       _tmp323_ = _tmp322_;
+                       _tmp324_ = g_strconcat (_tmp320_, _tmp323_, NULL);
+                       _tmp325_ = _tmp324_;
+                       _tmp326_ = g_strconcat (_tmp325_, "_out", NULL);
+                       _tmp327_ = _tmp326_;
+                       _tmp328_ = vala_ccode_identifier_new (_tmp327_);
+                       _tmp329_ = _tmp328_;
+                       _tmp330_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp329_);
+                       _tmp331_ = _tmp330_;
+                       _tmp332_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp331_, "GDBusArgInfo **");
+                       _tmp333_ = _tmp332_;
+                       vala_ccode_initializer_list_append (_tmp313_, (ValaCCodeExpression*) _tmp333_);
+                       _vala_ccode_node_unref0 (_tmp333_);
+                       _vala_ccode_node_unref0 (_tmp331_);
+                       _vala_ccode_node_unref0 (_tmp329_);
+                       _g_free0 (_tmp327_);
+                       _g_free0 (_tmp325_);
+                       _g_free0 (_tmp320_);
+                       _g_free0 (_tmp318_);
+                       _g_free0 (_tmp316_);
+                       _tmp334_ = vala_ccode_declaration_new ("const GDBusMethodInfo");
+                       _vala_ccode_node_unref0 (_cdecl_);
+                       _cdecl_ = _tmp334_;
+                       _tmp335_ = _cdecl_;
+                       _tmp336_ = sym;
+                       _tmp337_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp336_);
+                       _tmp338_ = _tmp337_;
+                       _tmp339_ = g_strconcat ("_", _tmp338_, NULL);
+                       _tmp340_ = _tmp339_;
+                       _tmp341_ = g_strconcat (_tmp340_, "dbus_method_info_", NULL);
+                       _tmp342_ = _tmp341_;
+                       _tmp343_ = m;
+                       _tmp344_ = vala_symbol_get_name ((ValaSymbol*) _tmp343_);
+                       _tmp345_ = _tmp344_;
+                       _tmp346_ = g_strconcat (_tmp342_, _tmp345_, NULL);
+                       _tmp347_ = _tmp346_;
+                       _tmp348_ = info;
+                       _tmp349_ = vala_ccode_variable_declarator_new (_tmp347_, (ValaCCodeExpression*) _tmp348_, NULL);
+                       _tmp350_ = _tmp349_;
+                       vala_ccode_declaration_add_declarator (_tmp335_, (ValaCCodeDeclarator*) _tmp350_);
+                       _vala_ccode_node_unref0 (_tmp350_);
+                       _g_free0 (_tmp347_);
+                       _g_free0 (_tmp342_);
+                       _g_free0 (_tmp340_);
+                       _g_free0 (_tmp338_);
+                       _tmp351_ = _cdecl_;
+                       vala_ccode_declaration_set_modifiers (_tmp351_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp352_ = ((ValaCCodeBaseModule*) self)->cfile;
+                       _tmp353_ = _cdecl_;
+                       vala_ccode_file_add_constant_declaration (_tmp352_, (ValaCCodeNode*) _tmp353_);
+                       _tmp354_ = infos;
+                       _tmp355_ = sym;
+                       _tmp356_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp355_);
+                       _tmp357_ = _tmp356_;
+                       _tmp358_ = g_strconcat ("_", _tmp357_, NULL);
+                       _tmp359_ = _tmp358_;
+                       _tmp360_ = g_strconcat (_tmp359_, "dbus_method_info_", NULL);
+                       _tmp361_ = _tmp360_;
+                       _tmp362_ = m;
+                       _tmp363_ = vala_symbol_get_name ((ValaSymbol*) _tmp362_);
+                       _tmp364_ = _tmp363_;
+                       _tmp365_ = g_strconcat (_tmp361_, _tmp364_, NULL);
+                       _tmp366_ = _tmp365_;
+                       _tmp367_ = vala_ccode_identifier_new (_tmp366_);
+                       _tmp368_ = _tmp367_;
+                       _tmp369_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp368_);
+                       _tmp370_ = _tmp369_;
+                       vala_ccode_initializer_list_append (_tmp354_, (ValaCCodeExpression*) _tmp370_);
+                       _vala_ccode_node_unref0 (_tmp370_);
+                       _vala_ccode_node_unref0 (_tmp368_);
+                       _g_free0 (_tmp366_);
+                       _g_free0 (_tmp361_);
+                       _g_free0 (_tmp359_);
+                       _g_free0 (_tmp357_);
+                       _vala_ccode_node_unref0 (info);
+                       _vala_ccode_node_unref0 (_cdecl_);
+                       _vala_ccode_node_unref0 (out_args_info);
+                       _vala_ccode_node_unref0 (in_args_info);
+                       _vala_code_node_unref0 (m);
+               }
+               _vala_iterable_unref0 (_m_list);
+       }
+       _tmp371_ = infos;
+       _tmp372_ = vala_ccode_constant_new ("NULL");
+       _tmp373_ = _tmp372_;
+       vala_ccode_initializer_list_append (_tmp371_, (ValaCCodeExpression*) _tmp373_);
+       _vala_ccode_node_unref0 (_tmp373_);
+       _tmp374_ = vala_ccode_declaration_new ("const GDBusMethodInfo * const");
+       _cdecl_ = _tmp374_;
+       _tmp375_ = sym;
+       _tmp376_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp375_);
+       _tmp377_ = _tmp376_;
+       _tmp378_ = g_strconcat ("_", _tmp377_, NULL);
+       _tmp379_ = _tmp378_;
+       _tmp380_ = g_strconcat (_tmp379_, "dbus_method_info[]", NULL);
+       _tmp381_ = _tmp380_;
+       _tmp382_ = infos;
+       _tmp383_ = vala_ccode_variable_declarator_new (_tmp381_, (ValaCCodeExpression*) _tmp382_, NULL);
+       _tmp384_ = _tmp383_;
+       vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp384_);
+       _vala_ccode_node_unref0 (_tmp384_);
+       _g_free0 (_tmp381_);
+       _g_free0 (_tmp379_);
+       _g_free0 (_tmp377_);
+       vala_ccode_declaration_set_modifiers (_cdecl_, VALA_CCODE_MODIFIERS_STATIC);
+       _tmp385_ = ((ValaCCodeBaseModule*) self)->cfile;
+       vala_ccode_file_add_constant_declaration (_tmp385_, (ValaCCodeNode*) _cdecl_);
+       _tmp386_ = sym;
+       _tmp387_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp386_);
+       _tmp388_ = _tmp387_;
+       _tmp389_ = g_strconcat ("_", _tmp388_, NULL);
+       _tmp390_ = _tmp389_;
+       _tmp391_ = g_strconcat (_tmp390_, "dbus_method_info", NULL);
+       _tmp392_ = _tmp391_;
+       _tmp393_ = vala_ccode_identifier_new (_tmp392_);
+       _tmp394_ = (ValaCCodeExpression*) _tmp393_;
+       _g_free0 (_tmp392_);
+       _g_free0 (_tmp390_);
+       _g_free0 (_tmp388_);
+       result = _tmp394_;
+       _vala_ccode_node_unref0 (_cdecl_);
+       _vala_ccode_node_unref0 (infos);
+       return result;
+}
+
+
+static ValaCCodeExpression* vala_gd_bus_module_get_signal_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym) {
+       ValaCCodeExpression* result = NULL;
+       ValaCCodeInitializerList* infos = NULL;
+       ValaCCodeInitializerList* _tmp0_ = NULL;
+       ValaCCodeInitializerList* _tmp196_ = NULL;
+       ValaCCodeConstant* _tmp197_ = NULL;
+       ValaCCodeConstant* _tmp198_ = NULL;
+       ValaCCodeDeclaration* _cdecl_ = NULL;
+       ValaCCodeDeclaration* _tmp199_ = NULL;
+       ValaObjectTypeSymbol* _tmp200_ = NULL;
+       gchar* _tmp201_ = NULL;
+       gchar* _tmp202_ = NULL;
+       gchar* _tmp203_ = NULL;
+       gchar* _tmp204_ = NULL;
+       gchar* _tmp205_ = NULL;
+       gchar* _tmp206_ = NULL;
+       ValaCCodeInitializerList* _tmp207_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp208_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp209_ = NULL;
+       ValaCCodeFile* _tmp210_ = NULL;
+       ValaObjectTypeSymbol* _tmp211_ = NULL;
+       gchar* _tmp212_ = NULL;
+       gchar* _tmp213_ = NULL;
+       gchar* _tmp214_ = NULL;
+       gchar* _tmp215_ = NULL;
+       gchar* _tmp216_ = NULL;
+       gchar* _tmp217_ = NULL;
+       ValaCCodeIdentifier* _tmp218_ = NULL;
+       ValaCCodeExpression* _tmp219_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (sym != NULL, NULL);
+       _tmp0_ = vala_ccode_initializer_list_new ();
+       infos = _tmp0_;
+       {
+               ValaList* _sig_list = NULL;
+               ValaObjectTypeSymbol* _tmp1_ = NULL;
+               ValaList* _tmp2_ = NULL;
+               gint _sig_size = 0;
+               ValaList* _tmp3_ = NULL;
+               gint _tmp4_ = 0;
+               gint _tmp5_ = 0;
+               gint _sig_index = 0;
+               _tmp1_ = sym;
+               _tmp2_ = vala_object_type_symbol_get_signals (_tmp1_);
+               _sig_list = _tmp2_;
+               _tmp3_ = _sig_list;
+               _tmp4_ = vala_collection_get_size ((ValaCollection*) _tmp3_);
+               _tmp5_ = _tmp4_;
+               _sig_size = _tmp5_;
+               _sig_index = -1;
+               while (TRUE) {
+                       gint _tmp6_ = 0;
+                       gint _tmp7_ = 0;
+                       gint _tmp8_ = 0;
+                       ValaSignal* sig = NULL;
+                       ValaList* _tmp9_ = NULL;
+                       gint _tmp10_ = 0;
+                       gpointer _tmp11_ = NULL;
+                       ValaSignal* _tmp12_ = NULL;
+                       ValaSymbolAccessibility _tmp13_ = 0;
+                       ValaSymbolAccessibility _tmp14_ = 0;
+                       ValaSignal* _tmp15_ = NULL;
+                       gboolean _tmp16_ = FALSE;
+                       ValaCCodeInitializerList* args_info = NULL;
+                       ValaCCodeInitializerList* _tmp17_ = NULL;
+                       ValaCCodeInitializerList* _tmp103_ = NULL;
+                       ValaCCodeConstant* _tmp104_ = NULL;
+                       ValaCCodeConstant* _tmp105_ = NULL;
+                       ValaCCodeDeclaration* _cdecl_ = NULL;
+                       ValaCCodeDeclaration* _tmp106_ = NULL;
+                       ValaCCodeDeclaration* _tmp107_ = NULL;
+                       ValaObjectTypeSymbol* _tmp108_ = NULL;
+                       gchar* _tmp109_ = NULL;
+                       gchar* _tmp110_ = NULL;
+                       gchar* _tmp111_ = NULL;
+                       gchar* _tmp112_ = NULL;
+                       gchar* _tmp113_ = NULL;
+                       gchar* _tmp114_ = NULL;
+                       ValaSignal* _tmp115_ = NULL;
+                       gchar* _tmp116_ = NULL;
+                       gchar* _tmp117_ = NULL;
+                       gchar* _tmp118_ = NULL;
+                       gchar* _tmp119_ = NULL;
+                       gchar* _tmp120_ = NULL;
+                       gchar* _tmp121_ = NULL;
+                       ValaCCodeInitializerList* _tmp122_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp123_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp124_ = NULL;
+                       ValaCCodeDeclaration* _tmp125_ = NULL;
+                       ValaCCodeFile* _tmp126_ = NULL;
+                       ValaCCodeDeclaration* _tmp127_ = NULL;
+                       ValaCCodeInitializerList* info = NULL;
+                       ValaCCodeInitializerList* _tmp128_ = NULL;
+                       ValaCCodeInitializerList* _tmp129_ = NULL;
+                       ValaCCodeConstant* _tmp130_ = NULL;
+                       ValaCCodeConstant* _tmp131_ = NULL;
+                       ValaCCodeInitializerList* _tmp132_ = NULL;
+                       ValaSignal* _tmp133_ = NULL;
+                       gchar* _tmp134_ = NULL;
+                       gchar* _tmp135_ = NULL;
+                       gchar* _tmp136_ = NULL;
+                       gchar* _tmp137_ = NULL;
+                       ValaCCodeConstant* _tmp138_ = NULL;
+                       ValaCCodeConstant* _tmp139_ = NULL;
+                       ValaCCodeInitializerList* _tmp140_ = NULL;
+                       ValaObjectTypeSymbol* _tmp141_ = NULL;
+                       gchar* _tmp142_ = NULL;
+                       gchar* _tmp143_ = NULL;
+                       gchar* _tmp144_ = NULL;
+                       gchar* _tmp145_ = NULL;
+                       gchar* _tmp146_ = NULL;
+                       gchar* _tmp147_ = NULL;
+                       ValaSignal* _tmp148_ = NULL;
+                       gchar* _tmp149_ = NULL;
+                       gchar* _tmp150_ = NULL;
+                       gchar* _tmp151_ = NULL;
+                       gchar* _tmp152_ = NULL;
+                       ValaCCodeIdentifier* _tmp153_ = NULL;
+                       ValaCCodeIdentifier* _tmp154_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp155_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp156_ = NULL;
+                       ValaCCodeCastExpression* _tmp157_ = NULL;
+                       ValaCCodeCastExpression* _tmp158_ = NULL;
+                       ValaCCodeDeclaration* _tmp159_ = NULL;
+                       ValaCCodeDeclaration* _tmp160_ = NULL;
+                       ValaObjectTypeSymbol* _tmp161_ = NULL;
+                       gchar* _tmp162_ = NULL;
+                       gchar* _tmp163_ = NULL;
+                       gchar* _tmp164_ = NULL;
+                       gchar* _tmp165_ = NULL;
+                       gchar* _tmp166_ = NULL;
+                       gchar* _tmp167_ = NULL;
+                       ValaSignal* _tmp168_ = NULL;
+                       gchar* _tmp169_ = NULL;
+                       gchar* _tmp170_ = NULL;
+                       gchar* _tmp171_ = NULL;
+                       gchar* _tmp172_ = NULL;
+                       ValaCCodeInitializerList* _tmp173_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp174_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp175_ = NULL;
+                       ValaCCodeDeclaration* _tmp176_ = NULL;
+                       ValaCCodeFile* _tmp177_ = NULL;
+                       ValaCCodeDeclaration* _tmp178_ = NULL;
+                       ValaCCodeInitializerList* _tmp179_ = NULL;
+                       ValaObjectTypeSymbol* _tmp180_ = NULL;
+                       gchar* _tmp181_ = NULL;
+                       gchar* _tmp182_ = NULL;
+                       gchar* _tmp183_ = NULL;
+                       gchar* _tmp184_ = NULL;
+                       gchar* _tmp185_ = NULL;
+                       gchar* _tmp186_ = NULL;
+                       ValaSignal* _tmp187_ = NULL;
+                       gchar* _tmp188_ = NULL;
+                       gchar* _tmp189_ = NULL;
+                       gchar* _tmp190_ = NULL;
+                       gchar* _tmp191_ = NULL;
+                       ValaCCodeIdentifier* _tmp192_ = NULL;
+                       ValaCCodeIdentifier* _tmp193_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp194_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp195_ = NULL;
+                       _tmp6_ = _sig_index;
+                       _sig_index = _tmp6_ + 1;
+                       _tmp7_ = _sig_index;
+                       _tmp8_ = _sig_size;
+                       if (!(_tmp7_ < _tmp8_)) {
+                               break;
+                       }
+                       _tmp9_ = _sig_list;
+                       _tmp10_ = _sig_index;
+                       _tmp11_ = vala_list_get (_tmp9_, _tmp10_);
+                       sig = (ValaSignal*) _tmp11_;
+                       _tmp12_ = sig;
+                       _tmp13_ = vala_symbol_get_access ((ValaSymbol*) _tmp12_);
+                       _tmp14_ = _tmp13_;
+                       if (_tmp14_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC) {
+                               _vala_code_node_unref0 (sig);
+                               continue;
+                       }
+                       _tmp15_ = sig;
+                       _tmp16_ = vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp15_);
+                       if (!_tmp16_) {
+                               _vala_code_node_unref0 (sig);
+                               continue;
+                       }
+                       _tmp17_ = vala_ccode_initializer_list_new ();
+                       args_info = _tmp17_;
+                       {
+                               ValaList* _param_list = NULL;
+                               ValaSignal* _tmp18_ = NULL;
+                               ValaList* _tmp19_ = NULL;
+                               gint _param_size = 0;
+                               ValaList* _tmp20_ = NULL;
+                               gint _tmp21_ = 0;
+                               gint _tmp22_ = 0;
+                               gint _param_index = 0;
+                               _tmp18_ = sig;
+                               _tmp19_ = vala_signal_get_parameters (_tmp18_);
+                               _param_list = _tmp19_;
+                               _tmp20_ = _param_list;
+                               _tmp21_ = vala_collection_get_size ((ValaCollection*) _tmp20_);
+                               _tmp22_ = _tmp21_;
+                               _param_size = _tmp22_;
+                               _param_index = -1;
+                               while (TRUE) {
+                                       gint _tmp23_ = 0;
+                                       gint _tmp24_ = 0;
+                                       gint _tmp25_ = 0;
+                                       ValaParameter* param = NULL;
+                                       ValaList* _tmp26_ = NULL;
+                                       gint _tmp27_ = 0;
+                                       gpointer _tmp28_ = NULL;
+                                       ValaCCodeInitializerList* info = NULL;
+                                       ValaCCodeInitializerList* _tmp29_ = NULL;
+                                       ValaCCodeInitializerList* _tmp30_ = NULL;
+                                       ValaCCodeConstant* _tmp31_ = NULL;
+                                       ValaCCodeConstant* _tmp32_ = NULL;
+                                       ValaCCodeInitializerList* _tmp33_ = NULL;
+                                       ValaParameter* _tmp34_ = NULL;
+                                       const gchar* _tmp35_ = NULL;
+                                       const gchar* _tmp36_ = NULL;
+                                       gchar* _tmp37_ = NULL;
+                                       gchar* _tmp38_ = NULL;
+                                       ValaCCodeConstant* _tmp39_ = NULL;
+                                       ValaCCodeConstant* _tmp40_ = NULL;
+                                       ValaCCodeInitializerList* _tmp41_ = NULL;
+                                       ValaParameter* _tmp42_ = NULL;
+                                       ValaDataType* _tmp43_ = NULL;
+                                       ValaDataType* _tmp44_ = NULL;
+                                       ValaParameter* _tmp45_ = NULL;
+                                       gchar* _tmp46_ = NULL;
+                                       gchar* _tmp47_ = NULL;
+                                       gchar* _tmp48_ = NULL;
+                                       gchar* _tmp49_ = NULL;
+                                       ValaCCodeConstant* _tmp50_ = NULL;
+                                       ValaCCodeConstant* _tmp51_ = NULL;
+                                       ValaCCodeDeclaration* _cdecl_ = NULL;
+                                       ValaCCodeDeclaration* _tmp52_ = NULL;
+                                       ValaCCodeDeclaration* _tmp53_ = NULL;
+                                       ValaObjectTypeSymbol* _tmp54_ = NULL;
+                                       gchar* _tmp55_ = NULL;
+                                       gchar* _tmp56_ = NULL;
+                                       gchar* _tmp57_ = NULL;
+                                       gchar* _tmp58_ = NULL;
+                                       gchar* _tmp59_ = NULL;
+                                       gchar* _tmp60_ = NULL;
+                                       ValaSignal* _tmp61_ = NULL;
+                                       gchar* _tmp62_ = NULL;
+                                       gchar* _tmp63_ = NULL;
+                                       gchar* _tmp64_ = NULL;
+                                       gchar* _tmp65_ = NULL;
+                                       gchar* _tmp66_ = NULL;
+                                       gchar* _tmp67_ = NULL;
+                                       ValaParameter* _tmp68_ = NULL;
+                                       const gchar* _tmp69_ = NULL;
+                                       const gchar* _tmp70_ = NULL;
+                                       gchar* _tmp71_ = NULL;
+                                       gchar* _tmp72_ = NULL;
+                                       ValaCCodeInitializerList* _tmp73_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp74_ = NULL;
+                                       ValaCCodeVariableDeclarator* _tmp75_ = NULL;
+                                       ValaCCodeDeclaration* _tmp76_ = NULL;
+                                       ValaCCodeFile* _tmp77_ = NULL;
+                                       ValaCCodeDeclaration* _tmp78_ = NULL;
+                                       ValaCCodeInitializerList* _tmp79_ = NULL;
+                                       ValaObjectTypeSymbol* _tmp80_ = NULL;
+                                       gchar* _tmp81_ = NULL;
+                                       gchar* _tmp82_ = NULL;
+                                       gchar* _tmp83_ = NULL;
+                                       gchar* _tmp84_ = NULL;
+                                       gchar* _tmp85_ = NULL;
+                                       gchar* _tmp86_ = NULL;
+                                       ValaSignal* _tmp87_ = NULL;
+                                       gchar* _tmp88_ = NULL;
+                                       gchar* _tmp89_ = NULL;
+                                       gchar* _tmp90_ = NULL;
+                                       gchar* _tmp91_ = NULL;
+                                       gchar* _tmp92_ = NULL;
+                                       gchar* _tmp93_ = NULL;
+                                       ValaParameter* _tmp94_ = NULL;
+                                       const gchar* _tmp95_ = NULL;
+                                       const gchar* _tmp96_ = NULL;
+                                       gchar* _tmp97_ = NULL;
+                                       gchar* _tmp98_ = NULL;
+                                       ValaCCodeIdentifier* _tmp99_ = NULL;
+                                       ValaCCodeIdentifier* _tmp100_ = NULL;
+                                       ValaCCodeUnaryExpression* _tmp101_ = NULL;
+                                       ValaCCodeUnaryExpression* _tmp102_ = NULL;
+                                       _tmp23_ = _param_index;
+                                       _param_index = _tmp23_ + 1;
+                                       _tmp24_ = _param_index;
+                                       _tmp25_ = _param_size;
+                                       if (!(_tmp24_ < _tmp25_)) {
+                                               break;
+                                       }
+                                       _tmp26_ = _param_list;
+                                       _tmp27_ = _param_index;
+                                       _tmp28_ = vala_list_get (_tmp26_, _tmp27_);
+                                       param = (ValaParameter*) _tmp28_;
+                                       _tmp29_ = vala_ccode_initializer_list_new ();
+                                       info = _tmp29_;
+                                       _tmp30_ = info;
+                                       _tmp31_ = vala_ccode_constant_new ("-1");
+                                       _tmp32_ = _tmp31_;
+                                       vala_ccode_initializer_list_append (_tmp30_, (ValaCCodeExpression*) _tmp32_);
+                                       _vala_ccode_node_unref0 (_tmp32_);
+                                       _tmp33_ = info;
+                                       _tmp34_ = param;
+                                       _tmp35_ = vala_symbol_get_name ((ValaSymbol*) _tmp34_);
+                                       _tmp36_ = _tmp35_;
+                                       _tmp37_ = g_strdup_printf ("\"%s\"", _tmp36_);
+                                       _tmp38_ = _tmp37_;
+                                       _tmp39_ = vala_ccode_constant_new (_tmp38_);
+                                       _tmp40_ = _tmp39_;
+                                       vala_ccode_initializer_list_append (_tmp33_, (ValaCCodeExpression*) _tmp40_);
+                                       _vala_ccode_node_unref0 (_tmp40_);
+                                       _g_free0 (_tmp38_);
+                                       _tmp41_ = info;
+                                       _tmp42_ = param;
+                                       _tmp43_ = vala_variable_get_variable_type ((ValaVariable*) _tmp42_);
+                                       _tmp44_ = _tmp43_;
+                                       _tmp45_ = param;
+                                       _tmp46_ = vala_gvariant_module_get_type_signature (_tmp44_, (ValaSymbol*) _tmp45_);
+                                       _tmp47_ = _tmp46_;
+                                       _tmp48_ = g_strdup_printf ("\"%s\"", _tmp47_);
+                                       _tmp49_ = _tmp48_;
+                                       _tmp50_ = vala_ccode_constant_new (_tmp49_);
+                                       _tmp51_ = _tmp50_;
+                                       vala_ccode_initializer_list_append (_tmp41_, (ValaCCodeExpression*) _tmp51_);
+                                       _vala_ccode_node_unref0 (_tmp51_);
+                                       _g_free0 (_tmp49_);
+                                       _g_free0 (_tmp47_);
+                                       _tmp52_ = vala_ccode_declaration_new ("const GDBusArgInfo");
+                                       _cdecl_ = _tmp52_;
+                                       _tmp53_ = _cdecl_;
+                                       _tmp54_ = sym;
+                                       _tmp55_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp54_);
+                                       _tmp56_ = _tmp55_;
+                                       _tmp57_ = g_strconcat ("_", _tmp56_, NULL);
+                                       _tmp58_ = _tmp57_;
+                                       _tmp59_ = g_strconcat (_tmp58_, "dbus_arg_info_", NULL);
+                                       _tmp60_ = _tmp59_;
+                                       _tmp61_ = sig;
+                                       _tmp62_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp61_);
+                                       _tmp63_ = _tmp62_;
+                                       _tmp64_ = g_strconcat (_tmp60_, _tmp63_, NULL);
+                                       _tmp65_ = _tmp64_;
+                                       _tmp66_ = g_strconcat (_tmp65_, "_", NULL);
+                                       _tmp67_ = _tmp66_;
+                                       _tmp68_ = param;
+                                       _tmp69_ = vala_symbol_get_name ((ValaSymbol*) _tmp68_);
+                                       _tmp70_ = _tmp69_;
+                                       _tmp71_ = g_strconcat (_tmp67_, _tmp70_, NULL);
+                                       _tmp72_ = _tmp71_;
+                                       _tmp73_ = info;
+                                       _tmp74_ = vala_ccode_variable_declarator_new (_tmp72_, (ValaCCodeExpression*) _tmp73_, NULL);
+                                       _tmp75_ = _tmp74_;
+                                       vala_ccode_declaration_add_declarator (_tmp53_, (ValaCCodeDeclarator*) _tmp75_);
+                                       _vala_ccode_node_unref0 (_tmp75_);
+                                       _g_free0 (_tmp72_);
+                                       _g_free0 (_tmp67_);
+                                       _g_free0 (_tmp65_);
+                                       _g_free0 (_tmp63_);
+                                       _g_free0 (_tmp60_);
+                                       _g_free0 (_tmp58_);
+                                       _g_free0 (_tmp56_);
+                                       _tmp76_ = _cdecl_;
+                                       vala_ccode_declaration_set_modifiers (_tmp76_, VALA_CCODE_MODIFIERS_STATIC);
+                                       _tmp77_ = ((ValaCCodeBaseModule*) self)->cfile;
+                                       _tmp78_ = _cdecl_;
+                                       vala_ccode_file_add_constant_declaration (_tmp77_, (ValaCCodeNode*) _tmp78_);
+                                       _tmp79_ = args_info;
+                                       _tmp80_ = sym;
+                                       _tmp81_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp80_);
+                                       _tmp82_ = _tmp81_;
+                                       _tmp83_ = g_strconcat ("_", _tmp82_, NULL);
+                                       _tmp84_ = _tmp83_;
+                                       _tmp85_ = g_strconcat (_tmp84_, "dbus_arg_info_", NULL);
+                                       _tmp86_ = _tmp85_;
+                                       _tmp87_ = sig;
+                                       _tmp88_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp87_);
+                                       _tmp89_ = _tmp88_;
+                                       _tmp90_ = g_strconcat (_tmp86_, _tmp89_, NULL);
+                                       _tmp91_ = _tmp90_;
+                                       _tmp92_ = g_strconcat (_tmp91_, "_", NULL);
+                                       _tmp93_ = _tmp92_;
+                                       _tmp94_ = param;
+                                       _tmp95_ = vala_symbol_get_name ((ValaSymbol*) _tmp94_);
+                                       _tmp96_ = _tmp95_;
+                                       _tmp97_ = g_strconcat (_tmp93_, _tmp96_, NULL);
+                                       _tmp98_ = _tmp97_;
+                                       _tmp99_ = vala_ccode_identifier_new (_tmp98_);
+                                       _tmp100_ = _tmp99_;
+                                       _tmp101_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp100_);
+                                       _tmp102_ = _tmp101_;
+                                       vala_ccode_initializer_list_append (_tmp79_, (ValaCCodeExpression*) _tmp102_);
+                                       _vala_ccode_node_unref0 (_tmp102_);
+                                       _vala_ccode_node_unref0 (_tmp100_);
+                                       _g_free0 (_tmp98_);
+                                       _g_free0 (_tmp93_);
+                                       _g_free0 (_tmp91_);
+                                       _g_free0 (_tmp89_);
+                                       _g_free0 (_tmp86_);
+                                       _g_free0 (_tmp84_);
+                                       _g_free0 (_tmp82_);
+                                       _vala_ccode_node_unref0 (_cdecl_);
+                                       _vala_ccode_node_unref0 (info);
+                                       _vala_code_node_unref0 (param);
+                               }
+                               _vala_iterable_unref0 (_param_list);
+                       }
+                       _tmp103_ = args_info;
+                       _tmp104_ = vala_ccode_constant_new ("NULL");
+                       _tmp105_ = _tmp104_;
+                       vala_ccode_initializer_list_append (_tmp103_, (ValaCCodeExpression*) _tmp105_);
+                       _vala_ccode_node_unref0 (_tmp105_);
+                       _tmp106_ = vala_ccode_declaration_new ("const GDBusArgInfo * const");
+                       _cdecl_ = _tmp106_;
+                       _tmp107_ = _cdecl_;
+                       _tmp108_ = sym;
+                       _tmp109_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp108_);
+                       _tmp110_ = _tmp109_;
+                       _tmp111_ = g_strconcat ("_", _tmp110_, NULL);
+                       _tmp112_ = _tmp111_;
+                       _tmp113_ = g_strconcat (_tmp112_, "dbus_arg_info_", NULL);
+                       _tmp114_ = _tmp113_;
+                       _tmp115_ = sig;
+                       _tmp116_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp115_);
+                       _tmp117_ = _tmp116_;
+                       _tmp118_ = g_strconcat (_tmp114_, _tmp117_, NULL);
+                       _tmp119_ = _tmp118_;
+                       _tmp120_ = g_strconcat (_tmp119_, "[]", NULL);
+                       _tmp121_ = _tmp120_;
+                       _tmp122_ = args_info;
+                       _tmp123_ = vala_ccode_variable_declarator_new (_tmp121_, (ValaCCodeExpression*) _tmp122_, NULL);
+                       _tmp124_ = _tmp123_;
+                       vala_ccode_declaration_add_declarator (_tmp107_, (ValaCCodeDeclarator*) _tmp124_);
+                       _vala_ccode_node_unref0 (_tmp124_);
+                       _g_free0 (_tmp121_);
+                       _g_free0 (_tmp119_);
+                       _g_free0 (_tmp117_);
+                       _g_free0 (_tmp114_);
+                       _g_free0 (_tmp112_);
+                       _g_free0 (_tmp110_);
+                       _tmp125_ = _cdecl_;
+                       vala_ccode_declaration_set_modifiers (_tmp125_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp126_ = ((ValaCCodeBaseModule*) self)->cfile;
+                       _tmp127_ = _cdecl_;
+                       vala_ccode_file_add_constant_declaration (_tmp126_, (ValaCCodeNode*) _tmp127_);
+                       _tmp128_ = vala_ccode_initializer_list_new ();
+                       info = _tmp128_;
+                       _tmp129_ = info;
+                       _tmp130_ = vala_ccode_constant_new ("-1");
+                       _tmp131_ = _tmp130_;
+                       vala_ccode_initializer_list_append (_tmp129_, (ValaCCodeExpression*) _tmp131_);
+                       _vala_ccode_node_unref0 (_tmp131_);
+                       _tmp132_ = info;
+                       _tmp133_ = sig;
+                       _tmp134_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp133_);
+                       _tmp135_ = _tmp134_;
+                       _tmp136_ = g_strdup_printf ("\"%s\"", _tmp135_);
+                       _tmp137_ = _tmp136_;
+                       _tmp138_ = vala_ccode_constant_new (_tmp137_);
+                       _tmp139_ = _tmp138_;
+                       vala_ccode_initializer_list_append (_tmp132_, (ValaCCodeExpression*) _tmp139_);
+                       _vala_ccode_node_unref0 (_tmp139_);
+                       _g_free0 (_tmp137_);
+                       _g_free0 (_tmp135_);
+                       _tmp140_ = info;
+                       _tmp141_ = sym;
+                       _tmp142_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp141_);
+                       _tmp143_ = _tmp142_;
+                       _tmp144_ = g_strconcat ("_", _tmp143_, NULL);
+                       _tmp145_ = _tmp144_;
+                       _tmp146_ = g_strconcat (_tmp145_, "dbus_arg_info_", NULL);
+                       _tmp147_ = _tmp146_;
+                       _tmp148_ = sig;
+                       _tmp149_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp148_);
+                       _tmp150_ = _tmp149_;
+                       _tmp151_ = g_strconcat (_tmp147_, _tmp150_, NULL);
+                       _tmp152_ = _tmp151_;
+                       _tmp153_ = vala_ccode_identifier_new (_tmp152_);
+                       _tmp154_ = _tmp153_;
+                       _tmp155_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp154_);
+                       _tmp156_ = _tmp155_;
+                       _tmp157_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp156_, "GDBusArgInfo **");
+                       _tmp158_ = _tmp157_;
+                       vala_ccode_initializer_list_append (_tmp140_, (ValaCCodeExpression*) _tmp158_);
+                       _vala_ccode_node_unref0 (_tmp158_);
+                       _vala_ccode_node_unref0 (_tmp156_);
+                       _vala_ccode_node_unref0 (_tmp154_);
+                       _g_free0 (_tmp152_);
+                       _g_free0 (_tmp150_);
+                       _g_free0 (_tmp147_);
+                       _g_free0 (_tmp145_);
+                       _g_free0 (_tmp143_);
+                       _tmp159_ = vala_ccode_declaration_new ("const GDBusSignalInfo");
+                       _vala_ccode_node_unref0 (_cdecl_);
+                       _cdecl_ = _tmp159_;
+                       _tmp160_ = _cdecl_;
+                       _tmp161_ = sym;
+                       _tmp162_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp161_);
+                       _tmp163_ = _tmp162_;
+                       _tmp164_ = g_strconcat ("_", _tmp163_, NULL);
+                       _tmp165_ = _tmp164_;
+                       _tmp166_ = g_strconcat (_tmp165_, "dbus_signal_info_", NULL);
+                       _tmp167_ = _tmp166_;
+                       _tmp168_ = sig;
+                       _tmp169_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp168_);
+                       _tmp170_ = _tmp169_;
+                       _tmp171_ = g_strconcat (_tmp167_, _tmp170_, NULL);
+                       _tmp172_ = _tmp171_;
+                       _tmp173_ = info;
+                       _tmp174_ = vala_ccode_variable_declarator_new (_tmp172_, (ValaCCodeExpression*) _tmp173_, NULL);
+                       _tmp175_ = _tmp174_;
+                       vala_ccode_declaration_add_declarator (_tmp160_, (ValaCCodeDeclarator*) _tmp175_);
+                       _vala_ccode_node_unref0 (_tmp175_);
+                       _g_free0 (_tmp172_);
+                       _g_free0 (_tmp170_);
+                       _g_free0 (_tmp167_);
+                       _g_free0 (_tmp165_);
+                       _g_free0 (_tmp163_);
+                       _tmp176_ = _cdecl_;
+                       vala_ccode_declaration_set_modifiers (_tmp176_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp177_ = ((ValaCCodeBaseModule*) self)->cfile;
+                       _tmp178_ = _cdecl_;
+                       vala_ccode_file_add_constant_declaration (_tmp177_, (ValaCCodeNode*) _tmp178_);
+                       _tmp179_ = infos;
+                       _tmp180_ = sym;
+                       _tmp181_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp180_);
+                       _tmp182_ = _tmp181_;
+                       _tmp183_ = g_strconcat ("_", _tmp182_, NULL);
+                       _tmp184_ = _tmp183_;
+                       _tmp185_ = g_strconcat (_tmp184_, "dbus_signal_info_", NULL);
+                       _tmp186_ = _tmp185_;
+                       _tmp187_ = sig;
+                       _tmp188_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp187_);
+                       _tmp189_ = _tmp188_;
+                       _tmp190_ = g_strconcat (_tmp186_, _tmp189_, NULL);
+                       _tmp191_ = _tmp190_;
+                       _tmp192_ = vala_ccode_identifier_new (_tmp191_);
+                       _tmp193_ = _tmp192_;
+                       _tmp194_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp193_);
+                       _tmp195_ = _tmp194_;
+                       vala_ccode_initializer_list_append (_tmp179_, (ValaCCodeExpression*) _tmp195_);
+                       _vala_ccode_node_unref0 (_tmp195_);
+                       _vala_ccode_node_unref0 (_tmp193_);
+                       _g_free0 (_tmp191_);
+                       _g_free0 (_tmp189_);
+                       _g_free0 (_tmp186_);
+                       _g_free0 (_tmp184_);
+                       _g_free0 (_tmp182_);
+                       _vala_ccode_node_unref0 (info);
+                       _vala_ccode_node_unref0 (_cdecl_);
+                       _vala_ccode_node_unref0 (args_info);
+                       _vala_code_node_unref0 (sig);
+               }
+               _vala_iterable_unref0 (_sig_list);
+       }
+       _tmp196_ = infos;
+       _tmp197_ = vala_ccode_constant_new ("NULL");
+       _tmp198_ = _tmp197_;
+       vala_ccode_initializer_list_append (_tmp196_, (ValaCCodeExpression*) _tmp198_);
+       _vala_ccode_node_unref0 (_tmp198_);
+       _tmp199_ = vala_ccode_declaration_new ("const GDBusSignalInfo * const");
+       _cdecl_ = _tmp199_;
+       _tmp200_ = sym;
+       _tmp201_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp200_);
+       _tmp202_ = _tmp201_;
+       _tmp203_ = g_strconcat ("_", _tmp202_, NULL);
+       _tmp204_ = _tmp203_;
+       _tmp205_ = g_strconcat (_tmp204_, "dbus_signal_info[]", NULL);
+       _tmp206_ = _tmp205_;
+       _tmp207_ = infos;
+       _tmp208_ = vala_ccode_variable_declarator_new (_tmp206_, (ValaCCodeExpression*) _tmp207_, NULL);
+       _tmp209_ = _tmp208_;
+       vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp209_);
+       _vala_ccode_node_unref0 (_tmp209_);
+       _g_free0 (_tmp206_);
+       _g_free0 (_tmp204_);
+       _g_free0 (_tmp202_);
+       vala_ccode_declaration_set_modifiers (_cdecl_, VALA_CCODE_MODIFIERS_STATIC);
+       _tmp210_ = ((ValaCCodeBaseModule*) self)->cfile;
+       vala_ccode_file_add_constant_declaration (_tmp210_, (ValaCCodeNode*) _cdecl_);
+       _tmp211_ = sym;
+       _tmp212_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp211_);
+       _tmp213_ = _tmp212_;
+       _tmp214_ = g_strconcat ("_", _tmp213_, NULL);
+       _tmp215_ = _tmp214_;
+       _tmp216_ = g_strconcat (_tmp215_, "dbus_signal_info", NULL);
+       _tmp217_ = _tmp216_;
+       _tmp218_ = vala_ccode_identifier_new (_tmp217_);
+       _tmp219_ = (ValaCCodeExpression*) _tmp218_;
+       _g_free0 (_tmp217_);
+       _g_free0 (_tmp215_);
+       _g_free0 (_tmp213_);
+       result = _tmp219_;
+       _vala_ccode_node_unref0 (_cdecl_);
+       _vala_ccode_node_unref0 (infos);
+       return result;
+}
+
+
+static ValaCCodeExpression* vala_gd_bus_module_get_property_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym) {
+       ValaCCodeExpression* result = NULL;
+       ValaCCodeInitializerList* infos = NULL;
+       ValaCCodeInitializerList* _tmp0_ = NULL;
+       ValaCCodeInitializerList* _tmp110_ = NULL;
+       ValaCCodeConstant* _tmp111_ = NULL;
+       ValaCCodeConstant* _tmp112_ = NULL;
+       ValaCCodeDeclaration* _cdecl_ = NULL;
+       ValaCCodeDeclaration* _tmp113_ = NULL;
+       ValaObjectTypeSymbol* _tmp114_ = NULL;
+       gchar* _tmp115_ = NULL;
+       gchar* _tmp116_ = NULL;
+       gchar* _tmp117_ = NULL;
+       gchar* _tmp118_ = NULL;
+       gchar* _tmp119_ = NULL;
+       gchar* _tmp120_ = NULL;
+       ValaCCodeInitializerList* _tmp121_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp122_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp123_ = NULL;
+       ValaCCodeFile* _tmp124_ = NULL;
+       ValaObjectTypeSymbol* _tmp125_ = NULL;
+       gchar* _tmp126_ = NULL;
+       gchar* _tmp127_ = NULL;
+       gchar* _tmp128_ = NULL;
+       gchar* _tmp129_ = NULL;
+       gchar* _tmp130_ = NULL;
+       gchar* _tmp131_ = NULL;
+       ValaCCodeIdentifier* _tmp132_ = NULL;
+       ValaCCodeExpression* _tmp133_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (sym != NULL, NULL);
+       _tmp0_ = vala_ccode_initializer_list_new ();
+       infos = _tmp0_;
+       {
+               ValaList* _prop_list = NULL;
+               ValaObjectTypeSymbol* _tmp1_ = NULL;
+               ValaList* _tmp2_ = NULL;
+               gint _prop_size = 0;
+               ValaList* _tmp3_ = NULL;
+               gint _tmp4_ = 0;
+               gint _tmp5_ = 0;
+               gint _prop_index = 0;
+               _tmp1_ = sym;
+               _tmp2_ = vala_object_type_symbol_get_properties (_tmp1_);
+               _prop_list = _tmp2_;
+               _tmp3_ = _prop_list;
+               _tmp4_ = vala_collection_get_size ((ValaCollection*) _tmp3_);
+               _tmp5_ = _tmp4_;
+               _prop_size = _tmp5_;
+               _prop_index = -1;
+               while (TRUE) {
+                       gint _tmp6_ = 0;
+                       gint _tmp7_ = 0;
+                       gint _tmp8_ = 0;
+                       ValaProperty* prop = NULL;
+                       ValaList* _tmp9_ = NULL;
+                       gint _tmp10_ = 0;
+                       gpointer _tmp11_ = NULL;
+                       gboolean _tmp12_ = FALSE;
+                       gboolean _tmp13_ = FALSE;
+                       ValaProperty* _tmp14_ = NULL;
+                       ValaMemberBinding _tmp15_ = 0;
+                       ValaMemberBinding _tmp16_ = 0;
+                       ValaProperty* _tmp23_ = NULL;
+                       gboolean _tmp24_ = FALSE;
+                       ValaCCodeInitializerList* info = NULL;
+                       ValaCCodeInitializerList* _tmp25_ = NULL;
+                       ValaCCodeInitializerList* _tmp26_ = NULL;
+                       ValaCCodeConstant* _tmp27_ = NULL;
+                       ValaCCodeConstant* _tmp28_ = NULL;
+                       ValaCCodeInitializerList* _tmp29_ = NULL;
+                       ValaProperty* _tmp30_ = NULL;
+                       gchar* _tmp31_ = NULL;
+                       gchar* _tmp32_ = NULL;
+                       gchar* _tmp33_ = NULL;
+                       gchar* _tmp34_ = NULL;
+                       ValaCCodeConstant* _tmp35_ = NULL;
+                       ValaCCodeConstant* _tmp36_ = NULL;
+                       ValaCCodeInitializerList* _tmp37_ = NULL;
+                       ValaProperty* _tmp38_ = NULL;
+                       ValaDataType* _tmp39_ = NULL;
+                       ValaDataType* _tmp40_ = NULL;
+                       ValaProperty* _tmp41_ = NULL;
+                       gchar* _tmp42_ = NULL;
+                       gchar* _tmp43_ = NULL;
+                       gchar* _tmp44_ = NULL;
+                       gchar* _tmp45_ = NULL;
+                       ValaCCodeConstant* _tmp46_ = NULL;
+                       ValaCCodeConstant* _tmp47_ = NULL;
+                       gboolean _tmp48_ = FALSE;
+                       ValaProperty* _tmp49_ = NULL;
+                       ValaPropertyAccessor* _tmp50_ = NULL;
+                       ValaPropertyAccessor* _tmp51_ = NULL;
+                       ValaCCodeDeclaration* _cdecl_ = NULL;
+                       ValaCCodeDeclaration* _tmp73_ = NULL;
+                       ValaCCodeDeclaration* _tmp74_ = NULL;
+                       ValaObjectTypeSymbol* _tmp75_ = NULL;
+                       gchar* _tmp76_ = NULL;
+                       gchar* _tmp77_ = NULL;
+                       gchar* _tmp78_ = NULL;
+                       gchar* _tmp79_ = NULL;
+                       gchar* _tmp80_ = NULL;
+                       gchar* _tmp81_ = NULL;
+                       ValaProperty* _tmp82_ = NULL;
+                       const gchar* _tmp83_ = NULL;
+                       const gchar* _tmp84_ = NULL;
+                       gchar* _tmp85_ = NULL;
+                       gchar* _tmp86_ = NULL;
+                       ValaCCodeInitializerList* _tmp87_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp88_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp89_ = NULL;
+                       ValaCCodeDeclaration* _tmp90_ = NULL;
+                       ValaCCodeFile* _tmp91_ = NULL;
+                       ValaCCodeDeclaration* _tmp92_ = NULL;
+                       ValaCCodeInitializerList* _tmp93_ = NULL;
+                       ValaObjectTypeSymbol* _tmp94_ = NULL;
+                       gchar* _tmp95_ = NULL;
+                       gchar* _tmp96_ = NULL;
+                       gchar* _tmp97_ = NULL;
+                       gchar* _tmp98_ = NULL;
+                       gchar* _tmp99_ = NULL;
+                       gchar* _tmp100_ = NULL;
+                       ValaProperty* _tmp101_ = NULL;
+                       const gchar* _tmp102_ = NULL;
+                       const gchar* _tmp103_ = NULL;
+                       gchar* _tmp104_ = NULL;
+                       gchar* _tmp105_ = NULL;
+                       ValaCCodeIdentifier* _tmp106_ = NULL;
+                       ValaCCodeIdentifier* _tmp107_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp108_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp109_ = NULL;
+                       _tmp6_ = _prop_index;
+                       _prop_index = _tmp6_ + 1;
+                       _tmp7_ = _prop_index;
+                       _tmp8_ = _prop_size;
+                       if (!(_tmp7_ < _tmp8_)) {
+                               break;
+                       }
+                       _tmp9_ = _prop_list;
+                       _tmp10_ = _prop_index;
+                       _tmp11_ = vala_list_get (_tmp9_, _tmp10_);
+                       prop = (ValaProperty*) _tmp11_;
+                       _tmp14_ = prop;
+                       _tmp15_ = vala_property_get_binding (_tmp14_);
+                       _tmp16_ = _tmp15_;
+                       if (_tmp16_ != VALA_MEMBER_BINDING_INSTANCE) {
+                               _tmp13_ = TRUE;
+                       } else {
+                               ValaProperty* _tmp17_ = NULL;
+                               gboolean _tmp18_ = FALSE;
+                               gboolean _tmp19_ = FALSE;
+                               _tmp17_ = prop;
+                               _tmp18_ = vala_property_get_overrides (_tmp17_);
+                               _tmp19_ = _tmp18_;
+                               _tmp13_ = _tmp19_;
+                       }
+                       if (_tmp13_) {
+                               _tmp12_ = TRUE;
+                       } else {
+                               ValaProperty* _tmp20_ = NULL;
+                               ValaSymbolAccessibility _tmp21_ = 0;
+                               ValaSymbolAccessibility _tmp22_ = 0;
+                               _tmp20_ = prop;
+                               _tmp21_ = vala_symbol_get_access ((ValaSymbol*) _tmp20_);
+                               _tmp22_ = _tmp21_;
+                               _tmp12_ = _tmp22_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
+                       }
+                       if (_tmp12_) {
+                               _vala_code_node_unref0 (prop);
+                               continue;
+                       }
+                       _tmp23_ = prop;
+                       _tmp24_ = vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp23_);
+                       if (!_tmp24_) {
+                               _vala_code_node_unref0 (prop);
+                               continue;
+                       }
+                       _tmp25_ = vala_ccode_initializer_list_new ();
+                       info = _tmp25_;
+                       _tmp26_ = info;
+                       _tmp27_ = vala_ccode_constant_new ("-1");
+                       _tmp28_ = _tmp27_;
+                       vala_ccode_initializer_list_append (_tmp26_, (ValaCCodeExpression*) _tmp28_);
+                       _vala_ccode_node_unref0 (_tmp28_);
+                       _tmp29_ = info;
+                       _tmp30_ = prop;
+                       _tmp31_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp30_);
+                       _tmp32_ = _tmp31_;
+                       _tmp33_ = g_strdup_printf ("\"%s\"", _tmp32_);
+                       _tmp34_ = _tmp33_;
+                       _tmp35_ = vala_ccode_constant_new (_tmp34_);
+                       _tmp36_ = _tmp35_;
+                       vala_ccode_initializer_list_append (_tmp29_, (ValaCCodeExpression*) _tmp36_);
+                       _vala_ccode_node_unref0 (_tmp36_);
+                       _g_free0 (_tmp34_);
+                       _g_free0 (_tmp32_);
+                       _tmp37_ = info;
+                       _tmp38_ = prop;
+                       _tmp39_ = vala_property_get_property_type (_tmp38_);
+                       _tmp40_ = _tmp39_;
+                       _tmp41_ = prop;
+                       _tmp42_ = vala_gvariant_module_get_type_signature (_tmp40_, (ValaSymbol*) _tmp41_);
+                       _tmp43_ = _tmp42_;
+                       _tmp44_ = g_strdup_printf ("\"%s\"", _tmp43_);
+                       _tmp45_ = _tmp44_;
+                       _tmp46_ = vala_ccode_constant_new (_tmp45_);
+                       _tmp47_ = _tmp46_;
+                       vala_ccode_initializer_list_append (_tmp37_, (ValaCCodeExpression*) _tmp47_);
+                       _vala_ccode_node_unref0 (_tmp47_);
+                       _g_free0 (_tmp45_);
+                       _g_free0 (_tmp43_);
+                       _tmp49_ = prop;
+                       _tmp50_ = vala_property_get_get_accessor (_tmp49_);
+                       _tmp51_ = _tmp50_;
+                       if (_tmp51_ != NULL) {
+                               ValaProperty* _tmp52_ = NULL;
+                               ValaPropertyAccessor* _tmp53_ = NULL;
+                               ValaPropertyAccessor* _tmp54_ = NULL;
+                               _tmp52_ = prop;
+                               _tmp53_ = vala_property_get_set_accessor (_tmp52_);
+                               _tmp54_ = _tmp53_;
+                               _tmp48_ = _tmp54_ != NULL;
+                       } else {
+                               _tmp48_ = FALSE;
+                       }
+                       if (_tmp48_) {
+                               ValaCCodeInitializerList* _tmp55_ = NULL;
+                               ValaCCodeConstant* _tmp56_ = NULL;
+                               ValaCCodeConstant* _tmp57_ = NULL;
+                               _tmp55_ = info;
+                               _tmp56_ = vala_ccode_constant_new ("G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITA" \
+"BLE");
+                               _tmp57_ = _tmp56_;
+                               vala_ccode_initializer_list_append (_tmp55_, (ValaCCodeExpression*) _tmp57_);
+                               _vala_ccode_node_unref0 (_tmp57_);
+                       } else {
+                               ValaProperty* _tmp58_ = NULL;
+                               ValaPropertyAccessor* _tmp59_ = NULL;
+                               ValaPropertyAccessor* _tmp60_ = NULL;
+                               _tmp58_ = prop;
+                               _tmp59_ = vala_property_get_get_accessor (_tmp58_);
+                               _tmp60_ = _tmp59_;
+                               if (_tmp60_ != NULL) {
+                                       ValaCCodeInitializerList* _tmp61_ = NULL;
+                                       ValaCCodeConstant* _tmp62_ = NULL;
+                                       ValaCCodeConstant* _tmp63_ = NULL;
+                                       _tmp61_ = info;
+                                       _tmp62_ = vala_ccode_constant_new ("G_DBUS_PROPERTY_INFO_FLAGS_READABLE");
+                                       _tmp63_ = _tmp62_;
+                                       vala_ccode_initializer_list_append (_tmp61_, (ValaCCodeExpression*) _tmp63_);
+                                       _vala_ccode_node_unref0 (_tmp63_);
+                               } else {
+                                       ValaProperty* _tmp64_ = NULL;
+                                       ValaPropertyAccessor* _tmp65_ = NULL;
+                                       ValaPropertyAccessor* _tmp66_ = NULL;
+                                       _tmp64_ = prop;
+                                       _tmp65_ = vala_property_get_set_accessor (_tmp64_);
+                                       _tmp66_ = _tmp65_;
+                                       if (_tmp66_ != NULL) {
+                                               ValaCCodeInitializerList* _tmp67_ = NULL;
+                                               ValaCCodeConstant* _tmp68_ = NULL;
+                                               ValaCCodeConstant* _tmp69_ = NULL;
+                                               _tmp67_ = info;
+                                               _tmp68_ = vala_ccode_constant_new ("G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE");
+                                               _tmp69_ = _tmp68_;
+                                               vala_ccode_initializer_list_append (_tmp67_, (ValaCCodeExpression*) _tmp69_);
+                                               _vala_ccode_node_unref0 (_tmp69_);
+                                       } else {
+                                               ValaCCodeInitializerList* _tmp70_ = NULL;
+                                               ValaCCodeConstant* _tmp71_ = NULL;
+                                               ValaCCodeConstant* _tmp72_ = NULL;
+                                               _tmp70_ = info;
+                                               _tmp71_ = vala_ccode_constant_new ("G_DBUS_PROPERTY_INFO_FLAGS_NONE");
+                                               _tmp72_ = _tmp71_;
+                                               vala_ccode_initializer_list_append (_tmp70_, (ValaCCodeExpression*) _tmp72_);
+                                               _vala_ccode_node_unref0 (_tmp72_);
+                                       }
+                               }
+                       }
+                       _tmp73_ = vala_ccode_declaration_new ("const GDBusPropertyInfo");
+                       _cdecl_ = _tmp73_;
+                       _tmp74_ = _cdecl_;
+                       _tmp75_ = sym;
+                       _tmp76_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp75_);
+                       _tmp77_ = _tmp76_;
+                       _tmp78_ = g_strconcat ("_", _tmp77_, NULL);
+                       _tmp79_ = _tmp78_;
+                       _tmp80_ = g_strconcat (_tmp79_, "dbus_property_info_", NULL);
+                       _tmp81_ = _tmp80_;
+                       _tmp82_ = prop;
+                       _tmp83_ = vala_symbol_get_name ((ValaSymbol*) _tmp82_);
+                       _tmp84_ = _tmp83_;
+                       _tmp85_ = g_strconcat (_tmp81_, _tmp84_, NULL);
+                       _tmp86_ = _tmp85_;
+                       _tmp87_ = info;
+                       _tmp88_ = vala_ccode_variable_declarator_new (_tmp86_, (ValaCCodeExpression*) _tmp87_, NULL);
+                       _tmp89_ = _tmp88_;
+                       vala_ccode_declaration_add_declarator (_tmp74_, (ValaCCodeDeclarator*) _tmp89_);
+                       _vala_ccode_node_unref0 (_tmp89_);
+                       _g_free0 (_tmp86_);
+                       _g_free0 (_tmp81_);
+                       _g_free0 (_tmp79_);
+                       _g_free0 (_tmp77_);
+                       _tmp90_ = _cdecl_;
+                       vala_ccode_declaration_set_modifiers (_tmp90_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp91_ = ((ValaCCodeBaseModule*) self)->cfile;
+                       _tmp92_ = _cdecl_;
+                       vala_ccode_file_add_constant_declaration (_tmp91_, (ValaCCodeNode*) _tmp92_);
+                       _tmp93_ = infos;
+                       _tmp94_ = sym;
+                       _tmp95_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp94_);
+                       _tmp96_ = _tmp95_;
+                       _tmp97_ = g_strconcat ("_", _tmp96_, NULL);
+                       _tmp98_ = _tmp97_;
+                       _tmp99_ = g_strconcat (_tmp98_, "dbus_property_info_", NULL);
+                       _tmp100_ = _tmp99_;
+                       _tmp101_ = prop;
+                       _tmp102_ = vala_symbol_get_name ((ValaSymbol*) _tmp101_);
+                       _tmp103_ = _tmp102_;
+                       _tmp104_ = g_strconcat (_tmp100_, _tmp103_, NULL);
+                       _tmp105_ = _tmp104_;
+                       _tmp106_ = vala_ccode_identifier_new (_tmp105_);
+                       _tmp107_ = _tmp106_;
+                       _tmp108_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp107_);
+                       _tmp109_ = _tmp108_;
+                       vala_ccode_initializer_list_append (_tmp93_, (ValaCCodeExpression*) _tmp109_);
+                       _vala_ccode_node_unref0 (_tmp109_);
+                       _vala_ccode_node_unref0 (_tmp107_);
+                       _g_free0 (_tmp105_);
+                       _g_free0 (_tmp100_);
+                       _g_free0 (_tmp98_);
+                       _g_free0 (_tmp96_);
+                       _vala_ccode_node_unref0 (_cdecl_);
+                       _vala_ccode_node_unref0 (info);
+                       _vala_code_node_unref0 (prop);
+               }
+               _vala_iterable_unref0 (_prop_list);
+       }
+       _tmp110_ = infos;
+       _tmp111_ = vala_ccode_constant_new ("NULL");
+       _tmp112_ = _tmp111_;
+       vala_ccode_initializer_list_append (_tmp110_, (ValaCCodeExpression*) _tmp112_);
+       _vala_ccode_node_unref0 (_tmp112_);
+       _tmp113_ = vala_ccode_declaration_new ("const GDBusPropertyInfo * const");
+       _cdecl_ = _tmp113_;
+       _tmp114_ = sym;
+       _tmp115_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp114_);
+       _tmp116_ = _tmp115_;
+       _tmp117_ = g_strconcat ("_", _tmp116_, NULL);
+       _tmp118_ = _tmp117_;
+       _tmp119_ = g_strconcat (_tmp118_, "dbus_property_info[]", NULL);
+       _tmp120_ = _tmp119_;
+       _tmp121_ = infos;
+       _tmp122_ = vala_ccode_variable_declarator_new (_tmp120_, (ValaCCodeExpression*) _tmp121_, NULL);
+       _tmp123_ = _tmp122_;
+       vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp123_);
+       _vala_ccode_node_unref0 (_tmp123_);
+       _g_free0 (_tmp120_);
+       _g_free0 (_tmp118_);
+       _g_free0 (_tmp116_);
+       vala_ccode_declaration_set_modifiers (_cdecl_, VALA_CCODE_MODIFIERS_STATIC);
+       _tmp124_ = ((ValaCCodeBaseModule*) self)->cfile;
+       vala_ccode_file_add_constant_declaration (_tmp124_, (ValaCCodeNode*) _cdecl_);
+       _tmp125_ = sym;
+       _tmp126_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp125_);
+       _tmp127_ = _tmp126_;
+       _tmp128_ = g_strconcat ("_", _tmp127_, NULL);
+       _tmp129_ = _tmp128_;
+       _tmp130_ = g_strconcat (_tmp129_, "dbus_property_info", NULL);
+       _tmp131_ = _tmp130_;
+       _tmp132_ = vala_ccode_identifier_new (_tmp131_);
+       _tmp133_ = (ValaCCodeExpression*) _tmp132_;
+       _g_free0 (_tmp131_);
+       _g_free0 (_tmp129_);
+       _g_free0 (_tmp127_);
+       result = _tmp133_;
+       _vala_ccode_node_unref0 (_cdecl_);
+       _vala_ccode_node_unref0 (infos);
+       return result;
+}
+
+
+static void vala_gd_bus_module_declare_interface_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym) {
+       ValaCCodeInitializerList* info = NULL;
+       ValaCCodeInitializerList* _tmp0_ = NULL;
+       ValaCCodeConstant* _tmp1_ = NULL;
+       ValaCCodeConstant* _tmp2_ = NULL;
+       ValaObjectTypeSymbol* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       gchar* _tmp6_ = NULL;
+       gchar* _tmp7_ = NULL;
+       ValaCCodeConstant* _tmp8_ = NULL;
+       ValaCCodeConstant* _tmp9_ = NULL;
+       ValaObjectTypeSymbol* _tmp10_ = NULL;
+       ValaCCodeExpression* _tmp11_ = NULL;
+       ValaCCodeExpression* _tmp12_ = NULL;
+       ValaCCodeUnaryExpression* _tmp13_ = NULL;
+       ValaCCodeUnaryExpression* _tmp14_ = NULL;
+       ValaCCodeCastExpression* _tmp15_ = NULL;
+       ValaCCodeCastExpression* _tmp16_ = NULL;
+       ValaObjectTypeSymbol* _tmp17_ = NULL;
+       ValaCCodeExpression* _tmp18_ = NULL;
+       ValaCCodeExpression* _tmp19_ = NULL;
+       ValaCCodeUnaryExpression* _tmp20_ = NULL;
+       ValaCCodeUnaryExpression* _tmp21_ = NULL;
+       ValaCCodeCastExpression* _tmp22_ = NULL;
+       ValaCCodeCastExpression* _tmp23_ = NULL;
+       ValaObjectTypeSymbol* _tmp24_ = NULL;
+       ValaCCodeExpression* _tmp25_ = NULL;
+       ValaCCodeExpression* _tmp26_ = NULL;
+       ValaCCodeUnaryExpression* _tmp27_ = NULL;
+       ValaCCodeUnaryExpression* _tmp28_ = NULL;
+       ValaCCodeCastExpression* _tmp29_ = NULL;
+       ValaCCodeCastExpression* _tmp30_ = NULL;
+       ValaCCodeDeclaration* _cdecl_ = NULL;
+       ValaCCodeDeclaration* _tmp31_ = NULL;
+       ValaObjectTypeSymbol* _tmp32_ = NULL;
+       gchar* _tmp33_ = NULL;
+       gchar* _tmp34_ = NULL;
+       gchar* _tmp35_ = NULL;
+       gchar* _tmp36_ = NULL;
+       gchar* _tmp37_ = NULL;
+       gchar* _tmp38_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp39_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp40_ = NULL;
+       ValaCCodeFile* _tmp41_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (sym != NULL);
+       _tmp0_ = vala_ccode_initializer_list_new ();
+       info = _tmp0_;
+       _tmp1_ = vala_ccode_constant_new ("-1");
+       _tmp2_ = _tmp1_;
+       vala_ccode_initializer_list_append (info, (ValaCCodeExpression*) _tmp2_);
+       _vala_ccode_node_unref0 (_tmp2_);
+       _tmp3_ = sym;
+       _tmp4_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) _tmp3_);
+       _tmp5_ = _tmp4_;
+       _tmp6_ = g_strdup_printf ("\"%s\"", _tmp5_);
+       _tmp7_ = _tmp6_;
+       _tmp8_ = vala_ccode_constant_new (_tmp7_);
+       _tmp9_ = _tmp8_;
+       vala_ccode_initializer_list_append (info, (ValaCCodeExpression*) _tmp9_);
+       _vala_ccode_node_unref0 (_tmp9_);
+       _g_free0 (_tmp7_);
+       _g_free0 (_tmp5_);
+       _tmp10_ = sym;
+       _tmp11_ = vala_gd_bus_module_get_method_info (self, _tmp10_);
+       _tmp12_ = _tmp11_;
+       _tmp13_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp12_);
+       _tmp14_ = _tmp13_;
+       _tmp15_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp14_, "GDBusMethodInfo **");
+       _tmp16_ = _tmp15_;
+       vala_ccode_initializer_list_append (info, (ValaCCodeExpression*) _tmp16_);
+       _vala_ccode_node_unref0 (_tmp16_);
+       _vala_ccode_node_unref0 (_tmp14_);
+       _vala_ccode_node_unref0 (_tmp12_);
+       _tmp17_ = sym;
+       _tmp18_ = vala_gd_bus_module_get_signal_info (self, _tmp17_);
+       _tmp19_ = _tmp18_;
+       _tmp20_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp19_);
+       _tmp21_ = _tmp20_;
+       _tmp22_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp21_, "GDBusSignalInfo **");
+       _tmp23_ = _tmp22_;
+       vala_ccode_initializer_list_append (info, (ValaCCodeExpression*) _tmp23_);
+       _vala_ccode_node_unref0 (_tmp23_);
+       _vala_ccode_node_unref0 (_tmp21_);
+       _vala_ccode_node_unref0 (_tmp19_);
+       _tmp24_ = sym;
+       _tmp25_ = vala_gd_bus_module_get_property_info (self, _tmp24_);
+       _tmp26_ = _tmp25_;
+       _tmp27_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp26_);
+       _tmp28_ = _tmp27_;
+       _tmp29_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp28_, "GDBusPropertyInfo **");
+       _tmp30_ = _tmp29_;
+       vala_ccode_initializer_list_append (info, (ValaCCodeExpression*) _tmp30_);
+       _vala_ccode_node_unref0 (_tmp30_);
+       _vala_ccode_node_unref0 (_tmp28_);
+       _vala_ccode_node_unref0 (_tmp26_);
+       _tmp31_ = vala_ccode_declaration_new ("const GDBusInterfaceInfo");
+       _cdecl_ = _tmp31_;
+       _tmp32_ = sym;
+       _tmp33_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp32_);
+       _tmp34_ = _tmp33_;
+       _tmp35_ = g_strconcat ("_", _tmp34_, NULL);
+       _tmp36_ = _tmp35_;
+       _tmp37_ = g_strconcat (_tmp36_, "dbus_interface_info", NULL);
+       _tmp38_ = _tmp37_;
+       _tmp39_ = vala_ccode_variable_declarator_new (_tmp38_, (ValaCCodeExpression*) info, NULL);
+       _tmp40_ = _tmp39_;
+       vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp40_);
+       _vala_ccode_node_unref0 (_tmp40_);
+       _g_free0 (_tmp38_);
+       _g_free0 (_tmp36_);
+       _g_free0 (_tmp34_);
+       vala_ccode_declaration_set_modifiers (_cdecl_, VALA_CCODE_MODIFIERS_STATIC);
+       _tmp41_ = ((ValaCCodeBaseModule*) self)->cfile;
+       vala_ccode_file_add_constant_declaration (_tmp41_, (ValaCCodeNode*) _cdecl_);
+       _vala_ccode_node_unref0 (_cdecl_);
+       _vala_ccode_node_unref0 (info);
+}
+
+
+ValaCCodeExpression* vala_gd_bus_module_get_interface_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym) {
+       ValaCCodeExpression* result = NULL;
+       ValaObjectTypeSymbol* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gchar* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       gchar* _tmp6_ = NULL;
+       ValaCCodeIdentifier* _tmp7_ = NULL;
+       ValaCCodeExpression* _tmp8_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       g_return_val_if_fail (sym != NULL, NULL);
+       _tmp0_ = sym;
+       _tmp1_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp0_);
+       _tmp2_ = _tmp1_;
+       _tmp3_ = g_strconcat ("_", _tmp2_, NULL);
+       _tmp4_ = _tmp3_;
+       _tmp5_ = g_strconcat (_tmp4_, "dbus_interface_info", NULL);
+       _tmp6_ = _tmp5_;
+       _tmp7_ = vala_ccode_identifier_new (_tmp6_);
+       _tmp8_ = (ValaCCodeExpression*) _tmp7_;
+       _g_free0 (_tmp6_);
+       _g_free0 (_tmp4_);
+       _g_free0 (_tmp2_);
+       result = _tmp8_;
+       return result;
+}
+
+
+static void vala_gd_bus_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl) {
+       ValaGDBusModule * self;
+       ValaClass* _tmp0_ = NULL;
+       ValaClass* _tmp1_ = NULL;
+       self = (ValaGDBusModule*) base;
+       g_return_if_fail (cl != NULL);
+       _tmp0_ = cl;
+       VALA_CODE_VISITOR_CLASS (vala_gd_bus_module_parent_class)->visit_class ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GVARIANT_MODULE, ValaGVariantModule), _tmp0_);
+       _tmp1_ = cl;
+       vala_gd_bus_module_visit_object_type_symbol (self, (ValaObjectTypeSymbol*) _tmp1_);
+}
+
+
+static void vala_gd_bus_module_real_visit_interface (ValaCodeVisitor* base, ValaInterface* iface) {
+       ValaGDBusModule * self;
+       ValaInterface* _tmp0_ = NULL;
+       ValaInterface* _tmp1_ = NULL;
+       self = (ValaGDBusModule*) base;
+       g_return_if_fail (iface != NULL);
+       _tmp0_ = iface;
+       VALA_CODE_VISITOR_CLASS (vala_gd_bus_module_parent_class)->visit_interface ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GVARIANT_MODULE, ValaGVariantModule), _tmp0_);
+       _tmp1_ = iface;
+       vala_gd_bus_module_visit_object_type_symbol (self, (ValaObjectTypeSymbol*) _tmp1_);
+}
+
+
+static void vala_gd_bus_module_visit_object_type_symbol (ValaGDBusModule* self, ValaObjectTypeSymbol* sym) {
+       ValaObjectTypeSymbol* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       gchar* _tmp2_ = NULL;
+       gboolean _tmp3_ = FALSE;
+       ValaObjectTypeSymbol* _tmp4_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (sym != NULL);
+       _tmp0_ = sym;
+       _tmp1_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) _tmp0_);
+       _tmp2_ = _tmp1_;
+       _tmp3_ = _tmp2_ == NULL;
+       _g_free0 (_tmp2_);
+       if (_tmp3_) {
+               return;
+       }
+       _tmp4_ = sym;
+       vala_gd_bus_module_declare_interface_info (self, _tmp4_);
+}
+
+
 ValaGDBusModule* vala_gd_bus_module_construct (GType object_type) {
        ValaGDBusModule* self = NULL;
        self = (ValaGDBusModule*) vala_gvariant_module_construct (object_type);
@@ -1760,7 +4076,9 @@ ValaGDBusModule* vala_gd_bus_module_new (void) {
 
 static void vala_gd_bus_module_class_init (ValaGDBusModuleClass * klass) {
        vala_gd_bus_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->visit_error_domain = vala_gd_bus_module_real_visit_error_domain;
+       ((ValaCodeVisitorClass *) klass)->visit_error_domain = vala_gd_bus_module_real_visit_error_domain;
+       ((ValaCodeVisitorClass *) klass)->visit_class = vala_gd_bus_module_real_visit_class;
+       ((ValaCodeVisitorClass *) klass)->visit_interface = vala_gd_bus_module_real_visit_interface;
 }
 
 
index acbde07..edfc827 100644 (file)
@@ -34,10 +34,30 @@ public class Vala.GDBusModule : GVariantModule {
                return Symbol.lower_case_to_camel_case (symbol.name);
        }
 
+       public static bool is_dbus_visible (CodeNode node) {
+               var dbus_attribute = node.get_attribute ("DBus");
+               if (dbus_attribute != null
+                   && dbus_attribute.has_argument ("visible")
+                   && !dbus_attribute.get_bool ("visible")) {
+                       return false;
+               }
+
+               return true;
+       }
+
        public static bool is_dbus_no_reply (Method m) {
                return m.get_attribute_bool ("DBus", "no_reply");
        }
 
+       public static string dbus_result_name (Method m) {
+               var dbus_name = m.get_attribute_string ("DBus", "result");
+               if (dbus_name != null && dbus_name != "") {
+                       return dbus_name;
+               }
+
+               return "result";
+       }
+
        public override void visit_error_domain (ErrorDomain edomain) {
                var edomain_dbus_name = get_dbus_name (edomain);
                if (edomain_dbus_name == null) {
@@ -84,7 +104,7 @@ public class Vala.GDBusModule : GVariantModule {
                ccode.add_declaration ("gsize", new CCodeVariableDeclarator (quark_name, new CCodeConstant ("0")), CCodeModifiers.STATIC | CCodeModifiers.VOLATILE);
 
                var register_call = new CCodeFunctionCall (new CCodeIdentifier ("g_dbus_error_register_error_domain"));
-               register_call.add_argument (new CCodeConstant ("\"" + get_ccode_lower_case_name (edomain) + "-quark\""));
+               register_call.add_argument (new CCodeConstant ("\"" + CCodeBaseModule.get_quark_name (edomain) + "\""));
                register_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (quark_name)));
                register_call.add_argument (new CCodeIdentifier (get_ccode_lower_case_name (edomain) + "_entries"));
                var nentries = new CCodeFunctionCall (new CCodeIdentifier ("G_N_ELEMENTS"));
@@ -215,4 +235,233 @@ public class Vala.GDBusModule : GVariantModule {
                        read_expression (type, iter_expr, target_expr, sym, error_expr, out may_fail);
                }
        }
+       CCodeExpression get_method_info (ObjectTypeSymbol sym) {
+               var infos = new CCodeInitializerList ();
+
+               foreach (Method m in sym.get_methods ()) {
+                       if (m is CreationMethod || m.binding != MemberBinding.INSTANCE
+                           || m.overrides || m.access != SymbolAccessibility.PUBLIC) {
+                               continue;
+                       }
+                       if (!is_dbus_visible (m)) {
+                               continue;
+                       }
+
+                       var in_args_info = new CCodeInitializerList ();
+                       var out_args_info = new CCodeInitializerList ();
+
+                       foreach (Parameter param in m.get_parameters ()) {
+                               if (param.variable_type is ObjectType && param.variable_type.data_type.get_full_name () == "GLib.Cancellable") {
+                                       continue;
+                               }
+                               if (param.variable_type is ObjectType && param.variable_type.data_type.get_full_name () == "GLib.BusName") {
+                                       continue;
+                               }
+
+                               var info = new CCodeInitializerList ();
+                               info.append (new CCodeConstant ("-1"));
+                               info.append (new CCodeConstant ("\"%s\"".printf (param.name)));
+                               info.append (new CCodeConstant ("\"%s\"".printf (get_type_signature (param.variable_type, param))));
+
+                               var cdecl = new CCodeDeclaration ("const GDBusArgInfo");
+                               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_" + param.name, info));
+                               cdecl.modifiers = CCodeModifiers.STATIC;
+                               cfile.add_constant_declaration (cdecl);
+
+                               if (param.direction == ParameterDirection.IN) {
+                                       in_args_info.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_" + param.name)));
+                               } else {
+                                       out_args_info.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_" + param.name)));
+                               }
+                       }
+
+                       if (!(m.return_type is VoidType)) {
+                               var info = new CCodeInitializerList ();
+                               info.append (new CCodeConstant ("-1"));
+                               info.append (new CCodeConstant ("\"%s\"".printf (dbus_result_name (m))));
+                               info.append (new CCodeConstant ("\"%s\"".printf (get_type_signature (m.return_type, m))));
+
+                               var cdecl = new CCodeDeclaration ("const GDBusArgInfo");
+                               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_result", info));
+                               cdecl.modifiers = CCodeModifiers.STATIC;
+                               cfile.add_constant_declaration (cdecl);
+
+                               out_args_info.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_result")));
+                       }
+
+                       in_args_info.append (new CCodeConstant ("NULL"));
+                       out_args_info.append (new CCodeConstant ("NULL"));
+
+                       var cdecl = new CCodeDeclaration ("const GDBusArgInfo * const");
+                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_in[]", in_args_info));
+                       cdecl.modifiers = CCodeModifiers.STATIC;
+                       cfile.add_constant_declaration (cdecl);
+
+                       cdecl = new CCodeDeclaration ("const GDBusArgInfo * const");
+                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_out[]", out_args_info));
+                       cdecl.modifiers = CCodeModifiers.STATIC;
+                       cfile.add_constant_declaration (cdecl);
+
+                       var info = new CCodeInitializerList ();
+                       info.append (new CCodeConstant ("-1"));
+                       info.append (new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (m))));
+                       info.append (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_in")), "GDBusArgInfo **"));
+                       info.append (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_out")), "GDBusArgInfo **"));
+
+                       cdecl = new CCodeDeclaration ("const GDBusMethodInfo");
+                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_method_info_" + m.name, info));
+                       cdecl.modifiers = CCodeModifiers.STATIC;
+                       cfile.add_constant_declaration (cdecl);
+
+                       infos.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_method_info_" + m.name)));
+               }
+
+               infos.append (new CCodeConstant ("NULL"));
+
+               var cdecl = new CCodeDeclaration ("const GDBusMethodInfo * const");
+               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_method_info[]", infos));
+               cdecl.modifiers = CCodeModifiers.STATIC;
+               cfile.add_constant_declaration (cdecl);
+
+               return new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_method_info");
+       }
+
+       CCodeExpression get_signal_info (ObjectTypeSymbol sym) {
+               var infos = new CCodeInitializerList ();
+
+               foreach (Signal sig in sym.get_signals ()) {
+                       if (sig.access != SymbolAccessibility.PUBLIC) {
+                               continue;
+                       }
+                       if (!is_dbus_visible (sig)) {
+                               continue;
+                       }
+
+                       var args_info = new CCodeInitializerList ();
+
+                       foreach (Parameter param in sig.get_parameters ()) {
+                               var info = new CCodeInitializerList ();
+                               info.append (new CCodeConstant ("-1"));
+                               info.append (new CCodeConstant ("\"%s\"".printf (param.name)));
+                               info.append (new CCodeConstant ("\"%s\"".printf (get_type_signature (param.variable_type, param))));
+
+                               var cdecl = new CCodeDeclaration ("const GDBusArgInfo");
+                               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + get_ccode_name (sig) + "_" + param.name, info));
+                               cdecl.modifiers = CCodeModifiers.STATIC;
+                               cfile.add_constant_declaration (cdecl);
+
+                               args_info.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + get_ccode_name (sig) + "_" + param.name)));
+                       }
+
+                       args_info.append (new CCodeConstant ("NULL"));
+
+                       var cdecl = new CCodeDeclaration ("const GDBusArgInfo * const");
+                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + get_ccode_name (sig) + "[]", args_info));
+                       cdecl.modifiers = CCodeModifiers.STATIC;
+                       cfile.add_constant_declaration (cdecl);
+
+                       var info = new CCodeInitializerList ();
+                       info.append (new CCodeConstant ("-1"));
+                       info.append (new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (sig))));
+                       info.append (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + get_ccode_name (sig))), "GDBusArgInfo **"));
+
+                       cdecl = new CCodeDeclaration ("const GDBusSignalInfo");
+                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_signal_info_" + get_ccode_name (sig), info));
+                       cdecl.modifiers = CCodeModifiers.STATIC;
+                       cfile.add_constant_declaration (cdecl);
+
+                       infos.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_signal_info_" + get_ccode_name (sig))));
+               }
+
+               infos.append (new CCodeConstant ("NULL"));
+
+               var cdecl = new CCodeDeclaration ("const GDBusSignalInfo * const");
+               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_signal_info[]", infos));
+               cdecl.modifiers = CCodeModifiers.STATIC;
+               cfile.add_constant_declaration (cdecl);
+
+               return new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_signal_info");
+       }
+
+       CCodeExpression get_property_info (ObjectTypeSymbol sym) {
+               var infos = new CCodeInitializerList ();
+
+               foreach (Property prop in sym.get_properties ()) {
+                       if (prop.binding != MemberBinding.INSTANCE
+                           || prop.overrides || prop.access != SymbolAccessibility.PUBLIC) {
+                               continue;
+                       }
+                       if (!is_dbus_visible (prop)) {
+                               continue;
+                       }
+
+                       var info = new CCodeInitializerList ();
+                       info.append (new CCodeConstant ("-1"));
+                       info.append (new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (prop))));
+                       info.append (new CCodeConstant ("\"%s\"".printf (get_type_signature (prop.property_type, prop))));
+                       if (prop.get_accessor != null && prop.set_accessor != null) {
+                               info.append (new CCodeConstant ("G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE"));
+                       } else if (prop.get_accessor != null) {
+                               info.append (new CCodeConstant ("G_DBUS_PROPERTY_INFO_FLAGS_READABLE"));
+                       } else if (prop.set_accessor != null) {
+                               info.append (new CCodeConstant ("G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE"));
+                       } else {
+                               info.append (new CCodeConstant ("G_DBUS_PROPERTY_INFO_FLAGS_NONE"));
+                       }
+
+                       var cdecl = new CCodeDeclaration ("const GDBusPropertyInfo");
+                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_property_info_" + prop.name, info));
+                       cdecl.modifiers = CCodeModifiers.STATIC;
+                       cfile.add_constant_declaration (cdecl);
+
+                       infos.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_property_info_" + prop.name)));
+               }
+
+               infos.append (new CCodeConstant ("NULL"));
+
+               var cdecl = new CCodeDeclaration ("const GDBusPropertyInfo * const");
+               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_property_info[]", infos));
+               cdecl.modifiers = CCodeModifiers.STATIC;
+               cfile.add_constant_declaration (cdecl);
+
+               return new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_property_info");
+       }
+
+       void declare_interface_info (ObjectTypeSymbol sym) {
+               var info = new CCodeInitializerList ();
+               info.append (new CCodeConstant ("-1"));
+               info.append (new CCodeConstant ("\"%s\"".printf (get_dbus_name (sym))));
+               info.append (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_method_info (sym)), "GDBusMethodInfo **"));
+               info.append (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_signal_info (sym)), "GDBusSignalInfo **"));
+               info.append (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_property_info (sym)), "GDBusPropertyInfo **"));
+
+               var cdecl = new CCodeDeclaration ("const GDBusInterfaceInfo");
+               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_interface_info", info));
+               cdecl.modifiers = CCodeModifiers.STATIC;
+               cfile.add_constant_declaration (cdecl);
+       }
+
+       protected CCodeExpression get_interface_info (ObjectTypeSymbol sym) {
+               return new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_interface_info");
+       }
+
+       public override void visit_class (Class cl) {
+               base.visit_class (cl);
+
+               visit_object_type_symbol (cl);
+       }
+
+       public override void visit_interface (Interface iface) {
+               base.visit_interface (iface);
+
+               visit_object_type_symbol (iface);
+       }
+
+       void visit_object_type_symbol (ObjectTypeSymbol sym) {
+               if (get_dbus_name (sym) == null) {
+                       return;
+               }
+
+               declare_interface_info(sym);
+       }
 }
index 4ba6106..3666e84 100644 (file)
@@ -250,9 +250,9 @@ typedef struct _ValaGDBusClientModulePrivate ValaGDBusClientModulePrivate;
 typedef struct _ValaGDBusServerModule ValaGDBusServerModule;
 typedef struct _ValaGDBusServerModuleClass ValaGDBusServerModuleClass;
 typedef struct _ValaGDBusServerModulePrivate ValaGDBusServerModulePrivate;
-#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
 #define _g_free0(var) (var = (g_free (var), NULL))
 #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
+#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
 #define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
 
@@ -593,8 +593,6 @@ GType vala_gd_bus_server_module_get_type (void) G_GNUC_CONST;
 enum  {
        VALA_GD_BUS_SERVER_MODULE_DUMMY_PROPERTY
 };
-gboolean vala_gd_bus_server_module_is_dbus_visible (ValaCodeNode* node);
-gchar* vala_gd_bus_server_module_dbus_result_name (ValaMethod* m);
 static gchar* vala_gd_bus_server_module_generate_dbus_wrapper (ValaGDBusServerModule* self, ValaMethod* m, ValaObjectTypeSymbol* sym, gboolean ready);
 gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node);
 void vala_ccode_base_module_push_function (ValaCCodeBaseModule* self, ValaCCodeFunction* func);
@@ -622,16 +620,12 @@ static gchar* vala_gd_bus_server_module_generate_dbus_property_set_wrapper (Vala
 ValaCCodeExpression* vala_ccode_base_module_deserialize_expression (ValaCCodeBaseModule* self, ValaDataType* type, ValaCCodeExpression* variant_expr, ValaCCodeExpression* expr, ValaCCodeExpression* error_expr, gboolean* may_fail);
 static void vala_gd_bus_server_module_handle_signals (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym, gboolean connect);
 gchar* vala_gd_bus_module_get_dbus_name (ValaTypeSymbol* symbol);
+gboolean vala_gd_bus_module_is_dbus_visible (ValaCodeNode* node);
 ValaCCodeConstant* vala_ccode_base_module_get_signal_canonical_constant (ValaCCodeBaseModule* self, ValaSignal* sig, const gchar* detail);
 static void vala_gd_bus_server_module_generate_interface_method_call_function (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym);
 gchar* vala_ccode_base_module_get_ccode_lower_case_prefix (ValaSymbol* sym);
 static void vala_gd_bus_server_module_generate_interface_get_property_function (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym);
 static void vala_gd_bus_server_module_generate_interface_set_property_function (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym);
-static ValaCCodeExpression* vala_gd_bus_server_module_get_method_info (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym);
-gchar* vala_gvariant_module_get_type_signature (ValaDataType* datatype, ValaSymbol* symbol);
-static ValaCCodeExpression* vala_gd_bus_server_module_get_signal_info (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym);
-static ValaCCodeExpression* vala_gd_bus_server_module_get_property_info (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym);
-static ValaCCodeExpression* vala_gd_bus_server_module_get_interface_info (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym);
 static ValaCCodeExpression* vala_gd_bus_server_module_get_interface_vtable (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym);
 static gchar* vala_gd_bus_server_module_generate_register_object_function (ValaGDBusServerModule* self);
 gboolean vala_ccode_base_module_add_wrapper (ValaCCodeBaseModule* self, const gchar* wrapper_name);
@@ -652,7 +646,9 @@ static void vala_gd_bus_server_module_real_visit_class (ValaCodeVisitor* base, V
 static void vala_gd_bus_server_module_visit_object_type_symbol (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym);
 static void vala_gd_bus_server_module_real_visit_interface (ValaCodeVisitor* base, ValaInterface* iface);
 gboolean vala_ccode_base_module_add_symbol_declaration (ValaCCodeBaseModule* self, ValaCCodeFile* decl_space, ValaSymbol* sym, const gchar* name);
+ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self);
 gchar* vala_ccode_base_module_get_ccode_ref_function (ValaTypeSymbol* sym);
+ValaCCodeExpression* vala_gd_bus_module_get_interface_info (ValaGDBusModule* self, ValaObjectTypeSymbol* sym);
 gchar* vala_ccode_base_module_get_ccode_unref_function (ValaObjectTypeSymbol* sym);
 static void vala_gd_bus_server_module_real_register_dbus_info (ValaCCodeBaseModule* base, ValaCCodeBlock* block, ValaObjectTypeSymbol* sym);
 void vala_ccode_base_module_register_dbus_info (ValaCCodeBaseModule* self, ValaCCodeBlock* block, ValaObjectTypeSymbol* bindable);
@@ -662,79 +658,6 @@ ValaGDBusClientModule* vala_gd_bus_client_module_new (void);
 ValaGDBusClientModule* vala_gd_bus_client_module_construct (GType object_type);
 
 
-gboolean vala_gd_bus_server_module_is_dbus_visible (ValaCodeNode* node) {
-       gboolean result = FALSE;
-       ValaAttribute* dbus_attribute = NULL;
-       ValaCodeNode* _tmp0_ = NULL;
-       ValaAttribute* _tmp1_ = NULL;
-       gboolean _tmp2_ = FALSE;
-       gboolean _tmp3_ = FALSE;
-       ValaAttribute* _tmp4_ = NULL;
-       g_return_val_if_fail (node != NULL, FALSE);
-       _tmp0_ = node;
-       _tmp1_ = vala_code_node_get_attribute (_tmp0_, "DBus");
-       dbus_attribute = _tmp1_;
-       _tmp4_ = dbus_attribute;
-       if (_tmp4_ != NULL) {
-               ValaAttribute* _tmp5_ = NULL;
-               gboolean _tmp6_ = FALSE;
-               _tmp5_ = dbus_attribute;
-               _tmp6_ = vala_attribute_has_argument (_tmp5_, "visible");
-               _tmp3_ = _tmp6_;
-       } else {
-               _tmp3_ = FALSE;
-       }
-       if (_tmp3_) {
-               ValaAttribute* _tmp7_ = NULL;
-               gboolean _tmp8_ = FALSE;
-               _tmp7_ = dbus_attribute;
-               _tmp8_ = vala_attribute_get_bool (_tmp7_, "visible", FALSE);
-               _tmp2_ = !_tmp8_;
-       } else {
-               _tmp2_ = FALSE;
-       }
-       if (_tmp2_) {
-               result = FALSE;
-               _vala_code_node_unref0 (dbus_attribute);
-               return result;
-       }
-       result = TRUE;
-       _vala_code_node_unref0 (dbus_attribute);
-       return result;
-}
-
-
-gchar* vala_gd_bus_server_module_dbus_result_name (ValaMethod* m) {
-       gchar* result = NULL;
-       gchar* dbus_name = NULL;
-       ValaMethod* _tmp0_ = NULL;
-       gchar* _tmp1_ = NULL;
-       gboolean _tmp2_ = FALSE;
-       const gchar* _tmp3_ = NULL;
-       gchar* _tmp5_ = NULL;
-       g_return_val_if_fail (m != NULL, NULL);
-       _tmp0_ = m;
-       _tmp1_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp0_, "DBus", "result", NULL);
-       dbus_name = _tmp1_;
-       _tmp3_ = dbus_name;
-       if (_tmp3_ != NULL) {
-               const gchar* _tmp4_ = NULL;
-               _tmp4_ = dbus_name;
-               _tmp2_ = g_strcmp0 (_tmp4_, "") != 0;
-       } else {
-               _tmp2_ = FALSE;
-       }
-       if (_tmp2_) {
-               result = dbus_name;
-               return result;
-       }
-       _tmp5_ = g_strdup ("result");
-       result = _tmp5_;
-       _g_free0 (dbus_name);
-       return result;
-}
-
-
 static gpointer _vala_code_node_ref0 (gpointer self) {
        return self ? vala_code_node_ref (self) : NULL;
 }
@@ -4649,7 +4572,7 @@ static void vala_gd_bus_server_module_handle_signals (ValaGDBusServerModule* sel
                                continue;
                        }
                        _tmp17_ = sig;
-                       _tmp18_ = vala_gd_bus_server_module_is_dbus_visible ((ValaCodeNode*) _tmp17_);
+                       _tmp18_ = vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp17_);
                        if (!_tmp18_) {
                                _vala_code_node_unref0 (sig);
                                continue;
@@ -5083,7 +5006,7 @@ static void vala_gd_bus_server_module_generate_interface_method_call_function (V
                                continue;
                        }
                        _tmp76_ = m;
-                       _tmp77_ = vala_gd_bus_server_module_is_dbus_visible ((ValaCodeNode*) _tmp76_);
+                       _tmp77_ = vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp76_);
                        if (!_tmp77_) {
                                _vala_code_node_unref0 (m);
                                continue;
@@ -5489,7 +5412,7 @@ static void vala_gd_bus_server_module_generate_interface_get_property_function (
                                continue;
                        }
                        _tmp73_ = prop;
-                       _tmp74_ = vala_gd_bus_server_module_is_dbus_visible ((ValaCodeNode*) _tmp73_);
+                       _tmp74_ = vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp73_);
                        if (!_tmp74_) {
                                _vala_code_node_unref0 (prop);
                                continue;
@@ -5874,7 +5797,7 @@ static void vala_gd_bus_server_module_generate_interface_set_property_function (
                                continue;
                        }
                        _tmp76_ = prop;
-                       _tmp77_ = vala_gd_bus_server_module_is_dbus_visible ((ValaCodeNode*) _tmp76_);
+                       _tmp77_ = vala_gd_bus_module_is_dbus_visible ((ValaCodeNode*) _tmp76_);
                        if (!_tmp77_) {
                                _vala_code_node_unref0 (prop);
                                continue;
@@ -5997,2184 +5920,6 @@ static void vala_gd_bus_server_module_generate_interface_set_property_function (
 }
 
 
-static ValaCCodeExpression* vala_gd_bus_server_module_get_method_info (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym) {
-       ValaCCodeExpression* result = NULL;
-       ValaCCodeInitializerList* infos = NULL;
-       ValaCCodeInitializerList* _tmp0_ = NULL;
-       ValaCCodeInitializerList* _tmp371_ = NULL;
-       ValaCCodeConstant* _tmp372_ = NULL;
-       ValaCCodeConstant* _tmp373_ = NULL;
-       ValaCCodeDeclaration* _cdecl_ = NULL;
-       ValaCCodeDeclaration* _tmp374_ = NULL;
-       ValaObjectTypeSymbol* _tmp375_ = NULL;
-       gchar* _tmp376_ = NULL;
-       gchar* _tmp377_ = NULL;
-       gchar* _tmp378_ = NULL;
-       gchar* _tmp379_ = NULL;
-       gchar* _tmp380_ = NULL;
-       gchar* _tmp381_ = NULL;
-       ValaCCodeInitializerList* _tmp382_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp383_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp384_ = NULL;
-       ValaCCodeFile* _tmp385_ = NULL;
-       ValaObjectTypeSymbol* _tmp386_ = NULL;
-       gchar* _tmp387_ = NULL;
-       gchar* _tmp388_ = NULL;
-       gchar* _tmp389_ = NULL;
-       gchar* _tmp390_ = NULL;
-       gchar* _tmp391_ = NULL;
-       gchar* _tmp392_ = NULL;
-       ValaCCodeIdentifier* _tmp393_ = NULL;
-       ValaCCodeExpression* _tmp394_ = NULL;
-       g_return_val_if_fail (self != NULL, NULL);
-       g_return_val_if_fail (sym != NULL, NULL);
-       _tmp0_ = vala_ccode_initializer_list_new ();
-       infos = _tmp0_;
-       {
-               ValaList* _m_list = NULL;
-               ValaObjectTypeSymbol* _tmp1_ = NULL;
-               ValaList* _tmp2_ = NULL;
-               gint _m_size = 0;
-               ValaList* _tmp3_ = NULL;
-               gint _tmp4_ = 0;
-               gint _tmp5_ = 0;
-               gint _m_index = 0;
-               _tmp1_ = sym;
-               _tmp2_ = vala_object_type_symbol_get_methods (_tmp1_);
-               _m_list = _tmp2_;
-               _tmp3_ = _m_list;
-               _tmp4_ = vala_collection_get_size ((ValaCollection*) _tmp3_);
-               _tmp5_ = _tmp4_;
-               _m_size = _tmp5_;
-               _m_index = -1;
-               while (TRUE) {
-                       gint _tmp6_ = 0;
-                       gint _tmp7_ = 0;
-                       gint _tmp8_ = 0;
-                       ValaMethod* m = NULL;
-                       ValaList* _tmp9_ = NULL;
-                       gint _tmp10_ = 0;
-                       gpointer _tmp11_ = NULL;
-                       gboolean _tmp12_ = FALSE;
-                       gboolean _tmp13_ = FALSE;
-                       gboolean _tmp14_ = FALSE;
-                       ValaMethod* _tmp15_ = NULL;
-                       ValaMethod* _tmp25_ = NULL;
-                       gboolean _tmp26_ = FALSE;
-                       ValaCCodeInitializerList* in_args_info = NULL;
-                       ValaCCodeInitializerList* _tmp27_ = NULL;
-                       ValaCCodeInitializerList* out_args_info = NULL;
-                       ValaCCodeInitializerList* _tmp28_ = NULL;
-                       ValaMethod* _tmp163_ = NULL;
-                       ValaDataType* _tmp164_ = NULL;
-                       ValaDataType* _tmp165_ = NULL;
-                       ValaCCodeInitializerList* _tmp230_ = NULL;
-                       ValaCCodeConstant* _tmp231_ = NULL;
-                       ValaCCodeConstant* _tmp232_ = NULL;
-                       ValaCCodeInitializerList* _tmp233_ = NULL;
-                       ValaCCodeConstant* _tmp234_ = NULL;
-                       ValaCCodeConstant* _tmp235_ = NULL;
-                       ValaCCodeDeclaration* _cdecl_ = NULL;
-                       ValaCCodeDeclaration* _tmp236_ = NULL;
-                       ValaCCodeDeclaration* _tmp237_ = NULL;
-                       ValaObjectTypeSymbol* _tmp238_ = NULL;
-                       gchar* _tmp239_ = NULL;
-                       gchar* _tmp240_ = NULL;
-                       gchar* _tmp241_ = NULL;
-                       gchar* _tmp242_ = NULL;
-                       gchar* _tmp243_ = NULL;
-                       gchar* _tmp244_ = NULL;
-                       ValaMethod* _tmp245_ = NULL;
-                       const gchar* _tmp246_ = NULL;
-                       const gchar* _tmp247_ = NULL;
-                       gchar* _tmp248_ = NULL;
-                       gchar* _tmp249_ = NULL;
-                       gchar* _tmp250_ = NULL;
-                       gchar* _tmp251_ = NULL;
-                       ValaCCodeInitializerList* _tmp252_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp253_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp254_ = NULL;
-                       ValaCCodeDeclaration* _tmp255_ = NULL;
-                       ValaCCodeFile* _tmp256_ = NULL;
-                       ValaCCodeDeclaration* _tmp257_ = NULL;
-                       ValaCCodeDeclaration* _tmp258_ = NULL;
-                       ValaCCodeDeclaration* _tmp259_ = NULL;
-                       ValaObjectTypeSymbol* _tmp260_ = NULL;
-                       gchar* _tmp261_ = NULL;
-                       gchar* _tmp262_ = NULL;
-                       gchar* _tmp263_ = NULL;
-                       gchar* _tmp264_ = NULL;
-                       gchar* _tmp265_ = NULL;
-                       gchar* _tmp266_ = NULL;
-                       ValaMethod* _tmp267_ = NULL;
-                       const gchar* _tmp268_ = NULL;
-                       const gchar* _tmp269_ = NULL;
-                       gchar* _tmp270_ = NULL;
-                       gchar* _tmp271_ = NULL;
-                       gchar* _tmp272_ = NULL;
-                       gchar* _tmp273_ = NULL;
-                       ValaCCodeInitializerList* _tmp274_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp275_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp276_ = NULL;
-                       ValaCCodeDeclaration* _tmp277_ = NULL;
-                       ValaCCodeFile* _tmp278_ = NULL;
-                       ValaCCodeDeclaration* _tmp279_ = NULL;
-                       ValaCCodeInitializerList* info = NULL;
-                       ValaCCodeInitializerList* _tmp280_ = NULL;
-                       ValaCCodeInitializerList* _tmp281_ = NULL;
-                       ValaCCodeConstant* _tmp282_ = NULL;
-                       ValaCCodeConstant* _tmp283_ = NULL;
-                       ValaCCodeInitializerList* _tmp284_ = NULL;
-                       ValaMethod* _tmp285_ = NULL;
-                       gchar* _tmp286_ = NULL;
-                       gchar* _tmp287_ = NULL;
-                       gchar* _tmp288_ = NULL;
-                       gchar* _tmp289_ = NULL;
-                       ValaCCodeConstant* _tmp290_ = NULL;
-                       ValaCCodeConstant* _tmp291_ = NULL;
-                       ValaCCodeInitializerList* _tmp292_ = NULL;
-                       ValaObjectTypeSymbol* _tmp293_ = NULL;
-                       gchar* _tmp294_ = NULL;
-                       gchar* _tmp295_ = NULL;
-                       gchar* _tmp296_ = NULL;
-                       gchar* _tmp297_ = NULL;
-                       gchar* _tmp298_ = NULL;
-                       gchar* _tmp299_ = NULL;
-                       ValaMethod* _tmp300_ = NULL;
-                       const gchar* _tmp301_ = NULL;
-                       const gchar* _tmp302_ = NULL;
-                       gchar* _tmp303_ = NULL;
-                       gchar* _tmp304_ = NULL;
-                       gchar* _tmp305_ = NULL;
-                       gchar* _tmp306_ = NULL;
-                       ValaCCodeIdentifier* _tmp307_ = NULL;
-                       ValaCCodeIdentifier* _tmp308_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp309_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp310_ = NULL;
-                       ValaCCodeCastExpression* _tmp311_ = NULL;
-                       ValaCCodeCastExpression* _tmp312_ = NULL;
-                       ValaCCodeInitializerList* _tmp313_ = NULL;
-                       ValaObjectTypeSymbol* _tmp314_ = NULL;
-                       gchar* _tmp315_ = NULL;
-                       gchar* _tmp316_ = NULL;
-                       gchar* _tmp317_ = NULL;
-                       gchar* _tmp318_ = NULL;
-                       gchar* _tmp319_ = NULL;
-                       gchar* _tmp320_ = NULL;
-                       ValaMethod* _tmp321_ = NULL;
-                       const gchar* _tmp322_ = NULL;
-                       const gchar* _tmp323_ = NULL;
-                       gchar* _tmp324_ = NULL;
-                       gchar* _tmp325_ = NULL;
-                       gchar* _tmp326_ = NULL;
-                       gchar* _tmp327_ = NULL;
-                       ValaCCodeIdentifier* _tmp328_ = NULL;
-                       ValaCCodeIdentifier* _tmp329_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp330_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp331_ = NULL;
-                       ValaCCodeCastExpression* _tmp332_ = NULL;
-                       ValaCCodeCastExpression* _tmp333_ = NULL;
-                       ValaCCodeDeclaration* _tmp334_ = NULL;
-                       ValaCCodeDeclaration* _tmp335_ = NULL;
-                       ValaObjectTypeSymbol* _tmp336_ = NULL;
-                       gchar* _tmp337_ = NULL;
-                       gchar* _tmp338_ = NULL;
-                       gchar* _tmp339_ = NULL;
-                       gchar* _tmp340_ = NULL;
-                       gchar* _tmp341_ = NULL;
-                       gchar* _tmp342_ = NULL;
-                       ValaMethod* _tmp343_ = NULL;
-                       const gchar* _tmp344_ = NULL;
-                       const gchar* _tmp345_ = NULL;
-                       gchar* _tmp346_ = NULL;
-                       gchar* _tmp347_ = NULL;
-                       ValaCCodeInitializerList* _tmp348_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp349_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp350_ = NULL;
-                       ValaCCodeDeclaration* _tmp351_ = NULL;
-                       ValaCCodeFile* _tmp352_ = NULL;
-                       ValaCCodeDeclaration* _tmp353_ = NULL;
-                       ValaCCodeInitializerList* _tmp354_ = NULL;
-                       ValaObjectTypeSymbol* _tmp355_ = NULL;
-                       gchar* _tmp356_ = NULL;
-                       gchar* _tmp357_ = NULL;
-                       gchar* _tmp358_ = NULL;
-                       gchar* _tmp359_ = NULL;
-                       gchar* _tmp360_ = NULL;
-                       gchar* _tmp361_ = NULL;
-                       ValaMethod* _tmp362_ = NULL;
-                       const gchar* _tmp363_ = NULL;
-                       const gchar* _tmp364_ = NULL;
-                       gchar* _tmp365_ = NULL;
-                       gchar* _tmp366_ = NULL;
-                       ValaCCodeIdentifier* _tmp367_ = NULL;
-                       ValaCCodeIdentifier* _tmp368_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp369_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp370_ = NULL;
-                       _tmp6_ = _m_index;
-                       _m_index = _tmp6_ + 1;
-                       _tmp7_ = _m_index;
-                       _tmp8_ = _m_size;
-                       if (!(_tmp7_ < _tmp8_)) {
-                               break;
-                       }
-                       _tmp9_ = _m_list;
-                       _tmp10_ = _m_index;
-                       _tmp11_ = vala_list_get (_tmp9_, _tmp10_);
-                       m = (ValaMethod*) _tmp11_;
-                       _tmp15_ = m;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp15_, VALA_TYPE_CREATION_METHOD)) {
-                               _tmp14_ = TRUE;
-                       } else {
-                               ValaMethod* _tmp16_ = NULL;
-                               ValaMemberBinding _tmp17_ = 0;
-                               ValaMemberBinding _tmp18_ = 0;
-                               _tmp16_ = m;
-                               _tmp17_ = vala_method_get_binding (_tmp16_);
-                               _tmp18_ = _tmp17_;
-                               _tmp14_ = _tmp18_ != VALA_MEMBER_BINDING_INSTANCE;
-                       }
-                       if (_tmp14_) {
-                               _tmp13_ = TRUE;
-                       } else {
-                               ValaMethod* _tmp19_ = NULL;
-                               gboolean _tmp20_ = FALSE;
-                               gboolean _tmp21_ = FALSE;
-                               _tmp19_ = m;
-                               _tmp20_ = vala_method_get_overrides (_tmp19_);
-                               _tmp21_ = _tmp20_;
-                               _tmp13_ = _tmp21_;
-                       }
-                       if (_tmp13_) {
-                               _tmp12_ = TRUE;
-                       } else {
-                               ValaMethod* _tmp22_ = NULL;
-                               ValaSymbolAccessibility _tmp23_ = 0;
-                               ValaSymbolAccessibility _tmp24_ = 0;
-                               _tmp22_ = m;
-                               _tmp23_ = vala_symbol_get_access ((ValaSymbol*) _tmp22_);
-                               _tmp24_ = _tmp23_;
-                               _tmp12_ = _tmp24_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
-                       }
-                       if (_tmp12_) {
-                               _vala_code_node_unref0 (m);
-                               continue;
-                       }
-                       _tmp25_ = m;
-                       _tmp26_ = vala_gd_bus_server_module_is_dbus_visible ((ValaCodeNode*) _tmp25_);
-                       if (!_tmp26_) {
-                               _vala_code_node_unref0 (m);
-                               continue;
-                       }
-                       _tmp27_ = vala_ccode_initializer_list_new ();
-                       in_args_info = _tmp27_;
-                       _tmp28_ = vala_ccode_initializer_list_new ();
-                       out_args_info = _tmp28_;
-                       {
-                               ValaList* _param_list = NULL;
-                               ValaMethod* _tmp29_ = NULL;
-                               ValaList* _tmp30_ = NULL;
-                               gint _param_size = 0;
-                               ValaList* _tmp31_ = NULL;
-                               gint _tmp32_ = 0;
-                               gint _tmp33_ = 0;
-                               gint _param_index = 0;
-                               _tmp29_ = m;
-                               _tmp30_ = vala_method_get_parameters (_tmp29_);
-                               _param_list = _tmp30_;
-                               _tmp31_ = _param_list;
-                               _tmp32_ = vala_collection_get_size ((ValaCollection*) _tmp31_);
-                               _tmp33_ = _tmp32_;
-                               _param_size = _tmp33_;
-                               _param_index = -1;
-                               while (TRUE) {
-                                       gint _tmp34_ = 0;
-                                       gint _tmp35_ = 0;
-                                       gint _tmp36_ = 0;
-                                       ValaParameter* param = NULL;
-                                       ValaList* _tmp37_ = NULL;
-                                       gint _tmp38_ = 0;
-                                       gpointer _tmp39_ = NULL;
-                                       gboolean _tmp40_ = FALSE;
-                                       ValaParameter* _tmp41_ = NULL;
-                                       ValaDataType* _tmp42_ = NULL;
-                                       ValaDataType* _tmp43_ = NULL;
-                                       gboolean _tmp51_ = FALSE;
-                                       ValaParameter* _tmp52_ = NULL;
-                                       ValaDataType* _tmp53_ = NULL;
-                                       ValaDataType* _tmp54_ = NULL;
-                                       ValaCCodeInitializerList* info = NULL;
-                                       ValaCCodeInitializerList* _tmp62_ = NULL;
-                                       ValaCCodeInitializerList* _tmp63_ = NULL;
-                                       ValaCCodeConstant* _tmp64_ = NULL;
-                                       ValaCCodeConstant* _tmp65_ = NULL;
-                                       ValaCCodeInitializerList* _tmp66_ = NULL;
-                                       ValaParameter* _tmp67_ = NULL;
-                                       const gchar* _tmp68_ = NULL;
-                                       const gchar* _tmp69_ = NULL;
-                                       gchar* _tmp70_ = NULL;
-                                       gchar* _tmp71_ = NULL;
-                                       ValaCCodeConstant* _tmp72_ = NULL;
-                                       ValaCCodeConstant* _tmp73_ = NULL;
-                                       ValaCCodeInitializerList* _tmp74_ = NULL;
-                                       ValaParameter* _tmp75_ = NULL;
-                                       ValaDataType* _tmp76_ = NULL;
-                                       ValaDataType* _tmp77_ = NULL;
-                                       ValaParameter* _tmp78_ = NULL;
-                                       gchar* _tmp79_ = NULL;
-                                       gchar* _tmp80_ = NULL;
-                                       gchar* _tmp81_ = NULL;
-                                       gchar* _tmp82_ = NULL;
-                                       ValaCCodeConstant* _tmp83_ = NULL;
-                                       ValaCCodeConstant* _tmp84_ = NULL;
-                                       ValaCCodeDeclaration* _cdecl_ = NULL;
-                                       ValaCCodeDeclaration* _tmp85_ = NULL;
-                                       ValaCCodeDeclaration* _tmp86_ = NULL;
-                                       ValaObjectTypeSymbol* _tmp87_ = NULL;
-                                       gchar* _tmp88_ = NULL;
-                                       gchar* _tmp89_ = NULL;
-                                       gchar* _tmp90_ = NULL;
-                                       gchar* _tmp91_ = NULL;
-                                       gchar* _tmp92_ = NULL;
-                                       gchar* _tmp93_ = NULL;
-                                       ValaMethod* _tmp94_ = NULL;
-                                       const gchar* _tmp95_ = NULL;
-                                       const gchar* _tmp96_ = NULL;
-                                       gchar* _tmp97_ = NULL;
-                                       gchar* _tmp98_ = NULL;
-                                       gchar* _tmp99_ = NULL;
-                                       gchar* _tmp100_ = NULL;
-                                       ValaParameter* _tmp101_ = NULL;
-                                       const gchar* _tmp102_ = NULL;
-                                       const gchar* _tmp103_ = NULL;
-                                       gchar* _tmp104_ = NULL;
-                                       gchar* _tmp105_ = NULL;
-                                       ValaCCodeInitializerList* _tmp106_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp107_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp108_ = NULL;
-                                       ValaCCodeDeclaration* _tmp109_ = NULL;
-                                       ValaCCodeFile* _tmp110_ = NULL;
-                                       ValaCCodeDeclaration* _tmp111_ = NULL;
-                                       ValaParameter* _tmp112_ = NULL;
-                                       ValaParameterDirection _tmp113_ = 0;
-                                       ValaParameterDirection _tmp114_ = 0;
-                                       _tmp34_ = _param_index;
-                                       _param_index = _tmp34_ + 1;
-                                       _tmp35_ = _param_index;
-                                       _tmp36_ = _param_size;
-                                       if (!(_tmp35_ < _tmp36_)) {
-                                               break;
-                                       }
-                                       _tmp37_ = _param_list;
-                                       _tmp38_ = _param_index;
-                                       _tmp39_ = vala_list_get (_tmp37_, _tmp38_);
-                                       param = (ValaParameter*) _tmp39_;
-                                       _tmp41_ = param;
-                                       _tmp42_ = vala_variable_get_variable_type ((ValaVariable*) _tmp41_);
-                                       _tmp43_ = _tmp42_;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp43_, VALA_TYPE_OBJECT_TYPE)) {
-                                               ValaParameter* _tmp44_ = NULL;
-                                               ValaDataType* _tmp45_ = NULL;
-                                               ValaDataType* _tmp46_ = NULL;
-                                               ValaTypeSymbol* _tmp47_ = NULL;
-                                               ValaTypeSymbol* _tmp48_ = NULL;
-                                               gchar* _tmp49_ = NULL;
-                                               gchar* _tmp50_ = NULL;
-                                               _tmp44_ = param;
-                                               _tmp45_ = vala_variable_get_variable_type ((ValaVariable*) _tmp44_);
-                                               _tmp46_ = _tmp45_;
-                                               _tmp47_ = vala_data_type_get_data_type (_tmp46_);
-                                               _tmp48_ = _tmp47_;
-                                               _tmp49_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp48_);
-                                               _tmp50_ = _tmp49_;
-                                               _tmp40_ = g_strcmp0 (_tmp50_, "GLib.Cancellable") == 0;
-                                               _g_free0 (_tmp50_);
-                                       } else {
-                                               _tmp40_ = FALSE;
-                                       }
-                                       if (_tmp40_) {
-                                               _vala_code_node_unref0 (param);
-                                               continue;
-                                       }
-                                       _tmp52_ = param;
-                                       _tmp53_ = vala_variable_get_variable_type ((ValaVariable*) _tmp52_);
-                                       _tmp54_ = _tmp53_;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp54_, VALA_TYPE_OBJECT_TYPE)) {
-                                               ValaParameter* _tmp55_ = NULL;
-                                               ValaDataType* _tmp56_ = NULL;
-                                               ValaDataType* _tmp57_ = NULL;
-                                               ValaTypeSymbol* _tmp58_ = NULL;
-                                               ValaTypeSymbol* _tmp59_ = NULL;
-                                               gchar* _tmp60_ = NULL;
-                                               gchar* _tmp61_ = NULL;
-                                               _tmp55_ = param;
-                                               _tmp56_ = vala_variable_get_variable_type ((ValaVariable*) _tmp55_);
-                                               _tmp57_ = _tmp56_;
-                                               _tmp58_ = vala_data_type_get_data_type (_tmp57_);
-                                               _tmp59_ = _tmp58_;
-                                               _tmp60_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp59_);
-                                               _tmp61_ = _tmp60_;
-                                               _tmp51_ = g_strcmp0 (_tmp61_, "GLib.BusName") == 0;
-                                               _g_free0 (_tmp61_);
-                                       } else {
-                                               _tmp51_ = FALSE;
-                                       }
-                                       if (_tmp51_) {
-                                               _vala_code_node_unref0 (param);
-                                               continue;
-                                       }
-                                       _tmp62_ = vala_ccode_initializer_list_new ();
-                                       info = _tmp62_;
-                                       _tmp63_ = info;
-                                       _tmp64_ = vala_ccode_constant_new ("-1");
-                                       _tmp65_ = _tmp64_;
-                                       vala_ccode_initializer_list_append (_tmp63_, (ValaCCodeExpression*) _tmp65_);
-                                       _vala_ccode_node_unref0 (_tmp65_);
-                                       _tmp66_ = info;
-                                       _tmp67_ = param;
-                                       _tmp68_ = vala_symbol_get_name ((ValaSymbol*) _tmp67_);
-                                       _tmp69_ = _tmp68_;
-                                       _tmp70_ = g_strdup_printf ("\"%s\"", _tmp69_);
-                                       _tmp71_ = _tmp70_;
-                                       _tmp72_ = vala_ccode_constant_new (_tmp71_);
-                                       _tmp73_ = _tmp72_;
-                                       vala_ccode_initializer_list_append (_tmp66_, (ValaCCodeExpression*) _tmp73_);
-                                       _vala_ccode_node_unref0 (_tmp73_);
-                                       _g_free0 (_tmp71_);
-                                       _tmp74_ = info;
-                                       _tmp75_ = param;
-                                       _tmp76_ = vala_variable_get_variable_type ((ValaVariable*) _tmp75_);
-                                       _tmp77_ = _tmp76_;
-                                       _tmp78_ = param;
-                                       _tmp79_ = vala_gvariant_module_get_type_signature (_tmp77_, (ValaSymbol*) _tmp78_);
-                                       _tmp80_ = _tmp79_;
-                                       _tmp81_ = g_strdup_printf ("\"%s\"", _tmp80_);
-                                       _tmp82_ = _tmp81_;
-                                       _tmp83_ = vala_ccode_constant_new (_tmp82_);
-                                       _tmp84_ = _tmp83_;
-                                       vala_ccode_initializer_list_append (_tmp74_, (ValaCCodeExpression*) _tmp84_);
-                                       _vala_ccode_node_unref0 (_tmp84_);
-                                       _g_free0 (_tmp82_);
-                                       _g_free0 (_tmp80_);
-                                       _tmp85_ = vala_ccode_declaration_new ("const GDBusArgInfo");
-                                       _cdecl_ = _tmp85_;
-                                       _tmp86_ = _cdecl_;
-                                       _tmp87_ = sym;
-                                       _tmp88_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp87_);
-                                       _tmp89_ = _tmp88_;
-                                       _tmp90_ = g_strconcat ("_", _tmp89_, NULL);
-                                       _tmp91_ = _tmp90_;
-                                       _tmp92_ = g_strconcat (_tmp91_, "dbus_arg_info_", NULL);
-                                       _tmp93_ = _tmp92_;
-                                       _tmp94_ = m;
-                                       _tmp95_ = vala_symbol_get_name ((ValaSymbol*) _tmp94_);
-                                       _tmp96_ = _tmp95_;
-                                       _tmp97_ = g_strconcat (_tmp93_, _tmp96_, NULL);
-                                       _tmp98_ = _tmp97_;
-                                       _tmp99_ = g_strconcat (_tmp98_, "_", NULL);
-                                       _tmp100_ = _tmp99_;
-                                       _tmp101_ = param;
-                                       _tmp102_ = vala_symbol_get_name ((ValaSymbol*) _tmp101_);
-                                       _tmp103_ = _tmp102_;
-                                       _tmp104_ = g_strconcat (_tmp100_, _tmp103_, NULL);
-                                       _tmp105_ = _tmp104_;
-                                       _tmp106_ = info;
-                                       _tmp107_ = vala_ccode_variable_declarator_new (_tmp105_, (ValaCCodeExpression*) _tmp106_, NULL);
-                                       _tmp108_ = _tmp107_;
-                                       vala_ccode_declaration_add_declarator (_tmp86_, (ValaCCodeDeclarator*) _tmp108_);
-                                       _vala_ccode_node_unref0 (_tmp108_);
-                                       _g_free0 (_tmp105_);
-                                       _g_free0 (_tmp100_);
-                                       _g_free0 (_tmp98_);
-                                       _g_free0 (_tmp93_);
-                                       _g_free0 (_tmp91_);
-                                       _g_free0 (_tmp89_);
-                                       _tmp109_ = _cdecl_;
-                                       vala_ccode_declaration_set_modifiers (_tmp109_, VALA_CCODE_MODIFIERS_STATIC);
-                                       _tmp110_ = ((ValaCCodeBaseModule*) self)->cfile;
-                                       _tmp111_ = _cdecl_;
-                                       vala_ccode_file_add_constant_declaration (_tmp110_, (ValaCCodeNode*) _tmp111_);
-                                       _tmp112_ = param;
-                                       _tmp113_ = vala_parameter_get_direction (_tmp112_);
-                                       _tmp114_ = _tmp113_;
-                                       if (_tmp114_ == VALA_PARAMETER_DIRECTION_IN) {
-                                               ValaCCodeInitializerList* _tmp115_ = NULL;
-                                               ValaObjectTypeSymbol* _tmp116_ = NULL;
-                                               gchar* _tmp117_ = NULL;
-                                               gchar* _tmp118_ = NULL;
-                                               gchar* _tmp119_ = NULL;
-                                               gchar* _tmp120_ = NULL;
-                                               gchar* _tmp121_ = NULL;
-                                               gchar* _tmp122_ = NULL;
-                                               ValaMethod* _tmp123_ = NULL;
-                                               const gchar* _tmp124_ = NULL;
-                                               const gchar* _tmp125_ = NULL;
-                                               gchar* _tmp126_ = NULL;
-                                               gchar* _tmp127_ = NULL;
-                                               gchar* _tmp128_ = NULL;
-                                               gchar* _tmp129_ = NULL;
-                                               ValaParameter* _tmp130_ = NULL;
-                                               const gchar* _tmp131_ = NULL;
-                                               const gchar* _tmp132_ = NULL;
-                                               gchar* _tmp133_ = NULL;
-                                               gchar* _tmp134_ = NULL;
-                                               ValaCCodeIdentifier* _tmp135_ = NULL;
-                                               ValaCCodeIdentifier* _tmp136_ = NULL;
-                                               ValaCCodeUnaryExpression* _tmp137_ = NULL;
-                                               ValaCCodeUnaryExpression* _tmp138_ = NULL;
-                                               _tmp115_ = in_args_info;
-                                               _tmp116_ = sym;
-                                               _tmp117_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp116_);
-                                               _tmp118_ = _tmp117_;
-                                               _tmp119_ = g_strconcat ("_", _tmp118_, NULL);
-                                               _tmp120_ = _tmp119_;
-                                               _tmp121_ = g_strconcat (_tmp120_, "dbus_arg_info_", NULL);
-                                               _tmp122_ = _tmp121_;
-                                               _tmp123_ = m;
-                                               _tmp124_ = vala_symbol_get_name ((ValaSymbol*) _tmp123_);
-                                               _tmp125_ = _tmp124_;
-                                               _tmp126_ = g_strconcat (_tmp122_, _tmp125_, NULL);
-                                               _tmp127_ = _tmp126_;
-                                               _tmp128_ = g_strconcat (_tmp127_, "_", NULL);
-                                               _tmp129_ = _tmp128_;
-                                               _tmp130_ = param;
-                                               _tmp131_ = vala_symbol_get_name ((ValaSymbol*) _tmp130_);
-                                               _tmp132_ = _tmp131_;
-                                               _tmp133_ = g_strconcat (_tmp129_, _tmp132_, NULL);
-                                               _tmp134_ = _tmp133_;
-                                               _tmp135_ = vala_ccode_identifier_new (_tmp134_);
-                                               _tmp136_ = _tmp135_;
-                                               _tmp137_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp136_);
-                                               _tmp138_ = _tmp137_;
-                                               vala_ccode_initializer_list_append (_tmp115_, (ValaCCodeExpression*) _tmp138_);
-                                               _vala_ccode_node_unref0 (_tmp138_);
-                                               _vala_ccode_node_unref0 (_tmp136_);
-                                               _g_free0 (_tmp134_);
-                                               _g_free0 (_tmp129_);
-                                               _g_free0 (_tmp127_);
-                                               _g_free0 (_tmp122_);
-                                               _g_free0 (_tmp120_);
-                                               _g_free0 (_tmp118_);
-                                       } else {
-                                               ValaCCodeInitializerList* _tmp139_ = NULL;
-                                               ValaObjectTypeSymbol* _tmp140_ = NULL;
-                                               gchar* _tmp141_ = NULL;
-                                               gchar* _tmp142_ = NULL;
-                                               gchar* _tmp143_ = NULL;
-                                               gchar* _tmp144_ = NULL;
-                                               gchar* _tmp145_ = NULL;
-                                               gchar* _tmp146_ = NULL;
-                                               ValaMethod* _tmp147_ = NULL;
-                                               const gchar* _tmp148_ = NULL;
-                                               const gchar* _tmp149_ = NULL;
-                                               gchar* _tmp150_ = NULL;
-                                               gchar* _tmp151_ = NULL;
-                                               gchar* _tmp152_ = NULL;
-                                               gchar* _tmp153_ = NULL;
-                                               ValaParameter* _tmp154_ = NULL;
-                                               const gchar* _tmp155_ = NULL;
-                                               const gchar* _tmp156_ = NULL;
-                                               gchar* _tmp157_ = NULL;
-                                               gchar* _tmp158_ = NULL;
-                                               ValaCCodeIdentifier* _tmp159_ = NULL;
-                                               ValaCCodeIdentifier* _tmp160_ = NULL;
-                                               ValaCCodeUnaryExpression* _tmp161_ = NULL;
-                                               ValaCCodeUnaryExpression* _tmp162_ = NULL;
-                                               _tmp139_ = out_args_info;
-                                               _tmp140_ = sym;
-                                               _tmp141_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp140_);
-                                               _tmp142_ = _tmp141_;
-                                               _tmp143_ = g_strconcat ("_", _tmp142_, NULL);
-                                               _tmp144_ = _tmp143_;
-                                               _tmp145_ = g_strconcat (_tmp144_, "dbus_arg_info_", NULL);
-                                               _tmp146_ = _tmp145_;
-                                               _tmp147_ = m;
-                                               _tmp148_ = vala_symbol_get_name ((ValaSymbol*) _tmp147_);
-                                               _tmp149_ = _tmp148_;
-                                               _tmp150_ = g_strconcat (_tmp146_, _tmp149_, NULL);
-                                               _tmp151_ = _tmp150_;
-                                               _tmp152_ = g_strconcat (_tmp151_, "_", NULL);
-                                               _tmp153_ = _tmp152_;
-                                               _tmp154_ = param;
-                                               _tmp155_ = vala_symbol_get_name ((ValaSymbol*) _tmp154_);
-                                               _tmp156_ = _tmp155_;
-                                               _tmp157_ = g_strconcat (_tmp153_, _tmp156_, NULL);
-                                               _tmp158_ = _tmp157_;
-                                               _tmp159_ = vala_ccode_identifier_new (_tmp158_);
-                                               _tmp160_ = _tmp159_;
-                                               _tmp161_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp160_);
-                                               _tmp162_ = _tmp161_;
-                                               vala_ccode_initializer_list_append (_tmp139_, (ValaCCodeExpression*) _tmp162_);
-                                               _vala_ccode_node_unref0 (_tmp162_);
-                                               _vala_ccode_node_unref0 (_tmp160_);
-                                               _g_free0 (_tmp158_);
-                                               _g_free0 (_tmp153_);
-                                               _g_free0 (_tmp151_);
-                                               _g_free0 (_tmp146_);
-                                               _g_free0 (_tmp144_);
-                                               _g_free0 (_tmp142_);
-                                       }
-                                       _vala_ccode_node_unref0 (_cdecl_);
-                                       _vala_ccode_node_unref0 (info);
-                                       _vala_code_node_unref0 (param);
-                               }
-                               _vala_iterable_unref0 (_param_list);
-                       }
-                       _tmp163_ = m;
-                       _tmp164_ = vala_method_get_return_type (_tmp163_);
-                       _tmp165_ = _tmp164_;
-                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp165_, VALA_TYPE_VOID_TYPE)) {
-                               ValaCCodeInitializerList* info = NULL;
-                               ValaCCodeInitializerList* _tmp166_ = NULL;
-                               ValaCCodeInitializerList* _tmp167_ = NULL;
-                               ValaCCodeConstant* _tmp168_ = NULL;
-                               ValaCCodeConstant* _tmp169_ = NULL;
-                               ValaCCodeInitializerList* _tmp170_ = NULL;
-                               ValaMethod* _tmp171_ = NULL;
-                               gchar* _tmp172_ = NULL;
-                               gchar* _tmp173_ = NULL;
-                               gchar* _tmp174_ = NULL;
-                               gchar* _tmp175_ = NULL;
-                               ValaCCodeConstant* _tmp176_ = NULL;
-                               ValaCCodeConstant* _tmp177_ = NULL;
-                               ValaCCodeInitializerList* _tmp178_ = NULL;
-                               ValaMethod* _tmp179_ = NULL;
-                               ValaDataType* _tmp180_ = NULL;
-                               ValaDataType* _tmp181_ = NULL;
-                               ValaMethod* _tmp182_ = NULL;
-                               gchar* _tmp183_ = NULL;
-                               gchar* _tmp184_ = NULL;
-                               gchar* _tmp185_ = NULL;
-                               gchar* _tmp186_ = NULL;
-                               ValaCCodeConstant* _tmp187_ = NULL;
-                               ValaCCodeConstant* _tmp188_ = NULL;
-                               ValaCCodeDeclaration* _cdecl_ = NULL;
-                               ValaCCodeDeclaration* _tmp189_ = NULL;
-                               ValaCCodeDeclaration* _tmp190_ = NULL;
-                               ValaObjectTypeSymbol* _tmp191_ = NULL;
-                               gchar* _tmp192_ = NULL;
-                               gchar* _tmp193_ = NULL;
-                               gchar* _tmp194_ = NULL;
-                               gchar* _tmp195_ = NULL;
-                               gchar* _tmp196_ = NULL;
-                               gchar* _tmp197_ = NULL;
-                               ValaMethod* _tmp198_ = NULL;
-                               const gchar* _tmp199_ = NULL;
-                               const gchar* _tmp200_ = NULL;
-                               gchar* _tmp201_ = NULL;
-                               gchar* _tmp202_ = NULL;
-                               gchar* _tmp203_ = NULL;
-                               gchar* _tmp204_ = NULL;
-                               ValaCCodeInitializerList* _tmp205_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp206_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp207_ = NULL;
-                               ValaCCodeDeclaration* _tmp208_ = NULL;
-                               ValaCCodeFile* _tmp209_ = NULL;
-                               ValaCCodeDeclaration* _tmp210_ = NULL;
-                               ValaCCodeInitializerList* _tmp211_ = NULL;
-                               ValaObjectTypeSymbol* _tmp212_ = NULL;
-                               gchar* _tmp213_ = NULL;
-                               gchar* _tmp214_ = NULL;
-                               gchar* _tmp215_ = NULL;
-                               gchar* _tmp216_ = NULL;
-                               gchar* _tmp217_ = NULL;
-                               gchar* _tmp218_ = NULL;
-                               ValaMethod* _tmp219_ = NULL;
-                               const gchar* _tmp220_ = NULL;
-                               const gchar* _tmp221_ = NULL;
-                               gchar* _tmp222_ = NULL;
-                               gchar* _tmp223_ = NULL;
-                               gchar* _tmp224_ = NULL;
-                               gchar* _tmp225_ = NULL;
-                               ValaCCodeIdentifier* _tmp226_ = NULL;
-                               ValaCCodeIdentifier* _tmp227_ = NULL;
-                               ValaCCodeUnaryExpression* _tmp228_ = NULL;
-                               ValaCCodeUnaryExpression* _tmp229_ = NULL;
-                               _tmp166_ = vala_ccode_initializer_list_new ();
-                               info = _tmp166_;
-                               _tmp167_ = info;
-                               _tmp168_ = vala_ccode_constant_new ("-1");
-                               _tmp169_ = _tmp168_;
-                               vala_ccode_initializer_list_append (_tmp167_, (ValaCCodeExpression*) _tmp169_);
-                               _vala_ccode_node_unref0 (_tmp169_);
-                               _tmp170_ = info;
-                               _tmp171_ = m;
-                               _tmp172_ = vala_gd_bus_server_module_dbus_result_name (_tmp171_);
-                               _tmp173_ = _tmp172_;
-                               _tmp174_ = g_strdup_printf ("\"%s\"", _tmp173_);
-                               _tmp175_ = _tmp174_;
-                               _tmp176_ = vala_ccode_constant_new (_tmp175_);
-                               _tmp177_ = _tmp176_;
-                               vala_ccode_initializer_list_append (_tmp170_, (ValaCCodeExpression*) _tmp177_);
-                               _vala_ccode_node_unref0 (_tmp177_);
-                               _g_free0 (_tmp175_);
-                               _g_free0 (_tmp173_);
-                               _tmp178_ = info;
-                               _tmp179_ = m;
-                               _tmp180_ = vala_method_get_return_type (_tmp179_);
-                               _tmp181_ = _tmp180_;
-                               _tmp182_ = m;
-                               _tmp183_ = vala_gvariant_module_get_type_signature (_tmp181_, (ValaSymbol*) _tmp182_);
-                               _tmp184_ = _tmp183_;
-                               _tmp185_ = g_strdup_printf ("\"%s\"", _tmp184_);
-                               _tmp186_ = _tmp185_;
-                               _tmp187_ = vala_ccode_constant_new (_tmp186_);
-                               _tmp188_ = _tmp187_;
-                               vala_ccode_initializer_list_append (_tmp178_, (ValaCCodeExpression*) _tmp188_);
-                               _vala_ccode_node_unref0 (_tmp188_);
-                               _g_free0 (_tmp186_);
-                               _g_free0 (_tmp184_);
-                               _tmp189_ = vala_ccode_declaration_new ("const GDBusArgInfo");
-                               _cdecl_ = _tmp189_;
-                               _tmp190_ = _cdecl_;
-                               _tmp191_ = sym;
-                               _tmp192_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp191_);
-                               _tmp193_ = _tmp192_;
-                               _tmp194_ = g_strconcat ("_", _tmp193_, NULL);
-                               _tmp195_ = _tmp194_;
-                               _tmp196_ = g_strconcat (_tmp195_, "dbus_arg_info_", NULL);
-                               _tmp197_ = _tmp196_;
-                               _tmp198_ = m;
-                               _tmp199_ = vala_symbol_get_name ((ValaSymbol*) _tmp198_);
-                               _tmp200_ = _tmp199_;
-                               _tmp201_ = g_strconcat (_tmp197_, _tmp200_, NULL);
-                               _tmp202_ = _tmp201_;
-                               _tmp203_ = g_strconcat (_tmp202_, "_result", NULL);
-                               _tmp204_ = _tmp203_;
-                               _tmp205_ = info;
-                               _tmp206_ = vala_ccode_variable_declarator_new (_tmp204_, (ValaCCodeExpression*) _tmp205_, NULL);
-                               _tmp207_ = _tmp206_;
-                               vala_ccode_declaration_add_declarator (_tmp190_, (ValaCCodeDeclarator*) _tmp207_);
-                               _vala_ccode_node_unref0 (_tmp207_);
-                               _g_free0 (_tmp204_);
-                               _g_free0 (_tmp202_);
-                               _g_free0 (_tmp197_);
-                               _g_free0 (_tmp195_);
-                               _g_free0 (_tmp193_);
-                               _tmp208_ = _cdecl_;
-                               vala_ccode_declaration_set_modifiers (_tmp208_, VALA_CCODE_MODIFIERS_STATIC);
-                               _tmp209_ = ((ValaCCodeBaseModule*) self)->cfile;
-                               _tmp210_ = _cdecl_;
-                               vala_ccode_file_add_constant_declaration (_tmp209_, (ValaCCodeNode*) _tmp210_);
-                               _tmp211_ = out_args_info;
-                               _tmp212_ = sym;
-                               _tmp213_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp212_);
-                               _tmp214_ = _tmp213_;
-                               _tmp215_ = g_strconcat ("_", _tmp214_, NULL);
-                               _tmp216_ = _tmp215_;
-                               _tmp217_ = g_strconcat (_tmp216_, "dbus_arg_info_", NULL);
-                               _tmp218_ = _tmp217_;
-                               _tmp219_ = m;
-                               _tmp220_ = vala_symbol_get_name ((ValaSymbol*) _tmp219_);
-                               _tmp221_ = _tmp220_;
-                               _tmp222_ = g_strconcat (_tmp218_, _tmp221_, NULL);
-                               _tmp223_ = _tmp222_;
-                               _tmp224_ = g_strconcat (_tmp223_, "_result", NULL);
-                               _tmp225_ = _tmp224_;
-                               _tmp226_ = vala_ccode_identifier_new (_tmp225_);
-                               _tmp227_ = _tmp226_;
-                               _tmp228_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp227_);
-                               _tmp229_ = _tmp228_;
-                               vala_ccode_initializer_list_append (_tmp211_, (ValaCCodeExpression*) _tmp229_);
-                               _vala_ccode_node_unref0 (_tmp229_);
-                               _vala_ccode_node_unref0 (_tmp227_);
-                               _g_free0 (_tmp225_);
-                               _g_free0 (_tmp223_);
-                               _g_free0 (_tmp218_);
-                               _g_free0 (_tmp216_);
-                               _g_free0 (_tmp214_);
-                               _vala_ccode_node_unref0 (_cdecl_);
-                               _vala_ccode_node_unref0 (info);
-                       }
-                       _tmp230_ = in_args_info;
-                       _tmp231_ = vala_ccode_constant_new ("NULL");
-                       _tmp232_ = _tmp231_;
-                       vala_ccode_initializer_list_append (_tmp230_, (ValaCCodeExpression*) _tmp232_);
-                       _vala_ccode_node_unref0 (_tmp232_);
-                       _tmp233_ = out_args_info;
-                       _tmp234_ = vala_ccode_constant_new ("NULL");
-                       _tmp235_ = _tmp234_;
-                       vala_ccode_initializer_list_append (_tmp233_, (ValaCCodeExpression*) _tmp235_);
-                       _vala_ccode_node_unref0 (_tmp235_);
-                       _tmp236_ = vala_ccode_declaration_new ("const GDBusArgInfo * const");
-                       _cdecl_ = _tmp236_;
-                       _tmp237_ = _cdecl_;
-                       _tmp238_ = sym;
-                       _tmp239_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp238_);
-                       _tmp240_ = _tmp239_;
-                       _tmp241_ = g_strconcat ("_", _tmp240_, NULL);
-                       _tmp242_ = _tmp241_;
-                       _tmp243_ = g_strconcat (_tmp242_, "dbus_arg_info_", NULL);
-                       _tmp244_ = _tmp243_;
-                       _tmp245_ = m;
-                       _tmp246_ = vala_symbol_get_name ((ValaSymbol*) _tmp245_);
-                       _tmp247_ = _tmp246_;
-                       _tmp248_ = g_strconcat (_tmp244_, _tmp247_, NULL);
-                       _tmp249_ = _tmp248_;
-                       _tmp250_ = g_strconcat (_tmp249_, "_in[]", NULL);
-                       _tmp251_ = _tmp250_;
-                       _tmp252_ = in_args_info;
-                       _tmp253_ = vala_ccode_variable_declarator_new (_tmp251_, (ValaCCodeExpression*) _tmp252_, NULL);
-                       _tmp254_ = _tmp253_;
-                       vala_ccode_declaration_add_declarator (_tmp237_, (ValaCCodeDeclarator*) _tmp254_);
-                       _vala_ccode_node_unref0 (_tmp254_);
-                       _g_free0 (_tmp251_);
-                       _g_free0 (_tmp249_);
-                       _g_free0 (_tmp244_);
-                       _g_free0 (_tmp242_);
-                       _g_free0 (_tmp240_);
-                       _tmp255_ = _cdecl_;
-                       vala_ccode_declaration_set_modifiers (_tmp255_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp256_ = ((ValaCCodeBaseModule*) self)->cfile;
-                       _tmp257_ = _cdecl_;
-                       vala_ccode_file_add_constant_declaration (_tmp256_, (ValaCCodeNode*) _tmp257_);
-                       _tmp258_ = vala_ccode_declaration_new ("const GDBusArgInfo * const");
-                       _vala_ccode_node_unref0 (_cdecl_);
-                       _cdecl_ = _tmp258_;
-                       _tmp259_ = _cdecl_;
-                       _tmp260_ = sym;
-                       _tmp261_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp260_);
-                       _tmp262_ = _tmp261_;
-                       _tmp263_ = g_strconcat ("_", _tmp262_, NULL);
-                       _tmp264_ = _tmp263_;
-                       _tmp265_ = g_strconcat (_tmp264_, "dbus_arg_info_", NULL);
-                       _tmp266_ = _tmp265_;
-                       _tmp267_ = m;
-                       _tmp268_ = vala_symbol_get_name ((ValaSymbol*) _tmp267_);
-                       _tmp269_ = _tmp268_;
-                       _tmp270_ = g_strconcat (_tmp266_, _tmp269_, NULL);
-                       _tmp271_ = _tmp270_;
-                       _tmp272_ = g_strconcat (_tmp271_, "_out[]", NULL);
-                       _tmp273_ = _tmp272_;
-                       _tmp274_ = out_args_info;
-                       _tmp275_ = vala_ccode_variable_declarator_new (_tmp273_, (ValaCCodeExpression*) _tmp274_, NULL);
-                       _tmp276_ = _tmp275_;
-                       vala_ccode_declaration_add_declarator (_tmp259_, (ValaCCodeDeclarator*) _tmp276_);
-                       _vala_ccode_node_unref0 (_tmp276_);
-                       _g_free0 (_tmp273_);
-                       _g_free0 (_tmp271_);
-                       _g_free0 (_tmp266_);
-                       _g_free0 (_tmp264_);
-                       _g_free0 (_tmp262_);
-                       _tmp277_ = _cdecl_;
-                       vala_ccode_declaration_set_modifiers (_tmp277_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp278_ = ((ValaCCodeBaseModule*) self)->cfile;
-                       _tmp279_ = _cdecl_;
-                       vala_ccode_file_add_constant_declaration (_tmp278_, (ValaCCodeNode*) _tmp279_);
-                       _tmp280_ = vala_ccode_initializer_list_new ();
-                       info = _tmp280_;
-                       _tmp281_ = info;
-                       _tmp282_ = vala_ccode_constant_new ("-1");
-                       _tmp283_ = _tmp282_;
-                       vala_ccode_initializer_list_append (_tmp281_, (ValaCCodeExpression*) _tmp283_);
-                       _vala_ccode_node_unref0 (_tmp283_);
-                       _tmp284_ = info;
-                       _tmp285_ = m;
-                       _tmp286_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp285_);
-                       _tmp287_ = _tmp286_;
-                       _tmp288_ = g_strdup_printf ("\"%s\"", _tmp287_);
-                       _tmp289_ = _tmp288_;
-                       _tmp290_ = vala_ccode_constant_new (_tmp289_);
-                       _tmp291_ = _tmp290_;
-                       vala_ccode_initializer_list_append (_tmp284_, (ValaCCodeExpression*) _tmp291_);
-                       _vala_ccode_node_unref0 (_tmp291_);
-                       _g_free0 (_tmp289_);
-                       _g_free0 (_tmp287_);
-                       _tmp292_ = info;
-                       _tmp293_ = sym;
-                       _tmp294_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp293_);
-                       _tmp295_ = _tmp294_;
-                       _tmp296_ = g_strconcat ("_", _tmp295_, NULL);
-                       _tmp297_ = _tmp296_;
-                       _tmp298_ = g_strconcat (_tmp297_, "dbus_arg_info_", NULL);
-                       _tmp299_ = _tmp298_;
-                       _tmp300_ = m;
-                       _tmp301_ = vala_symbol_get_name ((ValaSymbol*) _tmp300_);
-                       _tmp302_ = _tmp301_;
-                       _tmp303_ = g_strconcat (_tmp299_, _tmp302_, NULL);
-                       _tmp304_ = _tmp303_;
-                       _tmp305_ = g_strconcat (_tmp304_, "_in", NULL);
-                       _tmp306_ = _tmp305_;
-                       _tmp307_ = vala_ccode_identifier_new (_tmp306_);
-                       _tmp308_ = _tmp307_;
-                       _tmp309_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp308_);
-                       _tmp310_ = _tmp309_;
-                       _tmp311_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp310_, "GDBusArgInfo **");
-                       _tmp312_ = _tmp311_;
-                       vala_ccode_initializer_list_append (_tmp292_, (ValaCCodeExpression*) _tmp312_);
-                       _vala_ccode_node_unref0 (_tmp312_);
-                       _vala_ccode_node_unref0 (_tmp310_);
-                       _vala_ccode_node_unref0 (_tmp308_);
-                       _g_free0 (_tmp306_);
-                       _g_free0 (_tmp304_);
-                       _g_free0 (_tmp299_);
-                       _g_free0 (_tmp297_);
-                       _g_free0 (_tmp295_);
-                       _tmp313_ = info;
-                       _tmp314_ = sym;
-                       _tmp315_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp314_);
-                       _tmp316_ = _tmp315_;
-                       _tmp317_ = g_strconcat ("_", _tmp316_, NULL);
-                       _tmp318_ = _tmp317_;
-                       _tmp319_ = g_strconcat (_tmp318_, "dbus_arg_info_", NULL);
-                       _tmp320_ = _tmp319_;
-                       _tmp321_ = m;
-                       _tmp322_ = vala_symbol_get_name ((ValaSymbol*) _tmp321_);
-                       _tmp323_ = _tmp322_;
-                       _tmp324_ = g_strconcat (_tmp320_, _tmp323_, NULL);
-                       _tmp325_ = _tmp324_;
-                       _tmp326_ = g_strconcat (_tmp325_, "_out", NULL);
-                       _tmp327_ = _tmp326_;
-                       _tmp328_ = vala_ccode_identifier_new (_tmp327_);
-                       _tmp329_ = _tmp328_;
-                       _tmp330_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp329_);
-                       _tmp331_ = _tmp330_;
-                       _tmp332_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp331_, "GDBusArgInfo **");
-                       _tmp333_ = _tmp332_;
-                       vala_ccode_initializer_list_append (_tmp313_, (ValaCCodeExpression*) _tmp333_);
-                       _vala_ccode_node_unref0 (_tmp333_);
-                       _vala_ccode_node_unref0 (_tmp331_);
-                       _vala_ccode_node_unref0 (_tmp329_);
-                       _g_free0 (_tmp327_);
-                       _g_free0 (_tmp325_);
-                       _g_free0 (_tmp320_);
-                       _g_free0 (_tmp318_);
-                       _g_free0 (_tmp316_);
-                       _tmp334_ = vala_ccode_declaration_new ("const GDBusMethodInfo");
-                       _vala_ccode_node_unref0 (_cdecl_);
-                       _cdecl_ = _tmp334_;
-                       _tmp335_ = _cdecl_;
-                       _tmp336_ = sym;
-                       _tmp337_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp336_);
-                       _tmp338_ = _tmp337_;
-                       _tmp339_ = g_strconcat ("_", _tmp338_, NULL);
-                       _tmp340_ = _tmp339_;
-                       _tmp341_ = g_strconcat (_tmp340_, "dbus_method_info_", NULL);
-                       _tmp342_ = _tmp341_;
-                       _tmp343_ = m;
-                       _tmp344_ = vala_symbol_get_name ((ValaSymbol*) _tmp343_);
-                       _tmp345_ = _tmp344_;
-                       _tmp346_ = g_strconcat (_tmp342_, _tmp345_, NULL);
-                       _tmp347_ = _tmp346_;
-                       _tmp348_ = info;
-                       _tmp349_ = vala_ccode_variable_declarator_new (_tmp347_, (ValaCCodeExpression*) _tmp348_, NULL);
-                       _tmp350_ = _tmp349_;
-                       vala_ccode_declaration_add_declarator (_tmp335_, (ValaCCodeDeclarator*) _tmp350_);
-                       _vala_ccode_node_unref0 (_tmp350_);
-                       _g_free0 (_tmp347_);
-                       _g_free0 (_tmp342_);
-                       _g_free0 (_tmp340_);
-                       _g_free0 (_tmp338_);
-                       _tmp351_ = _cdecl_;
-                       vala_ccode_declaration_set_modifiers (_tmp351_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp352_ = ((ValaCCodeBaseModule*) self)->cfile;
-                       _tmp353_ = _cdecl_;
-                       vala_ccode_file_add_constant_declaration (_tmp352_, (ValaCCodeNode*) _tmp353_);
-                       _tmp354_ = infos;
-                       _tmp355_ = sym;
-                       _tmp356_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp355_);
-                       _tmp357_ = _tmp356_;
-                       _tmp358_ = g_strconcat ("_", _tmp357_, NULL);
-                       _tmp359_ = _tmp358_;
-                       _tmp360_ = g_strconcat (_tmp359_, "dbus_method_info_", NULL);
-                       _tmp361_ = _tmp360_;
-                       _tmp362_ = m;
-                       _tmp363_ = vala_symbol_get_name ((ValaSymbol*) _tmp362_);
-                       _tmp364_ = _tmp363_;
-                       _tmp365_ = g_strconcat (_tmp361_, _tmp364_, NULL);
-                       _tmp366_ = _tmp365_;
-                       _tmp367_ = vala_ccode_identifier_new (_tmp366_);
-                       _tmp368_ = _tmp367_;
-                       _tmp369_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp368_);
-                       _tmp370_ = _tmp369_;
-                       vala_ccode_initializer_list_append (_tmp354_, (ValaCCodeExpression*) _tmp370_);
-                       _vala_ccode_node_unref0 (_tmp370_);
-                       _vala_ccode_node_unref0 (_tmp368_);
-                       _g_free0 (_tmp366_);
-                       _g_free0 (_tmp361_);
-                       _g_free0 (_tmp359_);
-                       _g_free0 (_tmp357_);
-                       _vala_ccode_node_unref0 (info);
-                       _vala_ccode_node_unref0 (_cdecl_);
-                       _vala_ccode_node_unref0 (out_args_info);
-                       _vala_ccode_node_unref0 (in_args_info);
-                       _vala_code_node_unref0 (m);
-               }
-               _vala_iterable_unref0 (_m_list);
-       }
-       _tmp371_ = infos;
-       _tmp372_ = vala_ccode_constant_new ("NULL");
-       _tmp373_ = _tmp372_;
-       vala_ccode_initializer_list_append (_tmp371_, (ValaCCodeExpression*) _tmp373_);
-       _vala_ccode_node_unref0 (_tmp373_);
-       _tmp374_ = vala_ccode_declaration_new ("const GDBusMethodInfo * const");
-       _cdecl_ = _tmp374_;
-       _tmp375_ = sym;
-       _tmp376_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp375_);
-       _tmp377_ = _tmp376_;
-       _tmp378_ = g_strconcat ("_", _tmp377_, NULL);
-       _tmp379_ = _tmp378_;
-       _tmp380_ = g_strconcat (_tmp379_, "dbus_method_info[]", NULL);
-       _tmp381_ = _tmp380_;
-       _tmp382_ = infos;
-       _tmp383_ = vala_ccode_variable_declarator_new (_tmp381_, (ValaCCodeExpression*) _tmp382_, NULL);
-       _tmp384_ = _tmp383_;
-       vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp384_);
-       _vala_ccode_node_unref0 (_tmp384_);
-       _g_free0 (_tmp381_);
-       _g_free0 (_tmp379_);
-       _g_free0 (_tmp377_);
-       vala_ccode_declaration_set_modifiers (_cdecl_, VALA_CCODE_MODIFIERS_STATIC);
-       _tmp385_ = ((ValaCCodeBaseModule*) self)->cfile;
-       vala_ccode_file_add_constant_declaration (_tmp385_, (ValaCCodeNode*) _cdecl_);
-       _tmp386_ = sym;
-       _tmp387_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp386_);
-       _tmp388_ = _tmp387_;
-       _tmp389_ = g_strconcat ("_", _tmp388_, NULL);
-       _tmp390_ = _tmp389_;
-       _tmp391_ = g_strconcat (_tmp390_, "dbus_method_info", NULL);
-       _tmp392_ = _tmp391_;
-       _tmp393_ = vala_ccode_identifier_new (_tmp392_);
-       _tmp394_ = (ValaCCodeExpression*) _tmp393_;
-       _g_free0 (_tmp392_);
-       _g_free0 (_tmp390_);
-       _g_free0 (_tmp388_);
-       result = _tmp394_;
-       _vala_ccode_node_unref0 (_cdecl_);
-       _vala_ccode_node_unref0 (infos);
-       return result;
-}
-
-
-static ValaCCodeExpression* vala_gd_bus_server_module_get_signal_info (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym) {
-       ValaCCodeExpression* result = NULL;
-       ValaCCodeInitializerList* infos = NULL;
-       ValaCCodeInitializerList* _tmp0_ = NULL;
-       ValaCCodeInitializerList* _tmp196_ = NULL;
-       ValaCCodeConstant* _tmp197_ = NULL;
-       ValaCCodeConstant* _tmp198_ = NULL;
-       ValaCCodeDeclaration* _cdecl_ = NULL;
-       ValaCCodeDeclaration* _tmp199_ = NULL;
-       ValaObjectTypeSymbol* _tmp200_ = NULL;
-       gchar* _tmp201_ = NULL;
-       gchar* _tmp202_ = NULL;
-       gchar* _tmp203_ = NULL;
-       gchar* _tmp204_ = NULL;
-       gchar* _tmp205_ = NULL;
-       gchar* _tmp206_ = NULL;
-       ValaCCodeInitializerList* _tmp207_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp208_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp209_ = NULL;
-       ValaCCodeFile* _tmp210_ = NULL;
-       ValaObjectTypeSymbol* _tmp211_ = NULL;
-       gchar* _tmp212_ = NULL;
-       gchar* _tmp213_ = NULL;
-       gchar* _tmp214_ = NULL;
-       gchar* _tmp215_ = NULL;
-       gchar* _tmp216_ = NULL;
-       gchar* _tmp217_ = NULL;
-       ValaCCodeIdentifier* _tmp218_ = NULL;
-       ValaCCodeExpression* _tmp219_ = NULL;
-       g_return_val_if_fail (self != NULL, NULL);
-       g_return_val_if_fail (sym != NULL, NULL);
-       _tmp0_ = vala_ccode_initializer_list_new ();
-       infos = _tmp0_;
-       {
-               ValaList* _sig_list = NULL;
-               ValaObjectTypeSymbol* _tmp1_ = NULL;
-               ValaList* _tmp2_ = NULL;
-               gint _sig_size = 0;
-               ValaList* _tmp3_ = NULL;
-               gint _tmp4_ = 0;
-               gint _tmp5_ = 0;
-               gint _sig_index = 0;
-               _tmp1_ = sym;
-               _tmp2_ = vala_object_type_symbol_get_signals (_tmp1_);
-               _sig_list = _tmp2_;
-               _tmp3_ = _sig_list;
-               _tmp4_ = vala_collection_get_size ((ValaCollection*) _tmp3_);
-               _tmp5_ = _tmp4_;
-               _sig_size = _tmp5_;
-               _sig_index = -1;
-               while (TRUE) {
-                       gint _tmp6_ = 0;
-                       gint _tmp7_ = 0;
-                       gint _tmp8_ = 0;
-                       ValaSignal* sig = NULL;
-                       ValaList* _tmp9_ = NULL;
-                       gint _tmp10_ = 0;
-                       gpointer _tmp11_ = NULL;
-                       ValaSignal* _tmp12_ = NULL;
-                       ValaSymbolAccessibility _tmp13_ = 0;
-                       ValaSymbolAccessibility _tmp14_ = 0;
-                       ValaSignal* _tmp15_ = NULL;
-                       gboolean _tmp16_ = FALSE;
-                       ValaCCodeInitializerList* args_info = NULL;
-                       ValaCCodeInitializerList* _tmp17_ = NULL;
-                       ValaCCodeInitializerList* _tmp103_ = NULL;
-                       ValaCCodeConstant* _tmp104_ = NULL;
-                       ValaCCodeConstant* _tmp105_ = NULL;
-                       ValaCCodeDeclaration* _cdecl_ = NULL;
-                       ValaCCodeDeclaration* _tmp106_ = NULL;
-                       ValaCCodeDeclaration* _tmp107_ = NULL;
-                       ValaObjectTypeSymbol* _tmp108_ = NULL;
-                       gchar* _tmp109_ = NULL;
-                       gchar* _tmp110_ = NULL;
-                       gchar* _tmp111_ = NULL;
-                       gchar* _tmp112_ = NULL;
-                       gchar* _tmp113_ = NULL;
-                       gchar* _tmp114_ = NULL;
-                       ValaSignal* _tmp115_ = NULL;
-                       gchar* _tmp116_ = NULL;
-                       gchar* _tmp117_ = NULL;
-                       gchar* _tmp118_ = NULL;
-                       gchar* _tmp119_ = NULL;
-                       gchar* _tmp120_ = NULL;
-                       gchar* _tmp121_ = NULL;
-                       ValaCCodeInitializerList* _tmp122_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp123_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp124_ = NULL;
-                       ValaCCodeDeclaration* _tmp125_ = NULL;
-                       ValaCCodeFile* _tmp126_ = NULL;
-                       ValaCCodeDeclaration* _tmp127_ = NULL;
-                       ValaCCodeInitializerList* info = NULL;
-                       ValaCCodeInitializerList* _tmp128_ = NULL;
-                       ValaCCodeInitializerList* _tmp129_ = NULL;
-                       ValaCCodeConstant* _tmp130_ = NULL;
-                       ValaCCodeConstant* _tmp131_ = NULL;
-                       ValaCCodeInitializerList* _tmp132_ = NULL;
-                       ValaSignal* _tmp133_ = NULL;
-                       gchar* _tmp134_ = NULL;
-                       gchar* _tmp135_ = NULL;
-                       gchar* _tmp136_ = NULL;
-                       gchar* _tmp137_ = NULL;
-                       ValaCCodeConstant* _tmp138_ = NULL;
-                       ValaCCodeConstant* _tmp139_ = NULL;
-                       ValaCCodeInitializerList* _tmp140_ = NULL;
-                       ValaObjectTypeSymbol* _tmp141_ = NULL;
-                       gchar* _tmp142_ = NULL;
-                       gchar* _tmp143_ = NULL;
-                       gchar* _tmp144_ = NULL;
-                       gchar* _tmp145_ = NULL;
-                       gchar* _tmp146_ = NULL;
-                       gchar* _tmp147_ = NULL;
-                       ValaSignal* _tmp148_ = NULL;
-                       gchar* _tmp149_ = NULL;
-                       gchar* _tmp150_ = NULL;
-                       gchar* _tmp151_ = NULL;
-                       gchar* _tmp152_ = NULL;
-                       ValaCCodeIdentifier* _tmp153_ = NULL;
-                       ValaCCodeIdentifier* _tmp154_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp155_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp156_ = NULL;
-                       ValaCCodeCastExpression* _tmp157_ = NULL;
-                       ValaCCodeCastExpression* _tmp158_ = NULL;
-                       ValaCCodeDeclaration* _tmp159_ = NULL;
-                       ValaCCodeDeclaration* _tmp160_ = NULL;
-                       ValaObjectTypeSymbol* _tmp161_ = NULL;
-                       gchar* _tmp162_ = NULL;
-                       gchar* _tmp163_ = NULL;
-                       gchar* _tmp164_ = NULL;
-                       gchar* _tmp165_ = NULL;
-                       gchar* _tmp166_ = NULL;
-                       gchar* _tmp167_ = NULL;
-                       ValaSignal* _tmp168_ = NULL;
-                       gchar* _tmp169_ = NULL;
-                       gchar* _tmp170_ = NULL;
-                       gchar* _tmp171_ = NULL;
-                       gchar* _tmp172_ = NULL;
-                       ValaCCodeInitializerList* _tmp173_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp174_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp175_ = NULL;
-                       ValaCCodeDeclaration* _tmp176_ = NULL;
-                       ValaCCodeFile* _tmp177_ = NULL;
-                       ValaCCodeDeclaration* _tmp178_ = NULL;
-                       ValaCCodeInitializerList* _tmp179_ = NULL;
-                       ValaObjectTypeSymbol* _tmp180_ = NULL;
-                       gchar* _tmp181_ = NULL;
-                       gchar* _tmp182_ = NULL;
-                       gchar* _tmp183_ = NULL;
-                       gchar* _tmp184_ = NULL;
-                       gchar* _tmp185_ = NULL;
-                       gchar* _tmp186_ = NULL;
-                       ValaSignal* _tmp187_ = NULL;
-                       gchar* _tmp188_ = NULL;
-                       gchar* _tmp189_ = NULL;
-                       gchar* _tmp190_ = NULL;
-                       gchar* _tmp191_ = NULL;
-                       ValaCCodeIdentifier* _tmp192_ = NULL;
-                       ValaCCodeIdentifier* _tmp193_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp194_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp195_ = NULL;
-                       _tmp6_ = _sig_index;
-                       _sig_index = _tmp6_ + 1;
-                       _tmp7_ = _sig_index;
-                       _tmp8_ = _sig_size;
-                       if (!(_tmp7_ < _tmp8_)) {
-                               break;
-                       }
-                       _tmp9_ = _sig_list;
-                       _tmp10_ = _sig_index;
-                       _tmp11_ = vala_list_get (_tmp9_, _tmp10_);
-                       sig = (ValaSignal*) _tmp11_;
-                       _tmp12_ = sig;
-                       _tmp13_ = vala_symbol_get_access ((ValaSymbol*) _tmp12_);
-                       _tmp14_ = _tmp13_;
-                       if (_tmp14_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC) {
-                               _vala_code_node_unref0 (sig);
-                               continue;
-                       }
-                       _tmp15_ = sig;
-                       _tmp16_ = vala_gd_bus_server_module_is_dbus_visible ((ValaCodeNode*) _tmp15_);
-                       if (!_tmp16_) {
-                               _vala_code_node_unref0 (sig);
-                               continue;
-                       }
-                       _tmp17_ = vala_ccode_initializer_list_new ();
-                       args_info = _tmp17_;
-                       {
-                               ValaList* _param_list = NULL;
-                               ValaSignal* _tmp18_ = NULL;
-                               ValaList* _tmp19_ = NULL;
-                               gint _param_size = 0;
-                               ValaList* _tmp20_ = NULL;
-                               gint _tmp21_ = 0;
-                               gint _tmp22_ = 0;
-                               gint _param_index = 0;
-                               _tmp18_ = sig;
-                               _tmp19_ = vala_signal_get_parameters (_tmp18_);
-                               _param_list = _tmp19_;
-                               _tmp20_ = _param_list;
-                               _tmp21_ = vala_collection_get_size ((ValaCollection*) _tmp20_);
-                               _tmp22_ = _tmp21_;
-                               _param_size = _tmp22_;
-                               _param_index = -1;
-                               while (TRUE) {
-                                       gint _tmp23_ = 0;
-                                       gint _tmp24_ = 0;
-                                       gint _tmp25_ = 0;
-                                       ValaParameter* param = NULL;
-                                       ValaList* _tmp26_ = NULL;
-                                       gint _tmp27_ = 0;
-                                       gpointer _tmp28_ = NULL;
-                                       ValaCCodeInitializerList* info = NULL;
-                                       ValaCCodeInitializerList* _tmp29_ = NULL;
-                                       ValaCCodeInitializerList* _tmp30_ = NULL;
-                                       ValaCCodeConstant* _tmp31_ = NULL;
-                                       ValaCCodeConstant* _tmp32_ = NULL;
-                                       ValaCCodeInitializerList* _tmp33_ = NULL;
-                                       ValaParameter* _tmp34_ = NULL;
-                                       const gchar* _tmp35_ = NULL;
-                                       const gchar* _tmp36_ = NULL;
-                                       gchar* _tmp37_ = NULL;
-                                       gchar* _tmp38_ = NULL;
-                                       ValaCCodeConstant* _tmp39_ = NULL;
-                                       ValaCCodeConstant* _tmp40_ = NULL;
-                                       ValaCCodeInitializerList* _tmp41_ = NULL;
-                                       ValaParameter* _tmp42_ = NULL;
-                                       ValaDataType* _tmp43_ = NULL;
-                                       ValaDataType* _tmp44_ = NULL;
-                                       ValaParameter* _tmp45_ = NULL;
-                                       gchar* _tmp46_ = NULL;
-                                       gchar* _tmp47_ = NULL;
-                                       gchar* _tmp48_ = NULL;
-                                       gchar* _tmp49_ = NULL;
-                                       ValaCCodeConstant* _tmp50_ = NULL;
-                                       ValaCCodeConstant* _tmp51_ = NULL;
-                                       ValaCCodeDeclaration* _cdecl_ = NULL;
-                                       ValaCCodeDeclaration* _tmp52_ = NULL;
-                                       ValaCCodeDeclaration* _tmp53_ = NULL;
-                                       ValaObjectTypeSymbol* _tmp54_ = NULL;
-                                       gchar* _tmp55_ = NULL;
-                                       gchar* _tmp56_ = NULL;
-                                       gchar* _tmp57_ = NULL;
-                                       gchar* _tmp58_ = NULL;
-                                       gchar* _tmp59_ = NULL;
-                                       gchar* _tmp60_ = NULL;
-                                       ValaSignal* _tmp61_ = NULL;
-                                       gchar* _tmp62_ = NULL;
-                                       gchar* _tmp63_ = NULL;
-                                       gchar* _tmp64_ = NULL;
-                                       gchar* _tmp65_ = NULL;
-                                       gchar* _tmp66_ = NULL;
-                                       gchar* _tmp67_ = NULL;
-                                       ValaParameter* _tmp68_ = NULL;
-                                       const gchar* _tmp69_ = NULL;
-                                       const gchar* _tmp70_ = NULL;
-                                       gchar* _tmp71_ = NULL;
-                                       gchar* _tmp72_ = NULL;
-                                       ValaCCodeInitializerList* _tmp73_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp74_ = NULL;
-                                       ValaCCodeVariableDeclarator* _tmp75_ = NULL;
-                                       ValaCCodeDeclaration* _tmp76_ = NULL;
-                                       ValaCCodeFile* _tmp77_ = NULL;
-                                       ValaCCodeDeclaration* _tmp78_ = NULL;
-                                       ValaCCodeInitializerList* _tmp79_ = NULL;
-                                       ValaObjectTypeSymbol* _tmp80_ = NULL;
-                                       gchar* _tmp81_ = NULL;
-                                       gchar* _tmp82_ = NULL;
-                                       gchar* _tmp83_ = NULL;
-                                       gchar* _tmp84_ = NULL;
-                                       gchar* _tmp85_ = NULL;
-                                       gchar* _tmp86_ = NULL;
-                                       ValaSignal* _tmp87_ = NULL;
-                                       gchar* _tmp88_ = NULL;
-                                       gchar* _tmp89_ = NULL;
-                                       gchar* _tmp90_ = NULL;
-                                       gchar* _tmp91_ = NULL;
-                                       gchar* _tmp92_ = NULL;
-                                       gchar* _tmp93_ = NULL;
-                                       ValaParameter* _tmp94_ = NULL;
-                                       const gchar* _tmp95_ = NULL;
-                                       const gchar* _tmp96_ = NULL;
-                                       gchar* _tmp97_ = NULL;
-                                       gchar* _tmp98_ = NULL;
-                                       ValaCCodeIdentifier* _tmp99_ = NULL;
-                                       ValaCCodeIdentifier* _tmp100_ = NULL;
-                                       ValaCCodeUnaryExpression* _tmp101_ = NULL;
-                                       ValaCCodeUnaryExpression* _tmp102_ = NULL;
-                                       _tmp23_ = _param_index;
-                                       _param_index = _tmp23_ + 1;
-                                       _tmp24_ = _param_index;
-                                       _tmp25_ = _param_size;
-                                       if (!(_tmp24_ < _tmp25_)) {
-                                               break;
-                                       }
-                                       _tmp26_ = _param_list;
-                                       _tmp27_ = _param_index;
-                                       _tmp28_ = vala_list_get (_tmp26_, _tmp27_);
-                                       param = (ValaParameter*) _tmp28_;
-                                       _tmp29_ = vala_ccode_initializer_list_new ();
-                                       info = _tmp29_;
-                                       _tmp30_ = info;
-                                       _tmp31_ = vala_ccode_constant_new ("-1");
-                                       _tmp32_ = _tmp31_;
-                                       vala_ccode_initializer_list_append (_tmp30_, (ValaCCodeExpression*) _tmp32_);
-                                       _vala_ccode_node_unref0 (_tmp32_);
-                                       _tmp33_ = info;
-                                       _tmp34_ = param;
-                                       _tmp35_ = vala_symbol_get_name ((ValaSymbol*) _tmp34_);
-                                       _tmp36_ = _tmp35_;
-                                       _tmp37_ = g_strdup_printf ("\"%s\"", _tmp36_);
-                                       _tmp38_ = _tmp37_;
-                                       _tmp39_ = vala_ccode_constant_new (_tmp38_);
-                                       _tmp40_ = _tmp39_;
-                                       vala_ccode_initializer_list_append (_tmp33_, (ValaCCodeExpression*) _tmp40_);
-                                       _vala_ccode_node_unref0 (_tmp40_);
-                                       _g_free0 (_tmp38_);
-                                       _tmp41_ = info;
-                                       _tmp42_ = param;
-                                       _tmp43_ = vala_variable_get_variable_type ((ValaVariable*) _tmp42_);
-                                       _tmp44_ = _tmp43_;
-                                       _tmp45_ = param;
-                                       _tmp46_ = vala_gvariant_module_get_type_signature (_tmp44_, (ValaSymbol*) _tmp45_);
-                                       _tmp47_ = _tmp46_;
-                                       _tmp48_ = g_strdup_printf ("\"%s\"", _tmp47_);
-                                       _tmp49_ = _tmp48_;
-                                       _tmp50_ = vala_ccode_constant_new (_tmp49_);
-                                       _tmp51_ = _tmp50_;
-                                       vala_ccode_initializer_list_append (_tmp41_, (ValaCCodeExpression*) _tmp51_);
-                                       _vala_ccode_node_unref0 (_tmp51_);
-                                       _g_free0 (_tmp49_);
-                                       _g_free0 (_tmp47_);
-                                       _tmp52_ = vala_ccode_declaration_new ("const GDBusArgInfo");
-                                       _cdecl_ = _tmp52_;
-                                       _tmp53_ = _cdecl_;
-                                       _tmp54_ = sym;
-                                       _tmp55_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp54_);
-                                       _tmp56_ = _tmp55_;
-                                       _tmp57_ = g_strconcat ("_", _tmp56_, NULL);
-                                       _tmp58_ = _tmp57_;
-                                       _tmp59_ = g_strconcat (_tmp58_, "dbus_arg_info_", NULL);
-                                       _tmp60_ = _tmp59_;
-                                       _tmp61_ = sig;
-                                       _tmp62_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp61_);
-                                       _tmp63_ = _tmp62_;
-                                       _tmp64_ = g_strconcat (_tmp60_, _tmp63_, NULL);
-                                       _tmp65_ = _tmp64_;
-                                       _tmp66_ = g_strconcat (_tmp65_, "_", NULL);
-                                       _tmp67_ = _tmp66_;
-                                       _tmp68_ = param;
-                                       _tmp69_ = vala_symbol_get_name ((ValaSymbol*) _tmp68_);
-                                       _tmp70_ = _tmp69_;
-                                       _tmp71_ = g_strconcat (_tmp67_, _tmp70_, NULL);
-                                       _tmp72_ = _tmp71_;
-                                       _tmp73_ = info;
-                                       _tmp74_ = vala_ccode_variable_declarator_new (_tmp72_, (ValaCCodeExpression*) _tmp73_, NULL);
-                                       _tmp75_ = _tmp74_;
-                                       vala_ccode_declaration_add_declarator (_tmp53_, (ValaCCodeDeclarator*) _tmp75_);
-                                       _vala_ccode_node_unref0 (_tmp75_);
-                                       _g_free0 (_tmp72_);
-                                       _g_free0 (_tmp67_);
-                                       _g_free0 (_tmp65_);
-                                       _g_free0 (_tmp63_);
-                                       _g_free0 (_tmp60_);
-                                       _g_free0 (_tmp58_);
-                                       _g_free0 (_tmp56_);
-                                       _tmp76_ = _cdecl_;
-                                       vala_ccode_declaration_set_modifiers (_tmp76_, VALA_CCODE_MODIFIERS_STATIC);
-                                       _tmp77_ = ((ValaCCodeBaseModule*) self)->cfile;
-                                       _tmp78_ = _cdecl_;
-                                       vala_ccode_file_add_constant_declaration (_tmp77_, (ValaCCodeNode*) _tmp78_);
-                                       _tmp79_ = args_info;
-                                       _tmp80_ = sym;
-                                       _tmp81_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp80_);
-                                       _tmp82_ = _tmp81_;
-                                       _tmp83_ = g_strconcat ("_", _tmp82_, NULL);
-                                       _tmp84_ = _tmp83_;
-                                       _tmp85_ = g_strconcat (_tmp84_, "dbus_arg_info_", NULL);
-                                       _tmp86_ = _tmp85_;
-                                       _tmp87_ = sig;
-                                       _tmp88_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp87_);
-                                       _tmp89_ = _tmp88_;
-                                       _tmp90_ = g_strconcat (_tmp86_, _tmp89_, NULL);
-                                       _tmp91_ = _tmp90_;
-                                       _tmp92_ = g_strconcat (_tmp91_, "_", NULL);
-                                       _tmp93_ = _tmp92_;
-                                       _tmp94_ = param;
-                                       _tmp95_ = vala_symbol_get_name ((ValaSymbol*) _tmp94_);
-                                       _tmp96_ = _tmp95_;
-                                       _tmp97_ = g_strconcat (_tmp93_, _tmp96_, NULL);
-                                       _tmp98_ = _tmp97_;
-                                       _tmp99_ = vala_ccode_identifier_new (_tmp98_);
-                                       _tmp100_ = _tmp99_;
-                                       _tmp101_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp100_);
-                                       _tmp102_ = _tmp101_;
-                                       vala_ccode_initializer_list_append (_tmp79_, (ValaCCodeExpression*) _tmp102_);
-                                       _vala_ccode_node_unref0 (_tmp102_);
-                                       _vala_ccode_node_unref0 (_tmp100_);
-                                       _g_free0 (_tmp98_);
-                                       _g_free0 (_tmp93_);
-                                       _g_free0 (_tmp91_);
-                                       _g_free0 (_tmp89_);
-                                       _g_free0 (_tmp86_);
-                                       _g_free0 (_tmp84_);
-                                       _g_free0 (_tmp82_);
-                                       _vala_ccode_node_unref0 (_cdecl_);
-                                       _vala_ccode_node_unref0 (info);
-                                       _vala_code_node_unref0 (param);
-                               }
-                               _vala_iterable_unref0 (_param_list);
-                       }
-                       _tmp103_ = args_info;
-                       _tmp104_ = vala_ccode_constant_new ("NULL");
-                       _tmp105_ = _tmp104_;
-                       vala_ccode_initializer_list_append (_tmp103_, (ValaCCodeExpression*) _tmp105_);
-                       _vala_ccode_node_unref0 (_tmp105_);
-                       _tmp106_ = vala_ccode_declaration_new ("const GDBusArgInfo * const");
-                       _cdecl_ = _tmp106_;
-                       _tmp107_ = _cdecl_;
-                       _tmp108_ = sym;
-                       _tmp109_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp108_);
-                       _tmp110_ = _tmp109_;
-                       _tmp111_ = g_strconcat ("_", _tmp110_, NULL);
-                       _tmp112_ = _tmp111_;
-                       _tmp113_ = g_strconcat (_tmp112_, "dbus_arg_info_", NULL);
-                       _tmp114_ = _tmp113_;
-                       _tmp115_ = sig;
-                       _tmp116_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp115_);
-                       _tmp117_ = _tmp116_;
-                       _tmp118_ = g_strconcat (_tmp114_, _tmp117_, NULL);
-                       _tmp119_ = _tmp118_;
-                       _tmp120_ = g_strconcat (_tmp119_, "[]", NULL);
-                       _tmp121_ = _tmp120_;
-                       _tmp122_ = args_info;
-                       _tmp123_ = vala_ccode_variable_declarator_new (_tmp121_, (ValaCCodeExpression*) _tmp122_, NULL);
-                       _tmp124_ = _tmp123_;
-                       vala_ccode_declaration_add_declarator (_tmp107_, (ValaCCodeDeclarator*) _tmp124_);
-                       _vala_ccode_node_unref0 (_tmp124_);
-                       _g_free0 (_tmp121_);
-                       _g_free0 (_tmp119_);
-                       _g_free0 (_tmp117_);
-                       _g_free0 (_tmp114_);
-                       _g_free0 (_tmp112_);
-                       _g_free0 (_tmp110_);
-                       _tmp125_ = _cdecl_;
-                       vala_ccode_declaration_set_modifiers (_tmp125_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp126_ = ((ValaCCodeBaseModule*) self)->cfile;
-                       _tmp127_ = _cdecl_;
-                       vala_ccode_file_add_constant_declaration (_tmp126_, (ValaCCodeNode*) _tmp127_);
-                       _tmp128_ = vala_ccode_initializer_list_new ();
-                       info = _tmp128_;
-                       _tmp129_ = info;
-                       _tmp130_ = vala_ccode_constant_new ("-1");
-                       _tmp131_ = _tmp130_;
-                       vala_ccode_initializer_list_append (_tmp129_, (ValaCCodeExpression*) _tmp131_);
-                       _vala_ccode_node_unref0 (_tmp131_);
-                       _tmp132_ = info;
-                       _tmp133_ = sig;
-                       _tmp134_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp133_);
-                       _tmp135_ = _tmp134_;
-                       _tmp136_ = g_strdup_printf ("\"%s\"", _tmp135_);
-                       _tmp137_ = _tmp136_;
-                       _tmp138_ = vala_ccode_constant_new (_tmp137_);
-                       _tmp139_ = _tmp138_;
-                       vala_ccode_initializer_list_append (_tmp132_, (ValaCCodeExpression*) _tmp139_);
-                       _vala_ccode_node_unref0 (_tmp139_);
-                       _g_free0 (_tmp137_);
-                       _g_free0 (_tmp135_);
-                       _tmp140_ = info;
-                       _tmp141_ = sym;
-                       _tmp142_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp141_);
-                       _tmp143_ = _tmp142_;
-                       _tmp144_ = g_strconcat ("_", _tmp143_, NULL);
-                       _tmp145_ = _tmp144_;
-                       _tmp146_ = g_strconcat (_tmp145_, "dbus_arg_info_", NULL);
-                       _tmp147_ = _tmp146_;
-                       _tmp148_ = sig;
-                       _tmp149_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp148_);
-                       _tmp150_ = _tmp149_;
-                       _tmp151_ = g_strconcat (_tmp147_, _tmp150_, NULL);
-                       _tmp152_ = _tmp151_;
-                       _tmp153_ = vala_ccode_identifier_new (_tmp152_);
-                       _tmp154_ = _tmp153_;
-                       _tmp155_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp154_);
-                       _tmp156_ = _tmp155_;
-                       _tmp157_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp156_, "GDBusArgInfo **");
-                       _tmp158_ = _tmp157_;
-                       vala_ccode_initializer_list_append (_tmp140_, (ValaCCodeExpression*) _tmp158_);
-                       _vala_ccode_node_unref0 (_tmp158_);
-                       _vala_ccode_node_unref0 (_tmp156_);
-                       _vala_ccode_node_unref0 (_tmp154_);
-                       _g_free0 (_tmp152_);
-                       _g_free0 (_tmp150_);
-                       _g_free0 (_tmp147_);
-                       _g_free0 (_tmp145_);
-                       _g_free0 (_tmp143_);
-                       _tmp159_ = vala_ccode_declaration_new ("const GDBusSignalInfo");
-                       _vala_ccode_node_unref0 (_cdecl_);
-                       _cdecl_ = _tmp159_;
-                       _tmp160_ = _cdecl_;
-                       _tmp161_ = sym;
-                       _tmp162_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp161_);
-                       _tmp163_ = _tmp162_;
-                       _tmp164_ = g_strconcat ("_", _tmp163_, NULL);
-                       _tmp165_ = _tmp164_;
-                       _tmp166_ = g_strconcat (_tmp165_, "dbus_signal_info_", NULL);
-                       _tmp167_ = _tmp166_;
-                       _tmp168_ = sig;
-                       _tmp169_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp168_);
-                       _tmp170_ = _tmp169_;
-                       _tmp171_ = g_strconcat (_tmp167_, _tmp170_, NULL);
-                       _tmp172_ = _tmp171_;
-                       _tmp173_ = info;
-                       _tmp174_ = vala_ccode_variable_declarator_new (_tmp172_, (ValaCCodeExpression*) _tmp173_, NULL);
-                       _tmp175_ = _tmp174_;
-                       vala_ccode_declaration_add_declarator (_tmp160_, (ValaCCodeDeclarator*) _tmp175_);
-                       _vala_ccode_node_unref0 (_tmp175_);
-                       _g_free0 (_tmp172_);
-                       _g_free0 (_tmp170_);
-                       _g_free0 (_tmp167_);
-                       _g_free0 (_tmp165_);
-                       _g_free0 (_tmp163_);
-                       _tmp176_ = _cdecl_;
-                       vala_ccode_declaration_set_modifiers (_tmp176_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp177_ = ((ValaCCodeBaseModule*) self)->cfile;
-                       _tmp178_ = _cdecl_;
-                       vala_ccode_file_add_constant_declaration (_tmp177_, (ValaCCodeNode*) _tmp178_);
-                       _tmp179_ = infos;
-                       _tmp180_ = sym;
-                       _tmp181_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp180_);
-                       _tmp182_ = _tmp181_;
-                       _tmp183_ = g_strconcat ("_", _tmp182_, NULL);
-                       _tmp184_ = _tmp183_;
-                       _tmp185_ = g_strconcat (_tmp184_, "dbus_signal_info_", NULL);
-                       _tmp186_ = _tmp185_;
-                       _tmp187_ = sig;
-                       _tmp188_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp187_);
-                       _tmp189_ = _tmp188_;
-                       _tmp190_ = g_strconcat (_tmp186_, _tmp189_, NULL);
-                       _tmp191_ = _tmp190_;
-                       _tmp192_ = vala_ccode_identifier_new (_tmp191_);
-                       _tmp193_ = _tmp192_;
-                       _tmp194_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp193_);
-                       _tmp195_ = _tmp194_;
-                       vala_ccode_initializer_list_append (_tmp179_, (ValaCCodeExpression*) _tmp195_);
-                       _vala_ccode_node_unref0 (_tmp195_);
-                       _vala_ccode_node_unref0 (_tmp193_);
-                       _g_free0 (_tmp191_);
-                       _g_free0 (_tmp189_);
-                       _g_free0 (_tmp186_);
-                       _g_free0 (_tmp184_);
-                       _g_free0 (_tmp182_);
-                       _vala_ccode_node_unref0 (info);
-                       _vala_ccode_node_unref0 (_cdecl_);
-                       _vala_ccode_node_unref0 (args_info);
-                       _vala_code_node_unref0 (sig);
-               }
-               _vala_iterable_unref0 (_sig_list);
-       }
-       _tmp196_ = infos;
-       _tmp197_ = vala_ccode_constant_new ("NULL");
-       _tmp198_ = _tmp197_;
-       vala_ccode_initializer_list_append (_tmp196_, (ValaCCodeExpression*) _tmp198_);
-       _vala_ccode_node_unref0 (_tmp198_);
-       _tmp199_ = vala_ccode_declaration_new ("const GDBusSignalInfo * const");
-       _cdecl_ = _tmp199_;
-       _tmp200_ = sym;
-       _tmp201_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp200_);
-       _tmp202_ = _tmp201_;
-       _tmp203_ = g_strconcat ("_", _tmp202_, NULL);
-       _tmp204_ = _tmp203_;
-       _tmp205_ = g_strconcat (_tmp204_, "dbus_signal_info[]", NULL);
-       _tmp206_ = _tmp205_;
-       _tmp207_ = infos;
-       _tmp208_ = vala_ccode_variable_declarator_new (_tmp206_, (ValaCCodeExpression*) _tmp207_, NULL);
-       _tmp209_ = _tmp208_;
-       vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp209_);
-       _vala_ccode_node_unref0 (_tmp209_);
-       _g_free0 (_tmp206_);
-       _g_free0 (_tmp204_);
-       _g_free0 (_tmp202_);
-       vala_ccode_declaration_set_modifiers (_cdecl_, VALA_CCODE_MODIFIERS_STATIC);
-       _tmp210_ = ((ValaCCodeBaseModule*) self)->cfile;
-       vala_ccode_file_add_constant_declaration (_tmp210_, (ValaCCodeNode*) _cdecl_);
-       _tmp211_ = sym;
-       _tmp212_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp211_);
-       _tmp213_ = _tmp212_;
-       _tmp214_ = g_strconcat ("_", _tmp213_, NULL);
-       _tmp215_ = _tmp214_;
-       _tmp216_ = g_strconcat (_tmp215_, "dbus_signal_info", NULL);
-       _tmp217_ = _tmp216_;
-       _tmp218_ = vala_ccode_identifier_new (_tmp217_);
-       _tmp219_ = (ValaCCodeExpression*) _tmp218_;
-       _g_free0 (_tmp217_);
-       _g_free0 (_tmp215_);
-       _g_free0 (_tmp213_);
-       result = _tmp219_;
-       _vala_ccode_node_unref0 (_cdecl_);
-       _vala_ccode_node_unref0 (infos);
-       return result;
-}
-
-
-static ValaCCodeExpression* vala_gd_bus_server_module_get_property_info (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym) {
-       ValaCCodeExpression* result = NULL;
-       ValaCCodeInitializerList* infos = NULL;
-       ValaCCodeInitializerList* _tmp0_ = NULL;
-       ValaCCodeInitializerList* _tmp110_ = NULL;
-       ValaCCodeConstant* _tmp111_ = NULL;
-       ValaCCodeConstant* _tmp112_ = NULL;
-       ValaCCodeDeclaration* _cdecl_ = NULL;
-       ValaCCodeDeclaration* _tmp113_ = NULL;
-       ValaObjectTypeSymbol* _tmp114_ = NULL;
-       gchar* _tmp115_ = NULL;
-       gchar* _tmp116_ = NULL;
-       gchar* _tmp117_ = NULL;
-       gchar* _tmp118_ = NULL;
-       gchar* _tmp119_ = NULL;
-       gchar* _tmp120_ = NULL;
-       ValaCCodeInitializerList* _tmp121_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp122_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp123_ = NULL;
-       ValaCCodeFile* _tmp124_ = NULL;
-       ValaObjectTypeSymbol* _tmp125_ = NULL;
-       gchar* _tmp126_ = NULL;
-       gchar* _tmp127_ = NULL;
-       gchar* _tmp128_ = NULL;
-       gchar* _tmp129_ = NULL;
-       gchar* _tmp130_ = NULL;
-       gchar* _tmp131_ = NULL;
-       ValaCCodeIdentifier* _tmp132_ = NULL;
-       ValaCCodeExpression* _tmp133_ = NULL;
-       g_return_val_if_fail (self != NULL, NULL);
-       g_return_val_if_fail (sym != NULL, NULL);
-       _tmp0_ = vala_ccode_initializer_list_new ();
-       infos = _tmp0_;
-       {
-               ValaList* _prop_list = NULL;
-               ValaObjectTypeSymbol* _tmp1_ = NULL;
-               ValaList* _tmp2_ = NULL;
-               gint _prop_size = 0;
-               ValaList* _tmp3_ = NULL;
-               gint _tmp4_ = 0;
-               gint _tmp5_ = 0;
-               gint _prop_index = 0;
-               _tmp1_ = sym;
-               _tmp2_ = vala_object_type_symbol_get_properties (_tmp1_);
-               _prop_list = _tmp2_;
-               _tmp3_ = _prop_list;
-               _tmp4_ = vala_collection_get_size ((ValaCollection*) _tmp3_);
-               _tmp5_ = _tmp4_;
-               _prop_size = _tmp5_;
-               _prop_index = -1;
-               while (TRUE) {
-                       gint _tmp6_ = 0;
-                       gint _tmp7_ = 0;
-                       gint _tmp8_ = 0;
-                       ValaProperty* prop = NULL;
-                       ValaList* _tmp9_ = NULL;
-                       gint _tmp10_ = 0;
-                       gpointer _tmp11_ = NULL;
-                       gboolean _tmp12_ = FALSE;
-                       gboolean _tmp13_ = FALSE;
-                       ValaProperty* _tmp14_ = NULL;
-                       ValaMemberBinding _tmp15_ = 0;
-                       ValaMemberBinding _tmp16_ = 0;
-                       ValaProperty* _tmp23_ = NULL;
-                       gboolean _tmp24_ = FALSE;
-                       ValaCCodeInitializerList* info = NULL;
-                       ValaCCodeInitializerList* _tmp25_ = NULL;
-                       ValaCCodeInitializerList* _tmp26_ = NULL;
-                       ValaCCodeConstant* _tmp27_ = NULL;
-                       ValaCCodeConstant* _tmp28_ = NULL;
-                       ValaCCodeInitializerList* _tmp29_ = NULL;
-                       ValaProperty* _tmp30_ = NULL;
-                       gchar* _tmp31_ = NULL;
-                       gchar* _tmp32_ = NULL;
-                       gchar* _tmp33_ = NULL;
-                       gchar* _tmp34_ = NULL;
-                       ValaCCodeConstant* _tmp35_ = NULL;
-                       ValaCCodeConstant* _tmp36_ = NULL;
-                       ValaCCodeInitializerList* _tmp37_ = NULL;
-                       ValaProperty* _tmp38_ = NULL;
-                       ValaDataType* _tmp39_ = NULL;
-                       ValaDataType* _tmp40_ = NULL;
-                       ValaProperty* _tmp41_ = NULL;
-                       gchar* _tmp42_ = NULL;
-                       gchar* _tmp43_ = NULL;
-                       gchar* _tmp44_ = NULL;
-                       gchar* _tmp45_ = NULL;
-                       ValaCCodeConstant* _tmp46_ = NULL;
-                       ValaCCodeConstant* _tmp47_ = NULL;
-                       gboolean _tmp48_ = FALSE;
-                       ValaProperty* _tmp49_ = NULL;
-                       ValaPropertyAccessor* _tmp50_ = NULL;
-                       ValaPropertyAccessor* _tmp51_ = NULL;
-                       ValaCCodeDeclaration* _cdecl_ = NULL;
-                       ValaCCodeDeclaration* _tmp73_ = NULL;
-                       ValaCCodeDeclaration* _tmp74_ = NULL;
-                       ValaObjectTypeSymbol* _tmp75_ = NULL;
-                       gchar* _tmp76_ = NULL;
-                       gchar* _tmp77_ = NULL;
-                       gchar* _tmp78_ = NULL;
-                       gchar* _tmp79_ = NULL;
-                       gchar* _tmp80_ = NULL;
-                       gchar* _tmp81_ = NULL;
-                       ValaProperty* _tmp82_ = NULL;
-                       const gchar* _tmp83_ = NULL;
-                       const gchar* _tmp84_ = NULL;
-                       gchar* _tmp85_ = NULL;
-                       gchar* _tmp86_ = NULL;
-                       ValaCCodeInitializerList* _tmp87_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp88_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp89_ = NULL;
-                       ValaCCodeDeclaration* _tmp90_ = NULL;
-                       ValaCCodeFile* _tmp91_ = NULL;
-                       ValaCCodeDeclaration* _tmp92_ = NULL;
-                       ValaCCodeInitializerList* _tmp93_ = NULL;
-                       ValaObjectTypeSymbol* _tmp94_ = NULL;
-                       gchar* _tmp95_ = NULL;
-                       gchar* _tmp96_ = NULL;
-                       gchar* _tmp97_ = NULL;
-                       gchar* _tmp98_ = NULL;
-                       gchar* _tmp99_ = NULL;
-                       gchar* _tmp100_ = NULL;
-                       ValaProperty* _tmp101_ = NULL;
-                       const gchar* _tmp102_ = NULL;
-                       const gchar* _tmp103_ = NULL;
-                       gchar* _tmp104_ = NULL;
-                       gchar* _tmp105_ = NULL;
-                       ValaCCodeIdentifier* _tmp106_ = NULL;
-                       ValaCCodeIdentifier* _tmp107_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp108_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp109_ = NULL;
-                       _tmp6_ = _prop_index;
-                       _prop_index = _tmp6_ + 1;
-                       _tmp7_ = _prop_index;
-                       _tmp8_ = _prop_size;
-                       if (!(_tmp7_ < _tmp8_)) {
-                               break;
-                       }
-                       _tmp9_ = _prop_list;
-                       _tmp10_ = _prop_index;
-                       _tmp11_ = vala_list_get (_tmp9_, _tmp10_);
-                       prop = (ValaProperty*) _tmp11_;
-                       _tmp14_ = prop;
-                       _tmp15_ = vala_property_get_binding (_tmp14_);
-                       _tmp16_ = _tmp15_;
-                       if (_tmp16_ != VALA_MEMBER_BINDING_INSTANCE) {
-                               _tmp13_ = TRUE;
-                       } else {
-                               ValaProperty* _tmp17_ = NULL;
-                               gboolean _tmp18_ = FALSE;
-                               gboolean _tmp19_ = FALSE;
-                               _tmp17_ = prop;
-                               _tmp18_ = vala_property_get_overrides (_tmp17_);
-                               _tmp19_ = _tmp18_;
-                               _tmp13_ = _tmp19_;
-                       }
-                       if (_tmp13_) {
-                               _tmp12_ = TRUE;
-                       } else {
-                               ValaProperty* _tmp20_ = NULL;
-                               ValaSymbolAccessibility _tmp21_ = 0;
-                               ValaSymbolAccessibility _tmp22_ = 0;
-                               _tmp20_ = prop;
-                               _tmp21_ = vala_symbol_get_access ((ValaSymbol*) _tmp20_);
-                               _tmp22_ = _tmp21_;
-                               _tmp12_ = _tmp22_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
-                       }
-                       if (_tmp12_) {
-                               _vala_code_node_unref0 (prop);
-                               continue;
-                       }
-                       _tmp23_ = prop;
-                       _tmp24_ = vala_gd_bus_server_module_is_dbus_visible ((ValaCodeNode*) _tmp23_);
-                       if (!_tmp24_) {
-                               _vala_code_node_unref0 (prop);
-                               continue;
-                       }
-                       _tmp25_ = vala_ccode_initializer_list_new ();
-                       info = _tmp25_;
-                       _tmp26_ = info;
-                       _tmp27_ = vala_ccode_constant_new ("-1");
-                       _tmp28_ = _tmp27_;
-                       vala_ccode_initializer_list_append (_tmp26_, (ValaCCodeExpression*) _tmp28_);
-                       _vala_ccode_node_unref0 (_tmp28_);
-                       _tmp29_ = info;
-                       _tmp30_ = prop;
-                       _tmp31_ = vala_gd_bus_module_get_dbus_name_for_member ((ValaSymbol*) _tmp30_);
-                       _tmp32_ = _tmp31_;
-                       _tmp33_ = g_strdup_printf ("\"%s\"", _tmp32_);
-                       _tmp34_ = _tmp33_;
-                       _tmp35_ = vala_ccode_constant_new (_tmp34_);
-                       _tmp36_ = _tmp35_;
-                       vala_ccode_initializer_list_append (_tmp29_, (ValaCCodeExpression*) _tmp36_);
-                       _vala_ccode_node_unref0 (_tmp36_);
-                       _g_free0 (_tmp34_);
-                       _g_free0 (_tmp32_);
-                       _tmp37_ = info;
-                       _tmp38_ = prop;
-                       _tmp39_ = vala_property_get_property_type (_tmp38_);
-                       _tmp40_ = _tmp39_;
-                       _tmp41_ = prop;
-                       _tmp42_ = vala_gvariant_module_get_type_signature (_tmp40_, (ValaSymbol*) _tmp41_);
-                       _tmp43_ = _tmp42_;
-                       _tmp44_ = g_strdup_printf ("\"%s\"", _tmp43_);
-                       _tmp45_ = _tmp44_;
-                       _tmp46_ = vala_ccode_constant_new (_tmp45_);
-                       _tmp47_ = _tmp46_;
-                       vala_ccode_initializer_list_append (_tmp37_, (ValaCCodeExpression*) _tmp47_);
-                       _vala_ccode_node_unref0 (_tmp47_);
-                       _g_free0 (_tmp45_);
-                       _g_free0 (_tmp43_);
-                       _tmp49_ = prop;
-                       _tmp50_ = vala_property_get_get_accessor (_tmp49_);
-                       _tmp51_ = _tmp50_;
-                       if (_tmp51_ != NULL) {
-                               ValaProperty* _tmp52_ = NULL;
-                               ValaPropertyAccessor* _tmp53_ = NULL;
-                               ValaPropertyAccessor* _tmp54_ = NULL;
-                               _tmp52_ = prop;
-                               _tmp53_ = vala_property_get_set_accessor (_tmp52_);
-                               _tmp54_ = _tmp53_;
-                               _tmp48_ = _tmp54_ != NULL;
-                       } else {
-                               _tmp48_ = FALSE;
-                       }
-                       if (_tmp48_) {
-                               ValaCCodeInitializerList* _tmp55_ = NULL;
-                               ValaCCodeConstant* _tmp56_ = NULL;
-                               ValaCCodeConstant* _tmp57_ = NULL;
-                               _tmp55_ = info;
-                               _tmp56_ = vala_ccode_constant_new ("G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITA" \
-"BLE");
-                               _tmp57_ = _tmp56_;
-                               vala_ccode_initializer_list_append (_tmp55_, (ValaCCodeExpression*) _tmp57_);
-                               _vala_ccode_node_unref0 (_tmp57_);
-                       } else {
-                               ValaProperty* _tmp58_ = NULL;
-                               ValaPropertyAccessor* _tmp59_ = NULL;
-                               ValaPropertyAccessor* _tmp60_ = NULL;
-                               _tmp58_ = prop;
-                               _tmp59_ = vala_property_get_get_accessor (_tmp58_);
-                               _tmp60_ = _tmp59_;
-                               if (_tmp60_ != NULL) {
-                                       ValaCCodeInitializerList* _tmp61_ = NULL;
-                                       ValaCCodeConstant* _tmp62_ = NULL;
-                                       ValaCCodeConstant* _tmp63_ = NULL;
-                                       _tmp61_ = info;
-                                       _tmp62_ = vala_ccode_constant_new ("G_DBUS_PROPERTY_INFO_FLAGS_READABLE");
-                                       _tmp63_ = _tmp62_;
-                                       vala_ccode_initializer_list_append (_tmp61_, (ValaCCodeExpression*) _tmp63_);
-                                       _vala_ccode_node_unref0 (_tmp63_);
-                               } else {
-                                       ValaProperty* _tmp64_ = NULL;
-                                       ValaPropertyAccessor* _tmp65_ = NULL;
-                                       ValaPropertyAccessor* _tmp66_ = NULL;
-                                       _tmp64_ = prop;
-                                       _tmp65_ = vala_property_get_set_accessor (_tmp64_);
-                                       _tmp66_ = _tmp65_;
-                                       if (_tmp66_ != NULL) {
-                                               ValaCCodeInitializerList* _tmp67_ = NULL;
-                                               ValaCCodeConstant* _tmp68_ = NULL;
-                                               ValaCCodeConstant* _tmp69_ = NULL;
-                                               _tmp67_ = info;
-                                               _tmp68_ = vala_ccode_constant_new ("G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE");
-                                               _tmp69_ = _tmp68_;
-                                               vala_ccode_initializer_list_append (_tmp67_, (ValaCCodeExpression*) _tmp69_);
-                                               _vala_ccode_node_unref0 (_tmp69_);
-                                       } else {
-                                               ValaCCodeInitializerList* _tmp70_ = NULL;
-                                               ValaCCodeConstant* _tmp71_ = NULL;
-                                               ValaCCodeConstant* _tmp72_ = NULL;
-                                               _tmp70_ = info;
-                                               _tmp71_ = vala_ccode_constant_new ("G_DBUS_PROPERTY_INFO_FLAGS_NONE");
-                                               _tmp72_ = _tmp71_;
-                                               vala_ccode_initializer_list_append (_tmp70_, (ValaCCodeExpression*) _tmp72_);
-                                               _vala_ccode_node_unref0 (_tmp72_);
-                                       }
-                               }
-                       }
-                       _tmp73_ = vala_ccode_declaration_new ("const GDBusPropertyInfo");
-                       _cdecl_ = _tmp73_;
-                       _tmp74_ = _cdecl_;
-                       _tmp75_ = sym;
-                       _tmp76_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp75_);
-                       _tmp77_ = _tmp76_;
-                       _tmp78_ = g_strconcat ("_", _tmp77_, NULL);
-                       _tmp79_ = _tmp78_;
-                       _tmp80_ = g_strconcat (_tmp79_, "dbus_property_info_", NULL);
-                       _tmp81_ = _tmp80_;
-                       _tmp82_ = prop;
-                       _tmp83_ = vala_symbol_get_name ((ValaSymbol*) _tmp82_);
-                       _tmp84_ = _tmp83_;
-                       _tmp85_ = g_strconcat (_tmp81_, _tmp84_, NULL);
-                       _tmp86_ = _tmp85_;
-                       _tmp87_ = info;
-                       _tmp88_ = vala_ccode_variable_declarator_new (_tmp86_, (ValaCCodeExpression*) _tmp87_, NULL);
-                       _tmp89_ = _tmp88_;
-                       vala_ccode_declaration_add_declarator (_tmp74_, (ValaCCodeDeclarator*) _tmp89_);
-                       _vala_ccode_node_unref0 (_tmp89_);
-                       _g_free0 (_tmp86_);
-                       _g_free0 (_tmp81_);
-                       _g_free0 (_tmp79_);
-                       _g_free0 (_tmp77_);
-                       _tmp90_ = _cdecl_;
-                       vala_ccode_declaration_set_modifiers (_tmp90_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp91_ = ((ValaCCodeBaseModule*) self)->cfile;
-                       _tmp92_ = _cdecl_;
-                       vala_ccode_file_add_constant_declaration (_tmp91_, (ValaCCodeNode*) _tmp92_);
-                       _tmp93_ = infos;
-                       _tmp94_ = sym;
-                       _tmp95_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp94_);
-                       _tmp96_ = _tmp95_;
-                       _tmp97_ = g_strconcat ("_", _tmp96_, NULL);
-                       _tmp98_ = _tmp97_;
-                       _tmp99_ = g_strconcat (_tmp98_, "dbus_property_info_", NULL);
-                       _tmp100_ = _tmp99_;
-                       _tmp101_ = prop;
-                       _tmp102_ = vala_symbol_get_name ((ValaSymbol*) _tmp101_);
-                       _tmp103_ = _tmp102_;
-                       _tmp104_ = g_strconcat (_tmp100_, _tmp103_, NULL);
-                       _tmp105_ = _tmp104_;
-                       _tmp106_ = vala_ccode_identifier_new (_tmp105_);
-                       _tmp107_ = _tmp106_;
-                       _tmp108_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp107_);
-                       _tmp109_ = _tmp108_;
-                       vala_ccode_initializer_list_append (_tmp93_, (ValaCCodeExpression*) _tmp109_);
-                       _vala_ccode_node_unref0 (_tmp109_);
-                       _vala_ccode_node_unref0 (_tmp107_);
-                       _g_free0 (_tmp105_);
-                       _g_free0 (_tmp100_);
-                       _g_free0 (_tmp98_);
-                       _g_free0 (_tmp96_);
-                       _vala_ccode_node_unref0 (_cdecl_);
-                       _vala_ccode_node_unref0 (info);
-                       _vala_code_node_unref0 (prop);
-               }
-               _vala_iterable_unref0 (_prop_list);
-       }
-       _tmp110_ = infos;
-       _tmp111_ = vala_ccode_constant_new ("NULL");
-       _tmp112_ = _tmp111_;
-       vala_ccode_initializer_list_append (_tmp110_, (ValaCCodeExpression*) _tmp112_);
-       _vala_ccode_node_unref0 (_tmp112_);
-       _tmp113_ = vala_ccode_declaration_new ("const GDBusPropertyInfo * const");
-       _cdecl_ = _tmp113_;
-       _tmp114_ = sym;
-       _tmp115_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp114_);
-       _tmp116_ = _tmp115_;
-       _tmp117_ = g_strconcat ("_", _tmp116_, NULL);
-       _tmp118_ = _tmp117_;
-       _tmp119_ = g_strconcat (_tmp118_, "dbus_property_info[]", NULL);
-       _tmp120_ = _tmp119_;
-       _tmp121_ = infos;
-       _tmp122_ = vala_ccode_variable_declarator_new (_tmp120_, (ValaCCodeExpression*) _tmp121_, NULL);
-       _tmp123_ = _tmp122_;
-       vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp123_);
-       _vala_ccode_node_unref0 (_tmp123_);
-       _g_free0 (_tmp120_);
-       _g_free0 (_tmp118_);
-       _g_free0 (_tmp116_);
-       vala_ccode_declaration_set_modifiers (_cdecl_, VALA_CCODE_MODIFIERS_STATIC);
-       _tmp124_ = ((ValaCCodeBaseModule*) self)->cfile;
-       vala_ccode_file_add_constant_declaration (_tmp124_, (ValaCCodeNode*) _cdecl_);
-       _tmp125_ = sym;
-       _tmp126_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp125_);
-       _tmp127_ = _tmp126_;
-       _tmp128_ = g_strconcat ("_", _tmp127_, NULL);
-       _tmp129_ = _tmp128_;
-       _tmp130_ = g_strconcat (_tmp129_, "dbus_property_info", NULL);
-       _tmp131_ = _tmp130_;
-       _tmp132_ = vala_ccode_identifier_new (_tmp131_);
-       _tmp133_ = (ValaCCodeExpression*) _tmp132_;
-       _g_free0 (_tmp131_);
-       _g_free0 (_tmp129_);
-       _g_free0 (_tmp127_);
-       result = _tmp133_;
-       _vala_ccode_node_unref0 (_cdecl_);
-       _vala_ccode_node_unref0 (infos);
-       return result;
-}
-
-
-static ValaCCodeExpression* vala_gd_bus_server_module_get_interface_info (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym) {
-       ValaCCodeExpression* result = NULL;
-       ValaCCodeInitializerList* info = NULL;
-       ValaCCodeInitializerList* _tmp0_ = NULL;
-       ValaCCodeConstant* _tmp1_ = NULL;
-       ValaCCodeConstant* _tmp2_ = NULL;
-       ValaObjectTypeSymbol* _tmp3_ = NULL;
-       gchar* _tmp4_ = NULL;
-       gchar* _tmp5_ = NULL;
-       gchar* _tmp6_ = NULL;
-       gchar* _tmp7_ = NULL;
-       ValaCCodeConstant* _tmp8_ = NULL;
-       ValaCCodeConstant* _tmp9_ = NULL;
-       ValaObjectTypeSymbol* _tmp10_ = NULL;
-       ValaCCodeExpression* _tmp11_ = NULL;
-       ValaCCodeExpression* _tmp12_ = NULL;
-       ValaCCodeUnaryExpression* _tmp13_ = NULL;
-       ValaCCodeUnaryExpression* _tmp14_ = NULL;
-       ValaCCodeCastExpression* _tmp15_ = NULL;
-       ValaCCodeCastExpression* _tmp16_ = NULL;
-       ValaObjectTypeSymbol* _tmp17_ = NULL;
-       ValaCCodeExpression* _tmp18_ = NULL;
-       ValaCCodeExpression* _tmp19_ = NULL;
-       ValaCCodeUnaryExpression* _tmp20_ = NULL;
-       ValaCCodeUnaryExpression* _tmp21_ = NULL;
-       ValaCCodeCastExpression* _tmp22_ = NULL;
-       ValaCCodeCastExpression* _tmp23_ = NULL;
-       ValaObjectTypeSymbol* _tmp24_ = NULL;
-       ValaCCodeExpression* _tmp25_ = NULL;
-       ValaCCodeExpression* _tmp26_ = NULL;
-       ValaCCodeUnaryExpression* _tmp27_ = NULL;
-       ValaCCodeUnaryExpression* _tmp28_ = NULL;
-       ValaCCodeCastExpression* _tmp29_ = NULL;
-       ValaCCodeCastExpression* _tmp30_ = NULL;
-       ValaCCodeDeclaration* _cdecl_ = NULL;
-       ValaCCodeDeclaration* _tmp31_ = NULL;
-       ValaObjectTypeSymbol* _tmp32_ = NULL;
-       gchar* _tmp33_ = NULL;
-       gchar* _tmp34_ = NULL;
-       gchar* _tmp35_ = NULL;
-       gchar* _tmp36_ = NULL;
-       gchar* _tmp37_ = NULL;
-       gchar* _tmp38_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp39_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp40_ = NULL;
-       ValaCCodeFile* _tmp41_ = NULL;
-       ValaObjectTypeSymbol* _tmp42_ = NULL;
-       gchar* _tmp43_ = NULL;
-       gchar* _tmp44_ = NULL;
-       gchar* _tmp45_ = NULL;
-       gchar* _tmp46_ = NULL;
-       gchar* _tmp47_ = NULL;
-       gchar* _tmp48_ = NULL;
-       ValaCCodeIdentifier* _tmp49_ = NULL;
-       ValaCCodeExpression* _tmp50_ = NULL;
-       g_return_val_if_fail (self != NULL, NULL);
-       g_return_val_if_fail (sym != NULL, NULL);
-       _tmp0_ = vala_ccode_initializer_list_new ();
-       info = _tmp0_;
-       _tmp1_ = vala_ccode_constant_new ("-1");
-       _tmp2_ = _tmp1_;
-       vala_ccode_initializer_list_append (info, (ValaCCodeExpression*) _tmp2_);
-       _vala_ccode_node_unref0 (_tmp2_);
-       _tmp3_ = sym;
-       _tmp4_ = vala_gd_bus_module_get_dbus_name ((ValaTypeSymbol*) _tmp3_);
-       _tmp5_ = _tmp4_;
-       _tmp6_ = g_strdup_printf ("\"%s\"", _tmp5_);
-       _tmp7_ = _tmp6_;
-       _tmp8_ = vala_ccode_constant_new (_tmp7_);
-       _tmp9_ = _tmp8_;
-       vala_ccode_initializer_list_append (info, (ValaCCodeExpression*) _tmp9_);
-       _vala_ccode_node_unref0 (_tmp9_);
-       _g_free0 (_tmp7_);
-       _g_free0 (_tmp5_);
-       _tmp10_ = sym;
-       _tmp11_ = vala_gd_bus_server_module_get_method_info (self, _tmp10_);
-       _tmp12_ = _tmp11_;
-       _tmp13_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp12_);
-       _tmp14_ = _tmp13_;
-       _tmp15_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp14_, "GDBusMethodInfo **");
-       _tmp16_ = _tmp15_;
-       vala_ccode_initializer_list_append (info, (ValaCCodeExpression*) _tmp16_);
-       _vala_ccode_node_unref0 (_tmp16_);
-       _vala_ccode_node_unref0 (_tmp14_);
-       _vala_ccode_node_unref0 (_tmp12_);
-       _tmp17_ = sym;
-       _tmp18_ = vala_gd_bus_server_module_get_signal_info (self, _tmp17_);
-       _tmp19_ = _tmp18_;
-       _tmp20_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp19_);
-       _tmp21_ = _tmp20_;
-       _tmp22_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp21_, "GDBusSignalInfo **");
-       _tmp23_ = _tmp22_;
-       vala_ccode_initializer_list_append (info, (ValaCCodeExpression*) _tmp23_);
-       _vala_ccode_node_unref0 (_tmp23_);
-       _vala_ccode_node_unref0 (_tmp21_);
-       _vala_ccode_node_unref0 (_tmp19_);
-       _tmp24_ = sym;
-       _tmp25_ = vala_gd_bus_server_module_get_property_info (self, _tmp24_);
-       _tmp26_ = _tmp25_;
-       _tmp27_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp26_);
-       _tmp28_ = _tmp27_;
-       _tmp29_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp28_, "GDBusPropertyInfo **");
-       _tmp30_ = _tmp29_;
-       vala_ccode_initializer_list_append (info, (ValaCCodeExpression*) _tmp30_);
-       _vala_ccode_node_unref0 (_tmp30_);
-       _vala_ccode_node_unref0 (_tmp28_);
-       _vala_ccode_node_unref0 (_tmp26_);
-       _tmp31_ = vala_ccode_declaration_new ("const GDBusInterfaceInfo");
-       _cdecl_ = _tmp31_;
-       _tmp32_ = sym;
-       _tmp33_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp32_);
-       _tmp34_ = _tmp33_;
-       _tmp35_ = g_strconcat ("_", _tmp34_, NULL);
-       _tmp36_ = _tmp35_;
-       _tmp37_ = g_strconcat (_tmp36_, "dbus_interface_info", NULL);
-       _tmp38_ = _tmp37_;
-       _tmp39_ = vala_ccode_variable_declarator_new (_tmp38_, (ValaCCodeExpression*) info, NULL);
-       _tmp40_ = _tmp39_;
-       vala_ccode_declaration_add_declarator (_cdecl_, (ValaCCodeDeclarator*) _tmp40_);
-       _vala_ccode_node_unref0 (_tmp40_);
-       _g_free0 (_tmp38_);
-       _g_free0 (_tmp36_);
-       _g_free0 (_tmp34_);
-       vala_ccode_declaration_set_modifiers (_cdecl_, VALA_CCODE_MODIFIERS_STATIC);
-       _tmp41_ = ((ValaCCodeBaseModule*) self)->cfile;
-       vala_ccode_file_add_constant_declaration (_tmp41_, (ValaCCodeNode*) _cdecl_);
-       _tmp42_ = sym;
-       _tmp43_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp42_);
-       _tmp44_ = _tmp43_;
-       _tmp45_ = g_strconcat ("_", _tmp44_, NULL);
-       _tmp46_ = _tmp45_;
-       _tmp47_ = g_strconcat (_tmp46_, "dbus_interface_info", NULL);
-       _tmp48_ = _tmp47_;
-       _tmp49_ = vala_ccode_identifier_new (_tmp48_);
-       _tmp50_ = (ValaCCodeExpression*) _tmp49_;
-       _g_free0 (_tmp48_);
-       _g_free0 (_tmp46_);
-       _g_free0 (_tmp44_);
-       result = _tmp50_;
-       _vala_ccode_node_unref0 (_cdecl_);
-       _vala_ccode_node_unref0 (info);
-       return result;
-}
-
-
 static ValaCCodeExpression* vala_gd_bus_server_module_get_interface_vtable (ValaGDBusServerModule* self, ValaObjectTypeSymbol* sym) {
        ValaCCodeExpression* result = NULL;
        ValaCCodeInitializerList* vtable = NULL;
@@ -8992,8 +6737,8 @@ static void vala_gd_bus_server_module_generate_object_type_symbol_declaration (V
        ValaCCodeParameter* _tmp26_ = NULL;
        ValaObjectTypeSymbol* _tmp27_ = NULL;
        gboolean _tmp28_ = FALSE;
-       ValaCCodeFile* _tmp33_ = NULL;
-       ValaCCodeFunction* _tmp34_ = NULL;
+       ValaCCodeFile* _tmp44_ = NULL;
+       ValaCCodeFunction* _tmp45_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (sym != NULL);
        g_return_if_fail (decl_space != NULL);
@@ -9058,10 +6803,40 @@ static void vala_gd_bus_server_module_generate_object_type_symbol_declaration (V
                _tmp31_ = vala_ccode_function_get_modifiers (_tmp30_);
                _tmp32_ = _tmp31_;
                vala_ccode_function_set_modifiers (_tmp30_, _tmp32_ | VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp33_ = FALSE;
+               ValaCodeContext* _tmp34_ = NULL;
+               ValaCodeContext* _tmp35_ = NULL;
+               gboolean _tmp36_ = FALSE;
+               gboolean _tmp37_ = FALSE;
+               _tmp34_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp35_ = _tmp34_;
+               _tmp36_ = vala_code_context_get_hide_internal (_tmp35_);
+               _tmp37_ = _tmp36_;
+               if (_tmp37_) {
+                       ValaObjectTypeSymbol* _tmp38_ = NULL;
+                       gboolean _tmp39_ = FALSE;
+                       _tmp38_ = sym;
+                       _tmp39_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp38_);
+                       _tmp33_ = _tmp39_;
+               } else {
+                       _tmp33_ = FALSE;
+               }
+               if (_tmp33_) {
+                       ValaCCodeFunction* _tmp40_ = NULL;
+                       ValaCCodeFunction* _tmp41_ = NULL;
+                       ValaCCodeModifiers _tmp42_ = 0;
+                       ValaCCodeModifiers _tmp43_ = 0;
+                       _tmp40_ = cfunc;
+                       _tmp41_ = cfunc;
+                       _tmp42_ = vala_ccode_function_get_modifiers (_tmp41_);
+                       _tmp43_ = _tmp42_;
+                       vala_ccode_function_set_modifiers (_tmp41_, _tmp43_ | VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp33_ = decl_space;
-       _tmp34_ = cfunc;
-       vala_ccode_file_add_function_declaration (_tmp33_, _tmp34_);
+       _tmp44_ = decl_space;
+       _tmp45_ = cfunc;
+       vala_ccode_file_add_function_declaration (_tmp44_, _tmp45_);
        _vala_ccode_node_unref0 (cfunc);
        _g_free0 (register_object_name);
        _g_free0 (dbus_iface_name);
@@ -9096,235 +6871,235 @@ static void vala_gd_bus_server_module_visit_object_type_symbol (ValaGDBusServerM
        ValaCCodeParameter* _tmp22_ = NULL;
        ValaObjectTypeSymbol* _tmp23_ = NULL;
        gboolean _tmp24_ = FALSE;
-       ValaCCodeFunction* _tmp29_ = NULL;
-       ValaCCodeFunction* _tmp30_ = NULL;
-       ValaCCodeFunction* _tmp31_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp32_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp33_ = NULL;
-       ValaCCodeFunction* _tmp34_ = NULL;
-       ValaCCodeFunction* _tmp35_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp36_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp37_ = NULL;
+       ValaCCodeFunction* _tmp40_ = NULL;
+       ValaCCodeFunction* _tmp41_ = NULL;
+       ValaCCodeFunction* _tmp42_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp43_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp44_ = NULL;
+       ValaCCodeFunction* _tmp45_ = NULL;
+       ValaCCodeFunction* _tmp46_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp47_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp48_ = NULL;
        ValaCCodeFunctionCall* alloc_data = NULL;
-       ValaCCodeIdentifier* _tmp38_ = NULL;
-       ValaCCodeIdentifier* _tmp39_ = NULL;
-       ValaCCodeFunctionCall* _tmp40_ = NULL;
-       ValaCCodeFunctionCall* _tmp41_ = NULL;
-       ValaCCodeFunctionCall* _tmp42_ = NULL;
-       ValaCCodeIdentifier* _tmp43_ = NULL;
-       ValaCCodeIdentifier* _tmp44_ = NULL;
-       ValaCCodeFunctionCall* _tmp45_ = NULL;
-       ValaCCodeConstant* _tmp46_ = NULL;
-       ValaCCodeConstant* _tmp47_ = NULL;
-       ValaCCodeFunction* _tmp48_ = NULL;
-       ValaCCodeFunction* _tmp49_ = NULL;
+       ValaCCodeIdentifier* _tmp49_ = NULL;
        ValaCCodeIdentifier* _tmp50_ = NULL;
-       ValaCCodeIdentifier* _tmp51_ = NULL;
+       ValaCCodeFunctionCall* _tmp51_ = NULL;
        ValaCCodeFunctionCall* _tmp52_ = NULL;
+       ValaCCodeFunctionCall* _tmp53_ = NULL;
+       ValaCCodeIdentifier* _tmp54_ = NULL;
+       ValaCCodeIdentifier* _tmp55_ = NULL;
+       ValaCCodeFunctionCall* _tmp56_ = NULL;
+       ValaCCodeConstant* _tmp57_ = NULL;
+       ValaCCodeConstant* _tmp58_ = NULL;
+       ValaCCodeFunction* _tmp59_ = NULL;
+       ValaCCodeFunction* _tmp60_ = NULL;
+       ValaCCodeIdentifier* _tmp61_ = NULL;
+       ValaCCodeIdentifier* _tmp62_ = NULL;
+       ValaCCodeFunctionCall* _tmp63_ = NULL;
        gchar* ref_function = NULL;
-       ValaObjectTypeSymbol* _tmp53_ = NULL;
-       gchar* _tmp54_ = NULL;
-       gboolean _tmp55_ = FALSE;
-       ValaObjectTypeSymbol* _tmp56_ = NULL;
+       ValaObjectTypeSymbol* _tmp64_ = NULL;
+       gchar* _tmp65_ = NULL;
+       gboolean _tmp66_ = FALSE;
+       ValaObjectTypeSymbol* _tmp67_ = NULL;
        ValaCCodeFunctionCall* ref_object = NULL;
-       const gchar* _tmp66_ = NULL;
-       ValaCCodeIdentifier* _tmp67_ = NULL;
-       ValaCCodeIdentifier* _tmp68_ = NULL;
-       ValaCCodeFunctionCall* _tmp69_ = NULL;
-       ValaCCodeFunctionCall* _tmp70_ = NULL;
-       ValaCCodeFunctionCall* _tmp71_ = NULL;
-       ValaCCodeIdentifier* _tmp72_ = NULL;
-       ValaCCodeIdentifier* _tmp73_ = NULL;
-       ValaCCodeFunction* _tmp74_ = NULL;
-       ValaCCodeFunction* _tmp75_ = NULL;
-       ValaCCodeIdentifier* _tmp76_ = NULL;
-       ValaCCodeIdentifier* _tmp77_ = NULL;
-       ValaCCodeConstant* _tmp78_ = NULL;
-       ValaCCodeConstant* _tmp79_ = NULL;
-       ValaCCodeElementAccess* _tmp80_ = NULL;
-       ValaCCodeElementAccess* _tmp81_ = NULL;
+       const gchar* _tmp77_ = NULL;
+       ValaCCodeIdentifier* _tmp78_ = NULL;
+       ValaCCodeIdentifier* _tmp79_ = NULL;
+       ValaCCodeFunctionCall* _tmp80_ = NULL;
+       ValaCCodeFunctionCall* _tmp81_ = NULL;
        ValaCCodeFunctionCall* _tmp82_ = NULL;
        ValaCCodeIdentifier* _tmp83_ = NULL;
        ValaCCodeIdentifier* _tmp84_ = NULL;
-       ValaCCodeFunctionCall* _tmp85_ = NULL;
-       ValaCCodeFunctionCall* _tmp86_ = NULL;
+       ValaCCodeFunction* _tmp85_ = NULL;
+       ValaCCodeFunction* _tmp86_ = NULL;
        ValaCCodeIdentifier* _tmp87_ = NULL;
        ValaCCodeIdentifier* _tmp88_ = NULL;
-       ValaCCodeFunction* _tmp89_ = NULL;
-       ValaCCodeFunction* _tmp90_ = NULL;
-       ValaCCodeIdentifier* _tmp91_ = NULL;
-       ValaCCodeIdentifier* _tmp92_ = NULL;
-       ValaCCodeConstant* _tmp93_ = NULL;
-       ValaCCodeConstant* _tmp94_ = NULL;
-       ValaCCodeElementAccess* _tmp95_ = NULL;
-       ValaCCodeElementAccess* _tmp96_ = NULL;
+       ValaCCodeConstant* _tmp89_ = NULL;
+       ValaCCodeConstant* _tmp90_ = NULL;
+       ValaCCodeElementAccess* _tmp91_ = NULL;
+       ValaCCodeElementAccess* _tmp92_ = NULL;
+       ValaCCodeFunctionCall* _tmp93_ = NULL;
+       ValaCCodeIdentifier* _tmp94_ = NULL;
+       ValaCCodeIdentifier* _tmp95_ = NULL;
+       ValaCCodeFunctionCall* _tmp96_ = NULL;
        ValaCCodeFunctionCall* _tmp97_ = NULL;
-       ValaCCodeFunctionCall* dup_path = NULL;
        ValaCCodeIdentifier* _tmp98_ = NULL;
        ValaCCodeIdentifier* _tmp99_ = NULL;
-       ValaCCodeFunctionCall* _tmp100_ = NULL;
-       ValaCCodeFunctionCall* _tmp101_ = NULL;
-       ValaCCodeFunctionCall* _tmp102_ = NULL;
+       ValaCCodeFunction* _tmp100_ = NULL;
+       ValaCCodeFunction* _tmp101_ = NULL;
+       ValaCCodeIdentifier* _tmp102_ = NULL;
        ValaCCodeIdentifier* _tmp103_ = NULL;
-       ValaCCodeIdentifier* _tmp104_ = NULL;
-       ValaCCodeFunction* _tmp105_ = NULL;
-       ValaCCodeFunction* _tmp106_ = NULL;
-       ValaCCodeIdentifier* _tmp107_ = NULL;
-       ValaCCodeIdentifier* _tmp108_ = NULL;
-       ValaCCodeConstant* _tmp109_ = NULL;
-       ValaCCodeConstant* _tmp110_ = NULL;
-       ValaCCodeElementAccess* _tmp111_ = NULL;
-       ValaCCodeElementAccess* _tmp112_ = NULL;
+       ValaCCodeConstant* _tmp104_ = NULL;
+       ValaCCodeConstant* _tmp105_ = NULL;
+       ValaCCodeElementAccess* _tmp106_ = NULL;
+       ValaCCodeElementAccess* _tmp107_ = NULL;
+       ValaCCodeFunctionCall* _tmp108_ = NULL;
+       ValaCCodeFunctionCall* dup_path = NULL;
+       ValaCCodeIdentifier* _tmp109_ = NULL;
+       ValaCCodeIdentifier* _tmp110_ = NULL;
+       ValaCCodeFunctionCall* _tmp111_ = NULL;
+       ValaCCodeFunctionCall* _tmp112_ = NULL;
        ValaCCodeFunctionCall* _tmp113_ = NULL;
-       ValaCCodeFunctionCall* cregister = NULL;
        ValaCCodeIdentifier* _tmp114_ = NULL;
        ValaCCodeIdentifier* _tmp115_ = NULL;
-       ValaCCodeFunctionCall* _tmp116_ = NULL;
-       ValaCCodeFunctionCall* _tmp117_ = NULL;
-       ValaCCodeFunctionCall* _tmp118_ = NULL;
+       ValaCCodeFunction* _tmp116_ = NULL;
+       ValaCCodeFunction* _tmp117_ = NULL;
+       ValaCCodeIdentifier* _tmp118_ = NULL;
        ValaCCodeIdentifier* _tmp119_ = NULL;
-       ValaCCodeIdentifier* _tmp120_ = NULL;
-       ValaCCodeFunctionCall* _tmp121_ = NULL;
-       ValaCCodeIdentifier* _tmp122_ = NULL;
-       ValaCCodeIdentifier* _tmp123_ = NULL;
+       ValaCCodeConstant* _tmp120_ = NULL;
+       ValaCCodeConstant* _tmp121_ = NULL;
+       ValaCCodeElementAccess* _tmp122_ = NULL;
+       ValaCCodeElementAccess* _tmp123_ = NULL;
        ValaCCodeFunctionCall* _tmp124_ = NULL;
-       ValaObjectTypeSymbol* _tmp125_ = NULL;
-       ValaCCodeExpression* _tmp126_ = NULL;
-       ValaCCodeExpression* _tmp127_ = NULL;
-       ValaCCodeUnaryExpression* _tmp128_ = NULL;
-       ValaCCodeUnaryExpression* _tmp129_ = NULL;
-       ValaCCodeCastExpression* _tmp130_ = NULL;
-       ValaCCodeCastExpression* _tmp131_ = NULL;
+       ValaCCodeFunctionCall* cregister = NULL;
+       ValaCCodeIdentifier* _tmp125_ = NULL;
+       ValaCCodeIdentifier* _tmp126_ = NULL;
+       ValaCCodeFunctionCall* _tmp127_ = NULL;
+       ValaCCodeFunctionCall* _tmp128_ = NULL;
+       ValaCCodeFunctionCall* _tmp129_ = NULL;
+       ValaCCodeIdentifier* _tmp130_ = NULL;
+       ValaCCodeIdentifier* _tmp131_ = NULL;
        ValaCCodeFunctionCall* _tmp132_ = NULL;
-       ValaObjectTypeSymbol* _tmp133_ = NULL;
-       ValaCCodeExpression* _tmp134_ = NULL;
-       ValaCCodeExpression* _tmp135_ = NULL;
-       ValaCCodeUnaryExpression* _tmp136_ = NULL;
-       ValaCCodeUnaryExpression* _tmp137_ = NULL;
-       ValaCCodeFunctionCall* _tmp138_ = NULL;
-       ValaCCodeIdentifier* _tmp139_ = NULL;
-       ValaCCodeIdentifier* _tmp140_ = NULL;
-       ValaCCodeFunctionCall* _tmp141_ = NULL;
-       ValaObjectTypeSymbol* _tmp142_ = NULL;
-       gchar* _tmp143_ = NULL;
-       gchar* _tmp144_ = NULL;
-       gchar* _tmp145_ = NULL;
-       gchar* _tmp146_ = NULL;
-       gchar* _tmp147_ = NULL;
-       gchar* _tmp148_ = NULL;
-       ValaCCodeIdentifier* _tmp149_ = NULL;
+       ValaCCodeIdentifier* _tmp133_ = NULL;
+       ValaCCodeIdentifier* _tmp134_ = NULL;
+       ValaCCodeFunctionCall* _tmp135_ = NULL;
+       ValaObjectTypeSymbol* _tmp136_ = NULL;
+       ValaCCodeExpression* _tmp137_ = NULL;
+       ValaCCodeExpression* _tmp138_ = NULL;
+       ValaCCodeUnaryExpression* _tmp139_ = NULL;
+       ValaCCodeUnaryExpression* _tmp140_ = NULL;
+       ValaCCodeCastExpression* _tmp141_ = NULL;
+       ValaCCodeCastExpression* _tmp142_ = NULL;
+       ValaCCodeFunctionCall* _tmp143_ = NULL;
+       ValaObjectTypeSymbol* _tmp144_ = NULL;
+       ValaCCodeExpression* _tmp145_ = NULL;
+       ValaCCodeExpression* _tmp146_ = NULL;
+       ValaCCodeUnaryExpression* _tmp147_ = NULL;
+       ValaCCodeUnaryExpression* _tmp148_ = NULL;
+       ValaCCodeFunctionCall* _tmp149_ = NULL;
        ValaCCodeIdentifier* _tmp150_ = NULL;
-       ValaCCodeFunctionCall* _tmp151_ = NULL;
-       ValaCCodeIdentifier* _tmp152_ = NULL;
-       ValaCCodeIdentifier* _tmp153_ = NULL;
-       ValaCCodeFunction* _tmp154_ = NULL;
-       ValaCCodeFunction* _tmp155_ = NULL;
-       ValaCCodeIdentifier* _tmp156_ = NULL;
-       ValaCCodeIdentifier* _tmp157_ = NULL;
-       ValaCCodeFunctionCall* _tmp158_ = NULL;
-       ValaCCodeFunction* _tmp159_ = NULL;
-       ValaCCodeFunction* _tmp160_ = NULL;
+       ValaCCodeIdentifier* _tmp151_ = NULL;
+       ValaCCodeFunctionCall* _tmp152_ = NULL;
+       ValaObjectTypeSymbol* _tmp153_ = NULL;
+       gchar* _tmp154_ = NULL;
+       gchar* _tmp155_ = NULL;
+       gchar* _tmp156_ = NULL;
+       gchar* _tmp157_ = NULL;
+       gchar* _tmp158_ = NULL;
+       gchar* _tmp159_ = NULL;
+       ValaCCodeIdentifier* _tmp160_ = NULL;
        ValaCCodeIdentifier* _tmp161_ = NULL;
-       ValaCCodeIdentifier* _tmp162_ = NULL;
-       ValaCCodeUnaryExpression* _tmp163_ = NULL;
-       ValaCCodeUnaryExpression* _tmp164_ = NULL;
+       ValaCCodeFunctionCall* _tmp162_ = NULL;
+       ValaCCodeIdentifier* _tmp163_ = NULL;
+       ValaCCodeIdentifier* _tmp164_ = NULL;
        ValaCCodeFunction* _tmp165_ = NULL;
        ValaCCodeFunction* _tmp166_ = NULL;
-       ValaCCodeConstant* _tmp167_ = NULL;
-       ValaCCodeConstant* _tmp168_ = NULL;
-       ValaCCodeFunction* _tmp169_ = NULL;
+       ValaCCodeIdentifier* _tmp167_ = NULL;
+       ValaCCodeIdentifier* _tmp168_ = NULL;
+       ValaCCodeFunctionCall* _tmp169_ = NULL;
        ValaCCodeFunction* _tmp170_ = NULL;
-       ValaObjectTypeSymbol* _tmp171_ = NULL;
-       ValaCCodeFunction* _tmp172_ = NULL;
-       ValaCCodeFunction* _tmp173_ = NULL;
-       ValaCCodeIdentifier* _tmp174_ = NULL;
-       ValaCCodeIdentifier* _tmp175_ = NULL;
-       ValaCCodeFile* _tmp176_ = NULL;
+       ValaCCodeFunction* _tmp171_ = NULL;
+       ValaCCodeIdentifier* _tmp172_ = NULL;
+       ValaCCodeIdentifier* _tmp173_ = NULL;
+       ValaCCodeUnaryExpression* _tmp174_ = NULL;
+       ValaCCodeUnaryExpression* _tmp175_ = NULL;
+       ValaCCodeFunction* _tmp176_ = NULL;
        ValaCCodeFunction* _tmp177_ = NULL;
-       ValaObjectTypeSymbol* _tmp178_ = NULL;
-       gchar* _tmp179_ = NULL;
-       gchar* _tmp180_ = NULL;
-       gchar* _tmp181_ = NULL;
-       gchar* _tmp182_ = NULL;
-       gchar* _tmp183_ = NULL;
-       gchar* _tmp184_ = NULL;
-       ValaCCodeFunction* _tmp185_ = NULL;
-       ValaCCodeFunction* _tmp186_ = NULL;
-       ValaCCodeParameter* _tmp187_ = NULL;
-       ValaCCodeParameter* _tmp188_ = NULL;
-       ValaCCodeFunction* _tmp189_ = NULL;
-       ValaCCodeFunction* _tmp190_ = NULL;
-       ValaCCodeModifiers _tmp191_ = 0;
-       ValaCCodeModifiers _tmp192_ = 0;
-       ValaCCodeFunction* _tmp193_ = NULL;
-       ValaCCodeFunction* _tmp194_ = NULL;
-       ValaCCodeFunction* _tmp195_ = NULL;
-       ValaCCodeIdentifier* _tmp196_ = NULL;
-       ValaCCodeIdentifier* _tmp197_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp198_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp199_ = NULL;
-       ValaObjectTypeSymbol* _tmp200_ = NULL;
+       ValaCCodeConstant* _tmp178_ = NULL;
+       ValaCCodeConstant* _tmp179_ = NULL;
+       ValaCCodeFunction* _tmp180_ = NULL;
+       ValaCCodeFunction* _tmp181_ = NULL;
+       ValaObjectTypeSymbol* _tmp182_ = NULL;
+       ValaCCodeFunction* _tmp183_ = NULL;
+       ValaCCodeFunction* _tmp184_ = NULL;
+       ValaCCodeIdentifier* _tmp185_ = NULL;
+       ValaCCodeIdentifier* _tmp186_ = NULL;
+       ValaCCodeFile* _tmp187_ = NULL;
+       ValaCCodeFunction* _tmp188_ = NULL;
+       ValaObjectTypeSymbol* _tmp189_ = NULL;
+       gchar* _tmp190_ = NULL;
+       gchar* _tmp191_ = NULL;
+       gchar* _tmp192_ = NULL;
+       gchar* _tmp193_ = NULL;
+       gchar* _tmp194_ = NULL;
+       gchar* _tmp195_ = NULL;
+       ValaCCodeFunction* _tmp196_ = NULL;
+       ValaCCodeFunction* _tmp197_ = NULL;
+       ValaCCodeParameter* _tmp198_ = NULL;
+       ValaCCodeParameter* _tmp199_ = NULL;
+       ValaCCodeFunction* _tmp200_ = NULL;
+       ValaCCodeFunction* _tmp201_ = NULL;
+       ValaCCodeModifiers _tmp202_ = 0;
+       ValaCCodeModifiers _tmp203_ = 0;
+       ValaCCodeFunction* _tmp204_ = NULL;
+       ValaCCodeFunction* _tmp205_ = NULL;
+       ValaCCodeFunction* _tmp206_ = NULL;
+       ValaCCodeIdentifier* _tmp207_ = NULL;
+       ValaCCodeIdentifier* _tmp208_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp209_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp210_ = NULL;
+       ValaObjectTypeSymbol* _tmp211_ = NULL;
        ValaCCodeFunctionCall* unref_object = NULL;
-       ValaObjectTypeSymbol* _tmp201_ = NULL;
-       gchar* _tmp202_ = NULL;
-       gchar* _tmp203_ = NULL;
-       ValaCCodeIdentifier* _tmp204_ = NULL;
-       ValaCCodeIdentifier* _tmp205_ = NULL;
-       ValaCCodeFunctionCall* _tmp206_ = NULL;
-       ValaCCodeFunctionCall* _tmp207_ = NULL;
-       ValaCCodeFunctionCall* _tmp208_ = NULL;
-       ValaCCodeIdentifier* _tmp209_ = NULL;
-       ValaCCodeIdentifier* _tmp210_ = NULL;
-       ValaCCodeConstant* _tmp211_ = NULL;
-       ValaCCodeConstant* _tmp212_ = NULL;
-       ValaCCodeElementAccess* _tmp213_ = NULL;
-       ValaCCodeElementAccess* _tmp214_ = NULL;
-       ValaCCodeFunction* _tmp215_ = NULL;
-       ValaCCodeFunction* _tmp216_ = NULL;
+       ValaObjectTypeSymbol* _tmp212_ = NULL;
+       gchar* _tmp213_ = NULL;
+       gchar* _tmp214_ = NULL;
+       ValaCCodeIdentifier* _tmp215_ = NULL;
+       ValaCCodeIdentifier* _tmp216_ = NULL;
        ValaCCodeFunctionCall* _tmp217_ = NULL;
-       ValaCCodeIdentifier* _tmp218_ = NULL;
-       ValaCCodeIdentifier* _tmp219_ = NULL;
-       ValaCCodeFunctionCall* _tmp220_ = NULL;
-       ValaCCodeFunctionCall* _tmp221_ = NULL;
-       ValaCCodeIdentifier* _tmp222_ = NULL;
-       ValaCCodeIdentifier* _tmp223_ = NULL;
-       ValaCCodeConstant* _tmp224_ = NULL;
-       ValaCCodeConstant* _tmp225_ = NULL;
-       ValaCCodeElementAccess* _tmp226_ = NULL;
-       ValaCCodeElementAccess* _tmp227_ = NULL;
-       ValaCCodeFunction* _tmp228_ = NULL;
-       ValaCCodeFunction* _tmp229_ = NULL;
-       ValaCCodeFunctionCall* _tmp230_ = NULL;
+       ValaCCodeFunctionCall* _tmp218_ = NULL;
+       ValaCCodeFunctionCall* _tmp219_ = NULL;
+       ValaCCodeIdentifier* _tmp220_ = NULL;
+       ValaCCodeIdentifier* _tmp221_ = NULL;
+       ValaCCodeConstant* _tmp222_ = NULL;
+       ValaCCodeConstant* _tmp223_ = NULL;
+       ValaCCodeElementAccess* _tmp224_ = NULL;
+       ValaCCodeElementAccess* _tmp225_ = NULL;
+       ValaCCodeFunction* _tmp226_ = NULL;
+       ValaCCodeFunction* _tmp227_ = NULL;
+       ValaCCodeFunctionCall* _tmp228_ = NULL;
+       ValaCCodeIdentifier* _tmp229_ = NULL;
+       ValaCCodeIdentifier* _tmp230_ = NULL;
+       ValaCCodeFunctionCall* _tmp231_ = NULL;
+       ValaCCodeFunctionCall* _tmp232_ = NULL;
+       ValaCCodeIdentifier* _tmp233_ = NULL;
+       ValaCCodeIdentifier* _tmp234_ = NULL;
+       ValaCCodeConstant* _tmp235_ = NULL;
+       ValaCCodeConstant* _tmp236_ = NULL;
+       ValaCCodeElementAccess* _tmp237_ = NULL;
+       ValaCCodeElementAccess* _tmp238_ = NULL;
+       ValaCCodeFunction* _tmp239_ = NULL;
+       ValaCCodeFunction* _tmp240_ = NULL;
+       ValaCCodeFunctionCall* _tmp241_ = NULL;
        ValaCCodeFunctionCall* free_path = NULL;
-       ValaCCodeIdentifier* _tmp231_ = NULL;
-       ValaCCodeIdentifier* _tmp232_ = NULL;
-       ValaCCodeFunctionCall* _tmp233_ = NULL;
-       ValaCCodeFunctionCall* _tmp234_ = NULL;
-       ValaCCodeFunctionCall* _tmp235_ = NULL;
-       ValaCCodeIdentifier* _tmp236_ = NULL;
-       ValaCCodeIdentifier* _tmp237_ = NULL;
-       ValaCCodeConstant* _tmp238_ = NULL;
-       ValaCCodeConstant* _tmp239_ = NULL;
-       ValaCCodeElementAccess* _tmp240_ = NULL;
-       ValaCCodeElementAccess* _tmp241_ = NULL;
-       ValaCCodeFunction* _tmp242_ = NULL;
-       ValaCCodeFunction* _tmp243_ = NULL;
+       ValaCCodeIdentifier* _tmp242_ = NULL;
+       ValaCCodeIdentifier* _tmp243_ = NULL;
        ValaCCodeFunctionCall* _tmp244_ = NULL;
-       ValaCCodeFunctionCall* free_data = NULL;
-       ValaCCodeIdentifier* _tmp245_ = NULL;
-       ValaCCodeIdentifier* _tmp246_ = NULL;
-       ValaCCodeFunctionCall* _tmp247_ = NULL;
-       ValaCCodeFunctionCall* _tmp248_ = NULL;
-       ValaCCodeFunctionCall* _tmp249_ = NULL;
-       ValaCCodeIdentifier* _tmp250_ = NULL;
-       ValaCCodeIdentifier* _tmp251_ = NULL;
-       ValaCCodeFunction* _tmp252_ = NULL;
+       ValaCCodeFunctionCall* _tmp245_ = NULL;
+       ValaCCodeFunctionCall* _tmp246_ = NULL;
+       ValaCCodeIdentifier* _tmp247_ = NULL;
+       ValaCCodeIdentifier* _tmp248_ = NULL;
+       ValaCCodeConstant* _tmp249_ = NULL;
+       ValaCCodeConstant* _tmp250_ = NULL;
+       ValaCCodeElementAccess* _tmp251_ = NULL;
+       ValaCCodeElementAccess* _tmp252_ = NULL;
        ValaCCodeFunction* _tmp253_ = NULL;
-       ValaCCodeFunctionCall* _tmp254_ = NULL;
-       ValaCCodeFile* _tmp255_ = NULL;
-       ValaCCodeFunction* _tmp256_ = NULL;
-       ValaCCodeFile* _tmp257_ = NULL;
-       ValaCCodeFunction* _tmp258_ = NULL;
+       ValaCCodeFunction* _tmp254_ = NULL;
+       ValaCCodeFunctionCall* _tmp255_ = NULL;
+       ValaCCodeFunctionCall* free_data = NULL;
+       ValaCCodeIdentifier* _tmp256_ = NULL;
+       ValaCCodeIdentifier* _tmp257_ = NULL;
+       ValaCCodeFunctionCall* _tmp258_ = NULL;
+       ValaCCodeFunctionCall* _tmp259_ = NULL;
+       ValaCCodeFunctionCall* _tmp260_ = NULL;
+       ValaCCodeIdentifier* _tmp261_ = NULL;
+       ValaCCodeIdentifier* _tmp262_ = NULL;
+       ValaCCodeFunction* _tmp263_ = NULL;
+       ValaCCodeFunction* _tmp264_ = NULL;
+       ValaCCodeFunctionCall* _tmp265_ = NULL;
+       ValaCCodeFile* _tmp266_ = NULL;
+       ValaCCodeFunction* _tmp267_ = NULL;
+       ValaCCodeFile* _tmp268_ = NULL;
+       ValaCCodeFunction* _tmp269_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (sym != NULL);
        _tmp0_ = sym;
@@ -9379,379 +7154,409 @@ static void vala_gd_bus_server_module_visit_object_type_symbol (ValaGDBusServerM
                _tmp27_ = vala_ccode_function_get_modifiers (_tmp26_);
                _tmp28_ = _tmp27_;
                vala_ccode_function_set_modifiers (_tmp26_, _tmp28_ | VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp29_ = FALSE;
+               ValaCodeContext* _tmp30_ = NULL;
+               ValaCodeContext* _tmp31_ = NULL;
+               gboolean _tmp32_ = FALSE;
+               gboolean _tmp33_ = FALSE;
+               _tmp30_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp31_ = _tmp30_;
+               _tmp32_ = vala_code_context_get_hide_internal (_tmp31_);
+               _tmp33_ = _tmp32_;
+               if (_tmp33_) {
+                       ValaObjectTypeSymbol* _tmp34_ = NULL;
+                       gboolean _tmp35_ = FALSE;
+                       _tmp34_ = sym;
+                       _tmp35_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp34_);
+                       _tmp29_ = _tmp35_;
+               } else {
+                       _tmp29_ = FALSE;
+               }
+               if (_tmp29_) {
+                       ValaCCodeFunction* _tmp36_ = NULL;
+                       ValaCCodeFunction* _tmp37_ = NULL;
+                       ValaCCodeModifiers _tmp38_ = 0;
+                       ValaCCodeModifiers _tmp39_ = 0;
+                       _tmp36_ = cfunc;
+                       _tmp37_ = cfunc;
+                       _tmp38_ = vala_ccode_function_get_modifiers (_tmp37_);
+                       _tmp39_ = _tmp38_;
+                       vala_ccode_function_set_modifiers (_tmp37_, _tmp39_ | VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp29_ = cfunc;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp29_);
-       _tmp30_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp31_ = _tmp30_;
-       _tmp32_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
-       _tmp33_ = _tmp32_;
-       vala_ccode_function_add_declaration (_tmp31_, "guint", (ValaCCodeDeclarator*) _tmp33_, 0);
-       _vala_ccode_node_unref0 (_tmp33_);
-       _tmp34_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp35_ = _tmp34_;
-       _tmp36_ = vala_ccode_variable_declarator_new ("*data", NULL, NULL);
-       _tmp37_ = _tmp36_;
-       vala_ccode_function_add_declaration (_tmp35_, "gpointer", (ValaCCodeDeclarator*) _tmp37_, 0);
-       _vala_ccode_node_unref0 (_tmp37_);
-       _tmp38_ = vala_ccode_identifier_new ("g_new");
-       _tmp39_ = _tmp38_;
-       _tmp40_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp39_);
-       _tmp41_ = _tmp40_;
-       _vala_ccode_node_unref0 (_tmp39_);
-       alloc_data = _tmp41_;
-       _tmp42_ = alloc_data;
-       _tmp43_ = vala_ccode_identifier_new ("gpointer");
+       _tmp40_ = cfunc;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp40_);
+       _tmp41_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp42_ = _tmp41_;
+       _tmp43_ = vala_ccode_variable_declarator_new ("result", NULL, NULL);
        _tmp44_ = _tmp43_;
-       vala_ccode_function_call_add_argument (_tmp42_, (ValaCCodeExpression*) _tmp44_);
+       vala_ccode_function_add_declaration (_tmp42_, "guint", (ValaCCodeDeclarator*) _tmp44_, 0);
        _vala_ccode_node_unref0 (_tmp44_);
-       _tmp45_ = alloc_data;
-       _tmp46_ = vala_ccode_constant_new ("3");
-       _tmp47_ = _tmp46_;
-       vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp47_);
-       _vala_ccode_node_unref0 (_tmp47_);
-       _tmp48_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp49_ = _tmp48_;
-       _tmp50_ = vala_ccode_identifier_new ("data");
-       _tmp51_ = _tmp50_;
-       _tmp52_ = alloc_data;
-       vala_ccode_function_add_assignment (_tmp49_, (ValaCCodeExpression*) _tmp51_, (ValaCCodeExpression*) _tmp52_);
-       _vala_ccode_node_unref0 (_tmp51_);
-       _tmp53_ = sym;
-       _tmp54_ = vala_ccode_base_module_get_ccode_ref_function ((ValaTypeSymbol*) _tmp53_);
-       ref_function = _tmp54_;
-       _tmp56_ = sym;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp56_, VALA_TYPE_INTERFACE)) {
-               const gchar* _tmp57_ = NULL;
-               _tmp57_ = ref_function;
-               _tmp55_ = _tmp57_ == NULL;
+       _tmp45_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp46_ = _tmp45_;
+       _tmp47_ = vala_ccode_variable_declarator_new ("*data", NULL, NULL);
+       _tmp48_ = _tmp47_;
+       vala_ccode_function_add_declaration (_tmp46_, "gpointer", (ValaCCodeDeclarator*) _tmp48_, 0);
+       _vala_ccode_node_unref0 (_tmp48_);
+       _tmp49_ = vala_ccode_identifier_new ("g_new");
+       _tmp50_ = _tmp49_;
+       _tmp51_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp50_);
+       _tmp52_ = _tmp51_;
+       _vala_ccode_node_unref0 (_tmp50_);
+       alloc_data = _tmp52_;
+       _tmp53_ = alloc_data;
+       _tmp54_ = vala_ccode_identifier_new ("gpointer");
+       _tmp55_ = _tmp54_;
+       vala_ccode_function_call_add_argument (_tmp53_, (ValaCCodeExpression*) _tmp55_);
+       _vala_ccode_node_unref0 (_tmp55_);
+       _tmp56_ = alloc_data;
+       _tmp57_ = vala_ccode_constant_new ("3");
+       _tmp58_ = _tmp57_;
+       vala_ccode_function_call_add_argument (_tmp56_, (ValaCCodeExpression*) _tmp58_);
+       _vala_ccode_node_unref0 (_tmp58_);
+       _tmp59_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp60_ = _tmp59_;
+       _tmp61_ = vala_ccode_identifier_new ("data");
+       _tmp62_ = _tmp61_;
+       _tmp63_ = alloc_data;
+       vala_ccode_function_add_assignment (_tmp60_, (ValaCCodeExpression*) _tmp62_, (ValaCCodeExpression*) _tmp63_);
+       _vala_ccode_node_unref0 (_tmp62_);
+       _tmp64_ = sym;
+       _tmp65_ = vala_ccode_base_module_get_ccode_ref_function ((ValaTypeSymbol*) _tmp64_);
+       ref_function = _tmp65_;
+       _tmp67_ = sym;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp67_, VALA_TYPE_INTERFACE)) {
+               const gchar* _tmp68_ = NULL;
+               _tmp68_ = ref_function;
+               _tmp66_ = _tmp68_ == NULL;
        } else {
-               _tmp55_ = FALSE;
+               _tmp66_ = FALSE;
        }
-       if (_tmp55_) {
-               ValaObjectTypeSymbol* _tmp58_ = NULL;
-               ValaSourceReference* _tmp59_ = NULL;
-               ValaSourceReference* _tmp60_ = NULL;
-               ValaObjectTypeSymbol* _tmp61_ = NULL;
-               gchar* _tmp62_ = NULL;
-               gchar* _tmp63_ = NULL;
-               gchar* _tmp64_ = NULL;
-               gchar* _tmp65_ = NULL;
-               _tmp58_ = sym;
-               _tmp59_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp58_);
-               _tmp60_ = _tmp59_;
-               _tmp61_ = sym;
-               _tmp62_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp61_);
-               _tmp63_ = _tmp62_;
-               _tmp64_ = g_strdup_printf ("missing class prerequisite for interface `%s', add GLib.Object to inte" \
-"rface declaration if unsure", _tmp63_);
-               _tmp65_ = _tmp64_;
-               vala_report_error (_tmp60_, _tmp65_);
-               _g_free0 (_tmp65_);
-               _g_free0 (_tmp63_);
+       if (_tmp66_) {
+               ValaObjectTypeSymbol* _tmp69_ = NULL;
+               ValaSourceReference* _tmp70_ = NULL;
+               ValaSourceReference* _tmp71_ = NULL;
+               ValaObjectTypeSymbol* _tmp72_ = NULL;
+               gchar* _tmp73_ = NULL;
+               gchar* _tmp74_ = NULL;
+               gchar* _tmp75_ = NULL;
+               gchar* _tmp76_ = NULL;
+               _tmp69_ = sym;
+               _tmp70_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp69_);
+               _tmp71_ = _tmp70_;
+               _tmp72_ = sym;
+               _tmp73_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp72_);
+               _tmp74_ = _tmp73_;
+               _tmp75_ = g_strdup_printf ("missing class prerequisite for interface `%s', add GLib.Object to inte" \
+"rface declaration if unsure", _tmp74_);
+               _tmp76_ = _tmp75_;
+               vala_report_error (_tmp71_, _tmp76_);
+               _g_free0 (_tmp76_);
+               _g_free0 (_tmp74_);
                _g_free0 (ref_function);
                _vala_ccode_node_unref0 (alloc_data);
                _vala_ccode_node_unref0 (cfunc);
                _g_free0 (dbus_iface_name);
                return;
        }
-       _tmp66_ = ref_function;
-       _tmp67_ = vala_ccode_identifier_new (_tmp66_);
-       _tmp68_ = _tmp67_;
-       _tmp69_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp68_);
-       _tmp70_ = _tmp69_;
-       _vala_ccode_node_unref0 (_tmp68_);
-       ref_object = _tmp70_;
-       _tmp71_ = ref_object;
-       _tmp72_ = vala_ccode_identifier_new ("object");
-       _tmp73_ = _tmp72_;
-       vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
-       _vala_ccode_node_unref0 (_tmp73_);
-       _tmp74_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp75_ = _tmp74_;
-       _tmp76_ = vala_ccode_identifier_new ("data");
-       _tmp77_ = _tmp76_;
-       _tmp78_ = vala_ccode_constant_new ("0");
+       _tmp77_ = ref_function;
+       _tmp78_ = vala_ccode_identifier_new (_tmp77_);
        _tmp79_ = _tmp78_;
-       _tmp80_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp77_, (ValaCCodeExpression*) _tmp79_);
+       _tmp80_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp79_);
        _tmp81_ = _tmp80_;
-       _tmp82_ = ref_object;
-       vala_ccode_function_add_assignment (_tmp75_, (ValaCCodeExpression*) _tmp81_, (ValaCCodeExpression*) _tmp82_);
-       _vala_ccode_node_unref0 (_tmp81_);
        _vala_ccode_node_unref0 (_tmp79_);
-       _vala_ccode_node_unref0 (_tmp77_);
-       _tmp83_ = vala_ccode_identifier_new ("g_object_ref");
+       ref_object = _tmp81_;
+       _tmp82_ = ref_object;
+       _tmp83_ = vala_ccode_identifier_new ("object");
        _tmp84_ = _tmp83_;
-       _tmp85_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp84_);
-       _vala_ccode_node_unref0 (ref_object);
-       ref_object = _tmp85_;
+       vala_ccode_function_call_add_argument (_tmp82_, (ValaCCodeExpression*) _tmp84_);
        _vala_ccode_node_unref0 (_tmp84_);
-       _tmp86_ = ref_object;
-       _tmp87_ = vala_ccode_identifier_new ("connection");
+       _tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp86_ = _tmp85_;
+       _tmp87_ = vala_ccode_identifier_new ("data");
        _tmp88_ = _tmp87_;
-       vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp88_);
-       _vala_ccode_node_unref0 (_tmp88_);
-       _tmp89_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp89_ = vala_ccode_constant_new ("0");
        _tmp90_ = _tmp89_;
-       _tmp91_ = vala_ccode_identifier_new ("data");
+       _tmp91_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp88_, (ValaCCodeExpression*) _tmp90_);
        _tmp92_ = _tmp91_;
-       _tmp93_ = vala_ccode_constant_new ("1");
-       _tmp94_ = _tmp93_;
-       _tmp95_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp92_, (ValaCCodeExpression*) _tmp94_);
-       _tmp96_ = _tmp95_;
-       _tmp97_ = ref_object;
-       vala_ccode_function_add_assignment (_tmp90_, (ValaCCodeExpression*) _tmp96_, (ValaCCodeExpression*) _tmp97_);
-       _vala_ccode_node_unref0 (_tmp96_);
-       _vala_ccode_node_unref0 (_tmp94_);
+       _tmp93_ = ref_object;
+       vala_ccode_function_add_assignment (_tmp86_, (ValaCCodeExpression*) _tmp92_, (ValaCCodeExpression*) _tmp93_);
        _vala_ccode_node_unref0 (_tmp92_);
-       _tmp98_ = vala_ccode_identifier_new ("g_strdup");
+       _vala_ccode_node_unref0 (_tmp90_);
+       _vala_ccode_node_unref0 (_tmp88_);
+       _tmp94_ = vala_ccode_identifier_new ("g_object_ref");
+       _tmp95_ = _tmp94_;
+       _tmp96_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp95_);
+       _vala_ccode_node_unref0 (ref_object);
+       ref_object = _tmp96_;
+       _vala_ccode_node_unref0 (_tmp95_);
+       _tmp97_ = ref_object;
+       _tmp98_ = vala_ccode_identifier_new ("connection");
        _tmp99_ = _tmp98_;
-       _tmp100_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp99_);
-       _tmp101_ = _tmp100_;
+       vala_ccode_function_call_add_argument (_tmp97_, (ValaCCodeExpression*) _tmp99_);
        _vala_ccode_node_unref0 (_tmp99_);
-       dup_path = _tmp101_;
-       _tmp102_ = dup_path;
-       _tmp103_ = vala_ccode_identifier_new ("path");
-       _tmp104_ = _tmp103_;
-       vala_ccode_function_call_add_argument (_tmp102_, (ValaCCodeExpression*) _tmp104_);
-       _vala_ccode_node_unref0 (_tmp104_);
-       _tmp105_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp106_ = _tmp105_;
-       _tmp107_ = vala_ccode_identifier_new ("data");
-       _tmp108_ = _tmp107_;
-       _tmp109_ = vala_ccode_constant_new ("2");
+       _tmp100_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp101_ = _tmp100_;
+       _tmp102_ = vala_ccode_identifier_new ("data");
+       _tmp103_ = _tmp102_;
+       _tmp104_ = vala_ccode_constant_new ("1");
+       _tmp105_ = _tmp104_;
+       _tmp106_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp103_, (ValaCCodeExpression*) _tmp105_);
+       _tmp107_ = _tmp106_;
+       _tmp108_ = ref_object;
+       vala_ccode_function_add_assignment (_tmp101_, (ValaCCodeExpression*) _tmp107_, (ValaCCodeExpression*) _tmp108_);
+       _vala_ccode_node_unref0 (_tmp107_);
+       _vala_ccode_node_unref0 (_tmp105_);
+       _vala_ccode_node_unref0 (_tmp103_);
+       _tmp109_ = vala_ccode_identifier_new ("g_strdup");
        _tmp110_ = _tmp109_;
-       _tmp111_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp108_, (ValaCCodeExpression*) _tmp110_);
+       _tmp111_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp110_);
        _tmp112_ = _tmp111_;
-       _tmp113_ = dup_path;
-       vala_ccode_function_add_assignment (_tmp106_, (ValaCCodeExpression*) _tmp112_, (ValaCCodeExpression*) _tmp113_);
-       _vala_ccode_node_unref0 (_tmp112_);
        _vala_ccode_node_unref0 (_tmp110_);
-       _vala_ccode_node_unref0 (_tmp108_);
-       _tmp114_ = vala_ccode_identifier_new ("g_dbus_connection_register_object");
+       dup_path = _tmp112_;
+       _tmp113_ = dup_path;
+       _tmp114_ = vala_ccode_identifier_new ("path");
        _tmp115_ = _tmp114_;
-       _tmp116_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp115_);
-       _tmp117_ = _tmp116_;
+       vala_ccode_function_call_add_argument (_tmp113_, (ValaCCodeExpression*) _tmp115_);
        _vala_ccode_node_unref0 (_tmp115_);
-       cregister = _tmp117_;
-       _tmp118_ = cregister;
-       _tmp119_ = vala_ccode_identifier_new ("connection");
-       _tmp120_ = _tmp119_;
-       vala_ccode_function_call_add_argument (_tmp118_, (ValaCCodeExpression*) _tmp120_);
-       _vala_ccode_node_unref0 (_tmp120_);
-       _tmp121_ = cregister;
-       _tmp122_ = vala_ccode_identifier_new ("path");
+       _tmp116_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp117_ = _tmp116_;
+       _tmp118_ = vala_ccode_identifier_new ("data");
+       _tmp119_ = _tmp118_;
+       _tmp120_ = vala_ccode_constant_new ("2");
+       _tmp121_ = _tmp120_;
+       _tmp122_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp119_, (ValaCCodeExpression*) _tmp121_);
        _tmp123_ = _tmp122_;
-       vala_ccode_function_call_add_argument (_tmp121_, (ValaCCodeExpression*) _tmp123_);
+       _tmp124_ = dup_path;
+       vala_ccode_function_add_assignment (_tmp117_, (ValaCCodeExpression*) _tmp123_, (ValaCCodeExpression*) _tmp124_);
        _vala_ccode_node_unref0 (_tmp123_);
-       _tmp124_ = cregister;
-       _tmp125_ = sym;
-       _tmp126_ = vala_gd_bus_server_module_get_interface_info (self, _tmp125_);
-       _tmp127_ = _tmp126_;
-       _tmp128_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp127_);
-       _tmp129_ = _tmp128_;
-       _tmp130_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp129_, "GDBusInterfaceInfo *");
+       _vala_ccode_node_unref0 (_tmp121_);
+       _vala_ccode_node_unref0 (_tmp119_);
+       _tmp125_ = vala_ccode_identifier_new ("g_dbus_connection_register_object");
+       _tmp126_ = _tmp125_;
+       _tmp127_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp126_);
+       _tmp128_ = _tmp127_;
+       _vala_ccode_node_unref0 (_tmp126_);
+       cregister = _tmp128_;
+       _tmp129_ = cregister;
+       _tmp130_ = vala_ccode_identifier_new ("connection");
        _tmp131_ = _tmp130_;
-       vala_ccode_function_call_add_argument (_tmp124_, (ValaCCodeExpression*) _tmp131_);
+       vala_ccode_function_call_add_argument (_tmp129_, (ValaCCodeExpression*) _tmp131_);
        _vala_ccode_node_unref0 (_tmp131_);
-       _vala_ccode_node_unref0 (_tmp129_);
-       _vala_ccode_node_unref0 (_tmp127_);
        _tmp132_ = cregister;
-       _tmp133_ = sym;
-       _tmp134_ = vala_gd_bus_server_module_get_interface_vtable (self, _tmp133_);
-       _tmp135_ = _tmp134_;
-       _tmp136_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp135_);
-       _tmp137_ = _tmp136_;
-       vala_ccode_function_call_add_argument (_tmp132_, (ValaCCodeExpression*) _tmp137_);
-       _vala_ccode_node_unref0 (_tmp137_);
-       _vala_ccode_node_unref0 (_tmp135_);
-       _tmp138_ = cregister;
-       _tmp139_ = vala_ccode_identifier_new ("data");
+       _tmp133_ = vala_ccode_identifier_new ("path");
+       _tmp134_ = _tmp133_;
+       vala_ccode_function_call_add_argument (_tmp132_, (ValaCCodeExpression*) _tmp134_);
+       _vala_ccode_node_unref0 (_tmp134_);
+       _tmp135_ = cregister;
+       _tmp136_ = sym;
+       _tmp137_ = vala_gd_bus_module_get_interface_info ((ValaGDBusModule*) self, _tmp136_);
+       _tmp138_ = _tmp137_;
+       _tmp139_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp138_);
        _tmp140_ = _tmp139_;
-       vala_ccode_function_call_add_argument (_tmp138_, (ValaCCodeExpression*) _tmp140_);
+       _tmp141_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp140_, "GDBusInterfaceInfo *");
+       _tmp142_ = _tmp141_;
+       vala_ccode_function_call_add_argument (_tmp135_, (ValaCCodeExpression*) _tmp142_);
+       _vala_ccode_node_unref0 (_tmp142_);
        _vala_ccode_node_unref0 (_tmp140_);
-       _tmp141_ = cregister;
-       _tmp142_ = sym;
-       _tmp143_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp142_);
-       _tmp144_ = _tmp143_;
-       _tmp145_ = g_strconcat ("_", _tmp144_, NULL);
+       _vala_ccode_node_unref0 (_tmp138_);
+       _tmp143_ = cregister;
+       _tmp144_ = sym;
+       _tmp145_ = vala_gd_bus_server_module_get_interface_vtable (self, _tmp144_);
        _tmp146_ = _tmp145_;
-       _tmp147_ = g_strconcat (_tmp146_, "unregister_object", NULL);
+       _tmp147_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp146_);
        _tmp148_ = _tmp147_;
-       _tmp149_ = vala_ccode_identifier_new (_tmp148_);
-       _tmp150_ = _tmp149_;
-       vala_ccode_function_call_add_argument (_tmp141_, (ValaCCodeExpression*) _tmp150_);
-       _vala_ccode_node_unref0 (_tmp150_);
-       _g_free0 (_tmp148_);
-       _g_free0 (_tmp146_);
-       _g_free0 (_tmp144_);
-       _tmp151_ = cregister;
-       _tmp152_ = vala_ccode_identifier_new ("error");
-       _tmp153_ = _tmp152_;
-       vala_ccode_function_call_add_argument (_tmp151_, (ValaCCodeExpression*) _tmp153_);
-       _vala_ccode_node_unref0 (_tmp153_);
-       _tmp154_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       vala_ccode_function_call_add_argument (_tmp143_, (ValaCCodeExpression*) _tmp148_);
+       _vala_ccode_node_unref0 (_tmp148_);
+       _vala_ccode_node_unref0 (_tmp146_);
+       _tmp149_ = cregister;
+       _tmp150_ = vala_ccode_identifier_new ("data");
+       _tmp151_ = _tmp150_;
+       vala_ccode_function_call_add_argument (_tmp149_, (ValaCCodeExpression*) _tmp151_);
+       _vala_ccode_node_unref0 (_tmp151_);
+       _tmp152_ = cregister;
+       _tmp153_ = sym;
+       _tmp154_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp153_);
        _tmp155_ = _tmp154_;
-       _tmp156_ = vala_ccode_identifier_new ("result");
+       _tmp156_ = g_strconcat ("_", _tmp155_, NULL);
        _tmp157_ = _tmp156_;
-       _tmp158_ = cregister;
-       vala_ccode_function_add_assignment (_tmp155_, (ValaCCodeExpression*) _tmp157_, (ValaCCodeExpression*) _tmp158_);
-       _vala_ccode_node_unref0 (_tmp157_);
-       _tmp159_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp160_ = _tmp159_;
-       _tmp161_ = vala_ccode_identifier_new ("result");
-       _tmp162_ = _tmp161_;
-       _tmp163_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp162_);
+       _tmp158_ = g_strconcat (_tmp157_, "unregister_object", NULL);
+       _tmp159_ = _tmp158_;
+       _tmp160_ = vala_ccode_identifier_new (_tmp159_);
+       _tmp161_ = _tmp160_;
+       vala_ccode_function_call_add_argument (_tmp152_, (ValaCCodeExpression*) _tmp161_);
+       _vala_ccode_node_unref0 (_tmp161_);
+       _g_free0 (_tmp159_);
+       _g_free0 (_tmp157_);
+       _g_free0 (_tmp155_);
+       _tmp162_ = cregister;
+       _tmp163_ = vala_ccode_identifier_new ("error");
        _tmp164_ = _tmp163_;
-       vala_ccode_function_open_if (_tmp160_, (ValaCCodeExpression*) _tmp164_);
+       vala_ccode_function_call_add_argument (_tmp162_, (ValaCCodeExpression*) _tmp164_);
        _vala_ccode_node_unref0 (_tmp164_);
-       _vala_ccode_node_unref0 (_tmp162_);
        _tmp165_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp166_ = _tmp165_;
-       _tmp167_ = vala_ccode_constant_new ("0");
+       _tmp167_ = vala_ccode_identifier_new ("result");
        _tmp168_ = _tmp167_;
-       vala_ccode_function_add_return (_tmp166_, (ValaCCodeExpression*) _tmp168_);
+       _tmp169_ = cregister;
+       vala_ccode_function_add_assignment (_tmp166_, (ValaCCodeExpression*) _tmp168_, (ValaCCodeExpression*) _tmp169_);
        _vala_ccode_node_unref0 (_tmp168_);
-       _tmp169_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp170_ = _tmp169_;
-       vala_ccode_function_close (_tmp170_);
-       _tmp171_ = sym;
-       vala_gd_bus_server_module_handle_signals (self, _tmp171_, TRUE);
-       _tmp172_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp170_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp171_ = _tmp170_;
+       _tmp172_ = vala_ccode_identifier_new ("result");
        _tmp173_ = _tmp172_;
-       _tmp174_ = vala_ccode_identifier_new ("result");
+       _tmp174_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp173_);
        _tmp175_ = _tmp174_;
-       vala_ccode_function_add_return (_tmp173_, (ValaCCodeExpression*) _tmp175_);
+       vala_ccode_function_open_if (_tmp171_, (ValaCCodeExpression*) _tmp175_);
        _vala_ccode_node_unref0 (_tmp175_);
-       vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-       _tmp176_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp177_ = cfunc;
-       vala_ccode_file_add_function (_tmp176_, _tmp177_);
-       _tmp178_ = sym;
-       _tmp179_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp178_);
-       _tmp180_ = _tmp179_;
-       _tmp181_ = g_strconcat ("_", _tmp180_, NULL);
-       _tmp182_ = _tmp181_;
-       _tmp183_ = g_strconcat (_tmp182_, "unregister_object", NULL);
+       _vala_ccode_node_unref0 (_tmp173_);
+       _tmp176_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp177_ = _tmp176_;
+       _tmp178_ = vala_ccode_constant_new ("0");
+       _tmp179_ = _tmp178_;
+       vala_ccode_function_add_return (_tmp177_, (ValaCCodeExpression*) _tmp179_);
+       _vala_ccode_node_unref0 (_tmp179_);
+       _tmp180_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp181_ = _tmp180_;
+       vala_ccode_function_close (_tmp181_);
+       _tmp182_ = sym;
+       vala_gd_bus_server_module_handle_signals (self, _tmp182_, TRUE);
+       _tmp183_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp184_ = _tmp183_;
-       _tmp185_ = vala_ccode_function_new (_tmp184_, "void");
-       _vala_ccode_node_unref0 (cfunc);
-       cfunc = _tmp185_;
-       _g_free0 (_tmp184_);
-       _g_free0 (_tmp182_);
-       _g_free0 (_tmp180_);
-       _tmp186_ = cfunc;
-       _tmp187_ = vala_ccode_parameter_new ("user_data", "gpointer");
-       _tmp188_ = _tmp187_;
-       vala_ccode_function_add_parameter (_tmp186_, _tmp188_);
-       _vala_ccode_node_unref0 (_tmp188_);
-       _tmp189_ = cfunc;
-       _tmp190_ = cfunc;
-       _tmp191_ = vala_ccode_function_get_modifiers (_tmp190_);
-       _tmp192_ = _tmp191_;
-       vala_ccode_function_set_modifiers (_tmp190_, _tmp192_ | VALA_CCODE_MODIFIERS_STATIC);
-       _tmp193_ = cfunc;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp193_);
-       _tmp194_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp185_ = vala_ccode_identifier_new ("result");
+       _tmp186_ = _tmp185_;
+       vala_ccode_function_add_return (_tmp184_, (ValaCCodeExpression*) _tmp186_);
+       _vala_ccode_node_unref0 (_tmp186_);
+       vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
+       _tmp187_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp188_ = cfunc;
+       vala_ccode_file_add_function (_tmp187_, _tmp188_);
+       _tmp189_ = sym;
+       _tmp190_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp189_);
+       _tmp191_ = _tmp190_;
+       _tmp192_ = g_strconcat ("_", _tmp191_, NULL);
+       _tmp193_ = _tmp192_;
+       _tmp194_ = g_strconcat (_tmp193_, "unregister_object", NULL);
        _tmp195_ = _tmp194_;
-       _tmp196_ = vala_ccode_identifier_new ("user_data");
-       _tmp197_ = _tmp196_;
-       _tmp198_ = vala_ccode_variable_declarator_new ("data", (ValaCCodeExpression*) _tmp197_, NULL);
+       _tmp196_ = vala_ccode_function_new (_tmp195_, "void");
+       _vala_ccode_node_unref0 (cfunc);
+       cfunc = _tmp196_;
+       _g_free0 (_tmp195_);
+       _g_free0 (_tmp193_);
+       _g_free0 (_tmp191_);
+       _tmp197_ = cfunc;
+       _tmp198_ = vala_ccode_parameter_new ("user_data", "gpointer");
        _tmp199_ = _tmp198_;
-       vala_ccode_function_add_declaration (_tmp195_, "gpointer*", (ValaCCodeDeclarator*) _tmp199_, 0);
+       vala_ccode_function_add_parameter (_tmp197_, _tmp199_);
        _vala_ccode_node_unref0 (_tmp199_);
-       _vala_ccode_node_unref0 (_tmp197_);
-       _tmp200_ = sym;
-       vala_gd_bus_server_module_handle_signals (self, _tmp200_, FALSE);
-       _tmp201_ = sym;
-       _tmp202_ = vala_ccode_base_module_get_ccode_unref_function (_tmp201_);
+       _tmp200_ = cfunc;
+       _tmp201_ = cfunc;
+       _tmp202_ = vala_ccode_function_get_modifiers (_tmp201_);
        _tmp203_ = _tmp202_;
-       _tmp204_ = vala_ccode_identifier_new (_tmp203_);
-       _tmp205_ = _tmp204_;
-       _tmp206_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp205_);
-       _tmp207_ = _tmp206_;
-       _vala_ccode_node_unref0 (_tmp205_);
-       _g_free0 (_tmp203_);
-       unref_object = _tmp207_;
-       _tmp208_ = unref_object;
-       _tmp209_ = vala_ccode_identifier_new ("data");
+       vala_ccode_function_set_modifiers (_tmp201_, _tmp203_ | VALA_CCODE_MODIFIERS_STATIC);
+       _tmp204_ = cfunc;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp204_);
+       _tmp205_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp206_ = _tmp205_;
+       _tmp207_ = vala_ccode_identifier_new ("user_data");
+       _tmp208_ = _tmp207_;
+       _tmp209_ = vala_ccode_variable_declarator_new ("data", (ValaCCodeExpression*) _tmp208_, NULL);
        _tmp210_ = _tmp209_;
-       _tmp211_ = vala_ccode_constant_new ("0");
-       _tmp212_ = _tmp211_;
-       _tmp213_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp210_, (ValaCCodeExpression*) _tmp212_);
-       _tmp214_ = _tmp213_;
-       vala_ccode_function_call_add_argument (_tmp208_, (ValaCCodeExpression*) _tmp214_);
-       _vala_ccode_node_unref0 (_tmp214_);
-       _vala_ccode_node_unref0 (_tmp212_);
+       vala_ccode_function_add_declaration (_tmp206_, "gpointer*", (ValaCCodeDeclarator*) _tmp210_, 0);
        _vala_ccode_node_unref0 (_tmp210_);
-       _tmp215_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _vala_ccode_node_unref0 (_tmp208_);
+       _tmp211_ = sym;
+       vala_gd_bus_server_module_handle_signals (self, _tmp211_, FALSE);
+       _tmp212_ = sym;
+       _tmp213_ = vala_ccode_base_module_get_ccode_unref_function (_tmp212_);
+       _tmp214_ = _tmp213_;
+       _tmp215_ = vala_ccode_identifier_new (_tmp214_);
        _tmp216_ = _tmp215_;
-       _tmp217_ = unref_object;
-       vala_ccode_function_add_expression (_tmp216_, (ValaCCodeExpression*) _tmp217_);
-       _tmp218_ = vala_ccode_identifier_new ("g_object_unref");
-       _tmp219_ = _tmp218_;
-       _tmp220_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp219_);
-       _vala_ccode_node_unref0 (unref_object);
-       unref_object = _tmp220_;
-       _vala_ccode_node_unref0 (_tmp219_);
-       _tmp221_ = unref_object;
-       _tmp222_ = vala_ccode_identifier_new ("data");
+       _tmp217_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp216_);
+       _tmp218_ = _tmp217_;
+       _vala_ccode_node_unref0 (_tmp216_);
+       _g_free0 (_tmp214_);
+       unref_object = _tmp218_;
+       _tmp219_ = unref_object;
+       _tmp220_ = vala_ccode_identifier_new ("data");
+       _tmp221_ = _tmp220_;
+       _tmp222_ = vala_ccode_constant_new ("0");
        _tmp223_ = _tmp222_;
-       _tmp224_ = vala_ccode_constant_new ("1");
+       _tmp224_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp221_, (ValaCCodeExpression*) _tmp223_);
        _tmp225_ = _tmp224_;
-       _tmp226_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp223_, (ValaCCodeExpression*) _tmp225_);
-       _tmp227_ = _tmp226_;
-       vala_ccode_function_call_add_argument (_tmp221_, (ValaCCodeExpression*) _tmp227_);
-       _vala_ccode_node_unref0 (_tmp227_);
+       vala_ccode_function_call_add_argument (_tmp219_, (ValaCCodeExpression*) _tmp225_);
        _vala_ccode_node_unref0 (_tmp225_);
        _vala_ccode_node_unref0 (_tmp223_);
-       _tmp228_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp229_ = _tmp228_;
-       _tmp230_ = unref_object;
-       vala_ccode_function_add_expression (_tmp229_, (ValaCCodeExpression*) _tmp230_);
-       _tmp231_ = vala_ccode_identifier_new ("g_free");
-       _tmp232_ = _tmp231_;
-       _tmp233_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp232_);
+       _vala_ccode_node_unref0 (_tmp221_);
+       _tmp226_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp227_ = _tmp226_;
+       _tmp228_ = unref_object;
+       vala_ccode_function_add_expression (_tmp227_, (ValaCCodeExpression*) _tmp228_);
+       _tmp229_ = vala_ccode_identifier_new ("g_object_unref");
+       _tmp230_ = _tmp229_;
+       _tmp231_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp230_);
+       _vala_ccode_node_unref0 (unref_object);
+       unref_object = _tmp231_;
+       _vala_ccode_node_unref0 (_tmp230_);
+       _tmp232_ = unref_object;
+       _tmp233_ = vala_ccode_identifier_new ("data");
        _tmp234_ = _tmp233_;
-       _vala_ccode_node_unref0 (_tmp232_);
-       free_path = _tmp234_;
-       _tmp235_ = free_path;
-       _tmp236_ = vala_ccode_identifier_new ("data");
-       _tmp237_ = _tmp236_;
-       _tmp238_ = vala_ccode_constant_new ("2");
-       _tmp239_ = _tmp238_;
-       _tmp240_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp237_, (ValaCCodeExpression*) _tmp239_);
-       _tmp241_ = _tmp240_;
-       vala_ccode_function_call_add_argument (_tmp235_, (ValaCCodeExpression*) _tmp241_);
-       _vala_ccode_node_unref0 (_tmp241_);
-       _vala_ccode_node_unref0 (_tmp239_);
-       _vala_ccode_node_unref0 (_tmp237_);
-       _tmp242_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp235_ = vala_ccode_constant_new ("1");
+       _tmp236_ = _tmp235_;
+       _tmp237_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp234_, (ValaCCodeExpression*) _tmp236_);
+       _tmp238_ = _tmp237_;
+       vala_ccode_function_call_add_argument (_tmp232_, (ValaCCodeExpression*) _tmp238_);
+       _vala_ccode_node_unref0 (_tmp238_);
+       _vala_ccode_node_unref0 (_tmp236_);
+       _vala_ccode_node_unref0 (_tmp234_);
+       _tmp239_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp240_ = _tmp239_;
+       _tmp241_ = unref_object;
+       vala_ccode_function_add_expression (_tmp240_, (ValaCCodeExpression*) _tmp241_);
+       _tmp242_ = vala_ccode_identifier_new ("g_free");
        _tmp243_ = _tmp242_;
-       _tmp244_ = free_path;
-       vala_ccode_function_add_expression (_tmp243_, (ValaCCodeExpression*) _tmp244_);
-       _tmp245_ = vala_ccode_identifier_new ("g_free");
-       _tmp246_ = _tmp245_;
-       _tmp247_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp246_);
+       _tmp244_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp243_);
+       _tmp245_ = _tmp244_;
+       _vala_ccode_node_unref0 (_tmp243_);
+       free_path = _tmp245_;
+       _tmp246_ = free_path;
+       _tmp247_ = vala_ccode_identifier_new ("data");
        _tmp248_ = _tmp247_;
-       _vala_ccode_node_unref0 (_tmp246_);
-       free_data = _tmp248_;
-       _tmp249_ = free_data;
-       _tmp250_ = vala_ccode_identifier_new ("data");
-       _tmp251_ = _tmp250_;
-       vala_ccode_function_call_add_argument (_tmp249_, (ValaCCodeExpression*) _tmp251_);
-       _vala_ccode_node_unref0 (_tmp251_);
-       _tmp252_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp253_ = _tmp252_;
-       _tmp254_ = free_data;
-       vala_ccode_function_add_expression (_tmp253_, (ValaCCodeExpression*) _tmp254_);
+       _tmp249_ = vala_ccode_constant_new ("2");
+       _tmp250_ = _tmp249_;
+       _tmp251_ = vala_ccode_element_access_new ((ValaCCodeExpression*) _tmp248_, (ValaCCodeExpression*) _tmp250_);
+       _tmp252_ = _tmp251_;
+       vala_ccode_function_call_add_argument (_tmp246_, (ValaCCodeExpression*) _tmp252_);
+       _vala_ccode_node_unref0 (_tmp252_);
+       _vala_ccode_node_unref0 (_tmp250_);
+       _vala_ccode_node_unref0 (_tmp248_);
+       _tmp253_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp254_ = _tmp253_;
+       _tmp255_ = free_path;
+       vala_ccode_function_add_expression (_tmp254_, (ValaCCodeExpression*) _tmp255_);
+       _tmp256_ = vala_ccode_identifier_new ("g_free");
+       _tmp257_ = _tmp256_;
+       _tmp258_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp257_);
+       _tmp259_ = _tmp258_;
+       _vala_ccode_node_unref0 (_tmp257_);
+       free_data = _tmp259_;
+       _tmp260_ = free_data;
+       _tmp261_ = vala_ccode_identifier_new ("data");
+       _tmp262_ = _tmp261_;
+       vala_ccode_function_call_add_argument (_tmp260_, (ValaCCodeExpression*) _tmp262_);
+       _vala_ccode_node_unref0 (_tmp262_);
+       _tmp263_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp264_ = _tmp263_;
+       _tmp265_ = free_data;
+       vala_ccode_function_add_expression (_tmp264_, (ValaCCodeExpression*) _tmp265_);
        vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-       _tmp255_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp256_ = cfunc;
-       vala_ccode_file_add_function_declaration (_tmp255_, _tmp256_);
-       _tmp257_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp258_ = cfunc;
-       vala_ccode_file_add_function (_tmp257_, _tmp258_);
+       _tmp266_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp267_ = cfunc;
+       vala_ccode_file_add_function_declaration (_tmp266_, _tmp267_);
+       _tmp268_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp269_ = cfunc;
+       vala_ccode_file_add_function (_tmp268_, _tmp269_);
        _vala_ccode_node_unref0 (free_data);
        _vala_ccode_node_unref0 (free_path);
        _vala_ccode_node_unref0 (unref_object);
@@ -9897,12 +7702,12 @@ ValaGDBusServerModule* vala_gd_bus_server_module_new (void) {
 
 static void vala_gd_bus_server_module_class_init (ValaGDBusServerModuleClass * klass) {
        vala_gd_bus_server_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method_call = vala_gd_bus_server_module_real_visit_method_call;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_class_declaration = vala_gd_bus_server_module_real_generate_class_declaration;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_interface_declaration = vala_gd_bus_server_module_real_generate_interface_declaration;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_gd_bus_server_module_real_visit_class;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_interface = vala_gd_bus_server_module_real_visit_interface;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->register_dbus_info = vala_gd_bus_server_module_real_register_dbus_info;
+       ((ValaCodeVisitorClass *) klass)->visit_method_call = vala_gd_bus_server_module_real_visit_method_call;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_class_declaration = vala_gd_bus_server_module_real_generate_class_declaration;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_interface_declaration = vala_gd_bus_server_module_real_generate_interface_declaration;
+       ((ValaCodeVisitorClass *) klass)->visit_class = vala_gd_bus_server_module_real_visit_class;
+       ((ValaCodeVisitorClass *) klass)->visit_interface = vala_gd_bus_server_module_real_visit_interface;
+       ((ValaCCodeBaseModuleClass *) klass)->register_dbus_info = vala_gd_bus_server_module_real_register_dbus_info;
 }
 
 
index fc4ca65..daf2a62 100644 (file)
  */
 
 public class Vala.GDBusServerModule : GDBusClientModule {
-       public static bool is_dbus_visible (CodeNode node) {
-               var dbus_attribute = node.get_attribute ("DBus");
-               if (dbus_attribute != null
-                   && dbus_attribute.has_argument ("visible")
-                   && !dbus_attribute.get_bool ("visible")) {
-                       return false;
-               }
-
-               return true;
-       }
-
-       public static string dbus_result_name (Method m) {
-               var dbus_name = m.get_attribute_string ("DBus", "result");
-               if (dbus_name != null && dbus_name != "") {
-                       return dbus_name;
-               }
-
-               return "result";
-       }
-
        string generate_dbus_wrapper (Method m, ObjectTypeSymbol sym, bool ready = false) {
                string wrapper_name = "_dbus_%s".printf (get_ccode_name (m));
 
@@ -812,214 +792,6 @@ public class Vala.GDBusServerModule : GDBusClientModule {
                cfile.add_function (cfunc);
        }
 
-       CCodeExpression get_method_info (ObjectTypeSymbol sym) {
-               var infos = new CCodeInitializerList ();
-
-               foreach (Method m in sym.get_methods ()) {
-                       if (m is CreationMethod || m.binding != MemberBinding.INSTANCE
-                           || m.overrides || m.access != SymbolAccessibility.PUBLIC) {
-                               continue;
-                       }
-                       if (!is_dbus_visible (m)) {
-                               continue;
-                       }
-
-                       var in_args_info = new CCodeInitializerList ();
-                       var out_args_info = new CCodeInitializerList ();
-
-                       foreach (Parameter param in m.get_parameters ()) {
-                               if (param.variable_type is ObjectType && param.variable_type.data_type.get_full_name () == "GLib.Cancellable") {
-                                       continue;
-                               }
-                               if (param.variable_type is ObjectType && param.variable_type.data_type.get_full_name () == "GLib.BusName") {
-                                       continue;
-                               }
-
-                               var info = new CCodeInitializerList ();
-                               info.append (new CCodeConstant ("-1"));
-                               info.append (new CCodeConstant ("\"%s\"".printf (param.name)));
-                               info.append (new CCodeConstant ("\"%s\"".printf (get_type_signature (param.variable_type, param))));
-
-                               var cdecl = new CCodeDeclaration ("const GDBusArgInfo");
-                               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_" + param.name, info));
-                               cdecl.modifiers = CCodeModifiers.STATIC;
-                               cfile.add_constant_declaration (cdecl);
-
-                               if (param.direction == ParameterDirection.IN) {
-                                       in_args_info.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_" + param.name)));
-                               } else {
-                                       out_args_info.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_" + param.name)));
-                               }
-                       }
-
-                       if (!(m.return_type is VoidType)) {
-                               var info = new CCodeInitializerList ();
-                               info.append (new CCodeConstant ("-1"));
-                               info.append (new CCodeConstant ("\"%s\"".printf (dbus_result_name (m))));
-                               info.append (new CCodeConstant ("\"%s\"".printf (get_type_signature (m.return_type, m))));
-
-                               var cdecl = new CCodeDeclaration ("const GDBusArgInfo");
-                               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_result", info));
-                               cdecl.modifiers = CCodeModifiers.STATIC;
-                               cfile.add_constant_declaration (cdecl);
-
-                               out_args_info.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_result")));
-                       }
-
-                       in_args_info.append (new CCodeConstant ("NULL"));
-                       out_args_info.append (new CCodeConstant ("NULL"));
-
-                       var cdecl = new CCodeDeclaration ("const GDBusArgInfo * const");
-                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_in[]", in_args_info));
-                       cdecl.modifiers = CCodeModifiers.STATIC;
-                       cfile.add_constant_declaration (cdecl);
-
-                       cdecl = new CCodeDeclaration ("const GDBusArgInfo * const");
-                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_out[]", out_args_info));
-                       cdecl.modifiers = CCodeModifiers.STATIC;
-                       cfile.add_constant_declaration (cdecl);
-
-                       var info = new CCodeInitializerList ();
-                       info.append (new CCodeConstant ("-1"));
-                       info.append (new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (m))));
-                       info.append (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_in")), "GDBusArgInfo **"));
-                       info.append (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + m.name + "_out")), "GDBusArgInfo **"));
-
-                       cdecl = new CCodeDeclaration ("const GDBusMethodInfo");
-                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_method_info_" + m.name, info));
-                       cdecl.modifiers = CCodeModifiers.STATIC;
-                       cfile.add_constant_declaration (cdecl);
-
-                       infos.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_method_info_" + m.name)));
-               }
-
-               infos.append (new CCodeConstant ("NULL"));
-
-               var cdecl = new CCodeDeclaration ("const GDBusMethodInfo * const");
-               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_method_info[]", infos));
-               cdecl.modifiers = CCodeModifiers.STATIC;
-               cfile.add_constant_declaration (cdecl);
-
-               return new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_method_info");
-       }
-
-       CCodeExpression get_signal_info (ObjectTypeSymbol sym) {
-               var infos = new CCodeInitializerList ();
-
-               foreach (Signal sig in sym.get_signals ()) {
-                       if (sig.access != SymbolAccessibility.PUBLIC) {
-                               continue;
-                       }
-                       if (!is_dbus_visible (sig)) {
-                               continue;
-                       }
-
-                       var args_info = new CCodeInitializerList ();
-
-                       foreach (Parameter param in sig.get_parameters ()) {
-                               var info = new CCodeInitializerList ();
-                               info.append (new CCodeConstant ("-1"));
-                               info.append (new CCodeConstant ("\"%s\"".printf (param.name)));
-                               info.append (new CCodeConstant ("\"%s\"".printf (get_type_signature (param.variable_type, param))));
-
-                               var cdecl = new CCodeDeclaration ("const GDBusArgInfo");
-                               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + get_ccode_name (sig) + "_" + param.name, info));
-                               cdecl.modifiers = CCodeModifiers.STATIC;
-                               cfile.add_constant_declaration (cdecl);
-
-                               args_info.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + get_ccode_name (sig) + "_" + param.name)));
-                       }
-
-                       args_info.append (new CCodeConstant ("NULL"));
-
-                       var cdecl = new CCodeDeclaration ("const GDBusArgInfo * const");
-                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + get_ccode_name (sig) + "[]", args_info));
-                       cdecl.modifiers = CCodeModifiers.STATIC;
-                       cfile.add_constant_declaration (cdecl);
-
-                       var info = new CCodeInitializerList ();
-                       info.append (new CCodeConstant ("-1"));
-                       info.append (new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (sig))));
-                       info.append (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_arg_info_" + get_ccode_name (sig))), "GDBusArgInfo **"));
-
-                       cdecl = new CCodeDeclaration ("const GDBusSignalInfo");
-                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_signal_info_" + get_ccode_name (sig), info));
-                       cdecl.modifiers = CCodeModifiers.STATIC;
-                       cfile.add_constant_declaration (cdecl);
-
-                       infos.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_signal_info_" + get_ccode_name (sig))));
-               }
-
-               infos.append (new CCodeConstant ("NULL"));
-
-               var cdecl = new CCodeDeclaration ("const GDBusSignalInfo * const");
-               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_signal_info[]", infos));
-               cdecl.modifiers = CCodeModifiers.STATIC;
-               cfile.add_constant_declaration (cdecl);
-
-               return new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_signal_info");
-       }
-
-       CCodeExpression get_property_info (ObjectTypeSymbol sym) {
-               var infos = new CCodeInitializerList ();
-
-               foreach (Property prop in sym.get_properties ()) {
-                       if (prop.binding != MemberBinding.INSTANCE
-                           || prop.overrides || prop.access != SymbolAccessibility.PUBLIC) {
-                               continue;
-                       }
-                       if (!is_dbus_visible (prop)) {
-                               continue;
-                       }
-
-                       var info = new CCodeInitializerList ();
-                       info.append (new CCodeConstant ("-1"));
-                       info.append (new CCodeConstant ("\"%s\"".printf (get_dbus_name_for_member (prop))));
-                       info.append (new CCodeConstant ("\"%s\"".printf (get_type_signature (prop.property_type, prop))));
-                       if (prop.get_accessor != null && prop.set_accessor != null) {
-                               info.append (new CCodeConstant ("G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE"));
-                       } else if (prop.get_accessor != null) {
-                               info.append (new CCodeConstant ("G_DBUS_PROPERTY_INFO_FLAGS_READABLE"));
-                       } else if (prop.set_accessor != null) {
-                               info.append (new CCodeConstant ("G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE"));
-                       } else {
-                               info.append (new CCodeConstant ("G_DBUS_PROPERTY_INFO_FLAGS_NONE"));
-                       }
-
-                       var cdecl = new CCodeDeclaration ("const GDBusPropertyInfo");
-                       cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_property_info_" + prop.name, info));
-                       cdecl.modifiers = CCodeModifiers.STATIC;
-                       cfile.add_constant_declaration (cdecl);
-
-                       infos.append (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_property_info_" + prop.name)));
-               }
-
-               infos.append (new CCodeConstant ("NULL"));
-
-               var cdecl = new CCodeDeclaration ("const GDBusPropertyInfo * const");
-               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_property_info[]", infos));
-               cdecl.modifiers = CCodeModifiers.STATIC;
-               cfile.add_constant_declaration (cdecl);
-
-               return new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_property_info");
-       }
-
-       CCodeExpression get_interface_info (ObjectTypeSymbol sym) {
-               var info = new CCodeInitializerList ();
-               info.append (new CCodeConstant ("-1"));
-               info.append (new CCodeConstant ("\"%s\"".printf (get_dbus_name (sym))));
-               info.append (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_method_info (sym)), "GDBusMethodInfo **"));
-               info.append (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_signal_info (sym)), "GDBusSignalInfo **"));
-               info.append (new CCodeCastExpression (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_property_info (sym)), "GDBusPropertyInfo **"));
-
-               var cdecl = new CCodeDeclaration ("const GDBusInterfaceInfo");
-               cdecl.add_declarator (new CCodeVariableDeclarator ("_" + get_ccode_lower_case_prefix (sym) + "dbus_interface_info", info));
-               cdecl.modifiers = CCodeModifiers.STATIC;
-               cfile.add_constant_declaration (cdecl);
-
-               return new CCodeIdentifier ("_" + get_ccode_lower_case_prefix (sym) + "dbus_interface_info");
-       }
-
        CCodeExpression get_interface_vtable (ObjectTypeSymbol sym) {
                var vtable = new CCodeInitializerList ();
                vtable.append (new CCodeIdentifier (get_ccode_lower_case_prefix (sym) + "dbus_interface_method_call"));
@@ -1198,6 +970,8 @@ public class Vala.GDBusServerModule : GDBusClientModule {
                cfunc.add_parameter (new CCodeParameter ("error", "GError**"));
                if (sym.is_private_symbol ()) {
                        cfunc.modifiers |= CCodeModifiers.STATIC;
+               } else if (context.hide_internal && sym.is_internal_symbol ()) {
+                       cfunc.modifiers |= CCodeModifiers.INTERNAL;
                }
                decl_space.add_function_declaration (cfunc);
        }
@@ -1219,6 +993,8 @@ public class Vala.GDBusServerModule : GDBusClientModule {
                cfunc.add_parameter (new CCodeParameter ("error", "GError**"));
                if (sym.is_private_symbol ()) {
                        cfunc.modifiers |= CCodeModifiers.STATIC;
+               } else if (context.hide_internal && sym.is_internal_symbol ()) {
+                       cfunc.modifiers |= CCodeModifiers.INTERNAL;
                }
 
                push_function (cfunc);
index 57e3011..03c8731 100644 (file)
@@ -428,7 +428,7 @@ gchar* vala_ccode_base_module_get_ccode_upper_case_name (ValaSymbol* sym, const
 static void vala_gerror_module_real_visit_error_domain (ValaCodeVisitor* base, ValaErrorDomain* edomain);
 void vala_ccode_base_module_generate_error_domain_declaration (ValaCCodeBaseModule* self, ValaErrorDomain* edomain, ValaCCodeFile* decl_space);
 void vala_ccode_base_module_push_function (ValaCCodeBaseModule* self, ValaCCodeFunction* func);
-gchar* vala_ccode_base_module_get_ccode_lower_case_name (ValaCodeNode* node, const gchar* infix);
+gchar* vala_ccode_base_module_get_quark_name (ValaErrorDomain* edomain);
 ValaCCodeFunction* vala_ccode_base_module_get_ccode (ValaCCodeBaseModule* self);
 void vala_ccode_base_module_pop_function (ValaCCodeBaseModule* self);
 static void vala_gerror_module_real_visit_throw_statement (ValaCodeVisitor* base, ValaThrowStatement* stmt);
@@ -456,6 +456,7 @@ ValaTryStatement* vala_ccode_base_module_get_current_try (ValaCCodeBaseModule* s
 ValaCatchClause* vala_ccode_base_module_get_current_catch (ValaCCodeBaseModule* self);
 static void vala_gerror_module_real_visit_try_statement (ValaCodeVisitor* base, ValaTryStatement* stmt);
 void vala_ccode_base_module_set_current_try (ValaCCodeBaseModule* self, ValaTryStatement* value);
+gchar* vala_ccode_base_module_get_ccode_lower_case_name (ValaCodeNode* node, const gchar* infix);
 void vala_ccode_base_module_set_current_catch (ValaCCodeBaseModule* self, ValaCatchClause* value);
 static void vala_gerror_module_real_visit_catch_clause (ValaCodeVisitor* base, ValaCatchClause* clause);
 gchar* vala_ccode_base_module_get_local_cname (ValaCCodeBaseModule* self, ValaLocalVariable* local);
@@ -787,11 +788,11 @@ static void vala_gerror_module_real_visit_error_domain (ValaCodeVisitor* base, V
        _vala_ccode_node_unref0 (_tmp34_);
        cquark_call = _tmp36_;
        _tmp37_ = edomain;
-       _tmp38_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp37_, NULL);
+       _tmp38_ = vala_ccode_base_module_get_quark_name (_tmp37_);
        _tmp39_ = _tmp38_;
        _tmp40_ = g_strconcat ("\"", _tmp39_, NULL);
        _tmp41_ = _tmp40_;
-       _tmp42_ = g_strconcat (_tmp41_, "-quark\"", NULL);
+       _tmp42_ = g_strconcat (_tmp41_, "\"", NULL);
        _tmp43_ = _tmp42_;
        _tmp44_ = vala_ccode_constant_new (_tmp43_);
        _tmp45_ = _tmp44_;
@@ -1279,9 +1280,9 @@ static void vala_gerror_module_real_add_simple_check (ValaCCodeBaseModule* base,
        ValaCCodeExpression* inner_error = NULL;
        ValaCCodeExpression* _tmp0_ = NULL;
        gboolean _tmp1_ = FALSE;
-       ValaTryStatement* _tmp10_ = NULL;
-       ValaTryStatement* _tmp11_ = NULL;
-       gboolean _tmp219_ = FALSE;
+       ValaTryStatement* _tmp16_ = NULL;
+       ValaTryStatement* _tmp17_ = NULL;
+       gboolean _tmp225_ = FALSE;
        self = (ValaGErrorModule*) base;
        g_return_if_fail (node != NULL);
        vala_ccode_base_module_set_current_method_inner_error ((ValaCCodeBaseModule*) self, TRUE);
@@ -1296,9 +1297,16 @@ static void vala_gerror_module_real_add_simple_check (ValaCCodeBaseModule* base,
                ValaCCodeConstant* _tmp4_ = NULL;
                ValaCCodeBinaryExpression* _tmp5_ = NULL;
                ValaCCodeBinaryExpression* _tmp6_ = NULL;
-               ValaCCodeFunction* _tmp7_ = NULL;
-               ValaCCodeFunction* _tmp8_ = NULL;
-               ValaCCodeBinaryExpression* _tmp9_ = NULL;
+               ValaCCodeFunctionCall* unlikely = NULL;
+               ValaCCodeIdentifier* _tmp7_ = NULL;
+               ValaCCodeIdentifier* _tmp8_ = NULL;
+               ValaCCodeFunctionCall* _tmp9_ = NULL;
+               ValaCCodeFunctionCall* _tmp10_ = NULL;
+               ValaCCodeFunctionCall* _tmp11_ = NULL;
+               ValaCCodeBinaryExpression* _tmp12_ = NULL;
+               ValaCCodeFunction* _tmp13_ = NULL;
+               ValaCCodeFunction* _tmp14_ = NULL;
+               ValaCCodeFunctionCall* _tmp15_ = NULL;
                _tmp2_ = inner_error;
                _tmp3_ = vala_ccode_constant_new ("NULL");
                _tmp4_ = _tmp3_;
@@ -1306,209 +1314,219 @@ static void vala_gerror_module_real_add_simple_check (ValaCCodeBaseModule* base,
                _tmp6_ = _tmp5_;
                _vala_ccode_node_unref0 (_tmp4_);
                ccond = _tmp6_;
-               _tmp7_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp7_ = vala_ccode_identifier_new ("G_UNLIKELY");
                _tmp8_ = _tmp7_;
-               _tmp9_ = ccond;
-               vala_ccode_function_open_if (_tmp8_, (ValaCCodeExpression*) _tmp9_);
+               _tmp9_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp8_);
+               _tmp10_ = _tmp9_;
+               _vala_ccode_node_unref0 (_tmp8_);
+               unlikely = _tmp10_;
+               _tmp11_ = unlikely;
+               _tmp12_ = ccond;
+               vala_ccode_function_call_add_argument (_tmp11_, (ValaCCodeExpression*) _tmp12_);
+               _tmp13_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp14_ = _tmp13_;
+               _tmp15_ = unlikely;
+               vala_ccode_function_open_if (_tmp14_, (ValaCCodeExpression*) _tmp15_);
+               _vala_ccode_node_unref0 (unlikely);
                _vala_ccode_node_unref0 (ccond);
        }
-       _tmp10_ = vala_ccode_base_module_get_current_try ((ValaCCodeBaseModule*) self);
-       _tmp11_ = _tmp10_;
-       if (_tmp11_ != NULL) {
-               gboolean _tmp12_ = FALSE;
+       _tmp16_ = vala_ccode_base_module_get_current_try ((ValaCCodeBaseModule*) self);
+       _tmp17_ = _tmp16_;
+       if (_tmp17_ != NULL) {
+               gboolean _tmp18_ = FALSE;
                ValaArrayList* error_types = NULL;
-               GEqualFunc _tmp21_ = NULL;
-               ValaArrayList* _tmp22_ = NULL;
+               GEqualFunc _tmp27_ = NULL;
+               ValaArrayList* _tmp28_ = NULL;
                gboolean has_general_catch_clause = FALSE;
-               gboolean _tmp36_ = FALSE;
-               gboolean _tmp153_ = FALSE;
-               _tmp12_ = self->priv->is_in_catch;
-               if (_tmp12_) {
-                       ValaSymbol* _tmp13_ = NULL;
-                       ValaSymbol* _tmp14_ = NULL;
-                       ValaCatchClause* _tmp15_ = NULL;
-                       ValaCatchClause* _tmp16_ = NULL;
-                       _tmp13_ = vala_ccode_base_module_get_current_symbol ((ValaCCodeBaseModule*) self);
-                       _tmp14_ = _tmp13_;
-                       _tmp15_ = vala_ccode_base_module_get_current_catch ((ValaCCodeBaseModule*) self);
-                       _tmp16_ = _tmp15_;
-                       vala_ccode_base_module_append_local_free ((ValaCCodeBaseModule*) self, _tmp14_, FALSE, (ValaCodeNode*) _tmp16_);
-               } else {
-                       ValaSymbol* _tmp17_ = NULL;
-                       ValaSymbol* _tmp18_ = NULL;
-                       ValaTryStatement* _tmp19_ = NULL;
-                       ValaTryStatement* _tmp20_ = NULL;
-                       _tmp17_ = vala_ccode_base_module_get_current_symbol ((ValaCCodeBaseModule*) self);
-                       _tmp18_ = _tmp17_;
-                       _tmp19_ = vala_ccode_base_module_get_current_try ((ValaCCodeBaseModule*) self);
+               gboolean _tmp42_ = FALSE;
+               gboolean _tmp159_ = FALSE;
+               _tmp18_ = self->priv->is_in_catch;
+               if (_tmp18_) {
+                       ValaSymbol* _tmp19_ = NULL;
+                       ValaSymbol* _tmp20_ = NULL;
+                       ValaCatchClause* _tmp21_ = NULL;
+                       ValaCatchClause* _tmp22_ = NULL;
+                       _tmp19_ = vala_ccode_base_module_get_current_symbol ((ValaCCodeBaseModule*) self);
                        _tmp20_ = _tmp19_;
-                       vala_ccode_base_module_append_local_free ((ValaCCodeBaseModule*) self, _tmp18_, FALSE, (ValaCodeNode*) _tmp20_);
+                       _tmp21_ = vala_ccode_base_module_get_current_catch ((ValaCCodeBaseModule*) self);
+                       _tmp22_ = _tmp21_;
+                       vala_ccode_base_module_append_local_free ((ValaCCodeBaseModule*) self, _tmp20_, FALSE, (ValaCodeNode*) _tmp22_);
+               } else {
+                       ValaSymbol* _tmp23_ = NULL;
+                       ValaSymbol* _tmp24_ = NULL;
+                       ValaTryStatement* _tmp25_ = NULL;
+                       ValaTryStatement* _tmp26_ = NULL;
+                       _tmp23_ = vala_ccode_base_module_get_current_symbol ((ValaCCodeBaseModule*) self);
+                       _tmp24_ = _tmp23_;
+                       _tmp25_ = vala_ccode_base_module_get_current_try ((ValaCCodeBaseModule*) self);
+                       _tmp26_ = _tmp25_;
+                       vala_ccode_base_module_append_local_free ((ValaCCodeBaseModule*) self, _tmp24_, FALSE, (ValaCodeNode*) _tmp26_);
                }
-               _tmp21_ = g_direct_equal;
-               _tmp22_ = vala_array_list_new (VALA_TYPE_DATA_TYPE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp21_);
-               error_types = _tmp22_;
+               _tmp27_ = g_direct_equal;
+               _tmp28_ = vala_array_list_new (VALA_TYPE_DATA_TYPE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp27_);
+               error_types = _tmp28_;
                {
                        ValaList* _node_error_type_list = NULL;
-                       ValaCodeNode* _tmp23_ = NULL;
-                       ValaList* _tmp24_ = NULL;
+                       ValaCodeNode* _tmp29_ = NULL;
+                       ValaList* _tmp30_ = NULL;
                        gint _node_error_type_size = 0;
-                       ValaList* _tmp25_ = NULL;
-                       gint _tmp26_ = 0;
-                       gint _tmp27_ = 0;
+                       ValaList* _tmp31_ = NULL;
+                       gint _tmp32_ = 0;
+                       gint _tmp33_ = 0;
                        gint _node_error_type_index = 0;
-                       _tmp23_ = node;
-                       _tmp24_ = vala_code_node_get_error_types (_tmp23_);
-                       _node_error_type_list = _tmp24_;
-                       _tmp25_ = _node_error_type_list;
-                       _tmp26_ = vala_collection_get_size ((ValaCollection*) _tmp25_);
-                       _tmp27_ = _tmp26_;
-                       _node_error_type_size = _tmp27_;
+                       _tmp29_ = node;
+                       _tmp30_ = vala_code_node_get_error_types (_tmp29_);
+                       _node_error_type_list = _tmp30_;
+                       _tmp31_ = _node_error_type_list;
+                       _tmp32_ = vala_collection_get_size ((ValaCollection*) _tmp31_);
+                       _tmp33_ = _tmp32_;
+                       _node_error_type_size = _tmp33_;
                        _node_error_type_index = -1;
                        while (TRUE) {
-                               gint _tmp28_ = 0;
-                               gint _tmp29_ = 0;
-                               gint _tmp30_ = 0;
+                               gint _tmp34_ = 0;
+                               gint _tmp35_ = 0;
+                               gint _tmp36_ = 0;
                                ValaDataType* node_error_type = NULL;
-                               ValaList* _tmp31_ = NULL;
-                               gint _tmp32_ = 0;
-                               gpointer _tmp33_ = NULL;
-                               ValaArrayList* _tmp34_ = NULL;
-                               ValaDataType* _tmp35_ = NULL;
-                               _tmp28_ = _node_error_type_index;
-                               _node_error_type_index = _tmp28_ + 1;
-                               _tmp29_ = _node_error_type_index;
-                               _tmp30_ = _node_error_type_size;
-                               if (!(_tmp29_ < _tmp30_)) {
+                               ValaList* _tmp37_ = NULL;
+                               gint _tmp38_ = 0;
+                               gpointer _tmp39_ = NULL;
+                               ValaArrayList* _tmp40_ = NULL;
+                               ValaDataType* _tmp41_ = NULL;
+                               _tmp34_ = _node_error_type_index;
+                               _node_error_type_index = _tmp34_ + 1;
+                               _tmp35_ = _node_error_type_index;
+                               _tmp36_ = _node_error_type_size;
+                               if (!(_tmp35_ < _tmp36_)) {
                                        break;
                                }
-                               _tmp31_ = _node_error_type_list;
-                               _tmp32_ = _node_error_type_index;
-                               _tmp33_ = vala_list_get (_tmp31_, _tmp32_);
-                               node_error_type = (ValaDataType*) _tmp33_;
-                               _tmp34_ = error_types;
-                               _tmp35_ = node_error_type;
-                               vala_collection_add ((ValaCollection*) _tmp34_, _tmp35_);
+                               _tmp37_ = _node_error_type_list;
+                               _tmp38_ = _node_error_type_index;
+                               _tmp39_ = vala_list_get (_tmp37_, _tmp38_);
+                               node_error_type = (ValaDataType*) _tmp39_;
+                               _tmp40_ = error_types;
+                               _tmp41_ = node_error_type;
+                               vala_collection_add ((ValaCollection*) _tmp40_, _tmp41_);
                                _vala_code_node_unref0 (node_error_type);
                        }
                        _vala_iterable_unref0 (_node_error_type_list);
                }
                has_general_catch_clause = FALSE;
-               _tmp36_ = self->priv->is_in_catch;
-               if (!_tmp36_) {
+               _tmp42_ = self->priv->is_in_catch;
+               if (!_tmp42_) {
                        ValaArrayList* handled_error_types = NULL;
-                       GEqualFunc _tmp37_ = NULL;
-                       ValaArrayList* _tmp38_ = NULL;
-                       _tmp37_ = g_direct_equal;
-                       _tmp38_ = vala_array_list_new (VALA_TYPE_DATA_TYPE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp37_);
-                       handled_error_types = _tmp38_;
+                       GEqualFunc _tmp43_ = NULL;
+                       ValaArrayList* _tmp44_ = NULL;
+                       _tmp43_ = g_direct_equal;
+                       _tmp44_ = vala_array_list_new (VALA_TYPE_DATA_TYPE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp43_);
+                       handled_error_types = _tmp44_;
                        {
                                ValaList* _clause_list = NULL;
-                               ValaTryStatement* _tmp39_ = NULL;
-                               ValaTryStatement* _tmp40_ = NULL;
-                               ValaList* _tmp41_ = NULL;
+                               ValaTryStatement* _tmp45_ = NULL;
+                               ValaTryStatement* _tmp46_ = NULL;
+                               ValaList* _tmp47_ = NULL;
                                gint _clause_size = 0;
-                               ValaList* _tmp42_ = NULL;
-                               gint _tmp43_ = 0;
-                               gint _tmp44_ = 0;
+                               ValaList* _tmp48_ = NULL;
+                               gint _tmp49_ = 0;
+                               gint _tmp50_ = 0;
                                gint _clause_index = 0;
-                               _tmp39_ = vala_ccode_base_module_get_current_try ((ValaCCodeBaseModule*) self);
-                               _tmp40_ = _tmp39_;
-                               _tmp41_ = vala_try_statement_get_catch_clauses (_tmp40_);
-                               _clause_list = _tmp41_;
-                               _tmp42_ = _clause_list;
-                               _tmp43_ = vala_collection_get_size ((ValaCollection*) _tmp42_);
-                               _tmp44_ = _tmp43_;
-                               _clause_size = _tmp44_;
+                               _tmp45_ = vala_ccode_base_module_get_current_try ((ValaCCodeBaseModule*) self);
+                               _tmp46_ = _tmp45_;
+                               _tmp47_ = vala_try_statement_get_catch_clauses (_tmp46_);
+                               _clause_list = _tmp47_;
+                               _tmp48_ = _clause_list;
+                               _tmp49_ = vala_collection_get_size ((ValaCollection*) _tmp48_);
+                               _tmp50_ = _tmp49_;
+                               _clause_size = _tmp50_;
                                _clause_index = -1;
                                while (TRUE) {
-                                       gint _tmp45_ = 0;
-                                       gint _tmp46_ = 0;
-                                       gint _tmp47_ = 0;
+                                       gint _tmp51_ = 0;
+                                       gint _tmp52_ = 0;
+                                       gint _tmp53_ = 0;
                                        ValaCatchClause* clause = NULL;
-                                       ValaList* _tmp48_ = NULL;
-                                       gint _tmp49_ = 0;
-                                       gpointer _tmp50_ = NULL;
-                                       ValaArrayList* _tmp86_ = NULL;
-                                       ValaCatchClause* _tmp87_ = NULL;
-                                       ValaDataType* _tmp88_ = NULL;
-                                       ValaDataType* _tmp89_ = NULL;
-                                       ValaErrorType* _tmp90_ = NULL;
-                                       gboolean _tmp91_ = FALSE;
-                                       _tmp45_ = _clause_index;
-                                       _clause_index = _tmp45_ + 1;
-                                       _tmp46_ = _clause_index;
-                                       _tmp47_ = _clause_size;
-                                       if (!(_tmp46_ < _tmp47_)) {
+                                       ValaList* _tmp54_ = NULL;
+                                       gint _tmp55_ = 0;
+                                       gpointer _tmp56_ = NULL;
+                                       ValaArrayList* _tmp92_ = NULL;
+                                       ValaCatchClause* _tmp93_ = NULL;
+                                       ValaDataType* _tmp94_ = NULL;
+                                       ValaDataType* _tmp95_ = NULL;
+                                       ValaErrorType* _tmp96_ = NULL;
+                                       gboolean _tmp97_ = FALSE;
+                                       _tmp51_ = _clause_index;
+                                       _clause_index = _tmp51_ + 1;
+                                       _tmp52_ = _clause_index;
+                                       _tmp53_ = _clause_size;
+                                       if (!(_tmp52_ < _tmp53_)) {
                                                break;
                                        }
-                                       _tmp48_ = _clause_list;
-                                       _tmp49_ = _clause_index;
-                                       _tmp50_ = vala_list_get (_tmp48_, _tmp49_);
-                                       clause = (ValaCatchClause*) _tmp50_;
+                                       _tmp54_ = _clause_list;
+                                       _tmp55_ = _clause_index;
+                                       _tmp56_ = vala_list_get (_tmp54_, _tmp55_);
+                                       clause = (ValaCatchClause*) _tmp56_;
                                        {
                                                ValaArrayList* _node_error_type_list = NULL;
-                                               ValaArrayList* _tmp51_ = NULL;
-                                               ValaArrayList* _tmp52_ = NULL;
+                                               ValaArrayList* _tmp57_ = NULL;
+                                               ValaArrayList* _tmp58_ = NULL;
                                                gint _node_error_type_size = 0;
-                                               ValaArrayList* _tmp53_ = NULL;
-                                               gint _tmp54_ = 0;
-                                               gint _tmp55_ = 0;
+                                               ValaArrayList* _tmp59_ = NULL;
+                                               gint _tmp60_ = 0;
+                                               gint _tmp61_ = 0;
                                                gint _node_error_type_index = 0;
-                                               _tmp51_ = error_types;
-                                               _tmp52_ = _vala_iterable_ref0 (_tmp51_);
-                                               _node_error_type_list = _tmp52_;
-                                               _tmp53_ = _node_error_type_list;
-                                               _tmp54_ = vala_collection_get_size ((ValaCollection*) _tmp53_);
-                                               _tmp55_ = _tmp54_;
-                                               _node_error_type_size = _tmp55_;
+                                               _tmp57_ = error_types;
+                                               _tmp58_ = _vala_iterable_ref0 (_tmp57_);
+                                               _node_error_type_list = _tmp58_;
+                                               _tmp59_ = _node_error_type_list;
+                                               _tmp60_ = vala_collection_get_size ((ValaCollection*) _tmp59_);
+                                               _tmp61_ = _tmp60_;
+                                               _node_error_type_size = _tmp61_;
                                                _node_error_type_index = -1;
                                                while (TRUE) {
-                                                       gint _tmp56_ = 0;
-                                                       gint _tmp57_ = 0;
-                                                       gint _tmp58_ = 0;
+                                                       gint _tmp62_ = 0;
+                                                       gint _tmp63_ = 0;
+                                                       gint _tmp64_ = 0;
                                                        ValaDataType* node_error_type = NULL;
-                                                       ValaArrayList* _tmp59_ = NULL;
-                                                       gint _tmp60_ = 0;
-                                                       gpointer _tmp61_ = NULL;
-                                                       gboolean _tmp62_ = FALSE;
-                                                       ValaCatchClause* _tmp63_ = NULL;
-                                                       ValaDataType* _tmp64_ = NULL;
-                                                       ValaDataType* _tmp65_ = NULL;
-                                                       _tmp56_ = _node_error_type_index;
-                                                       _node_error_type_index = _tmp56_ + 1;
-                                                       _tmp57_ = _node_error_type_index;
-                                                       _tmp58_ = _node_error_type_size;
-                                                       if (!(_tmp57_ < _tmp58_)) {
+                                                       ValaArrayList* _tmp65_ = NULL;
+                                                       gint _tmp66_ = 0;
+                                                       gpointer _tmp67_ = NULL;
+                                                       gboolean _tmp68_ = FALSE;
+                                                       ValaCatchClause* _tmp69_ = NULL;
+                                                       ValaDataType* _tmp70_ = NULL;
+                                                       ValaDataType* _tmp71_ = NULL;
+                                                       _tmp62_ = _node_error_type_index;
+                                                       _node_error_type_index = _tmp62_ + 1;
+                                                       _tmp63_ = _node_error_type_index;
+                                                       _tmp64_ = _node_error_type_size;
+                                                       if (!(_tmp63_ < _tmp64_)) {
                                                                break;
                                                        }
-                                                       _tmp59_ = _node_error_type_list;
-                                                       _tmp60_ = _node_error_type_index;
-                                                       _tmp61_ = vala_list_get ((ValaList*) _tmp59_, _tmp60_);
-                                                       node_error_type = (ValaDataType*) _tmp61_;
-                                                       _tmp63_ = clause;
-                                                       _tmp64_ = vala_catch_clause_get_error_type (_tmp63_);
-                                                       _tmp65_ = _tmp64_;
-                                                       if (_tmp65_ == NULL) {
-                                                               _tmp62_ = TRUE;
+                                                       _tmp65_ = _node_error_type_list;
+                                                       _tmp66_ = _node_error_type_index;
+                                                       _tmp67_ = vala_list_get ((ValaList*) _tmp65_, _tmp66_);
+                                                       node_error_type = (ValaDataType*) _tmp67_;
+                                                       _tmp69_ = clause;
+                                                       _tmp70_ = vala_catch_clause_get_error_type (_tmp69_);
+                                                       _tmp71_ = _tmp70_;
+                                                       if (_tmp71_ == NULL) {
+                                                               _tmp68_ = TRUE;
                                                        } else {
-                                                               ValaDataType* _tmp66_ = NULL;
-                                                               ValaCatchClause* _tmp67_ = NULL;
-                                                               ValaDataType* _tmp68_ = NULL;
-                                                               ValaDataType* _tmp69_ = NULL;
-                                                               gboolean _tmp70_ = FALSE;
-                                                               _tmp66_ = node_error_type;
-                                                               _tmp67_ = clause;
-                                                               _tmp68_ = vala_catch_clause_get_error_type (_tmp67_);
-                                                               _tmp69_ = _tmp68_;
-                                                               _tmp70_ = vala_data_type_compatible (_tmp66_, _tmp69_);
-                                                               _tmp62_ = _tmp70_;
-                                                       }
-                                                       if (_tmp62_) {
-                                                               ValaArrayList* _tmp71_ = NULL;
                                                                ValaDataType* _tmp72_ = NULL;
-                                                               _tmp71_ = handled_error_types;
+                                                               ValaCatchClause* _tmp73_ = NULL;
+                                                               ValaDataType* _tmp74_ = NULL;
+                                                               ValaDataType* _tmp75_ = NULL;
+                                                               gboolean _tmp76_ = FALSE;
                                                                _tmp72_ = node_error_type;
-                                                               vala_collection_add ((ValaCollection*) _tmp71_, _tmp72_);
+                                                               _tmp73_ = clause;
+                                                               _tmp74_ = vala_catch_clause_get_error_type (_tmp73_);
+                                                               _tmp75_ = _tmp74_;
+                                                               _tmp76_ = vala_data_type_compatible (_tmp72_, _tmp75_);
+                                                               _tmp68_ = _tmp76_;
+                                                       }
+                                                       if (_tmp68_) {
+                                                               ValaArrayList* _tmp77_ = NULL;
+                                                               ValaDataType* _tmp78_ = NULL;
+                                                               _tmp77_ = handled_error_types;
+                                                               _tmp78_ = node_error_type;
+                                                               vala_collection_add ((ValaCollection*) _tmp77_, _tmp78_);
                                                        }
                                                        _vala_code_node_unref0 (node_error_type);
                                                }
@@ -1516,210 +1534,210 @@ static void vala_gerror_module_real_add_simple_check (ValaCCodeBaseModule* base,
                                        }
                                        {
                                                ValaArrayList* _handled_error_type_list = NULL;
-                                               ValaArrayList* _tmp73_ = NULL;
-                                               ValaArrayList* _tmp74_ = NULL;
+                                               ValaArrayList* _tmp79_ = NULL;
+                                               ValaArrayList* _tmp80_ = NULL;
                                                gint _handled_error_type_size = 0;
-                                               ValaArrayList* _tmp75_ = NULL;
-                                               gint _tmp76_ = 0;
-                                               gint _tmp77_ = 0;
+                                               ValaArrayList* _tmp81_ = NULL;
+                                               gint _tmp82_ = 0;
+                                               gint _tmp83_ = 0;
                                                gint _handled_error_type_index = 0;
-                                               _tmp73_ = handled_error_types;
-                                               _tmp74_ = _vala_iterable_ref0 (_tmp73_);
-                                               _handled_error_type_list = _tmp74_;
-                                               _tmp75_ = _handled_error_type_list;
-                                               _tmp76_ = vala_collection_get_size ((ValaCollection*) _tmp75_);
-                                               _tmp77_ = _tmp76_;
-                                               _handled_error_type_size = _tmp77_;
+                                               _tmp79_ = handled_error_types;
+                                               _tmp80_ = _vala_iterable_ref0 (_tmp79_);
+                                               _handled_error_type_list = _tmp80_;
+                                               _tmp81_ = _handled_error_type_list;
+                                               _tmp82_ = vala_collection_get_size ((ValaCollection*) _tmp81_);
+                                               _tmp83_ = _tmp82_;
+                                               _handled_error_type_size = _tmp83_;
                                                _handled_error_type_index = -1;
                                                while (TRUE) {
-                                                       gint _tmp78_ = 0;
-                                                       gint _tmp79_ = 0;
-                                                       gint _tmp80_ = 0;
+                                                       gint _tmp84_ = 0;
+                                                       gint _tmp85_ = 0;
+                                                       gint _tmp86_ = 0;
                                                        ValaDataType* handled_error_type = NULL;
-                                                       ValaArrayList* _tmp81_ = NULL;
-                                                       gint _tmp82_ = 0;
-                                                       gpointer _tmp83_ = NULL;
-                                                       ValaArrayList* _tmp84_ = NULL;
-                                                       ValaDataType* _tmp85_ = NULL;
-                                                       _tmp78_ = _handled_error_type_index;
-                                                       _handled_error_type_index = _tmp78_ + 1;
-                                                       _tmp79_ = _handled_error_type_index;
-                                                       _tmp80_ = _handled_error_type_size;
-                                                       if (!(_tmp79_ < _tmp80_)) {
+                                                       ValaArrayList* _tmp87_ = NULL;
+                                                       gint _tmp88_ = 0;
+                                                       gpointer _tmp89_ = NULL;
+                                                       ValaArrayList* _tmp90_ = NULL;
+                                                       ValaDataType* _tmp91_ = NULL;
+                                                       _tmp84_ = _handled_error_type_index;
+                                                       _handled_error_type_index = _tmp84_ + 1;
+                                                       _tmp85_ = _handled_error_type_index;
+                                                       _tmp86_ = _handled_error_type_size;
+                                                       if (!(_tmp85_ < _tmp86_)) {
                                                                break;
                                                        }
-                                                       _tmp81_ = _handled_error_type_list;
-                                                       _tmp82_ = _handled_error_type_index;
-                                                       _tmp83_ = vala_list_get ((ValaList*) _tmp81_, _tmp82_);
-                                                       handled_error_type = (ValaDataType*) _tmp83_;
-                                                       _tmp84_ = error_types;
-                                                       _tmp85_ = handled_error_type;
-                                                       vala_collection_remove ((ValaCollection*) _tmp84_, _tmp85_);
+                                                       _tmp87_ = _handled_error_type_list;
+                                                       _tmp88_ = _handled_error_type_index;
+                                                       _tmp89_ = vala_list_get ((ValaList*) _tmp87_, _tmp88_);
+                                                       handled_error_type = (ValaDataType*) _tmp89_;
+                                                       _tmp90_ = error_types;
+                                                       _tmp91_ = handled_error_type;
+                                                       vala_collection_remove ((ValaCollection*) _tmp90_, _tmp91_);
                                                        _vala_code_node_unref0 (handled_error_type);
                                                }
                                                _vala_iterable_unref0 (_handled_error_type_list);
                                        }
-                                       _tmp86_ = handled_error_types;
-                                       vala_collection_clear ((ValaCollection*) _tmp86_);
-                                       _tmp87_ = clause;
-                                       _tmp88_ = vala_catch_clause_get_error_type (_tmp87_);
-                                       _tmp89_ = _tmp88_;
-                                       _tmp90_ = ((ValaCCodeBaseModule*) self)->gerror_type;
-                                       _tmp91_ = vala_data_type_equals (_tmp89_, (ValaDataType*) _tmp90_);
-                                       if (_tmp91_) {
-                                               ValaCCodeFunction* _tmp92_ = NULL;
-                                               ValaCCodeFunction* _tmp93_ = NULL;
-                                               ValaCatchClause* _tmp94_ = NULL;
-                                               const gchar* _tmp95_ = NULL;
-                                               const gchar* _tmp96_ = NULL;
+                                       _tmp92_ = handled_error_types;
+                                       vala_collection_clear ((ValaCollection*) _tmp92_);
+                                       _tmp93_ = clause;
+                                       _tmp94_ = vala_catch_clause_get_error_type (_tmp93_);
+                                       _tmp95_ = _tmp94_;
+                                       _tmp96_ = ((ValaCCodeBaseModule*) self)->gerror_type;
+                                       _tmp97_ = vala_data_type_equals (_tmp95_, (ValaDataType*) _tmp96_);
+                                       if (_tmp97_) {
+                                               ValaCCodeFunction* _tmp98_ = NULL;
+                                               ValaCCodeFunction* _tmp99_ = NULL;
+                                               ValaCatchClause* _tmp100_ = NULL;
+                                               const gchar* _tmp101_ = NULL;
+                                               const gchar* _tmp102_ = NULL;
                                                has_general_catch_clause = TRUE;
-                                               _tmp92_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                               _tmp93_ = _tmp92_;
-                                               _tmp94_ = clause;
-                                               _tmp95_ = vala_catch_clause_get_clabel_name (_tmp94_);
-                                               _tmp96_ = _tmp95_;
-                                               vala_ccode_function_add_goto (_tmp93_, _tmp96_);
+                                               _tmp98_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                               _tmp99_ = _tmp98_;
+                                               _tmp100_ = clause;
+                                               _tmp101_ = vala_catch_clause_get_clabel_name (_tmp100_);
+                                               _tmp102_ = _tmp101_;
+                                               vala_ccode_function_add_goto (_tmp99_, _tmp102_);
                                                _vala_code_node_unref0 (clause);
                                                break;
                                        } else {
                                                ValaErrorType* catch_type = NULL;
-                                               ValaCatchClause* _tmp97_ = NULL;
-                                               ValaDataType* _tmp98_ = NULL;
-                                               ValaDataType* _tmp99_ = NULL;
-                                               ValaErrorType* _tmp100_ = NULL;
-                                               ValaErrorType* _tmp101_ = NULL;
-                                               ValaErrorCode* _tmp102_ = NULL;
-                                               ValaErrorCode* _tmp103_ = NULL;
-                                               ValaCCodeFunction* _tmp146_ = NULL;
-                                               ValaCCodeFunction* _tmp147_ = NULL;
-                                               ValaCatchClause* _tmp148_ = NULL;
-                                               const gchar* _tmp149_ = NULL;
-                                               const gchar* _tmp150_ = NULL;
-                                               ValaCCodeFunction* _tmp151_ = NULL;
+                                               ValaCatchClause* _tmp103_ = NULL;
+                                               ValaDataType* _tmp104_ = NULL;
+                                               ValaDataType* _tmp105_ = NULL;
+                                               ValaErrorType* _tmp106_ = NULL;
+                                               ValaErrorType* _tmp107_ = NULL;
+                                               ValaErrorCode* _tmp108_ = NULL;
+                                               ValaErrorCode* _tmp109_ = NULL;
                                                ValaCCodeFunction* _tmp152_ = NULL;
-                                               _tmp97_ = clause;
-                                               _tmp98_ = vala_catch_clause_get_error_type (_tmp97_);
-                                               _tmp99_ = _tmp98_;
-                                               _tmp100_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp99_, VALA_TYPE_ERROR_TYPE) ? ((ValaErrorType*) _tmp99_) : NULL);
-                                               catch_type = _tmp100_;
-                                               _tmp101_ = catch_type;
-                                               _tmp102_ = vala_error_type_get_error_code (_tmp101_);
-                                               _tmp103_ = _tmp102_;
-                                               if (_tmp103_ != NULL) {
+                                               ValaCCodeFunction* _tmp153_ = NULL;
+                                               ValaCatchClause* _tmp154_ = NULL;
+                                               const gchar* _tmp155_ = NULL;
+                                               const gchar* _tmp156_ = NULL;
+                                               ValaCCodeFunction* _tmp157_ = NULL;
+                                               ValaCCodeFunction* _tmp158_ = NULL;
+                                               _tmp103_ = clause;
+                                               _tmp104_ = vala_catch_clause_get_error_type (_tmp103_);
+                                               _tmp105_ = _tmp104_;
+                                               _tmp106_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp105_, VALA_TYPE_ERROR_TYPE) ? ((ValaErrorType*) _tmp105_) : NULL);
+                                               catch_type = _tmp106_;
+                                               _tmp107_ = catch_type;
+                                               _tmp108_ = vala_error_type_get_error_code (_tmp107_);
+                                               _tmp109_ = _tmp108_;
+                                               if (_tmp109_ != NULL) {
                                                        ValaCCodeFunctionCall* error_match = NULL;
-                                                       ValaCCodeIdentifier* _tmp104_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp105_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp106_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp107_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp108_ = NULL;
-                                                       ValaCCodeExpression* _tmp109_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp110_ = NULL;
-                                                       ValaErrorType* _tmp111_ = NULL;
-                                                       ValaTypeSymbol* _tmp112_ = NULL;
-                                                       ValaTypeSymbol* _tmp113_ = NULL;
-                                                       gchar* _tmp114_ = NULL;
-                                                       gchar* _tmp115_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp116_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp117_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp118_ = NULL;
-                                                       ValaErrorType* _tmp119_ = NULL;
-                                                       ValaErrorCode* _tmp120_ = NULL;
-                                                       ValaErrorCode* _tmp121_ = NULL;
-                                                       gchar* _tmp122_ = NULL;
-                                                       gchar* _tmp123_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp124_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp125_ = NULL;
-                                                       ValaCCodeFunction* _tmp126_ = NULL;
-                                                       ValaCCodeFunction* _tmp127_ = NULL;
-                                                       ValaCCodeFunctionCall* _tmp128_ = NULL;
-                                                       _tmp104_ = vala_ccode_identifier_new ("g_error_matches");
-                                                       _tmp105_ = _tmp104_;
-                                                       _tmp106_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp105_);
-                                                       _tmp107_ = _tmp106_;
-                                                       _vala_ccode_node_unref0 (_tmp105_);
-                                                       error_match = _tmp107_;
-                                                       _tmp108_ = error_match;
-                                                       _tmp109_ = inner_error;
-                                                       vala_ccode_function_call_add_argument (_tmp108_, _tmp109_);
-                                                       _tmp110_ = error_match;
-                                                       _tmp111_ = catch_type;
-                                                       _tmp112_ = vala_data_type_get_data_type ((ValaDataType*) _tmp111_);
+                                                       ValaCCodeIdentifier* _tmp110_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp111_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp112_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp113_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp114_ = NULL;
+                                                       ValaCCodeExpression* _tmp115_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp116_ = NULL;
+                                                       ValaErrorType* _tmp117_ = NULL;
+                                                       ValaTypeSymbol* _tmp118_ = NULL;
+                                                       ValaTypeSymbol* _tmp119_ = NULL;
+                                                       gchar* _tmp120_ = NULL;
+                                                       gchar* _tmp121_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp122_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp123_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp124_ = NULL;
+                                                       ValaErrorType* _tmp125_ = NULL;
+                                                       ValaErrorCode* _tmp126_ = NULL;
+                                                       ValaErrorCode* _tmp127_ = NULL;
+                                                       gchar* _tmp128_ = NULL;
+                                                       gchar* _tmp129_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp130_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp131_ = NULL;
+                                                       ValaCCodeFunction* _tmp132_ = NULL;
+                                                       ValaCCodeFunction* _tmp133_ = NULL;
+                                                       ValaCCodeFunctionCall* _tmp134_ = NULL;
+                                                       _tmp110_ = vala_ccode_identifier_new ("g_error_matches");
+                                                       _tmp111_ = _tmp110_;
+                                                       _tmp112_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp111_);
                                                        _tmp113_ = _tmp112_;
-                                                       _tmp114_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp113_, NULL);
-                                                       _tmp115_ = _tmp114_;
-                                                       _tmp116_ = vala_ccode_identifier_new (_tmp115_);
-                                                       _tmp117_ = _tmp116_;
-                                                       vala_ccode_function_call_add_argument (_tmp110_, (ValaCCodeExpression*) _tmp117_);
-                                                       _vala_ccode_node_unref0 (_tmp117_);
-                                                       _g_free0 (_tmp115_);
-                                                       _tmp118_ = error_match;
-                                                       _tmp119_ = catch_type;
-                                                       _tmp120_ = vala_error_type_get_error_code (_tmp119_);
+                                                       _vala_ccode_node_unref0 (_tmp111_);
+                                                       error_match = _tmp113_;
+                                                       _tmp114_ = error_match;
+                                                       _tmp115_ = inner_error;
+                                                       vala_ccode_function_call_add_argument (_tmp114_, _tmp115_);
+                                                       _tmp116_ = error_match;
+                                                       _tmp117_ = catch_type;
+                                                       _tmp118_ = vala_data_type_get_data_type ((ValaDataType*) _tmp117_);
+                                                       _tmp119_ = _tmp118_;
+                                                       _tmp120_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp119_, NULL);
                                                        _tmp121_ = _tmp120_;
-                                                       _tmp122_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp121_);
+                                                       _tmp122_ = vala_ccode_identifier_new (_tmp121_);
                                                        _tmp123_ = _tmp122_;
-                                                       _tmp124_ = vala_ccode_identifier_new (_tmp123_);
-                                                       _tmp125_ = _tmp124_;
-                                                       vala_ccode_function_call_add_argument (_tmp118_, (ValaCCodeExpression*) _tmp125_);
-                                                       _vala_ccode_node_unref0 (_tmp125_);
-                                                       _g_free0 (_tmp123_);
-                                                       _tmp126_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                       vala_ccode_function_call_add_argument (_tmp116_, (ValaCCodeExpression*) _tmp123_);
+                                                       _vala_ccode_node_unref0 (_tmp123_);
+                                                       _g_free0 (_tmp121_);
+                                                       _tmp124_ = error_match;
+                                                       _tmp125_ = catch_type;
+                                                       _tmp126_ = vala_error_type_get_error_code (_tmp125_);
                                                        _tmp127_ = _tmp126_;
-                                                       _tmp128_ = error_match;
-                                                       vala_ccode_function_open_if (_tmp127_, (ValaCCodeExpression*) _tmp128_);
+                                                       _tmp128_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp127_);
+                                                       _tmp129_ = _tmp128_;
+                                                       _tmp130_ = vala_ccode_identifier_new (_tmp129_);
+                                                       _tmp131_ = _tmp130_;
+                                                       vala_ccode_function_call_add_argument (_tmp124_, (ValaCCodeExpression*) _tmp131_);
+                                                       _vala_ccode_node_unref0 (_tmp131_);
+                                                       _g_free0 (_tmp129_);
+                                                       _tmp132_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                       _tmp133_ = _tmp132_;
+                                                       _tmp134_ = error_match;
+                                                       vala_ccode_function_open_if (_tmp133_, (ValaCCodeExpression*) _tmp134_);
                                                        _vala_ccode_node_unref0 (error_match);
                                                } else {
                                                        ValaCCodeBinaryExpression* ccond = NULL;
-                                                       ValaCCodeExpression* _tmp129_ = NULL;
-                                                       ValaCCodeMemberAccess* _tmp130_ = NULL;
-                                                       ValaCCodeMemberAccess* _tmp131_ = NULL;
-                                                       ValaCatchClause* _tmp132_ = NULL;
-                                                       ValaDataType* _tmp133_ = NULL;
-                                                       ValaDataType* _tmp134_ = NULL;
-                                                       ValaTypeSymbol* _tmp135_ = NULL;
-                                                       ValaTypeSymbol* _tmp136_ = NULL;
-                                                       gchar* _tmp137_ = NULL;
-                                                       gchar* _tmp138_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp139_ = NULL;
-                                                       ValaCCodeIdentifier* _tmp140_ = NULL;
-                                                       ValaCCodeBinaryExpression* _tmp141_ = NULL;
-                                                       ValaCCodeBinaryExpression* _tmp142_ = NULL;
-                                                       ValaCCodeFunction* _tmp143_ = NULL;
-                                                       ValaCCodeFunction* _tmp144_ = NULL;
-                                                       ValaCCodeBinaryExpression* _tmp145_ = NULL;
-                                                       _tmp129_ = inner_error;
-                                                       _tmp130_ = vala_ccode_member_access_new_pointer (_tmp129_, "domain");
-                                                       _tmp131_ = _tmp130_;
-                                                       _tmp132_ = clause;
-                                                       _tmp133_ = vala_catch_clause_get_error_type (_tmp132_);
-                                                       _tmp134_ = _tmp133_;
-                                                       _tmp135_ = vala_data_type_get_data_type (_tmp134_);
-                                                       _tmp136_ = _tmp135_;
-                                                       _tmp137_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp136_, NULL);
-                                                       _tmp138_ = _tmp137_;
-                                                       _tmp139_ = vala_ccode_identifier_new (_tmp138_);
+                                                       ValaCCodeExpression* _tmp135_ = NULL;
+                                                       ValaCCodeMemberAccess* _tmp136_ = NULL;
+                                                       ValaCCodeMemberAccess* _tmp137_ = NULL;
+                                                       ValaCatchClause* _tmp138_ = NULL;
+                                                       ValaDataType* _tmp139_ = NULL;
+                                                       ValaDataType* _tmp140_ = NULL;
+                                                       ValaTypeSymbol* _tmp141_ = NULL;
+                                                       ValaTypeSymbol* _tmp142_ = NULL;
+                                                       gchar* _tmp143_ = NULL;
+                                                       gchar* _tmp144_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp145_ = NULL;
+                                                       ValaCCodeIdentifier* _tmp146_ = NULL;
+                                                       ValaCCodeBinaryExpression* _tmp147_ = NULL;
+                                                       ValaCCodeBinaryExpression* _tmp148_ = NULL;
+                                                       ValaCCodeFunction* _tmp149_ = NULL;
+                                                       ValaCCodeFunction* _tmp150_ = NULL;
+                                                       ValaCCodeBinaryExpression* _tmp151_ = NULL;
+                                                       _tmp135_ = inner_error;
+                                                       _tmp136_ = vala_ccode_member_access_new_pointer (_tmp135_, "domain");
+                                                       _tmp137_ = _tmp136_;
+                                                       _tmp138_ = clause;
+                                                       _tmp139_ = vala_catch_clause_get_error_type (_tmp138_);
                                                        _tmp140_ = _tmp139_;
-                                                       _tmp141_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp131_, (ValaCCodeExpression*) _tmp140_);
+                                                       _tmp141_ = vala_data_type_get_data_type (_tmp140_);
                                                        _tmp142_ = _tmp141_;
-                                                       _vala_ccode_node_unref0 (_tmp140_);
-                                                       _g_free0 (_tmp138_);
-                                                       _vala_ccode_node_unref0 (_tmp131_);
-                                                       ccond = _tmp142_;
-                                                       _tmp143_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                       _tmp143_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp142_, NULL);
                                                        _tmp144_ = _tmp143_;
-                                                       _tmp145_ = ccond;
-                                                       vala_ccode_function_open_if (_tmp144_, (ValaCCodeExpression*) _tmp145_);
+                                                       _tmp145_ = vala_ccode_identifier_new (_tmp144_);
+                                                       _tmp146_ = _tmp145_;
+                                                       _tmp147_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp137_, (ValaCCodeExpression*) _tmp146_);
+                                                       _tmp148_ = _tmp147_;
+                                                       _vala_ccode_node_unref0 (_tmp146_);
+                                                       _g_free0 (_tmp144_);
+                                                       _vala_ccode_node_unref0 (_tmp137_);
+                                                       ccond = _tmp148_;
+                                                       _tmp149_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                                       _tmp150_ = _tmp149_;
+                                                       _tmp151_ = ccond;
+                                                       vala_ccode_function_open_if (_tmp150_, (ValaCCodeExpression*) _tmp151_);
                                                        _vala_ccode_node_unref0 (ccond);
                                                }
-                                               _tmp146_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                               _tmp147_ = _tmp146_;
-                                               _tmp148_ = clause;
-                                               _tmp149_ = vala_catch_clause_get_clabel_name (_tmp148_);
-                                               _tmp150_ = _tmp149_;
-                                               vala_ccode_function_add_goto (_tmp147_, _tmp150_);
-                                               _tmp151_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                               _tmp152_ = _tmp151_;
-                                               vala_ccode_function_close (_tmp152_);
+                                               _tmp152_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                               _tmp153_ = _tmp152_;
+                                               _tmp154_ = clause;
+                                               _tmp155_ = vala_catch_clause_get_clabel_name (_tmp154_);
+                                               _tmp156_ = _tmp155_;
+                                               vala_ccode_function_add_goto (_tmp153_, _tmp156_);
+                                               _tmp157_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                               _tmp158_ = _tmp157_;
+                                               vala_ccode_function_close (_tmp158_);
                                                _vala_code_node_unref0 (catch_type);
                                        }
                                        _vala_code_node_unref0 (clause);
@@ -1728,217 +1746,217 @@ static void vala_gerror_module_real_add_simple_check (ValaCCodeBaseModule* base,
                        }
                        _vala_iterable_unref0 (handled_error_types);
                }
-               _tmp153_ = has_general_catch_clause;
-               if (_tmp153_) {
+               _tmp159_ = has_general_catch_clause;
+               if (_tmp159_) {
                } else {
-                       ValaArrayList* _tmp154_ = NULL;
-                       gint _tmp155_ = 0;
-                       gint _tmp156_ = 0;
-                       _tmp154_ = error_types;
-                       _tmp155_ = vala_collection_get_size ((ValaCollection*) _tmp154_);
-                       _tmp156_ = _tmp155_;
-                       if (_tmp156_ > 0) {
-                               ValaCCodeFunction* _tmp157_ = NULL;
-                               ValaCCodeFunction* _tmp158_ = NULL;
-                               gint _tmp159_ = 0;
-                               gchar* _tmp160_ = NULL;
-                               gchar* _tmp161_ = NULL;
-                               _tmp157_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp158_ = _tmp157_;
-                               _tmp159_ = self->priv->current_try_id;
-                               _tmp160_ = g_strdup_printf ("__finally%d", _tmp159_);
-                               _tmp161_ = _tmp160_;
-                               vala_ccode_function_add_goto (_tmp158_, _tmp161_);
-                               _g_free0 (_tmp161_);
+                       ValaArrayList* _tmp160_ = NULL;
+                       gint _tmp161_ = 0;
+                       gint _tmp162_ = 0;
+                       _tmp160_ = error_types;
+                       _tmp161_ = vala_collection_get_size ((ValaCollection*) _tmp160_);
+                       _tmp162_ = _tmp161_;
+                       if (_tmp162_ > 0) {
+                               ValaCCodeFunction* _tmp163_ = NULL;
+                               ValaCCodeFunction* _tmp164_ = NULL;
+                               gint _tmp165_ = 0;
+                               gchar* _tmp166_ = NULL;
+                               gchar* _tmp167_ = NULL;
+                               _tmp163_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp164_ = _tmp163_;
+                               _tmp165_ = self->priv->current_try_id;
+                               _tmp166_ = g_strdup_printf ("__finally%d", _tmp165_);
+                               _tmp167_ = _tmp166_;
+                               vala_ccode_function_add_goto (_tmp164_, _tmp167_);
+                               _g_free0 (_tmp167_);
                        } else {
-                               ValaCodeNode* _tmp162_ = NULL;
-                               gboolean _tmp163_ = FALSE;
-                               _tmp162_ = node;
-                               _tmp163_ = vala_gerror_module_in_finally_block (self, _tmp162_);
-                               if (_tmp163_) {
+                               ValaCodeNode* _tmp168_ = NULL;
+                               gboolean _tmp169_ = FALSE;
+                               _tmp168_ = node;
+                               _tmp169_ = vala_gerror_module_in_finally_block (self, _tmp168_);
+                               if (_tmp169_) {
                                } else {
-                                       ValaCCodeExpression* _tmp164_ = NULL;
-                                       _tmp164_ = inner_error;
-                                       vala_gerror_module_uncaught_error_statement (self, _tmp164_, TRUE);
+                                       ValaCCodeExpression* _tmp170_ = NULL;
+                                       _tmp170_ = inner_error;
+                                       vala_gerror_module_uncaught_error_statement (self, _tmp170_, TRUE);
                                }
                        }
                }
                _vala_iterable_unref0 (error_types);
        } else {
-               gboolean _tmp165_ = FALSE;
-               ValaMethod* _tmp166_ = NULL;
-               ValaMethod* _tmp167_ = NULL;
-               _tmp166_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
-               _tmp167_ = _tmp166_;
-               if (_tmp167_ != NULL) {
-                       ValaMethod* _tmp168_ = NULL;
-                       ValaMethod* _tmp169_ = NULL;
-                       ValaList* _tmp170_ = NULL;
-                       ValaList* _tmp171_ = NULL;
-                       gint _tmp172_ = 0;
-                       gint _tmp173_ = 0;
-                       _tmp168_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
-                       _tmp169_ = _tmp168_;
-                       _tmp170_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp169_);
-                       _tmp171_ = _tmp170_;
-                       _tmp172_ = vala_collection_get_size ((ValaCollection*) _tmp171_);
-                       _tmp173_ = _tmp172_;
-                       _tmp165_ = _tmp173_ > 0;
-                       _vala_iterable_unref0 (_tmp171_);
+               gboolean _tmp171_ = FALSE;
+               ValaMethod* _tmp172_ = NULL;
+               ValaMethod* _tmp173_ = NULL;
+               _tmp172_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
+               _tmp173_ = _tmp172_;
+               if (_tmp173_ != NULL) {
+                       ValaMethod* _tmp174_ = NULL;
+                       ValaMethod* _tmp175_ = NULL;
+                       ValaList* _tmp176_ = NULL;
+                       ValaList* _tmp177_ = NULL;
+                       gint _tmp178_ = 0;
+                       gint _tmp179_ = 0;
+                       _tmp174_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
+                       _tmp175_ = _tmp174_;
+                       _tmp176_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp175_);
+                       _tmp177_ = _tmp176_;
+                       _tmp178_ = vala_collection_get_size ((ValaCollection*) _tmp177_);
+                       _tmp179_ = _tmp178_;
+                       _tmp171_ = _tmp179_ > 0;
+                       _vala_iterable_unref0 (_tmp177_);
                } else {
-                       _tmp165_ = FALSE;
+                       _tmp171_ = FALSE;
                }
-               if (_tmp165_) {
+               if (_tmp171_) {
                        ValaCCodeBinaryExpression* ccond = NULL;
-                       ValaCCodeBinaryExpression* _tmp207_ = NULL;
+                       ValaCCodeBinaryExpression* _tmp213_ = NULL;
                        ccond = NULL;
                        {
                                ValaList* _error_type_list = NULL;
-                               ValaMethod* _tmp174_ = NULL;
-                               ValaMethod* _tmp175_ = NULL;
-                               ValaList* _tmp176_ = NULL;
+                               ValaMethod* _tmp180_ = NULL;
+                               ValaMethod* _tmp181_ = NULL;
+                               ValaList* _tmp182_ = NULL;
                                gint _error_type_size = 0;
-                               ValaList* _tmp177_ = NULL;
-                               gint _tmp178_ = 0;
-                               gint _tmp179_ = 0;
+                               ValaList* _tmp183_ = NULL;
+                               gint _tmp184_ = 0;
+                               gint _tmp185_ = 0;
                                gint _error_type_index = 0;
-                               _tmp174_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
-                               _tmp175_ = _tmp174_;
-                               _tmp176_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp175_);
-                               _error_type_list = _tmp176_;
-                               _tmp177_ = _error_type_list;
-                               _tmp178_ = vala_collection_get_size ((ValaCollection*) _tmp177_);
-                               _tmp179_ = _tmp178_;
-                               _error_type_size = _tmp179_;
+                               _tmp180_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
+                               _tmp181_ = _tmp180_;
+                               _tmp182_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp181_);
+                               _error_type_list = _tmp182_;
+                               _tmp183_ = _error_type_list;
+                               _tmp184_ = vala_collection_get_size ((ValaCollection*) _tmp183_);
+                               _tmp185_ = _tmp184_;
+                               _error_type_size = _tmp185_;
                                _error_type_index = -1;
                                while (TRUE) {
-                                       gint _tmp180_ = 0;
-                                       gint _tmp181_ = 0;
-                                       gint _tmp182_ = 0;
+                                       gint _tmp186_ = 0;
+                                       gint _tmp187_ = 0;
+                                       gint _tmp188_ = 0;
                                        ValaDataType* error_type = NULL;
-                                       ValaList* _tmp183_ = NULL;
-                                       gint _tmp184_ = 0;
-                                       gpointer _tmp185_ = NULL;
-                                       ValaDataType* _tmp186_ = NULL;
-                                       ValaErrorType* _tmp187_ = NULL;
-                                       gboolean _tmp188_ = FALSE;
-                                       ValaCCodeBinaryExpression* domain_check = NULL;
-                                       ValaCCodeExpression* _tmp189_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp190_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp191_ = NULL;
+                                       ValaList* _tmp189_ = NULL;
+                                       gint _tmp190_ = 0;
+                                       gpointer _tmp191_ = NULL;
                                        ValaDataType* _tmp192_ = NULL;
-                                       ValaTypeSymbol* _tmp193_ = NULL;
-                                       ValaTypeSymbol* _tmp194_ = NULL;
-                                       gchar* _tmp195_ = NULL;
-                                       gchar* _tmp196_ = NULL;
-                                       ValaCCodeIdentifier* _tmp197_ = NULL;
-                                       ValaCCodeIdentifier* _tmp198_ = NULL;
-                                       ValaCCodeBinaryExpression* _tmp199_ = NULL;
-                                       ValaCCodeBinaryExpression* _tmp200_ = NULL;
-                                       ValaCCodeBinaryExpression* _tmp201_ = NULL;
-                                       _tmp180_ = _error_type_index;
-                                       _error_type_index = _tmp180_ + 1;
-                                       _tmp181_ = _error_type_index;
-                                       _tmp182_ = _error_type_size;
-                                       if (!(_tmp181_ < _tmp182_)) {
+                                       ValaErrorType* _tmp193_ = NULL;
+                                       gboolean _tmp194_ = FALSE;
+                                       ValaCCodeBinaryExpression* domain_check = NULL;
+                                       ValaCCodeExpression* _tmp195_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp196_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp197_ = NULL;
+                                       ValaDataType* _tmp198_ = NULL;
+                                       ValaTypeSymbol* _tmp199_ = NULL;
+                                       ValaTypeSymbol* _tmp200_ = NULL;
+                                       gchar* _tmp201_ = NULL;
+                                       gchar* _tmp202_ = NULL;
+                                       ValaCCodeIdentifier* _tmp203_ = NULL;
+                                       ValaCCodeIdentifier* _tmp204_ = NULL;
+                                       ValaCCodeBinaryExpression* _tmp205_ = NULL;
+                                       ValaCCodeBinaryExpression* _tmp206_ = NULL;
+                                       ValaCCodeBinaryExpression* _tmp207_ = NULL;
+                                       _tmp186_ = _error_type_index;
+                                       _error_type_index = _tmp186_ + 1;
+                                       _tmp187_ = _error_type_index;
+                                       _tmp188_ = _error_type_size;
+                                       if (!(_tmp187_ < _tmp188_)) {
                                                break;
                                        }
-                                       _tmp183_ = _error_type_list;
-                                       _tmp184_ = _error_type_index;
-                                       _tmp185_ = vala_list_get (_tmp183_, _tmp184_);
-                                       error_type = (ValaDataType*) _tmp185_;
-                                       _tmp186_ = error_type;
-                                       _tmp187_ = ((ValaCCodeBaseModule*) self)->gerror_type;
-                                       _tmp188_ = vala_data_type_equals (_tmp186_, (ValaDataType*) _tmp187_);
-                                       if (_tmp188_) {
+                                       _tmp189_ = _error_type_list;
+                                       _tmp190_ = _error_type_index;
+                                       _tmp191_ = vala_list_get (_tmp189_, _tmp190_);
+                                       error_type = (ValaDataType*) _tmp191_;
+                                       _tmp192_ = error_type;
+                                       _tmp193_ = ((ValaCCodeBaseModule*) self)->gerror_type;
+                                       _tmp194_ = vala_data_type_equals (_tmp192_, (ValaDataType*) _tmp193_);
+                                       if (_tmp194_) {
                                                _vala_ccode_node_unref0 (ccond);
                                                ccond = NULL;
                                                _vala_code_node_unref0 (error_type);
                                                break;
                                        }
-                                       _tmp189_ = inner_error;
-                                       _tmp190_ = vala_ccode_member_access_new_pointer (_tmp189_, "domain");
-                                       _tmp191_ = _tmp190_;
-                                       _tmp192_ = error_type;
-                                       _tmp193_ = vala_data_type_get_data_type (_tmp192_);
-                                       _tmp194_ = _tmp193_;
-                                       _tmp195_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp194_, NULL);
-                                       _tmp196_ = _tmp195_;
-                                       _tmp197_ = vala_ccode_identifier_new (_tmp196_);
-                                       _tmp198_ = _tmp197_;
-                                       _tmp199_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp191_, (ValaCCodeExpression*) _tmp198_);
+                                       _tmp195_ = inner_error;
+                                       _tmp196_ = vala_ccode_member_access_new_pointer (_tmp195_, "domain");
+                                       _tmp197_ = _tmp196_;
+                                       _tmp198_ = error_type;
+                                       _tmp199_ = vala_data_type_get_data_type (_tmp198_);
                                        _tmp200_ = _tmp199_;
-                                       _vala_ccode_node_unref0 (_tmp198_);
-                                       _g_free0 (_tmp196_);
-                                       _vala_ccode_node_unref0 (_tmp191_);
-                                       domain_check = _tmp200_;
-                                       _tmp201_ = ccond;
-                                       if (_tmp201_ == NULL) {
-                                               ValaCCodeBinaryExpression* _tmp202_ = NULL;
-                                               ValaCCodeBinaryExpression* _tmp203_ = NULL;
-                                               _tmp202_ = domain_check;
-                                               _tmp203_ = _vala_ccode_node_ref0 (_tmp202_);
+                                       _tmp201_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp200_, NULL);
+                                       _tmp202_ = _tmp201_;
+                                       _tmp203_ = vala_ccode_identifier_new (_tmp202_);
+                                       _tmp204_ = _tmp203_;
+                                       _tmp205_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp197_, (ValaCCodeExpression*) _tmp204_);
+                                       _tmp206_ = _tmp205_;
+                                       _vala_ccode_node_unref0 (_tmp204_);
+                                       _g_free0 (_tmp202_);
+                                       _vala_ccode_node_unref0 (_tmp197_);
+                                       domain_check = _tmp206_;
+                                       _tmp207_ = ccond;
+                                       if (_tmp207_ == NULL) {
+                                               ValaCCodeBinaryExpression* _tmp208_ = NULL;
+                                               ValaCCodeBinaryExpression* _tmp209_ = NULL;
+                                               _tmp208_ = domain_check;
+                                               _tmp209_ = _vala_ccode_node_ref0 (_tmp208_);
                                                _vala_ccode_node_unref0 (ccond);
-                                               ccond = _tmp203_;
+                                               ccond = _tmp209_;
                                        } else {
-                                               ValaCCodeBinaryExpression* _tmp204_ = NULL;
-                                               ValaCCodeBinaryExpression* _tmp205_ = NULL;
-                                               ValaCCodeBinaryExpression* _tmp206_ = NULL;
-                                               _tmp204_ = ccond;
-                                               _tmp205_ = domain_check;
-                                               _tmp206_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_OR, (ValaCCodeExpression*) _tmp204_, (ValaCCodeExpression*) _tmp205_);
+                                               ValaCCodeBinaryExpression* _tmp210_ = NULL;
+                                               ValaCCodeBinaryExpression* _tmp211_ = NULL;
+                                               ValaCCodeBinaryExpression* _tmp212_ = NULL;
+                                               _tmp210_ = ccond;
+                                               _tmp211_ = domain_check;
+                                               _tmp212_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_OR, (ValaCCodeExpression*) _tmp210_, (ValaCCodeExpression*) _tmp211_);
                                                _vala_ccode_node_unref0 (ccond);
-                                               ccond = _tmp206_;
+                                               ccond = _tmp212_;
                                        }
                                        _vala_ccode_node_unref0 (domain_check);
                                        _vala_code_node_unref0 (error_type);
                                }
                                _vala_iterable_unref0 (_error_type_list);
                        }
-                       _tmp207_ = ccond;
-                       if (_tmp207_ != NULL) {
-                               ValaCCodeFunction* _tmp208_ = NULL;
-                               ValaCCodeFunction* _tmp209_ = NULL;
-                               ValaCCodeBinaryExpression* _tmp210_ = NULL;
-                               ValaCCodeExpression* _tmp211_ = NULL;
-                               ValaCCodeFunction* _tmp212_ = NULL;
-                               ValaCCodeFunction* _tmp213_ = NULL;
-                               ValaCCodeExpression* _tmp214_ = NULL;
+                       _tmp213_ = ccond;
+                       if (_tmp213_ != NULL) {
+                               ValaCCodeFunction* _tmp214_ = NULL;
                                ValaCCodeFunction* _tmp215_ = NULL;
-                               ValaCCodeFunction* _tmp216_ = NULL;
-                               _tmp208_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp209_ = _tmp208_;
-                               _tmp210_ = ccond;
-                               vala_ccode_function_open_if (_tmp209_, (ValaCCodeExpression*) _tmp210_);
-                               _tmp211_ = inner_error;
-                               vala_gerror_module_return_with_exception (self, _tmp211_);
-                               _tmp212_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp213_ = _tmp212_;
-                               vala_ccode_function_add_else (_tmp213_);
-                               _tmp214_ = inner_error;
-                               vala_gerror_module_uncaught_error_statement (self, _tmp214_, FALSE);
-                               _tmp215_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp216_ = _tmp215_;
-                               vala_ccode_function_close (_tmp216_);
-                       } else {
+                               ValaCCodeBinaryExpression* _tmp216_ = NULL;
                                ValaCCodeExpression* _tmp217_ = NULL;
+                               ValaCCodeFunction* _tmp218_ = NULL;
+                               ValaCCodeFunction* _tmp219_ = NULL;
+                               ValaCCodeExpression* _tmp220_ = NULL;
+                               ValaCCodeFunction* _tmp221_ = NULL;
+                               ValaCCodeFunction* _tmp222_ = NULL;
+                               _tmp214_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp215_ = _tmp214_;
+                               _tmp216_ = ccond;
+                               vala_ccode_function_open_if (_tmp215_, (ValaCCodeExpression*) _tmp216_);
                                _tmp217_ = inner_error;
                                vala_gerror_module_return_with_exception (self, _tmp217_);
+                               _tmp218_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp219_ = _tmp218_;
+                               vala_ccode_function_add_else (_tmp219_);
+                               _tmp220_ = inner_error;
+                               vala_gerror_module_uncaught_error_statement (self, _tmp220_, FALSE);
+                               _tmp221_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp222_ = _tmp221_;
+                               vala_ccode_function_close (_tmp222_);
+                       } else {
+                               ValaCCodeExpression* _tmp223_ = NULL;
+                               _tmp223_ = inner_error;
+                               vala_gerror_module_return_with_exception (self, _tmp223_);
                        }
                        _vala_ccode_node_unref0 (ccond);
                } else {
-                       ValaCCodeExpression* _tmp218_ = NULL;
-                       _tmp218_ = inner_error;
-                       vala_gerror_module_uncaught_error_statement (self, _tmp218_, FALSE);
+                       ValaCCodeExpression* _tmp224_ = NULL;
+                       _tmp224_ = inner_error;
+                       vala_gerror_module_uncaught_error_statement (self, _tmp224_, FALSE);
                }
        }
-       _tmp219_ = always_fails;
-       if (!_tmp219_) {
-               ValaCCodeFunction* _tmp220_ = NULL;
-               ValaCCodeFunction* _tmp221_ = NULL;
-               _tmp220_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp221_ = _tmp220_;
-               vala_ccode_function_close (_tmp221_);
+       _tmp225_ = always_fails;
+       if (!_tmp225_) {
+               ValaCCodeFunction* _tmp226_ = NULL;
+               ValaCCodeFunction* _tmp227_ = NULL;
+               _tmp226_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp227_ = _tmp226_;
+               vala_ccode_function_close (_tmp227_);
        }
        _vala_ccode_node_unref0 (inner_error);
 }
@@ -2427,16 +2445,16 @@ ValaGErrorModule* vala_gerror_module_new (void) {
 
 static void vala_gerror_module_class_init (ValaGErrorModuleClass * klass) {
        vala_gerror_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_gerror_module_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_gerror_module_finalize;
        g_type_class_add_private (klass, sizeof (ValaGErrorModulePrivate));
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_error_domain_declaration = vala_gerror_module_real_generate_error_domain_declaration;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_error_domain = vala_gerror_module_real_visit_error_domain;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_throw_statement = vala_gerror_module_real_visit_throw_statement;
-       VALA_GERROR_MODULE_CLASS (klass)->return_with_exception = vala_gerror_module_real_return_with_exception;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->add_simple_check = vala_gerror_module_real_add_simple_check;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_try_statement = vala_gerror_module_real_visit_try_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_catch_clause = vala_gerror_module_real_visit_catch_clause;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->append_scope_free = vala_gerror_module_real_append_scope_free;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_error_domain_declaration = vala_gerror_module_real_generate_error_domain_declaration;
+       ((ValaCodeVisitorClass *) klass)->visit_error_domain = vala_gerror_module_real_visit_error_domain;
+       ((ValaCodeVisitorClass *) klass)->visit_throw_statement = vala_gerror_module_real_visit_throw_statement;
+       ((ValaGErrorModuleClass *) klass)->return_with_exception = vala_gerror_module_real_return_with_exception;
+       ((ValaCCodeBaseModuleClass *) klass)->add_simple_check = vala_gerror_module_real_add_simple_check;
+       ((ValaCodeVisitorClass *) klass)->visit_try_statement = vala_gerror_module_real_visit_try_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_catch_clause = vala_gerror_module_real_visit_catch_clause;
+       ((ValaCCodeBaseModuleClass *) klass)->append_scope_free = vala_gerror_module_real_append_scope_free;
 }
 
 
index 23d11a3..041779b 100644 (file)
@@ -76,7 +76,7 @@ public class Vala.GErrorModule : CCodeDelegateModule {
                push_function (cquark_fun);
 
                var cquark_call = new CCodeFunctionCall (new CCodeIdentifier ("g_quark_from_static_string"));
-               cquark_call.add_argument (new CCodeConstant ("\"" + get_ccode_lower_case_name (edomain) + "-quark\""));
+               cquark_call.add_argument (new CCodeConstant ("\"" + CCodeBaseModule.get_quark_name (edomain) + "\""));
 
                ccode.add_return (cquark_call);
 
@@ -171,7 +171,9 @@ public class Vala.GErrorModule : CCodeDelegateModule {
                        // eliminates C warnings
                } else {
                        var ccond = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, inner_error, new CCodeConstant ("NULL"));
-                       ccode.open_if (ccond);
+                       var unlikely = new CCodeFunctionCall (new CCodeIdentifier ("G_UNLIKELY"));
+                       unlikely.add_argument (ccond);
+                       ccode.open_if (unlikely);
                }
 
                if (current_try != null) {
index d42e8e6..5b55bfa 100644 (file)
@@ -185,7 +185,7 @@ static void vala_gir_writer_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en
 static void vala_gir_writer_real_visit_enum_value (ValaCodeVisitor* base, ValaEnumValue* ev);
 static gchar* vala_gir_writer_literal_expression_to_value_string (ValaGIRWriter* self, ValaExpression* literal);
 static void vala_gir_writer_real_visit_error_domain (ValaCodeVisitor* base, ValaErrorDomain* edomain);
-gchar* vala_ccode_base_module_get_ccode_lower_case_prefix (ValaSymbol* sym);
+gchar* vala_ccode_base_module_get_quark_name (ValaErrorDomain* edomain);
 static void vala_gir_writer_real_visit_error_code (ValaCodeVisitor* base, ValaErrorCode* ecode);
 static void vala_gir_writer_real_visit_constant (ValaCodeVisitor* base, ValaConstant* c);
 static void vala_gir_writer_write_type (ValaGIRWriter* self, ValaDataType* type, gint index);
@@ -199,6 +199,7 @@ static void vala_gir_writer_real_visit_delegate (ValaCodeVisitor* base, ValaDele
 static void vala_gir_writer_real_visit_method (ValaCodeVisitor* base, ValaMethod* m);
 static gboolean vala_gir_writer_check_signature (ValaGIRWriter* self, ValaMethod* m);
 static gboolean vala_gir_writer_check_type (ValaGIRWriter* self, ValaDataType* type);
+gchar* vala_ccode_base_module_get_ccode_lower_case_prefix (ValaSymbol* sym);
 ValaDataType* vala_ccode_base_module_get_data_type_for_symbol (ValaTypeSymbol* sym);
 static void vala_gir_writer_real_visit_creation_method (ValaCodeVisitor* base, ValaCreationMethod* m);
 static void vala_gir_writer_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop);
@@ -1388,8 +1389,8 @@ static void vala_gir_writer_real_visit_class (ValaCodeVisitor* base, ValaClass*
                gint _tmp81_ = 0;
                GString* _tmp82_ = NULL;
                ValaClass* _tmp83_ = NULL;
-               const gchar* _tmp84_ = NULL;
-               const gchar* _tmp85_ = NULL;
+               gchar* _tmp84_ = NULL;
+               gchar* _tmp85_ = NULL;
                ValaClass* _tmp86_ = NULL;
                gchar* _tmp87_ = NULL;
                gchar* _tmp88_ = NULL;
@@ -1429,8 +1430,8 @@ static void vala_gir_writer_real_visit_class (ValaCodeVisitor* base, ValaClass*
                GString* _tmp243_ = NULL;
                GString* _tmp244_ = NULL;
                ValaClass* _tmp245_ = NULL;
-               const gchar* _tmp246_ = NULL;
-               const gchar* _tmp247_ = NULL;
+               gchar* _tmp246_ = NULL;
+               gchar* _tmp247_ = NULL;
                ValaClass* _tmp248_ = NULL;
                gchar* _tmp249_ = NULL;
                gchar* _tmp250_ = NULL;
@@ -1585,13 +1586,14 @@ static void vala_gir_writer_real_visit_class (ValaCodeVisitor* base, ValaClass*
                vala_gir_writer_write_indent (self);
                _tmp82_ = self->priv->buffer;
                _tmp83_ = cl;
-               _tmp84_ = vala_symbol_get_name ((ValaSymbol*) _tmp83_);
+               _tmp84_ = vala_gir_writer_get_gir_name (self, (ValaSymbol*) _tmp83_);
                _tmp85_ = _tmp84_;
                _tmp86_ = cl;
                _tmp87_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp86_);
                _tmp88_ = _tmp87_;
                g_string_append_printf (_tmp82_, "<type name=\"%sPrivate\" c:type=\"%sPrivate*\"/>\n", _tmp85_, _tmp88_);
                _g_free0 (_tmp88_);
+               _g_free0 (_tmp85_);
                _tmp89_ = self->priv->indent;
                self->priv->indent = _tmp89_ - 1;
                vala_gir_writer_write_indent (self);
@@ -1991,13 +1993,14 @@ static void vala_gir_writer_real_visit_class (ValaCodeVisitor* base, ValaClass*
                vala_gir_writer_write_indent (self);
                _tmp244_ = self->priv->buffer;
                _tmp245_ = cl;
-               _tmp246_ = vala_symbol_get_name ((ValaSymbol*) _tmp245_);
+               _tmp246_ = vala_gir_writer_get_gir_name (self, (ValaSymbol*) _tmp245_);
                _tmp247_ = _tmp246_;
                _tmp248_ = cl;
                _tmp249_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp248_);
                _tmp250_ = _tmp249_;
                g_string_append_printf (_tmp244_, "<record name=\"%sPrivate\" c:type=\"%sPrivate\" disguised=\"1\"/>\n", _tmp247_, _tmp250_);
                _g_free0 (_tmp250_);
+               _g_free0 (_tmp247_);
                _g_free0 (gtype_struct_name);
        } else {
                GString* _tmp251_ = NULL;
@@ -2200,8 +2203,8 @@ static void vala_gir_writer_real_visit_interface (ValaCodeVisitor* base, ValaInt
        GString* _tmp69_ = NULL;
        gint _tmp70_ = 0;
        GString* _tmp71_ = NULL;
-       gint _tmp169_ = 0;
-       GString* _tmp170_ = NULL;
+       gint _tmp247_ = 0;
+       GString* _tmp248_ = NULL;
        self = (ValaGIRWriter*) base;
        g_return_if_fail (iface != NULL);
        _tmp0_ = iface;
@@ -2620,11 +2623,219 @@ static void vala_gir_writer_real_visit_interface (ValaCodeVisitor* base, ValaInt
                }
                _vala_iterable_unref0 (_m_list);
        }
-       _tmp169_ = self->priv->indent;
-       self->priv->indent = _tmp169_ - 1;
+       {
+               ValaList* _prop_list = NULL;
+               ValaInterface* _tmp169_ = NULL;
+               ValaList* _tmp170_ = NULL;
+               gint _prop_size = 0;
+               ValaList* _tmp171_ = NULL;
+               gint _tmp172_ = 0;
+               gint _tmp173_ = 0;
+               gint _prop_index = 0;
+               _tmp169_ = iface;
+               _tmp170_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp169_);
+               _prop_list = _tmp170_;
+               _tmp171_ = _prop_list;
+               _tmp172_ = vala_collection_get_size ((ValaCollection*) _tmp171_);
+               _tmp173_ = _tmp172_;
+               _prop_size = _tmp173_;
+               _prop_index = -1;
+               while (TRUE) {
+                       gint _tmp174_ = 0;
+                       gint _tmp175_ = 0;
+                       gint _tmp176_ = 0;
+                       ValaProperty* prop = NULL;
+                       ValaList* _tmp177_ = NULL;
+                       gint _tmp178_ = 0;
+                       gpointer _tmp179_ = NULL;
+                       gboolean _tmp180_ = FALSE;
+                       ValaProperty* _tmp181_ = NULL;
+                       gboolean _tmp182_ = FALSE;
+                       gboolean _tmp183_ = FALSE;
+                       _tmp174_ = _prop_index;
+                       _prop_index = _tmp174_ + 1;
+                       _tmp175_ = _prop_index;
+                       _tmp176_ = _prop_size;
+                       if (!(_tmp175_ < _tmp176_)) {
+                               break;
+                       }
+                       _tmp177_ = _prop_list;
+                       _tmp178_ = _prop_index;
+                       _tmp179_ = vala_list_get (_tmp177_, _tmp178_);
+                       prop = (ValaProperty*) _tmp179_;
+                       _tmp181_ = prop;
+                       _tmp182_ = vala_property_get_is_abstract (_tmp181_);
+                       _tmp183_ = _tmp182_;
+                       if (_tmp183_) {
+                               _tmp180_ = TRUE;
+                       } else {
+                               ValaProperty* _tmp184_ = NULL;
+                               gboolean _tmp185_ = FALSE;
+                               gboolean _tmp186_ = FALSE;
+                               _tmp184_ = prop;
+                               _tmp185_ = vala_property_get_is_virtual (_tmp184_);
+                               _tmp186_ = _tmp185_;
+                               _tmp180_ = _tmp186_;
+                       }
+                       if (_tmp180_) {
+                               ValaProperty* _tmp187_ = NULL;
+                               ValaPropertyAccessor* _tmp188_ = NULL;
+                               ValaPropertyAccessor* _tmp189_ = NULL;
+                               ValaProperty* _tmp217_ = NULL;
+                               ValaPropertyAccessor* _tmp218_ = NULL;
+                               ValaPropertyAccessor* _tmp219_ = NULL;
+                               _tmp187_ = prop;
+                               _tmp188_ = vala_property_get_get_accessor (_tmp187_);
+                               _tmp189_ = _tmp188_;
+                               if (_tmp189_ != NULL) {
+                                       ValaMethod* m = NULL;
+                                       ValaProperty* _tmp190_ = NULL;
+                                       ValaPropertyAccessor* _tmp191_ = NULL;
+                                       ValaPropertyAccessor* _tmp192_ = NULL;
+                                       ValaMethod* _tmp193_ = NULL;
+                                       GString* _tmp194_ = NULL;
+                                       ValaMethod* _tmp195_ = NULL;
+                                       const gchar* _tmp196_ = NULL;
+                                       const gchar* _tmp197_ = NULL;
+                                       gint _tmp198_ = 0;
+                                       ValaMethod* _tmp199_ = NULL;
+                                       ValaMethod* _tmp200_ = NULL;
+                                       const gchar* _tmp201_ = NULL;
+                                       const gchar* _tmp202_ = NULL;
+                                       ValaMethod* _tmp203_ = NULL;
+                                       gchar* _tmp204_ = NULL;
+                                       gchar* _tmp205_ = NULL;
+                                       ValaMethod* _tmp206_ = NULL;
+                                       ValaList* _tmp207_ = NULL;
+                                       ValaList* _tmp208_ = NULL;
+                                       ValaMethod* _tmp209_ = NULL;
+                                       ValaDataType* _tmp210_ = NULL;
+                                       ValaDataType* _tmp211_ = NULL;
+                                       ValaMethod* _tmp212_ = NULL;
+                                       gboolean _tmp213_ = FALSE;
+                                       gboolean _tmp214_ = FALSE;
+                                       gint _tmp215_ = 0;
+                                       GString* _tmp216_ = NULL;
+                                       _tmp190_ = prop;
+                                       _tmp191_ = vala_property_get_get_accessor (_tmp190_);
+                                       _tmp192_ = _tmp191_;
+                                       _tmp193_ = vala_property_accessor_get_method (_tmp192_);
+                                       m = _tmp193_;
+                                       vala_gir_writer_write_indent (self);
+                                       _tmp194_ = self->priv->buffer;
+                                       _tmp195_ = m;
+                                       _tmp196_ = vala_symbol_get_name ((ValaSymbol*) _tmp195_);
+                                       _tmp197_ = _tmp196_;
+                                       g_string_append_printf (_tmp194_, "<field name=\"%s\">\n", _tmp197_);
+                                       _tmp198_ = self->priv->indent;
+                                       self->priv->indent = _tmp198_ + 1;
+                                       _tmp199_ = m;
+                                       _tmp200_ = m;
+                                       _tmp201_ = vala_symbol_get_name ((ValaSymbol*) _tmp200_);
+                                       _tmp202_ = _tmp201_;
+                                       _tmp203_ = m;
+                                       _tmp204_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp203_);
+                                       _tmp205_ = _tmp204_;
+                                       _tmp206_ = m;
+                                       _tmp207_ = vala_method_get_parameters (_tmp206_);
+                                       _tmp208_ = _tmp207_;
+                                       _tmp209_ = m;
+                                       _tmp210_ = vala_method_get_return_type (_tmp209_);
+                                       _tmp211_ = _tmp210_;
+                                       _tmp212_ = m;
+                                       _tmp213_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp212_);
+                                       _tmp214_ = _tmp213_;
+                                       vala_gir_writer_do_write_signature (self, _tmp199_, "callback", TRUE, _tmp202_, _tmp205_, _tmp208_, _tmp211_, _tmp214_, FALSE);
+                                       _vala_iterable_unref0 (_tmp208_);
+                                       _g_free0 (_tmp205_);
+                                       _tmp215_ = self->priv->indent;
+                                       self->priv->indent = _tmp215_ - 1;
+                                       vala_gir_writer_write_indent (self);
+                                       _tmp216_ = self->priv->buffer;
+                                       g_string_append_printf (_tmp216_, "</field>\n");
+                                       _vala_code_node_unref0 (m);
+                               }
+                               _tmp217_ = prop;
+                               _tmp218_ = vala_property_get_set_accessor (_tmp217_);
+                               _tmp219_ = _tmp218_;
+                               if (_tmp219_ != NULL) {
+                                       ValaMethod* m = NULL;
+                                       ValaProperty* _tmp220_ = NULL;
+                                       ValaPropertyAccessor* _tmp221_ = NULL;
+                                       ValaPropertyAccessor* _tmp222_ = NULL;
+                                       ValaMethod* _tmp223_ = NULL;
+                                       GString* _tmp224_ = NULL;
+                                       ValaMethod* _tmp225_ = NULL;
+                                       const gchar* _tmp226_ = NULL;
+                                       const gchar* _tmp227_ = NULL;
+                                       gint _tmp228_ = 0;
+                                       ValaMethod* _tmp229_ = NULL;
+                                       ValaMethod* _tmp230_ = NULL;
+                                       const gchar* _tmp231_ = NULL;
+                                       const gchar* _tmp232_ = NULL;
+                                       ValaMethod* _tmp233_ = NULL;
+                                       gchar* _tmp234_ = NULL;
+                                       gchar* _tmp235_ = NULL;
+                                       ValaMethod* _tmp236_ = NULL;
+                                       ValaList* _tmp237_ = NULL;
+                                       ValaList* _tmp238_ = NULL;
+                                       ValaMethod* _tmp239_ = NULL;
+                                       ValaDataType* _tmp240_ = NULL;
+                                       ValaDataType* _tmp241_ = NULL;
+                                       ValaMethod* _tmp242_ = NULL;
+                                       gboolean _tmp243_ = FALSE;
+                                       gboolean _tmp244_ = FALSE;
+                                       gint _tmp245_ = 0;
+                                       GString* _tmp246_ = NULL;
+                                       _tmp220_ = prop;
+                                       _tmp221_ = vala_property_get_set_accessor (_tmp220_);
+                                       _tmp222_ = _tmp221_;
+                                       _tmp223_ = vala_property_accessor_get_method (_tmp222_);
+                                       m = _tmp223_;
+                                       vala_gir_writer_write_indent (self);
+                                       _tmp224_ = self->priv->buffer;
+                                       _tmp225_ = m;
+                                       _tmp226_ = vala_symbol_get_name ((ValaSymbol*) _tmp225_);
+                                       _tmp227_ = _tmp226_;
+                                       g_string_append_printf (_tmp224_, "<field name=\"%s\">\n", _tmp227_);
+                                       _tmp228_ = self->priv->indent;
+                                       self->priv->indent = _tmp228_ + 1;
+                                       _tmp229_ = m;
+                                       _tmp230_ = m;
+                                       _tmp231_ = vala_symbol_get_name ((ValaSymbol*) _tmp230_);
+                                       _tmp232_ = _tmp231_;
+                                       _tmp233_ = m;
+                                       _tmp234_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp233_);
+                                       _tmp235_ = _tmp234_;
+                                       _tmp236_ = m;
+                                       _tmp237_ = vala_method_get_parameters (_tmp236_);
+                                       _tmp238_ = _tmp237_;
+                                       _tmp239_ = m;
+                                       _tmp240_ = vala_method_get_return_type (_tmp239_);
+                                       _tmp241_ = _tmp240_;
+                                       _tmp242_ = m;
+                                       _tmp243_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) _tmp242_);
+                                       _tmp244_ = _tmp243_;
+                                       vala_gir_writer_do_write_signature (self, _tmp229_, "callback", TRUE, _tmp232_, _tmp235_, _tmp238_, _tmp241_, _tmp244_, FALSE);
+                                       _vala_iterable_unref0 (_tmp238_);
+                                       _g_free0 (_tmp235_);
+                                       _tmp245_ = self->priv->indent;
+                                       self->priv->indent = _tmp245_ - 1;
+                                       vala_gir_writer_write_indent (self);
+                                       _tmp246_ = self->priv->buffer;
+                                       g_string_append_printf (_tmp246_, "</field>\n");
+                                       _vala_code_node_unref0 (m);
+                               }
+                       }
+                       _vala_code_node_unref0 (prop);
+               }
+               _vala_iterable_unref0 (_prop_list);
+       }
+       _tmp247_ = self->priv->indent;
+       self->priv->indent = _tmp247_ - 1;
        vala_gir_writer_write_indent (self);
-       _tmp170_ = self->priv->buffer;
-       g_string_append_printf (_tmp170_, "</record>\n");
+       _tmp248_ = self->priv->buffer;
+       g_string_append_printf (_tmp248_, "</record>\n");
        vala_gir_writer_visit_deferred (self);
        _g_free0 (gtype_struct_name);
 }
@@ -3020,34 +3231,22 @@ static void vala_gir_writer_real_visit_error_domain (ValaCodeVisitor* base, Vala
        ValaErrorDomain* _tmp6_ = NULL;
        const gchar* _tmp7_ = NULL;
        const gchar* _tmp8_ = NULL;
-       GString* _tmp9_ = NULL;
-       ValaErrorDomain* _tmp10_ = NULL;
-       gchar* _tmp11_ = NULL;
+       ValaErrorDomain* _tmp9_ = NULL;
+       GString* _tmp10_ = NULL;
+       ValaErrorDomain* _tmp11_ = NULL;
        gchar* _tmp12_ = NULL;
-       GString* _tmp13_ = NULL;
-       ValaErrorDomain* _tmp14_ = NULL;
-       const gchar* _tmp15_ = NULL;
-       const gchar* _tmp16_ = NULL;
-       ValaErrorDomain* _tmp17_ = NULL;
-       GString* _tmp18_ = NULL;
-       ValaErrorDomain* _tmp19_ = NULL;
-       GString* _tmp20_ = NULL;
-       GString* _tmp21_ = NULL;
-       ValaErrorDomain* _tmp22_ = NULL;
-       const gchar* _tmp23_ = NULL;
-       const gchar* _tmp24_ = NULL;
-       ValaErrorDomain* _tmp25_ = NULL;
-       GString* _tmp26_ = NULL;
-       gint _tmp27_ = 0;
-       ValaErrorDomain* _tmp28_ = NULL;
-       gchar* _tmp29_ = NULL;
-       gchar* _tmp30_ = NULL;
-       ValaArrayList* _tmp31_ = NULL;
-       ValaErrorDomain* _tmp32_ = NULL;
-       ValaErrorDomain* _tmp33_ = NULL;
-       ValaArrayList* _tmp34_ = NULL;
-       gint _tmp35_ = 0;
-       GString* _tmp36_ = NULL;
+       gchar* _tmp13_ = NULL;
+       GString* _tmp14_ = NULL;
+       gint _tmp15_ = 0;
+       ValaErrorDomain* _tmp16_ = NULL;
+       gchar* _tmp17_ = NULL;
+       gchar* _tmp18_ = NULL;
+       ValaArrayList* _tmp19_ = NULL;
+       ValaErrorDomain* _tmp20_ = NULL;
+       ValaErrorDomain* _tmp21_ = NULL;
+       ValaArrayList* _tmp22_ = NULL;
+       gint _tmp23_ = 0;
+       GString* _tmp24_ = NULL;
        self = (ValaGIRWriter*) base;
        g_return_if_fail (edomain != NULL);
        _tmp0_ = edomain;
@@ -3066,56 +3265,37 @@ static void vala_gir_writer_real_visit_error_domain (ValaCodeVisitor* base, Vala
        _tmp6_ = edomain;
        _tmp7_ = vala_symbol_get_name ((ValaSymbol*) _tmp6_);
        _tmp8_ = _tmp7_;
-       g_string_append_printf (_tmp5_, "<errordomain name=\"%s\"", _tmp8_);
-       _tmp9_ = self->priv->buffer;
-       _tmp10_ = edomain;
-       _tmp11_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp10_);
-       _tmp12_ = _tmp11_;
-       g_string_append_printf (_tmp9_, " get-quark=\"%squark\"", _tmp12_);
-       _g_free0 (_tmp12_);
-       _tmp13_ = self->priv->buffer;
-       _tmp14_ = edomain;
-       _tmp15_ = vala_symbol_get_name ((ValaSymbol*) _tmp14_);
-       _tmp16_ = _tmp15_;
-       g_string_append_printf (_tmp13_, " codes=\"%s\"", _tmp16_);
-       _tmp17_ = edomain;
-       vala_gir_writer_write_symbol_attributes (self, (ValaSymbol*) _tmp17_);
-       _tmp18_ = self->priv->buffer;
-       g_string_append_printf (_tmp18_, ">\n");
-       _tmp19_ = edomain;
-       vala_gir_writer_write_annotations (self, (ValaCodeNode*) _tmp19_);
-       _tmp20_ = self->priv->buffer;
-       g_string_append_printf (_tmp20_, "</errordomain>\n");
-       vala_gir_writer_write_indent (self);
-       _tmp21_ = self->priv->buffer;
-       _tmp22_ = edomain;
-       _tmp23_ = vala_symbol_get_name ((ValaSymbol*) _tmp22_);
-       _tmp24_ = _tmp23_;
-       g_string_append_printf (_tmp21_, "<enumeration name=\"%s\"", _tmp24_);
-       _tmp25_ = edomain;
-       vala_gir_writer_write_ctype_attributes (self, (ValaTypeSymbol*) _tmp25_, "");
-       _tmp26_ = self->priv->buffer;
-       g_string_append_printf (_tmp26_, ">\n");
-       _tmp27_ = self->priv->indent;
-       self->priv->indent = _tmp27_ + 1;
-       _tmp28_ = edomain;
-       _tmp29_ = vala_gir_writer_get_error_domain_comment (self, _tmp28_);
-       _tmp30_ = _tmp29_;
-       vala_gir_writer_write_doc (self, _tmp30_);
-       _g_free0 (_tmp30_);
+       g_string_append_printf (_tmp5_, "<enumeration name=\"%s\"", _tmp8_);
+       _tmp9_ = edomain;
+       vala_gir_writer_write_ctype_attributes (self, (ValaTypeSymbol*) _tmp9_, "");
+       _tmp10_ = self->priv->buffer;
+       _tmp11_ = edomain;
+       _tmp12_ = vala_ccode_base_module_get_quark_name (_tmp11_);
+       _tmp13_ = _tmp12_;
+       g_string_append_printf (_tmp10_, " glib:error-domain=\"%s\"", _tmp13_);
+       _g_free0 (_tmp13_);
+       _tmp14_ = self->priv->buffer;
+       g_string_append_printf (_tmp14_, ">\n");
+       _tmp15_ = self->priv->indent;
+       self->priv->indent = _tmp15_ + 1;
+       _tmp16_ = edomain;
+       _tmp17_ = vala_gir_writer_get_error_domain_comment (self, _tmp16_);
+       _tmp18_ = _tmp17_;
+       vala_gir_writer_write_doc (self, _tmp18_);
+       _g_free0 (_tmp18_);
        self->priv->enum_value = 0;
-       _tmp31_ = self->priv->hierarchy;
-       _tmp32_ = edomain;
-       vala_list_insert ((ValaList*) _tmp31_, 0, (ValaSymbol*) _tmp32_);
-       _tmp33_ = edomain;
-       vala_code_node_accept_children ((ValaCodeNode*) _tmp33_, (ValaCodeVisitor*) self);
-       _tmp34_ = self->priv->hierarchy;
-       vala_list_remove_at ((ValaList*) _tmp34_, 0);
-       _tmp35_ = self->priv->indent;
-       self->priv->indent = _tmp35_ - 1;
+       _tmp19_ = self->priv->hierarchy;
+       _tmp20_ = edomain;
+       vala_list_insert ((ValaList*) _tmp19_, 0, (ValaSymbol*) _tmp20_);
+       _tmp21_ = edomain;
+       vala_code_node_accept_children ((ValaCodeNode*) _tmp21_, (ValaCodeVisitor*) self);
+       _tmp22_ = self->priv->hierarchy;
+       vala_list_remove_at ((ValaList*) _tmp22_, 0);
+       _tmp23_ = self->priv->indent;
+       self->priv->indent = _tmp23_ - 1;
        vala_gir_writer_write_indent (self);
-       _tmp36_ = self->priv->buffer;
-       g_string_append_printf (_tmp36_, "</enumeration>\n");
+       _tmp24_ = self->priv->buffer;
+       g_string_append_printf (_tmp24_, "</enumeration>\n");
        vala_gir_writer_visit_deferred (self);
 }
 
@@ -4976,7 +5156,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp4_ = _tmp3_;
                _g_free0 (_tmp2_);
                regex = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch5_g_regex_error;
                        }
@@ -4988,7 +5168,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp7_ = replacement;
                _tmp8_ = g_regex_replace_literal (_tmp6_, self, (gssize) (-1), 0, _tmp7_, 0, &_inner_error_);
                _tmp5_ = _tmp8_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_regex_unref0 (regex);
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch5_g_regex_error;
@@ -5015,7 +5195,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _g_error_free0 (e);
        }
        __finally5:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return NULL;
@@ -5053,6 +5233,12 @@ static void vala_gir_writer_real_visit_property (ValaCodeVisitor* base, ValaProp
        ValaDataType* _tmp53_ = NULL;
        gint _tmp54_ = 0;
        GString* _tmp55_ = NULL;
+       ValaProperty* _tmp56_ = NULL;
+       ValaPropertyAccessor* _tmp57_ = NULL;
+       ValaPropertyAccessor* _tmp58_ = NULL;
+       ValaProperty* _tmp65_ = NULL;
+       ValaPropertyAccessor* _tmp66_ = NULL;
+       ValaPropertyAccessor* _tmp67_ = NULL;
        self = (ValaGIRWriter*) base;
        g_return_if_fail (prop != NULL);
        _tmp2_ = prop;
@@ -5184,6 +5370,52 @@ static void vala_gir_writer_real_visit_property (ValaCodeVisitor* base, ValaProp
        vala_gir_writer_write_indent (self);
        _tmp55_ = self->priv->buffer;
        g_string_append_printf (_tmp55_, "</property>\n");
+       _tmp56_ = prop;
+       _tmp57_ = vala_property_get_get_accessor (_tmp56_);
+       _tmp58_ = _tmp57_;
+       if (_tmp58_ != NULL) {
+               ValaMethod* m = NULL;
+               ValaProperty* _tmp59_ = NULL;
+               ValaPropertyAccessor* _tmp60_ = NULL;
+               ValaPropertyAccessor* _tmp61_ = NULL;
+               ValaMethod* _tmp62_ = NULL;
+               ValaMethod* _tmp63_ = NULL;
+               _tmp59_ = prop;
+               _tmp60_ = vala_property_get_get_accessor (_tmp59_);
+               _tmp61_ = _tmp60_;
+               _tmp62_ = vala_property_accessor_get_method (_tmp61_);
+               m = _tmp62_;
+               _tmp63_ = m;
+               if (_tmp63_ != NULL) {
+                       ValaMethod* _tmp64_ = NULL;
+                       _tmp64_ = m;
+                       vala_code_visitor_visit_method ((ValaCodeVisitor*) self, _tmp64_);
+               }
+               _vala_code_node_unref0 (m);
+       }
+       _tmp65_ = prop;
+       _tmp66_ = vala_property_get_set_accessor (_tmp65_);
+       _tmp67_ = _tmp66_;
+       if (_tmp67_ != NULL) {
+               ValaMethod* m = NULL;
+               ValaProperty* _tmp68_ = NULL;
+               ValaPropertyAccessor* _tmp69_ = NULL;
+               ValaPropertyAccessor* _tmp70_ = NULL;
+               ValaMethod* _tmp71_ = NULL;
+               ValaMethod* _tmp72_ = NULL;
+               _tmp68_ = prop;
+               _tmp69_ = vala_property_get_set_accessor (_tmp68_);
+               _tmp70_ = _tmp69_;
+               _tmp71_ = vala_property_accessor_get_method (_tmp70_);
+               m = _tmp71_;
+               _tmp72_ = m;
+               if (_tmp72_ != NULL) {
+                       ValaMethod* _tmp73_ = NULL;
+                       _tmp73_ = m;
+                       vala_code_visitor_visit_method ((ValaCodeVisitor*) self, _tmp73_);
+               }
+               _vala_code_node_unref0 (m);
+       }
 }
 
 
@@ -5701,283 +5933,308 @@ static void vala_gir_writer_write_type (ValaGIRWriter* self, ValaDataType* type,
                ValaDataType* _tmp1_ = NULL;
                ValaArrayType* _tmp2_ = NULL;
                GString* _tmp3_ = NULL;
-               ValaArrayType* _tmp4_ = NULL;
-               gboolean _tmp5_ = FALSE;
+               gboolean _tmp4_ = FALSE;
+               ValaArrayType* _tmp5_ = NULL;
                gboolean _tmp6_ = FALSE;
-               GString* _tmp14_ = NULL;
-               gint _tmp15_ = 0;
-               ValaArrayType* _tmp16_ = NULL;
-               ValaDataType* _tmp17_ = NULL;
-               ValaDataType* _tmp18_ = NULL;
-               gint _tmp19_ = 0;
-               GString* _tmp20_ = NULL;
+               gboolean _tmp7_ = FALSE;
+               GString* _tmp23_ = NULL;
+               gint _tmp24_ = 0;
+               ValaArrayType* _tmp25_ = NULL;
+               ValaDataType* _tmp26_ = NULL;
+               ValaDataType* _tmp27_ = NULL;
+               gint _tmp28_ = 0;
+               GString* _tmp29_ = NULL;
                _tmp1_ = type;
                _tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
                array_type = _tmp2_;
                vala_gir_writer_write_indent (self);
                _tmp3_ = self->priv->buffer;
                g_string_append_printf (_tmp3_, "<array");
-               _tmp4_ = array_type;
-               _tmp5_ = vala_array_type_get_fixed_length (_tmp4_);
-               _tmp6_ = _tmp5_;
-               if (_tmp6_) {
-                       GString* _tmp7_ = NULL;
+               _tmp5_ = array_type;
+               _tmp6_ = vala_array_type_get_fixed_length (_tmp5_);
+               _tmp7_ = _tmp6_;
+               if (_tmp7_) {
                        ValaArrayType* _tmp8_ = NULL;
-                       gint _tmp9_ = 0;
-                       gint _tmp10_ = 0;
-                       _tmp7_ = self->priv->buffer;
+                       ValaExpression* _tmp9_ = NULL;
+                       ValaExpression* _tmp10_ = NULL;
                        _tmp8_ = array_type;
                        _tmp9_ = vala_array_type_get_length (_tmp8_);
                        _tmp10_ = _tmp9_;
-                       g_string_append_printf (_tmp7_, " fixed-size=\"%i\"", _tmp10_);
+                       _tmp4_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, VALA_TYPE_INTEGER_LITERAL);
                } else {
-                       gint _tmp11_ = 0;
-                       _tmp11_ = index;
-                       if (_tmp11_ != (-1)) {
-                               GString* _tmp12_ = NULL;
-                               gint _tmp13_ = 0;
-                               _tmp12_ = self->priv->buffer;
-                               _tmp13_ = index;
-                               g_string_append_printf (_tmp12_, " length=\"%i\"", _tmp13_);
+                       _tmp4_ = FALSE;
+               }
+               if (_tmp4_) {
+                       ValaIntegerLiteral* lit = NULL;
+                       ValaArrayType* _tmp11_ = NULL;
+                       ValaExpression* _tmp12_ = NULL;
+                       ValaExpression* _tmp13_ = NULL;
+                       ValaIntegerLiteral* _tmp14_ = NULL;
+                       GString* _tmp15_ = NULL;
+                       ValaIntegerLiteral* _tmp16_ = NULL;
+                       const gchar* _tmp17_ = NULL;
+                       const gchar* _tmp18_ = NULL;
+                       gint _tmp19_ = 0;
+                       _tmp11_ = array_type;
+                       _tmp12_ = vala_array_type_get_length (_tmp11_);
+                       _tmp13_ = _tmp12_;
+                       _tmp14_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, VALA_TYPE_INTEGER_LITERAL, ValaIntegerLiteral));
+                       lit = _tmp14_;
+                       _tmp15_ = self->priv->buffer;
+                       _tmp16_ = lit;
+                       _tmp17_ = vala_integer_literal_get_value (_tmp16_);
+                       _tmp18_ = _tmp17_;
+                       _tmp19_ = atoi (_tmp18_);
+                       g_string_append_printf (_tmp15_, " fixed-size=\"%i\"", _tmp19_);
+                       _vala_code_node_unref0 (lit);
+               } else {
+                       gint _tmp20_ = 0;
+                       _tmp20_ = index;
+                       if (_tmp20_ != (-1)) {
+                               GString* _tmp21_ = NULL;
+                               gint _tmp22_ = 0;
+                               _tmp21_ = self->priv->buffer;
+                               _tmp22_ = index;
+                               g_string_append_printf (_tmp21_, " length=\"%i\"", _tmp22_);
                        }
                }
-               _tmp14_ = self->priv->buffer;
-               g_string_append_printf (_tmp14_, ">\n");
-               _tmp15_ = self->priv->indent;
-               self->priv->indent = _tmp15_ + 1;
-               _tmp16_ = array_type;
-               _tmp17_ = vala_array_type_get_element_type (_tmp16_);
-               _tmp18_ = _tmp17_;
-               vala_gir_writer_write_type (self, _tmp18_, -1);
-               _tmp19_ = self->priv->indent;
-               self->priv->indent = _tmp19_ - 1;
+               _tmp23_ = self->priv->buffer;
+               g_string_append_printf (_tmp23_, ">\n");
+               _tmp24_ = self->priv->indent;
+               self->priv->indent = _tmp24_ + 1;
+               _tmp25_ = array_type;
+               _tmp26_ = vala_array_type_get_element_type (_tmp25_);
+               _tmp27_ = _tmp26_;
+               vala_gir_writer_write_type (self, _tmp27_, -1);
+               _tmp28_ = self->priv->indent;
+               self->priv->indent = _tmp28_ - 1;
                vala_gir_writer_write_indent (self);
-               _tmp20_ = self->priv->buffer;
-               g_string_append_printf (_tmp20_, "</array>\n");
+               _tmp29_ = self->priv->buffer;
+               g_string_append_printf (_tmp29_, "</array>\n");
                _vala_code_node_unref0 (array_type);
        } else {
-               ValaDataType* _tmp21_ = NULL;
-               _tmp21_ = type;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, VALA_TYPE_VOID_TYPE)) {
-                       GString* _tmp22_ = NULL;
+               ValaDataType* _tmp30_ = NULL;
+               _tmp30_ = type;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp30_, VALA_TYPE_VOID_TYPE)) {
+                       GString* _tmp31_ = NULL;
                        vala_gir_writer_write_indent (self);
-                       _tmp22_ = self->priv->buffer;
-                       g_string_append_printf (_tmp22_, "<type name=\"none\"/>\n");
+                       _tmp31_ = self->priv->buffer;
+                       g_string_append_printf (_tmp31_, "<type name=\"none\"/>\n");
                } else {
-                       ValaDataType* _tmp23_ = NULL;
-                       _tmp23_ = type;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp23_, VALA_TYPE_POINTER_TYPE)) {
-                               GString* _tmp24_ = NULL;
-                               ValaDataType* _tmp25_ = NULL;
-                               gchar* _tmp26_ = NULL;
-                               gchar* _tmp27_ = NULL;
+                       ValaDataType* _tmp32_ = NULL;
+                       _tmp32_ = type;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp32_, VALA_TYPE_POINTER_TYPE)) {
+                               GString* _tmp33_ = NULL;
+                               ValaDataType* _tmp34_ = NULL;
+                               gchar* _tmp35_ = NULL;
+                               gchar* _tmp36_ = NULL;
                                vala_gir_writer_write_indent (self);
-                               _tmp24_ = self->priv->buffer;
-                               _tmp25_ = type;
-                               _tmp26_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp25_);
-                               _tmp27_ = _tmp26_;
-                               g_string_append_printf (_tmp24_, "<type name=\"gpointer\" c:type=\"%s\"/>\n", _tmp27_);
-                               _g_free0 (_tmp27_);
+                               _tmp33_ = self->priv->buffer;
+                               _tmp34_ = type;
+                               _tmp35_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp34_);
+                               _tmp36_ = _tmp35_;
+                               g_string_append_printf (_tmp33_, "<type name=\"gpointer\" c:type=\"%s\"/>\n", _tmp36_);
+                               _g_free0 (_tmp36_);
                        } else {
-                               ValaDataType* _tmp28_ = NULL;
-                               ValaTypeSymbol* _tmp29_ = NULL;
-                               ValaTypeSymbol* _tmp30_ = NULL;
-                               _tmp28_ = type;
-                               _tmp29_ = vala_data_type_get_data_type (_tmp28_);
-                               _tmp30_ = _tmp29_;
-                               if (_tmp30_ != NULL) {
+                               ValaDataType* _tmp37_ = NULL;
+                               ValaTypeSymbol* _tmp38_ = NULL;
+                               ValaTypeSymbol* _tmp39_ = NULL;
+                               _tmp37_ = type;
+                               _tmp38_ = vala_data_type_get_data_type (_tmp37_);
+                               _tmp39_ = _tmp38_;
+                               if (_tmp39_ != NULL) {
                                        gchar* type_name = NULL;
-                                       ValaDataType* _tmp31_ = NULL;
-                                       ValaTypeSymbol* _tmp32_ = NULL;
-                                       ValaTypeSymbol* _tmp33_ = NULL;
-                                       gchar* _tmp34_ = NULL;
-                                       gboolean is_array = FALSE;
-                                       gboolean _tmp35_ = FALSE;
-                                       const gchar* _tmp36_ = NULL;
-                                       const gchar* _tmp38_ = NULL;
-                                       gboolean _tmp39_ = FALSE;
-                                       GString* _tmp40_ = NULL;
-                                       ValaDataType* _tmp41_ = NULL;
+                                       ValaDataType* _tmp40_ = NULL;
+                                       ValaTypeSymbol* _tmp41_ = NULL;
                                        ValaTypeSymbol* _tmp42_ = NULL;
-                                       ValaTypeSymbol* _tmp43_ = NULL;
-                                       gchar* _tmp44_ = NULL;
-                                       gchar* _tmp45_ = NULL;
-                                       ValaDataType* _tmp46_ = NULL;
-                                       gchar* _tmp47_ = NULL;
-                                       gchar* _tmp48_ = NULL;
+                                       gchar* _tmp43_ = NULL;
+                                       gboolean is_array = FALSE;
+                                       gboolean _tmp44_ = FALSE;
+                                       const gchar* _tmp45_ = NULL;
+                                       const gchar* _tmp47_ = NULL;
+                                       gboolean _tmp48_ = FALSE;
+                                       GString* _tmp49_ = NULL;
+                                       ValaDataType* _tmp50_ = NULL;
+                                       ValaTypeSymbol* _tmp51_ = NULL;
+                                       ValaTypeSymbol* _tmp52_ = NULL;
+                                       gchar* _tmp53_ = NULL;
+                                       gchar* _tmp54_ = NULL;
+                                       ValaDataType* _tmp55_ = NULL;
+                                       gchar* _tmp56_ = NULL;
+                                       gchar* _tmp57_ = NULL;
                                        ValaList* type_arguments = NULL;
-                                       ValaDataType* _tmp49_ = NULL;
-                                       ValaList* _tmp50_ = NULL;
-                                       ValaList* _tmp51_ = NULL;
-                                       gint _tmp52_ = 0;
-                                       gint _tmp53_ = 0;
+                                       ValaDataType* _tmp58_ = NULL;
+                                       ValaList* _tmp59_ = NULL;
+                                       ValaList* _tmp60_ = NULL;
+                                       gint _tmp61_ = 0;
+                                       gint _tmp62_ = 0;
                                        vala_gir_writer_write_indent (self);
-                                       _tmp31_ = type;
-                                       _tmp32_ = vala_data_type_get_data_type (_tmp31_);
-                                       _tmp33_ = _tmp32_;
-                                       _tmp34_ = vala_gir_writer_gi_type_name (self, _tmp33_);
-                                       type_name = _tmp34_;
+                                       _tmp40_ = type;
+                                       _tmp41_ = vala_data_type_get_data_type (_tmp40_);
+                                       _tmp42_ = _tmp41_;
+                                       _tmp43_ = vala_gir_writer_gi_type_name (self, _tmp42_);
+                                       type_name = _tmp43_;
                                        is_array = FALSE;
-                                       _tmp36_ = type_name;
-                                       if (g_strcmp0 (_tmp36_, "GLib.Array") == 0) {
-                                               _tmp35_ = TRUE;
+                                       _tmp45_ = type_name;
+                                       if (g_strcmp0 (_tmp45_, "GLib.Array") == 0) {
+                                               _tmp44_ = TRUE;
                                        } else {
-                                               const gchar* _tmp37_ = NULL;
-                                               _tmp37_ = type_name;
-                                               _tmp35_ = g_strcmp0 (_tmp37_, "GLib.PtrArray") == 0;
+                                               const gchar* _tmp46_ = NULL;
+                                               _tmp46_ = type_name;
+                                               _tmp44_ = g_strcmp0 (_tmp46_, "GLib.PtrArray") == 0;
                                        }
-                                       if (_tmp35_) {
+                                       if (_tmp44_) {
                                                is_array = TRUE;
                                        }
-                                       _tmp39_ = is_array;
-                                       if (_tmp39_) {
-                                               _tmp38_ = "array";
+                                       _tmp48_ = is_array;
+                                       if (_tmp48_) {
+                                               _tmp47_ = "array";
                                        } else {
-                                               _tmp38_ = "type";
+                                               _tmp47_ = "type";
                                        }
-                                       _tmp40_ = self->priv->buffer;
-                                       _tmp41_ = type;
-                                       _tmp42_ = vala_data_type_get_data_type (_tmp41_);
-                                       _tmp43_ = _tmp42_;
-                                       _tmp44_ = vala_gir_writer_gi_type_name (self, _tmp43_);
-                                       _tmp45_ = _tmp44_;
-                                       _tmp46_ = type;
-                                       _tmp47_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp46_);
-                                       _tmp48_ = _tmp47_;
-                                       g_string_append_printf (_tmp40_, "<%s name=\"%s\" c:type=\"%s\"", _tmp38_, _tmp45_, _tmp48_);
-                                       _g_free0 (_tmp48_);
-                                       _g_free0 (_tmp45_);
-                                       _tmp49_ = type;
-                                       _tmp50_ = vala_data_type_get_type_arguments (_tmp49_);
-                                       type_arguments = _tmp50_;
-                                       _tmp51_ = type_arguments;
-                                       _tmp52_ = vala_collection_get_size ((ValaCollection*) _tmp51_);
-                                       _tmp53_ = _tmp52_;
-                                       if (_tmp53_ == 0) {
-                                               GString* _tmp54_ = NULL;
-                                               _tmp54_ = self->priv->buffer;
-                                               g_string_append_printf (_tmp54_, "/>\n");
+                                       _tmp49_ = self->priv->buffer;
+                                       _tmp50_ = type;
+                                       _tmp51_ = vala_data_type_get_data_type (_tmp50_);
+                                       _tmp52_ = _tmp51_;
+                                       _tmp53_ = vala_gir_writer_gi_type_name (self, _tmp52_);
+                                       _tmp54_ = _tmp53_;
+                                       _tmp55_ = type;
+                                       _tmp56_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp55_);
+                                       _tmp57_ = _tmp56_;
+                                       g_string_append_printf (_tmp49_, "<%s name=\"%s\" c:type=\"%s\"", _tmp47_, _tmp54_, _tmp57_);
+                                       _g_free0 (_tmp57_);
+                                       _g_free0 (_tmp54_);
+                                       _tmp58_ = type;
+                                       _tmp59_ = vala_data_type_get_type_arguments (_tmp58_);
+                                       type_arguments = _tmp59_;
+                                       _tmp60_ = type_arguments;
+                                       _tmp61_ = vala_collection_get_size ((ValaCollection*) _tmp60_);
+                                       _tmp62_ = _tmp61_;
+                                       if (_tmp62_ == 0) {
+                                               GString* _tmp63_ = NULL;
+                                               _tmp63_ = self->priv->buffer;
+                                               g_string_append_printf (_tmp63_, "/>\n");
                                        } else {
-                                               GString* _tmp55_ = NULL;
-                                               gint _tmp56_ = 0;
-                                               gint _tmp69_ = 0;
-                                               const gchar* _tmp70_ = NULL;
-                                               gboolean _tmp71_ = FALSE;
-                                               GString* _tmp72_ = NULL;
-                                               _tmp55_ = self->priv->buffer;
-                                               g_string_append_printf (_tmp55_, ">\n");
-                                               _tmp56_ = self->priv->indent;
-                                               self->priv->indent = _tmp56_ + 1;
+                                               GString* _tmp64_ = NULL;
+                                               gint _tmp65_ = 0;
+                                               gint _tmp78_ = 0;
+                                               const gchar* _tmp79_ = NULL;
+                                               gboolean _tmp80_ = FALSE;
+                                               GString* _tmp81_ = NULL;
+                                               _tmp64_ = self->priv->buffer;
+                                               g_string_append_printf (_tmp64_, ">\n");
+                                               _tmp65_ = self->priv->indent;
+                                               self->priv->indent = _tmp65_ + 1;
                                                {
                                                        ValaList* _type_argument_list = NULL;
-                                                       ValaList* _tmp57_ = NULL;
-                                                       ValaList* _tmp58_ = NULL;
+                                                       ValaList* _tmp66_ = NULL;
+                                                       ValaList* _tmp67_ = NULL;
                                                        gint _type_argument_size = 0;
-                                                       ValaList* _tmp59_ = NULL;
-                                                       gint _tmp60_ = 0;
-                                                       gint _tmp61_ = 0;
+                                                       ValaList* _tmp68_ = NULL;
+                                                       gint _tmp69_ = 0;
+                                                       gint _tmp70_ = 0;
                                                        gint _type_argument_index = 0;
-                                                       _tmp57_ = type_arguments;
-                                                       _tmp58_ = _vala_iterable_ref0 (_tmp57_);
-                                                       _type_argument_list = _tmp58_;
-                                                       _tmp59_ = _type_argument_list;
-                                                       _tmp60_ = vala_collection_get_size ((ValaCollection*) _tmp59_);
-                                                       _tmp61_ = _tmp60_;
-                                                       _type_argument_size = _tmp61_;
+                                                       _tmp66_ = type_arguments;
+                                                       _tmp67_ = _vala_iterable_ref0 (_tmp66_);
+                                                       _type_argument_list = _tmp67_;
+                                                       _tmp68_ = _type_argument_list;
+                                                       _tmp69_ = vala_collection_get_size ((ValaCollection*) _tmp68_);
+                                                       _tmp70_ = _tmp69_;
+                                                       _type_argument_size = _tmp70_;
                                                        _type_argument_index = -1;
                                                        while (TRUE) {
-                                                               gint _tmp62_ = 0;
-                                                               gint _tmp63_ = 0;
-                                                               gint _tmp64_ = 0;
+                                                               gint _tmp71_ = 0;
+                                                               gint _tmp72_ = 0;
+                                                               gint _tmp73_ = 0;
                                                                ValaDataType* type_argument = NULL;
-                                                               ValaList* _tmp65_ = NULL;
-                                                               gint _tmp66_ = 0;
-                                                               gpointer _tmp67_ = NULL;
-                                                               ValaDataType* _tmp68_ = NULL;
-                                                               _tmp62_ = _type_argument_index;
-                                                               _type_argument_index = _tmp62_ + 1;
-                                                               _tmp63_ = _type_argument_index;
-                                                               _tmp64_ = _type_argument_size;
-                                                               if (!(_tmp63_ < _tmp64_)) {
+                                                               ValaList* _tmp74_ = NULL;
+                                                               gint _tmp75_ = 0;
+                                                               gpointer _tmp76_ = NULL;
+                                                               ValaDataType* _tmp77_ = NULL;
+                                                               _tmp71_ = _type_argument_index;
+                                                               _type_argument_index = _tmp71_ + 1;
+                                                               _tmp72_ = _type_argument_index;
+                                                               _tmp73_ = _type_argument_size;
+                                                               if (!(_tmp72_ < _tmp73_)) {
                                                                        break;
                                                                }
-                                                               _tmp65_ = _type_argument_list;
-                                                               _tmp66_ = _type_argument_index;
-                                                               _tmp67_ = vala_list_get (_tmp65_, _tmp66_);
-                                                               type_argument = (ValaDataType*) _tmp67_;
-                                                               _tmp68_ = type_argument;
-                                                               vala_gir_writer_write_type (self, _tmp68_, -1);
+                                                               _tmp74_ = _type_argument_list;
+                                                               _tmp75_ = _type_argument_index;
+                                                               _tmp76_ = vala_list_get (_tmp74_, _tmp75_);
+                                                               type_argument = (ValaDataType*) _tmp76_;
+                                                               _tmp77_ = type_argument;
+                                                               vala_gir_writer_write_type (self, _tmp77_, -1);
                                                                _vala_code_node_unref0 (type_argument);
                                                        }
                                                        _vala_iterable_unref0 (_type_argument_list);
                                                }
-                                               _tmp69_ = self->priv->indent;
-                                               self->priv->indent = _tmp69_ - 1;
+                                               _tmp78_ = self->priv->indent;
+                                               self->priv->indent = _tmp78_ - 1;
                                                vala_gir_writer_write_indent (self);
-                                               _tmp71_ = is_array;
-                                               if (_tmp71_) {
-                                                       _tmp70_ = "array";
+                                               _tmp80_ = is_array;
+                                               if (_tmp80_) {
+                                                       _tmp79_ = "array";
                                                } else {
-                                                       _tmp70_ = "type";
+                                                       _tmp79_ = "type";
                                                }
-                                               _tmp72_ = self->priv->buffer;
-                                               g_string_append_printf (_tmp72_, "</%s>\n", _tmp70_);
+                                               _tmp81_ = self->priv->buffer;
+                                               g_string_append_printf (_tmp81_, "</%s>\n", _tmp79_);
                                        }
                                        _vala_iterable_unref0 (type_arguments);
                                        _g_free0 (type_name);
                                } else {
-                                       ValaDataType* _tmp73_ = NULL;
-                                       _tmp73_ = type;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp73_, VALA_TYPE_DELEGATE_TYPE)) {
+                                       ValaDataType* _tmp82_ = NULL;
+                                       _tmp82_ = type;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp82_, VALA_TYPE_DELEGATE_TYPE)) {
                                                ValaDelegateType* deleg_type = NULL;
-                                               ValaDataType* _tmp74_ = NULL;
-                                               ValaDelegateType* _tmp75_ = NULL;
-                                               GString* _tmp76_ = NULL;
-                                               ValaDelegateType* _tmp77_ = NULL;
-                                               ValaDelegate* _tmp78_ = NULL;
-                                               ValaDelegate* _tmp79_ = NULL;
-                                               gchar* _tmp80_ = NULL;
-                                               gchar* _tmp81_ = NULL;
-                                               ValaDataType* _tmp82_ = NULL;
-                                               gchar* _tmp83_ = NULL;
-                                               gchar* _tmp84_ = NULL;
-                                               _tmp74_ = type;
-                                               _tmp75_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp74_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                                               deleg_type = _tmp75_;
+                                               ValaDataType* _tmp83_ = NULL;
+                                               ValaDelegateType* _tmp84_ = NULL;
+                                               GString* _tmp85_ = NULL;
+                                               ValaDelegateType* _tmp86_ = NULL;
+                                               ValaDelegate* _tmp87_ = NULL;
+                                               ValaDelegate* _tmp88_ = NULL;
+                                               gchar* _tmp89_ = NULL;
+                                               gchar* _tmp90_ = NULL;
+                                               ValaDataType* _tmp91_ = NULL;
+                                               gchar* _tmp92_ = NULL;
+                                               gchar* _tmp93_ = NULL;
+                                               _tmp83_ = type;
+                                               _tmp84_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp83_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                                               deleg_type = _tmp84_;
                                                vala_gir_writer_write_indent (self);
-                                               _tmp76_ = self->priv->buffer;
-                                               _tmp77_ = deleg_type;
-                                               _tmp78_ = vala_delegate_type_get_delegate_symbol (_tmp77_);
-                                               _tmp79_ = _tmp78_;
-                                               _tmp80_ = vala_gir_writer_gi_type_name (self, (ValaTypeSymbol*) _tmp79_);
-                                               _tmp81_ = _tmp80_;
-                                               _tmp82_ = type;
-                                               _tmp83_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp82_);
-                                               _tmp84_ = _tmp83_;
-                                               g_string_append_printf (_tmp76_, "<type name=\"%s\" c:type=\"%s\"/>\n", _tmp81_, _tmp84_);
-                                               _g_free0 (_tmp84_);
-                                               _g_free0 (_tmp81_);
+                                               _tmp85_ = self->priv->buffer;
+                                               _tmp86_ = deleg_type;
+                                               _tmp87_ = vala_delegate_type_get_delegate_symbol (_tmp86_);
+                                               _tmp88_ = _tmp87_;
+                                               _tmp89_ = vala_gir_writer_gi_type_name (self, (ValaTypeSymbol*) _tmp88_);
+                                               _tmp90_ = _tmp89_;
+                                               _tmp91_ = type;
+                                               _tmp92_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp91_);
+                                               _tmp93_ = _tmp92_;
+                                               g_string_append_printf (_tmp85_, "<type name=\"%s\" c:type=\"%s\"/>\n", _tmp90_, _tmp93_);
+                                               _g_free0 (_tmp93_);
+                                               _g_free0 (_tmp90_);
                                                _vala_code_node_unref0 (deleg_type);
                                        } else {
-                                               ValaDataType* _tmp85_ = NULL;
-                                               _tmp85_ = type;
-                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp85_, VALA_TYPE_GENERIC_TYPE)) {
-                                                       GString* _tmp86_ = NULL;
+                                               ValaDataType* _tmp94_ = NULL;
+                                               _tmp94_ = type;
+                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp94_, VALA_TYPE_GENERIC_TYPE)) {
+                                                       GString* _tmp95_ = NULL;
                                                        vala_gir_writer_write_indent (self);
-                                                       _tmp86_ = self->priv->buffer;
-                                                       g_string_append (_tmp86_, "<type name=\"gpointer\" c:type=\"gpointer\"/>\n");
+                                                       _tmp95_ = self->priv->buffer;
+                                                       g_string_append (_tmp95_, "<type name=\"gpointer\" c:type=\"gpointer\"/>\n");
                                                } else {
-                                                       GString* _tmp87_ = NULL;
-                                                       ValaDataType* _tmp88_ = NULL;
-                                                       gchar* _tmp89_ = NULL;
-                                                       gchar* _tmp90_ = NULL;
+                                                       GString* _tmp96_ = NULL;
+                                                       ValaDataType* _tmp97_ = NULL;
+                                                       gchar* _tmp98_ = NULL;
+                                                       gchar* _tmp99_ = NULL;
                                                        vala_gir_writer_write_indent (self);
-                                                       _tmp87_ = self->priv->buffer;
-                                                       _tmp88_ = type;
-                                                       _tmp89_ = vala_code_node_to_string ((ValaCodeNode*) _tmp88_);
-                                                       _tmp90_ = _tmp89_;
-                                                       g_string_append_printf (_tmp87_, "<type name=\"%s\"/>\n", _tmp90_);
-                                                       _g_free0 (_tmp90_);
+                                                       _tmp96_ = self->priv->buffer;
+                                                       _tmp97_ = type;
+                                                       _tmp98_ = vala_code_node_to_string ((ValaCodeNode*) _tmp97_);
+                                                       _tmp99_ = _tmp98_;
+                                                       g_string_append_printf (_tmp96_, "<type name=\"%s\"/>\n", _tmp99_);
+                                                       _g_free0 (_tmp99_);
                                                }
                                        }
                                }
@@ -6111,142 +6368,151 @@ static gboolean string_contains (const gchar* self, const gchar* needle) {
 
 static gchar* vala_gir_writer_get_full_gir_name (ValaGIRWriter* self, ValaSymbol* sym) {
        gchar* result = NULL;
-       gchar* _tmp0_ = NULL;
-       ValaSymbol* _tmp1_ = NULL;
-       gchar* _tmp2_ = NULL;
        gchar* gir_name = NULL;
-       gchar* _tmp7_ = NULL;
-       ValaSymbol* _tmp8_ = NULL;
-       ValaSymbol* _tmp9_ = NULL;
-       ValaSymbol* _tmp10_ = NULL;
-       ValaSymbol* _tmp11_ = NULL;
-       const gchar* _tmp12_ = NULL;
-       const gchar* _tmp13_ = NULL;
+       ValaSymbol* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       gboolean _tmp2_ = FALSE;
+       const gchar* _tmp3_ = NULL;
+       const gchar* _tmp7_ = NULL;
+       ValaSymbol* _tmp12_ = NULL;
+       ValaSymbol* _tmp13_ = NULL;
+       ValaSymbol* _tmp14_ = NULL;
+       ValaSymbol* _tmp15_ = NULL;
+       const gchar* _tmp16_ = NULL;
+       const gchar* _tmp17_ = NULL;
        gchar* parent_gir_name = NULL;
-       ValaSymbol* _tmp18_ = NULL;
-       ValaSymbol* _tmp19_ = NULL;
-       ValaSymbol* _tmp20_ = NULL;
-       gchar* _tmp21_ = NULL;
-       const gchar* _tmp22_ = NULL;
-       gchar* _tmp23_ = NULL;
-       const gchar* _tmp24_ = NULL;
-       gboolean _tmp25_ = FALSE;
+       ValaSymbol* _tmp22_ = NULL;
+       ValaSymbol* _tmp23_ = NULL;
+       ValaSymbol* _tmp24_ = NULL;
+       gchar* _tmp25_ = NULL;
+       const gchar* _tmp26_ = NULL;
+       gchar* _tmp27_ = NULL;
+       const gchar* _tmp28_ = NULL;
+       gboolean _tmp29_ = FALSE;
        gchar* self_gir_name = NULL;
-       gchar* _tmp30_ = NULL;
-       const gchar* _tmp31_ = NULL;
-       gboolean _tmp32_ = FALSE;
+       gchar* _tmp34_ = NULL;
+       const gchar* _tmp35_ = NULL;
+       gboolean _tmp36_ = FALSE;
        g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (sym != NULL, NULL);
-       _tmp1_ = sym;
-       _tmp2_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp1_, "GIR", "name", NULL);
-       _tmp0_ = _tmp2_;
-       if (_tmp0_ == NULL) {
-               ValaSymbol* _tmp3_ = NULL;
-               const gchar* _tmp4_ = NULL;
-               const gchar* _tmp5_ = NULL;
+       _tmp0_ = sym;
+       _tmp1_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp0_, "GIR", "name", NULL);
+       gir_name = _tmp1_;
+       _tmp3_ = gir_name;
+       if (_tmp3_ == NULL) {
+               ValaSymbol* _tmp4_ = NULL;
+               _tmp4_ = sym;
+               _tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_NAMESPACE);
+       } else {
+               _tmp2_ = FALSE;
+       }
+       if (_tmp2_) {
+               ValaSymbol* _tmp5_ = NULL;
                gchar* _tmp6_ = NULL;
-               _tmp3_ = sym;
-               _tmp4_ = vala_symbol_get_name (_tmp3_);
-               _tmp5_ = _tmp4_;
-               _tmp6_ = g_strdup (_tmp5_);
-               _g_free0 (_tmp0_);
-               _tmp0_ = _tmp6_;
-       }
-       _tmp7_ = _tmp0_;
-       _tmp0_ = NULL;
-       gir_name = _tmp7_;
-       _tmp8_ = sym;
-       _tmp9_ = vala_symbol_get_parent_symbol (_tmp8_);
-       _tmp10_ = _tmp9_;
-       if (_tmp10_ == NULL) {
+               _tmp5_ = sym;
+               _tmp6_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp5_, "CCode", "gir_namespace", NULL);
+               _g_free0 (gir_name);
+               gir_name = _tmp6_;
+       }
+       _tmp7_ = gir_name;
+       if (_tmp7_ == NULL) {
+               ValaSymbol* _tmp8_ = NULL;
+               const gchar* _tmp9_ = NULL;
+               const gchar* _tmp10_ = NULL;
+               gchar* _tmp11_ = NULL;
+               _tmp8_ = sym;
+               _tmp9_ = vala_symbol_get_name (_tmp8_);
+               _tmp10_ = _tmp9_;
+               _tmp11_ = g_strdup (_tmp10_);
+               _g_free0 (gir_name);
+               gir_name = _tmp11_;
+       }
+       _tmp12_ = sym;
+       _tmp13_ = vala_symbol_get_parent_symbol (_tmp12_);
+       _tmp14_ = _tmp13_;
+       if (_tmp14_ == NULL) {
                result = gir_name;
-               _g_free0 (_tmp0_);
                return result;
        }
-       _tmp11_ = sym;
-       _tmp12_ = vala_symbol_get_name (_tmp11_);
-       _tmp13_ = _tmp12_;
-       if (_tmp13_ == NULL) {
-               ValaSymbol* _tmp14_ = NULL;
-               ValaSymbol* _tmp15_ = NULL;
-               ValaSymbol* _tmp16_ = NULL;
-               gchar* _tmp17_ = NULL;
-               _tmp14_ = sym;
-               _tmp15_ = vala_symbol_get_parent_symbol (_tmp14_);
-               _tmp16_ = _tmp15_;
-               _tmp17_ = vala_gir_writer_get_full_gir_name (self, _tmp16_);
-               result = _tmp17_;
+       _tmp15_ = sym;
+       _tmp16_ = vala_symbol_get_name (_tmp15_);
+       _tmp17_ = _tmp16_;
+       if (_tmp17_ == NULL) {
+               ValaSymbol* _tmp18_ = NULL;
+               ValaSymbol* _tmp19_ = NULL;
+               ValaSymbol* _tmp20_ = NULL;
+               gchar* _tmp21_ = NULL;
+               _tmp18_ = sym;
+               _tmp19_ = vala_symbol_get_parent_symbol (_tmp18_);
+               _tmp20_ = _tmp19_;
+               _tmp21_ = vala_gir_writer_get_full_gir_name (self, _tmp20_);
+               result = _tmp21_;
                _g_free0 (gir_name);
-               _g_free0 (_tmp0_);
                return result;
        }
-       _tmp18_ = sym;
-       _tmp19_ = vala_symbol_get_parent_symbol (_tmp18_);
-       _tmp20_ = _tmp19_;
-       _tmp21_ = vala_gir_writer_get_full_gir_name (self, _tmp20_);
-       parent_gir_name = _tmp21_;
-       _tmp22_ = parent_gir_name;
-       if (_tmp22_ == NULL) {
+       _tmp22_ = sym;
+       _tmp23_ = vala_symbol_get_parent_symbol (_tmp22_);
+       _tmp24_ = _tmp23_;
+       _tmp25_ = vala_gir_writer_get_full_gir_name (self, _tmp24_);
+       parent_gir_name = _tmp25_;
+       _tmp26_ = parent_gir_name;
+       if (_tmp26_ == NULL) {
                result = gir_name;
                _g_free0 (parent_gir_name);
-               _g_free0 (_tmp0_);
                return result;
        }
-       _tmp24_ = gir_name;
-       _tmp25_ = g_str_has_prefix (_tmp24_, ".");
-       if (_tmp25_) {
-               const gchar* _tmp26_ = NULL;
-               gchar* _tmp27_ = NULL;
-               _tmp26_ = gir_name;
-               _tmp27_ = string_substring (_tmp26_, (glong) 1, (glong) (-1));
-               _g_free0 (_tmp23_);
-               _tmp23_ = _tmp27_;
+       _tmp28_ = gir_name;
+       _tmp29_ = g_str_has_prefix (_tmp28_, ".");
+       if (_tmp29_) {
+               const gchar* _tmp30_ = NULL;
+               gchar* _tmp31_ = NULL;
+               _tmp30_ = gir_name;
+               _tmp31_ = string_substring (_tmp30_, (glong) 1, (glong) (-1));
+               _g_free0 (_tmp27_);
+               _tmp27_ = _tmp31_;
        } else {
-               const gchar* _tmp28_ = NULL;
-               gchar* _tmp29_ = NULL;
-               _tmp28_ = gir_name;
-               _tmp29_ = g_strdup (_tmp28_);
-               _g_free0 (_tmp23_);
-               _tmp23_ = _tmp29_;
-       }
-       _tmp30_ = g_strdup (_tmp23_);
-       self_gir_name = _tmp30_;
-       _tmp31_ = parent_gir_name;
-       _tmp32_ = string_contains (_tmp31_, ".");
-       if (_tmp32_) {
-               const gchar* _tmp33_ = NULL;
-               const gchar* _tmp34_ = NULL;
-               gchar* _tmp35_ = NULL;
-               _tmp33_ = parent_gir_name;
-               _tmp34_ = self_gir_name;
-               _tmp35_ = g_strdup_printf ("%s%s", _tmp33_, _tmp34_);
-               result = _tmp35_;
+               const gchar* _tmp32_ = NULL;
+               gchar* _tmp33_ = NULL;
+               _tmp32_ = gir_name;
+               _tmp33_ = g_strdup (_tmp32_);
+               _g_free0 (_tmp27_);
+               _tmp27_ = _tmp33_;
+       }
+       _tmp34_ = g_strdup (_tmp27_);
+       self_gir_name = _tmp34_;
+       _tmp35_ = parent_gir_name;
+       _tmp36_ = string_contains (_tmp35_, ".");
+       if (_tmp36_) {
+               const gchar* _tmp37_ = NULL;
+               const gchar* _tmp38_ = NULL;
+               gchar* _tmp39_ = NULL;
+               _tmp37_ = parent_gir_name;
+               _tmp38_ = self_gir_name;
+               _tmp39_ = g_strdup_printf ("%s%s", _tmp37_, _tmp38_);
+               result = _tmp39_;
                _g_free0 (self_gir_name);
-               _g_free0 (_tmp23_);
+               _g_free0 (_tmp27_);
                _g_free0 (parent_gir_name);
                _g_free0 (gir_name);
-               _g_free0 (_tmp0_);
                return result;
        } else {
-               const gchar* _tmp36_ = NULL;
-               const gchar* _tmp37_ = NULL;
-               gchar* _tmp38_ = NULL;
-               _tmp36_ = parent_gir_name;
-               _tmp37_ = self_gir_name;
-               _tmp38_ = g_strdup_printf ("%s.%s", _tmp36_, _tmp37_);
-               result = _tmp38_;
+               const gchar* _tmp40_ = NULL;
+               const gchar* _tmp41_ = NULL;
+               gchar* _tmp42_ = NULL;
+               _tmp40_ = parent_gir_name;
+               _tmp41_ = self_gir_name;
+               _tmp42_ = g_strdup_printf ("%s.%s", _tmp40_, _tmp41_);
+               result = _tmp42_;
                _g_free0 (self_gir_name);
-               _g_free0 (_tmp23_);
+               _g_free0 (_tmp27_);
                _g_free0 (parent_gir_name);
                _g_free0 (gir_name);
-               _g_free0 (_tmp0_);
                return result;
        }
        _g_free0 (self_gir_name);
-       _g_free0 (_tmp23_);
+       _g_free0 (_tmp27_);
        _g_free0 (parent_gir_name);
        _g_free0 (gir_name);
-       _g_free0 (_tmp0_);
 }
 
 
@@ -6661,7 +6927,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                gint _tmp43__length1 = 0;
                const gchar* _tmp44_ = NULL;
                void* _tmp45_ = NULL;
-               const gchar* _tmp59_ = NULL;
+               const gchar* _tmp62_ = NULL;
                len = (gsize) 1;
                {
                        gboolean _tmp9_ = FALSE;
@@ -6738,7 +7004,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                        _tmp25__length1 = str_array_length1;
                                        _tmp26_ = i;
                                        _tmp27_ = _tmp25_[_tmp26_];
-                                       _tmp28_ = strlen (_tmp27_);
+                                       _tmp28_ = strlen ((const gchar*) _tmp27_);
                                        _tmp29_ = _tmp28_;
                                        _tmp21_ = _tmp29_;
                                } else {
@@ -6760,7 +7026,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                _tmp34_ = str_array_length1;
                _tmp35_ = len;
                _tmp36_ = separator;
-               _tmp37_ = strlen (_tmp36_);
+               _tmp37_ = strlen ((const gchar*) _tmp36_);
                _tmp38_ = _tmp37_;
                _tmp39_ = i;
                len = _tmp35_ + (_tmp38_ * (_tmp39_ - 1));
@@ -6771,7 +7037,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                _tmp43_ = str_array;
                _tmp43__length1 = str_array_length1;
                _tmp44_ = _tmp43_[0];
-               _tmp45_ = g_stpcpy ((void*) _tmp42_, _tmp44_);
+               _tmp45_ = g_stpcpy ((void*) _tmp42_, (const gchar*) _tmp44_);
                ptr = _tmp45_;
                {
                        gboolean _tmp46_ = FALSE;
@@ -6789,8 +7055,8 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                gint _tmp54__length1 = 0;
                                gint _tmp55_ = 0;
                                const gchar* _tmp56_ = NULL;
-                               void* _tmp57_ = NULL;
-                               void* _tmp58_ = NULL;
+                               void* _tmp60_ = NULL;
+                               void* _tmp61_ = NULL;
                                if (!_tmp46_) {
                                        gint _tmp47_ = 0;
                                        _tmp47_ = i;
@@ -6805,29 +7071,38 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                }
                                _tmp50_ = ptr;
                                _tmp51_ = separator;
-                               _tmp52_ = g_stpcpy (_tmp50_, _tmp51_);
+                               _tmp52_ = g_stpcpy (_tmp50_, (const gchar*) _tmp51_);
                                ptr = _tmp52_;
                                _tmp54_ = str_array;
                                _tmp54__length1 = str_array_length1;
                                _tmp55_ = i;
                                _tmp56_ = _tmp54_[_tmp55_];
-                               _tmp53_ = _tmp56_;
-                               if (_tmp53_ == NULL) {
+                               if (_tmp56_ != NULL) {
+                                       gchar** _tmp57_ = NULL;
+                                       gint _tmp57__length1 = 0;
+                                       gint _tmp58_ = 0;
+                                       const gchar* _tmp59_ = NULL;
+                                       _tmp57_ = str_array;
+                                       _tmp57__length1 = str_array_length1;
+                                       _tmp58_ = i;
+                                       _tmp59_ = _tmp57_[_tmp58_];
+                                       _tmp53_ = (const gchar*) _tmp59_;
+                               } else {
                                        _tmp53_ = "";
                                }
-                               _tmp57_ = ptr;
-                               _tmp58_ = g_stpcpy (_tmp57_, _tmp53_);
-                               ptr = _tmp58_;
+                               _tmp60_ = ptr;
+                               _tmp61_ = g_stpcpy (_tmp60_, _tmp53_);
+                               ptr = _tmp61_;
                        }
                }
-               _tmp59_ = res;
+               _tmp62_ = res;
                res = NULL;
-               result = (gchar*) _tmp59_;
+               result = (gchar*) _tmp62_;
                return result;
        } else {
-               gchar* _tmp60_ = NULL;
-               _tmp60_ = g_strdup ("");
-               result = _tmp60_;
+               gchar* _tmp63_ = NULL;
+               _tmp63_ = g_strdup ("");
+               result = _tmp63_;
                return result;
        }
 }
@@ -7002,40 +7277,40 @@ static GType vala_gir_writer_gir_namespace_get_type (void) {
 
 static void vala_gir_writer_class_init (ValaGIRWriterClass * klass) {
        vala_gir_writer_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_gir_writer_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_gir_writer_finalize;
        g_type_class_add_private (klass, sizeof (ValaGIRWriterPrivate));
-       VALA_GIR_WRITER_CLASS (klass)->get_interface_comment = vala_gir_writer_real_get_interface_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_struct_comment = vala_gir_writer_real_get_struct_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_enum_comment = vala_gir_writer_real_get_enum_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_class_comment = vala_gir_writer_real_get_class_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_error_code_comment = vala_gir_writer_real_get_error_code_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_enum_value_comment = vala_gir_writer_real_get_enum_value_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_constant_comment = vala_gir_writer_real_get_constant_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_error_domain_comment = vala_gir_writer_real_get_error_domain_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_field_comment = vala_gir_writer_real_get_field_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_delegate_comment = vala_gir_writer_real_get_delegate_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_method_comment = vala_gir_writer_real_get_method_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_property_comment = vala_gir_writer_real_get_property_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_delegate_return_comment = vala_gir_writer_real_get_delegate_return_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_signal_return_comment = vala_gir_writer_real_get_signal_return_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_method_return_comment = vala_gir_writer_real_get_method_return_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_signal_comment = vala_gir_writer_real_get_signal_comment;
-       VALA_GIR_WRITER_CLASS (klass)->get_parameter_comment = vala_gir_writer_real_get_parameter_comment;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_namespace = vala_gir_writer_real_visit_namespace;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_gir_writer_real_visit_class;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_struct = vala_gir_writer_real_visit_struct;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_interface = vala_gir_writer_real_visit_interface;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_gir_writer_real_visit_enum;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_enum_value = vala_gir_writer_real_visit_enum_value;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_error_domain = vala_gir_writer_real_visit_error_domain;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_error_code = vala_gir_writer_real_visit_error_code;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_constant = vala_gir_writer_real_visit_constant;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_field = vala_gir_writer_real_visit_field;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_delegate = vala_gir_writer_real_visit_delegate;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method = vala_gir_writer_real_visit_method;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_creation_method = vala_gir_writer_real_visit_creation_method;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_property = vala_gir_writer_real_visit_property;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_signal = vala_gir_writer_real_visit_signal;
+       ((ValaGIRWriterClass *) klass)->get_interface_comment = vala_gir_writer_real_get_interface_comment;
+       ((ValaGIRWriterClass *) klass)->get_struct_comment = vala_gir_writer_real_get_struct_comment;
+       ((ValaGIRWriterClass *) klass)->get_enum_comment = vala_gir_writer_real_get_enum_comment;
+       ((ValaGIRWriterClass *) klass)->get_class_comment = vala_gir_writer_real_get_class_comment;
+       ((ValaGIRWriterClass *) klass)->get_error_code_comment = vala_gir_writer_real_get_error_code_comment;
+       ((ValaGIRWriterClass *) klass)->get_enum_value_comment = vala_gir_writer_real_get_enum_value_comment;
+       ((ValaGIRWriterClass *) klass)->get_constant_comment = vala_gir_writer_real_get_constant_comment;
+       ((ValaGIRWriterClass *) klass)->get_error_domain_comment = vala_gir_writer_real_get_error_domain_comment;
+       ((ValaGIRWriterClass *) klass)->get_field_comment = vala_gir_writer_real_get_field_comment;
+       ((ValaGIRWriterClass *) klass)->get_delegate_comment = vala_gir_writer_real_get_delegate_comment;
+       ((ValaGIRWriterClass *) klass)->get_method_comment = vala_gir_writer_real_get_method_comment;
+       ((ValaGIRWriterClass *) klass)->get_property_comment = vala_gir_writer_real_get_property_comment;
+       ((ValaGIRWriterClass *) klass)->get_delegate_return_comment = vala_gir_writer_real_get_delegate_return_comment;
+       ((ValaGIRWriterClass *) klass)->get_signal_return_comment = vala_gir_writer_real_get_signal_return_comment;
+       ((ValaGIRWriterClass *) klass)->get_method_return_comment = vala_gir_writer_real_get_method_return_comment;
+       ((ValaGIRWriterClass *) klass)->get_signal_comment = vala_gir_writer_real_get_signal_comment;
+       ((ValaGIRWriterClass *) klass)->get_parameter_comment = vala_gir_writer_real_get_parameter_comment;
+       ((ValaCodeVisitorClass *) klass)->visit_namespace = vala_gir_writer_real_visit_namespace;
+       ((ValaCodeVisitorClass *) klass)->visit_class = vala_gir_writer_real_visit_class;
+       ((ValaCodeVisitorClass *) klass)->visit_struct = vala_gir_writer_real_visit_struct;
+       ((ValaCodeVisitorClass *) klass)->visit_interface = vala_gir_writer_real_visit_interface;
+       ((ValaCodeVisitorClass *) klass)->visit_enum = vala_gir_writer_real_visit_enum;
+       ((ValaCodeVisitorClass *) klass)->visit_enum_value = vala_gir_writer_real_visit_enum_value;
+       ((ValaCodeVisitorClass *) klass)->visit_error_domain = vala_gir_writer_real_visit_error_domain;
+       ((ValaCodeVisitorClass *) klass)->visit_error_code = vala_gir_writer_real_visit_error_code;
+       ((ValaCodeVisitorClass *) klass)->visit_constant = vala_gir_writer_real_visit_constant;
+       ((ValaCodeVisitorClass *) klass)->visit_field = vala_gir_writer_real_visit_field;
+       ((ValaCodeVisitorClass *) klass)->visit_delegate = vala_gir_writer_real_visit_delegate;
+       ((ValaCodeVisitorClass *) klass)->visit_method = vala_gir_writer_real_visit_method;
+       ((ValaCodeVisitorClass *) klass)->visit_creation_method = vala_gir_writer_real_visit_creation_method;
+       ((ValaCodeVisitorClass *) klass)->visit_property = vala_gir_writer_real_visit_property;
+       ((ValaCodeVisitorClass *) klass)->visit_signal = vala_gir_writer_real_visit_signal;
 }
 
 
index e654509..e855e1e 100644 (file)
@@ -340,7 +340,7 @@ public class Vala.GIRWriter : CodeVisitor {
                        buffer.append_printf ("<field name=\"priv\">\n");
                        indent++;
                        write_indent ();
-                       buffer.append_printf ("<type name=\"%sPrivate\" c:type=\"%sPrivate*\"/>\n", cl.name, CCodeBaseModule.get_ccode_name (cl));
+                       buffer.append_printf ("<type name=\"%sPrivate\" c:type=\"%sPrivate*\"/>\n", get_gir_name (cl), CCodeBaseModule.get_ccode_name (cl));
                        indent--;
                        write_indent ();
                        buffer.append_printf("</field>\n");
@@ -423,7 +423,7 @@ public class Vala.GIRWriter : CodeVisitor {
                        buffer.append_printf ("</record>\n");
 
                        write_indent ();
-                       buffer.append_printf ("<record name=\"%sPrivate\" c:type=\"%sPrivate\" disguised=\"1\"/>\n", cl.name, CCodeBaseModule.get_ccode_name (cl));
+                       buffer.append_printf ("<record name=\"%sPrivate\" c:type=\"%sPrivate\" disguised=\"1\"/>\n", get_gir_name (cl), CCodeBaseModule.get_ccode_name (cl));
                } else {
                        write_indent ();
                        buffer.append_printf ("<record name=\"%s\"", get_gir_name (cl));
@@ -578,6 +578,32 @@ public class Vala.GIRWriter : CodeVisitor {
                        }
                }
 
+               foreach (var prop in iface.get_properties ()) {
+                       if (prop.is_abstract || prop.is_virtual) {
+                               if (prop.get_accessor != null) {
+                                       var m = prop.get_accessor.get_method ();
+                                       write_indent ();
+                                       buffer.append_printf("<field name=\"%s\">\n", m.name);
+                                       indent++;
+                                       do_write_signature (m, "callback", true, m.name, CCodeBaseModule.get_ccode_name (m), m.get_parameters (), m.return_type, m.tree_can_fail, false);
+                                       indent--;
+                                       write_indent ();
+                                       buffer.append_printf ("</field>\n");
+                               }
+
+                               if (prop.set_accessor != null) {
+                                       var m = prop.set_accessor.get_method ();
+                                       write_indent ();
+                                       buffer.append_printf("<field name=\"%s\">\n", m.name);
+                                       indent++;
+                                       do_write_signature (m, "callback", true, m.name, CCodeBaseModule.get_ccode_name (m), m.get_parameters (), m.return_type, m.tree_can_fail, false);
+                                       indent--;
+                                       write_indent ();
+                                       buffer.append_printf ("</field>\n");
+                               }
+                       }
+               }
+
                indent--;
                write_indent ();
                buffer.append_printf ("</record>\n");
@@ -695,19 +721,9 @@ public class Vala.GIRWriter : CodeVisitor {
                }
 
                write_indent ();
-               buffer.append_printf ("<errordomain name=\"%s\"", edomain.name);
-               buffer.append_printf (" get-quark=\"%squark\"", CCodeBaseModule.get_ccode_lower_case_prefix (edomain));
-               buffer.append_printf (" codes=\"%s\"", edomain.name);
-               write_symbol_attributes (edomain);
-               buffer.append_printf (">\n");
-
-               write_annotations (edomain);
-
-               buffer.append_printf ("</errordomain>\n");
-
-               write_indent ();
                buffer.append_printf ("<enumeration name=\"%s\"", edomain.name);
                write_ctype_attributes (edomain);
+               buffer.append_printf (" glib:error-domain=\"%s\"", CCodeBaseModule.get_quark_name (edomain));
                buffer.append_printf (">\n");
                indent++;
 
@@ -1138,6 +1154,20 @@ public class Vala.GIRWriter : CodeVisitor {
                indent--;
                write_indent ();
                buffer.append_printf ("</property>\n");
+
+               if (prop.get_accessor != null) {
+                       var m = prop.get_accessor.get_method ();
+                       if (m != null) {
+                               visit_method (m);
+                       }
+               }
+
+               if (prop.set_accessor != null) {
+                       var m = prop.set_accessor.get_method ();
+                       if (m != null) {
+                               visit_method (m);
+                       }
+               }
        }
 
        public override void visit_signal (Signal sig) {
@@ -1262,8 +1292,9 @@ public class Vala.GIRWriter : CodeVisitor {
 
                        write_indent ();
                        buffer.append_printf ("<array");
-                       if (array_type.fixed_length) {
-                               buffer.append_printf (" fixed-size=\"%i\"", array_type.length);
+                       if (array_type.fixed_length && array_type.length is IntegerLiteral) {
+                               var lit = (IntegerLiteral) array_type.length;
+                               buffer.append_printf (" fixed-size=\"%i\"", int.parse (lit.value));
                        } else if (index != -1) {
                                buffer.append_printf (" length=\"%i\"", index);
                        }
@@ -1337,7 +1368,15 @@ public class Vala.GIRWriter : CodeVisitor {
        }
 
        private string? get_full_gir_name (Symbol sym) {
-               var gir_name = sym.get_attribute_string ("GIR", "name") ?? sym.name;
+               string? gir_name = sym.get_attribute_string ("GIR", "name");
+
+               if (gir_name == null && sym is Namespace) {
+                       gir_name = sym.get_attribute_string ("CCode", "gir_namespace");
+               }
+               if (gir_name == null) {
+                       gir_name = sym.name;
+               }
+
                if (sym.parent_symbol == null) {
                        return gir_name;
                }
index f643cf4..33301dc 100644 (file)
@@ -1093,7 +1093,7 @@ static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
                        _tmp112_ = type_param;
                        _tmp113_ = vala_symbol_get_name ((ValaSymbol*) _tmp112_);
                        _tmp114_ = _tmp113_;
-                       _tmp115_ = g_utf8_strdown (_tmp114_, (gssize) (-1));
+                       _tmp115_ = g_ascii_strdown (_tmp114_, (gssize) (-1));
                        _tmp116_ = _tmp115_;
                        _tmp117_ = g_strdup_printf ("%s_type", _tmp116_);
                        _g_free0 (func_name);
@@ -1102,7 +1102,7 @@ static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
                        _tmp118_ = type_param;
                        _tmp119_ = vala_symbol_get_name ((ValaSymbol*) _tmp118_);
                        _tmp120_ = _tmp119_;
-                       _tmp121_ = g_utf8_strdown (_tmp120_, (gssize) (-1));
+                       _tmp121_ = g_ascii_strdown (_tmp120_, (gssize) (-1));
                        _tmp122_ = _tmp121_;
                        _tmp123_ = g_strdup_printf ("\"%s-type\"", _tmp122_);
                        _tmp124_ = _tmp123_;
@@ -1117,7 +1117,7 @@ static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
                        _tmp129_ = func_name;
                        _tmp130_ = g_strdup_printf ("%s_%s", _tmp128_, _tmp129_);
                        _tmp131_ = _tmp130_;
-                       _tmp132_ = g_utf8_strup (_tmp131_, (gssize) (-1));
+                       _tmp132_ = g_ascii_strup (_tmp131_, (gssize) (-1));
                        _g_free0 (enum_value);
                        enum_value = _tmp132_;
                        _g_free0 (_tmp131_);
@@ -1183,7 +1183,7 @@ static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
                        _tmp168_ = type_param;
                        _tmp169_ = vala_symbol_get_name ((ValaSymbol*) _tmp168_);
                        _tmp170_ = _tmp169_;
-                       _tmp171_ = g_utf8_strdown (_tmp170_, (gssize) (-1));
+                       _tmp171_ = g_ascii_strdown (_tmp170_, (gssize) (-1));
                        _tmp172_ = _tmp171_;
                        _tmp173_ = g_strdup_printf ("%s_dup_func", _tmp172_);
                        _g_free0 (func_name);
@@ -1192,7 +1192,7 @@ static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
                        _tmp174_ = type_param;
                        _tmp175_ = vala_symbol_get_name ((ValaSymbol*) _tmp174_);
                        _tmp176_ = _tmp175_;
-                       _tmp177_ = g_utf8_strdown (_tmp176_, (gssize) (-1));
+                       _tmp177_ = g_ascii_strdown (_tmp176_, (gssize) (-1));
                        _tmp178_ = _tmp177_;
                        _tmp179_ = g_strdup_printf ("\"%s-dup-func\"", _tmp178_);
                        _tmp180_ = _tmp179_;
@@ -1207,7 +1207,7 @@ static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
                        _tmp185_ = func_name;
                        _tmp186_ = g_strdup_printf ("%s_%s", _tmp184_, _tmp185_);
                        _tmp187_ = _tmp186_;
-                       _tmp188_ = g_utf8_strup (_tmp187_, (gssize) (-1));
+                       _tmp188_ = g_ascii_strup (_tmp187_, (gssize) (-1));
                        _g_free0 (enum_value);
                        enum_value = _tmp188_;
                        _g_free0 (_tmp187_);
@@ -1268,7 +1268,7 @@ static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
                        _tmp221_ = type_param;
                        _tmp222_ = vala_symbol_get_name ((ValaSymbol*) _tmp221_);
                        _tmp223_ = _tmp222_;
-                       _tmp224_ = g_utf8_strdown (_tmp223_, (gssize) (-1));
+                       _tmp224_ = g_ascii_strdown (_tmp223_, (gssize) (-1));
                        _tmp225_ = _tmp224_;
                        _tmp226_ = g_strdup_printf ("%s_destroy_func", _tmp225_);
                        _g_free0 (func_name);
@@ -1277,7 +1277,7 @@ static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
                        _tmp227_ = type_param;
                        _tmp228_ = vala_symbol_get_name ((ValaSymbol*) _tmp227_);
                        _tmp229_ = _tmp228_;
-                       _tmp230_ = g_utf8_strdown (_tmp229_, (gssize) (-1));
+                       _tmp230_ = g_ascii_strdown (_tmp229_, (gssize) (-1));
                        _tmp231_ = _tmp230_;
                        _tmp232_ = g_strdup_printf ("\"%s-destroy-func\"", _tmp231_);
                        _tmp233_ = _tmp232_;
@@ -1292,7 +1292,7 @@ static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
                        _tmp238_ = func_name;
                        _tmp239_ = g_strdup_printf ("%s_%s", _tmp237_, _tmp238_);
                        _tmp240_ = _tmp239_;
-                       _tmp241_ = g_utf8_strup (_tmp240_, (gssize) (-1));
+                       _tmp241_ = g_ascii_strup (_tmp240_, (gssize) (-1));
                        _g_free0 (enum_value);
                        enum_value = _tmp241_;
                        _g_free0 (_tmp240_);
@@ -3192,7 +3192,7 @@ static void vala_gobject_module_add_set_property_function (ValaGObjectModule* se
                        _tmp243_ = type_param;
                        _tmp244_ = vala_symbol_get_name ((ValaSymbol*) _tmp243_);
                        _tmp245_ = _tmp244_;
-                       _tmp246_ = g_utf8_strdown (_tmp245_, (gssize) (-1));
+                       _tmp246_ = g_ascii_strdown (_tmp245_, (gssize) (-1));
                        _tmp247_ = _tmp246_;
                        _tmp248_ = g_strdup_printf ("%s_type", _tmp247_);
                        _g_free0 (func_name);
@@ -3204,7 +3204,7 @@ static void vala_gobject_module_add_set_property_function (ValaGObjectModule* se
                        _tmp252_ = func_name;
                        _tmp253_ = g_strdup_printf ("%s_%s", _tmp251_, _tmp252_);
                        _tmp254_ = _tmp253_;
-                       _tmp255_ = g_utf8_strup (_tmp254_, (gssize) (-1));
+                       _tmp255_ = g_ascii_strup (_tmp254_, (gssize) (-1));
                        _g_free0 (enum_value);
                        enum_value = _tmp255_;
                        _g_free0 (_tmp254_);
@@ -3248,7 +3248,7 @@ static void vala_gobject_module_add_set_property_function (ValaGObjectModule* se
                        _tmp279_ = type_param;
                        _tmp280_ = vala_symbol_get_name ((ValaSymbol*) _tmp279_);
                        _tmp281_ = _tmp280_;
-                       _tmp282_ = g_utf8_strdown (_tmp281_, (gssize) (-1));
+                       _tmp282_ = g_ascii_strdown (_tmp281_, (gssize) (-1));
                        _tmp283_ = _tmp282_;
                        _tmp284_ = g_strdup_printf ("%s_dup_func", _tmp283_);
                        _g_free0 (func_name);
@@ -3260,7 +3260,7 @@ static void vala_gobject_module_add_set_property_function (ValaGObjectModule* se
                        _tmp288_ = func_name;
                        _tmp289_ = g_strdup_printf ("%s_%s", _tmp287_, _tmp288_);
                        _tmp290_ = _tmp289_;
-                       _tmp291_ = g_utf8_strup (_tmp290_, (gssize) (-1));
+                       _tmp291_ = g_ascii_strup (_tmp290_, (gssize) (-1));
                        _g_free0 (enum_value);
                        enum_value = _tmp291_;
                        _g_free0 (_tmp290_);
@@ -3304,7 +3304,7 @@ static void vala_gobject_module_add_set_property_function (ValaGObjectModule* se
                        _tmp315_ = type_param;
                        _tmp316_ = vala_symbol_get_name ((ValaSymbol*) _tmp315_);
                        _tmp317_ = _tmp316_;
-                       _tmp318_ = g_utf8_strdown (_tmp317_, (gssize) (-1));
+                       _tmp318_ = g_ascii_strdown (_tmp317_, (gssize) (-1));
                        _tmp319_ = _tmp318_;
                        _tmp320_ = g_strdup_printf ("%s_destroy_func", _tmp319_);
                        _g_free0 (func_name);
@@ -3316,7 +3316,7 @@ static void vala_gobject_module_add_set_property_function (ValaGObjectModule* se
                        _tmp324_ = func_name;
                        _tmp325_ = g_strdup_printf ("%s_%s", _tmp323_, _tmp324_);
                        _tmp326_ = _tmp325_;
-                       _tmp327_ = g_utf8_strup (_tmp326_, (gssize) (-1));
+                       _tmp327_ = g_ascii_strup (_tmp326_, (gssize) (-1));
                        _g_free0 (enum_value);
                        enum_value = _tmp327_;
                        _g_free0 (_tmp326_);
@@ -5573,19 +5573,19 @@ ValaGObjectModule* vala_gobject_module_new (void) {
 
 static void vala_gobject_module_class_init (ValaGObjectModuleClass * klass) {
        vala_gobject_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_gobject_module_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_gobject_module_finalize;
        g_type_class_add_private (klass, sizeof (ValaGObjectModulePrivate));
-       VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_gobject_module_real_visit_class;
-       VALA_GTYPE_MODULE_CLASS (klass)->generate_class_init = vala_gobject_module_real_generate_class_init;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_constructor = vala_gobject_module_real_visit_constructor;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_property_getter_cname = vala_gobject_module_real_get_dynamic_property_getter_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_property_setter_cname = vala_gobject_module_real_get_dynamic_property_setter_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_cname = vala_gobject_module_real_get_dynamic_signal_cname;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_connect_wrapper_name = vala_gobject_module_real_get_dynamic_signal_connect_wrapper_name;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_dynamic_signal_connect_after_wrapper_name = vala_gobject_module_real_get_dynamic_signal_connect_after_wrapper_name;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_property = vala_gobject_module_real_visit_property;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->is_gobject_property = vala_gobject_module_real_is_gobject_property;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method_call = vala_gobject_module_real_visit_method_call;
+       ((ValaCodeVisitorClass *) klass)->visit_class = vala_gobject_module_real_visit_class;
+       ((ValaGTypeModuleClass *) klass)->generate_class_init = vala_gobject_module_real_generate_class_init;
+       ((ValaCodeVisitorClass *) klass)->visit_constructor = vala_gobject_module_real_visit_constructor;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dynamic_property_getter_cname = vala_gobject_module_real_get_dynamic_property_getter_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dynamic_property_setter_cname = vala_gobject_module_real_get_dynamic_property_setter_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dynamic_signal_cname = vala_gobject_module_real_get_dynamic_signal_cname;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dynamic_signal_connect_wrapper_name = vala_gobject_module_real_get_dynamic_signal_connect_wrapper_name;
+       ((ValaCCodeBaseModuleClass *) klass)->get_dynamic_signal_connect_after_wrapper_name = vala_gobject_module_real_get_dynamic_signal_connect_after_wrapper_name;
+       ((ValaCodeVisitorClass *) klass)->visit_property = vala_gobject_module_real_visit_property;
+       ((ValaCCodeBaseModuleClass *) klass)->is_gobject_property = vala_gobject_module_real_is_gobject_property;
+       ((ValaCodeVisitorClass *) klass)->visit_method_call = vala_gobject_module_real_visit_method_call;
 }
 
 
index ac8b8d3..05450b2 100644 (file)
@@ -79,9 +79,9 @@ public class Vala.GObjectModule : GTypeModule {
                        CCodeConstant func_name_constant;
                        CCodeFunctionCall cinst, cspec;
 
-                       func_name = "%s_type".printf (type_param.name.down ());
-                       func_name_constant = new CCodeConstant ("\"%s-type\"".printf (type_param.name.down ()));
-                       enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).up ();
+                       func_name = "%s_type".printf (type_param.name.ascii_down ());
+                       func_name_constant = new CCodeConstant ("\"%s-type\"".printf (type_param.name.ascii_down ()));
+                       enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).ascii_up ();
                        cinst = new CCodeFunctionCall (new CCodeIdentifier ("g_object_class_install_property"));
                        cinst.add_argument (ccall);
                        cinst.add_argument (new CCodeConstant (enum_value));
@@ -96,9 +96,9 @@ public class Vala.GObjectModule : GTypeModule {
                        prop_enum.add_value (new CCodeEnumValue (enum_value));
 
 
-                       func_name = "%s_dup_func".printf (type_param.name.down ());
-                       func_name_constant = new CCodeConstant ("\"%s-dup-func\"".printf (type_param.name.down ()));
-                       enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).up ();
+                       func_name = "%s_dup_func".printf (type_param.name.ascii_down ());
+                       func_name_constant = new CCodeConstant ("\"%s-dup-func\"".printf (type_param.name.ascii_down ()));
+                       enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).ascii_up ();
                        cinst = new CCodeFunctionCall (new CCodeIdentifier ("g_object_class_install_property"));
                        cinst.add_argument (ccall);
                        cinst.add_argument (new CCodeConstant (enum_value));
@@ -112,9 +112,9 @@ public class Vala.GObjectModule : GTypeModule {
                        prop_enum.add_value (new CCodeEnumValue (enum_value));
 
 
-                       func_name = "%s_destroy_func".printf (type_param.name.down ());
-                       func_name_constant = new CCodeConstant ("\"%s-destroy-func\"".printf (type_param.name.down ()));
-                       enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).up ();
+                       func_name = "%s_destroy_func".printf (type_param.name.ascii_down ());
+                       func_name_constant = new CCodeConstant ("\"%s-destroy-func\"".printf (type_param.name.ascii_down ()));
+                       enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).ascii_up ();
                        cinst = new CCodeFunctionCall (new CCodeIdentifier ("g_object_class_install_property"));
                        cinst.add_argument (ccall);
                        cinst.add_argument (new CCodeConstant (enum_value));
@@ -358,8 +358,8 @@ public class Vala.GObjectModule : GTypeModule {
                        CCodeMemberAccess cfield;
                        CCodeFunctionCall cgetcall;
 
-                       func_name = "%s_type".printf (type_param.name.down ());
-                       enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).up ();
+                       func_name = "%s_type".printf (type_param.name.ascii_down ());
+                       enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).ascii_up ();
                        ccode.add_case (new CCodeIdentifier (enum_value));
                        cfield = new CCodeMemberAccess.pointer (new CCodeMemberAccess.pointer (new CCodeIdentifier ("self"), "priv"), func_name);
                        cgetcall = new CCodeFunctionCall (new CCodeIdentifier ("g_value_get_gtype"));
@@ -367,8 +367,8 @@ public class Vala.GObjectModule : GTypeModule {
                        ccode.add_assignment (cfield, cgetcall);
                        ccode.add_break ();
 
-                       func_name = "%s_dup_func".printf (type_param.name.down ());
-                       enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).up ();
+                       func_name = "%s_dup_func".printf (type_param.name.ascii_down ());
+                       enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).ascii_up ();
                        ccode.add_case (new CCodeIdentifier (enum_value));
                        cfield = new CCodeMemberAccess.pointer (new CCodeMemberAccess.pointer (new CCodeIdentifier ("self"), "priv"), func_name);
                        cgetcall = new CCodeFunctionCall (new CCodeIdentifier ("g_value_get_pointer"));
@@ -376,8 +376,8 @@ public class Vala.GObjectModule : GTypeModule {
                        ccode.add_assignment (cfield, cgetcall);
                        ccode.add_break ();
 
-                       func_name = "%s_destroy_func".printf (type_param.name.down ());
-                       enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).up ();
+                       func_name = "%s_destroy_func".printf (type_param.name.ascii_down ());
+                       enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).ascii_up ();
                        ccode.add_case (new CCodeIdentifier (enum_value));
                        cfield = new CCodeMemberAccess.pointer (new CCodeMemberAccess.pointer (new CCodeIdentifier ("self"), "priv"), func_name);
                        cgetcall = new CCodeFunctionCall (new CCodeIdentifier ("g_value_get_pointer"));
index 2b84dff..97c6160 100644 (file)
@@ -194,6 +194,7 @@ typedef struct _ValaGSignalModulePrivate ValaGSignalModulePrivate;
 #define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
 #define _vala_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_unref (var), NULL)))
 #define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
+#define _vala_code_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_context_unref (var), NULL)))
 
 struct _ValaCCodeBaseModule {
        ValaCodeGenerator parent_instance;
@@ -501,6 +502,7 @@ static void _vala_array_add4 (gchar*** array, int* length, int* size, gchar* val
 static void _vala_array_add5 (gchar*** array, int* length, int* size, gchar* value);
 static void _vala_array_add6 (gchar*** array, int* length, int* size, gchar* value);
 static void _vala_array_add7 (gchar*** array, int* length, int* size, gchar* value);
+static void _vala_array_add8 (gchar*** array, int* length, int* size, gchar* value);
 gchar* vala_ccode_base_module_get_ccode_type_name (ValaInterface* iface);
 gchar* vala_ccode_base_module_get_ccode_vfunc_name (ValaMethod* m);
 static void vala_gsignal_module_real_visit_element_access (ValaCodeVisitor* base, ValaElementAccess* expr);
@@ -562,7 +564,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp4_ = _tmp3_;
                _g_free0 (_tmp2_);
                regex = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch7_g_regex_error;
                        }
@@ -574,7 +576,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp7_ = replacement;
                _tmp8_ = g_regex_replace_literal (_tmp6_, self, (gssize) (-1), 0, _tmp7_, 0, &_inner_error_);
                _tmp5_ = _tmp8_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_regex_unref0 (regex);
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch7_g_regex_error;
@@ -601,7 +603,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _g_error_free0 (e);
        }
        __finally7:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return NULL;
@@ -2579,6 +2581,16 @@ static void _vala_array_add7 (gchar*** array, int* length, int* size, gchar* val
 }
 
 
+static void _vala_array_add8 (gchar*** array, int* length, int* size, gchar* value) {
+       if ((*length) == (*size)) {
+               *size = (*size) ? (2 * (*size)) : 4;
+               *array = g_renew (gchar*, *array, (*size) + 1);
+       }
+       (*array)[(*length)++] = value;
+       (*array)[*length] = NULL;
+}
+
+
 static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int str_array_length1) {
        gchar* result = NULL;
        const gchar* _tmp0_ = NULL;
@@ -2642,7 +2654,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                gint _tmp43__length1 = 0;
                const gchar* _tmp44_ = NULL;
                void* _tmp45_ = NULL;
-               const gchar* _tmp59_ = NULL;
+               const gchar* _tmp62_ = NULL;
                len = (gsize) 1;
                {
                        gboolean _tmp9_ = FALSE;
@@ -2719,7 +2731,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                        _tmp25__length1 = str_array_length1;
                                        _tmp26_ = i;
                                        _tmp27_ = _tmp25_[_tmp26_];
-                                       _tmp28_ = strlen (_tmp27_);
+                                       _tmp28_ = strlen ((const gchar*) _tmp27_);
                                        _tmp29_ = _tmp28_;
                                        _tmp21_ = _tmp29_;
                                } else {
@@ -2741,7 +2753,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                _tmp34_ = str_array_length1;
                _tmp35_ = len;
                _tmp36_ = separator;
-               _tmp37_ = strlen (_tmp36_);
+               _tmp37_ = strlen ((const gchar*) _tmp36_);
                _tmp38_ = _tmp37_;
                _tmp39_ = i;
                len = _tmp35_ + (_tmp38_ * (_tmp39_ - 1));
@@ -2752,7 +2764,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                _tmp43_ = str_array;
                _tmp43__length1 = str_array_length1;
                _tmp44_ = _tmp43_[0];
-               _tmp45_ = g_stpcpy ((void*) _tmp42_, _tmp44_);
+               _tmp45_ = g_stpcpy ((void*) _tmp42_, (const gchar*) _tmp44_);
                ptr = _tmp45_;
                {
                        gboolean _tmp46_ = FALSE;
@@ -2770,8 +2782,8 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                gint _tmp54__length1 = 0;
                                gint _tmp55_ = 0;
                                const gchar* _tmp56_ = NULL;
-                               void* _tmp57_ = NULL;
-                               void* _tmp58_ = NULL;
+                               void* _tmp60_ = NULL;
+                               void* _tmp61_ = NULL;
                                if (!_tmp46_) {
                                        gint _tmp47_ = 0;
                                        _tmp47_ = i;
@@ -2786,29 +2798,38 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                }
                                _tmp50_ = ptr;
                                _tmp51_ = separator;
-                               _tmp52_ = g_stpcpy (_tmp50_, _tmp51_);
+                               _tmp52_ = g_stpcpy (_tmp50_, (const gchar*) _tmp51_);
                                ptr = _tmp52_;
                                _tmp54_ = str_array;
                                _tmp54__length1 = str_array_length1;
                                _tmp55_ = i;
                                _tmp56_ = _tmp54_[_tmp55_];
-                               _tmp53_ = _tmp56_;
-                               if (_tmp53_ == NULL) {
+                               if (_tmp56_ != NULL) {
+                                       gchar** _tmp57_ = NULL;
+                                       gint _tmp57__length1 = 0;
+                                       gint _tmp58_ = 0;
+                                       const gchar* _tmp59_ = NULL;
+                                       _tmp57_ = str_array;
+                                       _tmp57__length1 = str_array_length1;
+                                       _tmp58_ = i;
+                                       _tmp59_ = _tmp57_[_tmp58_];
+                                       _tmp53_ = (const gchar*) _tmp59_;
+                               } else {
                                        _tmp53_ = "";
                                }
-                               _tmp57_ = ptr;
-                               _tmp58_ = g_stpcpy (_tmp57_, _tmp53_);
-                               ptr = _tmp58_;
+                               _tmp60_ = ptr;
+                               _tmp61_ = g_stpcpy (_tmp60_, _tmp53_);
+                               ptr = _tmp61_;
                        }
                }
-               _tmp59_ = res;
+               _tmp62_ = res;
                res = NULL;
-               result = (gchar*) _tmp59_;
+               result = (gchar*) _tmp62_;
                return result;
        } else {
-               gchar* _tmp60_ = NULL;
-               _tmp60_ = g_strdup ("");
-               result = _tmp60_;
+               gchar* _tmp63_ = NULL;
+               _tmp63_ = g_strdup ("");
+               result = _tmp63_;
                return result;
        }
 }
@@ -2852,52 +2873,57 @@ static ValaCCodeFunctionCall* vala_gsignal_module_real_get_signal_creation (Vala
        gboolean _tmp38_ = FALSE;
        ValaSignal* _tmp41_ = NULL;
        gboolean _tmp42_ = FALSE;
-       ValaCCodeFunctionCall* _tmp45_ = NULL;
-       gchar** _tmp46_ = NULL;
-       gint _tmp46__length1 = 0;
-       gchar* _tmp47_ = NULL;
-       gchar* _tmp48_ = NULL;
-       ValaCCodeConstant* _tmp49_ = NULL;
-       ValaCCodeConstant* _tmp50_ = NULL;
-       ValaSignal* _tmp51_ = NULL;
-       ValaMethod* _tmp52_ = NULL;
-       ValaMethod* _tmp53_ = NULL;
-       ValaCCodeFunctionCall* _tmp86_ = NULL;
-       ValaCCodeConstant* _tmp87_ = NULL;
-       ValaCCodeConstant* _tmp88_ = NULL;
-       ValaCCodeFunctionCall* _tmp89_ = NULL;
-       ValaCCodeConstant* _tmp90_ = NULL;
-       ValaCCodeConstant* _tmp91_ = NULL;
+       gboolean _tmp45_ = FALSE;
+       ValaSignal* _tmp46_ = NULL;
+       ValaAttribute* _tmp47_ = NULL;
+       ValaAttribute* _tmp48_ = NULL;
+       gboolean _tmp49_ = FALSE;
+       ValaCCodeFunctionCall* _tmp55_ = NULL;
+       gchar** _tmp56_ = NULL;
+       gint _tmp56__length1 = 0;
+       gchar* _tmp57_ = NULL;
+       gchar* _tmp58_ = NULL;
+       ValaCCodeConstant* _tmp59_ = NULL;
+       ValaCCodeConstant* _tmp60_ = NULL;
+       ValaSignal* _tmp61_ = NULL;
+       ValaMethod* _tmp62_ = NULL;
+       ValaMethod* _tmp63_ = NULL;
+       ValaCCodeFunctionCall* _tmp96_ = NULL;
+       ValaCCodeConstant* _tmp97_ = NULL;
+       ValaCCodeConstant* _tmp98_ = NULL;
+       ValaCCodeFunctionCall* _tmp99_ = NULL;
+       ValaCCodeConstant* _tmp100_ = NULL;
+       ValaCCodeConstant* _tmp101_ = NULL;
        gchar* marshaller = NULL;
-       ValaSignal* _tmp92_ = NULL;
-       ValaList* _tmp93_ = NULL;
-       ValaList* _tmp94_ = NULL;
-       ValaSignal* _tmp95_ = NULL;
-       ValaDataType* _tmp96_ = NULL;
-       ValaDataType* _tmp97_ = NULL;
-       gchar* _tmp98_ = NULL;
-       gchar* _tmp99_ = NULL;
+       ValaSignal* _tmp102_ = NULL;
+       ValaList* _tmp103_ = NULL;
+       ValaList* _tmp104_ = NULL;
+       ValaSignal* _tmp105_ = NULL;
+       ValaDataType* _tmp106_ = NULL;
+       ValaDataType* _tmp107_ = NULL;
+       gchar* _tmp108_ = NULL;
+       gchar* _tmp109_ = NULL;
        ValaCCodeIdentifier* marshal_arg = NULL;
-       const gchar* _tmp100_ = NULL;
-       ValaCCodeIdentifier* _tmp101_ = NULL;
-       ValaCCodeFunctionCall* _tmp102_ = NULL;
-       ValaCCodeIdentifier* _tmp103_ = NULL;
+       const gchar* _tmp110_ = NULL;
+       ValaCCodeIdentifier* _tmp111_ = NULL;
+       ValaCCodeFunctionCall* _tmp112_ = NULL;
+       ValaCCodeIdentifier* _tmp113_ = NULL;
        ValaList* params = NULL;
-       ValaSignal* _tmp104_ = NULL;
-       ValaList* _tmp105_ = NULL;
-       gboolean _tmp106_ = FALSE;
-       ValaSignal* _tmp107_ = NULL;
-       ValaDataType* _tmp108_ = NULL;
-       ValaDataType* _tmp109_ = NULL;
+       ValaSignal* _tmp114_ = NULL;
+       ValaList* _tmp115_ = NULL;
+       gboolean _tmp116_ = FALSE;
+       ValaSignal* _tmp117_ = NULL;
+       ValaDataType* _tmp118_ = NULL;
+       ValaDataType* _tmp119_ = NULL;
        gint params_len = 0;
-       ValaCCodeFunctionCall* _tmp159_ = NULL;
-       gint _tmp160_ = 0;
-       gchar* _tmp161_ = NULL;
-       gchar* _tmp162_ = NULL;
-       ValaCCodeConstant* _tmp163_ = NULL;
-       ValaCCodeConstant* _tmp164_ = NULL;
-       ValaCCodeIdentifier* _tmp231_ = NULL;
-       const gchar* _tmp232_ = NULL;
+       ValaCCodeFunctionCall* _tmp169_ = NULL;
+       gint _tmp170_ = 0;
+       gchar* _tmp171_ = NULL;
+       gchar* _tmp172_ = NULL;
+       ValaCCodeConstant* _tmp173_ = NULL;
+       ValaCCodeConstant* _tmp174_ = NULL;
+       ValaCCodeIdentifier* _tmp241_ = NULL;
+       const gchar* _tmp242_ = NULL;
        self = (ValaGSignalModule*) base;
        g_return_val_if_fail (sig != NULL, NULL);
        g_return_val_if_fail (type != NULL, NULL);
@@ -3009,467 +3035,493 @@ static ValaCCodeFunctionCall* vala_gsignal_module_real_get_signal_creation (Vala
                _tmp44_ = g_strdup ("G_SIGNAL_NO_HOOKS");
                _vala_array_add7 (&flags, &flags_length1, &_flags_size_, _tmp44_);
        }
-       _tmp45_ = csignew;
-       _tmp46_ = flags;
-       _tmp46__length1 = flags_length1;
-       _tmp47_ = _vala_g_strjoinv (" | ", _tmp46_, _tmp46__length1);
+       _tmp46_ = sig;
+       _tmp47_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp46_, "Deprecated");
        _tmp48_ = _tmp47_;
-       _tmp49_ = vala_ccode_constant_new (_tmp48_);
-       _tmp50_ = _tmp49_;
-       vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp50_);
-       _vala_ccode_node_unref0 (_tmp50_);
-       _g_free0 (_tmp48_);
-       _tmp51_ = sig;
-       _tmp52_ = vala_signal_get_default_handler (_tmp51_);
-       _tmp53_ = _tmp52_;
-       if (_tmp53_ == NULL) {
-               ValaCCodeFunctionCall* _tmp54_ = NULL;
-               ValaCCodeConstant* _tmp55_ = NULL;
-               ValaCCodeConstant* _tmp56_ = NULL;
-               _tmp54_ = csignew;
-               _tmp55_ = vala_ccode_constant_new ("0");
-               _tmp56_ = _tmp55_;
-               vala_ccode_function_call_add_argument (_tmp54_, (ValaCCodeExpression*) _tmp56_);
-               _vala_ccode_node_unref0 (_tmp56_);
+       _tmp49_ = _tmp48_ != NULL;
+       _vala_code_node_unref0 (_tmp48_);
+       if (_tmp49_) {
+               ValaCodeContext* _tmp50_ = NULL;
+               ValaCodeContext* _tmp51_ = NULL;
+               gboolean _tmp52_ = FALSE;
+               _tmp50_ = vala_code_context_get ();
+               _tmp51_ = _tmp50_;
+               _tmp52_ = vala_code_context_require_glib_version (_tmp51_, 2, 31);
+               _tmp45_ = _tmp52_;
+               _vala_code_context_unref0 (_tmp51_);
+       } else {
+               _tmp45_ = FALSE;
+       }
+       if (_tmp45_) {
+               gchar** _tmp53_ = NULL;
+               gint _tmp53__length1 = 0;
+               gchar* _tmp54_ = NULL;
+               _tmp53_ = flags;
+               _tmp53__length1 = flags_length1;
+               _tmp54_ = g_strdup ("G_SIGNAL_DEPRECATED");
+               _vala_array_add8 (&flags, &flags_length1, &_flags_size_, _tmp54_);
+       }
+       _tmp55_ = csignew;
+       _tmp56_ = flags;
+       _tmp56__length1 = flags_length1;
+       _tmp57_ = _vala_g_strjoinv (" | ", _tmp56_, _tmp56__length1);
+       _tmp58_ = _tmp57_;
+       _tmp59_ = vala_ccode_constant_new (_tmp58_);
+       _tmp60_ = _tmp59_;
+       vala_ccode_function_call_add_argument (_tmp55_, (ValaCCodeExpression*) _tmp60_);
+       _vala_ccode_node_unref0 (_tmp60_);
+       _g_free0 (_tmp58_);
+       _tmp61_ = sig;
+       _tmp62_ = vala_signal_get_default_handler (_tmp61_);
+       _tmp63_ = _tmp62_;
+       if (_tmp63_ == NULL) {
+               ValaCCodeFunctionCall* _tmp64_ = NULL;
+               ValaCCodeConstant* _tmp65_ = NULL;
+               ValaCCodeConstant* _tmp66_ = NULL;
+               _tmp64_ = csignew;
+               _tmp65_ = vala_ccode_constant_new ("0");
+               _tmp66_ = _tmp65_;
+               vala_ccode_function_call_add_argument (_tmp64_, (ValaCCodeExpression*) _tmp66_);
+               _vala_ccode_node_unref0 (_tmp66_);
        } else {
                ValaCCodeFunctionCall* struct_offset = NULL;
-               ValaCCodeIdentifier* _tmp57_ = NULL;
-               ValaCCodeIdentifier* _tmp58_ = NULL;
-               ValaCCodeFunctionCall* _tmp59_ = NULL;
-               ValaCCodeFunctionCall* _tmp60_ = NULL;
-               ValaTypeSymbol* _tmp61_ = NULL;
-               ValaCCodeFunctionCall* _tmp76_ = NULL;
-               ValaSignal* _tmp77_ = NULL;
-               ValaMethod* _tmp78_ = NULL;
-               ValaMethod* _tmp79_ = NULL;
-               gchar* _tmp80_ = NULL;
-               gchar* _tmp81_ = NULL;
-               ValaCCodeIdentifier* _tmp82_ = NULL;
-               ValaCCodeIdentifier* _tmp83_ = NULL;
-               ValaCCodeFunctionCall* _tmp84_ = NULL;
-               ValaCCodeFunctionCall* _tmp85_ = NULL;
-               _tmp57_ = vala_ccode_identifier_new ("G_STRUCT_OFFSET");
-               _tmp58_ = _tmp57_;
-               _tmp59_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp58_);
-               _tmp60_ = _tmp59_;
-               _vala_ccode_node_unref0 (_tmp58_);
-               struct_offset = _tmp60_;
-               _tmp61_ = type;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp61_, VALA_TYPE_CLASS)) {
-                       ValaCCodeFunctionCall* _tmp62_ = NULL;
-                       ValaTypeSymbol* _tmp63_ = NULL;
-                       gchar* _tmp64_ = NULL;
-                       gchar* _tmp65_ = NULL;
-                       gchar* _tmp66_ = NULL;
-                       gchar* _tmp67_ = NULL;
-                       ValaCCodeIdentifier* _tmp68_ = NULL;
-                       ValaCCodeIdentifier* _tmp69_ = NULL;
-                       _tmp62_ = struct_offset;
-                       _tmp63_ = type;
-                       _tmp64_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp63_);
-                       _tmp65_ = _tmp64_;
-                       _tmp66_ = g_strdup_printf ("%sClass", _tmp65_);
-                       _tmp67_ = _tmp66_;
-                       _tmp68_ = vala_ccode_identifier_new (_tmp67_);
-                       _tmp69_ = _tmp68_;
-                       vala_ccode_function_call_add_argument (_tmp62_, (ValaCCodeExpression*) _tmp69_);
-                       _vala_ccode_node_unref0 (_tmp69_);
-                       _g_free0 (_tmp67_);
-                       _g_free0 (_tmp65_);
-               } else {
-                       ValaCCodeFunctionCall* _tmp70_ = NULL;
-                       ValaTypeSymbol* _tmp71_ = NULL;
-                       gchar* _tmp72_ = NULL;
-                       gchar* _tmp73_ = NULL;
-                       ValaCCodeIdentifier* _tmp74_ = NULL;
-                       ValaCCodeIdentifier* _tmp75_ = NULL;
-                       _tmp70_ = struct_offset;
-                       _tmp71_ = type;
-                       _tmp72_ = vala_ccode_base_module_get_ccode_type_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp71_, VALA_TYPE_INTERFACE, ValaInterface));
-                       _tmp73_ = _tmp72_;
-                       _tmp74_ = vala_ccode_identifier_new (_tmp73_);
+               ValaCCodeIdentifier* _tmp67_ = NULL;
+               ValaCCodeIdentifier* _tmp68_ = NULL;
+               ValaCCodeFunctionCall* _tmp69_ = NULL;
+               ValaCCodeFunctionCall* _tmp70_ = NULL;
+               ValaTypeSymbol* _tmp71_ = NULL;
+               ValaCCodeFunctionCall* _tmp86_ = NULL;
+               ValaSignal* _tmp87_ = NULL;
+               ValaMethod* _tmp88_ = NULL;
+               ValaMethod* _tmp89_ = NULL;
+               gchar* _tmp90_ = NULL;
+               gchar* _tmp91_ = NULL;
+               ValaCCodeIdentifier* _tmp92_ = NULL;
+               ValaCCodeIdentifier* _tmp93_ = NULL;
+               ValaCCodeFunctionCall* _tmp94_ = NULL;
+               ValaCCodeFunctionCall* _tmp95_ = NULL;
+               _tmp67_ = vala_ccode_identifier_new ("G_STRUCT_OFFSET");
+               _tmp68_ = _tmp67_;
+               _tmp69_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp68_);
+               _tmp70_ = _tmp69_;
+               _vala_ccode_node_unref0 (_tmp68_);
+               struct_offset = _tmp70_;
+               _tmp71_ = type;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp71_, VALA_TYPE_CLASS)) {
+                       ValaCCodeFunctionCall* _tmp72_ = NULL;
+                       ValaTypeSymbol* _tmp73_ = NULL;
+                       gchar* _tmp74_ = NULL;
+                       gchar* _tmp75_ = NULL;
+                       gchar* _tmp76_ = NULL;
+                       gchar* _tmp77_ = NULL;
+                       ValaCCodeIdentifier* _tmp78_ = NULL;
+                       ValaCCodeIdentifier* _tmp79_ = NULL;
+                       _tmp72_ = struct_offset;
+                       _tmp73_ = type;
+                       _tmp74_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp73_);
                        _tmp75_ = _tmp74_;
-                       vala_ccode_function_call_add_argument (_tmp70_, (ValaCCodeExpression*) _tmp75_);
-                       _vala_ccode_node_unref0 (_tmp75_);
-                       _g_free0 (_tmp73_);
+                       _tmp76_ = g_strdup_printf ("%sClass", _tmp75_);
+                       _tmp77_ = _tmp76_;
+                       _tmp78_ = vala_ccode_identifier_new (_tmp77_);
+                       _tmp79_ = _tmp78_;
+                       vala_ccode_function_call_add_argument (_tmp72_, (ValaCCodeExpression*) _tmp79_);
+                       _vala_ccode_node_unref0 (_tmp79_);
+                       _g_free0 (_tmp77_);
+                       _g_free0 (_tmp75_);
+               } else {
+                       ValaCCodeFunctionCall* _tmp80_ = NULL;
+                       ValaTypeSymbol* _tmp81_ = NULL;
+                       gchar* _tmp82_ = NULL;
+                       gchar* _tmp83_ = NULL;
+                       ValaCCodeIdentifier* _tmp84_ = NULL;
+                       ValaCCodeIdentifier* _tmp85_ = NULL;
+                       _tmp80_ = struct_offset;
+                       _tmp81_ = type;
+                       _tmp82_ = vala_ccode_base_module_get_ccode_type_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp81_, VALA_TYPE_INTERFACE, ValaInterface));
+                       _tmp83_ = _tmp82_;
+                       _tmp84_ = vala_ccode_identifier_new (_tmp83_);
+                       _tmp85_ = _tmp84_;
+                       vala_ccode_function_call_add_argument (_tmp80_, (ValaCCodeExpression*) _tmp85_);
+                       _vala_ccode_node_unref0 (_tmp85_);
+                       _g_free0 (_tmp83_);
                }
-               _tmp76_ = struct_offset;
-               _tmp77_ = sig;
-               _tmp78_ = vala_signal_get_default_handler (_tmp77_);
-               _tmp79_ = _tmp78_;
-               _tmp80_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp79_);
-               _tmp81_ = _tmp80_;
-               _tmp82_ = vala_ccode_identifier_new (_tmp81_);
-               _tmp83_ = _tmp82_;
-               vala_ccode_function_call_add_argument (_tmp76_, (ValaCCodeExpression*) _tmp83_);
-               _vala_ccode_node_unref0 (_tmp83_);
-               _g_free0 (_tmp81_);
-               _tmp84_ = csignew;
-               _tmp85_ = struct_offset;
-               vala_ccode_function_call_add_argument (_tmp84_, (ValaCCodeExpression*) _tmp85_);
+               _tmp86_ = struct_offset;
+               _tmp87_ = sig;
+               _tmp88_ = vala_signal_get_default_handler (_tmp87_);
+               _tmp89_ = _tmp88_;
+               _tmp90_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp89_);
+               _tmp91_ = _tmp90_;
+               _tmp92_ = vala_ccode_identifier_new (_tmp91_);
+               _tmp93_ = _tmp92_;
+               vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp93_);
+               _vala_ccode_node_unref0 (_tmp93_);
+               _g_free0 (_tmp91_);
+               _tmp94_ = csignew;
+               _tmp95_ = struct_offset;
+               vala_ccode_function_call_add_argument (_tmp94_, (ValaCCodeExpression*) _tmp95_);
                _vala_ccode_node_unref0 (struct_offset);
        }
-       _tmp86_ = csignew;
-       _tmp87_ = vala_ccode_constant_new ("NULL");
-       _tmp88_ = _tmp87_;
-       vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp88_);
-       _vala_ccode_node_unref0 (_tmp88_);
-       _tmp89_ = csignew;
-       _tmp90_ = vala_ccode_constant_new ("NULL");
-       _tmp91_ = _tmp90_;
-       vala_ccode_function_call_add_argument (_tmp89_, (ValaCCodeExpression*) _tmp91_);
-       _vala_ccode_node_unref0 (_tmp91_);
-       _tmp92_ = sig;
-       _tmp93_ = vala_signal_get_parameters (_tmp92_);
-       _tmp94_ = _tmp93_;
-       _tmp95_ = sig;
-       _tmp96_ = vala_signal_get_return_type (_tmp95_);
-       _tmp97_ = _tmp96_;
-       _tmp98_ = vala_gsignal_module_get_marshaller_function (self, _tmp94_, _tmp97_, NULL);
-       _tmp99_ = _tmp98_;
-       _vala_iterable_unref0 (_tmp94_);
-       marshaller = _tmp99_;
-       _tmp100_ = marshaller;
-       _tmp101_ = vala_ccode_identifier_new (_tmp100_);
-       marshal_arg = _tmp101_;
-       _tmp102_ = csignew;
-       _tmp103_ = marshal_arg;
-       vala_ccode_function_call_add_argument (_tmp102_, (ValaCCodeExpression*) _tmp103_);
-       _tmp104_ = sig;
-       _tmp105_ = vala_signal_get_parameters (_tmp104_);
-       params = _tmp105_;
-       _tmp107_ = sig;
-       _tmp108_ = vala_signal_get_return_type (_tmp107_);
+       _tmp96_ = csignew;
+       _tmp97_ = vala_ccode_constant_new ("NULL");
+       _tmp98_ = _tmp97_;
+       vala_ccode_function_call_add_argument (_tmp96_, (ValaCCodeExpression*) _tmp98_);
+       _vala_ccode_node_unref0 (_tmp98_);
+       _tmp99_ = csignew;
+       _tmp100_ = vala_ccode_constant_new ("NULL");
+       _tmp101_ = _tmp100_;
+       vala_ccode_function_call_add_argument (_tmp99_, (ValaCCodeExpression*) _tmp101_);
+       _vala_ccode_node_unref0 (_tmp101_);
+       _tmp102_ = sig;
+       _tmp103_ = vala_signal_get_parameters (_tmp102_);
+       _tmp104_ = _tmp103_;
+       _tmp105_ = sig;
+       _tmp106_ = vala_signal_get_return_type (_tmp105_);
+       _tmp107_ = _tmp106_;
+       _tmp108_ = vala_gsignal_module_get_marshaller_function (self, _tmp104_, _tmp107_, NULL);
        _tmp109_ = _tmp108_;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp109_, VALA_TYPE_POINTER_TYPE)) {
-               _tmp106_ = TRUE;
+       _vala_iterable_unref0 (_tmp104_);
+       marshaller = _tmp109_;
+       _tmp110_ = marshaller;
+       _tmp111_ = vala_ccode_identifier_new (_tmp110_);
+       marshal_arg = _tmp111_;
+       _tmp112_ = csignew;
+       _tmp113_ = marshal_arg;
+       vala_ccode_function_call_add_argument (_tmp112_, (ValaCCodeExpression*) _tmp113_);
+       _tmp114_ = sig;
+       _tmp115_ = vala_signal_get_parameters (_tmp114_);
+       params = _tmp115_;
+       _tmp117_ = sig;
+       _tmp118_ = vala_signal_get_return_type (_tmp117_);
+       _tmp119_ = _tmp118_;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp119_, VALA_TYPE_POINTER_TYPE)) {
+               _tmp116_ = TRUE;
        } else {
-               ValaSignal* _tmp110_ = NULL;
-               ValaDataType* _tmp111_ = NULL;
-               ValaDataType* _tmp112_ = NULL;
-               ValaTypeParameter* _tmp113_ = NULL;
-               ValaTypeParameter* _tmp114_ = NULL;
-               _tmp110_ = sig;
-               _tmp111_ = vala_signal_get_return_type (_tmp110_);
-               _tmp112_ = _tmp111_;
-               _tmp113_ = vala_data_type_get_type_parameter (_tmp112_);
-               _tmp114_ = _tmp113_;
-               _tmp106_ = _tmp114_ != NULL;
+               ValaSignal* _tmp120_ = NULL;
+               ValaDataType* _tmp121_ = NULL;
+               ValaDataType* _tmp122_ = NULL;
+               ValaTypeParameter* _tmp123_ = NULL;
+               ValaTypeParameter* _tmp124_ = NULL;
+               _tmp120_ = sig;
+               _tmp121_ = vala_signal_get_return_type (_tmp120_);
+               _tmp122_ = _tmp121_;
+               _tmp123_ = vala_data_type_get_type_parameter (_tmp122_);
+               _tmp124_ = _tmp123_;
+               _tmp116_ = _tmp124_ != NULL;
        }
-       if (_tmp106_) {
-               ValaCCodeFunctionCall* _tmp115_ = NULL;
-               ValaCCodeConstant* _tmp116_ = NULL;
-               ValaCCodeConstant* _tmp117_ = NULL;
-               _tmp115_ = csignew;
-               _tmp116_ = vala_ccode_constant_new ("G_TYPE_POINTER");
-               _tmp117_ = _tmp116_;
-               vala_ccode_function_call_add_argument (_tmp115_, (ValaCCodeExpression*) _tmp117_);
-               _vala_ccode_node_unref0 (_tmp117_);
+       if (_tmp116_) {
+               ValaCCodeFunctionCall* _tmp125_ = NULL;
+               ValaCCodeConstant* _tmp126_ = NULL;
+               ValaCCodeConstant* _tmp127_ = NULL;
+               _tmp125_ = csignew;
+               _tmp126_ = vala_ccode_constant_new ("G_TYPE_POINTER");
+               _tmp127_ = _tmp126_;
+               vala_ccode_function_call_add_argument (_tmp125_, (ValaCCodeExpression*) _tmp127_);
+               _vala_ccode_node_unref0 (_tmp127_);
        } else {
-               ValaSignal* _tmp118_ = NULL;
-               ValaDataType* _tmp119_ = NULL;
-               ValaDataType* _tmp120_ = NULL;
-               _tmp118_ = sig;
-               _tmp119_ = vala_signal_get_return_type (_tmp118_);
-               _tmp120_ = _tmp119_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp120_, VALA_TYPE_ERROR_TYPE)) {
-                       ValaCCodeFunctionCall* _tmp121_ = NULL;
-                       ValaCCodeConstant* _tmp122_ = NULL;
-                       ValaCCodeConstant* _tmp123_ = NULL;
-                       _tmp121_ = csignew;
-                       _tmp122_ = vala_ccode_constant_new ("G_TYPE_POINTER");
-                       _tmp123_ = _tmp122_;
-                       vala_ccode_function_call_add_argument (_tmp121_, (ValaCCodeExpression*) _tmp123_);
-                       _vala_ccode_node_unref0 (_tmp123_);
+               ValaSignal* _tmp128_ = NULL;
+               ValaDataType* _tmp129_ = NULL;
+               ValaDataType* _tmp130_ = NULL;
+               _tmp128_ = sig;
+               _tmp129_ = vala_signal_get_return_type (_tmp128_);
+               _tmp130_ = _tmp129_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp130_, VALA_TYPE_ERROR_TYPE)) {
+                       ValaCCodeFunctionCall* _tmp131_ = NULL;
+                       ValaCCodeConstant* _tmp132_ = NULL;
+                       ValaCCodeConstant* _tmp133_ = NULL;
+                       _tmp131_ = csignew;
+                       _tmp132_ = vala_ccode_constant_new ("G_TYPE_POINTER");
+                       _tmp133_ = _tmp132_;
+                       vala_ccode_function_call_add_argument (_tmp131_, (ValaCCodeExpression*) _tmp133_);
+                       _vala_ccode_node_unref0 (_tmp133_);
                } else {
-                       ValaSignal* _tmp124_ = NULL;
-                       ValaDataType* _tmp125_ = NULL;
-                       ValaDataType* _tmp126_ = NULL;
-                       ValaTypeSymbol* _tmp127_ = NULL;
-                       ValaTypeSymbol* _tmp128_ = NULL;
-                       _tmp124_ = sig;
-                       _tmp125_ = vala_signal_get_return_type (_tmp124_);
-                       _tmp126_ = _tmp125_;
-                       _tmp127_ = vala_data_type_get_data_type (_tmp126_);
-                       _tmp128_ = _tmp127_;
-                       if (_tmp128_ == NULL) {
-                               ValaCCodeFunctionCall* _tmp129_ = NULL;
-                               ValaCCodeConstant* _tmp130_ = NULL;
-                               ValaCCodeConstant* _tmp131_ = NULL;
-                               _tmp129_ = csignew;
-                               _tmp130_ = vala_ccode_constant_new ("G_TYPE_NONE");
-                               _tmp131_ = _tmp130_;
-                               vala_ccode_function_call_add_argument (_tmp129_, (ValaCCodeExpression*) _tmp131_);
-                               _vala_ccode_node_unref0 (_tmp131_);
-                       } else {
-                               ValaCCodeFunctionCall* _tmp132_ = NULL;
-                               ValaSignal* _tmp133_ = NULL;
-                               ValaDataType* _tmp134_ = NULL;
-                               ValaDataType* _tmp135_ = NULL;
-                               ValaTypeSymbol* _tmp136_ = NULL;
-                               ValaTypeSymbol* _tmp137_ = NULL;
-                               gchar* _tmp138_ = NULL;
-                               gchar* _tmp139_ = NULL;
+                       ValaSignal* _tmp134_ = NULL;
+                       ValaDataType* _tmp135_ = NULL;
+                       ValaDataType* _tmp136_ = NULL;
+                       ValaTypeSymbol* _tmp137_ = NULL;
+                       ValaTypeSymbol* _tmp138_ = NULL;
+                       _tmp134_ = sig;
+                       _tmp135_ = vala_signal_get_return_type (_tmp134_);
+                       _tmp136_ = _tmp135_;
+                       _tmp137_ = vala_data_type_get_data_type (_tmp136_);
+                       _tmp138_ = _tmp137_;
+                       if (_tmp138_ == NULL) {
+                               ValaCCodeFunctionCall* _tmp139_ = NULL;
                                ValaCCodeConstant* _tmp140_ = NULL;
                                ValaCCodeConstant* _tmp141_ = NULL;
-                               _tmp132_ = csignew;
-                               _tmp133_ = sig;
-                               _tmp134_ = vala_signal_get_return_type (_tmp133_);
-                               _tmp135_ = _tmp134_;
-                               _tmp136_ = vala_data_type_get_data_type (_tmp135_);
-                               _tmp137_ = _tmp136_;
-                               _tmp138_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp137_);
-                               _tmp139_ = _tmp138_;
-                               _tmp140_ = vala_ccode_constant_new (_tmp139_);
+                               _tmp139_ = csignew;
+                               _tmp140_ = vala_ccode_constant_new ("G_TYPE_NONE");
                                _tmp141_ = _tmp140_;
-                               vala_ccode_function_call_add_argument (_tmp132_, (ValaCCodeExpression*) _tmp141_);
+                               vala_ccode_function_call_add_argument (_tmp139_, (ValaCCodeExpression*) _tmp141_);
                                _vala_ccode_node_unref0 (_tmp141_);
-                               _g_free0 (_tmp139_);
+                       } else {
+                               ValaCCodeFunctionCall* _tmp142_ = NULL;
+                               ValaSignal* _tmp143_ = NULL;
+                               ValaDataType* _tmp144_ = NULL;
+                               ValaDataType* _tmp145_ = NULL;
+                               ValaTypeSymbol* _tmp146_ = NULL;
+                               ValaTypeSymbol* _tmp147_ = NULL;
+                               gchar* _tmp148_ = NULL;
+                               gchar* _tmp149_ = NULL;
+                               ValaCCodeConstant* _tmp150_ = NULL;
+                               ValaCCodeConstant* _tmp151_ = NULL;
+                               _tmp142_ = csignew;
+                               _tmp143_ = sig;
+                               _tmp144_ = vala_signal_get_return_type (_tmp143_);
+                               _tmp145_ = _tmp144_;
+                               _tmp146_ = vala_data_type_get_data_type (_tmp145_);
+                               _tmp147_ = _tmp146_;
+                               _tmp148_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp147_);
+                               _tmp149_ = _tmp148_;
+                               _tmp150_ = vala_ccode_constant_new (_tmp149_);
+                               _tmp151_ = _tmp150_;
+                               vala_ccode_function_call_add_argument (_tmp142_, (ValaCCodeExpression*) _tmp151_);
+                               _vala_ccode_node_unref0 (_tmp151_);
+                               _g_free0 (_tmp149_);
                        }
                }
        }
        params_len = 0;
        {
                ValaList* _param_list = NULL;
-               ValaList* _tmp142_ = NULL;
-               ValaList* _tmp143_ = NULL;
+               ValaList* _tmp152_ = NULL;
+               ValaList* _tmp153_ = NULL;
                gint _param_size = 0;
-               ValaList* _tmp144_ = NULL;
-               gint _tmp145_ = 0;
-               gint _tmp146_ = 0;
+               ValaList* _tmp154_ = NULL;
+               gint _tmp155_ = 0;
+               gint _tmp156_ = 0;
                gint _param_index = 0;
-               _tmp142_ = params;
-               _tmp143_ = _vala_iterable_ref0 (_tmp142_);
-               _param_list = _tmp143_;
-               _tmp144_ = _param_list;
-               _tmp145_ = vala_collection_get_size ((ValaCollection*) _tmp144_);
-               _tmp146_ = _tmp145_;
-               _param_size = _tmp146_;
+               _tmp152_ = params;
+               _tmp153_ = _vala_iterable_ref0 (_tmp152_);
+               _param_list = _tmp153_;
+               _tmp154_ = _param_list;
+               _tmp155_ = vala_collection_get_size ((ValaCollection*) _tmp154_);
+               _tmp156_ = _tmp155_;
+               _param_size = _tmp156_;
                _param_index = -1;
                while (TRUE) {
-                       gint _tmp147_ = 0;
-                       gint _tmp148_ = 0;
-                       gint _tmp149_ = 0;
+                       gint _tmp157_ = 0;
+                       gint _tmp158_ = 0;
+                       gint _tmp159_ = 0;
                        ValaParameter* param = NULL;
-                       ValaList* _tmp150_ = NULL;
-                       gint _tmp151_ = 0;
-                       gpointer _tmp152_ = NULL;
-                       gint _tmp153_ = 0;
-                       ValaParameter* _tmp154_ = NULL;
-                       ValaDataType* _tmp155_ = NULL;
-                       ValaDataType* _tmp156_ = NULL;
-                       gboolean _tmp157_ = FALSE;
-                       _tmp147_ = _param_index;
-                       _param_index = _tmp147_ + 1;
-                       _tmp148_ = _param_index;
-                       _tmp149_ = _param_size;
-                       if (!(_tmp148_ < _tmp149_)) {
+                       ValaList* _tmp160_ = NULL;
+                       gint _tmp161_ = 0;
+                       gpointer _tmp162_ = NULL;
+                       gint _tmp163_ = 0;
+                       ValaParameter* _tmp164_ = NULL;
+                       ValaDataType* _tmp165_ = NULL;
+                       ValaDataType* _tmp166_ = NULL;
+                       gboolean _tmp167_ = FALSE;
+                       _tmp157_ = _param_index;
+                       _param_index = _tmp157_ + 1;
+                       _tmp158_ = _param_index;
+                       _tmp159_ = _param_size;
+                       if (!(_tmp158_ < _tmp159_)) {
                                break;
                        }
-                       _tmp150_ = _param_list;
-                       _tmp151_ = _param_index;
-                       _tmp152_ = vala_list_get (_tmp150_, _tmp151_);
-                       param = (ValaParameter*) _tmp152_;
-                       _tmp153_ = params_len;
-                       params_len = _tmp153_ + 1;
-                       _tmp154_ = param;
-                       _tmp155_ = vala_variable_get_variable_type ((ValaVariable*) _tmp154_);
-                       _tmp156_ = _tmp155_;
-                       _tmp157_ = vala_data_type_is_array (_tmp156_);
-                       if (_tmp157_) {
-                               gint _tmp158_ = 0;
-                               _tmp158_ = params_len;
-                               params_len = _tmp158_ + 1;
+                       _tmp160_ = _param_list;
+                       _tmp161_ = _param_index;
+                       _tmp162_ = vala_list_get (_tmp160_, _tmp161_);
+                       param = (ValaParameter*) _tmp162_;
+                       _tmp163_ = params_len;
+                       params_len = _tmp163_ + 1;
+                       _tmp164_ = param;
+                       _tmp165_ = vala_variable_get_variable_type ((ValaVariable*) _tmp164_);
+                       _tmp166_ = _tmp165_;
+                       _tmp167_ = vala_data_type_is_array (_tmp166_);
+                       if (_tmp167_) {
+                               gint _tmp168_ = 0;
+                               _tmp168_ = params_len;
+                               params_len = _tmp168_ + 1;
                        }
                        _vala_code_node_unref0 (param);
                }
                _vala_iterable_unref0 (_param_list);
        }
-       _tmp159_ = csignew;
-       _tmp160_ = params_len;
-       _tmp161_ = g_strdup_printf ("%d", _tmp160_);
-       _tmp162_ = _tmp161_;
-       _tmp163_ = vala_ccode_constant_new (_tmp162_);
-       _tmp164_ = _tmp163_;
-       vala_ccode_function_call_add_argument (_tmp159_, (ValaCCodeExpression*) _tmp164_);
-       _vala_ccode_node_unref0 (_tmp164_);
-       _g_free0 (_tmp162_);
+       _tmp169_ = csignew;
+       _tmp170_ = params_len;
+       _tmp171_ = g_strdup_printf ("%d", _tmp170_);
+       _tmp172_ = _tmp171_;
+       _tmp173_ = vala_ccode_constant_new (_tmp172_);
+       _tmp174_ = _tmp173_;
+       vala_ccode_function_call_add_argument (_tmp169_, (ValaCCodeExpression*) _tmp174_);
+       _vala_ccode_node_unref0 (_tmp174_);
+       _g_free0 (_tmp172_);
        {
                ValaList* _param_list = NULL;
-               ValaList* _tmp165_ = NULL;
-               ValaList* _tmp166_ = NULL;
+               ValaList* _tmp175_ = NULL;
+               ValaList* _tmp176_ = NULL;
                gint _param_size = 0;
-               ValaList* _tmp167_ = NULL;
-               gint _tmp168_ = 0;
-               gint _tmp169_ = 0;
+               ValaList* _tmp177_ = NULL;
+               gint _tmp178_ = 0;
+               gint _tmp179_ = 0;
                gint _param_index = 0;
-               _tmp165_ = params;
-               _tmp166_ = _vala_iterable_ref0 (_tmp165_);
-               _param_list = _tmp166_;
-               _tmp167_ = _param_list;
-               _tmp168_ = vala_collection_get_size ((ValaCollection*) _tmp167_);
-               _tmp169_ = _tmp168_;
-               _param_size = _tmp169_;
+               _tmp175_ = params;
+               _tmp176_ = _vala_iterable_ref0 (_tmp175_);
+               _param_list = _tmp176_;
+               _tmp177_ = _param_list;
+               _tmp178_ = vala_collection_get_size ((ValaCollection*) _tmp177_);
+               _tmp179_ = _tmp178_;
+               _param_size = _tmp179_;
                _param_index = -1;
                while (TRUE) {
-                       gint _tmp170_ = 0;
-                       gint _tmp171_ = 0;
-                       gint _tmp172_ = 0;
+                       gint _tmp180_ = 0;
+                       gint _tmp181_ = 0;
+                       gint _tmp182_ = 0;
                        ValaParameter* param = NULL;
-                       ValaList* _tmp173_ = NULL;
-                       gint _tmp174_ = 0;
-                       gpointer _tmp175_ = NULL;
-                       ValaParameter* _tmp176_ = NULL;
-                       ValaDataType* _tmp177_ = NULL;
-                       ValaDataType* _tmp178_ = NULL;
-                       gboolean _tmp179_ = FALSE;
-                       _tmp170_ = _param_index;
-                       _param_index = _tmp170_ + 1;
-                       _tmp171_ = _param_index;
-                       _tmp172_ = _param_size;
-                       if (!(_tmp171_ < _tmp172_)) {
+                       ValaList* _tmp183_ = NULL;
+                       gint _tmp184_ = 0;
+                       gpointer _tmp185_ = NULL;
+                       ValaParameter* _tmp186_ = NULL;
+                       ValaDataType* _tmp187_ = NULL;
+                       ValaDataType* _tmp188_ = NULL;
+                       gboolean _tmp189_ = FALSE;
+                       _tmp180_ = _param_index;
+                       _param_index = _tmp180_ + 1;
+                       _tmp181_ = _param_index;
+                       _tmp182_ = _param_size;
+                       if (!(_tmp181_ < _tmp182_)) {
                                break;
                        }
-                       _tmp173_ = _param_list;
-                       _tmp174_ = _param_index;
-                       _tmp175_ = vala_list_get (_tmp173_, _tmp174_);
-                       param = (ValaParameter*) _tmp175_;
-                       _tmp176_ = param;
-                       _tmp177_ = vala_variable_get_variable_type ((ValaVariable*) _tmp176_);
-                       _tmp178_ = _tmp177_;
-                       _tmp179_ = vala_data_type_is_array (_tmp178_);
-                       if (_tmp179_) {
-                               ValaParameter* _tmp180_ = NULL;
-                               ValaDataType* _tmp181_ = NULL;
-                               ValaDataType* _tmp182_ = NULL;
-                               ValaDataType* _tmp183_ = NULL;
-                               ValaDataType* _tmp184_ = NULL;
-                               ValaTypeSymbol* _tmp185_ = NULL;
-                               ValaTypeSymbol* _tmp186_ = NULL;
-                               ValaDataType* _tmp187_ = NULL;
-                               ValaTypeSymbol* _tmp188_ = NULL;
-                               ValaTypeSymbol* _tmp189_ = NULL;
-                               ValaCCodeFunctionCall* _tmp196_ = NULL;
-                               ValaCCodeConstant* _tmp197_ = NULL;
-                               ValaCCodeConstant* _tmp198_ = NULL;
-                               _tmp180_ = param;
-                               _tmp181_ = vala_variable_get_variable_type ((ValaVariable*) _tmp180_);
-                               _tmp182_ = _tmp181_;
-                               _tmp183_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp182_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                               _tmp184_ = _tmp183_;
-                               _tmp185_ = vala_data_type_get_data_type (_tmp184_);
-                               _tmp186_ = _tmp185_;
-                               _tmp187_ = ((ValaCCodeBaseModule*) self)->string_type;
-                               _tmp188_ = vala_data_type_get_data_type (_tmp187_);
-                               _tmp189_ = _tmp188_;
-                               if (_tmp186_ == _tmp189_) {
-                                       ValaCCodeFunctionCall* _tmp190_ = NULL;
-                                       ValaCCodeConstant* _tmp191_ = NULL;
-                                       ValaCCodeConstant* _tmp192_ = NULL;
-                                       _tmp190_ = csignew;
-                                       _tmp191_ = vala_ccode_constant_new ("G_TYPE_STRV");
-                                       _tmp192_ = _tmp191_;
-                                       vala_ccode_function_call_add_argument (_tmp190_, (ValaCCodeExpression*) _tmp192_);
-                                       _vala_ccode_node_unref0 (_tmp192_);
+                       _tmp183_ = _param_list;
+                       _tmp184_ = _param_index;
+                       _tmp185_ = vala_list_get (_tmp183_, _tmp184_);
+                       param = (ValaParameter*) _tmp185_;
+                       _tmp186_ = param;
+                       _tmp187_ = vala_variable_get_variable_type ((ValaVariable*) _tmp186_);
+                       _tmp188_ = _tmp187_;
+                       _tmp189_ = vala_data_type_is_array (_tmp188_);
+                       if (_tmp189_) {
+                               ValaParameter* _tmp190_ = NULL;
+                               ValaDataType* _tmp191_ = NULL;
+                               ValaDataType* _tmp192_ = NULL;
+                               ValaDataType* _tmp193_ = NULL;
+                               ValaDataType* _tmp194_ = NULL;
+                               ValaTypeSymbol* _tmp195_ = NULL;
+                               ValaTypeSymbol* _tmp196_ = NULL;
+                               ValaDataType* _tmp197_ = NULL;
+                               ValaTypeSymbol* _tmp198_ = NULL;
+                               ValaTypeSymbol* _tmp199_ = NULL;
+                               ValaCCodeFunctionCall* _tmp206_ = NULL;
+                               ValaCCodeConstant* _tmp207_ = NULL;
+                               ValaCCodeConstant* _tmp208_ = NULL;
+                               _tmp190_ = param;
+                               _tmp191_ = vala_variable_get_variable_type ((ValaVariable*) _tmp190_);
+                               _tmp192_ = _tmp191_;
+                               _tmp193_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp192_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                               _tmp194_ = _tmp193_;
+                               _tmp195_ = vala_data_type_get_data_type (_tmp194_);
+                               _tmp196_ = _tmp195_;
+                               _tmp197_ = ((ValaCCodeBaseModule*) self)->string_type;
+                               _tmp198_ = vala_data_type_get_data_type (_tmp197_);
+                               _tmp199_ = _tmp198_;
+                               if (_tmp196_ == _tmp199_) {
+                                       ValaCCodeFunctionCall* _tmp200_ = NULL;
+                                       ValaCCodeConstant* _tmp201_ = NULL;
+                                       ValaCCodeConstant* _tmp202_ = NULL;
+                                       _tmp200_ = csignew;
+                                       _tmp201_ = vala_ccode_constant_new ("G_TYPE_STRV");
+                                       _tmp202_ = _tmp201_;
+                                       vala_ccode_function_call_add_argument (_tmp200_, (ValaCCodeExpression*) _tmp202_);
+                                       _vala_ccode_node_unref0 (_tmp202_);
                                } else {
-                                       ValaCCodeFunctionCall* _tmp193_ = NULL;
-                                       ValaCCodeConstant* _tmp194_ = NULL;
-                                       ValaCCodeConstant* _tmp195_ = NULL;
-                                       _tmp193_ = csignew;
-                                       _tmp194_ = vala_ccode_constant_new ("G_TYPE_POINTER");
-                                       _tmp195_ = _tmp194_;
-                                       vala_ccode_function_call_add_argument (_tmp193_, (ValaCCodeExpression*) _tmp195_);
-                                       _vala_ccode_node_unref0 (_tmp195_);
+                                       ValaCCodeFunctionCall* _tmp203_ = NULL;
+                                       ValaCCodeConstant* _tmp204_ = NULL;
+                                       ValaCCodeConstant* _tmp205_ = NULL;
+                                       _tmp203_ = csignew;
+                                       _tmp204_ = vala_ccode_constant_new ("G_TYPE_POINTER");
+                                       _tmp205_ = _tmp204_;
+                                       vala_ccode_function_call_add_argument (_tmp203_, (ValaCCodeExpression*) _tmp205_);
+                                       _vala_ccode_node_unref0 (_tmp205_);
                                }
-                               _tmp196_ = csignew;
-                               _tmp197_ = vala_ccode_constant_new ("G_TYPE_INT");
-                               _tmp198_ = _tmp197_;
-                               vala_ccode_function_call_add_argument (_tmp196_, (ValaCCodeExpression*) _tmp198_);
-                               _vala_ccode_node_unref0 (_tmp198_);
+                               _tmp206_ = csignew;
+                               _tmp207_ = vala_ccode_constant_new ("G_TYPE_INT");
+                               _tmp208_ = _tmp207_;
+                               vala_ccode_function_call_add_argument (_tmp206_, (ValaCCodeExpression*) _tmp208_);
+                               _vala_ccode_node_unref0 (_tmp208_);
                        } else {
-                               gboolean _tmp199_ = FALSE;
-                               gboolean _tmp200_ = FALSE;
-                               ValaParameter* _tmp201_ = NULL;
-                               ValaDataType* _tmp202_ = NULL;
-                               ValaDataType* _tmp203_ = NULL;
-                               _tmp201_ = param;
-                               _tmp202_ = vala_variable_get_variable_type ((ValaVariable*) _tmp201_);
-                               _tmp203_ = _tmp202_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp203_, VALA_TYPE_POINTER_TYPE)) {
-                                       _tmp200_ = TRUE;
+                               gboolean _tmp209_ = FALSE;
+                               gboolean _tmp210_ = FALSE;
+                               ValaParameter* _tmp211_ = NULL;
+                               ValaDataType* _tmp212_ = NULL;
+                               ValaDataType* _tmp213_ = NULL;
+                               _tmp211_ = param;
+                               _tmp212_ = vala_variable_get_variable_type ((ValaVariable*) _tmp211_);
+                               _tmp213_ = _tmp212_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp213_, VALA_TYPE_POINTER_TYPE)) {
+                                       _tmp210_ = TRUE;
                                } else {
-                                       ValaParameter* _tmp204_ = NULL;
-                                       ValaDataType* _tmp205_ = NULL;
-                                       ValaDataType* _tmp206_ = NULL;
-                                       ValaTypeParameter* _tmp207_ = NULL;
-                                       ValaTypeParameter* _tmp208_ = NULL;
-                                       _tmp204_ = param;
-                                       _tmp205_ = vala_variable_get_variable_type ((ValaVariable*) _tmp204_);
-                                       _tmp206_ = _tmp205_;
-                                       _tmp207_ = vala_data_type_get_type_parameter (_tmp206_);
-                                       _tmp208_ = _tmp207_;
-                                       _tmp200_ = _tmp208_ != NULL;
+                                       ValaParameter* _tmp214_ = NULL;
+                                       ValaDataType* _tmp215_ = NULL;
+                                       ValaDataType* _tmp216_ = NULL;
+                                       ValaTypeParameter* _tmp217_ = NULL;
+                                       ValaTypeParameter* _tmp218_ = NULL;
+                                       _tmp214_ = param;
+                                       _tmp215_ = vala_variable_get_variable_type ((ValaVariable*) _tmp214_);
+                                       _tmp216_ = _tmp215_;
+                                       _tmp217_ = vala_data_type_get_type_parameter (_tmp216_);
+                                       _tmp218_ = _tmp217_;
+                                       _tmp210_ = _tmp218_ != NULL;
                                }
-                               if (_tmp200_) {
-                                       _tmp199_ = TRUE;
+                               if (_tmp210_) {
+                                       _tmp209_ = TRUE;
                                } else {
-                                       ValaParameter* _tmp209_ = NULL;
-                                       ValaParameterDirection _tmp210_ = 0;
-                                       ValaParameterDirection _tmp211_ = 0;
-                                       _tmp209_ = param;
-                                       _tmp210_ = vala_parameter_get_direction (_tmp209_);
-                                       _tmp211_ = _tmp210_;
-                                       _tmp199_ = _tmp211_ != VALA_PARAMETER_DIRECTION_IN;
+                                       ValaParameter* _tmp219_ = NULL;
+                                       ValaParameterDirection _tmp220_ = 0;
+                                       ValaParameterDirection _tmp221_ = 0;
+                                       _tmp219_ = param;
+                                       _tmp220_ = vala_parameter_get_direction (_tmp219_);
+                                       _tmp221_ = _tmp220_;
+                                       _tmp209_ = _tmp221_ != VALA_PARAMETER_DIRECTION_IN;
                                }
-                               if (_tmp199_) {
-                                       ValaCCodeFunctionCall* _tmp212_ = NULL;
-                                       ValaCCodeConstant* _tmp213_ = NULL;
-                                       ValaCCodeConstant* _tmp214_ = NULL;
-                                       _tmp212_ = csignew;
-                                       _tmp213_ = vala_ccode_constant_new ("G_TYPE_POINTER");
-                                       _tmp214_ = _tmp213_;
-                                       vala_ccode_function_call_add_argument (_tmp212_, (ValaCCodeExpression*) _tmp214_);
-                                       _vala_ccode_node_unref0 (_tmp214_);
+                               if (_tmp209_) {
+                                       ValaCCodeFunctionCall* _tmp222_ = NULL;
+                                       ValaCCodeConstant* _tmp223_ = NULL;
+                                       ValaCCodeConstant* _tmp224_ = NULL;
+                                       _tmp222_ = csignew;
+                                       _tmp223_ = vala_ccode_constant_new ("G_TYPE_POINTER");
+                                       _tmp224_ = _tmp223_;
+                                       vala_ccode_function_call_add_argument (_tmp222_, (ValaCCodeExpression*) _tmp224_);
+                                       _vala_ccode_node_unref0 (_tmp224_);
                                } else {
-                                       ValaParameter* _tmp215_ = NULL;
-                                       ValaDataType* _tmp216_ = NULL;
-                                       ValaDataType* _tmp217_ = NULL;
-                                       _tmp215_ = param;
-                                       _tmp216_ = vala_variable_get_variable_type ((ValaVariable*) _tmp215_);
-                                       _tmp217_ = _tmp216_;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp217_, VALA_TYPE_ERROR_TYPE)) {
-                                               ValaCCodeFunctionCall* _tmp218_ = NULL;
-                                               ValaCCodeConstant* _tmp219_ = NULL;
-                                               ValaCCodeConstant* _tmp220_ = NULL;
-                                               _tmp218_ = csignew;
-                                               _tmp219_ = vala_ccode_constant_new ("G_TYPE_POINTER");
-                                               _tmp220_ = _tmp219_;
-                                               vala_ccode_function_call_add_argument (_tmp218_, (ValaCCodeExpression*) _tmp220_);
-                                               _vala_ccode_node_unref0 (_tmp220_);
-                                       } else {
-                                               ValaCCodeFunctionCall* _tmp221_ = NULL;
-                                               ValaParameter* _tmp222_ = NULL;
-                                               ValaDataType* _tmp223_ = NULL;
-                                               ValaDataType* _tmp224_ = NULL;
-                                               ValaTypeSymbol* _tmp225_ = NULL;
-                                               ValaTypeSymbol* _tmp226_ = NULL;
-                                               gchar* _tmp227_ = NULL;
-                                               gchar* _tmp228_ = NULL;
+                                       ValaParameter* _tmp225_ = NULL;
+                                       ValaDataType* _tmp226_ = NULL;
+                                       ValaDataType* _tmp227_ = NULL;
+                                       _tmp225_ = param;
+                                       _tmp226_ = vala_variable_get_variable_type ((ValaVariable*) _tmp225_);
+                                       _tmp227_ = _tmp226_;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp227_, VALA_TYPE_ERROR_TYPE)) {
+                                               ValaCCodeFunctionCall* _tmp228_ = NULL;
                                                ValaCCodeConstant* _tmp229_ = NULL;
                                                ValaCCodeConstant* _tmp230_ = NULL;
-                                               _tmp221_ = csignew;
-                                               _tmp222_ = param;
-                                               _tmp223_ = vala_variable_get_variable_type ((ValaVariable*) _tmp222_);
-                                               _tmp224_ = _tmp223_;
-                                               _tmp225_ = vala_data_type_get_data_type (_tmp224_);
-                                               _tmp226_ = _tmp225_;
-                                               _tmp227_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp226_);
-                                               _tmp228_ = _tmp227_;
-                                               _tmp229_ = vala_ccode_constant_new (_tmp228_);
+                                               _tmp228_ = csignew;
+                                               _tmp229_ = vala_ccode_constant_new ("G_TYPE_POINTER");
                                                _tmp230_ = _tmp229_;
-                                               vala_ccode_function_call_add_argument (_tmp221_, (ValaCCodeExpression*) _tmp230_);
+                                               vala_ccode_function_call_add_argument (_tmp228_, (ValaCCodeExpression*) _tmp230_);
                                                _vala_ccode_node_unref0 (_tmp230_);
-                                               _g_free0 (_tmp228_);
+                                       } else {
+                                               ValaCCodeFunctionCall* _tmp231_ = NULL;
+                                               ValaParameter* _tmp232_ = NULL;
+                                               ValaDataType* _tmp233_ = NULL;
+                                               ValaDataType* _tmp234_ = NULL;
+                                               ValaTypeSymbol* _tmp235_ = NULL;
+                                               ValaTypeSymbol* _tmp236_ = NULL;
+                                               gchar* _tmp237_ = NULL;
+                                               gchar* _tmp238_ = NULL;
+                                               ValaCCodeConstant* _tmp239_ = NULL;
+                                               ValaCCodeConstant* _tmp240_ = NULL;
+                                               _tmp231_ = csignew;
+                                               _tmp232_ = param;
+                                               _tmp233_ = vala_variable_get_variable_type ((ValaVariable*) _tmp232_);
+                                               _tmp234_ = _tmp233_;
+                                               _tmp235_ = vala_data_type_get_data_type (_tmp234_);
+                                               _tmp236_ = _tmp235_;
+                                               _tmp237_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp236_);
+                                               _tmp238_ = _tmp237_;
+                                               _tmp239_ = vala_ccode_constant_new (_tmp238_);
+                                               _tmp240_ = _tmp239_;
+                                               vala_ccode_function_call_add_argument (_tmp231_, (ValaCCodeExpression*) _tmp240_);
+                                               _vala_ccode_node_unref0 (_tmp240_);
+                                               _g_free0 (_tmp238_);
                                        }
                                }
                        }
@@ -3477,9 +3529,9 @@ static ValaCCodeFunctionCall* vala_gsignal_module_real_get_signal_creation (Vala
                }
                _vala_iterable_unref0 (_param_list);
        }
-       _tmp231_ = marshal_arg;
-       _tmp232_ = marshaller;
-       vala_ccode_identifier_set_name (_tmp231_, _tmp232_);
+       _tmp241_ = marshal_arg;
+       _tmp242_ = marshaller;
+       vala_ccode_identifier_set_name (_tmp241_, _tmp242_);
        result = csignew;
        _vala_iterable_unref0 (params);
        _vala_ccode_node_unref0 (marshal_arg);
@@ -4927,12 +4979,12 @@ ValaGSignalModule* vala_gsignal_module_new (void) {
 
 static void vala_gsignal_module_class_init (ValaGSignalModuleClass * klass) {
        vala_gsignal_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->visit_signal = vala_gsignal_module_real_visit_signal;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_signal_creation = vala_gsignal_module_real_get_signal_creation;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_element_access = vala_gsignal_module_real_visit_element_access;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_assignment = vala_gsignal_module_real_visit_assignment;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_member_access = vala_gsignal_module_real_visit_member_access;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method_call = vala_gsignal_module_real_visit_method_call;
+       ((ValaCodeVisitorClass *) klass)->visit_signal = vala_gsignal_module_real_visit_signal;
+       ((ValaCCodeBaseModuleClass *) klass)->get_signal_creation = vala_gsignal_module_real_get_signal_creation;
+       ((ValaCodeVisitorClass *) klass)->visit_element_access = vala_gsignal_module_real_visit_element_access;
+       ((ValaCodeVisitorClass *) klass)->visit_assignment = vala_gsignal_module_real_visit_assignment;
+       ((ValaCodeVisitorClass *) klass)->visit_member_access = vala_gsignal_module_real_visit_member_access;
+       ((ValaCodeVisitorClass *) klass)->visit_method_call = vala_gsignal_module_real_visit_method_call;
 }
 
 
index a350edd..3f8e1ea 100644 (file)
@@ -333,6 +333,10 @@ public class Vala.GSignalModule : GObjectModule {
                        flags += "G_SIGNAL_NO_HOOKS";
                }
 
+               if (sig.get_attribute ("Deprecated") != null && CodeContext.get ().require_glib_version (2, 31)) {
+                       flags += "G_SIGNAL_DEPRECATED";
+               }
+
                csignew.add_argument (new CCodeConstant (string.joinv (" | ", flags)));
 
                if (sig.default_handler == null) {
index 9521c4d..4523c72 100644 (file)
@@ -1003,7 +1003,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp4_ = _tmp3_;
                _g_free0 (_tmp2_);
                regex = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch6_g_regex_error;
                        }
@@ -1015,7 +1015,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp7_ = replacement;
                _tmp8_ = g_regex_replace_literal (_tmp6_, self, (gssize) (-1), 0, _tmp7_, 0, &_inner_error_);
                _tmp5_ = _tmp8_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_regex_unref0 (regex);
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch6_g_regex_error;
@@ -1042,7 +1042,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _g_error_free0 (e);
        }
        __finally6:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return NULL;
@@ -1073,7 +1073,7 @@ static void vala_gtk_module_process_current_ui_resource (ValaGtkModule* self, co
        ValaMarkupTokenType current_token = 0;
        ValaMarkupReader* _tmp24_ = NULL;
        ValaMarkupTokenType _tmp25_ = 0;
-       gboolean _tmp82_ = FALSE;
+       gboolean _tmp93_ = FALSE;
        g_return_if_fail (self != NULL);
        g_return_if_fail (ui_resource != NULL);
        g_return_if_fail (node != NULL);
@@ -1143,8 +1143,8 @@ static void vala_gtk_module_process_current_ui_resource (ValaGtkModule* self, co
                ValaMarkupTokenType _tmp26_ = 0;
                gboolean _tmp27_ = FALSE;
                ValaMarkupTokenType _tmp28_ = 0;
-               ValaMarkupReader* _tmp80_ = NULL;
-               ValaMarkupTokenType _tmp81_ = 0;
+               ValaMarkupReader* _tmp91_ = NULL;
+               ValaMarkupTokenType _tmp92_ = 0;
                _tmp26_ = current_token;
                if (!(_tmp26_ != VALA_MARKUP_TOKEN_TYPE_EOF)) {
                        break;
@@ -1259,54 +1259,88 @@ static void vala_gtk_module_process_current_ui_resource (ValaGtkModule* self, co
                                handler_name = _tmp61_;
                                _tmp62_ = current_class;
                                if (_tmp62_ != NULL) {
+                                       gboolean _tmp63_ = FALSE;
+                                       const gchar* _tmp64_ = NULL;
                                        gint sep_idx = 0;
-                                       const gchar* _tmp63_ = NULL;
-                                       gint _tmp64_ = 0;
-                                       gint _tmp65_ = 0;
+                                       const gchar* _tmp74_ = NULL;
+                                       gint _tmp75_ = 0;
+                                       gint _tmp76_ = 0;
                                        ValaSignal* sig = NULL;
-                                       ValaClass* _tmp69_ = NULL;
-                                       const gchar* _tmp70_ = NULL;
-                                       gchar* _tmp71_ = NULL;
-                                       gchar* _tmp72_ = NULL;
-                                       ValaSymbol* _tmp73_ = NULL;
-                                       ValaSignal* _tmp74_ = NULL;
-                                       ValaSignal* _tmp75_ = NULL;
-                                       ValaSignal* _tmp76_ = NULL;
-                                       _tmp63_ = signal_name;
-                                       _tmp64_ = string_index_of (_tmp63_, "::", 0);
-                                       sep_idx = _tmp64_;
-                                       _tmp65_ = sep_idx;
-                                       if (_tmp65_ >= 0) {
-                                               const gchar* _tmp66_ = NULL;
-                                               gint _tmp67_ = 0;
-                                               gchar* _tmp68_ = NULL;
-                                               _tmp66_ = signal_name;
-                                               _tmp67_ = sep_idx;
-                                               _tmp68_ = string_substring (_tmp66_, (glong) 0, (glong) _tmp67_);
+                                       ValaClass* _tmp80_ = NULL;
+                                       const gchar* _tmp81_ = NULL;
+                                       gchar* _tmp82_ = NULL;
+                                       gchar* _tmp83_ = NULL;
+                                       ValaSymbol* _tmp84_ = NULL;
+                                       ValaSignal* _tmp85_ = NULL;
+                                       ValaSignal* _tmp86_ = NULL;
+                                       ValaSignal* _tmp87_ = NULL;
+                                       _tmp64_ = signal_name;
+                                       if (_tmp64_ == NULL) {
+                                               _tmp63_ = TRUE;
+                                       } else {
+                                               const gchar* _tmp65_ = NULL;
+                                               _tmp65_ = handler_name;
+                                               _tmp63_ = _tmp65_ == NULL;
+                                       }
+                                       if (_tmp63_) {
+                                               ValaCodeNode* _tmp66_ = NULL;
+                                               ValaSourceReference* _tmp67_ = NULL;
+                                               ValaSourceReference* _tmp68_ = NULL;
+                                               const gchar* _tmp69_ = NULL;
+                                               gchar* _tmp70_ = NULL;
+                                               gchar* _tmp71_ = NULL;
+                                               ValaMarkupReader* _tmp72_ = NULL;
+                                               ValaMarkupTokenType _tmp73_ = 0;
+                                               _tmp66_ = node;
+                                               _tmp67_ = vala_code_node_get_source_reference (_tmp66_);
+                                               _tmp68_ = _tmp67_;
+                                               _tmp69_ = ui_file;
+                                               _tmp70_ = g_strdup_printf ("Invalid signal in ui file `%s'", _tmp69_);
+                                               _tmp71_ = _tmp70_;
+                                               vala_report_error (_tmp68_, _tmp71_);
+                                               _g_free0 (_tmp71_);
+                                               _tmp72_ = reader;
+                                               _tmp73_ = vala_markup_reader_read_token (_tmp72_, NULL, NULL);
+                                               current_token = _tmp73_;
+                                               _g_free0 (handler_name);
+                                               _g_free0 (signal_name);
+                                               continue;
+                                       }
+                                       _tmp74_ = signal_name;
+                                       _tmp75_ = string_index_of (_tmp74_, "::", 0);
+                                       sep_idx = _tmp75_;
+                                       _tmp76_ = sep_idx;
+                                       if (_tmp76_ >= 0) {
+                                               const gchar* _tmp77_ = NULL;
+                                               gint _tmp78_ = 0;
+                                               gchar* _tmp79_ = NULL;
+                                               _tmp77_ = signal_name;
+                                               _tmp78_ = sep_idx;
+                                               _tmp79_ = string_substring (_tmp77_, (glong) 0, (glong) _tmp78_);
                                                _g_free0 (signal_name);
-                                               signal_name = _tmp68_;
+                                               signal_name = _tmp79_;
                                        }
-                                       _tmp69_ = current_class;
-                                       _tmp70_ = signal_name;
-                                       _tmp71_ = string_replace (_tmp70_, "-", "_");
-                                       _tmp72_ = _tmp71_;
-                                       _tmp73_ = vala_semantic_analyzer_symbol_lookup_inherited ((ValaSymbol*) _tmp69_, _tmp72_);
-                                       _tmp74_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp73_, VALA_TYPE_SIGNAL) ? ((ValaSignal*) _tmp73_) : NULL;
-                                       if (_tmp74_ == NULL) {
-                                               _vala_code_node_unref0 (_tmp73_);
+                                       _tmp80_ = current_class;
+                                       _tmp81_ = signal_name;
+                                       _tmp82_ = string_replace (_tmp81_, "-", "_");
+                                       _tmp83_ = _tmp82_;
+                                       _tmp84_ = vala_semantic_analyzer_symbol_lookup_inherited ((ValaSymbol*) _tmp80_, _tmp83_);
+                                       _tmp85_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp84_, VALA_TYPE_SIGNAL) ? ((ValaSignal*) _tmp84_) : NULL;
+                                       if (_tmp85_ == NULL) {
+                                               _vala_code_node_unref0 (_tmp84_);
                                        }
-                                       _tmp75_ = _tmp74_;
-                                       _g_free0 (_tmp72_);
-                                       sig = _tmp75_;
-                                       _tmp76_ = sig;
-                                       if (_tmp76_ != NULL) {
-                                               ValaHashMap* _tmp77_ = NULL;
-                                               const gchar* _tmp78_ = NULL;
-                                               ValaSignal* _tmp79_ = NULL;
-                                               _tmp77_ = self->priv->current_handler_to_signal_map;
-                                               _tmp78_ = handler_name;
-                                               _tmp79_ = sig;
-                                               vala_map_set ((ValaMap*) _tmp77_, _tmp78_, _tmp79_);
+                                       _tmp86_ = _tmp85_;
+                                       _g_free0 (_tmp83_);
+                                       sig = _tmp86_;
+                                       _tmp87_ = sig;
+                                       if (_tmp87_ != NULL) {
+                                               ValaHashMap* _tmp88_ = NULL;
+                                               const gchar* _tmp89_ = NULL;
+                                               ValaSignal* _tmp90_ = NULL;
+                                               _tmp88_ = self->priv->current_handler_to_signal_map;
+                                               _tmp89_ = handler_name;
+                                               _tmp90_ = sig;
+                                               vala_map_set ((ValaMap*) _tmp88_, _tmp89_, _tmp90_);
                                        }
                                        _vala_code_node_unref0 (sig);
                                }
@@ -1314,26 +1348,26 @@ static void vala_gtk_module_process_current_ui_resource (ValaGtkModule* self, co
                                _g_free0 (signal_name);
                        }
                }
-               _tmp80_ = reader;
-               _tmp81_ = vala_markup_reader_read_token (_tmp80_, NULL, NULL);
-               current_token = _tmp81_;
+               _tmp91_ = reader;
+               _tmp92_ = vala_markup_reader_read_token (_tmp91_, NULL, NULL);
+               current_token = _tmp92_;
        }
-       _tmp82_ = template_tag_found;
-       if (!_tmp82_) {
-               ValaCodeNode* _tmp83_ = NULL;
-               ValaSourceReference* _tmp84_ = NULL;
-               ValaSourceReference* _tmp85_ = NULL;
-               const gchar* _tmp86_ = NULL;
-               gchar* _tmp87_ = NULL;
-               gchar* _tmp88_ = NULL;
-               _tmp83_ = node;
-               _tmp84_ = vala_code_node_get_source_reference (_tmp83_);
-               _tmp85_ = _tmp84_;
-               _tmp86_ = ui_resource;
-               _tmp87_ = g_strdup_printf ("ui resource `%s' does not describe a valid composite template", _tmp86_);
-               _tmp88_ = _tmp87_;
-               vala_report_error (_tmp85_, _tmp88_);
-               _g_free0 (_tmp88_);
+       _tmp93_ = template_tag_found;
+       if (!_tmp93_) {
+               ValaCodeNode* _tmp94_ = NULL;
+               ValaSourceReference* _tmp95_ = NULL;
+               ValaSourceReference* _tmp96_ = NULL;
+               const gchar* _tmp97_ = NULL;
+               gchar* _tmp98_ = NULL;
+               gchar* _tmp99_ = NULL;
+               _tmp94_ = node;
+               _tmp95_ = vala_code_node_get_source_reference (_tmp94_);
+               _tmp96_ = _tmp95_;
+               _tmp97_ = ui_resource;
+               _tmp98_ = g_strdup_printf ("ui resource `%s' does not describe a valid composite template", _tmp97_);
+               _tmp99_ = _tmp98_;
+               vala_report_error (_tmp96_, _tmp99_);
+               _g_free0 (_tmp99_);
        }
        _vala_code_node_unref0 (current_class);
        _g_object_unref0 (reader);
@@ -2438,12 +2472,12 @@ ValaGtkModule* vala_gtk_module_new (void) {
 
 static void vala_gtk_module_class_init (ValaGtkModuleClass * klass) {
        vala_gtk_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_gtk_module_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_gtk_module_finalize;
        g_type_class_add_private (klass, sizeof (ValaGtkModulePrivate));
-       VALA_GTYPE_MODULE_CLASS (klass)->generate_class_init = vala_gtk_module_real_generate_class_init;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_field = vala_gtk_module_real_visit_field;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method = vala_gtk_module_real_visit_method;
-       VALA_GTYPE_MODULE_CLASS (klass)->end_instance_init = vala_gtk_module_real_end_instance_init;
+       ((ValaGTypeModuleClass *) klass)->generate_class_init = vala_gtk_module_real_generate_class_init;
+       ((ValaCodeVisitorClass *) klass)->visit_field = vala_gtk_module_real_visit_field;
+       ((ValaCodeVisitorClass *) klass)->visit_method = vala_gtk_module_real_visit_method;
+       ((ValaGTypeModuleClass *) klass)->end_instance_init = vala_gtk_module_real_end_instance_init;
 }
 
 
index b6c9c30..deb0704 100644 (file)
@@ -126,7 +126,13 @@ public class Vala.GtkModule : GSignalModule {
                        } else if (current_class != null && current_token == MarkupTokenType.START_ELEMENT && reader.name == "signal") {
                                var signal_name = reader.get_attribute ("name");
                                var handler_name = reader.get_attribute ("handler");
+
                                if (current_class != null) {
+                                       if (signal_name == null || handler_name == null) {
+                                               Report.error (node.source_reference, "Invalid signal in ui file `%s'".printf (ui_file));
+                                               current_token = reader.read_token (null, null);
+                                               continue;
+                                       }
                                        var sep_idx = signal_name.index_of ("::");
                                        if (sep_idx >= 0) {
                                                // detailed signal, we don't care about the detail
index d27292d..63f2801 100644 (file)
@@ -191,6 +191,7 @@ typedef struct _ValaClassRegisterFunctionClass ValaClassRegisterFunctionClass;
 #define _vala_typeregister_function_unref0(var) ((var == NULL) ? NULL : (var = (vala_typeregister_function_unref (var), NULL)))
 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
+#define _vala_ccode_declarator_suffix_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_declarator_suffix_unref (var), NULL)))
 #define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
 #define _vala_ccode_base_module_emit_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_base_module_emit_context_unref (var), NULL)))
 typedef struct _ValaCCodeBaseModuleEmitContextPrivate ValaCCodeBaseModuleEmitContextPrivate;
@@ -533,6 +534,7 @@ gchar* vala_ccode_base_module_get_ccode_type_id (ValaCodeNode* node);
 gchar* vala_ccode_base_module_get_ccode_upper_case_name (ValaSymbol* sym, const gchar* infix);
 gchar* vala_ccode_base_module_get_ccode_type_check_function (ValaTypeSymbol* sym);
 gchar* vala_ccode_base_module_get_ccode_lower_case_prefix (ValaSymbol* sym);
+ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self);
 gchar* vala_ccode_base_module_get_ccode_set_value_function (ValaCodeNode* sym);
 gchar* vala_ccode_base_module_get_ccode_take_value_function (ValaCodeNode* sym);
 gchar* vala_ccode_base_module_get_ccode_get_value_function (ValaCodeNode* sym);
@@ -544,7 +546,6 @@ void vala_value_take_typeregister_function (GValue* value, gpointer v_object);
 gpointer vala_value_get_typeregister_function (const GValue* value);
 GType vala_typeregister_function_get_type (void) G_GNUC_CONST;
 GType vala_class_register_function_get_type (void) G_GNUC_CONST;
-ValaCodeContext* vala_ccode_base_module_get_context (ValaCCodeBaseModule* self);
 ValaClassRegisterFunction* vala_class_register_function_new (ValaClass* cl, ValaCodeContext* context);
 ValaClassRegisterFunction* vala_class_register_function_construct (GType object_type, ValaClass* cl, ValaCodeContext* context);
 void vala_typeregister_function_init_from_type (ValaTypeRegisterFunction* self, gboolean plugin, gboolean declaration_only);
@@ -555,7 +556,7 @@ void vala_ccode_base_module_generate_interface_declaration (ValaCCodeBaseModule*
 void vala_gtype_module_generate_virtual_method_declaration (ValaGTypeModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeStruct* type_struct);
 gchar* vala_ccode_base_module_get_array_length_cname (ValaCCodeBaseModule* self, const gchar* array_cname, gint dim);
 gchar* vala_ccode_base_module_get_delegate_target_cname (ValaCCodeBaseModule* self, const gchar* delegate_cname);
-gchar* vala_ccode_base_module_get_ccode_declarator_suffix (ValaDataType* type);
+ValaCCodeDeclaratorSuffix* vala_ccode_base_module_get_ccode_declarator_suffix (ValaCCodeBaseModule* self, ValaDataType* type);
 gboolean vala_ccode_base_module_get_ccode_array_length (ValaCodeNode* node);
 gchar* vala_ccode_base_module_get_ccode_array_length_name (ValaCodeNode* node);
 gchar* vala_ccode_base_module_get_array_size_cname (ValaCCodeBaseModule* self, const gchar* array_cname);
@@ -819,7 +820,7 @@ static void vala_gtype_module_real_generate_class_declaration (ValaCCodeBaseModu
        gboolean _tmp122_ = FALSE;
        gboolean _tmp123_ = FALSE;
        gboolean _tmp154_ = FALSE;
-       gboolean _tmp285_ = FALSE;
+       gboolean _tmp330_ = FALSE;
        self = (ValaGTypeModule*) base;
        g_return_if_fail (cl != NULL);
        g_return_if_fail (decl_space != NULL);
@@ -1212,86 +1213,81 @@ static void vala_gtype_module_real_generate_class_declaration (ValaCCodeBaseModu
                ValaCCodeFunction* _tmp167_ = NULL;
                ValaCCodeFunction* _tmp168_ = NULL;
                ValaClass* _tmp169_ = NULL;
-               ValaSymbolAccessibility _tmp170_ = 0;
-               ValaSymbolAccessibility _tmp171_ = 0;
-               ValaCCodeFunction* _tmp174_ = NULL;
-               ValaCCodeParameter* _tmp175_ = NULL;
-               ValaCCodeParameter* _tmp176_ = NULL;
-               ValaCCodeFunction* _tmp177_ = NULL;
-               ValaCCodeParameter* _tmp178_ = NULL;
-               ValaCCodeParameter* _tmp179_ = NULL;
-               ValaCCodeFile* _tmp180_ = NULL;
-               ValaCCodeFunction* _tmp181_ = NULL;
-               ValaCCodeFile* _tmp182_ = NULL;
-               ValaCCodeFunction* _tmp183_ = NULL;
+               gboolean _tmp170_ = FALSE;
+               ValaCCodeFunction* _tmp182_ = NULL;
+               ValaCCodeParameter* _tmp183_ = NULL;
+               ValaCCodeParameter* _tmp184_ = NULL;
+               ValaCCodeFunction* _tmp185_ = NULL;
+               ValaCCodeParameter* _tmp186_ = NULL;
+               ValaCCodeParameter* _tmp187_ = NULL;
+               ValaCCodeFile* _tmp188_ = NULL;
+               ValaCCodeFunction* _tmp189_ = NULL;
+               ValaCCodeFile* _tmp190_ = NULL;
+               ValaCCodeFunction* _tmp191_ = NULL;
                gchar* function_name = NULL;
-               ValaClass* _tmp184_ = NULL;
-               gchar* _tmp185_ = NULL;
+               ValaClass* _tmp192_ = NULL;
+               gchar* _tmp193_ = NULL;
                ValaCCodeFunction* function = NULL;
-               const gchar* _tmp186_ = NULL;
-               ValaCCodeFunction* _tmp187_ = NULL;
-               ValaCCodeFunction* _tmp188_ = NULL;
-               ValaCCodeParameter* _tmp189_ = NULL;
-               ValaCCodeParameter* _tmp190_ = NULL;
-               ValaCCodeFunction* _tmp191_ = NULL;
-               ValaCCodeParameter* _tmp192_ = NULL;
-               ValaCCodeParameter* _tmp193_ = NULL;
-               ValaCCodeFunction* _tmp194_ = NULL;
-               ValaCCodeParameter* _tmp195_ = NULL;
-               ValaCCodeParameter* _tmp196_ = NULL;
-               ValaCCodeFunction* _tmp197_ = NULL;
+               const gchar* _tmp194_ = NULL;
+               ValaCCodeFunction* _tmp195_ = NULL;
+               ValaCCodeFunction* _tmp196_ = NULL;
+               ValaCCodeParameter* _tmp197_ = NULL;
                ValaCCodeParameter* _tmp198_ = NULL;
-               ValaCCodeParameter* _tmp199_ = NULL;
-               ValaCCodeFunction* _tmp200_ = NULL;
+               ValaCCodeFunction* _tmp199_ = NULL;
+               ValaCCodeParameter* _tmp200_ = NULL;
                ValaCCodeParameter* _tmp201_ = NULL;
-               ValaCCodeParameter* _tmp202_ = NULL;
-               ValaClass* _tmp203_ = NULL;
-               ValaSymbolAccessibility _tmp204_ = 0;
-               ValaSymbolAccessibility _tmp205_ = 0;
-               ValaCCodeFile* _tmp208_ = NULL;
-               ValaCCodeFunction* _tmp209_ = NULL;
-               ValaClass* _tmp210_ = NULL;
-               gchar* _tmp211_ = NULL;
-               gchar* _tmp212_ = NULL;
-               ValaCCodeFunction* _tmp213_ = NULL;
-               ValaCCodeFunction* _tmp214_ = NULL;
-               ValaCCodeParameter* _tmp215_ = NULL;
-               ValaCCodeParameter* _tmp216_ = NULL;
-               ValaCCodeFunction* _tmp217_ = NULL;
-               ValaCCodeParameter* _tmp218_ = NULL;
-               ValaCCodeParameter* _tmp219_ = NULL;
-               ValaClass* _tmp220_ = NULL;
-               ValaSymbolAccessibility _tmp221_ = 0;
-               ValaSymbolAccessibility _tmp222_ = 0;
-               ValaCCodeFile* _tmp225_ = NULL;
-               ValaCCodeFunction* _tmp226_ = NULL;
-               ValaClass* _tmp227_ = NULL;
-               gchar* _tmp228_ = NULL;
-               gchar* _tmp229_ = NULL;
-               ValaCCodeFunction* _tmp230_ = NULL;
-               ValaCCodeFunction* _tmp231_ = NULL;
-               ValaCCodeParameter* _tmp232_ = NULL;
+               ValaCCodeFunction* _tmp202_ = NULL;
+               ValaCCodeParameter* _tmp203_ = NULL;
+               ValaCCodeParameter* _tmp204_ = NULL;
+               ValaCCodeFunction* _tmp205_ = NULL;
+               ValaCCodeParameter* _tmp206_ = NULL;
+               ValaCCodeParameter* _tmp207_ = NULL;
+               ValaCCodeFunction* _tmp208_ = NULL;
+               ValaCCodeParameter* _tmp209_ = NULL;
+               ValaCCodeParameter* _tmp210_ = NULL;
+               ValaClass* _tmp211_ = NULL;
+               gboolean _tmp212_ = FALSE;
+               ValaCCodeFile* _tmp223_ = NULL;
+               ValaCCodeFunction* _tmp224_ = NULL;
+               ValaClass* _tmp225_ = NULL;
+               gchar* _tmp226_ = NULL;
+               gchar* _tmp227_ = NULL;
+               ValaCCodeFunction* _tmp228_ = NULL;
+               ValaCCodeFunction* _tmp229_ = NULL;
+               ValaCCodeParameter* _tmp230_ = NULL;
+               ValaCCodeParameter* _tmp231_ = NULL;
+               ValaCCodeFunction* _tmp232_ = NULL;
                ValaCCodeParameter* _tmp233_ = NULL;
-               ValaCCodeFunction* _tmp234_ = NULL;
-               ValaCCodeParameter* _tmp235_ = NULL;
-               ValaCCodeParameter* _tmp236_ = NULL;
-               ValaClass* _tmp237_ = NULL;
-               ValaSymbolAccessibility _tmp238_ = 0;
-               ValaSymbolAccessibility _tmp239_ = 0;
-               ValaCCodeFile* _tmp242_ = NULL;
-               ValaCCodeFunction* _tmp243_ = NULL;
-               ValaClass* _tmp244_ = NULL;
-               gchar* _tmp245_ = NULL;
-               gchar* _tmp246_ = NULL;
-               ValaCCodeFunction* _tmp247_ = NULL;
-               ValaCCodeFunction* _tmp248_ = NULL;
-               ValaCCodeParameter* _tmp249_ = NULL;
-               ValaCCodeParameter* _tmp250_ = NULL;
-               ValaClass* _tmp251_ = NULL;
-               ValaSymbolAccessibility _tmp252_ = 0;
-               ValaSymbolAccessibility _tmp253_ = 0;
-               ValaCCodeFile* _tmp256_ = NULL;
+               ValaCCodeParameter* _tmp234_ = NULL;
+               ValaClass* _tmp235_ = NULL;
+               gboolean _tmp236_ = FALSE;
+               ValaCCodeFile* _tmp248_ = NULL;
+               ValaCCodeFunction* _tmp249_ = NULL;
+               ValaClass* _tmp250_ = NULL;
+               gchar* _tmp251_ = NULL;
+               gchar* _tmp252_ = NULL;
+               ValaCCodeFunction* _tmp253_ = NULL;
+               ValaCCodeFunction* _tmp254_ = NULL;
+               ValaCCodeParameter* _tmp255_ = NULL;
+               ValaCCodeParameter* _tmp256_ = NULL;
                ValaCCodeFunction* _tmp257_ = NULL;
+               ValaCCodeParameter* _tmp258_ = NULL;
+               ValaCCodeParameter* _tmp259_ = NULL;
+               ValaClass* _tmp260_ = NULL;
+               gboolean _tmp261_ = FALSE;
+               ValaCCodeFile* _tmp272_ = NULL;
+               ValaCCodeFunction* _tmp273_ = NULL;
+               ValaClass* _tmp274_ = NULL;
+               gchar* _tmp275_ = NULL;
+               gchar* _tmp276_ = NULL;
+               ValaCCodeFunction* _tmp277_ = NULL;
+               ValaCCodeFunction* _tmp278_ = NULL;
+               ValaCCodeParameter* _tmp279_ = NULL;
+               ValaCCodeParameter* _tmp280_ = NULL;
+               ValaClass* _tmp281_ = NULL;
+               gboolean _tmp282_ = FALSE;
+               ValaCCodeFile* _tmp294_ = NULL;
+               ValaCCodeFunction* _tmp295_ = NULL;
                _tmp155_ = cl;
                _tmp156_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp155_);
                _tmp157_ = _tmp156_;
@@ -1313,310 +1309,456 @@ static void vala_gtype_module_real_generate_class_declaration (ValaCCodeBaseModu
                _g_free0 (_tmp164_);
                unref_fun = _tmp168_;
                _tmp169_ = cl;
-               _tmp170_ = vala_symbol_get_access ((ValaSymbol*) _tmp169_);
-               _tmp171_ = _tmp170_;
-               if (_tmp171_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
+               _tmp170_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp169_);
+               if (_tmp170_) {
+                       ValaCCodeFunction* _tmp171_ = NULL;
                        ValaCCodeFunction* _tmp172_ = NULL;
-                       ValaCCodeFunction* _tmp173_ = NULL;
-                       _tmp172_ = ref_fun;
+                       _tmp171_ = ref_fun;
+                       vala_ccode_function_set_modifiers (_tmp171_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp172_ = unref_fun;
                        vala_ccode_function_set_modifiers (_tmp172_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp173_ = unref_fun;
-                       vala_ccode_function_set_modifiers (_tmp173_, VALA_CCODE_MODIFIERS_STATIC);
+               } else {
+                       gboolean _tmp173_ = FALSE;
+                       ValaCodeContext* _tmp174_ = NULL;
+                       ValaCodeContext* _tmp175_ = NULL;
+                       gboolean _tmp176_ = FALSE;
+                       gboolean _tmp177_ = FALSE;
+                       _tmp174_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp175_ = _tmp174_;
+                       _tmp176_ = vala_code_context_get_hide_internal (_tmp175_);
+                       _tmp177_ = _tmp176_;
+                       if (_tmp177_) {
+                               ValaClass* _tmp178_ = NULL;
+                               gboolean _tmp179_ = FALSE;
+                               _tmp178_ = cl;
+                               _tmp179_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp178_);
+                               _tmp173_ = _tmp179_;
+                       } else {
+                               _tmp173_ = FALSE;
+                       }
+                       if (_tmp173_) {
+                               ValaCCodeFunction* _tmp180_ = NULL;
+                               ValaCCodeFunction* _tmp181_ = NULL;
+                               _tmp180_ = ref_fun;
+                               vala_ccode_function_set_modifiers (_tmp180_, VALA_CCODE_MODIFIERS_INTERNAL);
+                               _tmp181_ = unref_fun;
+                               vala_ccode_function_set_modifiers (_tmp181_, VALA_CCODE_MODIFIERS_INTERNAL);
+                       }
                }
-               _tmp174_ = ref_fun;
-               _tmp175_ = vala_ccode_parameter_new ("instance", "gpointer");
-               _tmp176_ = _tmp175_;
-               vala_ccode_function_add_parameter (_tmp174_, _tmp176_);
-               _vala_ccode_node_unref0 (_tmp176_);
-               _tmp177_ = unref_fun;
-               _tmp178_ = vala_ccode_parameter_new ("instance", "gpointer");
-               _tmp179_ = _tmp178_;
-               vala_ccode_function_add_parameter (_tmp177_, _tmp179_);
-               _vala_ccode_node_unref0 (_tmp179_);
-               _tmp180_ = decl_space;
-               _tmp181_ = ref_fun;
-               vala_ccode_file_add_function_declaration (_tmp180_, _tmp181_);
-               _tmp182_ = decl_space;
-               _tmp183_ = unref_fun;
-               vala_ccode_file_add_function_declaration (_tmp182_, _tmp183_);
-               _tmp184_ = cl;
-               _tmp185_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp184_, "param_spec_");
-               function_name = _tmp185_;
-               _tmp186_ = function_name;
-               _tmp187_ = vala_ccode_function_new (_tmp186_, "GParamSpec*");
-               function = _tmp187_;
-               _tmp188_ = function;
-               _tmp189_ = vala_ccode_parameter_new ("name", "const gchar*");
-               _tmp190_ = _tmp189_;
-               vala_ccode_function_add_parameter (_tmp188_, _tmp190_);
-               _vala_ccode_node_unref0 (_tmp190_);
-               _tmp191_ = function;
-               _tmp192_ = vala_ccode_parameter_new ("nick", "const gchar*");
-               _tmp193_ = _tmp192_;
-               vala_ccode_function_add_parameter (_tmp191_, _tmp193_);
-               _vala_ccode_node_unref0 (_tmp193_);
-               _tmp194_ = function;
-               _tmp195_ = vala_ccode_parameter_new ("blurb", "const gchar*");
-               _tmp196_ = _tmp195_;
-               vala_ccode_function_add_parameter (_tmp194_, _tmp196_);
-               _vala_ccode_node_unref0 (_tmp196_);
-               _tmp197_ = function;
-               _tmp198_ = vala_ccode_parameter_new ("object_type", "GType");
-               _tmp199_ = _tmp198_;
-               vala_ccode_function_add_parameter (_tmp197_, _tmp199_);
-               _vala_ccode_node_unref0 (_tmp199_);
-               _tmp200_ = function;
-               _tmp201_ = vala_ccode_parameter_new ("flags", "GParamFlags");
-               _tmp202_ = _tmp201_;
-               vala_ccode_function_add_parameter (_tmp200_, _tmp202_);
-               _vala_ccode_node_unref0 (_tmp202_);
-               _tmp203_ = cl;
-               _tmp204_ = vala_symbol_get_access ((ValaSymbol*) _tmp203_);
-               _tmp205_ = _tmp204_;
-               if (_tmp205_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-                       ValaCCodeFunction* _tmp206_ = NULL;
-                       ValaCCodeFunction* _tmp207_ = NULL;
-                       _tmp206_ = function;
-                       vala_ccode_function_set_modifiers (_tmp206_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp207_ = function;
-                       vala_ccode_function_set_attributes (_tmp207_, "G_GNUC_UNUSED");
+               _tmp182_ = ref_fun;
+               _tmp183_ = vala_ccode_parameter_new ("instance", "gpointer");
+               _tmp184_ = _tmp183_;
+               vala_ccode_function_add_parameter (_tmp182_, _tmp184_);
+               _vala_ccode_node_unref0 (_tmp184_);
+               _tmp185_ = unref_fun;
+               _tmp186_ = vala_ccode_parameter_new ("instance", "gpointer");
+               _tmp187_ = _tmp186_;
+               vala_ccode_function_add_parameter (_tmp185_, _tmp187_);
+               _vala_ccode_node_unref0 (_tmp187_);
+               _tmp188_ = decl_space;
+               _tmp189_ = ref_fun;
+               vala_ccode_file_add_function_declaration (_tmp188_, _tmp189_);
+               _tmp190_ = decl_space;
+               _tmp191_ = unref_fun;
+               vala_ccode_file_add_function_declaration (_tmp190_, _tmp191_);
+               _tmp192_ = cl;
+               _tmp193_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp192_, "param_spec_");
+               function_name = _tmp193_;
+               _tmp194_ = function_name;
+               _tmp195_ = vala_ccode_function_new (_tmp194_, "GParamSpec*");
+               function = _tmp195_;
+               _tmp196_ = function;
+               _tmp197_ = vala_ccode_parameter_new ("name", "const gchar*");
+               _tmp198_ = _tmp197_;
+               vala_ccode_function_add_parameter (_tmp196_, _tmp198_);
+               _vala_ccode_node_unref0 (_tmp198_);
+               _tmp199_ = function;
+               _tmp200_ = vala_ccode_parameter_new ("nick", "const gchar*");
+               _tmp201_ = _tmp200_;
+               vala_ccode_function_add_parameter (_tmp199_, _tmp201_);
+               _vala_ccode_node_unref0 (_tmp201_);
+               _tmp202_ = function;
+               _tmp203_ = vala_ccode_parameter_new ("blurb", "const gchar*");
+               _tmp204_ = _tmp203_;
+               vala_ccode_function_add_parameter (_tmp202_, _tmp204_);
+               _vala_ccode_node_unref0 (_tmp204_);
+               _tmp205_ = function;
+               _tmp206_ = vala_ccode_parameter_new ("object_type", "GType");
+               _tmp207_ = _tmp206_;
+               vala_ccode_function_add_parameter (_tmp205_, _tmp207_);
+               _vala_ccode_node_unref0 (_tmp207_);
+               _tmp208_ = function;
+               _tmp209_ = vala_ccode_parameter_new ("flags", "GParamFlags");
+               _tmp210_ = _tmp209_;
+               vala_ccode_function_add_parameter (_tmp208_, _tmp210_);
+               _vala_ccode_node_unref0 (_tmp210_);
+               _tmp211_ = cl;
+               _tmp212_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp211_);
+               if (_tmp212_) {
+                       ValaCCodeFunction* _tmp213_ = NULL;
+                       ValaCCodeFunction* _tmp214_ = NULL;
+                       _tmp213_ = function;
+                       vala_ccode_function_set_modifiers (_tmp213_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp214_ = function;
+                       vala_ccode_function_set_attributes (_tmp214_, "G_GNUC_UNUSED");
+               } else {
+                       gboolean _tmp215_ = FALSE;
+                       ValaCodeContext* _tmp216_ = NULL;
+                       ValaCodeContext* _tmp217_ = NULL;
+                       gboolean _tmp218_ = FALSE;
+                       gboolean _tmp219_ = FALSE;
+                       _tmp216_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp217_ = _tmp216_;
+                       _tmp218_ = vala_code_context_get_hide_internal (_tmp217_);
+                       _tmp219_ = _tmp218_;
+                       if (_tmp219_) {
+                               ValaClass* _tmp220_ = NULL;
+                               gboolean _tmp221_ = FALSE;
+                               _tmp220_ = cl;
+                               _tmp221_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp220_);
+                               _tmp215_ = _tmp221_;
+                       } else {
+                               _tmp215_ = FALSE;
+                       }
+                       if (_tmp215_) {
+                               ValaCCodeFunction* _tmp222_ = NULL;
+                               _tmp222_ = function;
+                               vala_ccode_function_set_modifiers (_tmp222_, VALA_CCODE_MODIFIERS_INTERNAL);
+                       }
                }
-               _tmp208_ = decl_space;
-               _tmp209_ = function;
-               vala_ccode_file_add_function_declaration (_tmp208_, _tmp209_);
-               _tmp210_ = cl;
-               _tmp211_ = vala_ccode_base_module_get_ccode_set_value_function ((ValaCodeNode*) _tmp210_);
-               _tmp212_ = _tmp211_;
-               _tmp213_ = vala_ccode_function_new (_tmp212_, "void");
+               _tmp223_ = decl_space;
+               _tmp224_ = function;
+               vala_ccode_file_add_function_declaration (_tmp223_, _tmp224_);
+               _tmp225_ = cl;
+               _tmp226_ = vala_ccode_base_module_get_ccode_set_value_function ((ValaCodeNode*) _tmp225_);
+               _tmp227_ = _tmp226_;
+               _tmp228_ = vala_ccode_function_new (_tmp227_, "void");
                _vala_ccode_node_unref0 (function);
-               function = _tmp213_;
-               _g_free0 (_tmp212_);
-               _tmp214_ = function;
-               _tmp215_ = vala_ccode_parameter_new ("value", "GValue*");
-               _tmp216_ = _tmp215_;
-               vala_ccode_function_add_parameter (_tmp214_, _tmp216_);
-               _vala_ccode_node_unref0 (_tmp216_);
-               _tmp217_ = function;
-               _tmp218_ = vala_ccode_parameter_new ("v_object", "gpointer");
-               _tmp219_ = _tmp218_;
-               vala_ccode_function_add_parameter (_tmp217_, _tmp219_);
-               _vala_ccode_node_unref0 (_tmp219_);
-               _tmp220_ = cl;
-               _tmp221_ = vala_symbol_get_access ((ValaSymbol*) _tmp220_);
-               _tmp222_ = _tmp221_;
-               if (_tmp222_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-                       ValaCCodeFunction* _tmp223_ = NULL;
-                       ValaCCodeFunction* _tmp224_ = NULL;
-                       _tmp223_ = function;
-                       vala_ccode_function_set_modifiers (_tmp223_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp224_ = function;
-                       vala_ccode_function_set_attributes (_tmp224_, "G_GNUC_UNUSED");
+               function = _tmp228_;
+               _g_free0 (_tmp227_);
+               _tmp229_ = function;
+               _tmp230_ = vala_ccode_parameter_new ("value", "GValue*");
+               _tmp231_ = _tmp230_;
+               vala_ccode_function_add_parameter (_tmp229_, _tmp231_);
+               _vala_ccode_node_unref0 (_tmp231_);
+               _tmp232_ = function;
+               _tmp233_ = vala_ccode_parameter_new ("v_object", "gpointer");
+               _tmp234_ = _tmp233_;
+               vala_ccode_function_add_parameter (_tmp232_, _tmp234_);
+               _vala_ccode_node_unref0 (_tmp234_);
+               _tmp235_ = cl;
+               _tmp236_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp235_);
+               if (_tmp236_) {
+                       ValaCCodeFunction* _tmp237_ = NULL;
+                       ValaCCodeFunction* _tmp238_ = NULL;
+                       _tmp237_ = function;
+                       vala_ccode_function_set_modifiers (_tmp237_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp238_ = function;
+                       vala_ccode_function_set_attributes (_tmp238_, "G_GNUC_UNUSED");
+               } else {
+                       gboolean _tmp239_ = FALSE;
+                       ValaCodeContext* _tmp240_ = NULL;
+                       ValaCodeContext* _tmp241_ = NULL;
+                       gboolean _tmp242_ = FALSE;
+                       gboolean _tmp243_ = FALSE;
+                       _tmp240_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp241_ = _tmp240_;
+                       _tmp242_ = vala_code_context_get_hide_internal (_tmp241_);
+                       _tmp243_ = _tmp242_;
+                       if (_tmp243_) {
+                               ValaClass* _tmp244_ = NULL;
+                               gboolean _tmp245_ = FALSE;
+                               _tmp244_ = cl;
+                               _tmp245_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp244_);
+                               _tmp239_ = _tmp245_;
+                       } else {
+                               _tmp239_ = FALSE;
+                       }
+                       if (_tmp239_) {
+                               ValaCCodeFunction* _tmp246_ = NULL;
+                               ValaCCodeFunction* _tmp247_ = NULL;
+                               _tmp246_ = function;
+                               vala_ccode_function_set_modifiers (_tmp246_, VALA_CCODE_MODIFIERS_INTERNAL);
+                               _tmp247_ = function;
+                               vala_ccode_function_set_attributes (_tmp247_, "G_GNUC_UNUSED");
+                       }
                }
-               _tmp225_ = decl_space;
-               _tmp226_ = function;
-               vala_ccode_file_add_function_declaration (_tmp225_, _tmp226_);
-               _tmp227_ = cl;
-               _tmp228_ = vala_ccode_base_module_get_ccode_take_value_function ((ValaCodeNode*) _tmp227_);
-               _tmp229_ = _tmp228_;
-               _tmp230_ = vala_ccode_function_new (_tmp229_, "void");
+               _tmp248_ = decl_space;
+               _tmp249_ = function;
+               vala_ccode_file_add_function_declaration (_tmp248_, _tmp249_);
+               _tmp250_ = cl;
+               _tmp251_ = vala_ccode_base_module_get_ccode_take_value_function ((ValaCodeNode*) _tmp250_);
+               _tmp252_ = _tmp251_;
+               _tmp253_ = vala_ccode_function_new (_tmp252_, "void");
                _vala_ccode_node_unref0 (function);
-               function = _tmp230_;
-               _g_free0 (_tmp229_);
-               _tmp231_ = function;
-               _tmp232_ = vala_ccode_parameter_new ("value", "GValue*");
-               _tmp233_ = _tmp232_;
-               vala_ccode_function_add_parameter (_tmp231_, _tmp233_);
-               _vala_ccode_node_unref0 (_tmp233_);
-               _tmp234_ = function;
-               _tmp235_ = vala_ccode_parameter_new ("v_object", "gpointer");
-               _tmp236_ = _tmp235_;
-               vala_ccode_function_add_parameter (_tmp234_, _tmp236_);
-               _vala_ccode_node_unref0 (_tmp236_);
-               _tmp237_ = cl;
-               _tmp238_ = vala_symbol_get_access ((ValaSymbol*) _tmp237_);
-               _tmp239_ = _tmp238_;
-               if (_tmp239_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-                       ValaCCodeFunction* _tmp240_ = NULL;
-                       ValaCCodeFunction* _tmp241_ = NULL;
-                       _tmp240_ = function;
-                       vala_ccode_function_set_modifiers (_tmp240_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp241_ = function;
-                       vala_ccode_function_set_attributes (_tmp241_, "G_GNUC_UNUSED");
+               function = _tmp253_;
+               _g_free0 (_tmp252_);
+               _tmp254_ = function;
+               _tmp255_ = vala_ccode_parameter_new ("value", "GValue*");
+               _tmp256_ = _tmp255_;
+               vala_ccode_function_add_parameter (_tmp254_, _tmp256_);
+               _vala_ccode_node_unref0 (_tmp256_);
+               _tmp257_ = function;
+               _tmp258_ = vala_ccode_parameter_new ("v_object", "gpointer");
+               _tmp259_ = _tmp258_;
+               vala_ccode_function_add_parameter (_tmp257_, _tmp259_);
+               _vala_ccode_node_unref0 (_tmp259_);
+               _tmp260_ = cl;
+               _tmp261_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp260_);
+               if (_tmp261_) {
+                       ValaCCodeFunction* _tmp262_ = NULL;
+                       ValaCCodeFunction* _tmp263_ = NULL;
+                       _tmp262_ = function;
+                       vala_ccode_function_set_modifiers (_tmp262_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp263_ = function;
+                       vala_ccode_function_set_attributes (_tmp263_, "G_GNUC_UNUSED");
+               } else {
+                       gboolean _tmp264_ = FALSE;
+                       ValaCodeContext* _tmp265_ = NULL;
+                       ValaCodeContext* _tmp266_ = NULL;
+                       gboolean _tmp267_ = FALSE;
+                       gboolean _tmp268_ = FALSE;
+                       _tmp265_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp266_ = _tmp265_;
+                       _tmp267_ = vala_code_context_get_hide_internal (_tmp266_);
+                       _tmp268_ = _tmp267_;
+                       if (_tmp268_) {
+                               ValaClass* _tmp269_ = NULL;
+                               gboolean _tmp270_ = FALSE;
+                               _tmp269_ = cl;
+                               _tmp270_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp269_);
+                               _tmp264_ = _tmp270_;
+                       } else {
+                               _tmp264_ = FALSE;
+                       }
+                       if (_tmp264_) {
+                               ValaCCodeFunction* _tmp271_ = NULL;
+                               _tmp271_ = function;
+                               vala_ccode_function_set_modifiers (_tmp271_, VALA_CCODE_MODIFIERS_INTERNAL);
+                       }
                }
-               _tmp242_ = decl_space;
-               _tmp243_ = function;
-               vala_ccode_file_add_function_declaration (_tmp242_, _tmp243_);
-               _tmp244_ = cl;
-               _tmp245_ = vala_ccode_base_module_get_ccode_get_value_function ((ValaCodeNode*) _tmp244_);
-               _tmp246_ = _tmp245_;
-               _tmp247_ = vala_ccode_function_new (_tmp246_, "gpointer");
+               _tmp272_ = decl_space;
+               _tmp273_ = function;
+               vala_ccode_file_add_function_declaration (_tmp272_, _tmp273_);
+               _tmp274_ = cl;
+               _tmp275_ = vala_ccode_base_module_get_ccode_get_value_function ((ValaCodeNode*) _tmp274_);
+               _tmp276_ = _tmp275_;
+               _tmp277_ = vala_ccode_function_new (_tmp276_, "gpointer");
                _vala_ccode_node_unref0 (function);
-               function = _tmp247_;
-               _g_free0 (_tmp246_);
-               _tmp248_ = function;
-               _tmp249_ = vala_ccode_parameter_new ("value", "const GValue*");
-               _tmp250_ = _tmp249_;
-               vala_ccode_function_add_parameter (_tmp248_, _tmp250_);
-               _vala_ccode_node_unref0 (_tmp250_);
-               _tmp251_ = cl;
-               _tmp252_ = vala_symbol_get_access ((ValaSymbol*) _tmp251_);
-               _tmp253_ = _tmp252_;
-               if (_tmp253_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-                       ValaCCodeFunction* _tmp254_ = NULL;
-                       ValaCCodeFunction* _tmp255_ = NULL;
-                       _tmp254_ = function;
-                       vala_ccode_function_set_modifiers (_tmp254_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp255_ = function;
-                       vala_ccode_function_set_attributes (_tmp255_, "G_GNUC_UNUSED");
+               function = _tmp277_;
+               _g_free0 (_tmp276_);
+               _tmp278_ = function;
+               _tmp279_ = vala_ccode_parameter_new ("value", "const GValue*");
+               _tmp280_ = _tmp279_;
+               vala_ccode_function_add_parameter (_tmp278_, _tmp280_);
+               _vala_ccode_node_unref0 (_tmp280_);
+               _tmp281_ = cl;
+               _tmp282_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp281_);
+               if (_tmp282_) {
+                       ValaCCodeFunction* _tmp283_ = NULL;
+                       ValaCCodeFunction* _tmp284_ = NULL;
+                       _tmp283_ = function;
+                       vala_ccode_function_set_modifiers (_tmp283_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp284_ = function;
+                       vala_ccode_function_set_attributes (_tmp284_, "G_GNUC_UNUSED");
+               } else {
+                       gboolean _tmp285_ = FALSE;
+                       ValaCodeContext* _tmp286_ = NULL;
+                       ValaCodeContext* _tmp287_ = NULL;
+                       gboolean _tmp288_ = FALSE;
+                       gboolean _tmp289_ = FALSE;
+                       _tmp286_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp287_ = _tmp286_;
+                       _tmp288_ = vala_code_context_get_hide_internal (_tmp287_);
+                       _tmp289_ = _tmp288_;
+                       if (_tmp289_) {
+                               ValaClass* _tmp290_ = NULL;
+                               gboolean _tmp291_ = FALSE;
+                               _tmp290_ = cl;
+                               _tmp291_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp290_);
+                               _tmp285_ = _tmp291_;
+                       } else {
+                               _tmp285_ = FALSE;
+                       }
+                       if (_tmp285_) {
+                               ValaCCodeFunction* _tmp292_ = NULL;
+                               ValaCCodeFunction* _tmp293_ = NULL;
+                               _tmp292_ = function;
+                               vala_ccode_function_set_modifiers (_tmp292_, VALA_CCODE_MODIFIERS_INTERNAL);
+                               _tmp293_ = function;
+                               vala_ccode_function_set_attributes (_tmp293_, "G_GNUC_UNUSED");
+                       }
                }
-               _tmp256_ = decl_space;
-               _tmp257_ = function;
-               vala_ccode_file_add_function_declaration (_tmp256_, _tmp257_);
+               _tmp294_ = decl_space;
+               _tmp295_ = function;
+               vala_ccode_file_add_function_declaration (_tmp294_, _tmp295_);
                _vala_ccode_node_unref0 (function);
                _g_free0 (function_name);
                _vala_ccode_node_unref0 (unref_fun);
                _vala_ccode_node_unref0 (ref_fun);
        } else {
-               gboolean _tmp258_ = FALSE;
-               gboolean _tmp259_ = FALSE;
-               _tmp259_ = is_gtypeinstance;
-               if (!_tmp259_) {
-                       gboolean _tmp260_ = FALSE;
-                       _tmp260_ = is_gsource;
-                       _tmp258_ = !_tmp260_;
+               gboolean _tmp296_ = FALSE;
+               gboolean _tmp297_ = FALSE;
+               _tmp297_ = is_gtypeinstance;
+               if (!_tmp297_) {
+                       gboolean _tmp298_ = FALSE;
+                       _tmp298_ = is_gsource;
+                       _tmp296_ = !_tmp298_;
                } else {
-                       _tmp258_ = FALSE;
+                       _tmp296_ = FALSE;
                }
-               if (_tmp258_) {
-                       ValaClass* _tmp261_ = NULL;
-                       ValaClass* _tmp262_ = NULL;
-                       ValaClass* _tmp263_ = NULL;
-                       _tmp261_ = cl;
-                       _tmp262_ = vala_class_get_base_class (_tmp261_);
-                       _tmp263_ = _tmp262_;
-                       if (_tmp263_ == NULL) {
+               if (_tmp296_) {
+                       ValaClass* _tmp299_ = NULL;
+                       ValaClass* _tmp300_ = NULL;
+                       ValaClass* _tmp301_ = NULL;
+                       _tmp299_ = cl;
+                       _tmp300_ = vala_class_get_base_class (_tmp299_);
+                       _tmp301_ = _tmp300_;
+                       if (_tmp301_ == NULL) {
                                ValaCCodeFunction* function = NULL;
-                               ValaClass* _tmp264_ = NULL;
-                               gchar* _tmp265_ = NULL;
-                               gchar* _tmp266_ = NULL;
-                               gchar* _tmp267_ = NULL;
-                               gchar* _tmp268_ = NULL;
-                               ValaCCodeFunction* _tmp269_ = NULL;
-                               ValaCCodeFunction* _tmp270_ = NULL;
-                               ValaClass* _tmp271_ = NULL;
-                               ValaSymbolAccessibility _tmp272_ = 0;
-                               ValaSymbolAccessibility _tmp273_ = 0;
-                               ValaCCodeFunction* _tmp275_ = NULL;
-                               ValaClass* _tmp276_ = NULL;
-                               gchar* _tmp277_ = NULL;
-                               gchar* _tmp278_ = NULL;
-                               gchar* _tmp279_ = NULL;
-                               gchar* _tmp280_ = NULL;
-                               ValaCCodeParameter* _tmp281_ = NULL;
-                               ValaCCodeParameter* _tmp282_ = NULL;
-                               ValaCCodeFile* _tmp283_ = NULL;
-                               ValaCCodeFunction* _tmp284_ = NULL;
-                               _tmp264_ = cl;
-                               _tmp265_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp264_);
-                               _tmp266_ = _tmp265_;
-                               _tmp267_ = g_strconcat (_tmp266_, "free", NULL);
-                               _tmp268_ = _tmp267_;
-                               _tmp269_ = vala_ccode_function_new (_tmp268_, "void");
-                               _tmp270_ = _tmp269_;
-                               _g_free0 (_tmp268_);
-                               _g_free0 (_tmp266_);
-                               function = _tmp270_;
-                               _tmp271_ = cl;
-                               _tmp272_ = vala_symbol_get_access ((ValaSymbol*) _tmp271_);
-                               _tmp273_ = _tmp272_;
-                               if (_tmp273_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-                                       ValaCCodeFunction* _tmp274_ = NULL;
-                                       _tmp274_ = function;
-                                       vala_ccode_function_set_modifiers (_tmp274_, VALA_CCODE_MODIFIERS_STATIC);
+                               ValaClass* _tmp302_ = NULL;
+                               gchar* _tmp303_ = NULL;
+                               gchar* _tmp304_ = NULL;
+                               gchar* _tmp305_ = NULL;
+                               gchar* _tmp306_ = NULL;
+                               ValaCCodeFunction* _tmp307_ = NULL;
+                               ValaCCodeFunction* _tmp308_ = NULL;
+                               ValaClass* _tmp309_ = NULL;
+                               gboolean _tmp310_ = FALSE;
+                               ValaCCodeFunction* _tmp320_ = NULL;
+                               ValaClass* _tmp321_ = NULL;
+                               gchar* _tmp322_ = NULL;
+                               gchar* _tmp323_ = NULL;
+                               gchar* _tmp324_ = NULL;
+                               gchar* _tmp325_ = NULL;
+                               ValaCCodeParameter* _tmp326_ = NULL;
+                               ValaCCodeParameter* _tmp327_ = NULL;
+                               ValaCCodeFile* _tmp328_ = NULL;
+                               ValaCCodeFunction* _tmp329_ = NULL;
+                               _tmp302_ = cl;
+                               _tmp303_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp302_);
+                               _tmp304_ = _tmp303_;
+                               _tmp305_ = g_strconcat (_tmp304_, "free", NULL);
+                               _tmp306_ = _tmp305_;
+                               _tmp307_ = vala_ccode_function_new (_tmp306_, "void");
+                               _tmp308_ = _tmp307_;
+                               _g_free0 (_tmp306_);
+                               _g_free0 (_tmp304_);
+                               function = _tmp308_;
+                               _tmp309_ = cl;
+                               _tmp310_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp309_);
+                               if (_tmp310_) {
+                                       ValaCCodeFunction* _tmp311_ = NULL;
+                                       _tmp311_ = function;
+                                       vala_ccode_function_set_modifiers (_tmp311_, VALA_CCODE_MODIFIERS_STATIC);
+                               } else {
+                                       gboolean _tmp312_ = FALSE;
+                                       ValaCodeContext* _tmp313_ = NULL;
+                                       ValaCodeContext* _tmp314_ = NULL;
+                                       gboolean _tmp315_ = FALSE;
+                                       gboolean _tmp316_ = FALSE;
+                                       _tmp313_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                                       _tmp314_ = _tmp313_;
+                                       _tmp315_ = vala_code_context_get_hide_internal (_tmp314_);
+                                       _tmp316_ = _tmp315_;
+                                       if (_tmp316_) {
+                                               ValaClass* _tmp317_ = NULL;
+                                               gboolean _tmp318_ = FALSE;
+                                               _tmp317_ = cl;
+                                               _tmp318_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp317_);
+                                               _tmp312_ = _tmp318_;
+                                       } else {
+                                               _tmp312_ = FALSE;
+                                       }
+                                       if (_tmp312_) {
+                                               ValaCCodeFunction* _tmp319_ = NULL;
+                                               _tmp319_ = function;
+                                               vala_ccode_function_set_modifiers (_tmp319_, VALA_CCODE_MODIFIERS_INTERNAL);
+                                       }
                                }
-                               _tmp275_ = function;
-                               _tmp276_ = cl;
-                               _tmp277_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp276_);
-                               _tmp278_ = _tmp277_;
-                               _tmp279_ = g_strconcat (_tmp278_, "*", NULL);
-                               _tmp280_ = _tmp279_;
-                               _tmp281_ = vala_ccode_parameter_new ("self", _tmp280_);
-                               _tmp282_ = _tmp281_;
-                               vala_ccode_function_add_parameter (_tmp275_, _tmp282_);
-                               _vala_ccode_node_unref0 (_tmp282_);
-                               _g_free0 (_tmp280_);
-                               _g_free0 (_tmp278_);
-                               _tmp283_ = decl_space;
-                               _tmp284_ = function;
-                               vala_ccode_file_add_function_declaration (_tmp283_, _tmp284_);
+                               _tmp320_ = function;
+                               _tmp321_ = cl;
+                               _tmp322_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp321_);
+                               _tmp323_ = _tmp322_;
+                               _tmp324_ = g_strconcat (_tmp323_, "*", NULL);
+                               _tmp325_ = _tmp324_;
+                               _tmp326_ = vala_ccode_parameter_new ("self", _tmp325_);
+                               _tmp327_ = _tmp326_;
+                               vala_ccode_function_add_parameter (_tmp320_, _tmp327_);
+                               _vala_ccode_node_unref0 (_tmp327_);
+                               _g_free0 (_tmp325_);
+                               _g_free0 (_tmp323_);
+                               _tmp328_ = decl_space;
+                               _tmp329_ = function;
+                               vala_ccode_file_add_function_declaration (_tmp328_, _tmp329_);
                                _vala_ccode_node_unref0 (function);
                        }
                }
        }
-       _tmp285_ = is_gtypeinstance;
-       if (_tmp285_) {
-               ValaCCodeFile* _tmp286_ = NULL;
-               ValaClass* _tmp287_ = NULL;
-               gchar* _tmp288_ = NULL;
-               gchar* _tmp289_ = NULL;
-               gchar* _tmp290_ = NULL;
-               gchar* _tmp291_ = NULL;
-               ValaClass* _tmp292_ = NULL;
-               gchar* _tmp293_ = NULL;
-               gchar* _tmp294_ = NULL;
-               gchar* _tmp295_ = NULL;
-               gchar* _tmp296_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp297_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp298_ = NULL;
-               ValaCCodeTypeDefinition* _tmp299_ = NULL;
-               ValaCCodeTypeDefinition* _tmp300_ = NULL;
+       _tmp330_ = is_gtypeinstance;
+       if (_tmp330_) {
+               ValaCCodeFile* _tmp331_ = NULL;
+               ValaClass* _tmp332_ = NULL;
+               gchar* _tmp333_ = NULL;
+               gchar* _tmp334_ = NULL;
+               gchar* _tmp335_ = NULL;
+               gchar* _tmp336_ = NULL;
+               ValaClass* _tmp337_ = NULL;
+               gchar* _tmp338_ = NULL;
+               gchar* _tmp339_ = NULL;
+               gchar* _tmp340_ = NULL;
+               gchar* _tmp341_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp342_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp343_ = NULL;
+               ValaCCodeTypeDefinition* _tmp344_ = NULL;
+               ValaCCodeTypeDefinition* _tmp345_ = NULL;
                ValaClassRegisterFunction* type_fun = NULL;
-               ValaClass* _tmp301_ = NULL;
-               ValaCodeContext* _tmp302_ = NULL;
-               ValaCodeContext* _tmp303_ = NULL;
-               ValaClassRegisterFunction* _tmp304_ = NULL;
-               ValaClassRegisterFunction* _tmp305_ = NULL;
-               gboolean _tmp306_ = FALSE;
-               ValaCCodeFile* _tmp307_ = NULL;
-               ValaClassRegisterFunction* _tmp308_ = NULL;
-               ValaCCodeFragment* _tmp309_ = NULL;
-               ValaCCodeFragment* _tmp310_ = NULL;
-               _tmp286_ = decl_space;
-               _tmp287_ = cl;
-               _tmp288_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp287_);
-               _tmp289_ = _tmp288_;
-               _tmp290_ = g_strdup_printf ("struct _%sClass", _tmp289_);
-               _tmp291_ = _tmp290_;
-               _tmp292_ = cl;
-               _tmp293_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp292_);
-               _tmp294_ = _tmp293_;
-               _tmp295_ = g_strdup_printf ("%sClass", _tmp294_);
-               _tmp296_ = _tmp295_;
-               _tmp297_ = vala_ccode_variable_declarator_new (_tmp296_, NULL, NULL);
-               _tmp298_ = _tmp297_;
-               _tmp299_ = vala_ccode_type_definition_new (_tmp291_, (ValaCCodeDeclarator*) _tmp298_);
-               _tmp300_ = _tmp299_;
-               vala_ccode_file_add_type_declaration (_tmp286_, (ValaCCodeNode*) _tmp300_);
-               _vala_ccode_node_unref0 (_tmp300_);
-               _vala_ccode_node_unref0 (_tmp298_);
-               _g_free0 (_tmp296_);
-               _g_free0 (_tmp294_);
-               _g_free0 (_tmp291_);
-               _g_free0 (_tmp289_);
-               _tmp301_ = cl;
-               _tmp302_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-               _tmp303_ = _tmp302_;
-               _tmp304_ = vala_class_register_function_new (_tmp301_, _tmp303_);
-               type_fun = _tmp304_;
-               _tmp305_ = type_fun;
-               _tmp306_ = ((ValaCCodeBaseModule*) self)->in_plugin;
-               vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp305_, _tmp306_, TRUE);
-               _tmp307_ = decl_space;
-               _tmp308_ = type_fun;
-               _tmp309_ = vala_typeregister_function_get_declaration ((ValaTypeRegisterFunction*) _tmp308_);
-               _tmp310_ = _tmp309_;
-               vala_ccode_file_add_type_member_declaration (_tmp307_, (ValaCCodeNode*) _tmp310_);
-               _vala_ccode_node_unref0 (_tmp310_);
+               ValaClass* _tmp346_ = NULL;
+               ValaCodeContext* _tmp347_ = NULL;
+               ValaCodeContext* _tmp348_ = NULL;
+               ValaClassRegisterFunction* _tmp349_ = NULL;
+               ValaClassRegisterFunction* _tmp350_ = NULL;
+               gboolean _tmp351_ = FALSE;
+               ValaCCodeFile* _tmp352_ = NULL;
+               ValaClassRegisterFunction* _tmp353_ = NULL;
+               ValaCCodeFragment* _tmp354_ = NULL;
+               ValaCCodeFragment* _tmp355_ = NULL;
+               _tmp331_ = decl_space;
+               _tmp332_ = cl;
+               _tmp333_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp332_);
+               _tmp334_ = _tmp333_;
+               _tmp335_ = g_strdup_printf ("struct _%sClass", _tmp334_);
+               _tmp336_ = _tmp335_;
+               _tmp337_ = cl;
+               _tmp338_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp337_);
+               _tmp339_ = _tmp338_;
+               _tmp340_ = g_strdup_printf ("%sClass", _tmp339_);
+               _tmp341_ = _tmp340_;
+               _tmp342_ = vala_ccode_variable_declarator_new (_tmp341_, NULL, NULL);
+               _tmp343_ = _tmp342_;
+               _tmp344_ = vala_ccode_type_definition_new (_tmp336_, (ValaCCodeDeclarator*) _tmp343_);
+               _tmp345_ = _tmp344_;
+               vala_ccode_file_add_type_declaration (_tmp331_, (ValaCCodeNode*) _tmp345_);
+               _vala_ccode_node_unref0 (_tmp345_);
+               _vala_ccode_node_unref0 (_tmp343_);
+               _g_free0 (_tmp341_);
+               _g_free0 (_tmp339_);
+               _g_free0 (_tmp336_);
+               _g_free0 (_tmp334_);
+               _tmp346_ = cl;
+               _tmp347_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp348_ = _tmp347_;
+               _tmp349_ = vala_class_register_function_new (_tmp346_, _tmp348_);
+               type_fun = _tmp349_;
+               _tmp350_ = type_fun;
+               _tmp351_ = ((ValaCCodeBaseModule*) self)->in_plugin;
+               vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp350_, _tmp351_, TRUE);
+               _tmp352_ = decl_space;
+               _tmp353_ = type_fun;
+               _tmp354_ = vala_typeregister_function_get_declaration ((ValaTypeRegisterFunction*) _tmp353_);
+               _tmp355_ = _tmp354_;
+               vala_ccode_file_add_type_member_declaration (_tmp352_, (ValaCCodeNode*) _tmp355_);
+               _vala_ccode_node_unref0 (_tmp355_);
                _vala_typeregister_function_unref0 (type_fun);
        }
 }
@@ -2701,8 +2843,8 @@ static void vala_gtype_module_real_generate_class_struct_declaration (ValaCCodeB
                                        ValaField* _tmp378_ = NULL;
                                        ValaDataType* _tmp379_ = NULL;
                                        ValaDataType* _tmp380_ = NULL;
-                                       gchar* _tmp381_ = NULL;
-                                       gchar* _tmp382_ = NULL;
+                                       ValaCCodeDeclaratorSuffix* _tmp381_ = NULL;
+                                       ValaCCodeDeclaratorSuffix* _tmp382_ = NULL;
                                        gboolean _tmp383_ = FALSE;
                                        ValaField* _tmp384_ = NULL;
                                        ValaDataType* _tmp385_ = NULL;
@@ -2720,10 +2862,10 @@ static void vala_gtype_module_real_generate_class_struct_declaration (ValaCCodeB
                                        _tmp378_ = f;
                                        _tmp379_ = vala_variable_get_variable_type ((ValaVariable*) _tmp378_);
                                        _tmp380_ = _tmp379_;
-                                       _tmp381_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp380_);
+                                       _tmp381_ = vala_ccode_base_module_get_ccode_declarator_suffix ((ValaCCodeBaseModule*) self, _tmp380_);
                                        _tmp382_ = _tmp381_;
                                        vala_ccode_struct_add_field (_tmp373_, _tmp374_, _tmp377_, _tmp382_);
-                                       _g_free0 (_tmp382_);
+                                       _vala_ccode_declarator_suffix_unref0 (_tmp382_);
                                        _g_free0 (_tmp377_);
                                        _tmp384_ = f;
                                        _tmp385_ = vala_variable_get_variable_type ((ValaVariable*) _tmp384_);
@@ -3394,8 +3536,8 @@ static void vala_gtype_module_generate_class_private_declaration (ValaGTypeModul
                                        ValaField* _tmp96_ = NULL;
                                        ValaDataType* _tmp97_ = NULL;
                                        ValaDataType* _tmp98_ = NULL;
-                                       gchar* _tmp99_ = NULL;
-                                       gchar* _tmp100_ = NULL;
+                                       ValaCCodeDeclaratorSuffix* _tmp99_ = NULL;
+                                       ValaCCodeDeclaratorSuffix* _tmp100_ = NULL;
                                        gboolean _tmp101_ = FALSE;
                                        ValaField* _tmp102_ = NULL;
                                        ValaDataType* _tmp103_ = NULL;
@@ -3413,10 +3555,10 @@ static void vala_gtype_module_generate_class_private_declaration (ValaGTypeModul
                                        _tmp96_ = f;
                                        _tmp97_ = vala_variable_get_variable_type ((ValaVariable*) _tmp96_);
                                        _tmp98_ = _tmp97_;
-                                       _tmp99_ = vala_ccode_base_module_get_ccode_declarator_suffix (_tmp98_);
+                                       _tmp99_ = vala_ccode_base_module_get_ccode_declarator_suffix ((ValaCCodeBaseModule*) self, _tmp98_);
                                        _tmp100_ = _tmp99_;
                                        vala_ccode_struct_add_field (_tmp91_, _tmp92_, _tmp95_, _tmp100_);
-                                       _g_free0 (_tmp100_);
+                                       _vala_ccode_declarator_suffix_unref0 (_tmp100_);
                                        _g_free0 (_tmp95_);
                                        _tmp102_ = f;
                                        _tmp103_ = vala_variable_get_variable_type ((ValaVariable*) _tmp102_);
@@ -3844,16 +3986,16 @@ static void vala_gtype_module_generate_class_private_declaration (ValaGTypeModul
                ValaClass* _tmp253_ = NULL;
                gboolean _tmp254_ = FALSE;
                gboolean _tmp255_ = FALSE;
-               gboolean _tmp289_ = FALSE;
-               ValaClass* _tmp290_ = NULL;
-               gboolean _tmp291_ = FALSE;
-               gboolean _tmp292_ = FALSE;
-               gboolean _tmp317_ = FALSE;
-               ValaClass* _tmp318_ = NULL;
-               gboolean _tmp319_ = FALSE;
-               gboolean _tmp320_ = FALSE;
-               ValaCCodeFile* _tmp350_ = NULL;
-               ValaCCodeEnum* _tmp351_ = NULL;
+               gboolean _tmp272_ = FALSE;
+               ValaClass* _tmp273_ = NULL;
+               gboolean _tmp274_ = FALSE;
+               gboolean _tmp275_ = FALSE;
+               gboolean _tmp300_ = FALSE;
+               ValaClass* _tmp301_ = NULL;
+               gboolean _tmp302_ = FALSE;
+               gboolean _tmp303_ = FALSE;
+               ValaCCodeFile* _tmp324_ = NULL;
+               ValaCCodeEnum* _tmp325_ = NULL;
                _tmp253_ = cl;
                _tmp254_ = vala_class_get_has_class_private_fields (_tmp253_);
                _tmp255_ = _tmp254_;
@@ -3880,9 +4022,6 @@ static void vala_gtype_module_generate_class_private_declaration (ValaGTypeModul
                        ValaCCodeVariableDeclarator* _tmp269_ = NULL;
                        ValaCCodeTypeDefinition* _tmp270_ = NULL;
                        ValaCCodeTypeDefinition* _tmp271_ = NULL;
-                       ValaCodeContext* _tmp272_ = NULL;
-                       ValaCodeContext* _tmp273_ = NULL;
-                       gboolean _tmp274_ = FALSE;
                        _tmp257_ = decl_space;
                        _tmp258_ = type_priv_struct;
                        _tmp259_ = vala_ccode_struct_get_name (_tmp258_);
@@ -3904,224 +4043,154 @@ static void vala_gtype_module_generate_class_private_declaration (ValaGTypeModul
                        _g_free0 (_tmp267_);
                        _g_free0 (_tmp265_);
                        _g_free0 (_tmp262_);
-                       _tmp272_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-                       _tmp273_ = _tmp272_;
-                       _tmp274_ = vala_code_context_require_glib_version (_tmp273_, 2, 24);
-                       if (!_tmp274_) {
-                               ValaCCodeDeclaration* _cdecl_ = NULL;
-                               ValaCCodeDeclaration* _tmp275_ = NULL;
-                               ValaCCodeDeclaration* _tmp276_ = NULL;
-                               ValaClass* _tmp277_ = NULL;
-                               gchar* _tmp278_ = NULL;
-                               gchar* _tmp279_ = NULL;
-                               gchar* _tmp280_ = NULL;
-                               gchar* _tmp281_ = NULL;
-                               ValaCCodeConstant* _tmp282_ = NULL;
-                               ValaCCodeConstant* _tmp283_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp284_ = NULL;
-                               ValaCCodeVariableDeclarator* _tmp285_ = NULL;
-                               ValaCCodeDeclaration* _tmp286_ = NULL;
-                               ValaCCodeFile* _tmp287_ = NULL;
-                               ValaCCodeDeclaration* _tmp288_ = NULL;
-                               _tmp275_ = vala_ccode_declaration_new ("GQuark");
-                               _cdecl_ = _tmp275_;
-                               _tmp276_ = _cdecl_;
-                               _tmp277_ = cl;
-                               _tmp278_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp277_, NULL);
-                               _tmp279_ = _tmp278_;
-                               _tmp280_ = g_strdup_printf ("_vala_%s_class_private_quark", _tmp279_);
-                               _tmp281_ = _tmp280_;
-                               _tmp282_ = vala_ccode_constant_new ("0");
-                               _tmp283_ = _tmp282_;
-                               _tmp284_ = vala_ccode_variable_declarator_new (_tmp281_, (ValaCCodeExpression*) _tmp283_, NULL);
-                               _tmp285_ = _tmp284_;
-                               vala_ccode_declaration_add_declarator (_tmp276_, (ValaCCodeDeclarator*) _tmp285_);
-                               _vala_ccode_node_unref0 (_tmp285_);
-                               _vala_ccode_node_unref0 (_tmp283_);
-                               _g_free0 (_tmp281_);
-                               _g_free0 (_tmp279_);
-                               _tmp286_ = _cdecl_;
-                               vala_ccode_declaration_set_modifiers (_tmp286_, VALA_CCODE_MODIFIERS_STATIC);
-                               _tmp287_ = decl_space;
-                               _tmp288_ = _cdecl_;
-                               vala_ccode_file_add_type_declaration (_tmp287_, (ValaCCodeNode*) _tmp288_);
-                               _vala_ccode_node_unref0 (_cdecl_);
-                       }
                }
-               _tmp290_ = cl;
-               _tmp291_ = vala_class_get_has_private_fields (_tmp290_);
-               _tmp292_ = _tmp291_;
-               if (_tmp292_) {
-                       _tmp289_ = TRUE;
+               _tmp273_ = cl;
+               _tmp274_ = vala_class_get_has_private_fields (_tmp273_);
+               _tmp275_ = _tmp274_;
+               if (_tmp275_) {
+                       _tmp272_ = TRUE;
                } else {
-                       ValaClass* _tmp293_ = NULL;
-                       ValaList* _tmp294_ = NULL;
-                       ValaList* _tmp295_ = NULL;
-                       gint _tmp296_ = 0;
-                       gint _tmp297_ = 0;
-                       _tmp293_ = cl;
-                       _tmp294_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp293_);
-                       _tmp295_ = _tmp294_;
-                       _tmp296_ = vala_collection_get_size ((ValaCollection*) _tmp295_);
-                       _tmp297_ = _tmp296_;
-                       _tmp289_ = _tmp297_ > 0;
-                       _vala_iterable_unref0 (_tmp295_);
+                       ValaClass* _tmp276_ = NULL;
+                       ValaList* _tmp277_ = NULL;
+                       ValaList* _tmp278_ = NULL;
+                       gint _tmp279_ = 0;
+                       gint _tmp280_ = 0;
+                       _tmp276_ = cl;
+                       _tmp277_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp276_);
+                       _tmp278_ = _tmp277_;
+                       _tmp279_ = vala_collection_get_size ((ValaCollection*) _tmp278_);
+                       _tmp280_ = _tmp279_;
+                       _tmp272_ = _tmp280_ > 0;
+                       _vala_iterable_unref0 (_tmp278_);
                }
-               if (_tmp289_) {
-                       ValaCCodeFile* _tmp298_ = NULL;
-                       ValaCCodeStruct* _tmp299_ = NULL;
+               if (_tmp272_) {
+                       ValaCCodeFile* _tmp281_ = NULL;
+                       ValaCCodeStruct* _tmp282_ = NULL;
                        gchar* macro = NULL;
-                       ValaClass* _tmp300_ = NULL;
-                       gchar* _tmp301_ = NULL;
-                       gchar* _tmp302_ = NULL;
-                       ValaClass* _tmp303_ = NULL;
-                       gchar* _tmp304_ = NULL;
-                       gchar* _tmp305_ = NULL;
-                       gchar* _tmp306_ = NULL;
-                       gchar* _tmp307_ = NULL;
-                       ValaCCodeFile* _tmp308_ = NULL;
-                       ValaClass* _tmp309_ = NULL;
-                       gchar* _tmp310_ = NULL;
-                       gchar* _tmp311_ = NULL;
-                       gchar* _tmp312_ = NULL;
-                       gchar* _tmp313_ = NULL;
-                       const gchar* _tmp314_ = NULL;
-                       ValaCCodeMacroReplacement* _tmp315_ = NULL;
-                       ValaCCodeMacroReplacement* _tmp316_ = NULL;
-                       _tmp298_ = decl_space;
-                       _tmp299_ = instance_priv_struct;
-                       vala_ccode_file_add_type_definition (_tmp298_, (ValaCCodeNode*) _tmp299_);
-                       _tmp300_ = cl;
-                       _tmp301_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp300_);
-                       _tmp302_ = _tmp301_;
-                       _tmp303_ = cl;
-                       _tmp304_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp303_);
-                       _tmp305_ = _tmp304_;
-                       _tmp306_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_PRIVATE ((o), %s, %sPrivate))", _tmp302_, _tmp305_);
-                       _tmp307_ = _tmp306_;
-                       _g_free0 (_tmp305_);
-                       _g_free0 (_tmp302_);
-                       macro = _tmp307_;
-                       _tmp308_ = decl_space;
-                       _tmp309_ = cl;
-                       _tmp310_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp309_, NULL);
-                       _tmp311_ = _tmp310_;
-                       _tmp312_ = g_strdup_printf ("%s_GET_PRIVATE(o)", _tmp311_);
-                       _tmp313_ = _tmp312_;
-                       _tmp314_ = macro;
-                       _tmp315_ = vala_ccode_macro_replacement_new (_tmp313_, _tmp314_);
-                       _tmp316_ = _tmp315_;
-                       vala_ccode_file_add_type_member_declaration (_tmp308_, (ValaCCodeNode*) _tmp316_);
-                       _vala_ccode_node_unref0 (_tmp316_);
-                       _g_free0 (_tmp313_);
-                       _g_free0 (_tmp311_);
+                       ValaClass* _tmp283_ = NULL;
+                       gchar* _tmp284_ = NULL;
+                       gchar* _tmp285_ = NULL;
+                       ValaClass* _tmp286_ = NULL;
+                       gchar* _tmp287_ = NULL;
+                       gchar* _tmp288_ = NULL;
+                       gchar* _tmp289_ = NULL;
+                       gchar* _tmp290_ = NULL;
+                       ValaCCodeFile* _tmp291_ = NULL;
+                       ValaClass* _tmp292_ = NULL;
+                       gchar* _tmp293_ = NULL;
+                       gchar* _tmp294_ = NULL;
+                       gchar* _tmp295_ = NULL;
+                       gchar* _tmp296_ = NULL;
+                       const gchar* _tmp297_ = NULL;
+                       ValaCCodeMacroReplacement* _tmp298_ = NULL;
+                       ValaCCodeMacroReplacement* _tmp299_ = NULL;
+                       _tmp281_ = decl_space;
+                       _tmp282_ = instance_priv_struct;
+                       vala_ccode_file_add_type_definition (_tmp281_, (ValaCCodeNode*) _tmp282_);
+                       _tmp283_ = cl;
+                       _tmp284_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp283_);
+                       _tmp285_ = _tmp284_;
+                       _tmp286_ = cl;
+                       _tmp287_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp286_);
+                       _tmp288_ = _tmp287_;
+                       _tmp289_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_PRIVATE ((o), %s, %sPrivate))", _tmp285_, _tmp288_);
+                       _tmp290_ = _tmp289_;
+                       _g_free0 (_tmp288_);
+                       _g_free0 (_tmp285_);
+                       macro = _tmp290_;
+                       _tmp291_ = decl_space;
+                       _tmp292_ = cl;
+                       _tmp293_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp292_, NULL);
+                       _tmp294_ = _tmp293_;
+                       _tmp295_ = g_strdup_printf ("%s_GET_PRIVATE(o)", _tmp294_);
+                       _tmp296_ = _tmp295_;
+                       _tmp297_ = macro;
+                       _tmp298_ = vala_ccode_macro_replacement_new (_tmp296_, _tmp297_);
+                       _tmp299_ = _tmp298_;
+                       vala_ccode_file_add_type_member_declaration (_tmp291_, (ValaCCodeNode*) _tmp299_);
+                       _vala_ccode_node_unref0 (_tmp299_);
+                       _g_free0 (_tmp296_);
+                       _g_free0 (_tmp294_);
                        _g_free0 (macro);
                }
-               _tmp318_ = cl;
-               _tmp319_ = vala_class_get_has_class_private_fields (_tmp318_);
-               _tmp320_ = _tmp319_;
-               if (_tmp320_) {
-                       _tmp317_ = TRUE;
+               _tmp301_ = cl;
+               _tmp302_ = vala_class_get_has_class_private_fields (_tmp301_);
+               _tmp303_ = _tmp302_;
+               if (_tmp303_) {
+                       _tmp300_ = TRUE;
                } else {
-                       gboolean _tmp321_ = FALSE;
-                       _tmp321_ = has_class_locks;
-                       _tmp317_ = _tmp321_;
+                       gboolean _tmp304_ = FALSE;
+                       _tmp304_ = has_class_locks;
+                       _tmp300_ = _tmp304_;
                }
-               if (_tmp317_) {
-                       ValaCCodeFile* _tmp322_ = NULL;
-                       ValaCCodeStruct* _tmp323_ = NULL;
+               if (_tmp300_) {
+                       ValaCCodeFile* _tmp305_ = NULL;
+                       ValaCCodeStruct* _tmp306_ = NULL;
                        gchar* macro = NULL;
-                       ValaCodeContext* _tmp324_ = NULL;
-                       ValaCodeContext* _tmp325_ = NULL;
-                       gboolean _tmp326_ = FALSE;
-                       ValaCCodeFile* _tmp341_ = NULL;
-                       ValaClass* _tmp342_ = NULL;
-                       gchar* _tmp343_ = NULL;
-                       gchar* _tmp344_ = NULL;
-                       gchar* _tmp345_ = NULL;
-                       gchar* _tmp346_ = NULL;
-                       const gchar* _tmp347_ = NULL;
-                       ValaCCodeMacroReplacement* _tmp348_ = NULL;
-                       ValaCCodeMacroReplacement* _tmp349_ = NULL;
-                       _tmp322_ = decl_space;
-                       _tmp323_ = type_priv_struct;
-                       vala_ccode_file_add_type_member_declaration (_tmp322_, (ValaCCodeNode*) _tmp323_);
-                       _tmp324_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-                       _tmp325_ = _tmp324_;
-                       _tmp326_ = vala_code_context_require_glib_version (_tmp325_, 2, 24);
-                       if (_tmp326_) {
-                               ValaClass* _tmp327_ = NULL;
-                               gchar* _tmp328_ = NULL;
-                               gchar* _tmp329_ = NULL;
-                               ValaClass* _tmp330_ = NULL;
-                               gchar* _tmp331_ = NULL;
-                               gchar* _tmp332_ = NULL;
-                               gchar* _tmp333_ = NULL;
-                               _tmp327_ = cl;
-                               _tmp328_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp327_);
-                               _tmp329_ = _tmp328_;
-                               _tmp330_ = cl;
-                               _tmp331_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp330_);
-                               _tmp332_ = _tmp331_;
-                               _tmp333_ = g_strdup_printf ("(G_TYPE_CLASS_GET_PRIVATE (klass, %s, %sClassPrivate))", _tmp329_, _tmp332_);
-                               _g_free0 (macro);
-                               macro = _tmp333_;
-                               _g_free0 (_tmp332_);
-                               _g_free0 (_tmp329_);
-                       } else {
-                               ValaClass* _tmp334_ = NULL;
-                               gchar* _tmp335_ = NULL;
-                               gchar* _tmp336_ = NULL;
-                               ValaClass* _tmp337_ = NULL;
-                               gchar* _tmp338_ = NULL;
-                               gchar* _tmp339_ = NULL;
-                               gchar* _tmp340_ = NULL;
-                               _tmp334_ = cl;
-                               _tmp335_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp334_);
-                               _tmp336_ = _tmp335_;
-                               _tmp337_ = cl;
-                               _tmp338_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp337_, NULL);
-                               _tmp339_ = _tmp338_;
-                               _tmp340_ = g_strdup_printf ("((%sClassPrivate *) g_type_get_qdata (G_TYPE_FROM_CLASS (klass), _vala" \
-"_%s_class_private_quark))", _tmp336_, _tmp339_);
-                               _g_free0 (macro);
-                               macro = _tmp340_;
-                               _g_free0 (_tmp339_);
-                               _g_free0 (_tmp336_);
-                       }
-                       _tmp341_ = decl_space;
-                       _tmp342_ = cl;
-                       _tmp343_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp342_, NULL);
-                       _tmp344_ = _tmp343_;
-                       _tmp345_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE(klass)", _tmp344_);
-                       _tmp346_ = _tmp345_;
-                       _tmp347_ = macro;
-                       _tmp348_ = vala_ccode_macro_replacement_new (_tmp346_, _tmp347_);
-                       _tmp349_ = _tmp348_;
-                       vala_ccode_file_add_type_member_declaration (_tmp341_, (ValaCCodeNode*) _tmp349_);
-                       _vala_ccode_node_unref0 (_tmp349_);
-                       _g_free0 (_tmp346_);
-                       _g_free0 (_tmp344_);
+                       ValaClass* _tmp307_ = NULL;
+                       gchar* _tmp308_ = NULL;
+                       gchar* _tmp309_ = NULL;
+                       ValaClass* _tmp310_ = NULL;
+                       gchar* _tmp311_ = NULL;
+                       gchar* _tmp312_ = NULL;
+                       gchar* _tmp313_ = NULL;
+                       gchar* _tmp314_ = NULL;
+                       ValaCCodeFile* _tmp315_ = NULL;
+                       ValaClass* _tmp316_ = NULL;
+                       gchar* _tmp317_ = NULL;
+                       gchar* _tmp318_ = NULL;
+                       gchar* _tmp319_ = NULL;
+                       gchar* _tmp320_ = NULL;
+                       const gchar* _tmp321_ = NULL;
+                       ValaCCodeMacroReplacement* _tmp322_ = NULL;
+                       ValaCCodeMacroReplacement* _tmp323_ = NULL;
+                       _tmp305_ = decl_space;
+                       _tmp306_ = type_priv_struct;
+                       vala_ccode_file_add_type_member_declaration (_tmp305_, (ValaCCodeNode*) _tmp306_);
+                       _tmp307_ = cl;
+                       _tmp308_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp307_);
+                       _tmp309_ = _tmp308_;
+                       _tmp310_ = cl;
+                       _tmp311_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp310_);
+                       _tmp312_ = _tmp311_;
+                       _tmp313_ = g_strdup_printf ("(G_TYPE_CLASS_GET_PRIVATE (klass, %s, %sClassPrivate))", _tmp309_, _tmp312_);
+                       _tmp314_ = _tmp313_;
+                       _g_free0 (_tmp312_);
+                       _g_free0 (_tmp309_);
+                       macro = _tmp314_;
+                       _tmp315_ = decl_space;
+                       _tmp316_ = cl;
+                       _tmp317_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp316_, NULL);
+                       _tmp318_ = _tmp317_;
+                       _tmp319_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE(klass)", _tmp318_);
+                       _tmp320_ = _tmp319_;
+                       _tmp321_ = macro;
+                       _tmp322_ = vala_ccode_macro_replacement_new (_tmp320_, _tmp321_);
+                       _tmp323_ = _tmp322_;
+                       vala_ccode_file_add_type_member_declaration (_tmp315_, (ValaCCodeNode*) _tmp323_);
+                       _vala_ccode_node_unref0 (_tmp323_);
+                       _g_free0 (_tmp320_);
+                       _g_free0 (_tmp318_);
                        _g_free0 (macro);
                }
-               _tmp350_ = decl_space;
-               _tmp351_ = ((ValaCCodeBaseModule*) self)->prop_enum;
-               vala_ccode_file_add_type_member_declaration (_tmp350_, (ValaCCodeNode*) _tmp351_);
+               _tmp324_ = decl_space;
+               _tmp325_ = ((ValaCCodeBaseModule*) self)->prop_enum;
+               vala_ccode_file_add_type_member_declaration (_tmp324_, (ValaCCodeNode*) _tmp325_);
        } else {
-               ValaClass* _tmp352_ = NULL;
-               gboolean _tmp353_ = FALSE;
-               gboolean _tmp354_ = FALSE;
-               _tmp352_ = cl;
-               _tmp353_ = vala_class_get_has_private_fields (_tmp352_);
-               _tmp354_ = _tmp353_;
-               if (_tmp354_) {
-                       ValaClass* _tmp355_ = NULL;
-                       ValaSourceReference* _tmp356_ = NULL;
-                       ValaSourceReference* _tmp357_ = NULL;
-                       _tmp355_ = cl;
-                       _tmp356_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp355_);
-                       _tmp357_ = _tmp356_;
-                       vala_report_error (_tmp357_, "Private fields not supported in compact classes");
+               ValaClass* _tmp326_ = NULL;
+               gboolean _tmp327_ = FALSE;
+               gboolean _tmp328_ = FALSE;
+               _tmp326_ = cl;
+               _tmp327_ = vala_class_get_has_private_fields (_tmp326_);
+               _tmp328_ = _tmp327_;
+               if (_tmp328_) {
+                       ValaClass* _tmp329_ = NULL;
+                       ValaSourceReference* _tmp330_ = NULL;
+                       ValaSourceReference* _tmp331_ = NULL;
+                       _tmp329_ = cl;
+                       _tmp330_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp329_);
+                       _tmp331_ = _tmp330_;
+                       vala_report_error (_tmp331_, "Private fields not supported in compact classes");
                }
        }
        _vala_ccode_node_unref0 (type_priv_struct);
@@ -4216,10 +4285,12 @@ static void vala_gtype_module_real_visit_class (ValaCodeVisitor* base, ValaClass
        gboolean _tmp78_ = FALSE;
        ValaClass* _tmp95_ = NULL;
        gboolean _tmp96_ = FALSE;
-       ValaCCodeStruct* _tmp389_ = NULL;
-       ValaCCodeStruct* _tmp390_ = NULL;
-       ValaCCodeEnum* _tmp391_ = NULL;
-       ValaCCodeEnum* _tmp392_ = NULL;
+       ValaCCodeStruct* _tmp387_ = NULL;
+       ValaCCodeStruct* _tmp388_ = NULL;
+       ValaCCodeEnum* _tmp389_ = NULL;
+       ValaCCodeEnum* _tmp390_ = NULL;
+       ValaCCodeBaseModuleEmitContext* _tmp391_ = NULL;
+       ValaCCodeBaseModuleEmitContext* _tmp392_ = NULL;
        ValaCCodeBaseModuleEmitContext* _tmp393_ = NULL;
        ValaCCodeBaseModuleEmitContext* _tmp394_ = NULL;
        ValaCCodeBaseModuleEmitContext* _tmp395_ = NULL;
@@ -4230,8 +4301,6 @@ static void vala_gtype_module_real_visit_class (ValaCodeVisitor* base, ValaClass
        ValaCCodeBaseModuleEmitContext* _tmp400_ = NULL;
        ValaCCodeBaseModuleEmitContext* _tmp401_ = NULL;
        ValaCCodeBaseModuleEmitContext* _tmp402_ = NULL;
-       ValaCCodeBaseModuleEmitContext* _tmp403_ = NULL;
-       ValaCCodeBaseModuleEmitContext* _tmp404_ = NULL;
        self = (ValaGTypeModule*) base;
        g_return_if_fail (cl != NULL);
        _tmp0_ = cl;
@@ -4442,42 +4511,40 @@ static void vala_gtype_module_real_visit_class (ValaCodeVisitor* base, ValaClass
        _tmp96_ = is_gtypeinstance;
        if (_tmp96_) {
                gboolean _tmp97_ = FALSE;
-               gboolean _tmp154_ = FALSE;
-               ValaClass* _tmp155_ = NULL;
+               ValaClass* _tmp154_ = NULL;
+               ValaConstructor* _tmp155_ = NULL;
                ValaConstructor* _tmp156_ = NULL;
-               ValaConstructor* _tmp157_ = NULL;
-               ValaClass* _tmp166_ = NULL;
-               gboolean _tmp167_ = FALSE;
-               ValaClass* _tmp168_ = NULL;
-               ValaDestructor* _tmp169_ = NULL;
-               ValaDestructor* _tmp170_ = NULL;
-               ValaClass* _tmp179_ = NULL;
-               ValaDestructor* _tmp180_ = NULL;
-               ValaDestructor* _tmp181_ = NULL;
-               ValaClass* _tmp201_ = NULL;
-               gboolean _tmp202_ = FALSE;
-               ValaClass* _tmp203_ = NULL;
-               gboolean _tmp204_ = FALSE;
-               gboolean _tmp205_ = FALSE;
-               ValaClass* _tmp220_ = NULL;
-               ValaComment* _tmp221_ = NULL;
-               ValaComment* _tmp222_ = NULL;
+               ValaClass* _tmp158_ = NULL;
+               ValaClass* _tmp159_ = NULL;
+               ValaDestructor* _tmp160_ = NULL;
+               ValaDestructor* _tmp161_ = NULL;
+               ValaClass* _tmp163_ = NULL;
+               ValaDestructor* _tmp164_ = NULL;
+               ValaDestructor* _tmp165_ = NULL;
+               ValaClass* _tmp185_ = NULL;
+               gboolean _tmp186_ = FALSE;
+               ValaClass* _tmp187_ = NULL;
+               gboolean _tmp188_ = FALSE;
+               gboolean _tmp189_ = FALSE;
+               ValaClass* _tmp204_ = NULL;
+               ValaComment* _tmp205_ = NULL;
+               ValaComment* _tmp206_ = NULL;
                ValaClassRegisterFunction* type_fun = NULL;
-               ValaClass* _tmp231_ = NULL;
-               ValaCodeContext* _tmp232_ = NULL;
-               ValaCodeContext* _tmp233_ = NULL;
-               ValaClassRegisterFunction* _tmp234_ = NULL;
-               ValaClassRegisterFunction* _tmp235_ = NULL;
-               gboolean _tmp236_ = FALSE;
-               ValaCCodeFile* _tmp237_ = NULL;
-               ValaClassRegisterFunction* _tmp238_ = NULL;
-               ValaCCodeFragment* _tmp239_ = NULL;
-               ValaCCodeFragment* _tmp240_ = NULL;
-               ValaCCodeFile* _tmp241_ = NULL;
-               ValaClassRegisterFunction* _tmp242_ = NULL;
-               ValaCCodeFragment* _tmp243_ = NULL;
-               ValaCCodeFragment* _tmp244_ = NULL;
-               gboolean _tmp245_ = FALSE;
+               ValaClass* _tmp215_ = NULL;
+               ValaCodeContext* _tmp216_ = NULL;
+               ValaCodeContext* _tmp217_ = NULL;
+               ValaClassRegisterFunction* _tmp218_ = NULL;
+               ValaClassRegisterFunction* _tmp219_ = NULL;
+               gboolean _tmp220_ = FALSE;
+               ValaCCodeFile* _tmp221_ = NULL;
+               ValaClassRegisterFunction* _tmp222_ = NULL;
+               ValaCCodeFragment* _tmp223_ = NULL;
+               ValaCCodeFragment* _tmp224_ = NULL;
+               ValaCCodeFile* _tmp225_ = NULL;
+               ValaClassRegisterFunction* _tmp226_ = NULL;
+               ValaCCodeFragment* _tmp227_ = NULL;
+               ValaCCodeFragment* _tmp228_ = NULL;
+               gboolean _tmp229_ = FALSE;
                _tmp97_ = is_fundamental;
                if (_tmp97_) {
                        ValaClass* _tmp98_ = NULL;
@@ -4625,575 +4692,573 @@ static void vala_gtype_module_real_visit_class (ValaCodeVisitor* base, ValaClass
                        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
                        _vala_ccode_node_unref0 (ref_count);
                }
-               _tmp155_ = cl;
-               _tmp156_ = vala_class_get_class_constructor (_tmp155_);
-               _tmp157_ = _tmp156_;
-               if (_tmp157_ != NULL) {
-                       _tmp154_ = TRUE;
-               } else {
-                       gboolean _tmp158_ = FALSE;
-                       ValaCodeContext* _tmp159_ = NULL;
-                       ValaCodeContext* _tmp160_ = NULL;
-                       gboolean _tmp161_ = FALSE;
-                       _tmp159_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-                       _tmp160_ = _tmp159_;
-                       _tmp161_ = vala_code_context_require_glib_version (_tmp160_, 2, 24);
-                       if (!_tmp161_) {
-                               ValaClass* _tmp162_ = NULL;
-                               gboolean _tmp163_ = FALSE;
-                               gboolean _tmp164_ = FALSE;
-                               _tmp162_ = cl;
-                               _tmp163_ = vala_class_get_has_class_private_fields (_tmp162_);
-                               _tmp164_ = _tmp163_;
-                               _tmp158_ = _tmp164_;
-                       } else {
-                               _tmp158_ = FALSE;
-                       }
-                       _tmp154_ = _tmp158_;
-               }
-               if (_tmp154_) {
-                       ValaClass* _tmp165_ = NULL;
-                       _tmp165_ = cl;
-                       vala_gtype_module_add_base_init_function (self, _tmp165_);
+               _tmp154_ = cl;
+               _tmp155_ = vala_class_get_class_constructor (_tmp154_);
+               _tmp156_ = _tmp155_;
+               if (_tmp156_ != NULL) {
+                       ValaClass* _tmp157_ = NULL;
+                       _tmp157_ = cl;
+                       vala_gtype_module_add_base_init_function (self, _tmp157_);
                }
-               _tmp166_ = cl;
-               vala_gtype_module_add_class_init_function (self, _tmp166_);
-               _tmp168_ = cl;
-               _tmp169_ = vala_class_get_class_destructor (_tmp168_);
-               _tmp170_ = _tmp169_;
-               if (_tmp170_ != NULL) {
-                       _tmp167_ = TRUE;
-               } else {
-                       gboolean _tmp171_ = FALSE;
-                       ValaCodeContext* _tmp172_ = NULL;
-                       ValaCodeContext* _tmp173_ = NULL;
-                       gboolean _tmp174_ = FALSE;
-                       _tmp172_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-                       _tmp173_ = _tmp172_;
-                       _tmp174_ = vala_code_context_require_glib_version (_tmp173_, 2, 24);
-                       if (!_tmp174_) {
-                               ValaClass* _tmp175_ = NULL;
-                               gboolean _tmp176_ = FALSE;
-                               gboolean _tmp177_ = FALSE;
-                               _tmp175_ = cl;
-                               _tmp176_ = vala_class_get_has_class_private_fields (_tmp175_);
-                               _tmp177_ = _tmp176_;
-                               _tmp171_ = _tmp177_;
-                       } else {
-                               _tmp171_ = FALSE;
-                       }
-                       _tmp167_ = _tmp171_;
-               }
-               if (_tmp167_) {
-                       ValaClass* _tmp178_ = NULL;
-                       _tmp178_ = cl;
-                       vala_gtype_module_add_base_finalize_function (self, _tmp178_);
+               _tmp158_ = cl;
+               vala_gtype_module_add_class_init_function (self, _tmp158_);
+               _tmp159_ = cl;
+               _tmp160_ = vala_class_get_class_destructor (_tmp159_);
+               _tmp161_ = _tmp160_;
+               if (_tmp161_ != NULL) {
+                       ValaClass* _tmp162_ = NULL;
+                       _tmp162_ = cl;
+                       vala_gtype_module_add_base_finalize_function (self, _tmp162_);
                }
-               _tmp179_ = cl;
-               _tmp180_ = vala_class_get_static_destructor (_tmp179_);
-               _tmp181_ = _tmp180_;
-               if (_tmp181_ != NULL) {
-                       ValaClass* _tmp182_ = NULL;
-                       _tmp182_ = cl;
-                       vala_gtype_module_add_class_finalize_function (self, _tmp182_);
+               _tmp163_ = cl;
+               _tmp164_ = vala_class_get_static_destructor (_tmp163_);
+               _tmp165_ = _tmp164_;
+               if (_tmp165_ != NULL) {
+                       ValaClass* _tmp166_ = NULL;
+                       _tmp166_ = cl;
+                       vala_gtype_module_add_class_finalize_function (self, _tmp166_);
                }
                {
                        ValaList* _base_type_list = NULL;
-                       ValaClass* _tmp183_ = NULL;
-                       ValaList* _tmp184_ = NULL;
+                       ValaClass* _tmp167_ = NULL;
+                       ValaList* _tmp168_ = NULL;
                        gint _base_type_size = 0;
-                       ValaList* _tmp185_ = NULL;
-                       gint _tmp186_ = 0;
-                       gint _tmp187_ = 0;
+                       ValaList* _tmp169_ = NULL;
+                       gint _tmp170_ = 0;
+                       gint _tmp171_ = 0;
                        gint _base_type_index = 0;
-                       _tmp183_ = cl;
-                       _tmp184_ = vala_class_get_base_types (_tmp183_);
-                       _base_type_list = _tmp184_;
-                       _tmp185_ = _base_type_list;
-                       _tmp186_ = vala_collection_get_size ((ValaCollection*) _tmp185_);
-                       _tmp187_ = _tmp186_;
-                       _base_type_size = _tmp187_;
+                       _tmp167_ = cl;
+                       _tmp168_ = vala_class_get_base_types (_tmp167_);
+                       _base_type_list = _tmp168_;
+                       _tmp169_ = _base_type_list;
+                       _tmp170_ = vala_collection_get_size ((ValaCollection*) _tmp169_);
+                       _tmp171_ = _tmp170_;
+                       _base_type_size = _tmp171_;
                        _base_type_index = -1;
                        while (TRUE) {
-                               gint _tmp188_ = 0;
-                               gint _tmp189_ = 0;
-                               gint _tmp190_ = 0;
+                               gint _tmp172_ = 0;
+                               gint _tmp173_ = 0;
+                               gint _tmp174_ = 0;
                                ValaDataType* base_type = NULL;
-                               ValaList* _tmp191_ = NULL;
-                               gint _tmp192_ = 0;
-                               gpointer _tmp193_ = NULL;
-                               ValaDataType* _tmp194_ = NULL;
-                               ValaTypeSymbol* _tmp195_ = NULL;
-                               ValaTypeSymbol* _tmp196_ = NULL;
-                               _tmp188_ = _base_type_index;
-                               _base_type_index = _tmp188_ + 1;
-                               _tmp189_ = _base_type_index;
-                               _tmp190_ = _base_type_size;
-                               if (!(_tmp189_ < _tmp190_)) {
+                               ValaList* _tmp175_ = NULL;
+                               gint _tmp176_ = 0;
+                               gpointer _tmp177_ = NULL;
+                               ValaDataType* _tmp178_ = NULL;
+                               ValaTypeSymbol* _tmp179_ = NULL;
+                               ValaTypeSymbol* _tmp180_ = NULL;
+                               _tmp172_ = _base_type_index;
+                               _base_type_index = _tmp172_ + 1;
+                               _tmp173_ = _base_type_index;
+                               _tmp174_ = _base_type_size;
+                               if (!(_tmp173_ < _tmp174_)) {
                                        break;
                                }
-                               _tmp191_ = _base_type_list;
-                               _tmp192_ = _base_type_index;
-                               _tmp193_ = vala_list_get (_tmp191_, _tmp192_);
-                               base_type = (ValaDataType*) _tmp193_;
-                               _tmp194_ = base_type;
-                               _tmp195_ = vala_data_type_get_data_type (_tmp194_);
-                               _tmp196_ = _tmp195_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp196_, VALA_TYPE_INTERFACE)) {
-                                       ValaClass* _tmp197_ = NULL;
-                                       ValaDataType* _tmp198_ = NULL;
-                                       ValaTypeSymbol* _tmp199_ = NULL;
-                                       ValaTypeSymbol* _tmp200_ = NULL;
-                                       _tmp197_ = cl;
-                                       _tmp198_ = base_type;
-                                       _tmp199_ = vala_data_type_get_data_type (_tmp198_);
-                                       _tmp200_ = _tmp199_;
-                                       vala_gtype_module_add_interface_init_function (self, _tmp197_, G_TYPE_CHECK_INSTANCE_CAST (_tmp200_, VALA_TYPE_INTERFACE, ValaInterface));
+                               _tmp175_ = _base_type_list;
+                               _tmp176_ = _base_type_index;
+                               _tmp177_ = vala_list_get (_tmp175_, _tmp176_);
+                               base_type = (ValaDataType*) _tmp177_;
+                               _tmp178_ = base_type;
+                               _tmp179_ = vala_data_type_get_data_type (_tmp178_);
+                               _tmp180_ = _tmp179_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp180_, VALA_TYPE_INTERFACE)) {
+                                       ValaClass* _tmp181_ = NULL;
+                                       ValaDataType* _tmp182_ = NULL;
+                                       ValaTypeSymbol* _tmp183_ = NULL;
+                                       ValaTypeSymbol* _tmp184_ = NULL;
+                                       _tmp181_ = cl;
+                                       _tmp182_ = base_type;
+                                       _tmp183_ = vala_data_type_get_data_type (_tmp182_);
+                                       _tmp184_ = _tmp183_;
+                                       vala_gtype_module_add_interface_init_function (self, _tmp181_, G_TYPE_CHECK_INSTANCE_CAST (_tmp184_, VALA_TYPE_INTERFACE, ValaInterface));
                                }
                                _vala_code_node_unref0 (base_type);
                        }
                        _vala_iterable_unref0 (_base_type_list);
                }
-               _tmp201_ = cl;
-               vala_gtype_module_add_instance_init_function (self, _tmp201_);
-               _tmp203_ = cl;
-               _tmp204_ = vala_class_get_is_compact (_tmp203_);
-               _tmp205_ = _tmp204_;
-               if (!_tmp205_) {
-                       gboolean _tmp206_ = FALSE;
-                       gboolean _tmp207_ = FALSE;
-                       ValaClass* _tmp208_ = NULL;
-                       ValaList* _tmp209_ = NULL;
-                       ValaList* _tmp210_ = NULL;
-                       gint _tmp211_ = 0;
-                       gint _tmp212_ = 0;
-                       gboolean _tmp213_ = FALSE;
-                       _tmp208_ = cl;
-                       _tmp209_ = vala_class_get_fields (_tmp208_);
-                       _tmp210_ = _tmp209_;
-                       _tmp211_ = vala_collection_get_size ((ValaCollection*) _tmp210_);
-                       _tmp212_ = _tmp211_;
-                       _tmp213_ = _tmp212_ > 0;
-                       _vala_iterable_unref0 (_tmp210_);
-                       if (_tmp213_) {
-                               _tmp207_ = TRUE;
+               _tmp185_ = cl;
+               vala_gtype_module_add_instance_init_function (self, _tmp185_);
+               _tmp187_ = cl;
+               _tmp188_ = vala_class_get_is_compact (_tmp187_);
+               _tmp189_ = _tmp188_;
+               if (!_tmp189_) {
+                       gboolean _tmp190_ = FALSE;
+                       gboolean _tmp191_ = FALSE;
+                       ValaClass* _tmp192_ = NULL;
+                       ValaList* _tmp193_ = NULL;
+                       ValaList* _tmp194_ = NULL;
+                       gint _tmp195_ = 0;
+                       gint _tmp196_ = 0;
+                       gboolean _tmp197_ = FALSE;
+                       _tmp192_ = cl;
+                       _tmp193_ = vala_class_get_fields (_tmp192_);
+                       _tmp194_ = _tmp193_;
+                       _tmp195_ = vala_collection_get_size ((ValaCollection*) _tmp194_);
+                       _tmp196_ = _tmp195_;
+                       _tmp197_ = _tmp196_ > 0;
+                       _vala_iterable_unref0 (_tmp194_);
+                       if (_tmp197_) {
+                               _tmp191_ = TRUE;
                        } else {
-                               ValaClass* _tmp214_ = NULL;
-                               ValaDestructor* _tmp215_ = NULL;
-                               ValaDestructor* _tmp216_ = NULL;
-                               _tmp214_ = cl;
-                               _tmp215_ = vala_class_get_destructor (_tmp214_);
-                               _tmp216_ = _tmp215_;
-                               _tmp207_ = _tmp216_ != NULL;
+                               ValaClass* _tmp198_ = NULL;
+                               ValaDestructor* _tmp199_ = NULL;
+                               ValaDestructor* _tmp200_ = NULL;
+                               _tmp198_ = cl;
+                               _tmp199_ = vala_class_get_destructor (_tmp198_);
+                               _tmp200_ = _tmp199_;
+                               _tmp191_ = _tmp200_ != NULL;
                        }
-                       if (_tmp207_) {
-                               _tmp206_ = TRUE;
+                       if (_tmp191_) {
+                               _tmp190_ = TRUE;
                        } else {
-                               ValaClass* _tmp217_ = NULL;
-                               gboolean _tmp218_ = FALSE;
-                               _tmp217_ = cl;
-                               _tmp218_ = vala_class_is_fundamental (_tmp217_);
-                               _tmp206_ = _tmp218_;
+                               ValaClass* _tmp201_ = NULL;
+                               gboolean _tmp202_ = FALSE;
+                               _tmp201_ = cl;
+                               _tmp202_ = vala_class_is_fundamental (_tmp201_);
+                               _tmp190_ = _tmp202_;
                        }
-                       _tmp202_ = _tmp206_;
+                       _tmp186_ = _tmp190_;
                } else {
-                       _tmp202_ = FALSE;
+                       _tmp186_ = FALSE;
                }
-               if (_tmp202_) {
-                       ValaClass* _tmp219_ = NULL;
-                       _tmp219_ = cl;
-                       vala_gtype_module_add_finalize_function (self, _tmp219_);
+               if (_tmp186_) {
+                       ValaClass* _tmp203_ = NULL;
+                       _tmp203_ = cl;
+                       vala_gtype_module_add_finalize_function (self, _tmp203_);
                }
-               _tmp220_ = cl;
-               _tmp221_ = vala_symbol_get_comment ((ValaSymbol*) _tmp220_);
-               _tmp222_ = _tmp221_;
-               if (_tmp222_ != NULL) {
-                       ValaCCodeFile* _tmp223_ = NULL;
-                       ValaClass* _tmp224_ = NULL;
-                       ValaComment* _tmp225_ = NULL;
-                       ValaComment* _tmp226_ = NULL;
-                       const gchar* _tmp227_ = NULL;
-                       const gchar* _tmp228_ = NULL;
-                       ValaCCodeComment* _tmp229_ = NULL;
-                       ValaCCodeComment* _tmp230_ = NULL;
-                       _tmp223_ = ((ValaCCodeBaseModule*) self)->cfile;
-                       _tmp224_ = cl;
-                       _tmp225_ = vala_symbol_get_comment ((ValaSymbol*) _tmp224_);
-                       _tmp226_ = _tmp225_;
-                       _tmp227_ = vala_comment_get_content (_tmp226_);
-                       _tmp228_ = _tmp227_;
-                       _tmp229_ = vala_ccode_comment_new (_tmp228_);
-                       _tmp230_ = _tmp229_;
-                       vala_ccode_file_add_type_member_definition (_tmp223_, (ValaCCodeNode*) _tmp230_);
-                       _vala_ccode_node_unref0 (_tmp230_);
+               _tmp204_ = cl;
+               _tmp205_ = vala_symbol_get_comment ((ValaSymbol*) _tmp204_);
+               _tmp206_ = _tmp205_;
+               if (_tmp206_ != NULL) {
+                       ValaCCodeFile* _tmp207_ = NULL;
+                       ValaClass* _tmp208_ = NULL;
+                       ValaComment* _tmp209_ = NULL;
+                       ValaComment* _tmp210_ = NULL;
+                       const gchar* _tmp211_ = NULL;
+                       const gchar* _tmp212_ = NULL;
+                       ValaCCodeComment* _tmp213_ = NULL;
+                       ValaCCodeComment* _tmp214_ = NULL;
+                       _tmp207_ = ((ValaCCodeBaseModule*) self)->cfile;
+                       _tmp208_ = cl;
+                       _tmp209_ = vala_symbol_get_comment ((ValaSymbol*) _tmp208_);
+                       _tmp210_ = _tmp209_;
+                       _tmp211_ = vala_comment_get_content (_tmp210_);
+                       _tmp212_ = _tmp211_;
+                       _tmp213_ = vala_ccode_comment_new (_tmp212_);
+                       _tmp214_ = _tmp213_;
+                       vala_ccode_file_add_type_member_definition (_tmp207_, (ValaCCodeNode*) _tmp214_);
+                       _vala_ccode_node_unref0 (_tmp214_);
                }
-               _tmp231_ = cl;
-               _tmp232_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-               _tmp233_ = _tmp232_;
-               _tmp234_ = vala_class_register_function_new (_tmp231_, _tmp233_);
-               type_fun = _tmp234_;
-               _tmp235_ = type_fun;
-               _tmp236_ = ((ValaCCodeBaseModule*) self)->in_plugin;
-               vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp235_, _tmp236_, FALSE);
-               _tmp237_ = ((ValaCCodeBaseModule*) self)->cfile;
-               _tmp238_ = type_fun;
-               _tmp239_ = vala_typeregister_function_get_source_declaration ((ValaTypeRegisterFunction*) _tmp238_);
-               _tmp240_ = _tmp239_;
-               vala_ccode_file_add_type_member_declaration (_tmp237_, (ValaCCodeNode*) _tmp240_);
-               _vala_ccode_node_unref0 (_tmp240_);
-               _tmp241_ = ((ValaCCodeBaseModule*) self)->cfile;
-               _tmp242_ = type_fun;
-               _tmp243_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp242_);
-               _tmp244_ = _tmp243_;
-               vala_ccode_file_add_type_member_definition (_tmp241_, (ValaCCodeNode*) _tmp244_);
-               _vala_ccode_node_unref0 (_tmp244_);
-               _tmp245_ = is_fundamental;
-               if (_tmp245_) {
+               _tmp215_ = cl;
+               _tmp216_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp217_ = _tmp216_;
+               _tmp218_ = vala_class_register_function_new (_tmp215_, _tmp217_);
+               type_fun = _tmp218_;
+               _tmp219_ = type_fun;
+               _tmp220_ = ((ValaCCodeBaseModule*) self)->in_plugin;
+               vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp219_, _tmp220_, FALSE);
+               _tmp221_ = ((ValaCCodeBaseModule*) self)->cfile;
+               _tmp222_ = type_fun;
+               _tmp223_ = vala_typeregister_function_get_source_declaration ((ValaTypeRegisterFunction*) _tmp222_);
+               _tmp224_ = _tmp223_;
+               vala_ccode_file_add_type_member_declaration (_tmp221_, (ValaCCodeNode*) _tmp224_);
+               _vala_ccode_node_unref0 (_tmp224_);
+               _tmp225_ = ((ValaCCodeBaseModule*) self)->cfile;
+               _tmp226_ = type_fun;
+               _tmp227_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp226_);
+               _tmp228_ = _tmp227_;
+               vala_ccode_file_add_type_member_definition (_tmp225_, (ValaCCodeNode*) _tmp228_);
+               _vala_ccode_node_unref0 (_tmp228_);
+               _tmp229_ = is_fundamental;
+               if (_tmp229_) {
                        ValaCCodeMemberAccess* ref_count = NULL;
-                       ValaCCodeIdentifier* _tmp246_ = NULL;
-                       ValaCCodeIdentifier* _tmp247_ = NULL;
-                       ValaCCodeMemberAccess* _tmp248_ = NULL;
-                       ValaCCodeMemberAccess* _tmp249_ = NULL;
+                       ValaCCodeIdentifier* _tmp230_ = NULL;
+                       ValaCCodeIdentifier* _tmp231_ = NULL;
+                       ValaCCodeMemberAccess* _tmp232_ = NULL;
+                       ValaCCodeMemberAccess* _tmp233_ = NULL;
                        ValaCCodeFunction* ref_fun = NULL;
-                       ValaClass* _tmp250_ = NULL;
-                       gchar* _tmp251_ = NULL;
-                       gchar* _tmp252_ = NULL;
-                       gchar* _tmp253_ = NULL;
-                       gchar* _tmp254_ = NULL;
+                       ValaClass* _tmp234_ = NULL;
+                       gchar* _tmp235_ = NULL;
+                       gchar* _tmp236_ = NULL;
+                       gchar* _tmp237_ = NULL;
+                       gchar* _tmp238_ = NULL;
+                       ValaCCodeFunction* _tmp239_ = NULL;
+                       ValaCCodeFunction* _tmp240_ = NULL;
+                       ValaCCodeFunction* _tmp241_ = NULL;
+                       ValaCCodeParameter* _tmp242_ = NULL;
+                       ValaCCodeParameter* _tmp243_ = NULL;
+                       ValaClass* _tmp244_ = NULL;
+                       gboolean _tmp245_ = FALSE;
                        ValaCCodeFunction* _tmp255_ = NULL;
                        ValaCCodeFunction* _tmp256_ = NULL;
                        ValaCCodeFunction* _tmp257_ = NULL;
-                       ValaCCodeParameter* _tmp258_ = NULL;
-                       ValaCCodeParameter* _tmp259_ = NULL;
-                       ValaClass* _tmp260_ = NULL;
-                       ValaSymbolAccessibility _tmp261_ = 0;
-                       ValaSymbolAccessibility _tmp262_ = 0;
-                       ValaCCodeFunction* _tmp264_ = NULL;
-                       ValaCCodeFunction* _tmp265_ = NULL;
-                       ValaCCodeFunction* _tmp266_ = NULL;
-                       ValaClass* _tmp267_ = NULL;
-                       gchar* _tmp268_ = NULL;
-                       gchar* _tmp269_ = NULL;
-                       gchar* _tmp270_ = NULL;
-                       gchar* _tmp271_ = NULL;
-                       ValaCCodeIdentifier* _tmp272_ = NULL;
-                       ValaCCodeIdentifier* _tmp273_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp274_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp275_ = NULL;
+                       ValaClass* _tmp258_ = NULL;
+                       gchar* _tmp259_ = NULL;
+                       gchar* _tmp260_ = NULL;
+                       gchar* _tmp261_ = NULL;
+                       gchar* _tmp262_ = NULL;
+                       ValaCCodeIdentifier* _tmp263_ = NULL;
+                       ValaCCodeIdentifier* _tmp264_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp265_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp266_ = NULL;
                        ValaCCodeFunctionCall* ccall = NULL;
-                       ValaCCodeIdentifier* _tmp276_ = NULL;
-                       ValaCCodeIdentifier* _tmp277_ = NULL;
-                       ValaCCodeFunctionCall* _tmp278_ = NULL;
-                       ValaCCodeFunctionCall* _tmp279_ = NULL;
-                       ValaCCodeFunctionCall* _tmp280_ = NULL;
-                       ValaCCodeMemberAccess* _tmp281_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp282_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp283_ = NULL;
-                       ValaCCodeFunction* _tmp284_ = NULL;
-                       ValaCCodeFunction* _tmp285_ = NULL;
-                       ValaCCodeFunctionCall* _tmp286_ = NULL;
-                       ValaCCodeFunction* _tmp287_ = NULL;
-                       ValaCCodeFunction* _tmp288_ = NULL;
-                       ValaCCodeIdentifier* _tmp289_ = NULL;
-                       ValaCCodeIdentifier* _tmp290_ = NULL;
-                       ValaCCodeFile* _tmp291_ = NULL;
-                       ValaCCodeFunction* _tmp292_ = NULL;
+                       ValaCCodeIdentifier* _tmp267_ = NULL;
+                       ValaCCodeIdentifier* _tmp268_ = NULL;
+                       ValaCCodeFunctionCall* _tmp269_ = NULL;
+                       ValaCCodeFunctionCall* _tmp270_ = NULL;
+                       ValaCCodeFunctionCall* _tmp271_ = NULL;
+                       ValaCCodeMemberAccess* _tmp272_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp273_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp274_ = NULL;
+                       ValaCCodeFunction* _tmp275_ = NULL;
+                       ValaCCodeFunction* _tmp276_ = NULL;
+                       ValaCCodeFunctionCall* _tmp277_ = NULL;
+                       ValaCCodeFunction* _tmp278_ = NULL;
+                       ValaCCodeFunction* _tmp279_ = NULL;
+                       ValaCCodeIdentifier* _tmp280_ = NULL;
+                       ValaCCodeIdentifier* _tmp281_ = NULL;
+                       ValaCCodeFile* _tmp282_ = NULL;
+                       ValaCCodeFunction* _tmp283_ = NULL;
                        ValaCCodeFunction* unref_fun = NULL;
-                       ValaClass* _tmp293_ = NULL;
-                       gchar* _tmp294_ = NULL;
-                       gchar* _tmp295_ = NULL;
-                       gchar* _tmp296_ = NULL;
-                       gchar* _tmp297_ = NULL;
-                       ValaCCodeFunction* _tmp298_ = NULL;
-                       ValaCCodeFunction* _tmp299_ = NULL;
-                       ValaCCodeFunction* _tmp300_ = NULL;
-                       ValaCCodeParameter* _tmp301_ = NULL;
-                       ValaCCodeParameter* _tmp302_ = NULL;
-                       ValaClass* _tmp303_ = NULL;
-                       ValaSymbolAccessibility _tmp304_ = 0;
-                       ValaSymbolAccessibility _tmp305_ = 0;
+                       ValaClass* _tmp284_ = NULL;
+                       gchar* _tmp285_ = NULL;
+                       gchar* _tmp286_ = NULL;
+                       gchar* _tmp287_ = NULL;
+                       gchar* _tmp288_ = NULL;
+                       ValaCCodeFunction* _tmp289_ = NULL;
+                       ValaCCodeFunction* _tmp290_ = NULL;
+                       ValaCCodeFunction* _tmp291_ = NULL;
+                       ValaCCodeParameter* _tmp292_ = NULL;
+                       ValaCCodeParameter* _tmp293_ = NULL;
+                       ValaClass* _tmp294_ = NULL;
+                       gboolean _tmp295_ = FALSE;
+                       ValaCCodeFunction* _tmp305_ = NULL;
+                       ValaCCodeFunction* _tmp306_ = NULL;
                        ValaCCodeFunction* _tmp307_ = NULL;
-                       ValaCCodeFunction* _tmp308_ = NULL;
-                       ValaCCodeFunction* _tmp309_ = NULL;
-                       ValaClass* _tmp310_ = NULL;
+                       ValaClass* _tmp308_ = NULL;
+                       gchar* _tmp309_ = NULL;
+                       gchar* _tmp310_ = NULL;
                        gchar* _tmp311_ = NULL;
                        gchar* _tmp312_ = NULL;
-                       gchar* _tmp313_ = NULL;
-                       gchar* _tmp314_ = NULL;
-                       ValaCCodeIdentifier* _tmp315_ = NULL;
-                       ValaCCodeIdentifier* _tmp316_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp317_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp318_ = NULL;
-                       ValaCCodeIdentifier* _tmp319_ = NULL;
-                       ValaCCodeIdentifier* _tmp320_ = NULL;
-                       ValaCCodeFunctionCall* _tmp321_ = NULL;
-                       ValaCCodeFunctionCall* _tmp322_ = NULL;
-                       ValaCCodeMemberAccess* _tmp323_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp324_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp325_ = NULL;
-                       ValaCCodeFunction* _tmp326_ = NULL;
-                       ValaCCodeFunction* _tmp327_ = NULL;
-                       ValaCCodeFunctionCall* _tmp328_ = NULL;
+                       ValaCCodeIdentifier* _tmp313_ = NULL;
+                       ValaCCodeIdentifier* _tmp314_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp315_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp316_ = NULL;
+                       ValaCCodeIdentifier* _tmp317_ = NULL;
+                       ValaCCodeIdentifier* _tmp318_ = NULL;
+                       ValaCCodeFunctionCall* _tmp319_ = NULL;
+                       ValaCCodeFunctionCall* _tmp320_ = NULL;
+                       ValaCCodeMemberAccess* _tmp321_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp322_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp323_ = NULL;
+                       ValaCCodeFunction* _tmp324_ = NULL;
+                       ValaCCodeFunction* _tmp325_ = NULL;
+                       ValaCCodeFunctionCall* _tmp326_ = NULL;
                        ValaCCodeFunctionCall* get_class = NULL;
-                       ValaClass* _tmp329_ = NULL;
+                       ValaClass* _tmp327_ = NULL;
+                       gchar* _tmp328_ = NULL;
+                       gchar* _tmp329_ = NULL;
                        gchar* _tmp330_ = NULL;
                        gchar* _tmp331_ = NULL;
-                       gchar* _tmp332_ = NULL;
-                       gchar* _tmp333_ = NULL;
-                       ValaCCodeIdentifier* _tmp334_ = NULL;
-                       ValaCCodeIdentifier* _tmp335_ = NULL;
+                       ValaCCodeIdentifier* _tmp332_ = NULL;
+                       ValaCCodeIdentifier* _tmp333_ = NULL;
+                       ValaCCodeFunctionCall* _tmp334_ = NULL;
+                       ValaCCodeFunctionCall* _tmp335_ = NULL;
                        ValaCCodeFunctionCall* _tmp336_ = NULL;
-                       ValaCCodeFunctionCall* _tmp337_ = NULL;
-                       ValaCCodeFunctionCall* _tmp338_ = NULL;
-                       ValaCCodeIdentifier* _tmp339_ = NULL;
-                       ValaCCodeIdentifier* _tmp340_ = NULL;
+                       ValaCCodeIdentifier* _tmp337_ = NULL;
+                       ValaCCodeIdentifier* _tmp338_ = NULL;
                        ValaCCodeFunctionCall* ccast = NULL;
-                       ValaClass* _tmp341_ = NULL;
+                       ValaClass* _tmp339_ = NULL;
+                       gchar* _tmp340_ = NULL;
+                       gchar* _tmp341_ = NULL;
                        gchar* _tmp342_ = NULL;
                        gchar* _tmp343_ = NULL;
-                       gchar* _tmp344_ = NULL;
-                       gchar* _tmp345_ = NULL;
-                       ValaCCodeIdentifier* _tmp346_ = NULL;
-                       ValaCCodeIdentifier* _tmp347_ = NULL;
+                       ValaCCodeIdentifier* _tmp344_ = NULL;
+                       ValaCCodeIdentifier* _tmp345_ = NULL;
+                       ValaCCodeFunctionCall* _tmp346_ = NULL;
+                       ValaCCodeFunctionCall* _tmp347_ = NULL;
                        ValaCCodeFunctionCall* _tmp348_ = NULL;
-                       ValaCCodeFunctionCall* _tmp349_ = NULL;
-                       ValaCCodeFunctionCall* _tmp350_ = NULL;
-                       ValaCCodeIdentifier* _tmp351_ = NULL;
-                       ValaCCodeIdentifier* _tmp352_ = NULL;
-                       ValaCCodeFunctionCall* _tmp353_ = NULL;
-                       ValaCCodeMemberAccess* _tmp354_ = NULL;
-                       ValaCCodeMemberAccess* _tmp355_ = NULL;
-                       ValaCCodeFunctionCall* _tmp356_ = NULL;
-                       ValaCCodeFunctionCall* _tmp357_ = NULL;
-                       ValaCCodeIdentifier* _tmp358_ = NULL;
-                       ValaCCodeIdentifier* _tmp359_ = NULL;
-                       ValaCCodeFunction* _tmp360_ = NULL;
-                       ValaCCodeFunction* _tmp361_ = NULL;
-                       ValaCCodeFunctionCall* _tmp362_ = NULL;
+                       ValaCCodeIdentifier* _tmp349_ = NULL;
+                       ValaCCodeIdentifier* _tmp350_ = NULL;
+                       ValaCCodeFunctionCall* _tmp351_ = NULL;
+                       ValaCCodeMemberAccess* _tmp352_ = NULL;
+                       ValaCCodeMemberAccess* _tmp353_ = NULL;
+                       ValaCCodeFunctionCall* _tmp354_ = NULL;
+                       ValaCCodeFunctionCall* _tmp355_ = NULL;
+                       ValaCCodeIdentifier* _tmp356_ = NULL;
+                       ValaCCodeIdentifier* _tmp357_ = NULL;
+                       ValaCCodeFunction* _tmp358_ = NULL;
+                       ValaCCodeFunction* _tmp359_ = NULL;
+                       ValaCCodeFunctionCall* _tmp360_ = NULL;
                        ValaCCodeFunctionCall* free = NULL;
-                       ValaCCodeIdentifier* _tmp363_ = NULL;
-                       ValaCCodeIdentifier* _tmp364_ = NULL;
+                       ValaCCodeIdentifier* _tmp361_ = NULL;
+                       ValaCCodeIdentifier* _tmp362_ = NULL;
+                       ValaCCodeFunctionCall* _tmp363_ = NULL;
+                       ValaCCodeFunctionCall* _tmp364_ = NULL;
                        ValaCCodeFunctionCall* _tmp365_ = NULL;
-                       ValaCCodeFunctionCall* _tmp366_ = NULL;
-                       ValaCCodeFunctionCall* _tmp367_ = NULL;
-                       ValaCCodeIdentifier* _tmp368_ = NULL;
-                       ValaCCodeIdentifier* _tmp369_ = NULL;
-                       ValaCCodeCastExpression* _tmp370_ = NULL;
-                       ValaCCodeCastExpression* _tmp371_ = NULL;
-                       ValaCCodeFunction* _tmp372_ = NULL;
+                       ValaCCodeIdentifier* _tmp366_ = NULL;
+                       ValaCCodeIdentifier* _tmp367_ = NULL;
+                       ValaCCodeCastExpression* _tmp368_ = NULL;
+                       ValaCCodeCastExpression* _tmp369_ = NULL;
+                       ValaCCodeFunction* _tmp370_ = NULL;
+                       ValaCCodeFunction* _tmp371_ = NULL;
+                       ValaCCodeFunctionCall* _tmp372_ = NULL;
                        ValaCCodeFunction* _tmp373_ = NULL;
-                       ValaCCodeFunctionCall* _tmp374_ = NULL;
-                       ValaCCodeFunction* _tmp375_ = NULL;
+                       ValaCCodeFunction* _tmp374_ = NULL;
+                       ValaCCodeFile* _tmp375_ = NULL;
                        ValaCCodeFunction* _tmp376_ = NULL;
-                       ValaCCodeFile* _tmp377_ = NULL;
-                       ValaCCodeFunction* _tmp378_ = NULL;
-                       _tmp246_ = vala_ccode_identifier_new ("self");
-                       _tmp247_ = _tmp246_;
-                       _tmp248_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp247_, "ref_count");
-                       _tmp249_ = _tmp248_;
-                       _vala_ccode_node_unref0 (_tmp247_);
-                       ref_count = _tmp249_;
-                       _tmp250_ = cl;
-                       _tmp251_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp250_);
-                       _tmp252_ = _tmp251_;
-                       _tmp253_ = g_strconcat (_tmp252_, "ref", NULL);
-                       _tmp254_ = _tmp253_;
-                       _tmp255_ = vala_ccode_function_new (_tmp254_, "gpointer");
-                       _tmp256_ = _tmp255_;
-                       _g_free0 (_tmp254_);
-                       _g_free0 (_tmp252_);
-                       ref_fun = _tmp256_;
-                       _tmp257_ = ref_fun;
-                       _tmp258_ = vala_ccode_parameter_new ("instance", "gpointer");
-                       _tmp259_ = _tmp258_;
-                       vala_ccode_function_add_parameter (_tmp257_, _tmp259_);
-                       _vala_ccode_node_unref0 (_tmp259_);
-                       _tmp260_ = cl;
-                       _tmp261_ = vala_symbol_get_access ((ValaSymbol*) _tmp260_);
-                       _tmp262_ = _tmp261_;
-                       if (_tmp262_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-                               ValaCCodeFunction* _tmp263_ = NULL;
-                               _tmp263_ = ref_fun;
-                               vala_ccode_function_set_modifiers (_tmp263_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp230_ = vala_ccode_identifier_new ("self");
+                       _tmp231_ = _tmp230_;
+                       _tmp232_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp231_, "ref_count");
+                       _tmp233_ = _tmp232_;
+                       _vala_ccode_node_unref0 (_tmp231_);
+                       ref_count = _tmp233_;
+                       _tmp234_ = cl;
+                       _tmp235_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp234_);
+                       _tmp236_ = _tmp235_;
+                       _tmp237_ = g_strconcat (_tmp236_, "ref", NULL);
+                       _tmp238_ = _tmp237_;
+                       _tmp239_ = vala_ccode_function_new (_tmp238_, "gpointer");
+                       _tmp240_ = _tmp239_;
+                       _g_free0 (_tmp238_);
+                       _g_free0 (_tmp236_);
+                       ref_fun = _tmp240_;
+                       _tmp241_ = ref_fun;
+                       _tmp242_ = vala_ccode_parameter_new ("instance", "gpointer");
+                       _tmp243_ = _tmp242_;
+                       vala_ccode_function_add_parameter (_tmp241_, _tmp243_);
+                       _vala_ccode_node_unref0 (_tmp243_);
+                       _tmp244_ = cl;
+                       _tmp245_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp244_);
+                       if (_tmp245_) {
+                               ValaCCodeFunction* _tmp246_ = NULL;
+                               _tmp246_ = ref_fun;
+                               vala_ccode_function_set_modifiers (_tmp246_, VALA_CCODE_MODIFIERS_STATIC);
+                       } else {
+                               gboolean _tmp247_ = FALSE;
+                               ValaCodeContext* _tmp248_ = NULL;
+                               ValaCodeContext* _tmp249_ = NULL;
+                               gboolean _tmp250_ = FALSE;
+                               gboolean _tmp251_ = FALSE;
+                               _tmp248_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                               _tmp249_ = _tmp248_;
+                               _tmp250_ = vala_code_context_get_hide_internal (_tmp249_);
+                               _tmp251_ = _tmp250_;
+                               if (_tmp251_) {
+                                       ValaClass* _tmp252_ = NULL;
+                                       gboolean _tmp253_ = FALSE;
+                                       _tmp252_ = cl;
+                                       _tmp253_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp252_);
+                                       _tmp247_ = _tmp253_;
+                               } else {
+                                       _tmp247_ = FALSE;
+                               }
+                               if (_tmp247_) {
+                                       ValaCCodeFunction* _tmp254_ = NULL;
+                                       _tmp254_ = ref_fun;
+                                       vala_ccode_function_set_modifiers (_tmp254_, VALA_CCODE_MODIFIERS_INTERNAL);
+                               }
                        }
-                       _tmp264_ = ref_fun;
-                       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp264_);
-                       _tmp265_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp255_ = ref_fun;
+                       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp255_);
+                       _tmp256_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp257_ = _tmp256_;
+                       _tmp258_ = cl;
+                       _tmp259_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp258_);
+                       _tmp260_ = _tmp259_;
+                       _tmp261_ = g_strconcat (_tmp260_, "*", NULL);
+                       _tmp262_ = _tmp261_;
+                       _tmp263_ = vala_ccode_identifier_new ("instance");
+                       _tmp264_ = _tmp263_;
+                       _tmp265_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp264_, NULL);
                        _tmp266_ = _tmp265_;
-                       _tmp267_ = cl;
-                       _tmp268_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp267_);
-                       _tmp269_ = _tmp268_;
-                       _tmp270_ = g_strconcat (_tmp269_, "*", NULL);
-                       _tmp271_ = _tmp270_;
-                       _tmp272_ = vala_ccode_identifier_new ("instance");
-                       _tmp273_ = _tmp272_;
-                       _tmp274_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp273_, NULL);
-                       _tmp275_ = _tmp274_;
-                       vala_ccode_function_add_declaration (_tmp266_, _tmp271_, (ValaCCodeDeclarator*) _tmp275_, 0);
-                       _vala_ccode_node_unref0 (_tmp275_);
-                       _vala_ccode_node_unref0 (_tmp273_);
-                       _g_free0 (_tmp271_);
-                       _g_free0 (_tmp269_);
-                       _tmp276_ = vala_ccode_identifier_new ("g_atomic_int_inc");
-                       _tmp277_ = _tmp276_;
-                       _tmp278_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp277_);
+                       vala_ccode_function_add_declaration (_tmp257_, _tmp262_, (ValaCCodeDeclarator*) _tmp266_, 0);
+                       _vala_ccode_node_unref0 (_tmp266_);
+                       _vala_ccode_node_unref0 (_tmp264_);
+                       _g_free0 (_tmp262_);
+                       _g_free0 (_tmp260_);
+                       _tmp267_ = vala_ccode_identifier_new ("g_atomic_int_inc");
+                       _tmp268_ = _tmp267_;
+                       _tmp269_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp268_);
+                       _tmp270_ = _tmp269_;
+                       _vala_ccode_node_unref0 (_tmp268_);
+                       ccall = _tmp270_;
+                       _tmp271_ = ccall;
+                       _tmp272_ = ref_count;
+                       _tmp273_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp272_);
+                       _tmp274_ = _tmp273_;
+                       vala_ccode_function_call_add_argument (_tmp271_, (ValaCCodeExpression*) _tmp274_);
+                       _vala_ccode_node_unref0 (_tmp274_);
+                       _tmp275_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp276_ = _tmp275_;
+                       _tmp277_ = ccall;
+                       vala_ccode_function_add_expression (_tmp276_, (ValaCCodeExpression*) _tmp277_);
+                       _tmp278_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp279_ = _tmp278_;
-                       _vala_ccode_node_unref0 (_tmp277_);
-                       ccall = _tmp279_;
-                       _tmp280_ = ccall;
-                       _tmp281_ = ref_count;
-                       _tmp282_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp281_);
-                       _tmp283_ = _tmp282_;
-                       vala_ccode_function_call_add_argument (_tmp280_, (ValaCCodeExpression*) _tmp283_);
-                       _vala_ccode_node_unref0 (_tmp283_);
-                       _tmp284_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp285_ = _tmp284_;
-                       _tmp286_ = ccall;
-                       vala_ccode_function_add_expression (_tmp285_, (ValaCCodeExpression*) _tmp286_);
-                       _tmp287_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp280_ = vala_ccode_identifier_new ("instance");
+                       _tmp281_ = _tmp280_;
+                       vala_ccode_function_add_return (_tmp279_, (ValaCCodeExpression*) _tmp281_);
+                       _vala_ccode_node_unref0 (_tmp281_);
+                       vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
+                       _tmp282_ = ((ValaCCodeBaseModule*) self)->cfile;
+                       _tmp283_ = ref_fun;
+                       vala_ccode_file_add_function (_tmp282_, _tmp283_);
+                       _tmp284_ = cl;
+                       _tmp285_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp284_);
+                       _tmp286_ = _tmp285_;
+                       _tmp287_ = g_strconcat (_tmp286_, "unref", NULL);
                        _tmp288_ = _tmp287_;
-                       _tmp289_ = vala_ccode_identifier_new ("instance");
+                       _tmp289_ = vala_ccode_function_new (_tmp288_, "void");
                        _tmp290_ = _tmp289_;
-                       vala_ccode_function_add_return (_tmp288_, (ValaCCodeExpression*) _tmp290_);
-                       _vala_ccode_node_unref0 (_tmp290_);
-                       vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-                       _tmp291_ = ((ValaCCodeBaseModule*) self)->cfile;
-                       _tmp292_ = ref_fun;
-                       vala_ccode_file_add_function (_tmp291_, _tmp292_);
-                       _tmp293_ = cl;
-                       _tmp294_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp293_);
-                       _tmp295_ = _tmp294_;
-                       _tmp296_ = g_strconcat (_tmp295_, "unref", NULL);
-                       _tmp297_ = _tmp296_;
-                       _tmp298_ = vala_ccode_function_new (_tmp297_, "void");
-                       _tmp299_ = _tmp298_;
-                       _g_free0 (_tmp297_);
-                       _g_free0 (_tmp295_);
-                       unref_fun = _tmp299_;
-                       _tmp300_ = unref_fun;
-                       _tmp301_ = vala_ccode_parameter_new ("instance", "gpointer");
-                       _tmp302_ = _tmp301_;
-                       vala_ccode_function_add_parameter (_tmp300_, _tmp302_);
-                       _vala_ccode_node_unref0 (_tmp302_);
-                       _tmp303_ = cl;
-                       _tmp304_ = vala_symbol_get_access ((ValaSymbol*) _tmp303_);
-                       _tmp305_ = _tmp304_;
-                       if (_tmp305_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-                               ValaCCodeFunction* _tmp306_ = NULL;
-                               _tmp306_ = unref_fun;
-                               vala_ccode_function_set_modifiers (_tmp306_, VALA_CCODE_MODIFIERS_STATIC);
+                       _g_free0 (_tmp288_);
+                       _g_free0 (_tmp286_);
+                       unref_fun = _tmp290_;
+                       _tmp291_ = unref_fun;
+                       _tmp292_ = vala_ccode_parameter_new ("instance", "gpointer");
+                       _tmp293_ = _tmp292_;
+                       vala_ccode_function_add_parameter (_tmp291_, _tmp293_);
+                       _vala_ccode_node_unref0 (_tmp293_);
+                       _tmp294_ = cl;
+                       _tmp295_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp294_);
+                       if (_tmp295_) {
+                               ValaCCodeFunction* _tmp296_ = NULL;
+                               _tmp296_ = unref_fun;
+                               vala_ccode_function_set_modifiers (_tmp296_, VALA_CCODE_MODIFIERS_STATIC);
+                       } else {
+                               gboolean _tmp297_ = FALSE;
+                               ValaCodeContext* _tmp298_ = NULL;
+                               ValaCodeContext* _tmp299_ = NULL;
+                               gboolean _tmp300_ = FALSE;
+                               gboolean _tmp301_ = FALSE;
+                               _tmp298_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                               _tmp299_ = _tmp298_;
+                               _tmp300_ = vala_code_context_get_hide_internal (_tmp299_);
+                               _tmp301_ = _tmp300_;
+                               if (_tmp301_) {
+                                       ValaClass* _tmp302_ = NULL;
+                                       gboolean _tmp303_ = FALSE;
+                                       _tmp302_ = cl;
+                                       _tmp303_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp302_);
+                                       _tmp297_ = _tmp303_;
+                               } else {
+                                       _tmp297_ = FALSE;
+                               }
+                               if (_tmp297_) {
+                                       ValaCCodeFunction* _tmp304_ = NULL;
+                                       _tmp304_ = unref_fun;
+                                       vala_ccode_function_set_modifiers (_tmp304_, VALA_CCODE_MODIFIERS_INTERNAL);
+                               }
                        }
-                       _tmp307_ = unref_fun;
-                       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp307_);
-                       _tmp308_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp309_ = _tmp308_;
-                       _tmp310_ = cl;
-                       _tmp311_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp310_);
+                       _tmp305_ = unref_fun;
+                       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp305_);
+                       _tmp306_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp307_ = _tmp306_;
+                       _tmp308_ = cl;
+                       _tmp309_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp308_);
+                       _tmp310_ = _tmp309_;
+                       _tmp311_ = g_strconcat (_tmp310_, "*", NULL);
                        _tmp312_ = _tmp311_;
-                       _tmp313_ = g_strconcat (_tmp312_, "*", NULL);
+                       _tmp313_ = vala_ccode_identifier_new ("instance");
                        _tmp314_ = _tmp313_;
-                       _tmp315_ = vala_ccode_identifier_new ("instance");
+                       _tmp315_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp314_, NULL);
                        _tmp316_ = _tmp315_;
-                       _tmp317_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp316_, NULL);
-                       _tmp318_ = _tmp317_;
-                       vala_ccode_function_add_declaration (_tmp309_, _tmp314_, (ValaCCodeDeclarator*) _tmp318_, 0);
-                       _vala_ccode_node_unref0 (_tmp318_);
+                       vala_ccode_function_add_declaration (_tmp307_, _tmp312_, (ValaCCodeDeclarator*) _tmp316_, 0);
                        _vala_ccode_node_unref0 (_tmp316_);
-                       _g_free0 (_tmp314_);
+                       _vala_ccode_node_unref0 (_tmp314_);
                        _g_free0 (_tmp312_);
-                       _tmp319_ = vala_ccode_identifier_new ("g_atomic_int_dec_and_test");
-                       _tmp320_ = _tmp319_;
-                       _tmp321_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp320_);
+                       _g_free0 (_tmp310_);
+                       _tmp317_ = vala_ccode_identifier_new ("g_atomic_int_dec_and_test");
+                       _tmp318_ = _tmp317_;
+                       _tmp319_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp318_);
                        _vala_ccode_node_unref0 (ccall);
-                       ccall = _tmp321_;
-                       _vala_ccode_node_unref0 (_tmp320_);
-                       _tmp322_ = ccall;
-                       _tmp323_ = ref_count;
-                       _tmp324_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp323_);
+                       ccall = _tmp319_;
+                       _vala_ccode_node_unref0 (_tmp318_);
+                       _tmp320_ = ccall;
+                       _tmp321_ = ref_count;
+                       _tmp322_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp321_);
+                       _tmp323_ = _tmp322_;
+                       vala_ccode_function_call_add_argument (_tmp320_, (ValaCCodeExpression*) _tmp323_);
+                       _vala_ccode_node_unref0 (_tmp323_);
+                       _tmp324_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp325_ = _tmp324_;
-                       vala_ccode_function_call_add_argument (_tmp322_, (ValaCCodeExpression*) _tmp325_);
-                       _vala_ccode_node_unref0 (_tmp325_);
-                       _tmp326_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp327_ = _tmp326_;
-                       _tmp328_ = ccall;
-                       vala_ccode_function_open_if (_tmp327_, (ValaCCodeExpression*) _tmp328_);
-                       _tmp329_ = cl;
-                       _tmp330_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp329_, NULL);
+                       _tmp326_ = ccall;
+                       vala_ccode_function_open_if (_tmp325_, (ValaCCodeExpression*) _tmp326_);
+                       _tmp327_ = cl;
+                       _tmp328_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp327_, NULL);
+                       _tmp329_ = _tmp328_;
+                       _tmp330_ = g_strdup_printf ("%s_GET_CLASS", _tmp329_);
                        _tmp331_ = _tmp330_;
-                       _tmp332_ = g_strdup_printf ("%s_GET_CLASS", _tmp331_);
+                       _tmp332_ = vala_ccode_identifier_new (_tmp331_);
                        _tmp333_ = _tmp332_;
-                       _tmp334_ = vala_ccode_identifier_new (_tmp333_);
+                       _tmp334_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp333_);
                        _tmp335_ = _tmp334_;
-                       _tmp336_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp335_);
-                       _tmp337_ = _tmp336_;
-                       _vala_ccode_node_unref0 (_tmp335_);
-                       _g_free0 (_tmp333_);
+                       _vala_ccode_node_unref0 (_tmp333_);
                        _g_free0 (_tmp331_);
-                       get_class = _tmp337_;
-                       _tmp338_ = get_class;
-                       _tmp339_ = vala_ccode_identifier_new ("self");
-                       _tmp340_ = _tmp339_;
-                       vala_ccode_function_call_add_argument (_tmp338_, (ValaCCodeExpression*) _tmp340_);
-                       _vala_ccode_node_unref0 (_tmp340_);
-                       _tmp341_ = cl;
-                       _tmp342_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp341_, NULL);
+                       _g_free0 (_tmp329_);
+                       get_class = _tmp335_;
+                       _tmp336_ = get_class;
+                       _tmp337_ = vala_ccode_identifier_new ("self");
+                       _tmp338_ = _tmp337_;
+                       vala_ccode_function_call_add_argument (_tmp336_, (ValaCCodeExpression*) _tmp338_);
+                       _vala_ccode_node_unref0 (_tmp338_);
+                       _tmp339_ = cl;
+                       _tmp340_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp339_, NULL);
+                       _tmp341_ = _tmp340_;
+                       _tmp342_ = g_strdup_printf ("%s_GET_CLASS", _tmp341_);
                        _tmp343_ = _tmp342_;
-                       _tmp344_ = g_strdup_printf ("%s_GET_CLASS", _tmp343_);
+                       _tmp344_ = vala_ccode_identifier_new (_tmp343_);
                        _tmp345_ = _tmp344_;
-                       _tmp346_ = vala_ccode_identifier_new (_tmp345_);
+                       _tmp346_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp345_);
                        _tmp347_ = _tmp346_;
-                       _tmp348_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp347_);
-                       _tmp349_ = _tmp348_;
-                       _vala_ccode_node_unref0 (_tmp347_);
-                       _g_free0 (_tmp345_);
+                       _vala_ccode_node_unref0 (_tmp345_);
                        _g_free0 (_tmp343_);
-                       ccast = _tmp349_;
-                       _tmp350_ = ccast;
-                       _tmp351_ = vala_ccode_identifier_new ("self");
-                       _tmp352_ = _tmp351_;
-                       vala_ccode_function_call_add_argument (_tmp350_, (ValaCCodeExpression*) _tmp352_);
-                       _vala_ccode_node_unref0 (_tmp352_);
-                       _tmp353_ = ccast;
-                       _tmp354_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp353_, "finalize");
-                       _tmp355_ = _tmp354_;
-                       _tmp356_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp355_);
+                       _g_free0 (_tmp341_);
+                       ccast = _tmp347_;
+                       _tmp348_ = ccast;
+                       _tmp349_ = vala_ccode_identifier_new ("self");
+                       _tmp350_ = _tmp349_;
+                       vala_ccode_function_call_add_argument (_tmp348_, (ValaCCodeExpression*) _tmp350_);
+                       _vala_ccode_node_unref0 (_tmp350_);
+                       _tmp351_ = ccast;
+                       _tmp352_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp351_, "finalize");
+                       _tmp353_ = _tmp352_;
+                       _tmp354_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp353_);
                        _vala_ccode_node_unref0 (ccall);
-                       ccall = _tmp356_;
-                       _vala_ccode_node_unref0 (_tmp355_);
-                       _tmp357_ = ccall;
-                       _tmp358_ = vala_ccode_identifier_new ("self");
+                       ccall = _tmp354_;
+                       _vala_ccode_node_unref0 (_tmp353_);
+                       _tmp355_ = ccall;
+                       _tmp356_ = vala_ccode_identifier_new ("self");
+                       _tmp357_ = _tmp356_;
+                       vala_ccode_function_call_add_argument (_tmp355_, (ValaCCodeExpression*) _tmp357_);
+                       _vala_ccode_node_unref0 (_tmp357_);
+                       _tmp358_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
                        _tmp359_ = _tmp358_;
-                       vala_ccode_function_call_add_argument (_tmp357_, (ValaCCodeExpression*) _tmp359_);
-                       _vala_ccode_node_unref0 (_tmp359_);
-                       _tmp360_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp361_ = _tmp360_;
-                       _tmp362_ = ccall;
-                       vala_ccode_function_add_expression (_tmp361_, (ValaCCodeExpression*) _tmp362_);
-                       _tmp363_ = vala_ccode_identifier_new ("g_type_free_instance");
+                       _tmp360_ = ccall;
+                       vala_ccode_function_add_expression (_tmp359_, (ValaCCodeExpression*) _tmp360_);
+                       _tmp361_ = vala_ccode_identifier_new ("g_type_free_instance");
+                       _tmp362_ = _tmp361_;
+                       _tmp363_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp362_);
                        _tmp364_ = _tmp363_;
-                       _tmp365_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp364_);
-                       _tmp366_ = _tmp365_;
-                       _vala_ccode_node_unref0 (_tmp364_);
-                       free = _tmp366_;
-                       _tmp367_ = free;
-                       _tmp368_ = vala_ccode_identifier_new ("self");
+                       _vala_ccode_node_unref0 (_tmp362_);
+                       free = _tmp364_;
+                       _tmp365_ = free;
+                       _tmp366_ = vala_ccode_identifier_new ("self");
+                       _tmp367_ = _tmp366_;
+                       _tmp368_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp367_, "GTypeInstance *");
                        _tmp369_ = _tmp368_;
-                       _tmp370_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp369_, "GTypeInstance *");
-                       _tmp371_ = _tmp370_;
-                       vala_ccode_function_call_add_argument (_tmp367_, (ValaCCodeExpression*) _tmp371_);
-                       _vala_ccode_node_unref0 (_tmp371_);
+                       vala_ccode_function_call_add_argument (_tmp365_, (ValaCCodeExpression*) _tmp369_);
                        _vala_ccode_node_unref0 (_tmp369_);
-                       _tmp372_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp373_ = _tmp372_;
-                       _tmp374_ = free;
-                       vala_ccode_function_add_expression (_tmp373_, (ValaCCodeExpression*) _tmp374_);
-                       _tmp375_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp376_ = _tmp375_;
-                       vala_ccode_function_close (_tmp376_);
+                       _vala_ccode_node_unref0 (_tmp367_);
+                       _tmp370_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp371_ = _tmp370_;
+                       _tmp372_ = free;
+                       vala_ccode_function_add_expression (_tmp371_, (ValaCCodeExpression*) _tmp372_);
+                       _tmp373_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp374_ = _tmp373_;
+                       vala_ccode_function_close (_tmp374_);
                        vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-                       _tmp377_ = ((ValaCCodeBaseModule*) self)->cfile;
-                       _tmp378_ = unref_fun;
-                       vala_ccode_file_add_function (_tmp377_, _tmp378_);
+                       _tmp375_ = ((ValaCCodeBaseModule*) self)->cfile;
+                       _tmp376_ = unref_fun;
+                       vala_ccode_file_add_function (_tmp375_, _tmp376_);
                        _vala_ccode_node_unref0 (free);
                        _vala_ccode_node_unref0 (ccast);
                        _vala_ccode_node_unref0 (get_class);
@@ -5204,67 +5269,67 @@ static void vala_gtype_module_real_visit_class (ValaCodeVisitor* base, ValaClass
                }
                _vala_typeregister_function_unref0 (type_fun);
        } else {
-               gboolean _tmp379_ = FALSE;
+               gboolean _tmp377_ = FALSE;
+               ValaClass* _tmp378_ = NULL;
+               ValaClass* _tmp379_ = NULL;
                ValaClass* _tmp380_ = NULL;
-               ValaClass* _tmp381_ = NULL;
-               ValaClass* _tmp382_ = NULL;
-               _tmp380_ = cl;
-               _tmp381_ = vala_class_get_base_class (_tmp380_);
-               _tmp382_ = _tmp381_;
-               if (_tmp382_ == NULL) {
-                       _tmp379_ = TRUE;
+               _tmp378_ = cl;
+               _tmp379_ = vala_class_get_base_class (_tmp378_);
+               _tmp380_ = _tmp379_;
+               if (_tmp380_ == NULL) {
+                       _tmp377_ = TRUE;
                } else {
+                       ValaClass* _tmp381_ = NULL;
+                       ValaClass* _tmp382_ = NULL;
                        ValaClass* _tmp383_ = NULL;
                        ValaClass* _tmp384_ = NULL;
+                       _tmp381_ = cl;
+                       _tmp382_ = vala_class_get_base_class (_tmp381_);
+                       _tmp383_ = _tmp382_;
+                       _tmp384_ = ((ValaCCodeBaseModule*) self)->gsource_type;
+                       _tmp377_ = _tmp383_ == _tmp384_;
+               }
+               if (_tmp377_) {
                        ValaClass* _tmp385_ = NULL;
                        ValaClass* _tmp386_ = NULL;
-                       _tmp383_ = cl;
-                       _tmp384_ = vala_class_get_base_class (_tmp383_);
-                       _tmp385_ = _tmp384_;
-                       _tmp386_ = ((ValaCCodeBaseModule*) self)->gsource_type;
-                       _tmp379_ = _tmp385_ == _tmp386_;
-               }
-               if (_tmp379_) {
-                       ValaClass* _tmp387_ = NULL;
-                       ValaClass* _tmp388_ = NULL;
-                       _tmp387_ = cl;
-                       vala_gtype_module_add_instance_init_function (self, _tmp387_);
-                       _tmp388_ = cl;
-                       vala_gtype_module_add_finalize_function (self, _tmp388_);
+                       _tmp385_ = cl;
+                       vala_gtype_module_add_instance_init_function (self, _tmp385_);
+                       _tmp386_ = cl;
+                       vala_gtype_module_add_finalize_function (self, _tmp386_);
                }
        }
-       _tmp389_ = old_param_spec_struct;
-       _tmp390_ = _vala_ccode_node_ref0 (_tmp389_);
+       _tmp387_ = old_param_spec_struct;
+       _tmp388_ = _vala_ccode_node_ref0 (_tmp387_);
        _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->param_spec_struct);
-       ((ValaCCodeBaseModule*) self)->param_spec_struct = _tmp390_;
-       _tmp391_ = old_prop_enum;
-       _tmp392_ = _vala_ccode_node_ref0 (_tmp391_);
+       ((ValaCCodeBaseModule*) self)->param_spec_struct = _tmp388_;
+       _tmp389_ = old_prop_enum;
+       _tmp390_ = _vala_ccode_node_ref0 (_tmp389_);
        _vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->prop_enum);
-       ((ValaCCodeBaseModule*) self)->prop_enum = _tmp392_;
-       _tmp393_ = old_class_init_context;
-       _tmp394_ = _vala_ccode_base_module_emit_context_ref0 (_tmp393_);
+       ((ValaCCodeBaseModule*) self)->prop_enum = _tmp390_;
+       _tmp391_ = old_class_init_context;
+       _tmp392_ = _vala_ccode_base_module_emit_context_ref0 (_tmp391_);
        _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_init_context);
-       ((ValaCCodeBaseModule*) self)->class_init_context = _tmp394_;
-       _tmp395_ = old_base_init_context;
-       _tmp396_ = _vala_ccode_base_module_emit_context_ref0 (_tmp395_);
+       ((ValaCCodeBaseModule*) self)->class_init_context = _tmp392_;
+       _tmp393_ = old_base_init_context;
+       _tmp394_ = _vala_ccode_base_module_emit_context_ref0 (_tmp393_);
        _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_init_context);
-       ((ValaCCodeBaseModule*) self)->base_init_context = _tmp396_;
-       _tmp397_ = old_class_finalize_context;
-       _tmp398_ = _vala_ccode_base_module_emit_context_ref0 (_tmp397_);
+       ((ValaCCodeBaseModule*) self)->base_init_context = _tmp394_;
+       _tmp395_ = old_class_finalize_context;
+       _tmp396_ = _vala_ccode_base_module_emit_context_ref0 (_tmp395_);
        _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_finalize_context);
-       ((ValaCCodeBaseModule*) self)->class_finalize_context = _tmp398_;
-       _tmp399_ = old_base_finalize_context;
-       _tmp400_ = _vala_ccode_base_module_emit_context_ref0 (_tmp399_);
+       ((ValaCCodeBaseModule*) self)->class_finalize_context = _tmp396_;
+       _tmp397_ = old_base_finalize_context;
+       _tmp398_ = _vala_ccode_base_module_emit_context_ref0 (_tmp397_);
        _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_finalize_context);
-       ((ValaCCodeBaseModule*) self)->base_finalize_context = _tmp400_;
-       _tmp401_ = old_instance_init_context;
-       _tmp402_ = _vala_ccode_base_module_emit_context_ref0 (_tmp401_);
+       ((ValaCCodeBaseModule*) self)->base_finalize_context = _tmp398_;
+       _tmp399_ = old_instance_init_context;
+       _tmp400_ = _vala_ccode_base_module_emit_context_ref0 (_tmp399_);
        _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_init_context);
-       ((ValaCCodeBaseModule*) self)->instance_init_context = _tmp402_;
-       _tmp403_ = old_instance_finalize_context;
-       _tmp404_ = _vala_ccode_base_module_emit_context_ref0 (_tmp403_);
+       ((ValaCCodeBaseModule*) self)->instance_init_context = _tmp400_;
+       _tmp401_ = old_instance_finalize_context;
+       _tmp402_ = _vala_ccode_base_module_emit_context_ref0 (_tmp401_);
        _vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_finalize_context);
-       ((ValaCCodeBaseModule*) self)->instance_finalize_context = _tmp404_;
+       ((ValaCCodeBaseModule*) self)->instance_finalize_context = _tmp402_;
        vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
        _vala_ccode_base_module_emit_context_unref0 (old_instance_finalize_context);
@@ -6288,88 +6353,87 @@ static void vala_gtype_module_add_g_param_spec_type_function (ValaGTypeModule* s
        ValaCCodeParameter* _tmp17_ = NULL;
        ValaCCodeParameter* _tmp18_ = NULL;
        ValaClass* _tmp19_ = NULL;
-       ValaSymbolAccessibility _tmp20_ = 0;
-       ValaSymbolAccessibility _tmp21_ = 0;
-       ValaCCodeFunction* _tmp23_ = NULL;
-       ValaCCodeFunction* _tmp24_ = NULL;
-       ValaCCodeFunction* _tmp25_ = NULL;
-       ValaClass* _tmp26_ = NULL;
-       ValaSymbol* _tmp27_ = NULL;
-       ValaSymbol* _tmp28_ = NULL;
-       gchar* _tmp29_ = NULL;
-       gchar* _tmp30_ = NULL;
-       ValaClass* _tmp31_ = NULL;
-       const gchar* _tmp32_ = NULL;
-       const gchar* _tmp33_ = NULL;
-       gchar* _tmp34_ = NULL;
-       gchar* _tmp35_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp36_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp37_ = NULL;
+       gboolean _tmp20_ = FALSE;
+       ValaCCodeFunction* _tmp30_ = NULL;
+       ValaCCodeFunction* _tmp31_ = NULL;
+       ValaCCodeFunction* _tmp32_ = NULL;
+       ValaClass* _tmp33_ = NULL;
+       ValaSymbol* _tmp34_ = NULL;
+       ValaSymbol* _tmp35_ = NULL;
+       gchar* _tmp36_ = NULL;
+       gchar* _tmp37_ = NULL;
+       ValaClass* _tmp38_ = NULL;
+       const gchar* _tmp39_ = NULL;
+       const gchar* _tmp40_ = NULL;
+       gchar* _tmp41_ = NULL;
+       gchar* _tmp42_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp43_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp44_ = NULL;
        ValaCCodeFunctionCall* subccall = NULL;
-       ValaCCodeIdentifier* _tmp38_ = NULL;
-       ValaCCodeIdentifier* _tmp39_ = NULL;
-       ValaCCodeFunctionCall* _tmp40_ = NULL;
-       ValaCCodeFunctionCall* _tmp41_ = NULL;
-       ValaCCodeIdentifier* _tmp42_ = NULL;
-       ValaCCodeIdentifier* _tmp43_ = NULL;
-       ValaClass* _tmp44_ = NULL;
-       gchar* _tmp45_ = NULL;
-       gchar* _tmp46_ = NULL;
-       ValaCCodeIdentifier* _tmp47_ = NULL;
-       ValaCCodeIdentifier* _tmp48_ = NULL;
-       ValaCCodeFunctionCall* ccall = NULL;
+       ValaCCodeIdentifier* _tmp45_ = NULL;
+       ValaCCodeIdentifier* _tmp46_ = NULL;
+       ValaCCodeFunctionCall* _tmp47_ = NULL;
+       ValaCCodeFunctionCall* _tmp48_ = NULL;
        ValaCCodeIdentifier* _tmp49_ = NULL;
        ValaCCodeIdentifier* _tmp50_ = NULL;
-       ValaCCodeFunctionCall* _tmp51_ = NULL;
-       ValaCCodeFunctionCall* _tmp52_ = NULL;
-       ValaCCodeFunctionCall* _tmp53_ = NULL;
-       ValaCCodeFunctionCall* _tmp54_ = NULL;
+       ValaClass* _tmp51_ = NULL;
+       gchar* _tmp52_ = NULL;
+       gchar* _tmp53_ = NULL;
+       ValaCCodeIdentifier* _tmp54_ = NULL;
        ValaCCodeIdentifier* _tmp55_ = NULL;
+       ValaCCodeFunctionCall* ccall = NULL;
        ValaCCodeIdentifier* _tmp56_ = NULL;
-       ValaCCodeFunction* _tmp57_ = NULL;
-       ValaCCodeFunction* _tmp58_ = NULL;
+       ValaCCodeIdentifier* _tmp57_ = NULL;
+       ValaCCodeFunctionCall* _tmp58_ = NULL;
        ValaCCodeFunctionCall* _tmp59_ = NULL;
-       ValaCCodeIdentifier* _tmp60_ = NULL;
-       ValaCCodeIdentifier* _tmp61_ = NULL;
-       ValaCCodeFunctionCall* _tmp62_ = NULL;
-       ValaCCodeFunctionCall* _tmp63_ = NULL;
-       ValaCCodeIdentifier* _tmp64_ = NULL;
-       ValaCCodeIdentifier* _tmp65_ = NULL;
+       ValaCCodeFunctionCall* _tmp60_ = NULL;
+       ValaCCodeFunctionCall* _tmp61_ = NULL;
+       ValaCCodeIdentifier* _tmp62_ = NULL;
+       ValaCCodeIdentifier* _tmp63_ = NULL;
+       ValaCCodeFunction* _tmp64_ = NULL;
+       ValaCCodeFunction* _tmp65_ = NULL;
        ValaCCodeFunctionCall* _tmp66_ = NULL;
        ValaCCodeIdentifier* _tmp67_ = NULL;
        ValaCCodeIdentifier* _tmp68_ = NULL;
        ValaCCodeFunctionCall* _tmp69_ = NULL;
-       ValaCCodeIdentifier* _tmp70_ = NULL;
+       ValaCCodeFunctionCall* _tmp70_ = NULL;
        ValaCCodeIdentifier* _tmp71_ = NULL;
-       ValaCCodeFunctionCall* _tmp72_ = NULL;
-       ValaCCodeIdentifier* _tmp73_ = NULL;
+       ValaCCodeIdentifier* _tmp72_ = NULL;
+       ValaCCodeFunctionCall* _tmp73_ = NULL;
        ValaCCodeIdentifier* _tmp74_ = NULL;
-       ValaCCodeFunctionCall* _tmp75_ = NULL;
-       ValaCCodeIdentifier* _tmp76_ = NULL;
+       ValaCCodeIdentifier* _tmp75_ = NULL;
+       ValaCCodeFunctionCall* _tmp76_ = NULL;
        ValaCCodeIdentifier* _tmp77_ = NULL;
-       ValaCCodeFunction* _tmp78_ = NULL;
-       ValaCCodeFunction* _tmp79_ = NULL;
+       ValaCCodeIdentifier* _tmp78_ = NULL;
+       ValaCCodeFunctionCall* _tmp79_ = NULL;
        ValaCCodeIdentifier* _tmp80_ = NULL;
        ValaCCodeIdentifier* _tmp81_ = NULL;
        ValaCCodeFunctionCall* _tmp82_ = NULL;
        ValaCCodeIdentifier* _tmp83_ = NULL;
        ValaCCodeIdentifier* _tmp84_ = NULL;
-       ValaCCodeFunctionCall* _tmp85_ = NULL;
-       ValaCCodeFunctionCall* _tmp86_ = NULL;
+       ValaCCodeFunction* _tmp85_ = NULL;
+       ValaCCodeFunction* _tmp86_ = NULL;
        ValaCCodeIdentifier* _tmp87_ = NULL;
        ValaCCodeIdentifier* _tmp88_ = NULL;
-       ValaCCodeFunction* _tmp89_ = NULL;
-       ValaCCodeFunction* _tmp90_ = NULL;
-       ValaCCodeFunctionCall* _tmp91_ = NULL;
-       ValaCCodeMemberAccess* _tmp92_ = NULL;
-       ValaCCodeMemberAccess* _tmp93_ = NULL;
+       ValaCCodeFunctionCall* _tmp89_ = NULL;
+       ValaCCodeIdentifier* _tmp90_ = NULL;
+       ValaCCodeIdentifier* _tmp91_ = NULL;
+       ValaCCodeFunctionCall* _tmp92_ = NULL;
+       ValaCCodeFunctionCall* _tmp93_ = NULL;
        ValaCCodeIdentifier* _tmp94_ = NULL;
        ValaCCodeIdentifier* _tmp95_ = NULL;
        ValaCCodeFunction* _tmp96_ = NULL;
        ValaCCodeFunction* _tmp97_ = NULL;
        ValaCCodeFunctionCall* _tmp98_ = NULL;
-       ValaCCodeFile* _tmp99_ = NULL;
-       ValaCCodeFunction* _tmp100_ = NULL;
+       ValaCCodeMemberAccess* _tmp99_ = NULL;
+       ValaCCodeMemberAccess* _tmp100_ = NULL;
+       ValaCCodeIdentifier* _tmp101_ = NULL;
+       ValaCCodeIdentifier* _tmp102_ = NULL;
+       ValaCCodeFunction* _tmp103_ = NULL;
+       ValaCCodeFunction* _tmp104_ = NULL;
+       ValaCCodeFunctionCall* _tmp105_ = NULL;
+       ValaCCodeFile* _tmp106_ = NULL;
+       ValaCCodeFunction* _tmp107_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (cl != NULL);
        _tmp0_ = cl;
@@ -6404,135 +6468,158 @@ static void vala_gtype_module_add_g_param_spec_type_function (ValaGTypeModule* s
        vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
        _vala_ccode_node_unref0 (_tmp18_);
        _tmp19_ = cl;
-       _tmp20_ = vala_symbol_get_access ((ValaSymbol*) _tmp19_);
-       _tmp21_ = _tmp20_;
-       if (_tmp21_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-               ValaCCodeFunction* _tmp22_ = NULL;
-               _tmp22_ = function;
-               vala_ccode_function_set_modifiers (_tmp22_, VALA_CCODE_MODIFIERS_STATIC);
+       _tmp20_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp19_);
+       if (_tmp20_) {
+               ValaCCodeFunction* _tmp21_ = NULL;
+               _tmp21_ = function;
+               vala_ccode_function_set_modifiers (_tmp21_, VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp22_ = FALSE;
+               ValaCodeContext* _tmp23_ = NULL;
+               ValaCodeContext* _tmp24_ = NULL;
+               gboolean _tmp25_ = FALSE;
+               gboolean _tmp26_ = FALSE;
+               _tmp23_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp24_ = _tmp23_;
+               _tmp25_ = vala_code_context_get_hide_internal (_tmp24_);
+               _tmp26_ = _tmp25_;
+               if (_tmp26_) {
+                       ValaClass* _tmp27_ = NULL;
+                       gboolean _tmp28_ = FALSE;
+                       _tmp27_ = cl;
+                       _tmp28_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp27_);
+                       _tmp22_ = _tmp28_;
+               } else {
+                       _tmp22_ = FALSE;
+               }
+               if (_tmp22_) {
+                       ValaCCodeFunction* _tmp29_ = NULL;
+                       _tmp29_ = function;
+                       vala_ccode_function_set_modifiers (_tmp29_, VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp23_ = function;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp23_);
-       _tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp25_ = _tmp24_;
-       _tmp26_ = cl;
-       _tmp27_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp26_);
-       _tmp28_ = _tmp27_;
-       _tmp29_ = vala_ccode_base_module_get_ccode_prefix (_tmp28_);
-       _tmp30_ = _tmp29_;
-       _tmp31_ = cl;
-       _tmp32_ = vala_symbol_get_name ((ValaSymbol*) _tmp31_);
-       _tmp33_ = _tmp32_;
-       _tmp34_ = g_strdup_printf ("%sParamSpec%s*", _tmp30_, _tmp33_);
+       _tmp30_ = function;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp30_);
+       _tmp31_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp32_ = _tmp31_;
+       _tmp33_ = cl;
+       _tmp34_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp33_);
        _tmp35_ = _tmp34_;
-       _tmp36_ = vala_ccode_variable_declarator_new ("spec", NULL, NULL);
+       _tmp36_ = vala_ccode_base_module_get_ccode_prefix (_tmp35_);
        _tmp37_ = _tmp36_;
-       vala_ccode_function_add_declaration (_tmp25_, _tmp35_, (ValaCCodeDeclarator*) _tmp37_, 0);
-       _vala_ccode_node_unref0 (_tmp37_);
-       _g_free0 (_tmp35_);
-       _g_free0 (_tmp30_);
-       _tmp38_ = vala_ccode_identifier_new ("g_type_is_a");
-       _tmp39_ = _tmp38_;
-       _tmp40_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp39_);
-       _tmp41_ = _tmp40_;
-       _vala_ccode_node_unref0 (_tmp39_);
-       subccall = _tmp41_;
-       _tmp42_ = vala_ccode_identifier_new ("object_type");
-       _tmp43_ = _tmp42_;
-       vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp43_);
-       _vala_ccode_node_unref0 (_tmp43_);
-       _tmp44_ = cl;
-       _tmp45_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp44_);
+       _tmp38_ = cl;
+       _tmp39_ = vala_symbol_get_name ((ValaSymbol*) _tmp38_);
+       _tmp40_ = _tmp39_;
+       _tmp41_ = g_strdup_printf ("%sParamSpec%s*", _tmp37_, _tmp40_);
+       _tmp42_ = _tmp41_;
+       _tmp43_ = vala_ccode_variable_declarator_new ("spec", NULL, NULL);
+       _tmp44_ = _tmp43_;
+       vala_ccode_function_add_declaration (_tmp32_, _tmp42_, (ValaCCodeDeclarator*) _tmp44_, 0);
+       _vala_ccode_node_unref0 (_tmp44_);
+       _g_free0 (_tmp42_);
+       _g_free0 (_tmp37_);
+       _tmp45_ = vala_ccode_identifier_new ("g_type_is_a");
        _tmp46_ = _tmp45_;
-       _tmp47_ = vala_ccode_identifier_new (_tmp46_);
+       _tmp47_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp46_);
        _tmp48_ = _tmp47_;
-       vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp48_);
-       _vala_ccode_node_unref0 (_tmp48_);
-       _g_free0 (_tmp46_);
-       _tmp49_ = vala_ccode_identifier_new ("g_return_val_if_fail");
+       _vala_ccode_node_unref0 (_tmp46_);
+       subccall = _tmp48_;
+       _tmp49_ = vala_ccode_identifier_new ("object_type");
        _tmp50_ = _tmp49_;
-       _tmp51_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp50_);
-       _tmp52_ = _tmp51_;
+       vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp50_);
        _vala_ccode_node_unref0 (_tmp50_);
-       ccall = _tmp52_;
-       _tmp53_ = ccall;
-       vala_ccode_function_call_add_argument (_tmp53_, (ValaCCodeExpression*) subccall);
-       _tmp54_ = ccall;
-       _tmp55_ = vala_ccode_identifier_new ("NULL");
-       _tmp56_ = _tmp55_;
-       vala_ccode_function_call_add_argument (_tmp54_, (ValaCCodeExpression*) _tmp56_);
-       _vala_ccode_node_unref0 (_tmp56_);
-       _tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp58_ = _tmp57_;
-       _tmp59_ = ccall;
-       vala_ccode_function_add_expression (_tmp58_, (ValaCCodeExpression*) _tmp59_);
-       _tmp60_ = vala_ccode_identifier_new ("g_param_spec_internal");
-       _tmp61_ = _tmp60_;
-       _tmp62_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp61_);
-       _vala_ccode_node_unref0 (ccall);
-       ccall = _tmp62_;
-       _vala_ccode_node_unref0 (_tmp61_);
-       _tmp63_ = ccall;
-       _tmp64_ = vala_ccode_identifier_new ("G_TYPE_PARAM_OBJECT");
+       _tmp51_ = cl;
+       _tmp52_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp51_);
+       _tmp53_ = _tmp52_;
+       _tmp54_ = vala_ccode_identifier_new (_tmp53_);
+       _tmp55_ = _tmp54_;
+       vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp55_);
+       _vala_ccode_node_unref0 (_tmp55_);
+       _g_free0 (_tmp53_);
+       _tmp56_ = vala_ccode_identifier_new ("g_return_val_if_fail");
+       _tmp57_ = _tmp56_;
+       _tmp58_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp57_);
+       _tmp59_ = _tmp58_;
+       _vala_ccode_node_unref0 (_tmp57_);
+       ccall = _tmp59_;
+       _tmp60_ = ccall;
+       vala_ccode_function_call_add_argument (_tmp60_, (ValaCCodeExpression*) subccall);
+       _tmp61_ = ccall;
+       _tmp62_ = vala_ccode_identifier_new ("NULL");
+       _tmp63_ = _tmp62_;
+       vala_ccode_function_call_add_argument (_tmp61_, (ValaCCodeExpression*) _tmp63_);
+       _vala_ccode_node_unref0 (_tmp63_);
+       _tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp65_ = _tmp64_;
-       vala_ccode_function_call_add_argument (_tmp63_, (ValaCCodeExpression*) _tmp65_);
-       _vala_ccode_node_unref0 (_tmp65_);
        _tmp66_ = ccall;
-       _tmp67_ = vala_ccode_identifier_new ("name");
+       vala_ccode_function_add_expression (_tmp65_, (ValaCCodeExpression*) _tmp66_);
+       _tmp67_ = vala_ccode_identifier_new ("g_param_spec_internal");
        _tmp68_ = _tmp67_;
-       vala_ccode_function_call_add_argument (_tmp66_, (ValaCCodeExpression*) _tmp68_);
+       _tmp69_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp68_);
+       _vala_ccode_node_unref0 (ccall);
+       ccall = _tmp69_;
        _vala_ccode_node_unref0 (_tmp68_);
-       _tmp69_ = ccall;
-       _tmp70_ = vala_ccode_identifier_new ("nick");
-       _tmp71_ = _tmp70_;
-       vala_ccode_function_call_add_argument (_tmp69_, (ValaCCodeExpression*) _tmp71_);
-       _vala_ccode_node_unref0 (_tmp71_);
-       _tmp72_ = ccall;
-       _tmp73_ = vala_ccode_identifier_new ("blurb");
-       _tmp74_ = _tmp73_;
-       vala_ccode_function_call_add_argument (_tmp72_, (ValaCCodeExpression*) _tmp74_);
-       _vala_ccode_node_unref0 (_tmp74_);
-       _tmp75_ = ccall;
-       _tmp76_ = vala_ccode_identifier_new ("flags");
-       _tmp77_ = _tmp76_;
-       vala_ccode_function_call_add_argument (_tmp75_, (ValaCCodeExpression*) _tmp77_);
-       _vala_ccode_node_unref0 (_tmp77_);
-       _tmp78_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp79_ = _tmp78_;
-       _tmp80_ = vala_ccode_identifier_new ("spec");
+       _tmp70_ = ccall;
+       _tmp71_ = vala_ccode_identifier_new ("G_TYPE_PARAM_OBJECT");
+       _tmp72_ = _tmp71_;
+       vala_ccode_function_call_add_argument (_tmp70_, (ValaCCodeExpression*) _tmp72_);
+       _vala_ccode_node_unref0 (_tmp72_);
+       _tmp73_ = ccall;
+       _tmp74_ = vala_ccode_identifier_new ("name");
+       _tmp75_ = _tmp74_;
+       vala_ccode_function_call_add_argument (_tmp73_, (ValaCCodeExpression*) _tmp75_);
+       _vala_ccode_node_unref0 (_tmp75_);
+       _tmp76_ = ccall;
+       _tmp77_ = vala_ccode_identifier_new ("nick");
+       _tmp78_ = _tmp77_;
+       vala_ccode_function_call_add_argument (_tmp76_, (ValaCCodeExpression*) _tmp78_);
+       _vala_ccode_node_unref0 (_tmp78_);
+       _tmp79_ = ccall;
+       _tmp80_ = vala_ccode_identifier_new ("blurb");
        _tmp81_ = _tmp80_;
-       _tmp82_ = ccall;
-       vala_ccode_function_add_assignment (_tmp79_, (ValaCCodeExpression*) _tmp81_, (ValaCCodeExpression*) _tmp82_);
+       vala_ccode_function_call_add_argument (_tmp79_, (ValaCCodeExpression*) _tmp81_);
        _vala_ccode_node_unref0 (_tmp81_);
-       _tmp83_ = vala_ccode_identifier_new ("G_PARAM_SPEC");
+       _tmp82_ = ccall;
+       _tmp83_ = vala_ccode_identifier_new ("flags");
        _tmp84_ = _tmp83_;
-       _tmp85_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp84_);
-       _vala_ccode_node_unref0 (ccall);
-       ccall = _tmp85_;
+       vala_ccode_function_call_add_argument (_tmp82_, (ValaCCodeExpression*) _tmp84_);
        _vala_ccode_node_unref0 (_tmp84_);
-       _tmp86_ = ccall;
+       _tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp86_ = _tmp85_;
        _tmp87_ = vala_ccode_identifier_new ("spec");
        _tmp88_ = _tmp87_;
-       vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp88_);
+       _tmp89_ = ccall;
+       vala_ccode_function_add_assignment (_tmp86_, (ValaCCodeExpression*) _tmp88_, (ValaCCodeExpression*) _tmp89_);
        _vala_ccode_node_unref0 (_tmp88_);
-       _tmp89_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp90_ = _tmp89_;
-       _tmp91_ = ccall;
-       _tmp92_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp91_, "value_type");
-       _tmp93_ = _tmp92_;
-       _tmp94_ = vala_ccode_identifier_new ("object_type");
+       _tmp90_ = vala_ccode_identifier_new ("G_PARAM_SPEC");
+       _tmp91_ = _tmp90_;
+       _tmp92_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp91_);
+       _vala_ccode_node_unref0 (ccall);
+       ccall = _tmp92_;
+       _vala_ccode_node_unref0 (_tmp91_);
+       _tmp93_ = ccall;
+       _tmp94_ = vala_ccode_identifier_new ("spec");
        _tmp95_ = _tmp94_;
-       vala_ccode_function_add_assignment (_tmp90_, (ValaCCodeExpression*) _tmp93_, (ValaCCodeExpression*) _tmp95_);
+       vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp95_);
        _vala_ccode_node_unref0 (_tmp95_);
-       _vala_ccode_node_unref0 (_tmp93_);
        _tmp96_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp97_ = _tmp96_;
        _tmp98_ = ccall;
-       vala_ccode_function_add_return (_tmp97_, (ValaCCodeExpression*) _tmp98_);
+       _tmp99_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp98_, "value_type");
+       _tmp100_ = _tmp99_;
+       _tmp101_ = vala_ccode_identifier_new ("object_type");
+       _tmp102_ = _tmp101_;
+       vala_ccode_function_add_assignment (_tmp97_, (ValaCCodeExpression*) _tmp100_, (ValaCCodeExpression*) _tmp102_);
+       _vala_ccode_node_unref0 (_tmp102_);
+       _vala_ccode_node_unref0 (_tmp100_);
+       _tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp104_ = _tmp103_;
+       _tmp105_ = ccall;
+       vala_ccode_function_add_return (_tmp104_, (ValaCCodeExpression*) _tmp105_);
        vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-       _tmp99_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp100_ = function;
-       vala_ccode_file_add_function (_tmp99_, _tmp100_);
+       _tmp106_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp107_ = function;
+       vala_ccode_file_add_function (_tmp106_, _tmp107_);
        _vala_ccode_node_unref0 (ccall);
        _vala_ccode_node_unref0 (subccall);
        _vala_ccode_node_unref0 (function);
@@ -6554,145 +6641,144 @@ static void vala_gtype_module_add_g_value_set_function (ValaGTypeModule* self, V
        ValaCCodeParameter* _tmp9_ = NULL;
        ValaCCodeParameter* _tmp10_ = NULL;
        ValaClass* _tmp11_ = NULL;
-       ValaSymbolAccessibility _tmp12_ = 0;
-       ValaSymbolAccessibility _tmp13_ = 0;
+       gboolean _tmp12_ = FALSE;
        ValaCCodeMemberAccess* vpointer = NULL;
-       ValaCCodeIdentifier* _tmp15_ = NULL;
-       ValaCCodeIdentifier* _tmp16_ = NULL;
-       ValaCCodeMemberAccess* _tmp17_ = NULL;
-       ValaCCodeMemberAccess* _tmp18_ = NULL;
-       ValaCCodeMemberAccess* _tmp19_ = NULL;
-       ValaCCodeMemberAccess* _tmp20_ = NULL;
-       ValaCCodeFunction* _tmp21_ = NULL;
-       ValaCCodeFunction* _tmp22_ = NULL;
-       ValaCCodeFunction* _tmp23_ = NULL;
-       ValaClass* _tmp24_ = NULL;
-       gchar* _tmp25_ = NULL;
-       gchar* _tmp26_ = NULL;
-       gchar* _tmp27_ = NULL;
-       gchar* _tmp28_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp29_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp30_ = NULL;
+       ValaCCodeIdentifier* _tmp22_ = NULL;
+       ValaCCodeIdentifier* _tmp23_ = NULL;
+       ValaCCodeMemberAccess* _tmp24_ = NULL;
+       ValaCCodeMemberAccess* _tmp25_ = NULL;
+       ValaCCodeMemberAccess* _tmp26_ = NULL;
+       ValaCCodeMemberAccess* _tmp27_ = NULL;
+       ValaCCodeFunction* _tmp28_ = NULL;
+       ValaCCodeFunction* _tmp29_ = NULL;
+       ValaCCodeFunction* _tmp30_ = NULL;
+       ValaClass* _tmp31_ = NULL;
+       gchar* _tmp32_ = NULL;
+       gchar* _tmp33_ = NULL;
+       gchar* _tmp34_ = NULL;
+       gchar* _tmp35_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp36_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp37_ = NULL;
        ValaCCodeFunctionCall* ccall_typecheck = NULL;
-       ValaCCodeIdentifier* _tmp31_ = NULL;
-       ValaCCodeIdentifier* _tmp32_ = NULL;
-       ValaCCodeFunctionCall* _tmp33_ = NULL;
-       ValaCCodeFunctionCall* _tmp34_ = NULL;
-       ValaCCodeFunctionCall* _tmp35_ = NULL;
-       ValaCCodeIdentifier* _tmp36_ = NULL;
-       ValaCCodeIdentifier* _tmp37_ = NULL;
-       ValaCCodeFunctionCall* _tmp38_ = NULL;
-       ValaClass* _tmp39_ = NULL;
-       gchar* _tmp40_ = NULL;
-       gchar* _tmp41_ = NULL;
-       ValaCCodeIdentifier* _tmp42_ = NULL;
+       ValaCCodeIdentifier* _tmp38_ = NULL;
+       ValaCCodeIdentifier* _tmp39_ = NULL;
+       ValaCCodeFunctionCall* _tmp40_ = NULL;
+       ValaCCodeFunctionCall* _tmp41_ = NULL;
+       ValaCCodeFunctionCall* _tmp42_ = NULL;
        ValaCCodeIdentifier* _tmp43_ = NULL;
-       ValaCCodeFunctionCall* ccall = NULL;
        ValaCCodeIdentifier* _tmp44_ = NULL;
-       ValaCCodeIdentifier* _tmp45_ = NULL;
-       ValaCCodeFunctionCall* _tmp46_ = NULL;
-       ValaCCodeFunctionCall* _tmp47_ = NULL;
-       ValaCCodeFunctionCall* _tmp48_ = NULL;
-       ValaCCodeFunctionCall* _tmp49_ = NULL;
-       ValaCCodeFunction* _tmp50_ = NULL;
-       ValaCCodeFunction* _tmp51_ = NULL;
-       ValaCCodeFunctionCall* _tmp52_ = NULL;
-       ValaCCodeFunction* _tmp53_ = NULL;
-       ValaCCodeFunction* _tmp54_ = NULL;
-       ValaCCodeConstant* _tmp55_ = NULL;
-       ValaCCodeConstant* _tmp56_ = NULL;
+       ValaCCodeFunctionCall* _tmp45_ = NULL;
+       ValaClass* _tmp46_ = NULL;
+       gchar* _tmp47_ = NULL;
+       gchar* _tmp48_ = NULL;
+       ValaCCodeIdentifier* _tmp49_ = NULL;
+       ValaCCodeIdentifier* _tmp50_ = NULL;
+       ValaCCodeFunctionCall* ccall = NULL;
+       ValaCCodeIdentifier* _tmp51_ = NULL;
+       ValaCCodeIdentifier* _tmp52_ = NULL;
+       ValaCCodeFunctionCall* _tmp53_ = NULL;
+       ValaCCodeFunctionCall* _tmp54_ = NULL;
+       ValaCCodeFunctionCall* _tmp55_ = NULL;
+       ValaCCodeFunctionCall* _tmp56_ = NULL;
        ValaCCodeFunction* _tmp57_ = NULL;
        ValaCCodeFunction* _tmp58_ = NULL;
-       ValaCCodeIdentifier* _tmp59_ = NULL;
-       ValaCCodeIdentifier* _tmp60_ = NULL;
-       ValaCCodeIdentifier* _tmp61_ = NULL;
-       ValaCCodeIdentifier* _tmp62_ = NULL;
-       ValaCCodeFunctionCall* _tmp63_ = NULL;
-       ValaCCodeFunctionCall* _tmp64_ = NULL;
-       ValaCCodeIdentifier* _tmp65_ = NULL;
+       ValaCCodeFunctionCall* _tmp59_ = NULL;
+       ValaCCodeFunction* _tmp60_ = NULL;
+       ValaCCodeFunction* _tmp61_ = NULL;
+       ValaCCodeConstant* _tmp62_ = NULL;
+       ValaCCodeConstant* _tmp63_ = NULL;
+       ValaCCodeFunction* _tmp64_ = NULL;
+       ValaCCodeFunction* _tmp65_ = NULL;
        ValaCCodeIdentifier* _tmp66_ = NULL;
-       ValaCCodeFunctionCall* _tmp67_ = NULL;
-       ValaClass* _tmp68_ = NULL;
-       gchar* _tmp69_ = NULL;
-       gchar* _tmp70_ = NULL;
-       ValaCCodeIdentifier* _tmp71_ = NULL;
+       ValaCCodeIdentifier* _tmp67_ = NULL;
+       ValaCCodeIdentifier* _tmp68_ = NULL;
+       ValaCCodeIdentifier* _tmp69_ = NULL;
+       ValaCCodeFunctionCall* _tmp70_ = NULL;
+       ValaCCodeFunctionCall* _tmp71_ = NULL;
        ValaCCodeIdentifier* _tmp72_ = NULL;
        ValaCCodeIdentifier* _tmp73_ = NULL;
-       ValaCCodeIdentifier* _tmp74_ = NULL;
-       ValaCCodeFunctionCall* _tmp75_ = NULL;
-       ValaCCodeFunctionCall* _tmp76_ = NULL;
-       ValaCCodeFunctionCall* _tmp77_ = NULL;
-       ValaCCodeFunction* _tmp78_ = NULL;
-       ValaCCodeFunction* _tmp79_ = NULL;
-       ValaCCodeFunctionCall* _tmp80_ = NULL;
-       ValaCCodeFunctionCall* ccall_typefrominstance = NULL;
+       ValaCCodeFunctionCall* _tmp74_ = NULL;
+       ValaClass* _tmp75_ = NULL;
+       gchar* _tmp76_ = NULL;
+       gchar* _tmp77_ = NULL;
+       ValaCCodeIdentifier* _tmp78_ = NULL;
+       ValaCCodeIdentifier* _tmp79_ = NULL;
+       ValaCCodeIdentifier* _tmp80_ = NULL;
        ValaCCodeIdentifier* _tmp81_ = NULL;
-       ValaCCodeIdentifier* _tmp82_ = NULL;
+       ValaCCodeFunctionCall* _tmp82_ = NULL;
        ValaCCodeFunctionCall* _tmp83_ = NULL;
        ValaCCodeFunctionCall* _tmp84_ = NULL;
-       ValaCCodeIdentifier* _tmp85_ = NULL;
-       ValaCCodeIdentifier* _tmp86_ = NULL;
-       ValaCCodeFunctionCall* ccall_gvaluetype = NULL;
-       ValaCCodeIdentifier* _tmp87_ = NULL;
+       ValaCCodeFunction* _tmp85_ = NULL;
+       ValaCCodeFunction* _tmp86_ = NULL;
+       ValaCCodeFunctionCall* _tmp87_ = NULL;
+       ValaCCodeFunctionCall* ccall_typefrominstance = NULL;
        ValaCCodeIdentifier* _tmp88_ = NULL;
-       ValaCCodeFunctionCall* _tmp89_ = NULL;
+       ValaCCodeIdentifier* _tmp89_ = NULL;
        ValaCCodeFunctionCall* _tmp90_ = NULL;
-       ValaCCodeIdentifier* _tmp91_ = NULL;
+       ValaCCodeFunctionCall* _tmp91_ = NULL;
        ValaCCodeIdentifier* _tmp92_ = NULL;
-       ValaCCodeFunctionCall* ccall_typecompatible = NULL;
        ValaCCodeIdentifier* _tmp93_ = NULL;
+       ValaCCodeFunctionCall* ccall_gvaluetype = NULL;
        ValaCCodeIdentifier* _tmp94_ = NULL;
-       ValaCCodeFunctionCall* _tmp95_ = NULL;
+       ValaCCodeIdentifier* _tmp95_ = NULL;
        ValaCCodeFunctionCall* _tmp96_ = NULL;
-       ValaCCodeIdentifier* _tmp97_ = NULL;
+       ValaCCodeFunctionCall* _tmp97_ = NULL;
        ValaCCodeIdentifier* _tmp98_ = NULL;
-       ValaCCodeFunctionCall* _tmp99_ = NULL;
-       ValaCCodeFunctionCall* _tmp100_ = NULL;
-       ValaCCodeFunction* _tmp101_ = NULL;
-       ValaCCodeFunction* _tmp102_ = NULL;
+       ValaCCodeIdentifier* _tmp99_ = NULL;
+       ValaCCodeFunctionCall* ccall_typecompatible = NULL;
+       ValaCCodeIdentifier* _tmp100_ = NULL;
+       ValaCCodeIdentifier* _tmp101_ = NULL;
+       ValaCCodeFunctionCall* _tmp102_ = NULL;
        ValaCCodeFunctionCall* _tmp103_ = NULL;
-       ValaCCodeFunction* _tmp104_ = NULL;
-       ValaCCodeFunction* _tmp105_ = NULL;
-       ValaCCodeConstant* _tmp106_ = NULL;
-       ValaCCodeConstant* _tmp107_ = NULL;
-       ValaClass* _tmp108_ = NULL;
-       gchar* _tmp109_ = NULL;
-       gchar* _tmp110_ = NULL;
-       ValaCCodeIdentifier* _tmp111_ = NULL;
-       ValaCCodeIdentifier* _tmp112_ = NULL;
-       ValaCCodeFunctionCall* _tmp113_ = NULL;
-       ValaCCodeFunctionCall* _tmp114_ = NULL;
-       ValaCCodeFunction* _tmp115_ = NULL;
-       ValaCCodeFunction* _tmp116_ = NULL;
-       ValaCCodeFunctionCall* _tmp117_ = NULL;
-       ValaCCodeFunction* _tmp118_ = NULL;
-       ValaCCodeFunction* _tmp119_ = NULL;
-       ValaCCodeFunction* _tmp120_ = NULL;
-       ValaCCodeFunction* _tmp121_ = NULL;
-       ValaCCodeConstant* _tmp122_ = NULL;
-       ValaCCodeConstant* _tmp123_ = NULL;
-       ValaCCodeFunction* _tmp124_ = NULL;
+       ValaCCodeIdentifier* _tmp104_ = NULL;
+       ValaCCodeIdentifier* _tmp105_ = NULL;
+       ValaCCodeFunctionCall* _tmp106_ = NULL;
+       ValaCCodeFunctionCall* _tmp107_ = NULL;
+       ValaCCodeFunction* _tmp108_ = NULL;
+       ValaCCodeFunction* _tmp109_ = NULL;
+       ValaCCodeFunctionCall* _tmp110_ = NULL;
+       ValaCCodeFunction* _tmp111_ = NULL;
+       ValaCCodeFunction* _tmp112_ = NULL;
+       ValaCCodeConstant* _tmp113_ = NULL;
+       ValaCCodeConstant* _tmp114_ = NULL;
+       ValaClass* _tmp115_ = NULL;
+       gchar* _tmp116_ = NULL;
+       gchar* _tmp117_ = NULL;
+       ValaCCodeIdentifier* _tmp118_ = NULL;
+       ValaCCodeIdentifier* _tmp119_ = NULL;
+       ValaCCodeFunctionCall* _tmp120_ = NULL;
+       ValaCCodeFunctionCall* _tmp121_ = NULL;
+       ValaCCodeFunction* _tmp122_ = NULL;
+       ValaCCodeFunction* _tmp123_ = NULL;
+       ValaCCodeFunctionCall* _tmp124_ = NULL;
        ValaCCodeFunction* _tmp125_ = NULL;
        ValaCCodeFunction* _tmp126_ = NULL;
        ValaCCodeFunction* _tmp127_ = NULL;
-       ValaCCodeIdentifier* _tmp128_ = NULL;
-       ValaCCodeIdentifier* _tmp129_ = NULL;
-       ValaClass* _tmp130_ = NULL;
-       gchar* _tmp131_ = NULL;
-       gchar* _tmp132_ = NULL;
-       ValaCCodeIdentifier* _tmp133_ = NULL;
-       ValaCCodeIdentifier* _tmp134_ = NULL;
-       ValaCCodeFunctionCall* _tmp135_ = NULL;
-       ValaCCodeFunctionCall* _tmp136_ = NULL;
-       ValaCCodeIdentifier* _tmp137_ = NULL;
-       ValaCCodeIdentifier* _tmp138_ = NULL;
-       ValaCCodeFunction* _tmp139_ = NULL;
-       ValaCCodeFunction* _tmp140_ = NULL;
-       ValaCCodeFunctionCall* _tmp141_ = NULL;
-       ValaCCodeFunction* _tmp142_ = NULL;
-       ValaCCodeFunction* _tmp143_ = NULL;
-       ValaCCodeFile* _tmp144_ = NULL;
-       ValaCCodeFunction* _tmp145_ = NULL;
+       ValaCCodeFunction* _tmp128_ = NULL;
+       ValaCCodeConstant* _tmp129_ = NULL;
+       ValaCCodeConstant* _tmp130_ = NULL;
+       ValaCCodeFunction* _tmp131_ = NULL;
+       ValaCCodeFunction* _tmp132_ = NULL;
+       ValaCCodeFunction* _tmp133_ = NULL;
+       ValaCCodeFunction* _tmp134_ = NULL;
+       ValaCCodeIdentifier* _tmp135_ = NULL;
+       ValaCCodeIdentifier* _tmp136_ = NULL;
+       ValaClass* _tmp137_ = NULL;
+       gchar* _tmp138_ = NULL;
+       gchar* _tmp139_ = NULL;
+       ValaCCodeIdentifier* _tmp140_ = NULL;
+       ValaCCodeIdentifier* _tmp141_ = NULL;
+       ValaCCodeFunctionCall* _tmp142_ = NULL;
+       ValaCCodeFunctionCall* _tmp143_ = NULL;
+       ValaCCodeIdentifier* _tmp144_ = NULL;
+       ValaCCodeIdentifier* _tmp145_ = NULL;
+       ValaCCodeFunction* _tmp146_ = NULL;
+       ValaCCodeFunction* _tmp147_ = NULL;
+       ValaCCodeFunctionCall* _tmp148_ = NULL;
+       ValaCCodeFunction* _tmp149_ = NULL;
+       ValaCCodeFunction* _tmp150_ = NULL;
+       ValaCCodeFile* _tmp151_ = NULL;
+       ValaCCodeFunction* _tmp152_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (cl != NULL);
        _tmp0_ = cl;
@@ -6713,221 +6799,244 @@ static void vala_gtype_module_add_g_value_set_function (ValaGTypeModule* self, V
        vala_ccode_function_add_parameter (_tmp8_, _tmp10_);
        _vala_ccode_node_unref0 (_tmp10_);
        _tmp11_ = cl;
-       _tmp12_ = vala_symbol_get_access ((ValaSymbol*) _tmp11_);
-       _tmp13_ = _tmp12_;
-       if (_tmp13_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-               ValaCCodeFunction* _tmp14_ = NULL;
-               _tmp14_ = function;
-               vala_ccode_function_set_modifiers (_tmp14_, VALA_CCODE_MODIFIERS_STATIC);
+       _tmp12_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp11_);
+       if (_tmp12_) {
+               ValaCCodeFunction* _tmp13_ = NULL;
+               _tmp13_ = function;
+               vala_ccode_function_set_modifiers (_tmp13_, VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp14_ = FALSE;
+               ValaCodeContext* _tmp15_ = NULL;
+               ValaCodeContext* _tmp16_ = NULL;
+               gboolean _tmp17_ = FALSE;
+               gboolean _tmp18_ = FALSE;
+               _tmp15_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp16_ = _tmp15_;
+               _tmp17_ = vala_code_context_get_hide_internal (_tmp16_);
+               _tmp18_ = _tmp17_;
+               if (_tmp18_) {
+                       ValaClass* _tmp19_ = NULL;
+                       gboolean _tmp20_ = FALSE;
+                       _tmp19_ = cl;
+                       _tmp20_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp19_);
+                       _tmp14_ = _tmp20_;
+               } else {
+                       _tmp14_ = FALSE;
+               }
+               if (_tmp14_) {
+                       ValaCCodeFunction* _tmp21_ = NULL;
+                       _tmp21_ = function;
+                       vala_ccode_function_set_modifiers (_tmp21_, VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp15_ = vala_ccode_identifier_new ("value");
-       _tmp16_ = _tmp15_;
-       _tmp17_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp16_, "data[0]");
-       _tmp18_ = _tmp17_;
-       _tmp19_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp18_, "v_pointer", FALSE);
-       _tmp20_ = _tmp19_;
-       _vala_ccode_node_unref0 (_tmp18_);
-       _vala_ccode_node_unref0 (_tmp16_);
-       vpointer = _tmp20_;
-       _tmp21_ = function;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp21_);
-       _tmp22_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp22_ = vala_ccode_identifier_new ("value");
        _tmp23_ = _tmp22_;
-       _tmp24_ = cl;
-       _tmp25_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp24_);
-       _tmp26_ = _tmp25_;
-       _tmp27_ = g_strconcat (_tmp26_, "*", NULL);
-       _tmp28_ = _tmp27_;
-       _tmp29_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
-       _tmp30_ = _tmp29_;
-       vala_ccode_function_add_declaration (_tmp23_, _tmp28_, (ValaCCodeDeclarator*) _tmp30_, 0);
-       _vala_ccode_node_unref0 (_tmp30_);
-       _g_free0 (_tmp28_);
-       _g_free0 (_tmp26_);
-       _tmp31_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
-       _tmp32_ = _tmp31_;
-       _tmp33_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp32_);
-       _tmp34_ = _tmp33_;
-       _vala_ccode_node_unref0 (_tmp32_);
-       ccall_typecheck = _tmp34_;
-       _tmp35_ = ccall_typecheck;
-       _tmp36_ = vala_ccode_identifier_new ("value");
+       _tmp24_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp23_, "data[0]");
+       _tmp25_ = _tmp24_;
+       _tmp26_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp25_, "v_pointer", FALSE);
+       _tmp27_ = _tmp26_;
+       _vala_ccode_node_unref0 (_tmp25_);
+       _vala_ccode_node_unref0 (_tmp23_);
+       vpointer = _tmp27_;
+       _tmp28_ = function;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp28_);
+       _tmp29_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp30_ = _tmp29_;
+       _tmp31_ = cl;
+       _tmp32_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp31_);
+       _tmp33_ = _tmp32_;
+       _tmp34_ = g_strconcat (_tmp33_, "*", NULL);
+       _tmp35_ = _tmp34_;
+       _tmp36_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
        _tmp37_ = _tmp36_;
-       vala_ccode_function_call_add_argument (_tmp35_, (ValaCCodeExpression*) _tmp37_);
+       vala_ccode_function_add_declaration (_tmp30_, _tmp35_, (ValaCCodeDeclarator*) _tmp37_, 0);
        _vala_ccode_node_unref0 (_tmp37_);
-       _tmp38_ = ccall_typecheck;
-       _tmp39_ = cl;
-       _tmp40_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp39_);
+       _g_free0 (_tmp35_);
+       _g_free0 (_tmp33_);
+       _tmp38_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
+       _tmp39_ = _tmp38_;
+       _tmp40_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp39_);
        _tmp41_ = _tmp40_;
-       _tmp42_ = vala_ccode_identifier_new (_tmp41_);
-       _tmp43_ = _tmp42_;
-       vala_ccode_function_call_add_argument (_tmp38_, (ValaCCodeExpression*) _tmp43_);
-       _vala_ccode_node_unref0 (_tmp43_);
-       _g_free0 (_tmp41_);
-       _tmp44_ = vala_ccode_identifier_new ("g_return_if_fail");
-       _tmp45_ = _tmp44_;
-       _tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
-       _tmp47_ = _tmp46_;
-       _vala_ccode_node_unref0 (_tmp45_);
-       ccall = _tmp47_;
-       _tmp48_ = ccall;
-       _tmp49_ = ccall_typecheck;
-       vala_ccode_function_call_add_argument (_tmp48_, (ValaCCodeExpression*) _tmp49_);
-       _tmp50_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp51_ = _tmp50_;
-       _tmp52_ = ccall;
-       vala_ccode_function_add_expression (_tmp51_, (ValaCCodeExpression*) _tmp52_);
-       _tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _vala_ccode_node_unref0 (_tmp39_);
+       ccall_typecheck = _tmp41_;
+       _tmp42_ = ccall_typecheck;
+       _tmp43_ = vala_ccode_identifier_new ("value");
+       _tmp44_ = _tmp43_;
+       vala_ccode_function_call_add_argument (_tmp42_, (ValaCCodeExpression*) _tmp44_);
+       _vala_ccode_node_unref0 (_tmp44_);
+       _tmp45_ = ccall_typecheck;
+       _tmp46_ = cl;
+       _tmp47_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp46_);
+       _tmp48_ = _tmp47_;
+       _tmp49_ = vala_ccode_identifier_new (_tmp48_);
+       _tmp50_ = _tmp49_;
+       vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp50_);
+       _vala_ccode_node_unref0 (_tmp50_);
+       _g_free0 (_tmp48_);
+       _tmp51_ = vala_ccode_identifier_new ("g_return_if_fail");
+       _tmp52_ = _tmp51_;
+       _tmp53_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp52_);
        _tmp54_ = _tmp53_;
-       _tmp55_ = vala_ccode_constant_new ("old");
-       _tmp56_ = _tmp55_;
-       vala_ccode_function_add_assignment (_tmp54_, (ValaCCodeExpression*) _tmp56_, (ValaCCodeExpression*) vpointer);
-       _vala_ccode_node_unref0 (_tmp56_);
+       _vala_ccode_node_unref0 (_tmp52_);
+       ccall = _tmp54_;
+       _tmp55_ = ccall;
+       _tmp56_ = ccall_typecheck;
+       vala_ccode_function_call_add_argument (_tmp55_, (ValaCCodeExpression*) _tmp56_);
        _tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp58_ = _tmp57_;
-       _tmp59_ = vala_ccode_identifier_new ("v_object");
-       _tmp60_ = _tmp59_;
-       vala_ccode_function_open_if (_tmp58_, (ValaCCodeExpression*) _tmp60_);
-       _vala_ccode_node_unref0 (_tmp60_);
-       _tmp61_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
-       _tmp62_ = _tmp61_;
-       _tmp63_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp62_);
+       _tmp59_ = ccall;
+       vala_ccode_function_add_expression (_tmp58_, (ValaCCodeExpression*) _tmp59_);
+       _tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp61_ = _tmp60_;
+       _tmp62_ = vala_ccode_constant_new ("old");
+       _tmp63_ = _tmp62_;
+       vala_ccode_function_add_assignment (_tmp61_, (ValaCCodeExpression*) _tmp63_, (ValaCCodeExpression*) vpointer);
+       _vala_ccode_node_unref0 (_tmp63_);
+       _tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp65_ = _tmp64_;
+       _tmp66_ = vala_ccode_identifier_new ("v_object");
+       _tmp67_ = _tmp66_;
+       vala_ccode_function_open_if (_tmp65_, (ValaCCodeExpression*) _tmp67_);
+       _vala_ccode_node_unref0 (_tmp67_);
+       _tmp68_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
+       _tmp69_ = _tmp68_;
+       _tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
        _vala_ccode_node_unref0 (ccall_typecheck);
-       ccall_typecheck = _tmp63_;
-       _vala_ccode_node_unref0 (_tmp62_);
-       _tmp64_ = ccall_typecheck;
-       _tmp65_ = vala_ccode_identifier_new ("v_object");
-       _tmp66_ = _tmp65_;
-       vala_ccode_function_call_add_argument (_tmp64_, (ValaCCodeExpression*) _tmp66_);
-       _vala_ccode_node_unref0 (_tmp66_);
-       _tmp67_ = ccall_typecheck;
-       _tmp68_ = cl;
-       _tmp69_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp68_);
-       _tmp70_ = _tmp69_;
-       _tmp71_ = vala_ccode_identifier_new (_tmp70_);
-       _tmp72_ = _tmp71_;
-       vala_ccode_function_call_add_argument (_tmp67_, (ValaCCodeExpression*) _tmp72_);
-       _vala_ccode_node_unref0 (_tmp72_);
-       _g_free0 (_tmp70_);
-       _tmp73_ = vala_ccode_identifier_new ("g_return_if_fail");
-       _tmp74_ = _tmp73_;
-       _tmp75_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp74_);
-       _vala_ccode_node_unref0 (ccall);
-       ccall = _tmp75_;
-       _vala_ccode_node_unref0 (_tmp74_);
-       _tmp76_ = ccall;
-       _tmp77_ = ccall_typecheck;
-       vala_ccode_function_call_add_argument (_tmp76_, (ValaCCodeExpression*) _tmp77_);
-       _tmp78_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       ccall_typecheck = _tmp70_;
+       _vala_ccode_node_unref0 (_tmp69_);
+       _tmp71_ = ccall_typecheck;
+       _tmp72_ = vala_ccode_identifier_new ("v_object");
+       _tmp73_ = _tmp72_;
+       vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
+       _vala_ccode_node_unref0 (_tmp73_);
+       _tmp74_ = ccall_typecheck;
+       _tmp75_ = cl;
+       _tmp76_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp75_);
+       _tmp77_ = _tmp76_;
+       _tmp78_ = vala_ccode_identifier_new (_tmp77_);
        _tmp79_ = _tmp78_;
-       _tmp80_ = ccall;
-       vala_ccode_function_add_expression (_tmp79_, (ValaCCodeExpression*) _tmp80_);
-       _tmp81_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
-       _tmp82_ = _tmp81_;
-       _tmp83_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp82_);
-       _tmp84_ = _tmp83_;
-       _vala_ccode_node_unref0 (_tmp82_);
-       ccall_typefrominstance = _tmp84_;
-       _tmp85_ = vala_ccode_identifier_new ("v_object");
+       vala_ccode_function_call_add_argument (_tmp74_, (ValaCCodeExpression*) _tmp79_);
+       _vala_ccode_node_unref0 (_tmp79_);
+       _g_free0 (_tmp77_);
+       _tmp80_ = vala_ccode_identifier_new ("g_return_if_fail");
+       _tmp81_ = _tmp80_;
+       _tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
+       _vala_ccode_node_unref0 (ccall);
+       ccall = _tmp82_;
+       _vala_ccode_node_unref0 (_tmp81_);
+       _tmp83_ = ccall;
+       _tmp84_ = ccall_typecheck;
+       vala_ccode_function_call_add_argument (_tmp83_, (ValaCCodeExpression*) _tmp84_);
+       _tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp86_ = _tmp85_;
-       vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp86_);
-       _vala_ccode_node_unref0 (_tmp86_);
-       _tmp87_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
-       _tmp88_ = _tmp87_;
-       _tmp89_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp88_);
-       _tmp90_ = _tmp89_;
-       _vala_ccode_node_unref0 (_tmp88_);
-       ccall_gvaluetype = _tmp90_;
-       _tmp91_ = vala_ccode_identifier_new ("value");
-       _tmp92_ = _tmp91_;
-       vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp92_);
-       _vala_ccode_node_unref0 (_tmp92_);
-       _tmp93_ = vala_ccode_identifier_new ("g_value_type_compatible");
-       _tmp94_ = _tmp93_;
-       _tmp95_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp94_);
-       _tmp96_ = _tmp95_;
-       _vala_ccode_node_unref0 (_tmp94_);
-       ccall_typecompatible = _tmp96_;
+       _tmp87_ = ccall;
+       vala_ccode_function_add_expression (_tmp86_, (ValaCCodeExpression*) _tmp87_);
+       _tmp88_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
+       _tmp89_ = _tmp88_;
+       _tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
+       _tmp91_ = _tmp90_;
+       _vala_ccode_node_unref0 (_tmp89_);
+       ccall_typefrominstance = _tmp91_;
+       _tmp92_ = vala_ccode_identifier_new ("v_object");
+       _tmp93_ = _tmp92_;
+       vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp93_);
+       _vala_ccode_node_unref0 (_tmp93_);
+       _tmp94_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
+       _tmp95_ = _tmp94_;
+       _tmp96_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp95_);
+       _tmp97_ = _tmp96_;
+       _vala_ccode_node_unref0 (_tmp95_);
+       ccall_gvaluetype = _tmp97_;
+       _tmp98_ = vala_ccode_identifier_new ("value");
+       _tmp99_ = _tmp98_;
+       vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp99_);
+       _vala_ccode_node_unref0 (_tmp99_);
+       _tmp100_ = vala_ccode_identifier_new ("g_value_type_compatible");
+       _tmp101_ = _tmp100_;
+       _tmp102_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp101_);
+       _tmp103_ = _tmp102_;
+       _vala_ccode_node_unref0 (_tmp101_);
+       ccall_typecompatible = _tmp103_;
        vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_typefrominstance);
        vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_gvaluetype);
-       _tmp97_ = vala_ccode_identifier_new ("g_return_if_fail");
-       _tmp98_ = _tmp97_;
-       _tmp99_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp98_);
-       _vala_ccode_node_unref0 (ccall);
-       ccall = _tmp99_;
-       _vala_ccode_node_unref0 (_tmp98_);
-       _tmp100_ = ccall;
-       vala_ccode_function_call_add_argument (_tmp100_, (ValaCCodeExpression*) ccall_typecompatible);
-       _tmp101_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp102_ = _tmp101_;
-       _tmp103_ = ccall;
-       vala_ccode_function_add_expression (_tmp102_, (ValaCCodeExpression*) _tmp103_);
-       _tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp104_ = vala_ccode_identifier_new ("g_return_if_fail");
        _tmp105_ = _tmp104_;
-       _tmp106_ = vala_ccode_constant_new ("v_object");
-       _tmp107_ = _tmp106_;
-       vala_ccode_function_add_assignment (_tmp105_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp107_);
-       _vala_ccode_node_unref0 (_tmp107_);
-       _tmp108_ = cl;
-       _tmp109_ = vala_ccode_base_module_get_ccode_ref_function ((ValaTypeSymbol*) _tmp108_);
-       _tmp110_ = _tmp109_;
-       _tmp111_ = vala_ccode_identifier_new (_tmp110_);
-       _tmp112_ = _tmp111_;
-       _tmp113_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp112_);
+       _tmp106_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp105_);
        _vala_ccode_node_unref0 (ccall);
-       ccall = _tmp113_;
-       _vala_ccode_node_unref0 (_tmp112_);
-       _g_free0 (_tmp110_);
-       _tmp114_ = ccall;
-       vala_ccode_function_call_add_argument (_tmp114_, (ValaCCodeExpression*) vpointer);
-       _tmp115_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp116_ = _tmp115_;
-       _tmp117_ = ccall;
-       vala_ccode_function_add_expression (_tmp116_, (ValaCCodeExpression*) _tmp117_);
-       _tmp118_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       ccall = _tmp106_;
+       _vala_ccode_node_unref0 (_tmp105_);
+       _tmp107_ = ccall;
+       vala_ccode_function_call_add_argument (_tmp107_, (ValaCCodeExpression*) ccall_typecompatible);
+       _tmp108_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp109_ = _tmp108_;
+       _tmp110_ = ccall;
+       vala_ccode_function_add_expression (_tmp109_, (ValaCCodeExpression*) _tmp110_);
+       _tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp112_ = _tmp111_;
+       _tmp113_ = vala_ccode_constant_new ("v_object");
+       _tmp114_ = _tmp113_;
+       vala_ccode_function_add_assignment (_tmp112_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp114_);
+       _vala_ccode_node_unref0 (_tmp114_);
+       _tmp115_ = cl;
+       _tmp116_ = vala_ccode_base_module_get_ccode_ref_function ((ValaTypeSymbol*) _tmp115_);
+       _tmp117_ = _tmp116_;
+       _tmp118_ = vala_ccode_identifier_new (_tmp117_);
        _tmp119_ = _tmp118_;
-       vala_ccode_function_add_else (_tmp119_);
-       _tmp120_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp121_ = _tmp120_;
-       _tmp122_ = vala_ccode_constant_new ("NULL");
+       _tmp120_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp119_);
+       _vala_ccode_node_unref0 (ccall);
+       ccall = _tmp120_;
+       _vala_ccode_node_unref0 (_tmp119_);
+       _g_free0 (_tmp117_);
+       _tmp121_ = ccall;
+       vala_ccode_function_call_add_argument (_tmp121_, (ValaCCodeExpression*) vpointer);
+       _tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp123_ = _tmp122_;
-       vala_ccode_function_add_assignment (_tmp121_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp123_);
-       _vala_ccode_node_unref0 (_tmp123_);
-       _tmp124_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp125_ = _tmp124_;
-       vala_ccode_function_close (_tmp125_);
-       _tmp126_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp127_ = _tmp126_;
-       _tmp128_ = vala_ccode_identifier_new ("old");
-       _tmp129_ = _tmp128_;
-       vala_ccode_function_open_if (_tmp127_, (ValaCCodeExpression*) _tmp129_);
-       _vala_ccode_node_unref0 (_tmp129_);
-       _tmp130_ = cl;
-       _tmp131_ = vala_ccode_base_module_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp130_);
+       _tmp124_ = ccall;
+       vala_ccode_function_add_expression (_tmp123_, (ValaCCodeExpression*) _tmp124_);
+       _tmp125_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp126_ = _tmp125_;
+       vala_ccode_function_add_else (_tmp126_);
+       _tmp127_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp128_ = _tmp127_;
+       _tmp129_ = vala_ccode_constant_new ("NULL");
+       _tmp130_ = _tmp129_;
+       vala_ccode_function_add_assignment (_tmp128_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp130_);
+       _vala_ccode_node_unref0 (_tmp130_);
+       _tmp131_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp132_ = _tmp131_;
-       _tmp133_ = vala_ccode_identifier_new (_tmp132_);
+       vala_ccode_function_close (_tmp132_);
+       _tmp133_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp134_ = _tmp133_;
-       _tmp135_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp134_);
+       _tmp135_ = vala_ccode_identifier_new ("old");
+       _tmp136_ = _tmp135_;
+       vala_ccode_function_open_if (_tmp134_, (ValaCCodeExpression*) _tmp136_);
+       _vala_ccode_node_unref0 (_tmp136_);
+       _tmp137_ = cl;
+       _tmp138_ = vala_ccode_base_module_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp137_);
+       _tmp139_ = _tmp138_;
+       _tmp140_ = vala_ccode_identifier_new (_tmp139_);
+       _tmp141_ = _tmp140_;
+       _tmp142_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp141_);
        _vala_ccode_node_unref0 (ccall);
-       ccall = _tmp135_;
-       _vala_ccode_node_unref0 (_tmp134_);
-       _g_free0 (_tmp132_);
-       _tmp136_ = ccall;
-       _tmp137_ = vala_ccode_identifier_new ("old");
-       _tmp138_ = _tmp137_;
-       vala_ccode_function_call_add_argument (_tmp136_, (ValaCCodeExpression*) _tmp138_);
-       _vala_ccode_node_unref0 (_tmp138_);
-       _tmp139_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp140_ = _tmp139_;
-       _tmp141_ = ccall;
-       vala_ccode_function_add_expression (_tmp140_, (ValaCCodeExpression*) _tmp141_);
-       _tmp142_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp143_ = _tmp142_;
-       vala_ccode_function_close (_tmp143_);
+       ccall = _tmp142_;
+       _vala_ccode_node_unref0 (_tmp141_);
+       _g_free0 (_tmp139_);
+       _tmp143_ = ccall;
+       _tmp144_ = vala_ccode_identifier_new ("old");
+       _tmp145_ = _tmp144_;
+       vala_ccode_function_call_add_argument (_tmp143_, (ValaCCodeExpression*) _tmp145_);
+       _vala_ccode_node_unref0 (_tmp145_);
+       _tmp146_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp147_ = _tmp146_;
+       _tmp148_ = ccall;
+       vala_ccode_function_add_expression (_tmp147_, (ValaCCodeExpression*) _tmp148_);
+       _tmp149_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp150_ = _tmp149_;
+       vala_ccode_function_close (_tmp150_);
        vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-       _tmp144_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp145_ = function;
-       vala_ccode_file_add_function (_tmp144_, _tmp145_);
+       _tmp151_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp152_ = function;
+       vala_ccode_file_add_function (_tmp151_, _tmp152_);
        _vala_ccode_node_unref0 (ccall_typecompatible);
        _vala_ccode_node_unref0 (ccall_gvaluetype);
        _vala_ccode_node_unref0 (ccall_typefrominstance);
@@ -6952,135 +7061,134 @@ static void vala_gtype_module_add_g_value_take_function (ValaGTypeModule* self,
        ValaCCodeParameter* _tmp9_ = NULL;
        ValaCCodeParameter* _tmp10_ = NULL;
        ValaClass* _tmp11_ = NULL;
-       ValaSymbolAccessibility _tmp12_ = 0;
-       ValaSymbolAccessibility _tmp13_ = 0;
+       gboolean _tmp12_ = FALSE;
        ValaCCodeMemberAccess* vpointer = NULL;
-       ValaCCodeIdentifier* _tmp15_ = NULL;
-       ValaCCodeIdentifier* _tmp16_ = NULL;
-       ValaCCodeMemberAccess* _tmp17_ = NULL;
-       ValaCCodeMemberAccess* _tmp18_ = NULL;
-       ValaCCodeMemberAccess* _tmp19_ = NULL;
-       ValaCCodeMemberAccess* _tmp20_ = NULL;
-       ValaCCodeFunction* _tmp21_ = NULL;
-       ValaCCodeFunction* _tmp22_ = NULL;
-       ValaCCodeFunction* _tmp23_ = NULL;
-       ValaClass* _tmp24_ = NULL;
-       gchar* _tmp25_ = NULL;
-       gchar* _tmp26_ = NULL;
-       gchar* _tmp27_ = NULL;
-       gchar* _tmp28_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp29_ = NULL;
-       ValaCCodeVariableDeclarator* _tmp30_ = NULL;
+       ValaCCodeIdentifier* _tmp22_ = NULL;
+       ValaCCodeIdentifier* _tmp23_ = NULL;
+       ValaCCodeMemberAccess* _tmp24_ = NULL;
+       ValaCCodeMemberAccess* _tmp25_ = NULL;
+       ValaCCodeMemberAccess* _tmp26_ = NULL;
+       ValaCCodeMemberAccess* _tmp27_ = NULL;
+       ValaCCodeFunction* _tmp28_ = NULL;
+       ValaCCodeFunction* _tmp29_ = NULL;
+       ValaCCodeFunction* _tmp30_ = NULL;
+       ValaClass* _tmp31_ = NULL;
+       gchar* _tmp32_ = NULL;
+       gchar* _tmp33_ = NULL;
+       gchar* _tmp34_ = NULL;
+       gchar* _tmp35_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp36_ = NULL;
+       ValaCCodeVariableDeclarator* _tmp37_ = NULL;
        ValaCCodeFunctionCall* ccall_typecheck = NULL;
-       ValaCCodeIdentifier* _tmp31_ = NULL;
-       ValaCCodeIdentifier* _tmp32_ = NULL;
-       ValaCCodeFunctionCall* _tmp33_ = NULL;
-       ValaCCodeFunctionCall* _tmp34_ = NULL;
-       ValaCCodeFunctionCall* _tmp35_ = NULL;
-       ValaCCodeIdentifier* _tmp36_ = NULL;
-       ValaCCodeIdentifier* _tmp37_ = NULL;
-       ValaCCodeFunctionCall* _tmp38_ = NULL;
-       ValaClass* _tmp39_ = NULL;
-       gchar* _tmp40_ = NULL;
-       gchar* _tmp41_ = NULL;
-       ValaCCodeIdentifier* _tmp42_ = NULL;
+       ValaCCodeIdentifier* _tmp38_ = NULL;
+       ValaCCodeIdentifier* _tmp39_ = NULL;
+       ValaCCodeFunctionCall* _tmp40_ = NULL;
+       ValaCCodeFunctionCall* _tmp41_ = NULL;
+       ValaCCodeFunctionCall* _tmp42_ = NULL;
        ValaCCodeIdentifier* _tmp43_ = NULL;
-       ValaCCodeFunctionCall* ccall = NULL;
        ValaCCodeIdentifier* _tmp44_ = NULL;
-       ValaCCodeIdentifier* _tmp45_ = NULL;
-       ValaCCodeFunctionCall* _tmp46_ = NULL;
-       ValaCCodeFunctionCall* _tmp47_ = NULL;
-       ValaCCodeFunctionCall* _tmp48_ = NULL;
-       ValaCCodeFunctionCall* _tmp49_ = NULL;
-       ValaCCodeFunction* _tmp50_ = NULL;
-       ValaCCodeFunction* _tmp51_ = NULL;
-       ValaCCodeFunctionCall* _tmp52_ = NULL;
-       ValaCCodeFunction* _tmp53_ = NULL;
-       ValaCCodeFunction* _tmp54_ = NULL;
-       ValaCCodeConstant* _tmp55_ = NULL;
-       ValaCCodeConstant* _tmp56_ = NULL;
+       ValaCCodeFunctionCall* _tmp45_ = NULL;
+       ValaClass* _tmp46_ = NULL;
+       gchar* _tmp47_ = NULL;
+       gchar* _tmp48_ = NULL;
+       ValaCCodeIdentifier* _tmp49_ = NULL;
+       ValaCCodeIdentifier* _tmp50_ = NULL;
+       ValaCCodeFunctionCall* ccall = NULL;
+       ValaCCodeIdentifier* _tmp51_ = NULL;
+       ValaCCodeIdentifier* _tmp52_ = NULL;
+       ValaCCodeFunctionCall* _tmp53_ = NULL;
+       ValaCCodeFunctionCall* _tmp54_ = NULL;
+       ValaCCodeFunctionCall* _tmp55_ = NULL;
+       ValaCCodeFunctionCall* _tmp56_ = NULL;
        ValaCCodeFunction* _tmp57_ = NULL;
        ValaCCodeFunction* _tmp58_ = NULL;
-       ValaCCodeIdentifier* _tmp59_ = NULL;
-       ValaCCodeIdentifier* _tmp60_ = NULL;
-       ValaCCodeIdentifier* _tmp61_ = NULL;
-       ValaCCodeIdentifier* _tmp62_ = NULL;
-       ValaCCodeFunctionCall* _tmp63_ = NULL;
-       ValaCCodeFunctionCall* _tmp64_ = NULL;
-       ValaCCodeIdentifier* _tmp65_ = NULL;
+       ValaCCodeFunctionCall* _tmp59_ = NULL;
+       ValaCCodeFunction* _tmp60_ = NULL;
+       ValaCCodeFunction* _tmp61_ = NULL;
+       ValaCCodeConstant* _tmp62_ = NULL;
+       ValaCCodeConstant* _tmp63_ = NULL;
+       ValaCCodeFunction* _tmp64_ = NULL;
+       ValaCCodeFunction* _tmp65_ = NULL;
        ValaCCodeIdentifier* _tmp66_ = NULL;
-       ValaCCodeFunctionCall* _tmp67_ = NULL;
-       ValaClass* _tmp68_ = NULL;
-       gchar* _tmp69_ = NULL;
-       gchar* _tmp70_ = NULL;
-       ValaCCodeIdentifier* _tmp71_ = NULL;
+       ValaCCodeIdentifier* _tmp67_ = NULL;
+       ValaCCodeIdentifier* _tmp68_ = NULL;
+       ValaCCodeIdentifier* _tmp69_ = NULL;
+       ValaCCodeFunctionCall* _tmp70_ = NULL;
+       ValaCCodeFunctionCall* _tmp71_ = NULL;
        ValaCCodeIdentifier* _tmp72_ = NULL;
        ValaCCodeIdentifier* _tmp73_ = NULL;
-       ValaCCodeIdentifier* _tmp74_ = NULL;
-       ValaCCodeFunctionCall* _tmp75_ = NULL;
-       ValaCCodeFunctionCall* _tmp76_ = NULL;
-       ValaCCodeFunctionCall* _tmp77_ = NULL;
-       ValaCCodeFunction* _tmp78_ = NULL;
-       ValaCCodeFunction* _tmp79_ = NULL;
-       ValaCCodeFunctionCall* _tmp80_ = NULL;
-       ValaCCodeFunctionCall* ccall_typefrominstance = NULL;
+       ValaCCodeFunctionCall* _tmp74_ = NULL;
+       ValaClass* _tmp75_ = NULL;
+       gchar* _tmp76_ = NULL;
+       gchar* _tmp77_ = NULL;
+       ValaCCodeIdentifier* _tmp78_ = NULL;
+       ValaCCodeIdentifier* _tmp79_ = NULL;
+       ValaCCodeIdentifier* _tmp80_ = NULL;
        ValaCCodeIdentifier* _tmp81_ = NULL;
-       ValaCCodeIdentifier* _tmp82_ = NULL;
+       ValaCCodeFunctionCall* _tmp82_ = NULL;
        ValaCCodeFunctionCall* _tmp83_ = NULL;
        ValaCCodeFunctionCall* _tmp84_ = NULL;
-       ValaCCodeIdentifier* _tmp85_ = NULL;
-       ValaCCodeIdentifier* _tmp86_ = NULL;
-       ValaCCodeFunctionCall* ccall_gvaluetype = NULL;
-       ValaCCodeIdentifier* _tmp87_ = NULL;
+       ValaCCodeFunction* _tmp85_ = NULL;
+       ValaCCodeFunction* _tmp86_ = NULL;
+       ValaCCodeFunctionCall* _tmp87_ = NULL;
+       ValaCCodeFunctionCall* ccall_typefrominstance = NULL;
        ValaCCodeIdentifier* _tmp88_ = NULL;
-       ValaCCodeFunctionCall* _tmp89_ = NULL;
+       ValaCCodeIdentifier* _tmp89_ = NULL;
        ValaCCodeFunctionCall* _tmp90_ = NULL;
-       ValaCCodeIdentifier* _tmp91_ = NULL;
+       ValaCCodeFunctionCall* _tmp91_ = NULL;
        ValaCCodeIdentifier* _tmp92_ = NULL;
-       ValaCCodeFunctionCall* ccall_typecompatible = NULL;
        ValaCCodeIdentifier* _tmp93_ = NULL;
+       ValaCCodeFunctionCall* ccall_gvaluetype = NULL;
        ValaCCodeIdentifier* _tmp94_ = NULL;
-       ValaCCodeFunctionCall* _tmp95_ = NULL;
+       ValaCCodeIdentifier* _tmp95_ = NULL;
        ValaCCodeFunctionCall* _tmp96_ = NULL;
-       ValaCCodeIdentifier* _tmp97_ = NULL;
+       ValaCCodeFunctionCall* _tmp97_ = NULL;
        ValaCCodeIdentifier* _tmp98_ = NULL;
-       ValaCCodeFunctionCall* _tmp99_ = NULL;
-       ValaCCodeFunctionCall* _tmp100_ = NULL;
-       ValaCCodeFunction* _tmp101_ = NULL;
-       ValaCCodeFunction* _tmp102_ = NULL;
+       ValaCCodeIdentifier* _tmp99_ = NULL;
+       ValaCCodeFunctionCall* ccall_typecompatible = NULL;
+       ValaCCodeIdentifier* _tmp100_ = NULL;
+       ValaCCodeIdentifier* _tmp101_ = NULL;
+       ValaCCodeFunctionCall* _tmp102_ = NULL;
        ValaCCodeFunctionCall* _tmp103_ = NULL;
-       ValaCCodeFunction* _tmp104_ = NULL;
-       ValaCCodeFunction* _tmp105_ = NULL;
-       ValaCCodeConstant* _tmp106_ = NULL;
-       ValaCCodeConstant* _tmp107_ = NULL;
+       ValaCCodeIdentifier* _tmp104_ = NULL;
+       ValaCCodeIdentifier* _tmp105_ = NULL;
+       ValaCCodeFunctionCall* _tmp106_ = NULL;
+       ValaCCodeFunctionCall* _tmp107_ = NULL;
        ValaCCodeFunction* _tmp108_ = NULL;
        ValaCCodeFunction* _tmp109_ = NULL;
-       ValaCCodeFunction* _tmp110_ = NULL;
+       ValaCCodeFunctionCall* _tmp110_ = NULL;
        ValaCCodeFunction* _tmp111_ = NULL;
-       ValaCCodeConstant* _tmp112_ = NULL;
+       ValaCCodeFunction* _tmp112_ = NULL;
        ValaCCodeConstant* _tmp113_ = NULL;
-       ValaCCodeFunction* _tmp114_ = NULL;
+       ValaCCodeConstant* _tmp114_ = NULL;
        ValaCCodeFunction* _tmp115_ = NULL;
        ValaCCodeFunction* _tmp116_ = NULL;
        ValaCCodeFunction* _tmp117_ = NULL;
-       ValaCCodeIdentifier* _tmp118_ = NULL;
-       ValaCCodeIdentifier* _tmp119_ = NULL;
-       ValaClass* _tmp120_ = NULL;
-       gchar* _tmp121_ = NULL;
-       gchar* _tmp122_ = NULL;
-       ValaCCodeIdentifier* _tmp123_ = NULL;
-       ValaCCodeIdentifier* _tmp124_ = NULL;
-       ValaCCodeFunctionCall* _tmp125_ = NULL;
-       ValaCCodeFunctionCall* _tmp126_ = NULL;
-       ValaCCodeIdentifier* _tmp127_ = NULL;
-       ValaCCodeIdentifier* _tmp128_ = NULL;
-       ValaCCodeFunction* _tmp129_ = NULL;
-       ValaCCodeFunction* _tmp130_ = NULL;
-       ValaCCodeFunctionCall* _tmp131_ = NULL;
-       ValaCCodeFunction* _tmp132_ = NULL;
-       ValaCCodeFunction* _tmp133_ = NULL;
-       ValaCCodeFile* _tmp134_ = NULL;
-       ValaCCodeFunction* _tmp135_ = NULL;
+       ValaCCodeFunction* _tmp118_ = NULL;
+       ValaCCodeConstant* _tmp119_ = NULL;
+       ValaCCodeConstant* _tmp120_ = NULL;
+       ValaCCodeFunction* _tmp121_ = NULL;
+       ValaCCodeFunction* _tmp122_ = NULL;
+       ValaCCodeFunction* _tmp123_ = NULL;
+       ValaCCodeFunction* _tmp124_ = NULL;
+       ValaCCodeIdentifier* _tmp125_ = NULL;
+       ValaCCodeIdentifier* _tmp126_ = NULL;
+       ValaClass* _tmp127_ = NULL;
+       gchar* _tmp128_ = NULL;
+       gchar* _tmp129_ = NULL;
+       ValaCCodeIdentifier* _tmp130_ = NULL;
+       ValaCCodeIdentifier* _tmp131_ = NULL;
+       ValaCCodeFunctionCall* _tmp132_ = NULL;
+       ValaCCodeFunctionCall* _tmp133_ = NULL;
+       ValaCCodeIdentifier* _tmp134_ = NULL;
+       ValaCCodeIdentifier* _tmp135_ = NULL;
+       ValaCCodeFunction* _tmp136_ = NULL;
+       ValaCCodeFunction* _tmp137_ = NULL;
+       ValaCCodeFunctionCall* _tmp138_ = NULL;
+       ValaCCodeFunction* _tmp139_ = NULL;
+       ValaCCodeFunction* _tmp140_ = NULL;
+       ValaCCodeFile* _tmp141_ = NULL;
+       ValaCCodeFunction* _tmp142_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (cl != NULL);
        _tmp0_ = cl;
@@ -7101,205 +7209,228 @@ static void vala_gtype_module_add_g_value_take_function (ValaGTypeModule* self,
        vala_ccode_function_add_parameter (_tmp8_, _tmp10_);
        _vala_ccode_node_unref0 (_tmp10_);
        _tmp11_ = cl;
-       _tmp12_ = vala_symbol_get_access ((ValaSymbol*) _tmp11_);
-       _tmp13_ = _tmp12_;
-       if (_tmp13_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-               ValaCCodeFunction* _tmp14_ = NULL;
-               _tmp14_ = function;
-               vala_ccode_function_set_modifiers (_tmp14_, VALA_CCODE_MODIFIERS_STATIC);
+       _tmp12_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp11_);
+       if (_tmp12_) {
+               ValaCCodeFunction* _tmp13_ = NULL;
+               _tmp13_ = function;
+               vala_ccode_function_set_modifiers (_tmp13_, VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp14_ = FALSE;
+               ValaCodeContext* _tmp15_ = NULL;
+               ValaCodeContext* _tmp16_ = NULL;
+               gboolean _tmp17_ = FALSE;
+               gboolean _tmp18_ = FALSE;
+               _tmp15_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp16_ = _tmp15_;
+               _tmp17_ = vala_code_context_get_hide_internal (_tmp16_);
+               _tmp18_ = _tmp17_;
+               if (_tmp18_) {
+                       ValaClass* _tmp19_ = NULL;
+                       gboolean _tmp20_ = FALSE;
+                       _tmp19_ = cl;
+                       _tmp20_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp19_);
+                       _tmp14_ = _tmp20_;
+               } else {
+                       _tmp14_ = FALSE;
+               }
+               if (_tmp14_) {
+                       ValaCCodeFunction* _tmp21_ = NULL;
+                       _tmp21_ = function;
+                       vala_ccode_function_set_modifiers (_tmp21_, VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp15_ = vala_ccode_identifier_new ("value");
-       _tmp16_ = _tmp15_;
-       _tmp17_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp16_, "data[0]");
-       _tmp18_ = _tmp17_;
-       _tmp19_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp18_, "v_pointer", FALSE);
-       _tmp20_ = _tmp19_;
-       _vala_ccode_node_unref0 (_tmp18_);
-       _vala_ccode_node_unref0 (_tmp16_);
-       vpointer = _tmp20_;
-       _tmp21_ = function;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp21_);
-       _tmp22_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp22_ = vala_ccode_identifier_new ("value");
        _tmp23_ = _tmp22_;
-       _tmp24_ = cl;
-       _tmp25_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp24_);
-       _tmp26_ = _tmp25_;
-       _tmp27_ = g_strconcat (_tmp26_, "*", NULL);
-       _tmp28_ = _tmp27_;
-       _tmp29_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
+       _tmp24_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp23_, "data[0]");
+       _tmp25_ = _tmp24_;
+       _tmp26_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp25_, "v_pointer", FALSE);
+       _tmp27_ = _tmp26_;
+       _vala_ccode_node_unref0 (_tmp25_);
+       _vala_ccode_node_unref0 (_tmp23_);
+       vpointer = _tmp27_;
+       _tmp28_ = function;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp28_);
+       _tmp29_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp30_ = _tmp29_;
-       vala_ccode_function_add_declaration (_tmp23_, _tmp28_, (ValaCCodeDeclarator*) _tmp30_, 0);
-       _vala_ccode_node_unref0 (_tmp30_);
-       _g_free0 (_tmp28_);
-       _g_free0 (_tmp26_);
-       _tmp31_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
-       _tmp32_ = _tmp31_;
-       _tmp33_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp32_);
-       _tmp34_ = _tmp33_;
-       _vala_ccode_node_unref0 (_tmp32_);
-       ccall_typecheck = _tmp34_;
-       _tmp35_ = ccall_typecheck;
-       _tmp36_ = vala_ccode_identifier_new ("value");
+       _tmp31_ = cl;
+       _tmp32_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp31_);
+       _tmp33_ = _tmp32_;
+       _tmp34_ = g_strconcat (_tmp33_, "*", NULL);
+       _tmp35_ = _tmp34_;
+       _tmp36_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
        _tmp37_ = _tmp36_;
-       vala_ccode_function_call_add_argument (_tmp35_, (ValaCCodeExpression*) _tmp37_);
+       vala_ccode_function_add_declaration (_tmp30_, _tmp35_, (ValaCCodeDeclarator*) _tmp37_, 0);
        _vala_ccode_node_unref0 (_tmp37_);
-       _tmp38_ = ccall_typecheck;
-       _tmp39_ = cl;
-       _tmp40_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp39_);
+       _g_free0 (_tmp35_);
+       _g_free0 (_tmp33_);
+       _tmp38_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
+       _tmp39_ = _tmp38_;
+       _tmp40_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp39_);
        _tmp41_ = _tmp40_;
-       _tmp42_ = vala_ccode_identifier_new (_tmp41_);
-       _tmp43_ = _tmp42_;
-       vala_ccode_function_call_add_argument (_tmp38_, (ValaCCodeExpression*) _tmp43_);
-       _vala_ccode_node_unref0 (_tmp43_);
-       _g_free0 (_tmp41_);
-       _tmp44_ = vala_ccode_identifier_new ("g_return_if_fail");
-       _tmp45_ = _tmp44_;
-       _tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
-       _tmp47_ = _tmp46_;
-       _vala_ccode_node_unref0 (_tmp45_);
-       ccall = _tmp47_;
-       _tmp48_ = ccall;
-       _tmp49_ = ccall_typecheck;
-       vala_ccode_function_call_add_argument (_tmp48_, (ValaCCodeExpression*) _tmp49_);
-       _tmp50_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp51_ = _tmp50_;
-       _tmp52_ = ccall;
-       vala_ccode_function_add_expression (_tmp51_, (ValaCCodeExpression*) _tmp52_);
-       _tmp53_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _vala_ccode_node_unref0 (_tmp39_);
+       ccall_typecheck = _tmp41_;
+       _tmp42_ = ccall_typecheck;
+       _tmp43_ = vala_ccode_identifier_new ("value");
+       _tmp44_ = _tmp43_;
+       vala_ccode_function_call_add_argument (_tmp42_, (ValaCCodeExpression*) _tmp44_);
+       _vala_ccode_node_unref0 (_tmp44_);
+       _tmp45_ = ccall_typecheck;
+       _tmp46_ = cl;
+       _tmp47_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp46_);
+       _tmp48_ = _tmp47_;
+       _tmp49_ = vala_ccode_identifier_new (_tmp48_);
+       _tmp50_ = _tmp49_;
+       vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp50_);
+       _vala_ccode_node_unref0 (_tmp50_);
+       _g_free0 (_tmp48_);
+       _tmp51_ = vala_ccode_identifier_new ("g_return_if_fail");
+       _tmp52_ = _tmp51_;
+       _tmp53_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp52_);
        _tmp54_ = _tmp53_;
-       _tmp55_ = vala_ccode_constant_new ("old");
-       _tmp56_ = _tmp55_;
-       vala_ccode_function_add_assignment (_tmp54_, (ValaCCodeExpression*) _tmp56_, (ValaCCodeExpression*) vpointer);
-       _vala_ccode_node_unref0 (_tmp56_);
+       _vala_ccode_node_unref0 (_tmp52_);
+       ccall = _tmp54_;
+       _tmp55_ = ccall;
+       _tmp56_ = ccall_typecheck;
+       vala_ccode_function_call_add_argument (_tmp55_, (ValaCCodeExpression*) _tmp56_);
        _tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp58_ = _tmp57_;
-       _tmp59_ = vala_ccode_identifier_new ("v_object");
-       _tmp60_ = _tmp59_;
-       vala_ccode_function_open_if (_tmp58_, (ValaCCodeExpression*) _tmp60_);
-       _vala_ccode_node_unref0 (_tmp60_);
-       _tmp61_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
-       _tmp62_ = _tmp61_;
-       _tmp63_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp62_);
+       _tmp59_ = ccall;
+       vala_ccode_function_add_expression (_tmp58_, (ValaCCodeExpression*) _tmp59_);
+       _tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp61_ = _tmp60_;
+       _tmp62_ = vala_ccode_constant_new ("old");
+       _tmp63_ = _tmp62_;
+       vala_ccode_function_add_assignment (_tmp61_, (ValaCCodeExpression*) _tmp63_, (ValaCCodeExpression*) vpointer);
+       _vala_ccode_node_unref0 (_tmp63_);
+       _tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp65_ = _tmp64_;
+       _tmp66_ = vala_ccode_identifier_new ("v_object");
+       _tmp67_ = _tmp66_;
+       vala_ccode_function_open_if (_tmp65_, (ValaCCodeExpression*) _tmp67_);
+       _vala_ccode_node_unref0 (_tmp67_);
+       _tmp68_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
+       _tmp69_ = _tmp68_;
+       _tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
        _vala_ccode_node_unref0 (ccall_typecheck);
-       ccall_typecheck = _tmp63_;
-       _vala_ccode_node_unref0 (_tmp62_);
-       _tmp64_ = ccall_typecheck;
-       _tmp65_ = vala_ccode_identifier_new ("v_object");
-       _tmp66_ = _tmp65_;
-       vala_ccode_function_call_add_argument (_tmp64_, (ValaCCodeExpression*) _tmp66_);
-       _vala_ccode_node_unref0 (_tmp66_);
-       _tmp67_ = ccall_typecheck;
-       _tmp68_ = cl;
-       _tmp69_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp68_);
-       _tmp70_ = _tmp69_;
-       _tmp71_ = vala_ccode_identifier_new (_tmp70_);
-       _tmp72_ = _tmp71_;
-       vala_ccode_function_call_add_argument (_tmp67_, (ValaCCodeExpression*) _tmp72_);
-       _vala_ccode_node_unref0 (_tmp72_);
-       _g_free0 (_tmp70_);
-       _tmp73_ = vala_ccode_identifier_new ("g_return_if_fail");
-       _tmp74_ = _tmp73_;
-       _tmp75_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp74_);
-       _vala_ccode_node_unref0 (ccall);
-       ccall = _tmp75_;
-       _vala_ccode_node_unref0 (_tmp74_);
-       _tmp76_ = ccall;
-       _tmp77_ = ccall_typecheck;
-       vala_ccode_function_call_add_argument (_tmp76_, (ValaCCodeExpression*) _tmp77_);
-       _tmp78_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       ccall_typecheck = _tmp70_;
+       _vala_ccode_node_unref0 (_tmp69_);
+       _tmp71_ = ccall_typecheck;
+       _tmp72_ = vala_ccode_identifier_new ("v_object");
+       _tmp73_ = _tmp72_;
+       vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
+       _vala_ccode_node_unref0 (_tmp73_);
+       _tmp74_ = ccall_typecheck;
+       _tmp75_ = cl;
+       _tmp76_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp75_);
+       _tmp77_ = _tmp76_;
+       _tmp78_ = vala_ccode_identifier_new (_tmp77_);
        _tmp79_ = _tmp78_;
-       _tmp80_ = ccall;
-       vala_ccode_function_add_expression (_tmp79_, (ValaCCodeExpression*) _tmp80_);
-       _tmp81_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
-       _tmp82_ = _tmp81_;
-       _tmp83_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp82_);
-       _tmp84_ = _tmp83_;
-       _vala_ccode_node_unref0 (_tmp82_);
-       ccall_typefrominstance = _tmp84_;
-       _tmp85_ = vala_ccode_identifier_new ("v_object");
+       vala_ccode_function_call_add_argument (_tmp74_, (ValaCCodeExpression*) _tmp79_);
+       _vala_ccode_node_unref0 (_tmp79_);
+       _g_free0 (_tmp77_);
+       _tmp80_ = vala_ccode_identifier_new ("g_return_if_fail");
+       _tmp81_ = _tmp80_;
+       _tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
+       _vala_ccode_node_unref0 (ccall);
+       ccall = _tmp82_;
+       _vala_ccode_node_unref0 (_tmp81_);
+       _tmp83_ = ccall;
+       _tmp84_ = ccall_typecheck;
+       vala_ccode_function_call_add_argument (_tmp83_, (ValaCCodeExpression*) _tmp84_);
+       _tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp86_ = _tmp85_;
-       vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp86_);
-       _vala_ccode_node_unref0 (_tmp86_);
-       _tmp87_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
-       _tmp88_ = _tmp87_;
-       _tmp89_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp88_);
-       _tmp90_ = _tmp89_;
-       _vala_ccode_node_unref0 (_tmp88_);
-       ccall_gvaluetype = _tmp90_;
-       _tmp91_ = vala_ccode_identifier_new ("value");
-       _tmp92_ = _tmp91_;
-       vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp92_);
-       _vala_ccode_node_unref0 (_tmp92_);
-       _tmp93_ = vala_ccode_identifier_new ("g_value_type_compatible");
-       _tmp94_ = _tmp93_;
-       _tmp95_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp94_);
-       _tmp96_ = _tmp95_;
-       _vala_ccode_node_unref0 (_tmp94_);
-       ccall_typecompatible = _tmp96_;
+       _tmp87_ = ccall;
+       vala_ccode_function_add_expression (_tmp86_, (ValaCCodeExpression*) _tmp87_);
+       _tmp88_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
+       _tmp89_ = _tmp88_;
+       _tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
+       _tmp91_ = _tmp90_;
+       _vala_ccode_node_unref0 (_tmp89_);
+       ccall_typefrominstance = _tmp91_;
+       _tmp92_ = vala_ccode_identifier_new ("v_object");
+       _tmp93_ = _tmp92_;
+       vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp93_);
+       _vala_ccode_node_unref0 (_tmp93_);
+       _tmp94_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
+       _tmp95_ = _tmp94_;
+       _tmp96_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp95_);
+       _tmp97_ = _tmp96_;
+       _vala_ccode_node_unref0 (_tmp95_);
+       ccall_gvaluetype = _tmp97_;
+       _tmp98_ = vala_ccode_identifier_new ("value");
+       _tmp99_ = _tmp98_;
+       vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp99_);
+       _vala_ccode_node_unref0 (_tmp99_);
+       _tmp100_ = vala_ccode_identifier_new ("g_value_type_compatible");
+       _tmp101_ = _tmp100_;
+       _tmp102_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp101_);
+       _tmp103_ = _tmp102_;
+       _vala_ccode_node_unref0 (_tmp101_);
+       ccall_typecompatible = _tmp103_;
        vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_typefrominstance);
        vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_gvaluetype);
-       _tmp97_ = vala_ccode_identifier_new ("g_return_if_fail");
-       _tmp98_ = _tmp97_;
-       _tmp99_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp98_);
-       _vala_ccode_node_unref0 (ccall);
-       ccall = _tmp99_;
-       _vala_ccode_node_unref0 (_tmp98_);
-       _tmp100_ = ccall;
-       vala_ccode_function_call_add_argument (_tmp100_, (ValaCCodeExpression*) ccall_typecompatible);
-       _tmp101_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp102_ = _tmp101_;
-       _tmp103_ = ccall;
-       vala_ccode_function_add_expression (_tmp102_, (ValaCCodeExpression*) _tmp103_);
-       _tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp104_ = vala_ccode_identifier_new ("g_return_if_fail");
        _tmp105_ = _tmp104_;
-       _tmp106_ = vala_ccode_constant_new ("v_object");
-       _tmp107_ = _tmp106_;
-       vala_ccode_function_add_assignment (_tmp105_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp107_);
-       _vala_ccode_node_unref0 (_tmp107_);
+       _tmp106_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp105_);
+       _vala_ccode_node_unref0 (ccall);
+       ccall = _tmp106_;
+       _vala_ccode_node_unref0 (_tmp105_);
+       _tmp107_ = ccall;
+       vala_ccode_function_call_add_argument (_tmp107_, (ValaCCodeExpression*) ccall_typecompatible);
        _tmp108_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp109_ = _tmp108_;
-       vala_ccode_function_add_else (_tmp109_);
-       _tmp110_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp111_ = _tmp110_;
-       _tmp112_ = vala_ccode_constant_new ("NULL");
-       _tmp113_ = _tmp112_;
-       vala_ccode_function_add_assignment (_tmp111_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp113_);
-       _vala_ccode_node_unref0 (_tmp113_);
-       _tmp114_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp115_ = _tmp114_;
-       vala_ccode_function_close (_tmp115_);
-       _tmp116_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp117_ = _tmp116_;
-       _tmp118_ = vala_ccode_identifier_new ("old");
-       _tmp119_ = _tmp118_;
-       vala_ccode_function_open_if (_tmp117_, (ValaCCodeExpression*) _tmp119_);
-       _vala_ccode_node_unref0 (_tmp119_);
-       _tmp120_ = cl;
-       _tmp121_ = vala_ccode_base_module_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp120_);
+       _tmp110_ = ccall;
+       vala_ccode_function_add_expression (_tmp109_, (ValaCCodeExpression*) _tmp110_);
+       _tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp112_ = _tmp111_;
+       _tmp113_ = vala_ccode_constant_new ("v_object");
+       _tmp114_ = _tmp113_;
+       vala_ccode_function_add_assignment (_tmp112_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp114_);
+       _vala_ccode_node_unref0 (_tmp114_);
+       _tmp115_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp116_ = _tmp115_;
+       vala_ccode_function_add_else (_tmp116_);
+       _tmp117_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp118_ = _tmp117_;
+       _tmp119_ = vala_ccode_constant_new ("NULL");
+       _tmp120_ = _tmp119_;
+       vala_ccode_function_add_assignment (_tmp118_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp120_);
+       _vala_ccode_node_unref0 (_tmp120_);
+       _tmp121_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp122_ = _tmp121_;
-       _tmp123_ = vala_ccode_identifier_new (_tmp122_);
+       vala_ccode_function_close (_tmp122_);
+       _tmp123_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp124_ = _tmp123_;
-       _tmp125_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp124_);
+       _tmp125_ = vala_ccode_identifier_new ("old");
+       _tmp126_ = _tmp125_;
+       vala_ccode_function_open_if (_tmp124_, (ValaCCodeExpression*) _tmp126_);
+       _vala_ccode_node_unref0 (_tmp126_);
+       _tmp127_ = cl;
+       _tmp128_ = vala_ccode_base_module_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp127_);
+       _tmp129_ = _tmp128_;
+       _tmp130_ = vala_ccode_identifier_new (_tmp129_);
+       _tmp131_ = _tmp130_;
+       _tmp132_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp131_);
        _vala_ccode_node_unref0 (ccall);
-       ccall = _tmp125_;
-       _vala_ccode_node_unref0 (_tmp124_);
-       _g_free0 (_tmp122_);
-       _tmp126_ = ccall;
-       _tmp127_ = vala_ccode_identifier_new ("old");
-       _tmp128_ = _tmp127_;
-       vala_ccode_function_call_add_argument (_tmp126_, (ValaCCodeExpression*) _tmp128_);
-       _vala_ccode_node_unref0 (_tmp128_);
-       _tmp129_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp130_ = _tmp129_;
-       _tmp131_ = ccall;
-       vala_ccode_function_add_expression (_tmp130_, (ValaCCodeExpression*) _tmp131_);
-       _tmp132_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp133_ = _tmp132_;
-       vala_ccode_function_close (_tmp133_);
+       ccall = _tmp132_;
+       _vala_ccode_node_unref0 (_tmp131_);
+       _g_free0 (_tmp129_);
+       _tmp133_ = ccall;
+       _tmp134_ = vala_ccode_identifier_new ("old");
+       _tmp135_ = _tmp134_;
+       vala_ccode_function_call_add_argument (_tmp133_, (ValaCCodeExpression*) _tmp135_);
+       _vala_ccode_node_unref0 (_tmp135_);
+       _tmp136_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp137_ = _tmp136_;
+       _tmp138_ = ccall;
+       vala_ccode_function_add_expression (_tmp137_, (ValaCCodeExpression*) _tmp138_);
+       _tmp139_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp140_ = _tmp139_;
+       vala_ccode_function_close (_tmp140_);
        vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-       _tmp134_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp135_ = function;
-       vala_ccode_file_add_function (_tmp134_, _tmp135_);
+       _tmp141_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp142_ = function;
+       vala_ccode_file_add_function (_tmp141_, _tmp142_);
        _vala_ccode_node_unref0 (ccall_typecompatible);
        _vala_ccode_node_unref0 (ccall_gvaluetype);
        _vala_ccode_node_unref0 (ccall_typefrominstance);
@@ -7321,41 +7452,40 @@ static void vala_gtype_module_add_g_value_get_function (ValaGTypeModule* self, V
        ValaCCodeParameter* _tmp6_ = NULL;
        ValaCCodeParameter* _tmp7_ = NULL;
        ValaClass* _tmp8_ = NULL;
-       ValaSymbolAccessibility _tmp9_ = 0;
-       ValaSymbolAccessibility _tmp10_ = 0;
+       gboolean _tmp9_ = FALSE;
        ValaCCodeMemberAccess* vpointer = NULL;
-       ValaCCodeIdentifier* _tmp12_ = NULL;
-       ValaCCodeIdentifier* _tmp13_ = NULL;
-       ValaCCodeMemberAccess* _tmp14_ = NULL;
-       ValaCCodeMemberAccess* _tmp15_ = NULL;
-       ValaCCodeMemberAccess* _tmp16_ = NULL;
-       ValaCCodeMemberAccess* _tmp17_ = NULL;
-       ValaCCodeFunction* _tmp18_ = NULL;
-       ValaCCodeFunctionCall* ccall_typecheck = NULL;
        ValaCCodeIdentifier* _tmp19_ = NULL;
        ValaCCodeIdentifier* _tmp20_ = NULL;
-       ValaCCodeFunctionCall* _tmp21_ = NULL;
-       ValaCCodeFunctionCall* _tmp22_ = NULL;
-       ValaCCodeIdentifier* _tmp23_ = NULL;
-       ValaCCodeIdentifier* _tmp24_ = NULL;
-       ValaClass* _tmp25_ = NULL;
-       gchar* _tmp26_ = NULL;
-       gchar* _tmp27_ = NULL;
-       ValaCCodeIdentifier* _tmp28_ = NULL;
-       ValaCCodeIdentifier* _tmp29_ = NULL;
-       ValaCCodeFunctionCall* ccall = NULL;
+       ValaCCodeMemberAccess* _tmp21_ = NULL;
+       ValaCCodeMemberAccess* _tmp22_ = NULL;
+       ValaCCodeMemberAccess* _tmp23_ = NULL;
+       ValaCCodeMemberAccess* _tmp24_ = NULL;
+       ValaCCodeFunction* _tmp25_ = NULL;
+       ValaCCodeFunctionCall* ccall_typecheck = NULL;
+       ValaCCodeIdentifier* _tmp26_ = NULL;
+       ValaCCodeIdentifier* _tmp27_ = NULL;
+       ValaCCodeFunctionCall* _tmp28_ = NULL;
+       ValaCCodeFunctionCall* _tmp29_ = NULL;
        ValaCCodeIdentifier* _tmp30_ = NULL;
        ValaCCodeIdentifier* _tmp31_ = NULL;
-       ValaCCodeFunctionCall* _tmp32_ = NULL;
-       ValaCCodeFunctionCall* _tmp33_ = NULL;
-       ValaCCodeIdentifier* _tmp34_ = NULL;
+       ValaClass* _tmp32_ = NULL;
+       gchar* _tmp33_ = NULL;
+       gchar* _tmp34_ = NULL;
        ValaCCodeIdentifier* _tmp35_ = NULL;
-       ValaCCodeFunction* _tmp36_ = NULL;
-       ValaCCodeFunction* _tmp37_ = NULL;
-       ValaCCodeFunction* _tmp38_ = NULL;
-       ValaCCodeFunction* _tmp39_ = NULL;
-       ValaCCodeFile* _tmp40_ = NULL;
-       ValaCCodeFunction* _tmp41_ = NULL;
+       ValaCCodeIdentifier* _tmp36_ = NULL;
+       ValaCCodeFunctionCall* ccall = NULL;
+       ValaCCodeIdentifier* _tmp37_ = NULL;
+       ValaCCodeIdentifier* _tmp38_ = NULL;
+       ValaCCodeFunctionCall* _tmp39_ = NULL;
+       ValaCCodeFunctionCall* _tmp40_ = NULL;
+       ValaCCodeIdentifier* _tmp41_ = NULL;
+       ValaCCodeIdentifier* _tmp42_ = NULL;
+       ValaCCodeFunction* _tmp43_ = NULL;
+       ValaCCodeFunction* _tmp44_ = NULL;
+       ValaCCodeFunction* _tmp45_ = NULL;
+       ValaCCodeFunction* _tmp46_ = NULL;
+       ValaCCodeFile* _tmp47_ = NULL;
+       ValaCCodeFunction* _tmp48_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (cl != NULL);
        _tmp0_ = cl;
@@ -7371,63 +7501,86 @@ static void vala_gtype_module_add_g_value_get_function (ValaGTypeModule* self, V
        vala_ccode_function_add_parameter (_tmp5_, _tmp7_);
        _vala_ccode_node_unref0 (_tmp7_);
        _tmp8_ = cl;
-       _tmp9_ = vala_symbol_get_access ((ValaSymbol*) _tmp8_);
-       _tmp10_ = _tmp9_;
-       if (_tmp10_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-               ValaCCodeFunction* _tmp11_ = NULL;
-               _tmp11_ = function;
-               vala_ccode_function_set_modifiers (_tmp11_, VALA_CCODE_MODIFIERS_STATIC);
+       _tmp9_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp8_);
+       if (_tmp9_) {
+               ValaCCodeFunction* _tmp10_ = NULL;
+               _tmp10_ = function;
+               vala_ccode_function_set_modifiers (_tmp10_, VALA_CCODE_MODIFIERS_STATIC);
+       } else {
+               gboolean _tmp11_ = FALSE;
+               ValaCodeContext* _tmp12_ = NULL;
+               ValaCodeContext* _tmp13_ = NULL;
+               gboolean _tmp14_ = FALSE;
+               gboolean _tmp15_ = FALSE;
+               _tmp12_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+               _tmp13_ = _tmp12_;
+               _tmp14_ = vala_code_context_get_hide_internal (_tmp13_);
+               _tmp15_ = _tmp14_;
+               if (_tmp15_) {
+                       ValaClass* _tmp16_ = NULL;
+                       gboolean _tmp17_ = FALSE;
+                       _tmp16_ = cl;
+                       _tmp17_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp16_);
+                       _tmp11_ = _tmp17_;
+               } else {
+                       _tmp11_ = FALSE;
+               }
+               if (_tmp11_) {
+                       ValaCCodeFunction* _tmp18_ = NULL;
+                       _tmp18_ = function;
+                       vala_ccode_function_set_modifiers (_tmp18_, VALA_CCODE_MODIFIERS_INTERNAL);
+               }
        }
-       _tmp12_ = vala_ccode_identifier_new ("value");
-       _tmp13_ = _tmp12_;
-       _tmp14_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp13_, "data[0]");
-       _tmp15_ = _tmp14_;
-       _tmp16_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp15_, "v_pointer", FALSE);
-       _tmp17_ = _tmp16_;
-       _vala_ccode_node_unref0 (_tmp15_);
-       _vala_ccode_node_unref0 (_tmp13_);
-       vpointer = _tmp17_;
-       _tmp18_ = function;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp18_);
-       _tmp19_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
+       _tmp19_ = vala_ccode_identifier_new ("value");
        _tmp20_ = _tmp19_;
-       _tmp21_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp20_);
+       _tmp21_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp20_, "data[0]");
        _tmp22_ = _tmp21_;
-       _vala_ccode_node_unref0 (_tmp20_);
-       ccall_typecheck = _tmp22_;
-       _tmp23_ = vala_ccode_identifier_new ("value");
+       _tmp23_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp22_, "v_pointer", FALSE);
        _tmp24_ = _tmp23_;
-       vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp24_);
-       _vala_ccode_node_unref0 (_tmp24_);
-       _tmp25_ = cl;
-       _tmp26_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp25_);
+       _vala_ccode_node_unref0 (_tmp22_);
+       _vala_ccode_node_unref0 (_tmp20_);
+       vpointer = _tmp24_;
+       _tmp25_ = function;
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp25_);
+       _tmp26_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
        _tmp27_ = _tmp26_;
-       _tmp28_ = vala_ccode_identifier_new (_tmp27_);
+       _tmp28_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp27_);
        _tmp29_ = _tmp28_;
-       vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp29_);
-       _vala_ccode_node_unref0 (_tmp29_);
-       _g_free0 (_tmp27_);
-       _tmp30_ = vala_ccode_identifier_new ("g_return_val_if_fail");
+       _vala_ccode_node_unref0 (_tmp27_);
+       ccall_typecheck = _tmp29_;
+       _tmp30_ = vala_ccode_identifier_new ("value");
        _tmp31_ = _tmp30_;
-       _tmp32_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp31_);
-       _tmp33_ = _tmp32_;
+       vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp31_);
        _vala_ccode_node_unref0 (_tmp31_);
-       ccall = _tmp33_;
+       _tmp32_ = cl;
+       _tmp33_ = vala_ccode_base_module_get_ccode_type_id ((ValaCodeNode*) _tmp32_);
+       _tmp34_ = _tmp33_;
+       _tmp35_ = vala_ccode_identifier_new (_tmp34_);
+       _tmp36_ = _tmp35_;
+       vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp36_);
+       _vala_ccode_node_unref0 (_tmp36_);
+       _g_free0 (_tmp34_);
+       _tmp37_ = vala_ccode_identifier_new ("g_return_val_if_fail");
+       _tmp38_ = _tmp37_;
+       _tmp39_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp38_);
+       _tmp40_ = _tmp39_;
+       _vala_ccode_node_unref0 (_tmp38_);
+       ccall = _tmp40_;
        vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall_typecheck);
-       _tmp34_ = vala_ccode_identifier_new ("NULL");
-       _tmp35_ = _tmp34_;
-       vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp35_);
-       _vala_ccode_node_unref0 (_tmp35_);
-       _tmp36_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp37_ = _tmp36_;
-       vala_ccode_function_add_expression (_tmp37_, (ValaCCodeExpression*) ccall);
-       _tmp38_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp39_ = _tmp38_;
-       vala_ccode_function_add_return (_tmp39_, (ValaCCodeExpression*) vpointer);
+       _tmp41_ = vala_ccode_identifier_new ("NULL");
+       _tmp42_ = _tmp41_;
+       vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp42_);
+       _vala_ccode_node_unref0 (_tmp42_);
+       _tmp43_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp44_ = _tmp43_;
+       vala_ccode_function_add_expression (_tmp44_, (ValaCCodeExpression*) ccall);
+       _tmp45_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp46_ = _tmp45_;
+       vala_ccode_function_add_return (_tmp46_, (ValaCCodeExpression*) vpointer);
        vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
-       _tmp40_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp41_ = function;
-       vala_ccode_file_add_function (_tmp40_, _tmp41_);
+       _tmp47_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp48_ = function;
+       vala_ccode_file_add_function (_tmp47_, _tmp48_);
        _vala_ccode_node_unref0 (ccall);
        _vala_ccode_node_unref0 (ccall_typecheck);
        _vala_ccode_node_unref0 (vpointer);
@@ -7445,20 +7598,13 @@ static void vala_gtype_module_begin_base_init_function (ValaGTypeModule* self, V
        gchar* _tmp5_ = NULL;
        ValaCCodeFunction* _tmp6_ = NULL;
        ValaCCodeFunction* _tmp7_ = NULL;
-       ValaCCodeFunction* _tmp8_ = NULL;
-       ValaClass* _tmp9_ = NULL;
+       ValaClass* _tmp8_ = NULL;
+       gchar* _tmp9_ = NULL;
        gchar* _tmp10_ = NULL;
        gchar* _tmp11_ = NULL;
        gchar* _tmp12_ = NULL;
-       gchar* _tmp13_ = NULL;
+       ValaCCodeParameter* _tmp13_ = NULL;
        ValaCCodeParameter* _tmp14_ = NULL;
-       ValaCCodeParameter* _tmp15_ = NULL;
-       ValaCCodeFunction* _tmp16_ = NULL;
-       ValaCCodeFunction* _tmp17_ = NULL;
-       gboolean _tmp18_ = FALSE;
-       ValaCodeContext* _tmp19_ = NULL;
-       ValaCodeContext* _tmp20_ = NULL;
-       gboolean _tmp21_ = FALSE;
        g_return_if_fail (self != NULL);
        g_return_if_fail (cl != NULL);
        _tmp0_ = ((ValaCCodeBaseModule*) self)->base_init_context;
@@ -7473,393 +7619,19 @@ static void vala_gtype_module_begin_base_init_function (ValaGTypeModule* self, V
        _g_free0 (_tmp5_);
        _g_free0 (_tmp3_);
        base_init = _tmp7_;
-       _tmp8_ = base_init;
-       _tmp9_ = cl;
-       _tmp10_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp9_);
-       _tmp11_ = _tmp10_;
-       _tmp12_ = g_strdup_printf ("%sClass *", _tmp11_);
-       _tmp13_ = _tmp12_;
-       _tmp14_ = vala_ccode_parameter_new ("klass", _tmp13_);
-       _tmp15_ = _tmp14_;
-       vala_ccode_function_add_parameter (_tmp8_, _tmp15_);
-       _vala_ccode_node_unref0 (_tmp15_);
-       _g_free0 (_tmp13_);
-       _g_free0 (_tmp11_);
-       _tmp16_ = base_init;
-       vala_ccode_function_set_modifiers (_tmp16_, VALA_CCODE_MODIFIERS_STATIC);
-       _tmp17_ = base_init;
-       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp17_);
-       _tmp19_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
-       _tmp20_ = _tmp19_;
-       _tmp21_ = vala_code_context_require_glib_version (_tmp20_, 2, 24);
-       if (!_tmp21_) {
-               ValaClass* _tmp22_ = NULL;
-               gboolean _tmp23_ = FALSE;
-               gboolean _tmp24_ = FALSE;
-               _tmp22_ = cl;
-               _tmp23_ = vala_class_get_has_class_private_fields (_tmp22_);
-               _tmp24_ = _tmp23_;
-               _tmp18_ = _tmp24_;
-       } else {
-               _tmp18_ = FALSE;
-       }
-       if (_tmp18_) {
-               ValaCCodeFunction* _tmp25_ = NULL;
-               ValaCCodeFunction* _tmp26_ = NULL;
-               ValaClass* _tmp27_ = NULL;
-               gchar* _tmp28_ = NULL;
-               gchar* _tmp29_ = NULL;
-               gchar* _tmp30_ = NULL;
-               gchar* _tmp31_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp32_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp33_ = NULL;
-               ValaCCodeFunction* _tmp34_ = NULL;
-               ValaCCodeFunction* _tmp35_ = NULL;
-               ValaClass* _tmp36_ = NULL;
-               gchar* _tmp37_ = NULL;
-               gchar* _tmp38_ = NULL;
-               gchar* _tmp39_ = NULL;
-               gchar* _tmp40_ = NULL;
-               ValaCCodeConstant* _tmp41_ = NULL;
-               ValaCCodeConstant* _tmp42_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp43_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp44_ = NULL;
-               ValaCCodeFunction* _tmp45_ = NULL;
-               ValaCCodeFunction* _tmp46_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp47_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp48_ = NULL;
-               ValaCCodeFunctionCall* ccall = NULL;
-               ValaCCodeIdentifier* _tmp49_ = NULL;
-               ValaCCodeIdentifier* _tmp50_ = NULL;
-               ValaCCodeFunctionCall* _tmp51_ = NULL;
-               ValaCCodeFunctionCall* _tmp52_ = NULL;
-               ValaCCodeFunctionCall* ccall2 = NULL;
-               ValaCCodeIdentifier* _tmp53_ = NULL;
-               ValaCCodeIdentifier* _tmp54_ = NULL;
-               ValaCCodeFunctionCall* _tmp55_ = NULL;
-               ValaCCodeFunctionCall* _tmp56_ = NULL;
-               ValaCCodeFunctionCall* _tmp57_ = NULL;
-               ValaCCodeIdentifier* _tmp58_ = NULL;
-               ValaCCodeIdentifier* _tmp59_ = NULL;
-               ValaCCodeFunctionCall* _tmp60_ = NULL;
-               ValaCCodeFunctionCall* _tmp61_ = NULL;
-               ValaCCodeFunction* _tmp62_ = NULL;
-               ValaCCodeFunction* _tmp63_ = NULL;
-               ValaCCodeIdentifier* _tmp64_ = NULL;
-               ValaCCodeIdentifier* _tmp65_ = NULL;
-               ValaCCodeFunctionCall* _tmp66_ = NULL;
-               ValaCCodeFunction* _tmp67_ = NULL;
-               ValaCCodeFunction* _tmp68_ = NULL;
-               ValaCCodeIdentifier* _tmp69_ = NULL;
-               ValaCCodeIdentifier* _tmp70_ = NULL;
-               ValaClass* _tmp71_ = NULL;
-               gchar* _tmp72_ = NULL;
-               gchar* _tmp73_ = NULL;
-               gchar* _tmp74_ = NULL;
-               gchar* _tmp75_ = NULL;
-               ValaCCodeIdentifier* _tmp76_ = NULL;
-               ValaCCodeIdentifier* _tmp77_ = NULL;
-               ValaCCodeFunctionCall* _tmp78_ = NULL;
-               ValaCCodeIdentifier* _tmp79_ = NULL;
-               ValaCCodeIdentifier* _tmp80_ = NULL;
-               ValaCCodeFunctionCall* _tmp81_ = NULL;
-               ValaCCodeFunctionCall* _tmp82_ = NULL;
-               ValaCCodeIdentifier* _tmp83_ = NULL;
-               ValaCCodeIdentifier* _tmp84_ = NULL;
-               ValaCCodeFunctionCall* _tmp85_ = NULL;
-               ValaCCodeFunctionCall* _tmp86_ = NULL;
-               ValaCCodeFunction* _tmp87_ = NULL;
-               ValaCCodeFunction* _tmp88_ = NULL;
-               ValaCCodeIdentifier* _tmp89_ = NULL;
-               ValaCCodeIdentifier* _tmp90_ = NULL;
-               ValaCCodeFunctionCall* _tmp91_ = NULL;
-               ValaCCodeFunction* _tmp92_ = NULL;
-               ValaCCodeFunction* _tmp93_ = NULL;
-               ValaCCodeIdentifier* _tmp94_ = NULL;
-               ValaCCodeIdentifier* _tmp95_ = NULL;
-               ValaCCodeFunctionCall* _tmp96_ = NULL;
-               ValaCCodeFunctionCall* _tmp97_ = NULL;
-               ValaClass* _tmp98_ = NULL;
-               gchar* _tmp99_ = NULL;
-               gchar* _tmp100_ = NULL;
-               gchar* _tmp101_ = NULL;
-               gchar* _tmp102_ = NULL;
-               ValaCCodeIdentifier* _tmp103_ = NULL;
-               ValaCCodeIdentifier* _tmp104_ = NULL;
-               ValaCCodeFunction* _tmp105_ = NULL;
-               ValaCCodeFunction* _tmp106_ = NULL;
-               ValaCCodeIdentifier* _tmp107_ = NULL;
-               ValaCCodeIdentifier* _tmp108_ = NULL;
-               ValaCCodeFunctionCall* _tmp109_ = NULL;
-               ValaCCodeFile* _tmp110_ = NULL;
-               ValaCCodeFunction* _tmp111_ = NULL;
-               ValaCCodeFunction* _tmp112_ = NULL;
-               ValaCCodeIdentifier* _tmp113_ = NULL;
-               ValaCCodeIdentifier* _tmp114_ = NULL;
-               ValaCCodeIdentifier* _tmp115_ = NULL;
-               ValaCCodeIdentifier* _tmp116_ = NULL;
-               ValaCCodeFunctionCall* _tmp117_ = NULL;
-               ValaCCodeFunctionCall* _tmp118_ = NULL;
-               ValaCCodeIdentifier* _tmp119_ = NULL;
-               ValaCCodeIdentifier* _tmp120_ = NULL;
-               ValaCCodeFunctionCall* _tmp121_ = NULL;
-               ValaCCodeIdentifier* _tmp122_ = NULL;
-               ValaCCodeIdentifier* _tmp123_ = NULL;
-               ValaCCodeFunctionCall* _tmp124_ = NULL;
-               ValaClass* _tmp125_ = NULL;
-               gchar* _tmp126_ = NULL;
-               gchar* _tmp127_ = NULL;
-               gchar* _tmp128_ = NULL;
-               gchar* _tmp129_ = NULL;
-               ValaCCodeIdentifier* _tmp130_ = NULL;
-               ValaCCodeIdentifier* _tmp131_ = NULL;
-               ValaCCodeFunction* _tmp132_ = NULL;
-               ValaCCodeFunction* _tmp133_ = NULL;
-               ValaCCodeFunctionCall* _tmp134_ = NULL;
-               ValaCCodeFunction* _tmp135_ = NULL;
-               ValaCCodeFunction* _tmp136_ = NULL;
-               ValaCCodeIdentifier* _tmp137_ = NULL;
-               ValaCCodeIdentifier* _tmp138_ = NULL;
-               ValaCCodeFunctionCall* _tmp139_ = NULL;
-               ValaCCodeIdentifier* _tmp140_ = NULL;
-               ValaCCodeIdentifier* _tmp141_ = NULL;
-               ValaCCodeFunctionCall* _tmp142_ = NULL;
-               ValaCCodeFunctionCall* _tmp143_ = NULL;
-               ValaCCodeIdentifier* _tmp144_ = NULL;
-               ValaCCodeIdentifier* _tmp145_ = NULL;
-               ValaCCodeFunctionCall* _tmp146_ = NULL;
-               ValaCCodeFunctionCall* _tmp147_ = NULL;
-               ValaCCodeFunctionCall* _tmp148_ = NULL;
-               ValaClass* _tmp149_ = NULL;
-               gchar* _tmp150_ = NULL;
-               gchar* _tmp151_ = NULL;
-               gchar* _tmp152_ = NULL;
-               gchar* _tmp153_ = NULL;
-               ValaCCodeIdentifier* _tmp154_ = NULL;
-               ValaCCodeIdentifier* _tmp155_ = NULL;
-               ValaCCodeFunctionCall* _tmp156_ = NULL;
-               ValaCCodeIdentifier* _tmp157_ = NULL;
-               ValaCCodeIdentifier* _tmp158_ = NULL;
-               ValaCCodeFunction* _tmp159_ = NULL;
-               ValaCCodeFunction* _tmp160_ = NULL;
-               ValaCCodeFunctionCall* _tmp161_ = NULL;
-               _tmp25_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp26_ = _tmp25_;
-               _tmp27_ = cl;
-               _tmp28_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp27_);
-               _tmp29_ = _tmp28_;
-               _tmp30_ = g_strdup_printf ("%sClassPrivate *", _tmp29_);
-               _tmp31_ = _tmp30_;
-               _tmp32_ = vala_ccode_variable_declarator_new ("priv", NULL, NULL);
-               _tmp33_ = _tmp32_;
-               vala_ccode_function_add_declaration (_tmp26_, _tmp31_, (ValaCCodeDeclarator*) _tmp33_, 0);
-               _vala_ccode_node_unref0 (_tmp33_);
-               _g_free0 (_tmp31_);
-               _g_free0 (_tmp29_);
-               _tmp34_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp35_ = _tmp34_;
-               _tmp36_ = cl;
-               _tmp37_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp36_);
-               _tmp38_ = _tmp37_;
-               _tmp39_ = g_strdup_printf ("%sClassPrivate *", _tmp38_);
-               _tmp40_ = _tmp39_;
-               _tmp41_ = vala_ccode_constant_new ("NULL");
-               _tmp42_ = _tmp41_;
-               _tmp43_ = vala_ccode_variable_declarator_new ("parent_priv", (ValaCCodeExpression*) _tmp42_, NULL);
-               _tmp44_ = _tmp43_;
-               vala_ccode_function_add_declaration (_tmp35_, _tmp40_, (ValaCCodeDeclarator*) _tmp44_, 0);
-               _vala_ccode_node_unref0 (_tmp44_);
-               _vala_ccode_node_unref0 (_tmp42_);
-               _g_free0 (_tmp40_);
-               _g_free0 (_tmp38_);
-               _tmp45_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp46_ = _tmp45_;
-               _tmp47_ = vala_ccode_variable_declarator_new ("parent_type", NULL, NULL);
-               _tmp48_ = _tmp47_;
-               vala_ccode_function_add_declaration (_tmp46_, "GType", (ValaCCodeDeclarator*) _tmp48_, 0);
-               _vala_ccode_node_unref0 (_tmp48_);
-               _tmp49_ = vala_ccode_identifier_new ("g_type_parent");
-               _tmp50_ = _tmp49_;
-               _tmp51_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp50_);
-               _tmp52_ = _tmp51_;
-               _vala_ccode_node_unref0 (_tmp50_);
-               ccall = _tmp52_;
-               _tmp53_ = vala_ccode_identifier_new ("G_TYPE_FROM_CLASS");
-               _tmp54_ = _tmp53_;
-               _tmp55_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp54_);
-               _tmp56_ = _tmp55_;
-               _vala_ccode_node_unref0 (_tmp54_);
-               ccall2 = _tmp56_;
-               _tmp57_ = ccall2;
-               _tmp58_ = vala_ccode_identifier_new ("klass");
-               _tmp59_ = _tmp58_;
-               vala_ccode_function_call_add_argument (_tmp57_, (ValaCCodeExpression*) _tmp59_);
-               _vala_ccode_node_unref0 (_tmp59_);
-               _tmp60_ = ccall;
-               _tmp61_ = ccall2;
-               vala_ccode_function_call_add_argument (_tmp60_, (ValaCCodeExpression*) _tmp61_);
-               _tmp62_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp63_ = _tmp62_;
-               _tmp64_ = vala_ccode_identifier_new ("parent_type");
-               _tmp65_ = _tmp64_;
-               _tmp66_ = ccall;
-               vala_ccode_function_add_assignment (_tmp63_, (ValaCCodeExpression*) _tmp65_, (ValaCCodeExpression*) _tmp66_);
-               _vala_ccode_node_unref0 (_tmp65_);
-               _tmp67_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp68_ = _tmp67_;
-               _tmp69_ = vala_ccode_identifier_new ("parent_type");
-               _tmp70_ = _tmp69_;
-               vala_ccode_function_open_if (_tmp68_, (ValaCCodeExpression*) _tmp70_);
-               _vala_ccode_node_unref0 (_tmp70_);
-               _tmp71_ = cl;
-               _tmp72_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp71_, NULL);
-               _tmp73_ = _tmp72_;
-               _tmp74_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp73_);
-               _tmp75_ = _tmp74_;
-               _tmp76_ = vala_ccode_identifier_new (_tmp75_);
-               _tmp77_ = _tmp76_;
-               _tmp78_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp77_);
-               _vala_ccode_node_unref0 (ccall);
-               ccall = _tmp78_;
-               _vala_ccode_node_unref0 (_tmp77_);
-               _g_free0 (_tmp75_);
-               _g_free0 (_tmp73_);
-               _tmp79_ = vala_ccode_identifier_new ("g_type_class_peek");
-               _tmp80_ = _tmp79_;
-               _tmp81_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp80_);
-               _vala_ccode_node_unref0 (ccall2);
-               ccall2 = _tmp81_;
-               _vala_ccode_node_unref0 (_tmp80_);
-               _tmp82_ = ccall2;
-               _tmp83_ = vala_ccode_identifier_new ("parent_type");
-               _tmp84_ = _tmp83_;
-               vala_ccode_function_call_add_argument (_tmp82_, (ValaCCodeExpression*) _tmp84_);
-               _vala_ccode_node_unref0 (_tmp84_);
-               _tmp85_ = ccall;
-               _tmp86_ = ccall2;
-               vala_ccode_function_call_add_argument (_tmp85_, (ValaCCodeExpression*) _tmp86_);
-               _tmp87_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp88_ = _tmp87_;
-               _tmp89_ = vala_ccode_identifier_new ("parent_priv");
-               _tmp90_ = _tmp89_;
-               _tmp91_ = ccall;
-               vala_ccode_function_add_assignment (_tmp88_, (ValaCCodeExpression*) _tmp90_, (ValaCCodeExpression*) _tmp91_);
-               _vala_ccode_node_unref0 (_tmp90_);
-               _tmp92_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp93_ = _tmp92_;
-               vala_ccode_function_close (_tmp93_);
-               _tmp94_ = vala_ccode_identifier_new ("g_slice_new0");
-               _tmp95_ = _tmp94_;
-               _tmp96_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp95_);
-               _vala_ccode_node_unref0 (ccall);
-               ccall = _tmp96_;
-               _vala_ccode_node_unref0 (_tmp95_);
-               _tmp97_ = ccall;
-               _tmp98_ = cl;
-               _tmp99_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp98_);
-               _tmp100_ = _tmp99_;
-               _tmp101_ = g_strdup_printf ("%sClassPrivate", _tmp100_);
-               _tmp102_ = _tmp101_;
-               _tmp103_ = vala_ccode_identifier_new (_tmp102_);
-               _tmp104_ = _tmp103_;
-               vala_ccode_function_call_add_argument (_tmp97_, (ValaCCodeExpression*) _tmp104_);
-               _vala_ccode_node_unref0 (_tmp104_);
-               _g_free0 (_tmp102_);
-               _g_free0 (_tmp100_);
-               _tmp105_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp106_ = _tmp105_;
-               _tmp107_ = vala_ccode_identifier_new ("priv");
-               _tmp108_ = _tmp107_;
-               _tmp109_ = ccall;
-               vala_ccode_function_add_assignment (_tmp106_, (ValaCCodeExpression*) _tmp108_, (ValaCCodeExpression*) _tmp109_);
-               _vala_ccode_node_unref0 (_tmp108_);
-               _tmp110_ = ((ValaCCodeBaseModule*) self)->cfile;
-               vala_ccode_file_add_include (_tmp110_, "string.h", FALSE);
-               _tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp112_ = _tmp111_;
-               _tmp113_ = vala_ccode_identifier_new ("parent_priv");
-               _tmp114_ = _tmp113_;
-               vala_ccode_function_open_if (_tmp112_, (ValaCCodeExpression*) _tmp114_);
-               _vala_ccode_node_unref0 (_tmp114_);
-               _tmp115_ = vala_ccode_identifier_new ("memcpy");
-               _tmp116_ = _tmp115_;
-               _tmp117_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp116_);
-               _vala_ccode_node_unref0 (ccall);
-               ccall = _tmp117_;
-               _vala_ccode_node_unref0 (_tmp116_);
-               _tmp118_ = ccall;
-               _tmp119_ = vala_ccode_identifier_new ("priv");
-               _tmp120_ = _tmp119_;
-               vala_ccode_function_call_add_argument (_tmp118_, (ValaCCodeExpression*) _tmp120_);
-               _vala_ccode_node_unref0 (_tmp120_);
-               _tmp121_ = ccall;
-               _tmp122_ = vala_ccode_identifier_new ("parent_priv");
-               _tmp123_ = _tmp122_;
-               vala_ccode_function_call_add_argument (_tmp121_, (ValaCCodeExpression*) _tmp123_);
-               _vala_ccode_node_unref0 (_tmp123_);
-               _tmp124_ = ccall;
-               _tmp125_ = cl;
-               _tmp126_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp125_);
-               _tmp127_ = _tmp126_;
-               _tmp128_ = g_strdup_printf ("sizeof (%sClassPrivate)", _tmp127_);
-               _tmp129_ = _tmp128_;
-               _tmp130_ = vala_ccode_identifier_new (_tmp129_);
-               _tmp131_ = _tmp130_;
-               vala_ccode_function_call_add_argument (_tmp124_, (ValaCCodeExpression*) _tmp131_);
-               _vala_ccode_node_unref0 (_tmp131_);
-               _g_free0 (_tmp129_);
-               _g_free0 (_tmp127_);
-               _tmp132_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp133_ = _tmp132_;
-               _tmp134_ = ccall;
-               vala_ccode_function_add_expression (_tmp133_, (ValaCCodeExpression*) _tmp134_);
-               _tmp135_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp136_ = _tmp135_;
-               vala_ccode_function_close (_tmp136_);
-               _tmp137_ = vala_ccode_identifier_new ("g_type_set_qdata");
-               _tmp138_ = _tmp137_;
-               _tmp139_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp138_);
-               _vala_ccode_node_unref0 (ccall);
-               ccall = _tmp139_;
-               _vala_ccode_node_unref0 (_tmp138_);
-               _tmp140_ = vala_ccode_identifier_new ("G_TYPE_FROM_CLASS");
-               _tmp141_ = _tmp140_;
-               _tmp142_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp141_);
-               _vala_ccode_node_unref0 (ccall2);
-               ccall2 = _tmp142_;
-               _vala_ccode_node_unref0 (_tmp141_);
-               _tmp143_ = ccall2;
-               _tmp144_ = vala_ccode_identifier_new ("klass");
-               _tmp145_ = _tmp144_;
-               vala_ccode_function_call_add_argument (_tmp143_, (ValaCCodeExpression*) _tmp145_);
-               _vala_ccode_node_unref0 (_tmp145_);
-               _tmp146_ = ccall;
-               _tmp147_ = ccall2;
-               vala_ccode_function_call_add_argument (_tmp146_, (ValaCCodeExpression*) _tmp147_);
-               _tmp148_ = ccall;
-               _tmp149_ = cl;
-               _tmp150_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp149_, NULL);
-               _tmp151_ = _tmp150_;
-               _tmp152_ = g_strdup_printf ("_vala_%s_class_private_quark", _tmp151_);
-               _tmp153_ = _tmp152_;
-               _tmp154_ = vala_ccode_identifier_new (_tmp153_);
-               _tmp155_ = _tmp154_;
-               vala_ccode_function_call_add_argument (_tmp148_, (ValaCCodeExpression*) _tmp155_);
-               _vala_ccode_node_unref0 (_tmp155_);
-               _g_free0 (_tmp153_);
-               _g_free0 (_tmp151_);
-               _tmp156_ = ccall;
-               _tmp157_ = vala_ccode_identifier_new ("priv");
-               _tmp158_ = _tmp157_;
-               vala_ccode_function_call_add_argument (_tmp156_, (ValaCCodeExpression*) _tmp158_);
-               _vala_ccode_node_unref0 (_tmp158_);
-               _tmp159_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp160_ = _tmp159_;
-               _tmp161_ = ccall;
-               vala_ccode_function_add_expression (_tmp160_, (ValaCCodeExpression*) _tmp161_);
-               _vala_ccode_node_unref0 (ccall2);
-               _vala_ccode_node_unref0 (ccall);
-       }
+       _tmp8_ = cl;
+       _tmp9_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp8_);
+       _tmp10_ = _tmp9_;
+       _tmp11_ = g_strdup_printf ("%sClass *", _tmp10_);
+       _tmp12_ = _tmp11_;
+       _tmp13_ = vala_ccode_parameter_new ("klass", _tmp12_);
+       _tmp14_ = _tmp13_;
+       vala_ccode_function_add_parameter (base_init, _tmp14_);
+       _vala_ccode_node_unref0 (_tmp14_);
+       _g_free0 (_tmp12_);
+       _g_free0 (_tmp10_);
+       vala_ccode_function_set_modifiers (base_init, VALA_CCODE_MODIFIERS_STATIC);
+       vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, base_init);
        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
        _vala_ccode_node_unref0 (base_init);
 }
@@ -7964,14 +7736,14 @@ static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self,
        ValaClass* _tmp55_ = NULL;
        gboolean _tmp56_ = FALSE;
        gboolean _tmp57_ = FALSE;
+       gboolean _tmp107_ = FALSE;
+       ValaClass* _tmp108_ = NULL;
        gboolean _tmp109_ = FALSE;
-       ValaClass* _tmp110_ = NULL;
-       gboolean _tmp111_ = FALSE;
-       gboolean _tmp112_ = FALSE;
-       ValaClass* _tmp326_ = NULL;
-       ValaClass* _tmp327_ = NULL;
-       gboolean _tmp328_ = FALSE;
-       gboolean _tmp329_ = FALSE;
+       gboolean _tmp110_ = FALSE;
+       ValaClass* _tmp318_ = NULL;
+       ValaClass* _tmp319_ = NULL;
+       gboolean _tmp320_ = FALSE;
+       gboolean _tmp321_ = FALSE;
        g_return_if_fail (self != NULL);
        g_return_if_fail (cl != NULL);
        _tmp0_ = ((ValaCCodeBaseModule*) self)->class_init_context;
@@ -8114,33 +7886,32 @@ static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self,
                ValaClass* fundamental_class = NULL;
                ValaClass* _tmp74_ = NULL;
                ValaClass* _tmp75_ = NULL;
-               ValaClass* _tmp83_ = NULL;
-               gchar* _tmp84_ = NULL;
-               gchar* _tmp85_ = NULL;
+               ValaCCodeCastExpression* ccast = NULL;
+               ValaCCodeIdentifier* _tmp83_ = NULL;
+               ValaCCodeIdentifier* _tmp84_ = NULL;
+               ValaClass* _tmp85_ = NULL;
                gchar* _tmp86_ = NULL;
                gchar* _tmp87_ = NULL;
-               ValaCCodeIdentifier* _tmp88_ = NULL;
-               ValaCCodeIdentifier* _tmp89_ = NULL;
-               ValaCCodeFunctionCall* _tmp90_ = NULL;
-               ValaCCodeFunctionCall* _tmp91_ = NULL;
-               ValaCCodeIdentifier* _tmp92_ = NULL;
-               ValaCCodeIdentifier* _tmp93_ = NULL;
+               gchar* _tmp88_ = NULL;
+               gchar* _tmp89_ = NULL;
+               ValaCCodeCastExpression* _tmp90_ = NULL;
+               ValaCCodeCastExpression* _tmp91_ = NULL;
                ValaCCodeAssignment* finalize_assignment = NULL;
-               ValaCCodeFunctionCall* _tmp94_ = NULL;
-               ValaCCodeMemberAccess* _tmp95_ = NULL;
-               ValaCCodeMemberAccess* _tmp96_ = NULL;
-               ValaClass* _tmp97_ = NULL;
+               ValaCCodeCastExpression* _tmp92_ = NULL;
+               ValaCCodeMemberAccess* _tmp93_ = NULL;
+               ValaCCodeMemberAccess* _tmp94_ = NULL;
+               ValaClass* _tmp95_ = NULL;
+               gchar* _tmp96_ = NULL;
+               gchar* _tmp97_ = NULL;
                gchar* _tmp98_ = NULL;
                gchar* _tmp99_ = NULL;
-               gchar* _tmp100_ = NULL;
-               gchar* _tmp101_ = NULL;
-               ValaCCodeIdentifier* _tmp102_ = NULL;
-               ValaCCodeIdentifier* _tmp103_ = NULL;
-               ValaCCodeAssignment* _tmp104_ = NULL;
-               ValaCCodeAssignment* _tmp105_ = NULL;
-               ValaCCodeFunction* _tmp106_ = NULL;
-               ValaCCodeFunction* _tmp107_ = NULL;
-               ValaCCodeAssignment* _tmp108_ = NULL;
+               ValaCCodeIdentifier* _tmp100_ = NULL;
+               ValaCCodeIdentifier* _tmp101_ = NULL;
+               ValaCCodeAssignment* _tmp102_ = NULL;
+               ValaCCodeAssignment* _tmp103_ = NULL;
+               ValaCCodeFunction* _tmp104_ = NULL;
+               ValaCCodeFunction* _tmp105_ = NULL;
+               ValaCCodeAssignment* _tmp106_ = NULL;
                _tmp74_ = cl;
                _tmp75_ = _vala_code_node_ref0 (_tmp74_);
                fundamental_class = _tmp75_;
@@ -8165,300 +7936,288 @@ static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self,
                        _vala_code_node_unref0 (fundamental_class);
                        fundamental_class = _tmp82_;
                }
-               _tmp83_ = fundamental_class;
-               _tmp84_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp83_, NULL);
-               _tmp85_ = _tmp84_;
-               _tmp86_ = g_strdup_printf ("%s_CLASS", _tmp85_);
+               _tmp83_ = vala_ccode_identifier_new ("klass");
+               _tmp84_ = _tmp83_;
+               _tmp85_ = fundamental_class;
+               _tmp86_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp85_);
                _tmp87_ = _tmp86_;
-               _tmp88_ = vala_ccode_identifier_new (_tmp87_);
+               _tmp88_ = g_strconcat (_tmp87_, "Class *", NULL);
                _tmp89_ = _tmp88_;
-               _tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
-               _vala_ccode_node_unref0 (ccall);
-               ccall = _tmp90_;
-               _vala_ccode_node_unref0 (_tmp89_);
+               _tmp90_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp84_, _tmp89_);
+               _tmp91_ = _tmp90_;
+               _g_free0 (_tmp89_);
                _g_free0 (_tmp87_);
-               _g_free0 (_tmp85_);
-               _tmp91_ = ccall;
-               _tmp92_ = vala_ccode_identifier_new ("klass");
-               _tmp93_ = _tmp92_;
-               vala_ccode_function_call_add_argument (_tmp91_, (ValaCCodeExpression*) _tmp93_);
-               _vala_ccode_node_unref0 (_tmp93_);
-               _tmp94_ = ccall;
-               _tmp95_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp94_, "finalize");
-               _tmp96_ = _tmp95_;
-               _tmp97_ = cl;
-               _tmp98_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp97_);
+               _vala_ccode_node_unref0 (_tmp84_);
+               ccast = _tmp91_;
+               _tmp92_ = ccast;
+               _tmp93_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp92_, "finalize");
+               _tmp94_ = _tmp93_;
+               _tmp95_ = cl;
+               _tmp96_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp95_);
+               _tmp97_ = _tmp96_;
+               _tmp98_ = g_strconcat (_tmp97_, "finalize", NULL);
                _tmp99_ = _tmp98_;
-               _tmp100_ = g_strconcat (_tmp99_, "finalize", NULL);
+               _tmp100_ = vala_ccode_identifier_new (_tmp99_);
                _tmp101_ = _tmp100_;
-               _tmp102_ = vala_ccode_identifier_new (_tmp101_);
+               _tmp102_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp94_, (ValaCCodeExpression*) _tmp101_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
                _tmp103_ = _tmp102_;
-               _tmp104_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp96_, (ValaCCodeExpression*) _tmp103_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
-               _tmp105_ = _tmp104_;
-               _vala_ccode_node_unref0 (_tmp103_);
-               _g_free0 (_tmp101_);
+               _vala_ccode_node_unref0 (_tmp101_);
                _g_free0 (_tmp99_);
-               _vala_ccode_node_unref0 (_tmp96_);
-               finalize_assignment = _tmp105_;
-               _tmp106_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp107_ = _tmp106_;
-               _tmp108_ = finalize_assignment;
-               vala_ccode_function_add_expression (_tmp107_, (ValaCCodeExpression*) _tmp108_);
+               _g_free0 (_tmp97_);
+               _vala_ccode_node_unref0 (_tmp94_);
+               finalize_assignment = _tmp103_;
+               _tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp105_ = _tmp104_;
+               _tmp106_ = finalize_assignment;
+               vala_ccode_function_add_expression (_tmp105_, (ValaCCodeExpression*) _tmp106_);
                _vala_ccode_node_unref0 (finalize_assignment);
+               _vala_ccode_node_unref0 (ccast);
                _vala_code_node_unref0 (fundamental_class);
        }
-       _tmp110_ = cl;
-       _tmp111_ = vala_class_get_has_private_fields (_tmp110_);
-       _tmp112_ = _tmp111_;
-       if (_tmp112_) {
-               _tmp109_ = TRUE;
+       _tmp108_ = cl;
+       _tmp109_ = vala_class_get_has_private_fields (_tmp108_);
+       _tmp110_ = _tmp109_;
+       if (_tmp110_) {
+               _tmp107_ = TRUE;
        } else {
-               ValaClass* _tmp113_ = NULL;
-               ValaList* _tmp114_ = NULL;
-               ValaList* _tmp115_ = NULL;
-               gint _tmp116_ = 0;
-               gint _tmp117_ = 0;
-               _tmp113_ = cl;
-               _tmp114_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp113_);
+               ValaClass* _tmp111_ = NULL;
+               ValaList* _tmp112_ = NULL;
+               ValaList* _tmp113_ = NULL;
+               gint _tmp114_ = 0;
+               gint _tmp115_ = 0;
+               _tmp111_ = cl;
+               _tmp112_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp111_);
+               _tmp113_ = _tmp112_;
+               _tmp114_ = vala_collection_get_size ((ValaCollection*) _tmp113_);
                _tmp115_ = _tmp114_;
-               _tmp116_ = vala_collection_get_size ((ValaCollection*) _tmp115_);
-               _tmp117_ = _tmp116_;
-               _tmp109_ = _tmp117_ > 0;
-               _vala_iterable_unref0 (_tmp115_);
+               _tmp107_ = _tmp115_ > 0;
+               _vala_iterable_unref0 (_tmp113_);
        }
-       if (_tmp109_) {
-               ValaCCodeIdentifier* _tmp118_ = NULL;
-               ValaCCodeIdentifier* _tmp119_ = NULL;
-               ValaCCodeFunctionCall* _tmp120_ = NULL;
-               ValaCCodeFunctionCall* _tmp121_ = NULL;
-               ValaCCodeIdentifier* _tmp122_ = NULL;
-               ValaCCodeIdentifier* _tmp123_ = NULL;
-               ValaCCodeFunctionCall* _tmp124_ = NULL;
-               ValaClass* _tmp125_ = NULL;
+       if (_tmp107_) {
+               ValaCCodeIdentifier* _tmp116_ = NULL;
+               ValaCCodeIdentifier* _tmp117_ = NULL;
+               ValaCCodeFunctionCall* _tmp118_ = NULL;
+               ValaCCodeFunctionCall* _tmp119_ = NULL;
+               ValaCCodeIdentifier* _tmp120_ = NULL;
+               ValaCCodeIdentifier* _tmp121_ = NULL;
+               ValaCCodeFunctionCall* _tmp122_ = NULL;
+               ValaClass* _tmp123_ = NULL;
+               gchar* _tmp124_ = NULL;
+               gchar* _tmp125_ = NULL;
                gchar* _tmp126_ = NULL;
                gchar* _tmp127_ = NULL;
-               gchar* _tmp128_ = NULL;
-               gchar* _tmp129_ = NULL;
-               ValaCCodeConstant* _tmp130_ = NULL;
-               ValaCCodeConstant* _tmp131_ = NULL;
-               ValaCCodeFunction* _tmp132_ = NULL;
-               ValaCCodeFunction* _tmp133_ = NULL;
-               ValaCCodeFunctionCall* _tmp134_ = NULL;
-               _tmp118_ = vala_ccode_identifier_new ("g_type_class_add_private");
-               _tmp119_ = _tmp118_;
-               _tmp120_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp119_);
+               ValaCCodeConstant* _tmp128_ = NULL;
+               ValaCCodeConstant* _tmp129_ = NULL;
+               ValaCCodeFunction* _tmp130_ = NULL;
+               ValaCCodeFunction* _tmp131_ = NULL;
+               ValaCCodeFunctionCall* _tmp132_ = NULL;
+               _tmp116_ = vala_ccode_identifier_new ("g_type_class_add_private");
+               _tmp117_ = _tmp116_;
+               _tmp118_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp117_);
                _vala_ccode_node_unref0 (ccall);
-               ccall = _tmp120_;
-               _vala_ccode_node_unref0 (_tmp119_);
-               _tmp121_ = ccall;
-               _tmp122_ = vala_ccode_identifier_new ("klass");
-               _tmp123_ = _tmp122_;
-               vala_ccode_function_call_add_argument (_tmp121_, (ValaCCodeExpression*) _tmp123_);
-               _vala_ccode_node_unref0 (_tmp123_);
-               _tmp124_ = ccall;
-               _tmp125_ = cl;
-               _tmp126_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp125_);
+               ccall = _tmp118_;
+               _vala_ccode_node_unref0 (_tmp117_);
+               _tmp119_ = ccall;
+               _tmp120_ = vala_ccode_identifier_new ("klass");
+               _tmp121_ = _tmp120_;
+               vala_ccode_function_call_add_argument (_tmp119_, (ValaCCodeExpression*) _tmp121_);
+               _vala_ccode_node_unref0 (_tmp121_);
+               _tmp122_ = ccall;
+               _tmp123_ = cl;
+               _tmp124_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp123_);
+               _tmp125_ = _tmp124_;
+               _tmp126_ = g_strdup_printf ("sizeof (%sPrivate)", _tmp125_);
                _tmp127_ = _tmp126_;
-               _tmp128_ = g_strdup_printf ("sizeof (%sPrivate)", _tmp127_);
+               _tmp128_ = vala_ccode_constant_new (_tmp127_);
                _tmp129_ = _tmp128_;
-               _tmp130_ = vala_ccode_constant_new (_tmp129_);
-               _tmp131_ = _tmp130_;
-               vala_ccode_function_call_add_argument (_tmp124_, (ValaCCodeExpression*) _tmp131_);
-               _vala_ccode_node_unref0 (_tmp131_);
-               _g_free0 (_tmp129_);
+               vala_ccode_function_call_add_argument (_tmp122_, (ValaCCodeExpression*) _tmp129_);
+               _vala_ccode_node_unref0 (_tmp129_);
                _g_free0 (_tmp127_);
-               _tmp132_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp133_ = _tmp132_;
-               _tmp134_ = ccall;
-               vala_ccode_function_add_expression (_tmp133_, (ValaCCodeExpression*) _tmp134_);
+               _g_free0 (_tmp125_);
+               _tmp130_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+               _tmp131_ = _tmp130_;
+               _tmp132_ = ccall;
+               vala_ccode_function_add_expression (_tmp131_, (ValaCCodeExpression*) _tmp132_);
        }
        {
                ValaList* _m_list = NULL;
-               ValaClass* _tmp135_ = NULL;
-               ValaList* _tmp136_ = NULL;
+               ValaClass* _tmp133_ = NULL;
+               ValaList* _tmp134_ = NULL;
                gint _m_size = 0;
-               ValaList* _tmp137_ = NULL;
-               gint _tmp138_ = 0;
-               gint _tmp139_ = 0;
+               ValaList* _tmp135_ = NULL;
+               gint _tmp136_ = 0;
+               gint _tmp137_ = 0;
                gint _m_index = 0;
-               _tmp135_ = cl;
-               _tmp136_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp135_);
-               _m_list = _tmp136_;
-               _tmp137_ = _m_list;
-               _tmp138_ = vala_collection_get_size ((ValaCollection*) _tmp137_);
-               _tmp139_ = _tmp138_;
-               _m_size = _tmp139_;
+               _tmp133_ = cl;
+               _tmp134_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp133_);
+               _m_list = _tmp134_;
+               _tmp135_ = _m_list;
+               _tmp136_ = vala_collection_get_size ((ValaCollection*) _tmp135_);
+               _tmp137_ = _tmp136_;
+               _m_size = _tmp137_;
                _m_index = -1;
                while (TRUE) {
+                       gint _tmp138_ = 0;
+                       gint _tmp139_ = 0;
                        gint _tmp140_ = 0;
-                       gint _tmp141_ = 0;
-                       gint _tmp142_ = 0;
                        ValaMethod* m = NULL;
-                       ValaList* _tmp143_ = NULL;
-                       gint _tmp144_ = 0;
-                       gpointer _tmp145_ = NULL;
+                       ValaList* _tmp141_ = NULL;
+                       gint _tmp142_ = 0;
+                       gpointer _tmp143_ = NULL;
+                       ValaMethod* _tmp144_ = NULL;
+                       ValaMethod* _tmp145_ = NULL;
                        ValaMethod* _tmp146_ = NULL;
+                       ValaSymbol* base_type = NULL;
                        ValaMethod* _tmp147_ = NULL;
                        ValaMethod* _tmp148_ = NULL;
-                       ValaSymbol* base_type = NULL;
                        ValaMethod* _tmp149_ = NULL;
-                       ValaMethod* _tmp150_ = NULL;
-                       ValaMethod* _tmp151_ = NULL;
+                       ValaSymbol* _tmp150_ = NULL;
+                       ValaSymbol* _tmp151_ = NULL;
                        ValaSymbol* _tmp152_ = NULL;
-                       ValaSymbol* _tmp153_ = NULL;
-                       ValaSymbol* _tmp154_ = NULL;
+                       gboolean _tmp153_ = FALSE;
+                       ValaMethod* _tmp154_ = NULL;
                        gboolean _tmp155_ = FALSE;
-                       ValaMethod* _tmp156_ = NULL;
-                       gboolean _tmp157_ = FALSE;
-                       gboolean _tmp158_ = FALSE;
-                       _tmp140_ = _m_index;
-                       _m_index = _tmp140_ + 1;
-                       _tmp141_ = _m_index;
-                       _tmp142_ = _m_size;
-                       if (!(_tmp141_ < _tmp142_)) {
+                       gboolean _tmp156_ = FALSE;
+                       _tmp138_ = _m_index;
+                       _m_index = _tmp138_ + 1;
+                       _tmp139_ = _m_index;
+                       _tmp140_ = _m_size;
+                       if (!(_tmp139_ < _tmp140_)) {
                                break;
                        }
-                       _tmp143_ = _m_list;
-                       _tmp144_ = _m_index;
-                       _tmp145_ = vala_list_get (_tmp143_, _tmp144_);
-                       m = (ValaMethod*) _tmp145_;
-                       _tmp146_ = m;
-                       _tmp147_ = vala_method_get_base_method (_tmp146_);
-                       _tmp148_ = _tmp147_;
-                       if (_tmp148_ == NULL) {
+                       _tmp141_ = _m_list;
+                       _tmp142_ = _m_index;
+                       _tmp143_ = vala_list_get (_tmp141_, _tmp142_);
+                       m = (ValaMethod*) _tmp143_;
+                       _tmp144_ = m;
+                       _tmp145_ = vala_method_get_base_method (_tmp144_);
+                       _tmp146_ = _tmp145_;
+                       if (_tmp146_ == NULL) {
                                _vala_code_node_unref0 (m);
                                continue;
                        }
-                       _tmp149_ = m;
-                       _tmp150_ = vala_method_get_base_method (_tmp149_);
+                       _tmp147_ = m;
+                       _tmp148_ = vala_method_get_base_method (_tmp147_);
+                       _tmp149_ = _tmp148_;
+                       _tmp150_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp149_);
                        _tmp151_ = _tmp150_;
-                       _tmp152_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp151_);
-                       _tmp153_ = _tmp152_;
-                       _tmp154_ = _vala_code_node_ref0 (_tmp153_);
-                       base_type = _tmp154_;
-                       _tmp156_ = m;
-                       _tmp157_ = vala_method_get_is_abstract (_tmp156_);
-                       _tmp158_ = _tmp157_;
-                       if (!_tmp158_) {
-                               _tmp155_ = TRUE;
+                       _tmp152_ = _vala_code_node_ref0 (_tmp151_);
+                       base_type = _tmp152_;
+                       _tmp154_ = m;
+                       _tmp155_ = vala_method_get_is_abstract (_tmp154_);
+                       _tmp156_ = _tmp155_;
+                       if (!_tmp156_) {
+                               _tmp153_ = TRUE;
                        } else {
-                               ValaMethod* _tmp159_ = NULL;
-                               gboolean _tmp160_ = FALSE;
-                               gboolean _tmp161_ = FALSE;
-                               _tmp159_ = m;
-                               _tmp160_ = vala_method_get_coroutine (_tmp159_);
-                               _tmp161_ = _tmp160_;
-                               _tmp155_ = !_tmp161_;
+                               ValaMethod* _tmp157_ = NULL;
+                               gboolean _tmp158_ = FALSE;
+                               gboolean _tmp159_ = FALSE;
+                               _tmp157_ = m;
+                               _tmp158_ = vala_method_get_coroutine (_tmp157_);
+                               _tmp159_ = _tmp158_;
+                               _tmp153_ = !_tmp159_;
                        }
-                       if (_tmp155_) {
-                               ValaCCodeFunctionCall* ccast = NULL;
+                       if (_tmp153_) {
+                               ValaCCodeCastExpression* ccast = NULL;
+                               ValaCCodeIdentifier* _tmp160_ = NULL;
+                               ValaCCodeIdentifier* _tmp161_ = NULL;
                                ValaSymbol* _tmp162_ = NULL;
                                gchar* _tmp163_ = NULL;
                                gchar* _tmp164_ = NULL;
                                gchar* _tmp165_ = NULL;
                                gchar* _tmp166_ = NULL;
-                               ValaCCodeIdentifier* _tmp167_ = NULL;
-                               ValaCCodeIdentifier* _tmp168_ = NULL;
-                               ValaCCodeFunctionCall* _tmp169_ = NULL;
-                               ValaCCodeFunctionCall* _tmp170_ = NULL;
-                               ValaCCodeFunctionCall* _tmp171_ = NULL;
-                               ValaCCodeIdentifier* _tmp172_ = NULL;
-                               ValaCCodeIdentifier* _tmp173_ = NULL;
-                               ValaCCodeFunction* _tmp174_ = NULL;
-                               ValaCCodeFunction* _tmp175_ = NULL;
-                               ValaCCodeFunctionCall* _tmp176_ = NULL;
-                               ValaMethod* _tmp177_ = NULL;
-                               ValaMethod* _tmp178_ = NULL;
+                               ValaCCodeCastExpression* _tmp167_ = NULL;
+                               ValaCCodeCastExpression* _tmp168_ = NULL;
+                               ValaCCodeFunction* _tmp169_ = NULL;
+                               ValaCCodeFunction* _tmp170_ = NULL;
+                               ValaCCodeCastExpression* _tmp171_ = NULL;
+                               ValaMethod* _tmp172_ = NULL;
+                               ValaMethod* _tmp173_ = NULL;
+                               ValaMethod* _tmp174_ = NULL;
+                               gchar* _tmp175_ = NULL;
+                               gchar* _tmp176_ = NULL;
+                               ValaCCodeMemberAccess* _tmp177_ = NULL;
+                               ValaCCodeMemberAccess* _tmp178_ = NULL;
                                ValaMethod* _tmp179_ = NULL;
                                gchar* _tmp180_ = NULL;
                                gchar* _tmp181_ = NULL;
-                               ValaCCodeMemberAccess* _tmp182_ = NULL;
-                               ValaCCodeMemberAccess* _tmp183_ = NULL;
+                               ValaCCodeIdentifier* _tmp182_ = NULL;
+                               ValaCCodeIdentifier* _tmp183_ = NULL;
                                ValaMethod* _tmp184_ = NULL;
-                               gchar* _tmp185_ = NULL;
-                               gchar* _tmp186_ = NULL;
-                               ValaCCodeIdentifier* _tmp187_ = NULL;
-                               ValaCCodeIdentifier* _tmp188_ = NULL;
-                               ValaMethod* _tmp189_ = NULL;
-                               gboolean _tmp190_ = FALSE;
-                               gboolean _tmp191_ = FALSE;
+                               gboolean _tmp185_ = FALSE;
+                               gboolean _tmp186_ = FALSE;
+                               _tmp160_ = vala_ccode_identifier_new ("klass");
+                               _tmp161_ = _tmp160_;
                                _tmp162_ = base_type;
-                               _tmp163_ = vala_ccode_base_module_get_ccode_upper_case_name (_tmp162_, NULL);
+                               _tmp163_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp162_);
                                _tmp164_ = _tmp163_;
-                               _tmp165_ = g_strdup_printf ("%s_CLASS", _tmp164_);
+                               _tmp165_ = g_strconcat (_tmp164_, "Class *", NULL);
                                _tmp166_ = _tmp165_;
-                               _tmp167_ = vala_ccode_identifier_new (_tmp166_);
+                               _tmp167_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp161_, _tmp166_);
                                _tmp168_ = _tmp167_;
-                               _tmp169_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp168_);
-                               _tmp170_ = _tmp169_;
-                               _vala_ccode_node_unref0 (_tmp168_);
                                _g_free0 (_tmp166_);
                                _g_free0 (_tmp164_);
-                               ccast = _tmp170_;
+                               _vala_ccode_node_unref0 (_tmp161_);
+                               ccast = _tmp168_;
+                               _tmp169_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp170_ = _tmp169_;
                                _tmp171_ = ccast;
-                               _tmp172_ = vala_ccode_identifier_new ("klass");
-                               _tmp173_ = _tmp172_;
-                               vala_ccode_function_call_add_argument (_tmp171_, (ValaCCodeExpression*) _tmp173_);
-                               _vala_ccode_node_unref0 (_tmp173_);
-                               _tmp174_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp175_ = _tmp174_;
-                               _tmp176_ = ccast;
-                               _tmp177_ = m;
-                               _tmp178_ = vala_method_get_base_method (_tmp177_);
-                               _tmp179_ = _tmp178_;
-                               _tmp180_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp179_);
+                               _tmp172_ = m;
+                               _tmp173_ = vala_method_get_base_method (_tmp172_);
+                               _tmp174_ = _tmp173_;
+                               _tmp175_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp174_);
+                               _tmp176_ = _tmp175_;
+                               _tmp177_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp171_, _tmp176_);
+                               _tmp178_ = _tmp177_;
+                               _tmp179_ = m;
+                               _tmp180_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp179_);
                                _tmp181_ = _tmp180_;
-                               _tmp182_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp176_, _tmp181_);
+                               _tmp182_ = vala_ccode_identifier_new (_tmp181_);
                                _tmp183_ = _tmp182_;
-                               _tmp184_ = m;
-                               _tmp185_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp184_);
-                               _tmp186_ = _tmp185_;
-                               _tmp187_ = vala_ccode_identifier_new (_tmp186_);
-                               _tmp188_ = _tmp187_;
-                               vala_ccode_function_add_assignment (_tmp175_, (ValaCCodeExpression*) _tmp183_, (ValaCCodeExpression*) _tmp188_);
-                               _vala_ccode_node_unref0 (_tmp188_);
-                               _g_free0 (_tmp186_);
+                               vala_ccode_function_add_assignment (_tmp170_, (ValaCCodeExpression*) _tmp178_, (ValaCCodeExpression*) _tmp183_);
                                _vala_ccode_node_unref0 (_tmp183_);
                                _g_free0 (_tmp181_);
-                               _tmp189_ = m;
-                               _tmp190_ = vala_method_get_coroutine (_tmp189_);
-                               _tmp191_ = _tmp190_;
-                               if (_tmp191_) {
-                                       ValaCCodeFunction* _tmp192_ = NULL;
-                                       ValaCCodeFunction* _tmp193_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp194_ = NULL;
-                                       ValaMethod* _tmp195_ = NULL;
-                                       ValaMethod* _tmp196_ = NULL;
+                               _vala_ccode_node_unref0 (_tmp178_);
+                               _g_free0 (_tmp176_);
+                               _tmp184_ = m;
+                               _tmp185_ = vala_method_get_coroutine (_tmp184_);
+                               _tmp186_ = _tmp185_;
+                               if (_tmp186_) {
+                                       ValaCCodeFunction* _tmp187_ = NULL;
+                                       ValaCCodeFunction* _tmp188_ = NULL;
+                                       ValaCCodeCastExpression* _tmp189_ = NULL;
+                                       ValaMethod* _tmp190_ = NULL;
+                                       ValaMethod* _tmp191_ = NULL;
+                                       ValaMethod* _tmp192_ = NULL;
+                                       gchar* _tmp193_ = NULL;
+                                       gchar* _tmp194_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp195_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp196_ = NULL;
                                        ValaMethod* _tmp197_ = NULL;
                                        gchar* _tmp198_ = NULL;
                                        gchar* _tmp199_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp200_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp201_ = NULL;
-                                       ValaMethod* _tmp202_ = NULL;
-                                       gchar* _tmp203_ = NULL;
-                                       gchar* _tmp204_ = NULL;
-                                       ValaCCodeIdentifier* _tmp205_ = NULL;
-                                       ValaCCodeIdentifier* _tmp206_ = NULL;
-                                       _tmp192_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp193_ = _tmp192_;
-                                       _tmp194_ = ccast;
-                                       _tmp195_ = m;
-                                       _tmp196_ = vala_method_get_base_method (_tmp195_);
-                                       _tmp197_ = _tmp196_;
-                                       _tmp198_ = vala_ccode_base_module_get_ccode_finish_vfunc_name (_tmp197_);
+                                       ValaCCodeIdentifier* _tmp200_ = NULL;
+                                       ValaCCodeIdentifier* _tmp201_ = NULL;
+                                       _tmp187_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp188_ = _tmp187_;
+                                       _tmp189_ = ccast;
+                                       _tmp190_ = m;
+                                       _tmp191_ = vala_method_get_base_method (_tmp190_);
+                                       _tmp192_ = _tmp191_;
+                                       _tmp193_ = vala_ccode_base_module_get_ccode_finish_vfunc_name (_tmp192_);
+                                       _tmp194_ = _tmp193_;
+                                       _tmp195_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp189_, _tmp194_);
+                                       _tmp196_ = _tmp195_;
+                                       _tmp197_ = m;
+                                       _tmp198_ = vala_ccode_base_module_get_ccode_finish_real_name (_tmp197_);
                                        _tmp199_ = _tmp198_;
-                                       _tmp200_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp194_, _tmp199_);
+                                       _tmp200_ = vala_ccode_identifier_new (_tmp199_);
                                        _tmp201_ = _tmp200_;
-                                       _tmp202_ = m;
-                                       _tmp203_ = vala_ccode_base_module_get_ccode_finish_real_name (_tmp202_);
-                                       _tmp204_ = _tmp203_;
-                                       _tmp205_ = vala_ccode_identifier_new (_tmp204_);
-                                       _tmp206_ = _tmp205_;
-                                       vala_ccode_function_add_assignment (_tmp193_, (ValaCCodeExpression*) _tmp201_, (ValaCCodeExpression*) _tmp206_);
-                                       _vala_ccode_node_unref0 (_tmp206_);
-                                       _g_free0 (_tmp204_);
+                                       vala_ccode_function_add_assignment (_tmp188_, (ValaCCodeExpression*) _tmp196_, (ValaCCodeExpression*) _tmp201_);
                                        _vala_ccode_node_unref0 (_tmp201_);
                                        _g_free0 (_tmp199_);
+                                       _vala_ccode_node_unref0 (_tmp196_);
+                                       _g_free0 (_tmp194_);
                                }
                                _vala_ccode_node_unref0 (ccast);
                        }
@@ -8469,120 +8228,112 @@ static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self,
        }
        {
                ValaList* _sig_list = NULL;
-               ValaClass* _tmp207_ = NULL;
-               ValaList* _tmp208_ = NULL;
+               ValaClass* _tmp202_ = NULL;
+               ValaList* _tmp203_ = NULL;
                gint _sig_size = 0;
-               ValaList* _tmp209_ = NULL;
-               gint _tmp210_ = 0;
-               gint _tmp211_ = 0;
+               ValaList* _tmp204_ = NULL;
+               gint _tmp205_ = 0;
+               gint _tmp206_ = 0;
                gint _sig_index = 0;
-               _tmp207_ = cl;
-               _tmp208_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp207_);
-               _sig_list = _tmp208_;
-               _tmp209_ = _sig_list;
-               _tmp210_ = vala_collection_get_size ((ValaCollection*) _tmp209_);
-               _tmp211_ = _tmp210_;
-               _sig_size = _tmp211_;
+               _tmp202_ = cl;
+               _tmp203_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp202_);
+               _sig_list = _tmp203_;
+               _tmp204_ = _sig_list;
+               _tmp205_ = vala_collection_get_size ((ValaCollection*) _tmp204_);
+               _tmp206_ = _tmp205_;
+               _sig_size = _tmp206_;
                _sig_index = -1;
                while (TRUE) {
-                       gint _tmp212_ = 0;
-                       gint _tmp213_ = 0;
-                       gint _tmp214_ = 0;
+                       gint _tmp207_ = 0;
+                       gint _tmp208_ = 0;
+                       gint _tmp209_ = 0;
                        ValaSignal* sig = NULL;
-                       ValaList* _tmp215_ = NULL;
-                       gint _tmp216_ = 0;
-                       gpointer _tmp217_ = NULL;
-                       ValaSignal* _tmp218_ = NULL;
-                       ValaMethod* _tmp219_ = NULL;
-                       ValaMethod* _tmp220_ = NULL;
-                       ValaCCodeFunctionCall* ccast = NULL;
-                       ValaClass* _tmp221_ = NULL;
+                       ValaList* _tmp210_ = NULL;
+                       gint _tmp211_ = 0;
+                       gpointer _tmp212_ = NULL;
+                       ValaSignal* _tmp213_ = NULL;
+                       ValaMethod* _tmp214_ = NULL;
+                       ValaMethod* _tmp215_ = NULL;
+                       ValaCCodeCastExpression* ccast = NULL;
+                       ValaCCodeIdentifier* _tmp216_ = NULL;
+                       ValaCCodeIdentifier* _tmp217_ = NULL;
+                       ValaClass* _tmp218_ = NULL;
+                       gchar* _tmp219_ = NULL;
+                       gchar* _tmp220_ = NULL;
+                       gchar* _tmp221_ = NULL;
                        gchar* _tmp222_ = NULL;
-                       gchar* _tmp223_ = NULL;
-                       gchar* _tmp224_ = NULL;
-                       gchar* _tmp225_ = NULL;
-                       ValaCCodeIdentifier* _tmp226_ = NULL;
-                       ValaCCodeIdentifier* _tmp227_ = NULL;
-                       ValaCCodeFunctionCall* _tmp228_ = NULL;
-                       ValaCCodeFunctionCall* _tmp229_ = NULL;
-                       ValaCCodeFunctionCall* _tmp230_ = NULL;
-                       ValaCCodeIdentifier* _tmp231_ = NULL;
-                       ValaCCodeIdentifier* _tmp232_ = NULL;
-                       ValaCCodeFunction* _tmp233_ = NULL;
-                       ValaCCodeFunction* _tmp234_ = NULL;
-                       ValaCCodeFunctionCall* _tmp235_ = NULL;
-                       ValaSignal* _tmp236_ = NULL;
+                       ValaCCodeCastExpression* _tmp223_ = NULL;
+                       ValaCCodeCastExpression* _tmp224_ = NULL;
+                       ValaCCodeFunction* _tmp225_ = NULL;
+                       ValaCCodeFunction* _tmp226_ = NULL;
+                       ValaCCodeCastExpression* _tmp227_ = NULL;
+                       ValaSignal* _tmp228_ = NULL;
+                       ValaMethod* _tmp229_ = NULL;
+                       ValaMethod* _tmp230_ = NULL;
+                       gchar* _tmp231_ = NULL;
+                       gchar* _tmp232_ = NULL;
+                       ValaCCodeMemberAccess* _tmp233_ = NULL;
+                       ValaCCodeMemberAccess* _tmp234_ = NULL;
+                       ValaSignal* _tmp235_ = NULL;
+                       ValaMethod* _tmp236_ = NULL;
                        ValaMethod* _tmp237_ = NULL;
-                       ValaMethod* _tmp238_ = NULL;
+                       gchar* _tmp238_ = NULL;
                        gchar* _tmp239_ = NULL;
-                       gchar* _tmp240_ = NULL;
-                       ValaCCodeMemberAccess* _tmp241_ = NULL;
-                       ValaCCodeMemberAccess* _tmp242_ = NULL;
-                       ValaSignal* _tmp243_ = NULL;
-                       ValaMethod* _tmp244_ = NULL;
-                       ValaMethod* _tmp245_ = NULL;
-                       gchar* _tmp246_ = NULL;
-                       gchar* _tmp247_ = NULL;
-                       ValaCCodeIdentifier* _tmp248_ = NULL;
-                       ValaCCodeIdentifier* _tmp249_ = NULL;
-                       _tmp212_ = _sig_index;
-                       _sig_index = _tmp212_ + 1;
-                       _tmp213_ = _sig_index;
-                       _tmp214_ = _sig_size;
-                       if (!(_tmp213_ < _tmp214_)) {
+                       ValaCCodeIdentifier* _tmp240_ = NULL;
+                       ValaCCodeIdentifier* _tmp241_ = NULL;
+                       _tmp207_ = _sig_index;
+                       _sig_index = _tmp207_ + 1;
+                       _tmp208_ = _sig_index;
+                       _tmp209_ = _sig_size;
+                       if (!(_tmp208_ < _tmp209_)) {
                                break;
                        }
-                       _tmp215_ = _sig_list;
-                       _tmp216_ = _sig_index;
-                       _tmp217_ = vala_list_get (_tmp215_, _tmp216_);
-                       sig = (ValaSignal*) _tmp217_;
-                       _tmp218_ = sig;
-                       _tmp219_ = vala_signal_get_default_handler (_tmp218_);
-                       _tmp220_ = _tmp219_;
-                       if (_tmp220_ == NULL) {
+                       _tmp210_ = _sig_list;
+                       _tmp211_ = _sig_index;
+                       _tmp212_ = vala_list_get (_tmp210_, _tmp211_);
+                       sig = (ValaSignal*) _tmp212_;
+                       _tmp213_ = sig;
+                       _tmp214_ = vala_signal_get_default_handler (_tmp213_);
+                       _tmp215_ = _tmp214_;
+                       if (_tmp215_ == NULL) {
                                _vala_code_node_unref0 (sig);
                                continue;
                        }
-                       _tmp221_ = cl;
-                       _tmp222_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp221_, NULL);
-                       _tmp223_ = _tmp222_;
-                       _tmp224_ = g_strdup_printf ("%s_CLASS", _tmp223_);
-                       _tmp225_ = _tmp224_;
-                       _tmp226_ = vala_ccode_identifier_new (_tmp225_);
-                       _tmp227_ = _tmp226_;
-                       _tmp228_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp227_);
-                       _tmp229_ = _tmp228_;
-                       _vala_ccode_node_unref0 (_tmp227_);
-                       _g_free0 (_tmp225_);
-                       _g_free0 (_tmp223_);
-                       ccast = _tmp229_;
-                       _tmp230_ = ccast;
-                       _tmp231_ = vala_ccode_identifier_new ("klass");
+                       _tmp216_ = vala_ccode_identifier_new ("klass");
+                       _tmp217_ = _tmp216_;
+                       _tmp218_ = cl;
+                       _tmp219_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp218_);
+                       _tmp220_ = _tmp219_;
+                       _tmp221_ = g_strconcat (_tmp220_, "Class *", NULL);
+                       _tmp222_ = _tmp221_;
+                       _tmp223_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp217_, _tmp222_);
+                       _tmp224_ = _tmp223_;
+                       _g_free0 (_tmp222_);
+                       _g_free0 (_tmp220_);
+                       _vala_ccode_node_unref0 (_tmp217_);
+                       ccast = _tmp224_;
+                       _tmp225_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp226_ = _tmp225_;
+                       _tmp227_ = ccast;
+                       _tmp228_ = sig;
+                       _tmp229_ = vala_signal_get_default_handler (_tmp228_);
+                       _tmp230_ = _tmp229_;
+                       _tmp231_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp230_);
                        _tmp232_ = _tmp231_;
-                       vala_ccode_function_call_add_argument (_tmp230_, (ValaCCodeExpression*) _tmp232_);
-                       _vala_ccode_node_unref0 (_tmp232_);
-                       _tmp233_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp233_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp227_, _tmp232_);
                        _tmp234_ = _tmp233_;
-                       _tmp235_ = ccast;
-                       _tmp236_ = sig;
-                       _tmp237_ = vala_signal_get_default_handler (_tmp236_);
-                       _tmp238_ = _tmp237_;
-                       _tmp239_ = vala_ccode_base_module_get_ccode_vfunc_name (_tmp238_);
-                       _tmp240_ = _tmp239_;
-                       _tmp241_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp235_, _tmp240_);
-                       _tmp242_ = _tmp241_;
-                       _tmp243_ = sig;
-                       _tmp244_ = vala_signal_get_default_handler (_tmp243_);
-                       _tmp245_ = _tmp244_;
-                       _tmp246_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp245_);
-                       _tmp247_ = _tmp246_;
-                       _tmp248_ = vala_ccode_identifier_new (_tmp247_);
-                       _tmp249_ = _tmp248_;
-                       vala_ccode_function_add_assignment (_tmp234_, (ValaCCodeExpression*) _tmp242_, (ValaCCodeExpression*) _tmp249_);
-                       _vala_ccode_node_unref0 (_tmp249_);
-                       _g_free0 (_tmp247_);
-                       _vala_ccode_node_unref0 (_tmp242_);
-                       _g_free0 (_tmp240_);
+                       _tmp235_ = sig;
+                       _tmp236_ = vala_signal_get_default_handler (_tmp235_);
+                       _tmp237_ = _tmp236_;
+                       _tmp238_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp237_);
+                       _tmp239_ = _tmp238_;
+                       _tmp240_ = vala_ccode_identifier_new (_tmp239_);
+                       _tmp241_ = _tmp240_;
+                       vala_ccode_function_add_assignment (_tmp226_, (ValaCCodeExpression*) _tmp234_, (ValaCCodeExpression*) _tmp241_);
+                       _vala_ccode_node_unref0 (_tmp241_);
+                       _g_free0 (_tmp239_);
+                       _vala_ccode_node_unref0 (_tmp234_);
+                       _g_free0 (_tmp232_);
                        _vala_ccode_node_unref0 (ccast);
                        _vala_code_node_unref0 (sig);
                }
@@ -8590,200 +8341,200 @@ static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self,
        }
        {
                ValaList* _prop_list = NULL;
-               ValaClass* _tmp250_ = NULL;
-               ValaList* _tmp251_ = NULL;
+               ValaClass* _tmp242_ = NULL;
+               ValaList* _tmp243_ = NULL;
                gint _prop_size = 0;
-               ValaList* _tmp252_ = NULL;
-               gint _tmp253_ = 0;
-               gint _tmp254_ = 0;
+               ValaList* _tmp244_ = NULL;
+               gint _tmp245_ = 0;
+               gint _tmp246_ = 0;
                gint _prop_index = 0;
-               _tmp250_ = cl;
-               _tmp251_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp250_);
-               _prop_list = _tmp251_;
-               _tmp252_ = _prop_list;
-               _tmp253_ = vala_collection_get_size ((ValaCollection*) _tmp252_);
-               _tmp254_ = _tmp253_;
-               _prop_size = _tmp254_;
+               _tmp242_ = cl;
+               _tmp243_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp242_);
+               _prop_list = _tmp243_;
+               _tmp244_ = _prop_list;
+               _tmp245_ = vala_collection_get_size ((ValaCollection*) _tmp244_);
+               _tmp246_ = _tmp245_;
+               _prop_size = _tmp246_;
                _prop_index = -1;
                while (TRUE) {
-                       gint _tmp255_ = 0;
-                       gint _tmp256_ = 0;
-                       gint _tmp257_ = 0;
+                       gint _tmp247_ = 0;
+                       gint _tmp248_ = 0;
+                       gint _tmp249_ = 0;
                        ValaProperty* prop = NULL;
-                       ValaList* _tmp258_ = NULL;
-                       gint _tmp259_ = 0;
-                       gpointer _tmp260_ = NULL;
-                       ValaProperty* _tmp261_ = NULL;
-                       ValaProperty* _tmp262_ = NULL;
-                       ValaProperty* _tmp263_ = NULL;
+                       ValaList* _tmp250_ = NULL;
+                       gint _tmp251_ = 0;
+                       gpointer _tmp252_ = NULL;
+                       ValaProperty* _tmp253_ = NULL;
+                       ValaProperty* _tmp254_ = NULL;
+                       ValaProperty* _tmp255_ = NULL;
                        ValaSymbol* base_type = NULL;
-                       ValaProperty* _tmp264_ = NULL;
-                       ValaProperty* _tmp265_ = NULL;
-                       ValaProperty* _tmp266_ = NULL;
-                       ValaSymbol* _tmp267_ = NULL;
-                       ValaSymbol* _tmp268_ = NULL;
-                       ValaSymbol* _tmp269_ = NULL;
+                       ValaProperty* _tmp256_ = NULL;
+                       ValaProperty* _tmp257_ = NULL;
+                       ValaProperty* _tmp258_ = NULL;
+                       ValaSymbol* _tmp259_ = NULL;
+                       ValaSymbol* _tmp260_ = NULL;
+                       ValaSymbol* _tmp261_ = NULL;
                        ValaCCodeFunctionCall* ccast = NULL;
-                       ValaSymbol* _tmp270_ = NULL;
-                       gchar* _tmp271_ = NULL;
-                       gchar* _tmp272_ = NULL;
-                       gchar* _tmp273_ = NULL;
-                       gchar* _tmp274_ = NULL;
-                       ValaCCodeIdentifier* _tmp275_ = NULL;
-                       ValaCCodeIdentifier* _tmp276_ = NULL;
-                       ValaCCodeFunctionCall* _tmp277_ = NULL;
-                       ValaCCodeFunctionCall* _tmp278_ = NULL;
-                       ValaCCodeFunctionCall* _tmp279_ = NULL;
-                       ValaCCodeIdentifier* _tmp280_ = NULL;
-                       ValaCCodeIdentifier* _tmp281_ = NULL;
-                       ValaProperty* _tmp282_ = NULL;
-                       ValaProperty* _tmp283_ = NULL;
-                       ValaProperty* _tmp284_ = NULL;
-                       gboolean _tmp285_ = FALSE;
-                       _tmp255_ = _prop_index;
-                       _prop_index = _tmp255_ + 1;
-                       _tmp256_ = _prop_index;
-                       _tmp257_ = _prop_size;
-                       if (!(_tmp256_ < _tmp257_)) {
+                       ValaSymbol* _tmp262_ = NULL;
+                       gchar* _tmp263_ = NULL;
+                       gchar* _tmp264_ = NULL;
+                       gchar* _tmp265_ = NULL;
+                       gchar* _tmp266_ = NULL;
+                       ValaCCodeIdentifier* _tmp267_ = NULL;
+                       ValaCCodeIdentifier* _tmp268_ = NULL;
+                       ValaCCodeFunctionCall* _tmp269_ = NULL;
+                       ValaCCodeFunctionCall* _tmp270_ = NULL;
+                       ValaCCodeFunctionCall* _tmp271_ = NULL;
+                       ValaCCodeIdentifier* _tmp272_ = NULL;
+                       ValaCCodeIdentifier* _tmp273_ = NULL;
+                       ValaProperty* _tmp274_ = NULL;
+                       ValaProperty* _tmp275_ = NULL;
+                       ValaProperty* _tmp276_ = NULL;
+                       gboolean _tmp277_ = FALSE;
+                       _tmp247_ = _prop_index;
+                       _prop_index = _tmp247_ + 1;
+                       _tmp248_ = _prop_index;
+                       _tmp249_ = _prop_size;
+                       if (!(_tmp248_ < _tmp249_)) {
                                break;
                        }
-                       _tmp258_ = _prop_list;
-                       _tmp259_ = _prop_index;
-                       _tmp260_ = vala_list_get (_tmp258_, _tmp259_);
-                       prop = (ValaProperty*) _tmp260_;
-                       _tmp261_ = prop;
-                       _tmp262_ = vala_property_get_base_property (_tmp261_);
-                       _tmp263_ = _tmp262_;
-                       if (_tmp263_ == NULL) {
+                       _tmp250_ = _prop_list;
+                       _tmp251_ = _prop_index;
+                       _tmp252_ = vala_list_get (_tmp250_, _tmp251_);
+                       prop = (ValaProperty*) _tmp252_;
+                       _tmp253_ = prop;
+                       _tmp254_ = vala_property_get_base_property (_tmp253_);
+                       _tmp255_ = _tmp254_;
+                       if (_tmp255_ == NULL) {
                                _vala_code_node_unref0 (prop);
                                continue;
                        }
-                       _tmp264_ = prop;
-                       _tmp265_ = vala_property_get_base_property (_tmp264_);
+                       _tmp256_ = prop;
+                       _tmp257_ = vala_property_get_base_property (_tmp256_);
+                       _tmp258_ = _tmp257_;
+                       _tmp259_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp258_);
+                       _tmp260_ = _tmp259_;
+                       _tmp261_ = _vala_code_node_ref0 (_tmp260_);
+                       base_type = _tmp261_;
+                       _tmp262_ = base_type;
+                       _tmp263_ = vala_ccode_base_module_get_ccode_upper_case_name (_tmp262_, NULL);
+                       _tmp264_ = _tmp263_;
+                       _tmp265_ = g_strdup_printf ("%s_CLASS", _tmp264_);
                        _tmp266_ = _tmp265_;
-                       _tmp267_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp266_);
+                       _tmp267_ = vala_ccode_identifier_new (_tmp266_);
                        _tmp268_ = _tmp267_;
-                       _tmp269_ = _vala_code_node_ref0 (_tmp268_);
-                       base_type = _tmp269_;
-                       _tmp270_ = base_type;
-                       _tmp271_ = vala_ccode_base_module_get_ccode_upper_case_name (_tmp270_, NULL);
-                       _tmp272_ = _tmp271_;
-                       _tmp273_ = g_strdup_printf ("%s_CLASS", _tmp272_);
-                       _tmp274_ = _tmp273_;
-                       _tmp275_ = vala_ccode_identifier_new (_tmp274_);
+                       _tmp269_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp268_);
+                       _tmp270_ = _tmp269_;
+                       _vala_ccode_node_unref0 (_tmp268_);
+                       _g_free0 (_tmp266_);
+                       _g_free0 (_tmp264_);
+                       ccast = _tmp270_;
+                       _tmp271_ = ccast;
+                       _tmp272_ = vala_ccode_identifier_new ("klass");
+                       _tmp273_ = _tmp272_;
+                       vala_ccode_function_call_add_argument (_tmp271_, (ValaCCodeExpression*) _tmp273_);
+                       _vala_ccode_node_unref0 (_tmp273_);
+                       _tmp274_ = prop;
+                       _tmp275_ = vala_property_get_base_property (_tmp274_);
                        _tmp276_ = _tmp275_;
-                       _tmp277_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp276_);
-                       _tmp278_ = _tmp277_;
-                       _vala_ccode_node_unref0 (_tmp276_);
-                       _g_free0 (_tmp274_);
-                       _g_free0 (_tmp272_);
-                       ccast = _tmp278_;
-                       _tmp279_ = ccast;
-                       _tmp280_ = vala_ccode_identifier_new ("klass");
-                       _tmp281_ = _tmp280_;
-                       vala_ccode_function_call_add_argument (_tmp279_, (ValaCCodeExpression*) _tmp281_);
-                       _vala_ccode_node_unref0 (_tmp281_);
-                       _tmp282_ = prop;
-                       _tmp283_ = vala_property_get_base_property (_tmp282_);
-                       _tmp284_ = _tmp283_;
-                       _tmp285_ = vala_ccode_base_module_get_ccode_no_accessor_method (_tmp284_);
-                       if (!_tmp285_) {
-                               ValaProperty* _tmp286_ = NULL;
-                               ValaPropertyAccessor* _tmp287_ = NULL;
-                               ValaPropertyAccessor* _tmp288_ = NULL;
-                               ValaProperty* _tmp306_ = NULL;
-                               ValaPropertyAccessor* _tmp307_ = NULL;
-                               ValaPropertyAccessor* _tmp308_ = NULL;
-                               _tmp286_ = prop;
-                               _tmp287_ = vala_property_get_get_accessor (_tmp286_);
-                               _tmp288_ = _tmp287_;
-                               if (_tmp288_ != NULL) {
+                       _tmp277_ = vala_ccode_base_module_get_ccode_no_accessor_method (_tmp276_);
+                       if (!_tmp277_) {
+                               ValaProperty* _tmp278_ = NULL;
+                               ValaPropertyAccessor* _tmp279_ = NULL;
+                               ValaPropertyAccessor* _tmp280_ = NULL;
+                               ValaProperty* _tmp298_ = NULL;
+                               ValaPropertyAccessor* _tmp299_ = NULL;
+                               ValaPropertyAccessor* _tmp300_ = NULL;
+                               _tmp278_ = prop;
+                               _tmp279_ = vala_property_get_get_accessor (_tmp278_);
+                               _tmp280_ = _tmp279_;
+                               if (_tmp280_ != NULL) {
                                        gchar* cname = NULL;
-                                       ValaProperty* _tmp289_ = NULL;
-                                       ValaPropertyAccessor* _tmp290_ = NULL;
-                                       ValaPropertyAccessor* _tmp291_ = NULL;
+                                       ValaProperty* _tmp281_ = NULL;
+                                       ValaPropertyAccessor* _tmp282_ = NULL;
+                                       ValaPropertyAccessor* _tmp283_ = NULL;
+                                       gchar* _tmp284_ = NULL;
+                                       ValaCCodeFunction* _tmp285_ = NULL;
+                                       ValaCCodeFunction* _tmp286_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp287_ = NULL;
+                                       ValaProperty* _tmp288_ = NULL;
+                                       const gchar* _tmp289_ = NULL;
+                                       const gchar* _tmp290_ = NULL;
+                                       gchar* _tmp291_ = NULL;
                                        gchar* _tmp292_ = NULL;
-                                       ValaCCodeFunction* _tmp293_ = NULL;
-                                       ValaCCodeFunction* _tmp294_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp295_ = NULL;
-                                       ValaProperty* _tmp296_ = NULL;
-                                       const gchar* _tmp297_ = NULL;
-                                       const gchar* _tmp298_ = NULL;
-                                       gchar* _tmp299_ = NULL;
-                                       gchar* _tmp300_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp301_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp302_ = NULL;
-                                       const gchar* _tmp303_ = NULL;
-                                       ValaCCodeIdentifier* _tmp304_ = NULL;
-                                       ValaCCodeIdentifier* _tmp305_ = NULL;
-                                       _tmp289_ = prop;
-                                       _tmp290_ = vala_property_get_get_accessor (_tmp289_);
-                                       _tmp291_ = _tmp290_;
-                                       _tmp292_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp291_);
-                                       cname = _tmp292_;
-                                       _tmp293_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       ValaCCodeMemberAccess* _tmp293_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp294_ = NULL;
+                                       const gchar* _tmp295_ = NULL;
+                                       ValaCCodeIdentifier* _tmp296_ = NULL;
+                                       ValaCCodeIdentifier* _tmp297_ = NULL;
+                                       _tmp281_ = prop;
+                                       _tmp282_ = vala_property_get_get_accessor (_tmp281_);
+                                       _tmp283_ = _tmp282_;
+                                       _tmp284_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp283_);
+                                       cname = _tmp284_;
+                                       _tmp285_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp286_ = _tmp285_;
+                                       _tmp287_ = ccast;
+                                       _tmp288_ = prop;
+                                       _tmp289_ = vala_symbol_get_name ((ValaSymbol*) _tmp288_);
+                                       _tmp290_ = _tmp289_;
+                                       _tmp291_ = g_strdup_printf ("get_%s", _tmp290_);
+                                       _tmp292_ = _tmp291_;
+                                       _tmp293_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp287_, _tmp292_);
                                        _tmp294_ = _tmp293_;
-                                       _tmp295_ = ccast;
-                                       _tmp296_ = prop;
-                                       _tmp297_ = vala_symbol_get_name ((ValaSymbol*) _tmp296_);
-                                       _tmp298_ = _tmp297_;
-                                       _tmp299_ = g_strdup_printf ("get_%s", _tmp298_);
-                                       _tmp300_ = _tmp299_;
-                                       _tmp301_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp295_, _tmp300_);
-                                       _tmp302_ = _tmp301_;
-                                       _tmp303_ = cname;
-                                       _tmp304_ = vala_ccode_identifier_new (_tmp303_);
-                                       _tmp305_ = _tmp304_;
-                                       vala_ccode_function_add_assignment (_tmp294_, (ValaCCodeExpression*) _tmp302_, (ValaCCodeExpression*) _tmp305_);
-                                       _vala_ccode_node_unref0 (_tmp305_);
-                                       _vala_ccode_node_unref0 (_tmp302_);
-                                       _g_free0 (_tmp300_);
+                                       _tmp295_ = cname;
+                                       _tmp296_ = vala_ccode_identifier_new (_tmp295_);
+                                       _tmp297_ = _tmp296_;
+                                       vala_ccode_function_add_assignment (_tmp286_, (ValaCCodeExpression*) _tmp294_, (ValaCCodeExpression*) _tmp297_);
+                                       _vala_ccode_node_unref0 (_tmp297_);
+                                       _vala_ccode_node_unref0 (_tmp294_);
+                                       _g_free0 (_tmp292_);
                                        _g_free0 (cname);
                                }
-                               _tmp306_ = prop;
-                               _tmp307_ = vala_property_get_set_accessor (_tmp306_);
-                               _tmp308_ = _tmp307_;
-                               if (_tmp308_ != NULL) {
+                               _tmp298_ = prop;
+                               _tmp299_ = vala_property_get_set_accessor (_tmp298_);
+                               _tmp300_ = _tmp299_;
+                               if (_tmp300_ != NULL) {
                                        gchar* cname = NULL;
-                                       ValaProperty* _tmp309_ = NULL;
-                                       ValaPropertyAccessor* _tmp310_ = NULL;
-                                       ValaPropertyAccessor* _tmp311_ = NULL;
+                                       ValaProperty* _tmp301_ = NULL;
+                                       ValaPropertyAccessor* _tmp302_ = NULL;
+                                       ValaPropertyAccessor* _tmp303_ = NULL;
+                                       gchar* _tmp304_ = NULL;
+                                       ValaCCodeFunction* _tmp305_ = NULL;
+                                       ValaCCodeFunction* _tmp306_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp307_ = NULL;
+                                       ValaProperty* _tmp308_ = NULL;
+                                       const gchar* _tmp309_ = NULL;
+                                       const gchar* _tmp310_ = NULL;
+                                       gchar* _tmp311_ = NULL;
                                        gchar* _tmp312_ = NULL;
-                                       ValaCCodeFunction* _tmp313_ = NULL;
-                                       ValaCCodeFunction* _tmp314_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp315_ = NULL;
-                                       ValaProperty* _tmp316_ = NULL;
-                                       const gchar* _tmp317_ = NULL;
-                                       const gchar* _tmp318_ = NULL;
-                                       gchar* _tmp319_ = NULL;
-                                       gchar* _tmp320_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp321_ = NULL;
-                                       ValaCCodeMemberAccess* _tmp322_ = NULL;
-                                       const gchar* _tmp323_ = NULL;
-                                       ValaCCodeIdentifier* _tmp324_ = NULL;
-                                       ValaCCodeIdentifier* _tmp325_ = NULL;
-                                       _tmp309_ = prop;
-                                       _tmp310_ = vala_property_get_set_accessor (_tmp309_);
-                                       _tmp311_ = _tmp310_;
-                                       _tmp312_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp311_);
-                                       cname = _tmp312_;
-                                       _tmp313_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       ValaCCodeMemberAccess* _tmp313_ = NULL;
+                                       ValaCCodeMemberAccess* _tmp314_ = NULL;
+                                       const gchar* _tmp315_ = NULL;
+                                       ValaCCodeIdentifier* _tmp316_ = NULL;
+                                       ValaCCodeIdentifier* _tmp317_ = NULL;
+                                       _tmp301_ = prop;
+                                       _tmp302_ = vala_property_get_set_accessor (_tmp301_);
+                                       _tmp303_ = _tmp302_;
+                                       _tmp304_ = vala_ccode_base_module_get_ccode_real_name ((ValaSymbol*) _tmp303_);
+                                       cname = _tmp304_;
+                                       _tmp305_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp306_ = _tmp305_;
+                                       _tmp307_ = ccast;
+                                       _tmp308_ = prop;
+                                       _tmp309_ = vala_symbol_get_name ((ValaSymbol*) _tmp308_);
+                                       _tmp310_ = _tmp309_;
+                                       _tmp311_ = g_strdup_printf ("set_%s", _tmp310_);
+                                       _tmp312_ = _tmp311_;
+                                       _tmp313_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp307_, _tmp312_);
                                        _tmp314_ = _tmp313_;
-                                       _tmp315_ = ccast;
-                                       _tmp316_ = prop;
-                                       _tmp317_ = vala_symbol_get_name ((ValaSymbol*) _tmp316_);
-                                       _tmp318_ = _tmp317_;
-                                       _tmp319_ = g_strdup_printf ("set_%s", _tmp318_);
-                                       _tmp320_ = _tmp319_;
-                                       _tmp321_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp315_, _tmp320_);
-                                       _tmp322_ = _tmp321_;
-                                       _tmp323_ = cname;
-                                       _tmp324_ = vala_ccode_identifier_new (_tmp323_);
-                                       _tmp325_ = _tmp324_;
-                                       vala_ccode_function_add_assignment (_tmp314_, (ValaCCodeExpression*) _tmp322_, (ValaCCodeExpression*) _tmp325_);
-                                       _vala_ccode_node_unref0 (_tmp325_);
-                                       _vala_ccode_node_unref0 (_tmp322_);
-                                       _g_free0 (_tmp320_);
+                                       _tmp315_ = cname;
+                                       _tmp316_ = vala_ccode_identifier_new (_tmp315_);
+                                       _tmp317_ = _tmp316_;
+                                       vala_ccode_function_add_assignment (_tmp306_, (ValaCCodeExpression*) _tmp314_, (ValaCCodeExpression*) _tmp317_);
+                                       _vala_ccode_node_unref0 (_tmp317_);
+                                       _vala_ccode_node_unref0 (_tmp314_);
+                                       _g_free0 (_tmp312_);
                                        _g_free0 (cname);
                                }
                        }
@@ -8793,90 +8544,90 @@ static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self,
                }
                _vala_iterable_unref0 (_prop_list);
        }
-       _tmp326_ = cl;
-       vala_gtype_module_generate_class_init (self, _tmp326_);
-       _tmp327_ = cl;
-       _tmp328_ = vala_class_get_is_compact (_tmp327_);
-       _tmp329_ = _tmp328_;
-       if (!_tmp329_) {
+       _tmp318_ = cl;
+       vala_gtype_module_generate_class_init (self, _tmp318_);
+       _tmp319_ = cl;
+       _tmp320_ = vala_class_get_is_compact (_tmp319_);
+       _tmp321_ = _tmp320_;
+       if (!_tmp321_) {
                {
                        ValaList* _sig_list = NULL;
-                       ValaClass* _tmp330_ = NULL;
-                       ValaList* _tmp331_ = NULL;
+                       ValaClass* _tmp322_ = NULL;
+                       ValaList* _tmp323_ = NULL;
                        gint _sig_size = 0;
-                       ValaList* _tmp332_ = NULL;
-                       gint _tmp333_ = 0;
-                       gint _tmp334_ = 0;
+                       ValaList* _tmp324_ = NULL;
+                       gint _tmp325_ = 0;
+                       gint _tmp326_ = 0;
                        gint _sig_index = 0;
-                       _tmp330_ = cl;
-                       _tmp331_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp330_);
-                       _sig_list = _tmp331_;
-                       _tmp332_ = _sig_list;
-                       _tmp333_ = vala_collection_get_size ((ValaCollection*) _tmp332_);
-                       _tmp334_ = _tmp333_;
-                       _sig_size = _tmp334_;
+                       _tmp322_ = cl;
+                       _tmp323_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp322_);
+                       _sig_list = _tmp323_;
+                       _tmp324_ = _sig_list;
+                       _tmp325_ = vala_collection_get_size ((ValaCollection*) _tmp324_);
+                       _tmp326_ = _tmp325_;
+                       _sig_size = _tmp326_;
                        _sig_index = -1;
                        while (TRUE) {
-                               gint _tmp335_ = 0;
-                               gint _tmp336_ = 0;
-                               gint _tmp337_ = 0;
+                               gint _tmp327_ = 0;
+                               gint _tmp328_ = 0;
+                               gint _tmp329_ = 0;
                                ValaSignal* sig = NULL;
-                               ValaList* _tmp338_ = NULL;
-                               gint _tmp339_ = 0;
-                               gpointer _tmp340_ = NULL;
-                               ValaSignal* _tmp341_ = NULL;
-                               ValaComment* _tmp342_ = NULL;
-                               ValaComment* _tmp343_ = NULL;
-                               ValaCCodeFunction* _tmp353_ = NULL;
-                               ValaCCodeFunction* _tmp354_ = NULL;
-                               ValaSignal* _tmp355_ = NULL;
-                               ValaClass* _tmp356_ = NULL;
-                               ValaCCodeFunctionCall* _tmp357_ = NULL;
-                               ValaCCodeFunctionCall* _tmp358_ = NULL;
-                               _tmp335_ = _sig_index;
-                               _sig_index = _tmp335_ + 1;
-                               _tmp336_ = _sig_index;
-                               _tmp337_ = _sig_size;
-                               if (!(_tmp336_ < _tmp337_)) {
+                               ValaList* _tmp330_ = NULL;
+                               gint _tmp331_ = 0;
+                               gpointer _tmp332_ = NULL;
+                               ValaSignal* _tmp333_ = NULL;
+                               ValaComment* _tmp334_ = NULL;
+                               ValaComment* _tmp335_ = NULL;
+                               ValaCCodeFunction* _tmp345_ = NULL;
+                               ValaCCodeFunction* _tmp346_ = NULL;
+                               ValaSignal* _tmp347_ = NULL;
+                               ValaClass* _tmp348_ = NULL;
+                               ValaCCodeFunctionCall* _tmp349_ = NULL;
+                               ValaCCodeFunctionCall* _tmp350_ = NULL;
+                               _tmp327_ = _sig_index;
+                               _sig_index = _tmp327_ + 1;
+                               _tmp328_ = _sig_index;
+                               _tmp329_ = _sig_size;
+                               if (!(_tmp328_ < _tmp329_)) {
                                        break;
                                }
-                               _tmp338_ = _sig_list;
-                               _tmp339_ = _sig_index;
-                               _tmp340_ = vala_list_get (_tmp338_, _tmp339_);
-                               sig = (ValaSignal*) _tmp340_;
-                               _tmp341_ = sig;
-                               _tmp342_ = vala_symbol_get_comment ((ValaSymbol*) _tmp341_);
-                               _tmp343_ = _tmp342_;
-                               if (_tmp343_ != NULL) {
-                                       ValaCCodeFunction* _tmp344_ = NULL;
-                                       ValaCCodeFunction* _tmp345_ = NULL;
-                                       ValaSignal* _tmp346_ = NULL;
-                                       ValaComment* _tmp347_ = NULL;
-                                       ValaComment* _tmp348_ = NULL;
-                                       const gchar* _tmp349_ = NULL;
-                                       const gchar* _tmp350_ = NULL;
-                                       ValaCCodeComment* _tmp351_ = NULL;
-                                       ValaCCodeComment* _tmp352_ = NULL;
-                                       _tmp344_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                                       _tmp345_ = _tmp344_;
-                                       _tmp346_ = sig;
-                                       _tmp347_ = vala_symbol_get_comment ((ValaSymbol*) _tmp346_);
-                                       _tmp348_ = _tmp347_;
-                                       _tmp349_ = vala_comment_get_content (_tmp348_);
-                                       _tmp350_ = _tmp349_;
-                                       _tmp351_ = vala_ccode_comment_new (_tmp350_);
-                                       _tmp352_ = _tmp351_;
-                                       vala_ccode_function_add_statement (_tmp345_, (ValaCCodeNode*) _tmp352_);
-                                       _vala_ccode_node_unref0 (_tmp352_);
+                               _tmp330_ = _sig_list;
+                               _tmp331_ = _sig_index;
+                               _tmp332_ = vala_list_get (_tmp330_, _tmp331_);
+                               sig = (ValaSignal*) _tmp332_;
+                               _tmp333_ = sig;
+                               _tmp334_ = vala_symbol_get_comment ((ValaSymbol*) _tmp333_);
+                               _tmp335_ = _tmp334_;
+                               if (_tmp335_ != NULL) {
+                                       ValaCCodeFunction* _tmp336_ = NULL;
+                                       ValaCCodeFunction* _tmp337_ = NULL;
+                                       ValaSignal* _tmp338_ = NULL;
+                                       ValaComment* _tmp339_ = NULL;
+                                       ValaComment* _tmp340_ = NULL;
+                                       const gchar* _tmp341_ = NULL;
+                                       const gchar* _tmp342_ = NULL;
+                                       ValaCCodeComment* _tmp343_ = NULL;
+                                       ValaCCodeComment* _tmp344_ = NULL;
+                                       _tmp336_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                                       _tmp337_ = _tmp336_;
+                                       _tmp338_ = sig;
+                                       _tmp339_ = vala_symbol_get_comment ((ValaSymbol*) _tmp338_);
+                                       _tmp340_ = _tmp339_;
+                                       _tmp341_ = vala_comment_get_content (_tmp340_);
+                                       _tmp342_ = _tmp341_;
+                                       _tmp343_ = vala_ccode_comment_new (_tmp342_);
+                                       _tmp344_ = _tmp343_;
+                                       vala_ccode_function_add_statement (_tmp337_, (ValaCCodeNode*) _tmp344_);
+                                       _vala_ccode_node_unref0 (_tmp344_);
                                }
-                               _tmp353_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                               _tmp354_ = _tmp353_;
-                               _tmp355_ = sig;
-                               _tmp356_ = cl;
-                               _tmp357_ = vala_ccode_base_module_get_signal_creation ((ValaCCodeBaseModule*) self, _tmp355_, (ValaTypeSymbol*) _tmp356_);
-                               _tmp358_ = _tmp357_;
-                               vala_ccode_function_add_expression (_tmp354_, (ValaCCodeExpression*) _tmp358_);
-                               _vala_ccode_node_unref0 (_tmp358_);
+                               _tmp345_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                               _tmp346_ = _tmp345_;
+                               _tmp347_ = sig;
+                               _tmp348_ = cl;
+                               _tmp349_ = vala_ccode_base_module_get_signal_creation ((ValaCCodeBaseModule*) self, _tmp347_, (ValaTypeSymbol*) _tmp348_);
+                               _tmp350_ = _tmp349_;
+                               vala_ccode_function_add_expression (_tmp346_, (ValaCCodeExpression*) _tmp350_);
+                               _vala_ccode_node_unref0 (_tmp350_);
                                _vala_code_node_unref0 (sig);
                        }
                        _vala_iterable_unref0 (_sig_list);
@@ -11209,191 +10960,24 @@ static void vala_gtype_module_begin_base_finalize_function (ValaGTypeModule* sel
 
 static void vala_gtype_module_add_base_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
        ValaCCodeBaseModuleEmitContext* _tmp0_ = NULL;
-       gboolean _tmp1_ = FALSE;
-       ValaCodeContext* _tmp2_ = NULL;
-       ValaCodeContext* _tmp3_ = NULL;
-       gboolean _tmp4_ = FALSE;
-       ValaCCodeFile* _tmp65_ = NULL;
-       ValaCCodeFunction* _tmp66_ = NULL;
-       ValaCCodeFunction* _tmp67_ = NULL;
-       ValaCCodeFile* _tmp68_ = NULL;
-       ValaCCodeFunction* _tmp69_ = NULL;
-       ValaCCodeFunction* _tmp70_ = NULL;
+       ValaCCodeFile* _tmp1_ = NULL;
+       ValaCCodeFunction* _tmp2_ = NULL;
+       ValaCCodeFunction* _tmp3_ = NULL;
+       ValaCCodeFile* _tmp4_ = NULL;
+       ValaCCodeFunction* _tmp5_ = NULL;
+       ValaCCodeFunction* _tmp6_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (cl != NULL);
        _tmp0_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
        vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
-       _tmp2_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+       _tmp1_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp2_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp3_ = _tmp2_;
-       _tmp4_ = vala_code_context_require_glib_version (_tmp3_, 2, 24);
-       if (!_tmp4_) {
-               ValaClass* _tmp5_ = NULL;
-               gboolean _tmp6_ = FALSE;
-               gboolean _tmp7_ = FALSE;
-               _tmp5_ = cl;
-               _tmp6_ = vala_class_get_has_class_private_fields (_tmp5_);
-               _tmp7_ = _tmp6_;
-               _tmp1_ = _tmp7_;
-       } else {
-               _tmp1_ = FALSE;
-       }
-       if (_tmp1_) {
-               ValaCCodeFunction* _tmp8_ = NULL;
-               ValaCCodeFunction* _tmp9_ = NULL;
-               ValaCCodeDeclaration* _cdecl_ = NULL;
-               ValaClass* _tmp10_ = NULL;
-               gchar* _tmp11_ = NULL;
-               gchar* _tmp12_ = NULL;
-               gchar* _tmp13_ = NULL;
-               gchar* _tmp14_ = NULL;
-               ValaCCodeDeclaration* _tmp15_ = NULL;
-               ValaCCodeDeclaration* _tmp16_ = NULL;
-               ValaCCodeDeclaration* _tmp17_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp18_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp19_ = NULL;
-               ValaCCodeFunction* _tmp20_ = NULL;
-               ValaCCodeFunction* _tmp21_ = NULL;
-               ValaCCodeDeclaration* _tmp22_ = NULL;
-               ValaCCodeFunctionCall* ccall = NULL;
-               ValaClass* _tmp23_ = NULL;
-               gchar* _tmp24_ = NULL;
-               gchar* _tmp25_ = NULL;
-               gchar* _tmp26_ = NULL;
-               gchar* _tmp27_ = NULL;
-               ValaCCodeIdentifier* _tmp28_ = NULL;
-               ValaCCodeIdentifier* _tmp29_ = NULL;
-               ValaCCodeFunctionCall* _tmp30_ = NULL;
-               ValaCCodeFunctionCall* _tmp31_ = NULL;
-               ValaCCodeFunctionCall* _tmp32_ = NULL;
-               ValaCCodeConstant* _tmp33_ = NULL;
-               ValaCCodeConstant* _tmp34_ = NULL;
-               ValaCCodeFunction* _tmp35_ = NULL;
-               ValaCCodeFunction* _tmp36_ = NULL;
-               ValaCCodeIdentifier* _tmp37_ = NULL;
-               ValaCCodeIdentifier* _tmp38_ = NULL;
-               ValaCCodeFunctionCall* _tmp39_ = NULL;
-               ValaCCodeAssignment* _tmp40_ = NULL;
-               ValaCCodeAssignment* _tmp41_ = NULL;
-               ValaCCodeExpressionStatement* _tmp42_ = NULL;
-               ValaCCodeExpressionStatement* _tmp43_ = NULL;
-               ValaCCodeIdentifier* _tmp44_ = NULL;
-               ValaCCodeIdentifier* _tmp45_ = NULL;
-               ValaCCodeFunctionCall* _tmp46_ = NULL;
-               ValaCCodeFunctionCall* _tmp47_ = NULL;
-               ValaClass* _tmp48_ = NULL;
-               gchar* _tmp49_ = NULL;
-               gchar* _tmp50_ = NULL;
-               gchar* _tmp51_ = NULL;
-               gchar* _tmp52_ = NULL;
-               ValaCCodeIdentifier* _tmp53_ = NULL;
-               ValaCCodeIdentifier* _tmp54_ = NULL;
-               ValaCCodeFunctionCall* _tmp55_ = NULL;
-               ValaCCodeIdentifier* _tmp56_ = NULL;
-               ValaCCodeIdentifier* _tmp57_ = NULL;
-               ValaCCodeFunction* _tmp58_ = NULL;
-               ValaCCodeFunction* _tmp59_ = NULL;
-               ValaCCodeFunctionCall* _tmp60_ = NULL;
-               ValaCCodeExpressionStatement* _tmp61_ = NULL;
-               ValaCCodeExpressionStatement* _tmp62_ = NULL;
-               ValaCCodeFunction* _tmp63_ = NULL;
-               ValaCCodeFunction* _tmp64_ = NULL;
-               _tmp8_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp9_ = _tmp8_;
-               vala_ccode_function_open_block (_tmp9_);
-               _tmp10_ = cl;
-               _tmp11_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp10_);
-               _tmp12_ = _tmp11_;
-               _tmp13_ = g_strdup_printf ("%sClassPrivate *", _tmp12_);
-               _tmp14_ = _tmp13_;
-               _tmp15_ = vala_ccode_declaration_new (_tmp14_);
-               _tmp16_ = _tmp15_;
-               _g_free0 (_tmp14_);
-               _g_free0 (_tmp12_);
-               _cdecl_ = _tmp16_;
-               _tmp17_ = _cdecl_;
-               _tmp18_ = vala_ccode_variable_declarator_new ("priv", NULL, NULL);
-               _tmp19_ = _tmp18_;
-               vala_ccode_declaration_add_declarator (_tmp17_, (ValaCCodeDeclarator*) _tmp19_);
-               _vala_ccode_node_unref0 (_tmp19_);
-               _tmp20_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp21_ = _tmp20_;
-               _tmp22_ = _cdecl_;
-               vala_ccode_function_add_statement (_tmp21_, (ValaCCodeNode*) _tmp22_);
-               _tmp23_ = cl;
-               _tmp24_ = vala_ccode_base_module_get_ccode_upper_case_name ((ValaSymbol*) _tmp23_, NULL);
-               _tmp25_ = _tmp24_;
-               _tmp26_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp25_);
-               _tmp27_ = _tmp26_;
-               _tmp28_ = vala_ccode_identifier_new (_tmp27_);
-               _tmp29_ = _tmp28_;
-               _tmp30_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp29_);
-               _tmp31_ = _tmp30_;
-               _vala_ccode_node_unref0 (_tmp29_);
-               _g_free0 (_tmp27_);
-               _g_free0 (_tmp25_);
-               ccall = _tmp31_;
-               _tmp32_ = ccall;
-               _tmp33_ = vala_ccode_constant_new ("klass");
-               _tmp34_ = _tmp33_;
-               vala_ccode_function_call_add_argument (_tmp32_, (ValaCCodeExpression*) _tmp34_);
-               _vala_ccode_node_unref0 (_tmp34_);
-               _tmp35_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp36_ = _tmp35_;
-               _tmp37_ = vala_ccode_identifier_new ("priv");
-               _tmp38_ = _tmp37_;
-               _tmp39_ = ccall;
-               _tmp40_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp38_, (ValaCCodeExpression*) _tmp39_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
-               _tmp41_ = _tmp40_;
-               _tmp42_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp41_);
-               _tmp43_ = _tmp42_;
-               vala_ccode_function_add_statement (_tmp36_, (ValaCCodeNode*) _tmp43_);
-               _vala_ccode_node_unref0 (_tmp43_);
-               _vala_ccode_node_unref0 (_tmp41_);
-               _vala_ccode_node_unref0 (_tmp38_);
-               _tmp44_ = vala_ccode_identifier_new ("g_slice_free");
-               _tmp45_ = _tmp44_;
-               _tmp46_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp45_);
-               _vala_ccode_node_unref0 (ccall);
-               ccall = _tmp46_;
-               _vala_ccode_node_unref0 (_tmp45_);
-               _tmp47_ = ccall;
-               _tmp48_ = cl;
-               _tmp49_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp48_);
-               _tmp50_ = _tmp49_;
-               _tmp51_ = g_strdup_printf ("%sClassPrivate", _tmp50_);
-               _tmp52_ = _tmp51_;
-               _tmp53_ = vala_ccode_identifier_new (_tmp52_);
-               _tmp54_ = _tmp53_;
-               vala_ccode_function_call_add_argument (_tmp47_, (ValaCCodeExpression*) _tmp54_);
-               _vala_ccode_node_unref0 (_tmp54_);
-               _g_free0 (_tmp52_);
-               _g_free0 (_tmp50_);
-               _tmp55_ = ccall;
-               _tmp56_ = vala_ccode_identifier_new ("priv");
-               _tmp57_ = _tmp56_;
-               vala_ccode_function_call_add_argument (_tmp55_, (ValaCCodeExpression*) _tmp57_);
-               _vala_ccode_node_unref0 (_tmp57_);
-               _tmp58_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp59_ = _tmp58_;
-               _tmp60_ = ccall;
-               _tmp61_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp60_);
-               _tmp62_ = _tmp61_;
-               vala_ccode_function_add_statement (_tmp59_, (ValaCCodeNode*) _tmp62_);
-               _vala_ccode_node_unref0 (_tmp62_);
-               _tmp63_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-               _tmp64_ = _tmp63_;
-               vala_ccode_function_close (_tmp64_);
-               _vala_ccode_node_unref0 (ccall);
-               _vala_ccode_node_unref0 (_cdecl_);
-       }
-       _tmp65_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp66_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp67_ = _tmp66_;
-       vala_ccode_file_add_function_declaration (_tmp65_, _tmp67_);
-       _tmp68_ = ((ValaCCodeBaseModule*) self)->cfile;
-       _tmp69_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp70_ = _tmp69_;
-       vala_ccode_file_add_function (_tmp68_, _tmp70_);
+       vala_ccode_file_add_function_declaration (_tmp1_, _tmp3_);
+       _tmp4_ = ((ValaCCodeBaseModule*) self)->cfile;
+       _tmp5_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp6_ = _tmp5_;
+       vala_ccode_file_add_function (_tmp4_, _tmp6_);
        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
 }
 
@@ -11409,9 +10993,9 @@ static void vala_gtype_module_begin_finalize_function (ValaGTypeModule* self, Va
        ValaClass* _tmp6_ = NULL;
        gboolean _tmp7_ = FALSE;
        gboolean _tmp8_ = FALSE;
-       ValaClass* _tmp88_ = NULL;
-       ValaDestructor* _tmp89_ = NULL;
-       ValaDestructor* _tmp90_ = NULL;
+       ValaClass* _tmp112_ = NULL;
+       ValaDestructor* _tmp113_ = NULL;
+       ValaDestructor* _tmp114_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (cl != NULL);
        _tmp0_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
@@ -11472,6 +11056,10 @@ static void vala_gtype_module_begin_finalize_function (ValaGTypeModule* self, Va
                ValaCCodeIdentifier* _tmp65_ = NULL;
                ValaCCodeIdentifier* _tmp66_ = NULL;
                ValaCCodeExpression* _tmp67_ = NULL;
+               gboolean _tmp68_ = FALSE;
+               ValaClass* _tmp69_ = NULL;
+               gboolean _tmp70_ = FALSE;
+               gboolean _tmp71_ = FALSE;
                _tmp10_ = cl;
                _tmp11_ = _vala_code_node_ref0 (_tmp10_);
                fundamental_class = _tmp11_;
@@ -11588,110 +11176,175 @@ static void vala_gtype_module_begin_finalize_function (ValaGTypeModule* self, Va
                _tmp67_ = ccast;
                vala_ccode_function_add_assignment (_tmp64_, (ValaCCodeExpression*) _tmp66_, _tmp67_);
                _vala_ccode_node_unref0 (_tmp66_);
+               _tmp69_ = cl;
+               _tmp70_ = vala_class_get_is_compact (_tmp69_);
+               _tmp71_ = _tmp70_;
+               if (!_tmp71_) {
+                       ValaClass* _tmp72_ = NULL;
+                       ValaClass* _tmp73_ = NULL;
+                       ValaClass* _tmp74_ = NULL;
+                       _tmp72_ = cl;
+                       _tmp73_ = vala_class_get_base_class (_tmp72_);
+                       _tmp74_ = _tmp73_;
+                       _tmp68_ = _tmp74_ == NULL;
+               } else {
+                       _tmp68_ = FALSE;
+               }
+               if (_tmp68_) {
+                       ValaCCodeFunctionCall* call = NULL;
+                       ValaCCodeIdentifier* _tmp75_ = NULL;
+                       ValaCCodeIdentifier* _tmp76_ = NULL;
+                       ValaCCodeFunctionCall* _tmp77_ = NULL;
+                       ValaCCodeFunctionCall* _tmp78_ = NULL;
+                       ValaCCodeFunctionCall* _tmp79_ = NULL;
+                       ValaCCodeIdentifier* _tmp80_ = NULL;
+                       ValaCCodeIdentifier* _tmp81_ = NULL;
+                       ValaCCodeFunction* _tmp82_ = NULL;
+                       ValaCCodeFunction* _tmp83_ = NULL;
+                       ValaCCodeFunctionCall* _tmp84_ = NULL;
+                       _tmp75_ = vala_ccode_identifier_new ("g_signal_handlers_destroy");
+                       _tmp76_ = _tmp75_;
+                       _tmp77_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp76_);
+                       _tmp78_ = _tmp77_;
+                       _vala_ccode_node_unref0 (_tmp76_);
+                       call = _tmp78_;
+                       _tmp79_ = call;
+                       _tmp80_ = vala_ccode_identifier_new ("self");
+                       _tmp81_ = _tmp80_;
+                       vala_ccode_function_call_add_argument (_tmp79_, (ValaCCodeExpression*) _tmp81_);
+                       _vala_ccode_node_unref0 (_tmp81_);
+                       _tmp82_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp83_ = _tmp82_;
+                       _tmp84_ = call;
+                       vala_ccode_function_add_expression (_tmp83_, (ValaCCodeExpression*) _tmp84_);
+                       _vala_ccode_node_unref0 (call);
+               }
                _vala_ccode_node_unref0 (ccast);
                _vala_ccode_node_unref0 (func);
                _vala_code_node_unref0 (fundamental_class);
        } else {
                ValaCCodeFunction* function = NULL;
-               ValaClass* _tmp68_ = NULL;
-               gchar* _tmp69_ = NULL;
-               gchar* _tmp70_ = NULL;
-               gchar* _tmp71_ = NULL;
-               gchar* _tmp72_ = NULL;
-               ValaCCodeFunction* _tmp73_ = NULL;
-               ValaCCodeFunction* _tmp74_ = NULL;
-               ValaClass* _tmp75_ = NULL;
-               ValaSymbolAccessibility _tmp76_ = 0;
-               ValaSymbolAccessibility _tmp77_ = 0;
-               ValaCCodeFunction* _tmp79_ = NULL;
-               ValaClass* _tmp80_ = NULL;
-               gchar* _tmp81_ = NULL;
-               gchar* _tmp82_ = NULL;
-               gchar* _tmp83_ = NULL;
-               gchar* _tmp84_ = NULL;
-               ValaCCodeParameter* _tmp85_ = NULL;
-               ValaCCodeParameter* _tmp86_ = NULL;
-               ValaCCodeFunction* _tmp87_ = NULL;
-               _tmp68_ = cl;
-               _tmp69_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp68_);
-               _tmp70_ = _tmp69_;
-               _tmp71_ = g_strconcat (_tmp70_, "free", NULL);
-               _tmp72_ = _tmp71_;
-               _tmp73_ = vala_ccode_function_new (_tmp72_, "void");
-               _tmp74_ = _tmp73_;
-               _g_free0 (_tmp72_);
-               _g_free0 (_tmp70_);
-               function = _tmp74_;
-               _tmp75_ = cl;
-               _tmp76_ = vala_symbol_get_access ((ValaSymbol*) _tmp75_);
-               _tmp77_ = _tmp76_;
-               if (_tmp77_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
-                       ValaCCodeFunction* _tmp78_ = NULL;
-                       _tmp78_ = function;
-                       vala_ccode_function_set_modifiers (_tmp78_, VALA_CCODE_MODIFIERS_STATIC);
+               ValaClass* _tmp85_ = NULL;
+               gchar* _tmp86_ = NULL;
+               gchar* _tmp87_ = NULL;
+               gchar* _tmp88_ = NULL;
+               gchar* _tmp89_ = NULL;
+               ValaCCodeFunction* _tmp90_ = NULL;
+               ValaCCodeFunction* _tmp91_ = NULL;
+               ValaClass* _tmp92_ = NULL;
+               gboolean _tmp93_ = FALSE;
+               ValaCCodeFunction* _tmp103_ = NULL;
+               ValaClass* _tmp104_ = NULL;
+               gchar* _tmp105_ = NULL;
+               gchar* _tmp106_ = NULL;
+               gchar* _tmp107_ = NULL;
+               gchar* _tmp108_ = NULL;
+               ValaCCodeParameter* _tmp109_ = NULL;
+               ValaCCodeParameter* _tmp110_ = NULL;
+               ValaCCodeFunction* _tmp111_ = NULL;
+               _tmp85_ = cl;
+               _tmp86_ = vala_ccode_base_module_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp85_);
+               _tmp87_ = _tmp86_;
+               _tmp88_ = g_strconcat (_tmp87_, "free", NULL);
+               _tmp89_ = _tmp88_;
+               _tmp90_ = vala_ccode_function_new (_tmp89_, "void");
+               _tmp91_ = _tmp90_;
+               _g_free0 (_tmp89_);
+               _g_free0 (_tmp87_);
+               function = _tmp91_;
+               _tmp92_ = cl;
+               _tmp93_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp92_);
+               if (_tmp93_) {
+                       ValaCCodeFunction* _tmp94_ = NULL;
+                       _tmp94_ = function;
+                       vala_ccode_function_set_modifiers (_tmp94_, VALA_CCODE_MODIFIERS_STATIC);
+               } else {
+                       gboolean _tmp95_ = FALSE;
+                       ValaCodeContext* _tmp96_ = NULL;
+                       ValaCodeContext* _tmp97_ = NULL;
+                       gboolean _tmp98_ = FALSE;
+                       gboolean _tmp99_ = FALSE;
+                       _tmp96_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
+                       _tmp97_ = _tmp96_;
+                       _tmp98_ = vala_code_context_get_hide_internal (_tmp97_);
+                       _tmp99_ = _tmp98_;
+                       if (_tmp99_) {
+                               ValaClass* _tmp100_ = NULL;
+                               gboolean _tmp101_ = FALSE;
+                               _tmp100_ = cl;
+                               _tmp101_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp100_);
+                               _tmp95_ = _tmp101_;
+                       } else {
+                               _tmp95_ = FALSE;
+                       }
+                       if (_tmp95_) {
+                               ValaCCodeFunction* _tmp102_ = NULL;
+                               _tmp102_ = function;
+                               vala_ccode_function_set_modifiers (_tmp102_, VALA_CCODE_MODIFIERS_INTERNAL);
+                       }
                }
-               _tmp79_ = function;
-               _tmp80_ = cl;
-               _tmp81_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp80_);
-               _tmp82_ = _tmp81_;
-               _tmp83_ = g_strconcat (_tmp82_, "*", NULL);
-               _tmp84_ = _tmp83_;
-               _tmp85_ = vala_ccode_parameter_new ("self", _tmp84_);
-               _tmp86_ = _tmp85_;
-               vala_ccode_function_add_parameter (_tmp79_, _tmp86_);
-               _vala_ccode_node_unref0 (_tmp86_);
-               _g_free0 (_tmp84_);
-               _g_free0 (_tmp82_);
-               _tmp87_ = function;
-               vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp87_);
+               _tmp103_ = function;
+               _tmp104_ = cl;
+               _tmp105_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp104_);
+               _tmp106_ = _tmp105_;
+               _tmp107_ = g_strconcat (_tmp106_, "*", NULL);
+               _tmp108_ = _tmp107_;
+               _tmp109_ = vala_ccode_parameter_new ("self", _tmp108_);
+               _tmp110_ = _tmp109_;
+               vala_ccode_function_add_parameter (_tmp103_, _tmp110_);
+               _vala_ccode_node_unref0 (_tmp110_);
+               _g_free0 (_tmp108_);
+               _g_free0 (_tmp106_);
+               _tmp111_ = function;
+               vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp111_);
                _vala_ccode_node_unref0 (function);
        }
-       _tmp88_ = cl;
-       _tmp89_ = vala_class_get_destructor (_tmp88_);
-       _tmp90_ = _tmp89_;
-       if (_tmp90_ != NULL) {
-               ValaClass* _tmp91_ = NULL;
-               ValaDestructor* _tmp92_ = NULL;
-               ValaDestructor* _tmp93_ = NULL;
-               ValaBlock* _tmp94_ = NULL;
-               ValaBlock* _tmp95_ = NULL;
-               gboolean _tmp96_ = FALSE;
-               gboolean _tmp97_ = FALSE;
-               gboolean _tmp104_ = FALSE;
-               gboolean _tmp105_ = FALSE;
-               _tmp91_ = cl;
-               _tmp92_ = vala_class_get_destructor (_tmp91_);
-               _tmp93_ = _tmp92_;
-               _tmp94_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp93_);
-               _tmp95_ = _tmp94_;
-               vala_code_node_emit ((ValaCodeNode*) _tmp95_, (ValaCodeGenerator*) self);
-               _tmp96_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
-               _tmp97_ = _tmp96_;
-               if (_tmp97_) {
-                       ValaCCodeFunction* _tmp98_ = NULL;
-                       ValaCCodeFunction* _tmp99_ = NULL;
-                       ValaCCodeConstant* _tmp100_ = NULL;
-                       ValaCCodeConstant* _tmp101_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp102_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp103_ = NULL;
-                       _tmp98_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp99_ = _tmp98_;
-                       _tmp100_ = vala_ccode_constant_new ("NULL");
-                       _tmp101_ = _tmp100_;
-                       _tmp102_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp101_, NULL);
-                       _tmp103_ = _tmp102_;
-                       vala_ccode_function_add_declaration (_tmp99_, "GError *", (ValaCCodeDeclarator*) _tmp103_, 0);
-                       _vala_ccode_node_unref0 (_tmp103_);
-                       _vala_ccode_node_unref0 (_tmp101_);
+       _tmp112_ = cl;
+       _tmp113_ = vala_class_get_destructor (_tmp112_);
+       _tmp114_ = _tmp113_;
+       if (_tmp114_ != NULL) {
+               ValaClass* _tmp115_ = NULL;
+               ValaDestructor* _tmp116_ = NULL;
+               ValaDestructor* _tmp117_ = NULL;
+               ValaBlock* _tmp118_ = NULL;
+               ValaBlock* _tmp119_ = NULL;
+               gboolean _tmp120_ = FALSE;
+               gboolean _tmp121_ = FALSE;
+               gboolean _tmp128_ = FALSE;
+               gboolean _tmp129_ = FALSE;
+               _tmp115_ = cl;
+               _tmp116_ = vala_class_get_destructor (_tmp115_);
+               _tmp117_ = _tmp116_;
+               _tmp118_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp117_);
+               _tmp119_ = _tmp118_;
+               vala_code_node_emit ((ValaCodeNode*) _tmp119_, (ValaCodeGenerator*) self);
+               _tmp120_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
+               _tmp121_ = _tmp120_;
+               if (_tmp121_) {
+                       ValaCCodeFunction* _tmp122_ = NULL;
+                       ValaCCodeFunction* _tmp123_ = NULL;
+                       ValaCCodeConstant* _tmp124_ = NULL;
+                       ValaCCodeConstant* _tmp125_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp126_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp127_ = NULL;
+                       _tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp123_ = _tmp122_;
+                       _tmp124_ = vala_ccode_constant_new ("NULL");
+                       _tmp125_ = _tmp124_;
+                       _tmp126_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp125_, NULL);
+                       _tmp127_ = _tmp126_;
+                       vala_ccode_function_add_declaration (_tmp123_, "GError *", (ValaCCodeDeclarator*) _tmp127_, 0);
+                       _vala_ccode_node_unref0 (_tmp127_);
+                       _vala_ccode_node_unref0 (_tmp125_);
                }
-               _tmp104_ = vala_ccode_base_module_get_current_method_return ((ValaCCodeBaseModule*) self);
-               _tmp105_ = _tmp104_;
-               if (_tmp105_) {
-                       ValaCCodeFunction* _tmp106_ = NULL;
-                       ValaCCodeFunction* _tmp107_ = NULL;
-                       _tmp106_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-                       _tmp107_ = _tmp106_;
-                       vala_ccode_function_add_label (_tmp107_, "_return");
+               _tmp128_ = vala_ccode_base_module_get_current_method_return ((ValaCCodeBaseModule*) self);
+               _tmp129_ = _tmp128_;
+               if (_tmp129_) {
+                       ValaCCodeFunction* _tmp130_ = NULL;
+                       ValaCCodeFunction* _tmp131_ = NULL;
+                       _tmp130_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+                       _tmp131_ = _tmp130_;
+                       vala_ccode_function_add_label (_tmp131_, "_return");
                }
        }
        vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
@@ -15956,21 +15609,21 @@ ValaGTypeModule* vala_gtype_module_new (void) {
 
 static void vala_gtype_module_class_init (ValaGTypeModuleClass * klass) {
        vala_gtype_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CCODE_METHOD_MODULE_CLASS (klass)->generate_parameter = vala_gtype_module_real_generate_parameter;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_class_declaration = vala_gtype_module_real_generate_class_declaration;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_class_struct_declaration = vala_gtype_module_real_generate_class_struct_declaration;
-       VALA_GTYPE_MODULE_CLASS (klass)->generate_virtual_method_declaration = vala_gtype_module_real_generate_virtual_method_declaration;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_gtype_module_real_visit_class;
-       VALA_GTYPE_MODULE_CLASS (klass)->generate_class_init = vala_gtype_module_real_generate_class_init;
-       VALA_GTYPE_MODULE_CLASS (klass)->end_instance_init = vala_gtype_module_real_end_instance_init;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->get_param_spec = vala_gtype_module_real_get_param_spec;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_interface_declaration = vala_gtype_module_real_generate_interface_declaration;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_interface = vala_gtype_module_real_visit_interface;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_struct = vala_gtype_module_real_visit_struct;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_gtype_module_real_visit_enum;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method_call = vala_gtype_module_real_visit_method_call;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_property = vala_gtype_module_real_visit_property;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->create_type_check_statement = vala_gtype_module_real_create_type_check_statement;
+       ((ValaCCodeMethodModuleClass *) klass)->generate_parameter = vala_gtype_module_real_generate_parameter;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_class_declaration = vala_gtype_module_real_generate_class_declaration;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_class_struct_declaration = vala_gtype_module_real_generate_class_struct_declaration;
+       ((ValaGTypeModuleClass *) klass)->generate_virtual_method_declaration = vala_gtype_module_real_generate_virtual_method_declaration;
+       ((ValaCodeVisitorClass *) klass)->visit_class = vala_gtype_module_real_visit_class;
+       ((ValaGTypeModuleClass *) klass)->generate_class_init = vala_gtype_module_real_generate_class_init;
+       ((ValaGTypeModuleClass *) klass)->end_instance_init = vala_gtype_module_real_end_instance_init;
+       ((ValaCCodeBaseModuleClass *) klass)->get_param_spec = vala_gtype_module_real_get_param_spec;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_interface_declaration = vala_gtype_module_real_generate_interface_declaration;
+       ((ValaCodeVisitorClass *) klass)->visit_interface = vala_gtype_module_real_visit_interface;
+       ((ValaCodeVisitorClass *) klass)->visit_struct = vala_gtype_module_real_visit_struct;
+       ((ValaCodeVisitorClass *) klass)->visit_enum = vala_gtype_module_real_visit_enum;
+       ((ValaCodeVisitorClass *) klass)->visit_method_call = vala_gtype_module_real_visit_method_call;
+       ((ValaCodeVisitorClass *) klass)->visit_property = vala_gtype_module_real_visit_property;
+       ((ValaCCodeBaseModuleClass *) klass)->create_type_check_statement = vala_gtype_module_real_create_type_check_statement;
 }
 
 
index 26778eb..8d547ef 100644 (file)
@@ -93,9 +93,12 @@ public class Vala.GTypeModule : GErrorModule {
                if (is_fundamental) {
                        var ref_fun = new CCodeFunction (get_ccode_lower_case_prefix (cl) + "ref", "gpointer");
                        var unref_fun = new CCodeFunction (get_ccode_lower_case_prefix (cl) + "unref", "void");
-                       if (cl.access == SymbolAccessibility.PRIVATE) {
+                       if (cl.is_private_symbol ()) {
                                ref_fun.modifiers = CCodeModifiers.STATIC;
                                unref_fun.modifiers = CCodeModifiers.STATIC;
+                       } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                               ref_fun.modifiers = CCodeModifiers.INTERNAL;
+                               unref_fun.modifiers = CCodeModifiers.INTERNAL;
                        }
 
                        ref_fun.add_parameter (new CCodeParameter ("instance", "gpointer"));
@@ -114,10 +117,12 @@ public class Vala.GTypeModule : GErrorModule {
                        function.add_parameter (new CCodeParameter ("object_type", "GType"));
                        function.add_parameter (new CCodeParameter ("flags", "GParamFlags"));
 
-                       if (cl.access == SymbolAccessibility.PRIVATE) {
+                       if (cl.is_private_symbol ()) {
                                function.modifiers = CCodeModifiers.STATIC;
                                // avoid C warning as this function is not always used
                                function.attributes = "G_GNUC_UNUSED";
+                       } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                               function.modifiers = CCodeModifiers.INTERNAL;
                        }
 
                        decl_space.add_function_declaration (function);
@@ -126,10 +131,14 @@ public class Vala.GTypeModule : GErrorModule {
                        function.add_parameter (new CCodeParameter ("value", "GValue*"));
                        function.add_parameter (new CCodeParameter ("v_object", "gpointer"));
 
-                       if (cl.access == SymbolAccessibility.PRIVATE) {
+                       if (cl.is_private_symbol ()) {
                                function.modifiers = CCodeModifiers.STATIC;
                                // avoid C warning as this function is not always used
                                function.attributes = "G_GNUC_UNUSED";
+                       } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                               function.modifiers = CCodeModifiers.INTERNAL;
+                               // avoid C warning as this function is not always used
+                               function.attributes = "G_GNUC_UNUSED";
                        }
 
                        decl_space.add_function_declaration (function);
@@ -138,10 +147,12 @@ public class Vala.GTypeModule : GErrorModule {
                        function.add_parameter (new CCodeParameter ("value", "GValue*"));
                        function.add_parameter (new CCodeParameter ("v_object", "gpointer"));
 
-                       if (cl.access == SymbolAccessibility.PRIVATE) {
+                       if (cl.is_private_symbol ()) {
                                function.modifiers = CCodeModifiers.STATIC;
                                // avoid C warning as this function is not always used
                                function.attributes = "G_GNUC_UNUSED";
+                       } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                               function.modifiers = CCodeModifiers.INTERNAL;
                        }
 
                        decl_space.add_function_declaration (function);
@@ -149,18 +160,24 @@ public class Vala.GTypeModule : GErrorModule {
                        function = new CCodeFunction (get_ccode_get_value_function (cl), "gpointer");
                        function.add_parameter (new CCodeParameter ("value", "const GValue*"));
 
-                       if (cl.access == SymbolAccessibility.PRIVATE) {
+                       if (cl.is_private_symbol ()) {
                                function.modifiers = CCodeModifiers.STATIC;
                                // avoid C warning as this function is not always used
                                function.attributes = "G_GNUC_UNUSED";
+                       } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                               function.modifiers = CCodeModifiers.INTERNAL;
+                               // avoid C warning as this function is not always used
+                               function.attributes = "G_GNUC_UNUSED";
                        }
 
                        decl_space.add_function_declaration (function);
                } else if (!is_gtypeinstance && !is_gsource) {
                        if (cl.base_class == null) {
                                var function = new CCodeFunction (get_ccode_lower_case_prefix (cl) + "free", "void");
-                               if (cl.access == SymbolAccessibility.PRIVATE) {
+                               if (cl.is_private_symbol ()) {
                                        function.modifiers = CCodeModifiers.STATIC;
+                               } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                                       function.modifiers = CCodeModifiers.INTERNAL;
                                }
 
                                function.add_parameter (new CCodeParameter ("self", get_ccode_name (cl) + "*"));
@@ -491,12 +508,6 @@ public class Vala.GTypeModule : GErrorModule {
                if (is_gtypeinstance) {
                        if (cl.has_class_private_fields || has_class_locks) {
                                decl_space.add_type_declaration (new CCodeTypeDefinition ("struct %s".printf (type_priv_struct.name), new CCodeVariableDeclarator ("%sClassPrivate".printf (get_ccode_name (cl)))));
-                               if (!context.require_glib_version (2, 24)) {
-                                       var cdecl = new CCodeDeclaration ("GQuark");
-                                       cdecl.add_declarator (new CCodeVariableDeclarator ("_vala_%s_class_private_quark".printf (get_ccode_lower_case_name (cl)), new CCodeConstant ("0")));
-                                       cdecl.modifiers = CCodeModifiers.STATIC;
-                                       decl_space.add_type_declaration (cdecl);
-                               }
                        }
 
                        /* only add the *Private struct if it is not empty, i.e. we actually have private data */
@@ -509,12 +520,7 @@ public class Vala.GTypeModule : GErrorModule {
                        if (cl.has_class_private_fields || has_class_locks) {
                                decl_space.add_type_member_declaration (type_priv_struct);
 
-                               string macro;
-                               if (context.require_glib_version (2, 24)) {
-                                       macro = "(G_TYPE_CLASS_GET_PRIVATE (klass, %s, %sClassPrivate))".printf (get_ccode_type_id (cl), get_ccode_name (cl));
-                               } else {
-                                       macro = "((%sClassPrivate *) g_type_get_qdata (G_TYPE_FROM_CLASS (klass), _vala_%s_class_private_quark))".printf (get_ccode_name (cl), get_ccode_lower_case_name (cl));
-                               }
+                               string macro = "(G_TYPE_CLASS_GET_PRIVATE (klass, %s, %sClassPrivate))".printf (get_ccode_type_id (cl), get_ccode_name (cl));
                                decl_space.add_type_member_declaration (new CCodeMacroReplacement ("%s_GET_CLASS_PRIVATE(klass)".printf (get_ccode_upper_case_name (cl, null)), macro));
                        }
                        decl_space.add_type_member_declaration (prop_enum);
@@ -613,12 +619,12 @@ public class Vala.GTypeModule : GErrorModule {
                        }
 
 
-                       if (cl.class_constructor != null || (!context.require_glib_version (2, 24) && cl.has_class_private_fields)) {
+                       if (cl.class_constructor != null) {
                                add_base_init_function (cl);
                        }
                        add_class_init_function (cl);
 
-                       if (cl.class_destructor != null || (!context.require_glib_version (2, 24) && cl.has_class_private_fields)) {
+                       if (cl.class_destructor != null) {
                                add_base_finalize_function (cl);
                        }
 
@@ -653,8 +659,10 @@ public class Vala.GTypeModule : GErrorModule {
                                // ref function
                                var ref_fun = new CCodeFunction (get_ccode_lower_case_prefix (cl) + "ref", "gpointer");
                                ref_fun.add_parameter (new CCodeParameter ("instance", "gpointer"));
-                               if (cl.access == SymbolAccessibility.PRIVATE) {
+                               if (cl.is_private_symbol ()) {
                                        ref_fun.modifiers = CCodeModifiers.STATIC;
+                               } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                                       ref_fun.modifiers = CCodeModifiers.INTERNAL;
                                }
                                push_function (ref_fun);
 
@@ -670,8 +678,10 @@ public class Vala.GTypeModule : GErrorModule {
                                // unref function
                                var unref_fun = new CCodeFunction (get_ccode_lower_case_prefix (cl) + "unref", "void");
                                unref_fun.add_parameter (new CCodeParameter ("instance", "gpointer"));
-                               if (cl.access == SymbolAccessibility.PRIVATE) {
+                               if (cl.is_private_symbol ()) {
                                        unref_fun.modifiers = CCodeModifiers.STATIC;
+                               } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                                       unref_fun.modifiers = CCodeModifiers.INTERNAL;
                                }
                                push_function (unref_fun);
 
@@ -909,8 +919,10 @@ public class Vala.GTypeModule : GErrorModule {
                function.add_parameter (new CCodeParameter ("object_type", "GType"));
                function.add_parameter (new CCodeParameter ("flags", "GParamFlags"));
 
-               if (cl.access == SymbolAccessibility.PRIVATE) {
+               if (cl.is_private_symbol ()) {
                        function.modifiers = CCodeModifiers.STATIC;
+               } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                       function.modifiers = CCodeModifiers.INTERNAL;
                }
 
                push_function (function);
@@ -950,8 +962,10 @@ public class Vala.GTypeModule : GErrorModule {
                function.add_parameter (new CCodeParameter ("value", "GValue*"));
                function.add_parameter (new CCodeParameter ("v_object", "gpointer"));
 
-               if (cl.access == SymbolAccessibility.PRIVATE) {
+               if (cl.is_private_symbol ()) {
                        function.modifiers = CCodeModifiers.STATIC;
+               } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                       function.modifiers = CCodeModifiers.INTERNAL;
                }
 
                var vpointer = new CCodeMemberAccess (new CCodeMemberAccess.pointer (new CCodeIdentifier ("value"), "data[0]"), "v_pointer");
@@ -1018,8 +1032,10 @@ public class Vala.GTypeModule : GErrorModule {
                function.add_parameter (new CCodeParameter ("value", "GValue*"));
                function.add_parameter (new CCodeParameter ("v_object", "gpointer"));
 
-               if (cl.access == SymbolAccessibility.PRIVATE) {
+               if (cl.is_private_symbol ()) {
                        function.modifiers = CCodeModifiers.STATIC;
+               } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                       function.modifiers = CCodeModifiers.INTERNAL;
                }
 
                var vpointer = new CCodeMemberAccess(new CCodeMemberAccess.pointer (new CCodeIdentifier ("value"), "data[0]"),"v_pointer");
@@ -1082,8 +1098,10 @@ public class Vala.GTypeModule : GErrorModule {
                var function = new CCodeFunction (get_ccode_get_value_function (cl), "gpointer");
                function.add_parameter (new CCodeParameter ("value", "const GValue*"));
 
-               if (cl.access == SymbolAccessibility.PRIVATE) {
+               if (cl.is_private_symbol ()) {
                        function.modifiers = CCodeModifiers.STATIC;
+               } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                       function.modifiers = CCodeModifiers.INTERNAL;
                }
 
                var vpointer = new CCodeMemberAccess(new CCodeMemberAccess.pointer (new CCodeIdentifier ("value"), "data[0]"),"v_pointer");
@@ -1114,48 +1132,6 @@ public class Vala.GTypeModule : GErrorModule {
 
                push_function (base_init);
 
-               if (!context.require_glib_version (2, 24) && cl.has_class_private_fields) {
-                       ccode.add_declaration ("%sClassPrivate *".printf (get_ccode_name (cl)), new CCodeVariableDeclarator ("priv"));
-                       ccode.add_declaration ("%sClassPrivate *".printf (get_ccode_name (cl)), new CCodeVariableDeclarator ("parent_priv", new CCodeConstant ("NULL")));
-                       ccode.add_declaration ("GType", new CCodeVariableDeclarator ("parent_type"));
-
-                       var ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_type_parent"));
-                       var ccall2 = new CCodeFunctionCall (new CCodeIdentifier ("G_TYPE_FROM_CLASS"));
-                       ccall2.add_argument (new CCodeIdentifier ("klass"));
-                       ccall.add_argument (ccall2);
-                       ccode.add_assignment (new CCodeIdentifier ("parent_type"), ccall);
-
-                       ccode.open_if (new CCodeIdentifier ("parent_type"));
-                       ccall = new CCodeFunctionCall (new CCodeIdentifier ("%s_GET_CLASS_PRIVATE".printf (get_ccode_upper_case_name (cl, null))));
-                       ccall2 = new CCodeFunctionCall (new CCodeIdentifier ("g_type_class_peek"));
-                       ccall2.add_argument (new CCodeIdentifier ("parent_type"));
-                       ccall.add_argument (ccall2);
-                       ccode.add_assignment (new CCodeIdentifier ("parent_priv"), ccall);
-                       ccode.close ();
-
-                       ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_slice_new0"));
-                       ccall.add_argument (new CCodeIdentifier ("%sClassPrivate".printf(get_ccode_name (cl))));
-                       ccode.add_assignment (new CCodeIdentifier ("priv"), ccall);
-
-                       cfile.add_include ("string.h");
-
-                       ccode.open_if (new CCodeIdentifier ("parent_priv"));
-                       ccall = new CCodeFunctionCall (new CCodeIdentifier ("memcpy"));
-                       ccall.add_argument (new CCodeIdentifier ("priv"));
-                       ccall.add_argument (new CCodeIdentifier ("parent_priv"));
-                       ccall.add_argument (new CCodeIdentifier ("sizeof (%sClassPrivate)".printf(get_ccode_name (cl))));
-                       ccode.add_expression (ccall);
-                       ccode.close ();
-
-                       ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_type_set_qdata"));
-                       ccall2 = new CCodeFunctionCall (new CCodeIdentifier ("G_TYPE_FROM_CLASS"));
-                       ccall2.add_argument (new CCodeIdentifier ("klass"));
-                       ccall.add_argument (ccall2);
-                       ccall.add_argument (new CCodeIdentifier ("_vala_%s_class_private_quark".printf (get_ccode_lower_case_name (cl))));
-                       ccall.add_argument (new CCodeIdentifier ("priv"));
-                       ccode.add_expression (ccall);
-               }
-
                pop_context ();
        }
 
@@ -1201,9 +1177,8 @@ public class Vala.GTypeModule : GErrorModule {
                                fundamental_class = fundamental_class.base_class;
                        }
 
-                       ccall = new CCodeFunctionCall (new CCodeIdentifier ("%s_CLASS".printf (get_ccode_upper_case_name (fundamental_class, null))));
-                       ccall.add_argument (new CCodeIdentifier ("klass"));
-                       var finalize_assignment = new CCodeAssignment (new CCodeMemberAccess.pointer (ccall, "finalize"), new CCodeIdentifier (get_ccode_lower_case_prefix (cl) + "finalize"));
+                       var ccast = new CCodeCastExpression (new CCodeIdentifier ("klass"), get_ccode_name (fundamental_class) + "Class *");
+                       var finalize_assignment = new CCodeAssignment (new CCodeMemberAccess.pointer (ccast, "finalize"), new CCodeIdentifier (get_ccode_lower_case_prefix (cl) + "finalize"));
                        ccode.add_expression (finalize_assignment);
                }
 
@@ -1224,9 +1199,7 @@ public class Vala.GTypeModule : GErrorModule {
 
                        // there is currently no default handler for abstract async methods
                        if (!m.is_abstract || !m.coroutine) {
-                               var ccast = new CCodeFunctionCall (new CCodeIdentifier ("%s_CLASS".printf (get_ccode_upper_case_name (base_type))));
-                               ccast.add_argument (new CCodeIdentifier ("klass"));
-
+                               var ccast = new CCodeCastExpression (new CCodeIdentifier ("klass"), get_ccode_name (base_type) + "Class *");
                                ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, get_ccode_vfunc_name (m.base_method)), new CCodeIdentifier (get_ccode_real_name (m)));
 
                                if (m.coroutine) {
@@ -1240,8 +1213,7 @@ public class Vala.GTypeModule : GErrorModule {
                        if (sig.default_handler == null) {
                                continue;
                        }
-                       var ccast = new CCodeFunctionCall (new CCodeIdentifier ("%s_CLASS".printf (get_ccode_upper_case_name (cl, null))));
-                       ccast.add_argument (new CCodeIdentifier ("klass"));
+                       var ccast = new CCodeCastExpression (new CCodeIdentifier ("klass"), get_ccode_name (cl) + "Class *");
                        ccode.add_assignment (new CCodeMemberAccess.pointer (ccast, get_ccode_vfunc_name (sig.default_handler)), new CCodeIdentifier (get_ccode_real_name (sig.default_handler)));
                }
 
@@ -1626,25 +1598,6 @@ public class Vala.GTypeModule : GErrorModule {
        private void add_base_finalize_function (Class cl) {
                push_context (base_finalize_context);
 
-               if (!context.require_glib_version (2, 24) && cl.has_class_private_fields) {
-                       ccode.open_block ();
-
-                       var cdecl = new CCodeDeclaration ("%sClassPrivate *".printf (get_ccode_name (cl)));
-                       cdecl.add_declarator (new CCodeVariableDeclarator ("priv"));
-                       ccode.add_statement (cdecl);
-
-                       var ccall = new CCodeFunctionCall (new CCodeIdentifier ("%s_GET_CLASS_PRIVATE".printf (get_ccode_upper_case_name (cl, null))));
-                       ccall.add_argument (new CCodeConstant ("klass"));
-                       ccode.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeIdentifier ("priv"), ccall)));
-
-                       ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_slice_free"));
-                       ccall.add_argument (new CCodeIdentifier ("%sClassPrivate".printf (get_ccode_name (cl))));
-                       ccall.add_argument (new CCodeIdentifier ("priv"));
-                       ccode.add_statement (new CCodeExpressionStatement (ccall));
-
-                       ccode.close ();
-               }
-
                cfile.add_function_declaration (ccode);
                cfile.add_function (ccode);
 
@@ -1681,10 +1634,19 @@ public class Vala.GTypeModule : GErrorModule {
 
                        ccode.add_declaration ("%s *".printf (get_ccode_name (cl)), new CCodeVariableDeclarator ("self"));
                        ccode.add_assignment (new CCodeIdentifier ("self"), ccast);
+
+                       if (!cl.is_compact && cl.base_class == null) {
+                               // non-gobject class
+                               var call = new CCodeFunctionCall (new CCodeIdentifier ("g_signal_handlers_destroy"));
+                               call.add_argument (new CCodeIdentifier ("self"));
+                               ccode.add_expression (call);
+                       }
                } else {
                        var function = new CCodeFunction (get_ccode_lower_case_prefix (cl) + "free", "void");
-                       if (cl.access == SymbolAccessibility.PRIVATE) {
+                       if (cl.is_private_symbol ()) {
                                function.modifiers = CCodeModifiers.STATIC;
+                       } else if (context.hide_internal && cl.is_internal_symbol ()) {
+                               function.modifiers = CCodeModifiers.INTERNAL;
                        }
 
                        function.add_parameter (new CCodeParameter ("self", get_ccode_name (cl) + "*"));
index 9649b0a..ecb1973 100644 (file)
@@ -2842,109 +2842,109 @@ static ValaCCodeExpression* vala_gvariant_module_deserialize_hash_table (ValaGVa
        ValaDataType* _tmp48_ = NULL;
        ValaTypeSymbol* _tmp49_ = NULL;
        ValaTypeSymbol* _tmp50_ = NULL;
-       ValaDataType* _tmp63_ = NULL;
-       ValaTypeSymbol* _tmp64_ = NULL;
-       ValaTypeSymbol* _tmp65_ = NULL;
-       ValaDataType* _tmp66_ = NULL;
-       ValaTypeSymbol* _tmp67_ = NULL;
-       ValaTypeSymbol* _tmp68_ = NULL;
-       ValaDataType* _tmp75_ = NULL;
-       ValaTypeSymbol* _tmp76_ = NULL;
+       ValaDataType* _tmp73_ = NULL;
+       ValaTypeSymbol* _tmp74_ = NULL;
+       ValaTypeSymbol* _tmp75_ = NULL;
+       ValaDataType* _tmp76_ = NULL;
        ValaTypeSymbol* _tmp77_ = NULL;
-       ValaDataType* _tmp78_ = NULL;
-       ValaTypeSymbol* _tmp79_ = NULL;
-       ValaTypeSymbol* _tmp80_ = NULL;
-       ValaCCodeFunction* _tmp87_ = NULL;
-       ValaCCodeFunction* _tmp88_ = NULL;
-       const gchar* _tmp89_ = NULL;
-       ValaCCodeIdentifier* _tmp90_ = NULL;
-       ValaCCodeIdentifier* _tmp91_ = NULL;
-       ValaCCodeFunctionCall* _tmp92_ = NULL;
-       ValaCCodeFunctionCall* iter_call = NULL;
-       ValaCCodeIdentifier* _tmp93_ = NULL;
-       ValaCCodeIdentifier* _tmp94_ = NULL;
-       ValaCCodeFunctionCall* _tmp95_ = NULL;
-       ValaCCodeFunctionCall* _tmp96_ = NULL;
-       ValaCCodeFunctionCall* _tmp97_ = NULL;
-       const gchar* _tmp98_ = NULL;
-       ValaCCodeIdentifier* _tmp99_ = NULL;
-       ValaCCodeIdentifier* _tmp100_ = NULL;
-       ValaCCodeUnaryExpression* _tmp101_ = NULL;
-       ValaCCodeUnaryExpression* _tmp102_ = NULL;
-       ValaCCodeFunctionCall* _tmp103_ = NULL;
-       ValaCCodeExpression* _tmp104_ = NULL;
-       ValaCCodeFunction* _tmp105_ = NULL;
-       ValaCCodeFunction* _tmp106_ = NULL;
-       ValaCCodeFunctionCall* _tmp107_ = NULL;
-       ValaCCodeIdentifier* _tmp108_ = NULL;
-       ValaCCodeIdentifier* _tmp109_ = NULL;
-       ValaCCodeFunctionCall* _tmp110_ = NULL;
-       ValaCCodeFunctionCall* _tmp111_ = NULL;
-       const gchar* _tmp112_ = NULL;
-       ValaCCodeIdentifier* _tmp113_ = NULL;
-       ValaCCodeIdentifier* _tmp114_ = NULL;
-       ValaCCodeUnaryExpression* _tmp115_ = NULL;
-       ValaCCodeUnaryExpression* _tmp116_ = NULL;
-       ValaCCodeFunctionCall* _tmp117_ = NULL;
-       ValaCCodeConstant* _tmp118_ = NULL;
-       ValaCCodeConstant* _tmp119_ = NULL;
+       ValaTypeSymbol* _tmp78_ = NULL;
+       ValaDataType* _tmp94_ = NULL;
+       ValaTypeSymbol* _tmp95_ = NULL;
+       ValaTypeSymbol* _tmp96_ = NULL;
+       ValaDataType* _tmp97_ = NULL;
+       ValaTypeSymbol* _tmp98_ = NULL;
+       ValaTypeSymbol* _tmp99_ = NULL;
+       ValaCCodeFunction* _tmp115_ = NULL;
+       ValaCCodeFunction* _tmp116_ = NULL;
+       const gchar* _tmp117_ = NULL;
+       ValaCCodeIdentifier* _tmp118_ = NULL;
+       ValaCCodeIdentifier* _tmp119_ = NULL;
        ValaCCodeFunctionCall* _tmp120_ = NULL;
-       const gchar* _tmp121_ = NULL;
+       ValaCCodeFunctionCall* iter_call = NULL;
+       ValaCCodeIdentifier* _tmp121_ = NULL;
        ValaCCodeIdentifier* _tmp122_ = NULL;
-       ValaCCodeIdentifier* _tmp123_ = NULL;
-       ValaCCodeUnaryExpression* _tmp124_ = NULL;
-       ValaCCodeUnaryExpression* _tmp125_ = NULL;
-       ValaCCodeFunctionCall* _tmp126_ = NULL;
-       const gchar* _tmp127_ = NULL;
+       ValaCCodeFunctionCall* _tmp123_ = NULL;
+       ValaCCodeFunctionCall* _tmp124_ = NULL;
+       ValaCCodeFunctionCall* _tmp125_ = NULL;
+       const gchar* _tmp126_ = NULL;
+       ValaCCodeIdentifier* _tmp127_ = NULL;
        ValaCCodeIdentifier* _tmp128_ = NULL;
-       ValaCCodeIdentifier* _tmp129_ = NULL;
+       ValaCCodeUnaryExpression* _tmp129_ = NULL;
        ValaCCodeUnaryExpression* _tmp130_ = NULL;
-       ValaCCodeUnaryExpression* _tmp131_ = NULL;
-       ValaCCodeFunction* _tmp132_ = NULL;
+       ValaCCodeFunctionCall* _tmp131_ = NULL;
+       ValaCCodeExpression* _tmp132_ = NULL;
        ValaCCodeFunction* _tmp133_ = NULL;
-       ValaCCodeFunctionCall* _tmp134_ = NULL;
-       ValaCCodeExpression* key_expr = NULL;
-       ValaDataType* _tmp135_ = NULL;
-       const gchar* _tmp136_ = NULL;
+       ValaCCodeFunction* _tmp134_ = NULL;
+       ValaCCodeFunctionCall* _tmp135_ = NULL;
+       ValaCCodeIdentifier* _tmp136_ = NULL;
        ValaCCodeIdentifier* _tmp137_ = NULL;
-       ValaCCodeIdentifier* _tmp138_ = NULL;
-       ValaCCodeExpression* _tmp139_ = NULL;
-       ValaCCodeExpression* _tmp140_ = NULL;
-       ValaCCodeExpression* value_expr = NULL;
-       ValaDataType* _tmp141_ = NULL;
-       const gchar* _tmp142_ = NULL;
-       ValaCCodeIdentifier* _tmp143_ = NULL;
-       ValaCCodeIdentifier* _tmp144_ = NULL;
-       ValaCCodeExpression* _tmp145_ = NULL;
-       ValaCCodeExpression* _tmp146_ = NULL;
-       gboolean _tmp147_ = FALSE;
-       ValaCCodeExpression* _tmp148_ = NULL;
-       ValaCCodeFunctionCall* hash_table_insert = NULL;
+       ValaCCodeFunctionCall* _tmp138_ = NULL;
+       ValaCCodeFunctionCall* _tmp139_ = NULL;
+       const gchar* _tmp140_ = NULL;
+       ValaCCodeIdentifier* _tmp141_ = NULL;
+       ValaCCodeIdentifier* _tmp142_ = NULL;
+       ValaCCodeUnaryExpression* _tmp143_ = NULL;
+       ValaCCodeUnaryExpression* _tmp144_ = NULL;
+       ValaCCodeFunctionCall* _tmp145_ = NULL;
+       ValaCCodeConstant* _tmp146_ = NULL;
+       ValaCCodeConstant* _tmp147_ = NULL;
+       ValaCCodeFunctionCall* _tmp148_ = NULL;
+       const gchar* _tmp149_ = NULL;
        ValaCCodeIdentifier* _tmp150_ = NULL;
        ValaCCodeIdentifier* _tmp151_ = NULL;
-       ValaCCodeFunctionCall* _tmp152_ = NULL;
-       ValaCCodeFunctionCall* _tmp153_ = NULL;
+       ValaCCodeUnaryExpression* _tmp152_ = NULL;
+       ValaCCodeUnaryExpression* _tmp153_ = NULL;
        ValaCCodeFunctionCall* _tmp154_ = NULL;
        const gchar* _tmp155_ = NULL;
        ValaCCodeIdentifier* _tmp156_ = NULL;
        ValaCCodeIdentifier* _tmp157_ = NULL;
-       ValaCCodeFunctionCall* _tmp158_ = NULL;
-       ValaCCodeExpression* _tmp159_ = NULL;
-       ValaDataType* _tmp160_ = NULL;
-       ValaCCodeExpression* _tmp161_ = NULL;
-       ValaCCodeExpression* _tmp162_ = NULL;
-       ValaCCodeFunctionCall* _tmp163_ = NULL;
-       ValaCCodeExpression* _tmp164_ = NULL;
-       ValaDataType* _tmp165_ = NULL;
-       ValaCCodeExpression* _tmp166_ = NULL;
+       ValaCCodeUnaryExpression* _tmp158_ = NULL;
+       ValaCCodeUnaryExpression* _tmp159_ = NULL;
+       ValaCCodeFunction* _tmp160_ = NULL;
+       ValaCCodeFunction* _tmp161_ = NULL;
+       ValaCCodeFunctionCall* _tmp162_ = NULL;
+       ValaCCodeExpression* key_expr = NULL;
+       ValaDataType* _tmp163_ = NULL;
+       const gchar* _tmp164_ = NULL;
+       ValaCCodeIdentifier* _tmp165_ = NULL;
+       ValaCCodeIdentifier* _tmp166_ = NULL;
        ValaCCodeExpression* _tmp167_ = NULL;
-       ValaCCodeFunction* _tmp168_ = NULL;
-       ValaCCodeFunction* _tmp169_ = NULL;
-       ValaCCodeFunctionCall* _tmp170_ = NULL;
-       ValaCCodeFunction* _tmp171_ = NULL;
-       ValaCCodeFunction* _tmp172_ = NULL;
-       const gchar* _tmp173_ = NULL;
-       ValaCCodeIdentifier* _tmp174_ = NULL;
+       ValaCCodeExpression* _tmp168_ = NULL;
+       ValaCCodeExpression* value_expr = NULL;
+       ValaDataType* _tmp169_ = NULL;
+       const gchar* _tmp170_ = NULL;
+       ValaCCodeIdentifier* _tmp171_ = NULL;
+       ValaCCodeIdentifier* _tmp172_ = NULL;
+       ValaCCodeExpression* _tmp173_ = NULL;
+       ValaCCodeExpression* _tmp174_ = NULL;
+       gboolean _tmp175_ = FALSE;
+       ValaCCodeExpression* _tmp176_ = NULL;
+       ValaCCodeFunctionCall* hash_table_insert = NULL;
+       ValaCCodeIdentifier* _tmp178_ = NULL;
+       ValaCCodeIdentifier* _tmp179_ = NULL;
+       ValaCCodeFunctionCall* _tmp180_ = NULL;
+       ValaCCodeFunctionCall* _tmp181_ = NULL;
+       ValaCCodeFunctionCall* _tmp182_ = NULL;
+       const gchar* _tmp183_ = NULL;
+       ValaCCodeIdentifier* _tmp184_ = NULL;
+       ValaCCodeIdentifier* _tmp185_ = NULL;
+       ValaCCodeFunctionCall* _tmp186_ = NULL;
+       ValaCCodeExpression* _tmp187_ = NULL;
+       ValaDataType* _tmp188_ = NULL;
+       ValaCCodeExpression* _tmp189_ = NULL;
+       ValaCCodeExpression* _tmp190_ = NULL;
+       ValaCCodeFunctionCall* _tmp191_ = NULL;
+       ValaCCodeExpression* _tmp192_ = NULL;
+       ValaDataType* _tmp193_ = NULL;
+       ValaCCodeExpression* _tmp194_ = NULL;
+       ValaCCodeExpression* _tmp195_ = NULL;
+       ValaCCodeFunction* _tmp196_ = NULL;
+       ValaCCodeFunction* _tmp197_ = NULL;
+       ValaCCodeFunctionCall* _tmp198_ = NULL;
+       ValaCCodeFunction* _tmp199_ = NULL;
+       ValaCCodeFunction* _tmp200_ = NULL;
+       const gchar* _tmp201_ = NULL;
+       ValaCCodeIdentifier* _tmp202_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (type != NULL, NULL);
        g_return_val_if_fail (variant_expr != NULL, NULL);
@@ -3039,170 +3039,245 @@ static ValaCCodeExpression* vala_gvariant_module_deserialize_hash_table (ValaGVa
                vala_ccode_function_call_add_argument (_tmp54_, (ValaCCodeExpression*) _tmp56_);
                _vala_ccode_node_unref0 (_tmp56_);
        } else {
-               ValaCCodeFunctionCall* _tmp57_ = NULL;
-               ValaCCodeIdentifier* _tmp58_ = NULL;
-               ValaCCodeIdentifier* _tmp59_ = NULL;
-               ValaCCodeFunctionCall* _tmp60_ = NULL;
-               ValaCCodeIdentifier* _tmp61_ = NULL;
-               ValaCCodeIdentifier* _tmp62_ = NULL;
-               _tmp57_ = hash_table_new;
-               _tmp58_ = vala_ccode_identifier_new ("g_direct_hash");
+               ValaDataType* _tmp57_ = NULL;
+               ValaTypeSymbol* _tmp58_ = NULL;
+               ValaTypeSymbol* _tmp59_ = NULL;
+               ValaClass* _tmp60_ = NULL;
+               _tmp57_ = key_type;
+               _tmp58_ = vala_data_type_get_data_type (_tmp57_);
                _tmp59_ = _tmp58_;
-               vala_ccode_function_call_add_argument (_tmp57_, (ValaCCodeExpression*) _tmp59_);
-               _vala_ccode_node_unref0 (_tmp59_);
-               _tmp60_ = hash_table_new;
-               _tmp61_ = vala_ccode_identifier_new ("g_direct_equal");
-               _tmp62_ = _tmp61_;
-               vala_ccode_function_call_add_argument (_tmp60_, (ValaCCodeExpression*) _tmp62_);
-               _vala_ccode_node_unref0 (_tmp62_);
+               _tmp60_ = ((ValaCCodeBaseModule*) self)->gvariant_type;
+               if (_tmp59_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp60_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
+                       ValaCCodeFunctionCall* _tmp61_ = NULL;
+                       ValaCCodeIdentifier* _tmp62_ = NULL;
+                       ValaCCodeIdentifier* _tmp63_ = NULL;
+                       ValaCCodeFunctionCall* _tmp64_ = NULL;
+                       ValaCCodeIdentifier* _tmp65_ = NULL;
+                       ValaCCodeIdentifier* _tmp66_ = NULL;
+                       _tmp61_ = hash_table_new;
+                       _tmp62_ = vala_ccode_identifier_new ("g_variant_hash");
+                       _tmp63_ = _tmp62_;
+                       vala_ccode_function_call_add_argument (_tmp61_, (ValaCCodeExpression*) _tmp63_);
+                       _vala_ccode_node_unref0 (_tmp63_);
+                       _tmp64_ = hash_table_new;
+                       _tmp65_ = vala_ccode_identifier_new ("g_variant_equal");
+                       _tmp66_ = _tmp65_;
+                       vala_ccode_function_call_add_argument (_tmp64_, (ValaCCodeExpression*) _tmp66_);
+                       _vala_ccode_node_unref0 (_tmp66_);
+               } else {
+                       ValaCCodeFunctionCall* _tmp67_ = NULL;
+                       ValaCCodeIdentifier* _tmp68_ = NULL;
+                       ValaCCodeIdentifier* _tmp69_ = NULL;
+                       ValaCCodeFunctionCall* _tmp70_ = NULL;
+                       ValaCCodeIdentifier* _tmp71_ = NULL;
+                       ValaCCodeIdentifier* _tmp72_ = NULL;
+                       _tmp67_ = hash_table_new;
+                       _tmp68_ = vala_ccode_identifier_new ("g_direct_hash");
+                       _tmp69_ = _tmp68_;
+                       vala_ccode_function_call_add_argument (_tmp67_, (ValaCCodeExpression*) _tmp69_);
+                       _vala_ccode_node_unref0 (_tmp69_);
+                       _tmp70_ = hash_table_new;
+                       _tmp71_ = vala_ccode_identifier_new ("g_direct_equal");
+                       _tmp72_ = _tmp71_;
+                       vala_ccode_function_call_add_argument (_tmp70_, (ValaCCodeExpression*) _tmp72_);
+                       _vala_ccode_node_unref0 (_tmp72_);
+               }
        }
-       _tmp63_ = key_type;
-       _tmp64_ = vala_data_type_get_data_type (_tmp63_);
-       _tmp65_ = _tmp64_;
-       _tmp66_ = ((ValaCCodeBaseModule*) self)->string_type;
-       _tmp67_ = vala_data_type_get_data_type (_tmp66_);
-       _tmp68_ = _tmp67_;
-       if (_tmp65_ == _tmp68_) {
-               ValaCCodeFunctionCall* _tmp69_ = NULL;
-               ValaCCodeIdentifier* _tmp70_ = NULL;
-               ValaCCodeIdentifier* _tmp71_ = NULL;
-               _tmp69_ = hash_table_new;
-               _tmp70_ = vala_ccode_identifier_new ("g_free");
-               _tmp71_ = _tmp70_;
-               vala_ccode_function_call_add_argument (_tmp69_, (ValaCCodeExpression*) _tmp71_);
-               _vala_ccode_node_unref0 (_tmp71_);
+       _tmp73_ = key_type;
+       _tmp74_ = vala_data_type_get_data_type (_tmp73_);
+       _tmp75_ = _tmp74_;
+       _tmp76_ = ((ValaCCodeBaseModule*) self)->string_type;
+       _tmp77_ = vala_data_type_get_data_type (_tmp76_);
+       _tmp78_ = _tmp77_;
+       if (_tmp75_ == _tmp78_) {
+               ValaCCodeFunctionCall* _tmp79_ = NULL;
+               ValaCCodeIdentifier* _tmp80_ = NULL;
+               ValaCCodeIdentifier* _tmp81_ = NULL;
+               _tmp79_ = hash_table_new;
+               _tmp80_ = vala_ccode_identifier_new ("g_free");
+               _tmp81_ = _tmp80_;
+               vala_ccode_function_call_add_argument (_tmp79_, (ValaCCodeExpression*) _tmp81_);
+               _vala_ccode_node_unref0 (_tmp81_);
        } else {
-               ValaCCodeFunctionCall* _tmp72_ = NULL;
-               ValaCCodeIdentifier* _tmp73_ = NULL;
-               ValaCCodeIdentifier* _tmp74_ = NULL;
-               _tmp72_ = hash_table_new;
-               _tmp73_ = vala_ccode_identifier_new ("NULL");
-               _tmp74_ = _tmp73_;
-               vala_ccode_function_call_add_argument (_tmp72_, (ValaCCodeExpression*) _tmp74_);
-               _vala_ccode_node_unref0 (_tmp74_);
+               ValaDataType* _tmp82_ = NULL;
+               ValaTypeSymbol* _tmp83_ = NULL;
+               ValaTypeSymbol* _tmp84_ = NULL;
+               ValaClass* _tmp85_ = NULL;
+               _tmp82_ = key_type;
+               _tmp83_ = vala_data_type_get_data_type (_tmp82_);
+               _tmp84_ = _tmp83_;
+               _tmp85_ = ((ValaCCodeBaseModule*) self)->gvariant_type;
+               if (_tmp84_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp85_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
+                       ValaCCodeFunctionCall* _tmp86_ = NULL;
+                       ValaCCodeIdentifier* _tmp87_ = NULL;
+                       ValaCCodeIdentifier* _tmp88_ = NULL;
+                       ValaCCodeCastExpression* _tmp89_ = NULL;
+                       ValaCCodeCastExpression* _tmp90_ = NULL;
+                       _tmp86_ = hash_table_new;
+                       _tmp87_ = vala_ccode_identifier_new ("g_variant_unref");
+                       _tmp88_ = _tmp87_;
+                       _tmp89_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp88_, "GDestroyNotify");
+                       _tmp90_ = _tmp89_;
+                       vala_ccode_function_call_add_argument (_tmp86_, (ValaCCodeExpression*) _tmp90_);
+                       _vala_ccode_node_unref0 (_tmp90_);
+                       _vala_ccode_node_unref0 (_tmp88_);
+               } else {
+                       ValaCCodeFunctionCall* _tmp91_ = NULL;
+                       ValaCCodeIdentifier* _tmp92_ = NULL;
+                       ValaCCodeIdentifier* _tmp93_ = NULL;
+                       _tmp91_ = hash_table_new;
+                       _tmp92_ = vala_ccode_identifier_new ("NULL");
+                       _tmp93_ = _tmp92_;
+                       vala_ccode_function_call_add_argument (_tmp91_, (ValaCCodeExpression*) _tmp93_);
+                       _vala_ccode_node_unref0 (_tmp93_);
+               }
        }
-       _tmp75_ = value_type;
-       _tmp76_ = vala_data_type_get_data_type (_tmp75_);
-       _tmp77_ = _tmp76_;
-       _tmp78_ = ((ValaCCodeBaseModule*) self)->string_type;
-       _tmp79_ = vala_data_type_get_data_type (_tmp78_);
-       _tmp80_ = _tmp79_;
-       if (_tmp77_ == _tmp80_) {
-               ValaCCodeFunctionCall* _tmp81_ = NULL;
-               ValaCCodeIdentifier* _tmp82_ = NULL;
-               ValaCCodeIdentifier* _tmp83_ = NULL;
-               _tmp81_ = hash_table_new;
-               _tmp82_ = vala_ccode_identifier_new ("g_free");
-               _tmp83_ = _tmp82_;
-               vala_ccode_function_call_add_argument (_tmp81_, (ValaCCodeExpression*) _tmp83_);
-               _vala_ccode_node_unref0 (_tmp83_);
+       _tmp94_ = value_type;
+       _tmp95_ = vala_data_type_get_data_type (_tmp94_);
+       _tmp96_ = _tmp95_;
+       _tmp97_ = ((ValaCCodeBaseModule*) self)->string_type;
+       _tmp98_ = vala_data_type_get_data_type (_tmp97_);
+       _tmp99_ = _tmp98_;
+       if (_tmp96_ == _tmp99_) {
+               ValaCCodeFunctionCall* _tmp100_ = NULL;
+               ValaCCodeIdentifier* _tmp101_ = NULL;
+               ValaCCodeIdentifier* _tmp102_ = NULL;
+               _tmp100_ = hash_table_new;
+               _tmp101_ = vala_ccode_identifier_new ("g_free");
+               _tmp102_ = _tmp101_;
+               vala_ccode_function_call_add_argument (_tmp100_, (ValaCCodeExpression*) _tmp102_);
+               _vala_ccode_node_unref0 (_tmp102_);
        } else {
-               ValaCCodeFunctionCall* _tmp84_ = NULL;
-               ValaCCodeIdentifier* _tmp85_ = NULL;
-               ValaCCodeIdentifier* _tmp86_ = NULL;
-               _tmp84_ = hash_table_new;
-               _tmp85_ = vala_ccode_identifier_new ("NULL");
-               _tmp86_ = _tmp85_;
-               vala_ccode_function_call_add_argument (_tmp84_, (ValaCCodeExpression*) _tmp86_);
-               _vala_ccode_node_unref0 (_tmp86_);
+               ValaDataType* _tmp103_ = NULL;
+               ValaTypeSymbol* _tmp104_ = NULL;
+               ValaTypeSymbol* _tmp105_ = NULL;
+               ValaClass* _tmp106_ = NULL;
+               _tmp103_ = value_type;
+               _tmp104_ = vala_data_type_get_data_type (_tmp103_);
+               _tmp105_ = _tmp104_;
+               _tmp106_ = ((ValaCCodeBaseModule*) self)->gvariant_type;
+               if (_tmp105_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp106_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
+                       ValaCCodeFunctionCall* _tmp107_ = NULL;
+                       ValaCCodeIdentifier* _tmp108_ = NULL;
+                       ValaCCodeIdentifier* _tmp109_ = NULL;
+                       ValaCCodeCastExpression* _tmp110_ = NULL;
+                       ValaCCodeCastExpression* _tmp111_ = NULL;
+                       _tmp107_ = hash_table_new;
+                       _tmp108_ = vala_ccode_identifier_new ("g_variant_unref");
+                       _tmp109_ = _tmp108_;
+                       _tmp110_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp109_, "GDestroyNotify");
+                       _tmp111_ = _tmp110_;
+                       vala_ccode_function_call_add_argument (_tmp107_, (ValaCCodeExpression*) _tmp111_);
+                       _vala_ccode_node_unref0 (_tmp111_);
+                       _vala_ccode_node_unref0 (_tmp109_);
+               } else {
+                       ValaCCodeFunctionCall* _tmp112_ = NULL;
+                       ValaCCodeIdentifier* _tmp113_ = NULL;
+                       ValaCCodeIdentifier* _tmp114_ = NULL;
+                       _tmp112_ = hash_table_new;
+                       _tmp113_ = vala_ccode_identifier_new ("NULL");
+                       _tmp114_ = _tmp113_;
+                       vala_ccode_function_call_add_argument (_tmp112_, (ValaCCodeExpression*) _tmp114_);
+                       _vala_ccode_node_unref0 (_tmp114_);
+               }
        }
-       _tmp87_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp88_ = _tmp87_;
-       _tmp89_ = temp_name;
-       _tmp90_ = vala_ccode_identifier_new (_tmp89_);
-       _tmp91_ = _tmp90_;
-       _tmp92_ = hash_table_new;
-       vala_ccode_function_add_assignment (_tmp88_, (ValaCCodeExpression*) _tmp91_, (ValaCCodeExpression*) _tmp92_);
-       _vala_ccode_node_unref0 (_tmp91_);
-       _tmp93_ = vala_ccode_identifier_new ("g_variant_iter_init");
-       _tmp94_ = _tmp93_;
-       _tmp95_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp94_);
-       _tmp96_ = _tmp95_;
-       _vala_ccode_node_unref0 (_tmp94_);
-       iter_call = _tmp96_;
-       _tmp97_ = iter_call;
-       _tmp98_ = subiter_name;
-       _tmp99_ = vala_ccode_identifier_new (_tmp98_);
-       _tmp100_ = _tmp99_;
-       _tmp101_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp100_);
-       _tmp102_ = _tmp101_;
-       vala_ccode_function_call_add_argument (_tmp97_, (ValaCCodeExpression*) _tmp102_);
-       _vala_ccode_node_unref0 (_tmp102_);
-       _vala_ccode_node_unref0 (_tmp100_);
-       _tmp103_ = iter_call;
-       _tmp104_ = variant_expr;
-       vala_ccode_function_call_add_argument (_tmp103_, _tmp104_);
-       _tmp105_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp106_ = _tmp105_;
-       _tmp107_ = iter_call;
-       vala_ccode_function_add_expression (_tmp106_, (ValaCCodeExpression*) _tmp107_);
-       _tmp108_ = vala_ccode_identifier_new ("g_variant_iter_loop");
-       _tmp109_ = _tmp108_;
-       _tmp110_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp109_);
-       _vala_ccode_node_unref0 (iter_call);
-       iter_call = _tmp110_;
-       _vala_ccode_node_unref0 (_tmp109_);
-       _tmp111_ = iter_call;
-       _tmp112_ = subiter_name;
-       _tmp113_ = vala_ccode_identifier_new (_tmp112_);
-       _tmp114_ = _tmp113_;
-       _tmp115_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp114_);
+       _tmp115_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
        _tmp116_ = _tmp115_;
-       vala_ccode_function_call_add_argument (_tmp111_, (ValaCCodeExpression*) _tmp116_);
-       _vala_ccode_node_unref0 (_tmp116_);
-       _vala_ccode_node_unref0 (_tmp114_);
-       _tmp117_ = iter_call;
-       _tmp118_ = vala_ccode_constant_new ("\"{?*}\"");
+       _tmp117_ = temp_name;
+       _tmp118_ = vala_ccode_identifier_new (_tmp117_);
        _tmp119_ = _tmp118_;
-       vala_ccode_function_call_add_argument (_tmp117_, (ValaCCodeExpression*) _tmp119_);
+       _tmp120_ = hash_table_new;
+       vala_ccode_function_add_assignment (_tmp116_, (ValaCCodeExpression*) _tmp119_, (ValaCCodeExpression*) _tmp120_);
        _vala_ccode_node_unref0 (_tmp119_);
-       _tmp120_ = iter_call;
-       _tmp121_ = key_name;
-       _tmp122_ = vala_ccode_identifier_new (_tmp121_);
-       _tmp123_ = _tmp122_;
-       _tmp124_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp123_);
-       _tmp125_ = _tmp124_;
-       vala_ccode_function_call_add_argument (_tmp120_, (ValaCCodeExpression*) _tmp125_);
-       _vala_ccode_node_unref0 (_tmp125_);
-       _vala_ccode_node_unref0 (_tmp123_);
-       _tmp126_ = iter_call;
-       _tmp127_ = value_name;
-       _tmp128_ = vala_ccode_identifier_new (_tmp127_);
-       _tmp129_ = _tmp128_;
-       _tmp130_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp129_);
-       _tmp131_ = _tmp130_;
-       vala_ccode_function_call_add_argument (_tmp126_, (ValaCCodeExpression*) _tmp131_);
-       _vala_ccode_node_unref0 (_tmp131_);
-       _vala_ccode_node_unref0 (_tmp129_);
-       _tmp132_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp133_ = _tmp132_;
-       _tmp134_ = iter_call;
-       vala_ccode_function_open_while (_tmp133_, (ValaCCodeExpression*) _tmp134_);
-       _tmp135_ = key_type;
-       _tmp136_ = key_name;
-       _tmp137_ = vala_ccode_identifier_new (_tmp136_);
-       _tmp138_ = _tmp137_;
-       _tmp139_ = vala_ccode_base_module_deserialize_expression ((ValaCCodeBaseModule*) self, _tmp135_, (ValaCCodeExpression*) _tmp138_, NULL, NULL, NULL);
-       _tmp140_ = _tmp139_;
-       _vala_ccode_node_unref0 (_tmp138_);
-       key_expr = _tmp140_;
-       _tmp141_ = value_type;
-       _tmp142_ = value_name;
-       _tmp143_ = vala_ccode_identifier_new (_tmp142_);
+       _tmp121_ = vala_ccode_identifier_new ("g_variant_iter_init");
+       _tmp122_ = _tmp121_;
+       _tmp123_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp122_);
+       _tmp124_ = _tmp123_;
+       _vala_ccode_node_unref0 (_tmp122_);
+       iter_call = _tmp124_;
+       _tmp125_ = iter_call;
+       _tmp126_ = subiter_name;
+       _tmp127_ = vala_ccode_identifier_new (_tmp126_);
+       _tmp128_ = _tmp127_;
+       _tmp129_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp128_);
+       _tmp130_ = _tmp129_;
+       vala_ccode_function_call_add_argument (_tmp125_, (ValaCCodeExpression*) _tmp130_);
+       _vala_ccode_node_unref0 (_tmp130_);
+       _vala_ccode_node_unref0 (_tmp128_);
+       _tmp131_ = iter_call;
+       _tmp132_ = variant_expr;
+       vala_ccode_function_call_add_argument (_tmp131_, _tmp132_);
+       _tmp133_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp134_ = _tmp133_;
+       _tmp135_ = iter_call;
+       vala_ccode_function_add_expression (_tmp134_, (ValaCCodeExpression*) _tmp135_);
+       _tmp136_ = vala_ccode_identifier_new ("g_variant_iter_loop");
+       _tmp137_ = _tmp136_;
+       _tmp138_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp137_);
+       _vala_ccode_node_unref0 (iter_call);
+       iter_call = _tmp138_;
+       _vala_ccode_node_unref0 (_tmp137_);
+       _tmp139_ = iter_call;
+       _tmp140_ = subiter_name;
+       _tmp141_ = vala_ccode_identifier_new (_tmp140_);
+       _tmp142_ = _tmp141_;
+       _tmp143_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp142_);
        _tmp144_ = _tmp143_;
-       _tmp145_ = vala_ccode_base_module_deserialize_expression ((ValaCCodeBaseModule*) self, _tmp141_, (ValaCCodeExpression*) _tmp144_, NULL, NULL, NULL);
-       _tmp146_ = _tmp145_;
+       vala_ccode_function_call_add_argument (_tmp139_, (ValaCCodeExpression*) _tmp144_);
        _vala_ccode_node_unref0 (_tmp144_);
-       value_expr = _tmp146_;
-       _tmp148_ = key_expr;
-       if (_tmp148_ == NULL) {
-               _tmp147_ = TRUE;
+       _vala_ccode_node_unref0 (_tmp142_);
+       _tmp145_ = iter_call;
+       _tmp146_ = vala_ccode_constant_new ("\"{?*}\"");
+       _tmp147_ = _tmp146_;
+       vala_ccode_function_call_add_argument (_tmp145_, (ValaCCodeExpression*) _tmp147_);
+       _vala_ccode_node_unref0 (_tmp147_);
+       _tmp148_ = iter_call;
+       _tmp149_ = key_name;
+       _tmp150_ = vala_ccode_identifier_new (_tmp149_);
+       _tmp151_ = _tmp150_;
+       _tmp152_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp151_);
+       _tmp153_ = _tmp152_;
+       vala_ccode_function_call_add_argument (_tmp148_, (ValaCCodeExpression*) _tmp153_);
+       _vala_ccode_node_unref0 (_tmp153_);
+       _vala_ccode_node_unref0 (_tmp151_);
+       _tmp154_ = iter_call;
+       _tmp155_ = value_name;
+       _tmp156_ = vala_ccode_identifier_new (_tmp155_);
+       _tmp157_ = _tmp156_;
+       _tmp158_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp157_);
+       _tmp159_ = _tmp158_;
+       vala_ccode_function_call_add_argument (_tmp154_, (ValaCCodeExpression*) _tmp159_);
+       _vala_ccode_node_unref0 (_tmp159_);
+       _vala_ccode_node_unref0 (_tmp157_);
+       _tmp160_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp161_ = _tmp160_;
+       _tmp162_ = iter_call;
+       vala_ccode_function_open_while (_tmp161_, (ValaCCodeExpression*) _tmp162_);
+       _tmp163_ = key_type;
+       _tmp164_ = key_name;
+       _tmp165_ = vala_ccode_identifier_new (_tmp164_);
+       _tmp166_ = _tmp165_;
+       _tmp167_ = vala_ccode_base_module_deserialize_expression ((ValaCCodeBaseModule*) self, _tmp163_, (ValaCCodeExpression*) _tmp166_, NULL, NULL, NULL);
+       _tmp168_ = _tmp167_;
+       _vala_ccode_node_unref0 (_tmp166_);
+       key_expr = _tmp168_;
+       _tmp169_ = value_type;
+       _tmp170_ = value_name;
+       _tmp171_ = vala_ccode_identifier_new (_tmp170_);
+       _tmp172_ = _tmp171_;
+       _tmp173_ = vala_ccode_base_module_deserialize_expression ((ValaCCodeBaseModule*) self, _tmp169_, (ValaCCodeExpression*) _tmp172_, NULL, NULL, NULL);
+       _tmp174_ = _tmp173_;
+       _vala_ccode_node_unref0 (_tmp172_);
+       value_expr = _tmp174_;
+       _tmp176_ = key_expr;
+       if (_tmp176_ == NULL) {
+               _tmp175_ = TRUE;
        } else {
-               ValaCCodeExpression* _tmp149_ = NULL;
-               _tmp149_ = value_expr;
-               _tmp147_ = _tmp149_ == NULL;
+               ValaCCodeExpression* _tmp177_ = NULL;
+               _tmp177_ = value_expr;
+               _tmp175_ = _tmp177_ == NULL;
        }
-       if (_tmp147_) {
+       if (_tmp175_) {
                result = NULL;
                _vala_ccode_node_unref0 (value_expr);
                _vala_ccode_node_unref0 (key_expr);
@@ -3217,42 +3292,42 @@ static ValaCCodeExpression* vala_gvariant_module_deserialize_hash_table (ValaGVa
                _g_free0 (temp_name);
                return result;
        }
-       _tmp150_ = vala_ccode_identifier_new ("g_hash_table_insert");
-       _tmp151_ = _tmp150_;
-       _tmp152_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp151_);
-       _tmp153_ = _tmp152_;
-       _vala_ccode_node_unref0 (_tmp151_);
-       hash_table_insert = _tmp153_;
-       _tmp154_ = hash_table_insert;
-       _tmp155_ = temp_name;
-       _tmp156_ = vala_ccode_identifier_new (_tmp155_);
-       _tmp157_ = _tmp156_;
-       vala_ccode_function_call_add_argument (_tmp154_, (ValaCCodeExpression*) _tmp157_);
-       _vala_ccode_node_unref0 (_tmp157_);
-       _tmp158_ = hash_table_insert;
-       _tmp159_ = key_expr;
-       _tmp160_ = key_type;
-       _tmp161_ = vala_ccode_base_module_convert_to_generic_pointer ((ValaCCodeBaseModule*) self, _tmp159_, _tmp160_);
-       _tmp162_ = _tmp161_;
-       vala_ccode_function_call_add_argument (_tmp158_, _tmp162_);
-       _vala_ccode_node_unref0 (_tmp162_);
-       _tmp163_ = hash_table_insert;
-       _tmp164_ = value_expr;
-       _tmp165_ = value_type;
-       _tmp166_ = vala_ccode_base_module_convert_to_generic_pointer ((ValaCCodeBaseModule*) self, _tmp164_, _tmp165_);
-       _tmp167_ = _tmp166_;
-       vala_ccode_function_call_add_argument (_tmp163_, _tmp167_);
-       _vala_ccode_node_unref0 (_tmp167_);
-       _tmp168_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp169_ = _tmp168_;
-       _tmp170_ = hash_table_insert;
-       vala_ccode_function_add_expression (_tmp169_, (ValaCCodeExpression*) _tmp170_);
-       _tmp171_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
-       _tmp172_ = _tmp171_;
-       vala_ccode_function_close (_tmp172_);
-       _tmp173_ = temp_name;
-       _tmp174_ = vala_ccode_identifier_new (_tmp173_);
-       result = (ValaCCodeExpression*) _tmp174_;
+       _tmp178_ = vala_ccode_identifier_new ("g_hash_table_insert");
+       _tmp179_ = _tmp178_;
+       _tmp180_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp179_);
+       _tmp181_ = _tmp180_;
+       _vala_ccode_node_unref0 (_tmp179_);
+       hash_table_insert = _tmp181_;
+       _tmp182_ = hash_table_insert;
+       _tmp183_ = temp_name;
+       _tmp184_ = vala_ccode_identifier_new (_tmp183_);
+       _tmp185_ = _tmp184_;
+       vala_ccode_function_call_add_argument (_tmp182_, (ValaCCodeExpression*) _tmp185_);
+       _vala_ccode_node_unref0 (_tmp185_);
+       _tmp186_ = hash_table_insert;
+       _tmp187_ = key_expr;
+       _tmp188_ = key_type;
+       _tmp189_ = vala_ccode_base_module_convert_to_generic_pointer ((ValaCCodeBaseModule*) self, _tmp187_, _tmp188_);
+       _tmp190_ = _tmp189_;
+       vala_ccode_function_call_add_argument (_tmp186_, _tmp190_);
+       _vala_ccode_node_unref0 (_tmp190_);
+       _tmp191_ = hash_table_insert;
+       _tmp192_ = value_expr;
+       _tmp193_ = value_type;
+       _tmp194_ = vala_ccode_base_module_convert_to_generic_pointer ((ValaCCodeBaseModule*) self, _tmp192_, _tmp193_);
+       _tmp195_ = _tmp194_;
+       vala_ccode_function_call_add_argument (_tmp191_, _tmp195_);
+       _vala_ccode_node_unref0 (_tmp195_);
+       _tmp196_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp197_ = _tmp196_;
+       _tmp198_ = hash_table_insert;
+       vala_ccode_function_add_expression (_tmp197_, (ValaCCodeExpression*) _tmp198_);
+       _tmp199_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
+       _tmp200_ = _tmp199_;
+       vala_ccode_function_close (_tmp200_);
+       _tmp201_ = temp_name;
+       _tmp202_ = vala_ccode_identifier_new (_tmp201_);
+       result = (ValaCCodeExpression*) _tmp202_;
        _vala_ccode_node_unref0 (hash_table_insert);
        _vala_ccode_node_unref0 (value_expr);
        _vala_ccode_node_unref0 (key_expr);
@@ -5440,10 +5515,10 @@ static GType vala_gvariant_module_basic_type_info_get_type (void) {
 
 static void vala_gvariant_module_class_init (ValaGVariantModuleClass * klass) {
        vala_gvariant_module_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_gvariant_module_real_visit_enum;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->generate_enum_declaration = vala_gvariant_module_real_generate_enum_declaration;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->deserialize_expression = vala_gvariant_module_real_deserialize_expression;
-       VALA_CCODE_BASE_MODULE_CLASS (klass)->serialize_expression = vala_gvariant_module_real_serialize_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_enum = vala_gvariant_module_real_visit_enum;
+       ((ValaCCodeBaseModuleClass *) klass)->generate_enum_declaration = vala_gvariant_module_real_generate_enum_declaration;
+       ((ValaCCodeBaseModuleClass *) klass)->deserialize_expression = vala_gvariant_module_real_deserialize_expression;
+       ((ValaCCodeBaseModuleClass *) klass)->serialize_expression = vala_gvariant_module_real_serialize_expression;
 }
 
 
index 8b08731..409940e 100644 (file)
@@ -394,17 +394,26 @@ public class Vala.GVariantModule : GAsyncModule {
                if (key_type.data_type == string_type.data_type) {
                        hash_table_new.add_argument (new CCodeIdentifier ("g_str_hash"));
                        hash_table_new.add_argument (new CCodeIdentifier ("g_str_equal"));
+               } else if (key_type.data_type == gvariant_type) {
+                       hash_table_new.add_argument (new CCodeIdentifier ("g_variant_hash"));
+                       hash_table_new.add_argument (new CCodeIdentifier ("g_variant_equal"));
                } else {
                        hash_table_new.add_argument (new CCodeIdentifier ("g_direct_hash"));
                        hash_table_new.add_argument (new CCodeIdentifier ("g_direct_equal"));
                }
+               
                if (key_type.data_type == string_type.data_type) {
                        hash_table_new.add_argument (new CCodeIdentifier ("g_free"));
+               } else if (key_type.data_type == gvariant_type) {
+                       hash_table_new.add_argument (new CCodeCastExpression (new CCodeIdentifier ("g_variant_unref"), "GDestroyNotify"));
                } else {
                        hash_table_new.add_argument (new CCodeIdentifier ("NULL"));
                }
+               
                if (value_type.data_type == string_type.data_type) {
                        hash_table_new.add_argument (new CCodeIdentifier ("g_free"));
+               } else if (value_type.data_type == gvariant_type) {
+                       hash_table_new.add_argument (new CCodeCastExpression (new CCodeIdentifier ("g_variant_unref"), "GDestroyNotify"));
                } else {
                        hash_table_new.add_argument (new CCodeIdentifier ("NULL"));
                }
index 7522c17..ba505d1 100644 (file)
@@ -454,19 +454,19 @@ void vala_interface_register_function_set_interface_reference (ValaInterfaceRegi
 
 static void vala_interface_register_function_class_init (ValaInterfaceRegisterFunctionClass * klass) {
        vala_interface_register_function_parent_class = g_type_class_peek_parent (klass);
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->finalize = vala_interface_register_function_finalize;
+       ((ValaTypeRegisterFunctionClass *) klass)->finalize = vala_interface_register_function_finalize;
        g_type_class_add_private (klass, sizeof (ValaInterfaceRegisterFunctionPrivate));
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_declaration = vala_interface_register_function_real_get_type_declaration;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_struct_name = vala_interface_register_function_real_get_type_struct_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_base_init_func_name = vala_interface_register_function_real_get_base_init_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_class_finalize_func_name = vala_interface_register_function_real_get_class_finalize_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_base_finalize_func_name = vala_interface_register_function_real_get_base_finalize_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_class_init_func_name = vala_interface_register_function_real_get_class_init_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_instance_struct_size = vala_interface_register_function_real_get_instance_struct_size;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_instance_init_func_name = vala_interface_register_function_real_get_instance_init_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_parent_type_name = vala_interface_register_function_real_get_parent_type_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_accessibility = vala_interface_register_function_real_get_accessibility;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_interface_init_statements = vala_interface_register_function_real_get_type_interface_init_statements;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_declaration = vala_interface_register_function_real_get_type_declaration;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_struct_name = vala_interface_register_function_real_get_type_struct_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_base_init_func_name = vala_interface_register_function_real_get_base_init_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_class_finalize_func_name = vala_interface_register_function_real_get_class_finalize_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_base_finalize_func_name = vala_interface_register_function_real_get_base_finalize_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_class_init_func_name = vala_interface_register_function_real_get_class_init_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_instance_struct_size = vala_interface_register_function_real_get_instance_struct_size;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_instance_init_func_name = vala_interface_register_function_real_get_instance_init_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_parent_type_name = vala_interface_register_function_real_get_parent_type_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_accessibility = vala_interface_register_function_real_get_accessibility;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_interface_init_statements = vala_interface_register_function_real_get_type_interface_init_statements;
 }
 
 
index d642284..d19cffa 100644 (file)
@@ -201,10 +201,10 @@ void vala_struct_register_function_set_struct_reference (ValaStructRegisterFunct
 
 static void vala_struct_register_function_class_init (ValaStructRegisterFunctionClass * klass) {
        vala_struct_register_function_parent_class = g_type_class_peek_parent (klass);
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->finalize = vala_struct_register_function_finalize;
+       ((ValaTypeRegisterFunctionClass *) klass)->finalize = vala_struct_register_function_finalize;
        g_type_class_add_private (klass, sizeof (ValaStructRegisterFunctionPrivate));
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_declaration = vala_struct_register_function_real_get_type_declaration;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_accessibility = vala_struct_register_function_real_get_accessibility;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_declaration = vala_struct_register_function_real_get_type_declaration;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_accessibility = vala_struct_register_function_real_get_accessibility;
 }
 
 
index 453f60f..d9ec2d1 100644 (file)
@@ -109,6 +109,7 @@ void vala_typeregister_function_init_from_type (ValaTypeRegisterFunction* self,
 ValaTypeSymbol* vala_typeregister_function_get_type_declaration (ValaTypeRegisterFunction* self);
 gchar* vala_ccode_base_module_get_ccode_lower_case_name (ValaCodeNode* node, const gchar* infix);
 ValaSymbolAccessibility vala_typeregister_function_get_accessibility (ValaTypeRegisterFunction* self);
+ValaCodeContext* vala_typeregister_function_get_context (ValaTypeRegisterFunction* self);
 gchar* vala_typeregister_function_get_gtype_value_table_init_function_name (ValaTypeRegisterFunction* self);
 gchar* vala_typeregister_function_get_gtype_value_table_free_function_name (ValaTypeRegisterFunction* self);
 gchar* vala_typeregister_function_get_gtype_value_table_copy_function_name (ValaTypeRegisterFunction* self);
@@ -123,9 +124,8 @@ gchar* vala_typeregister_function_get_class_finalize_func_name (ValaTypeRegister
 gchar* vala_typeregister_function_get_instance_struct_size (ValaTypeRegisterFunction* self);
 gchar* vala_typeregister_function_get_instance_init_func_name (ValaTypeRegisterFunction* self);
 ValaCCodeFragment* vala_typeregister_function_get_type_interface_init_declaration (ValaTypeRegisterFunction* self);
-ValaCodeContext* vala_typeregister_function_get_context (ValaTypeRegisterFunction* self);
-gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node);
 gchar* vala_typeregister_function_get_parent_type_name (ValaTypeRegisterFunction* self);
+gchar* vala_ccode_base_module_get_ccode_name (ValaCodeNode* node);
 gchar* vala_ccode_base_module_get_ccode_dup_function (ValaTypeSymbol* sym);
 gchar* vala_ccode_base_module_get_ccode_free_function (ValaTypeSymbol* sym);
 ValaCCodeConstant* vala_ccode_base_module_get_enum_value_canonical_cconstant (ValaEnumValue* ev);
@@ -194,51 +194,47 @@ void vala_typeregister_function_init_from_type (ValaTypeRegisterFunction* self,
        gboolean _tmp47_ = FALSE;
        gchar* type_value_table_decl_name = NULL;
        ValaCCodeBlock* type_init = NULL;
-       ValaCCodeBlock* _tmp102_ = NULL;
-       gboolean _tmp103_ = FALSE;
-       ValaTypeSymbol* _tmp129_ = NULL;
-       ValaTypeSymbol* _tmp130_ = NULL;
-       gboolean _tmp131_ = FALSE;
-       ValaCCodeBlock* _tmp170_ = NULL;
-       ValaCCodeFragment* _tmp171_ = NULL;
-       ValaCCodeFragment* _tmp172_ = NULL;
-       gboolean _tmp173_ = FALSE;
-       gboolean _tmp174_ = FALSE;
-       ValaClass* _tmp175_ = NULL;
+       ValaCCodeBlock* _tmp114_ = NULL;
+       gboolean _tmp115_ = FALSE;
+       ValaTypeSymbol* _tmp141_ = NULL;
+       ValaTypeSymbol* _tmp142_ = NULL;
+       gboolean _tmp143_ = FALSE;
+       ValaCCodeBlock* _tmp182_ = NULL;
+       ValaCCodeFragment* _tmp183_ = NULL;
+       ValaCCodeFragment* _tmp184_ = NULL;
        ValaCCodeFunctionCall* reg_call = NULL;
-       ValaTypeSymbol* _tmp211_ = NULL;
-       ValaTypeSymbol* _tmp212_ = NULL;
-       gboolean _tmp213_ = FALSE;
-       ValaCCodeFunctionCall* _tmp260_ = NULL;
-       ValaTypeSymbol* _tmp261_ = NULL;
-       ValaTypeSymbol* _tmp262_ = NULL;
-       gchar* _tmp263_ = NULL;
-       gchar* _tmp264_ = NULL;
-       gchar* _tmp265_ = NULL;
-       gchar* _tmp266_ = NULL;
-       ValaCCodeConstant* _tmp267_ = NULL;
-       ValaCCodeConstant* _tmp268_ = NULL;
-       ValaTypeSymbol* _tmp269_ = NULL;
-       ValaTypeSymbol* _tmp270_ = NULL;
-       gboolean _tmp271_ = FALSE;
-       gboolean _tmp366_ = FALSE;
-       gboolean _tmp367_ = FALSE;
-       gboolean _tmp386_ = FALSE;
-       gboolean _tmp387_ = FALSE;
-       ValaClass* _tmp388_ = NULL;
-       gboolean _tmp414_ = FALSE;
-       gboolean _tmp417_ = FALSE;
-       gboolean _tmp474_ = FALSE;
-       ValaCCodeFunction* _tmp489_ = NULL;
-       ValaCCodeFragment* _tmp490_ = NULL;
-       ValaCCodeFunction* _tmp491_ = NULL;
-       ValaCCodeFunction* _tmp492_ = NULL;
-       ValaCCodeFunction* _tmp493_ = NULL;
-       ValaCCodeFunction* _tmp494_ = NULL;
-       ValaCCodeFunction* _tmp495_ = NULL;
-       ValaCCodeBlock* _tmp496_ = NULL;
-       ValaCCodeFragment* _tmp497_ = NULL;
-       ValaCCodeFunction* _tmp498_ = NULL;
+       ValaTypeSymbol* _tmp185_ = NULL;
+       ValaTypeSymbol* _tmp186_ = NULL;
+       gboolean _tmp187_ = FALSE;
+       ValaCCodeFunctionCall* _tmp234_ = NULL;
+       ValaTypeSymbol* _tmp235_ = NULL;
+       ValaTypeSymbol* _tmp236_ = NULL;
+       gchar* _tmp237_ = NULL;
+       gchar* _tmp238_ = NULL;
+       gchar* _tmp239_ = NULL;
+       gchar* _tmp240_ = NULL;
+       ValaCCodeConstant* _tmp241_ = NULL;
+       ValaCCodeConstant* _tmp242_ = NULL;
+       ValaTypeSymbol* _tmp243_ = NULL;
+       ValaTypeSymbol* _tmp244_ = NULL;
+       gboolean _tmp245_ = FALSE;
+       gboolean _tmp340_ = FALSE;
+       gboolean _tmp341_ = FALSE;
+       gboolean _tmp360_ = FALSE;
+       ValaClass* _tmp361_ = NULL;
+       gboolean _tmp385_ = FALSE;
+       gboolean _tmp388_ = FALSE;
+       gboolean _tmp445_ = FALSE;
+       ValaCCodeFunction* _tmp460_ = NULL;
+       ValaCCodeFragment* _tmp461_ = NULL;
+       ValaCCodeFunction* _tmp462_ = NULL;
+       ValaCCodeFunction* _tmp463_ = NULL;
+       ValaCCodeFunction* _tmp464_ = NULL;
+       ValaCCodeFunction* _tmp465_ = NULL;
+       ValaCCodeFunction* _tmp466_ = NULL;
+       ValaCCodeBlock* _tmp467_ = NULL;
+       ValaCCodeFragment* _tmp468_ = NULL;
+       ValaCCodeFunction* _tmp469_ = NULL;
        g_return_if_fail (self != NULL);
        _tmp0_ = plugin;
        use_thread_safe = !_tmp0_;
@@ -405,1222 +401,1141 @@ void vala_typeregister_function_init_from_type (ValaTypeRegisterFunction* self,
                        _tmp63_ = _tmp62_;
                        vala_ccode_function_set_attributes (_tmp59_, _tmp63_);
                        _g_free0 (_tmp63_);
+               } else {
+                       gboolean _tmp64_ = FALSE;
+                       ValaCodeContext* _tmp65_ = NULL;
+                       gboolean _tmp66_ = FALSE;
+                       gboolean _tmp67_ = FALSE;
+                       _tmp65_ = self->priv->_context;
+                       _tmp66_ = vala_code_context_get_hide_internal (_tmp65_);
+                       _tmp67_ = _tmp66_;
+                       if (_tmp67_) {
+                               ValaSymbolAccessibility _tmp68_ = 0;
+                               _tmp68_ = vala_typeregister_function_get_accessibility (self);
+                               _tmp64_ = _tmp68_ == VALA_SYMBOL_ACCESSIBILITY_INTERNAL;
+                       } else {
+                               _tmp64_ = FALSE;
+                       }
+                       if (_tmp64_) {
+                               ValaCCodeFunction* _tmp69_ = NULL;
+                               ValaCCodeFunction* _tmp70_ = NULL;
+                               ValaCCodeFunction* _tmp71_ = NULL;
+                               const gchar* _tmp72_ = NULL;
+                               const gchar* _tmp73_ = NULL;
+                               gchar* _tmp74_ = NULL;
+                               gchar* _tmp75_ = NULL;
+                               _tmp69_ = fun;
+                               vala_ccode_function_set_modifiers (_tmp69_, VALA_CCODE_MODIFIERS_INTERNAL);
+                               _tmp70_ = fun;
+                               _tmp71_ = fun;
+                               _tmp72_ = vala_ccode_function_get_attributes (_tmp71_);
+                               _tmp73_ = _tmp72_;
+                               _tmp74_ = g_strconcat (_tmp73_, " G_GNUC_UNUSED", NULL);
+                               _tmp75_ = _tmp74_;
+                               vala_ccode_function_set_attributes (_tmp71_, _tmp75_);
+                               _g_free0 (_tmp75_);
+                       }
                }
        } else {
-               ValaTypeSymbol* _tmp64_ = NULL;
-               ValaTypeSymbol* _tmp65_ = NULL;
-               gchar* _tmp66_ = NULL;
-               gchar* _tmp67_ = NULL;
-               gchar* _tmp68_ = NULL;
-               gchar* _tmp69_ = NULL;
-               ValaCCodeFunction* _tmp70_ = NULL;
-               ValaCCodeFunction* _tmp71_ = NULL;
-               ValaCCodeParameter* _tmp72_ = NULL;
-               ValaCCodeParameter* _tmp73_ = NULL;
-               ValaCCodeFunction* get_fun = NULL;
-               ValaTypeSymbol* _tmp74_ = NULL;
-               ValaTypeSymbol* _tmp75_ = NULL;
-               gchar* _tmp76_ = NULL;
-               gchar* _tmp77_ = NULL;
+               ValaTypeSymbol* _tmp76_ = NULL;
+               ValaTypeSymbol* _tmp77_ = NULL;
                gchar* _tmp78_ = NULL;
                gchar* _tmp79_ = NULL;
-               ValaCCodeFunction* _tmp80_ = NULL;
-               ValaCCodeFunction* _tmp81_ = NULL;
+               gchar* _tmp80_ = NULL;
+               gchar* _tmp81_ = NULL;
                ValaCCodeFunction* _tmp82_ = NULL;
                ValaCCodeFunction* _tmp83_ = NULL;
-               ValaCCodeFragment* _tmp84_ = NULL;
-               ValaCCodeFunction* _tmp85_ = NULL;
-               ValaCCodeFunction* _tmp86_ = NULL;
-               ValaCCodeFunction* _tmp87_ = NULL;
-               ValaCCodeFunction* _tmp88_ = NULL;
-               ValaCCodeFunction* _tmp89_ = NULL;
-               ValaCCodeBlock* _tmp90_ = NULL;
-               ValaCCodeBlock* _tmp91_ = NULL;
+               ValaCCodeParameter* _tmp84_ = NULL;
+               ValaCCodeParameter* _tmp85_ = NULL;
+               ValaCCodeFunction* get_fun = NULL;
+               ValaTypeSymbol* _tmp86_ = NULL;
+               ValaTypeSymbol* _tmp87_ = NULL;
+               gchar* _tmp88_ = NULL;
+               gchar* _tmp89_ = NULL;
+               gchar* _tmp90_ = NULL;
+               gchar* _tmp91_ = NULL;
                ValaCCodeFunction* _tmp92_ = NULL;
-               ValaCCodeBlock* _tmp93_ = NULL;
-               ValaCCodeBlock* _tmp94_ = NULL;
-               const gchar* _tmp95_ = NULL;
-               ValaCCodeIdentifier* _tmp96_ = NULL;
-               ValaCCodeIdentifier* _tmp97_ = NULL;
-               ValaCCodeReturnStatement* _tmp98_ = NULL;
-               ValaCCodeReturnStatement* _tmp99_ = NULL;
-               ValaCCodeFragment* _tmp100_ = NULL;
+               ValaCCodeFunction* _tmp93_ = NULL;
+               ValaCCodeFunction* _tmp94_ = NULL;
+               ValaCCodeFunction* _tmp95_ = NULL;
+               ValaCCodeFragment* _tmp96_ = NULL;
+               ValaCCodeFunction* _tmp97_ = NULL;
+               ValaCCodeFunction* _tmp98_ = NULL;
+               ValaCCodeFunction* _tmp99_ = NULL;
+               ValaCCodeFunction* _tmp100_ = NULL;
                ValaCCodeFunction* _tmp101_ = NULL;
-               _tmp64_ = vala_typeregister_function_get_type_declaration (self);
-               _tmp65_ = _tmp64_;
-               _tmp66_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp65_, NULL);
-               _tmp67_ = _tmp66_;
-               _tmp68_ = g_strdup_printf ("%s_register_type", _tmp67_);
-               _tmp69_ = _tmp68_;
-               _tmp70_ = vala_ccode_function_new (_tmp69_, "GType");
-               _vala_ccode_node_unref0 (fun);
-               fun = _tmp70_;
-               _g_free0 (_tmp69_);
-               _g_free0 (_tmp67_);
-               _vala_code_node_unref0 (_tmp65_);
-               _tmp71_ = fun;
-               _tmp72_ = vala_ccode_parameter_new ("module", "GTypeModule *");
-               _tmp73_ = _tmp72_;
-               vala_ccode_function_add_parameter (_tmp71_, _tmp73_);
-               _vala_ccode_node_unref0 (_tmp73_);
-               _tmp74_ = vala_typeregister_function_get_type_declaration (self);
-               _tmp75_ = _tmp74_;
-               _tmp76_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp75_, NULL);
+               ValaCCodeBlock* _tmp102_ = NULL;
+               ValaCCodeBlock* _tmp103_ = NULL;
+               ValaCCodeFunction* _tmp104_ = NULL;
+               ValaCCodeBlock* _tmp105_ = NULL;
+               ValaCCodeBlock* _tmp106_ = NULL;
+               const gchar* _tmp107_ = NULL;
+               ValaCCodeIdentifier* _tmp108_ = NULL;
+               ValaCCodeIdentifier* _tmp109_ = NULL;
+               ValaCCodeReturnStatement* _tmp110_ = NULL;
+               ValaCCodeReturnStatement* _tmp111_ = NULL;
+               ValaCCodeFragment* _tmp112_ = NULL;
+               ValaCCodeFunction* _tmp113_ = NULL;
+               _tmp76_ = vala_typeregister_function_get_type_declaration (self);
                _tmp77_ = _tmp76_;
-               _tmp78_ = g_strdup_printf ("%s_get_type", _tmp77_);
+               _tmp78_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp77_, NULL);
                _tmp79_ = _tmp78_;
-               _tmp80_ = vala_ccode_function_new (_tmp79_, "GType");
+               _tmp80_ = g_strdup_printf ("%s_register_type", _tmp79_);
                _tmp81_ = _tmp80_;
+               _tmp82_ = vala_ccode_function_new (_tmp81_, "GType");
+               _vala_ccode_node_unref0 (fun);
+               fun = _tmp82_;
+               _g_free0 (_tmp81_);
                _g_free0 (_tmp79_);
-               _g_free0 (_tmp77_);
-               _vala_code_node_unref0 (_tmp75_);
-               get_fun = _tmp81_;
-               _tmp82_ = get_fun;
-               vala_ccode_function_set_attributes (_tmp82_, "G_GNUC_CONST");
-               _tmp83_ = get_fun;
-               vala_ccode_function_set_is_declaration (_tmp83_, TRUE);
-               _tmp84_ = self->priv->declaration_fragment;
-               _tmp85_ = get_fun;
-               _tmp86_ = vala_ccode_function_copy (_tmp85_);
+               _vala_code_node_unref0 (_tmp77_);
+               _tmp83_ = fun;
+               _tmp84_ = vala_ccode_parameter_new ("module", "GTypeModule *");
+               _tmp85_ = _tmp84_;
+               vala_ccode_function_add_parameter (_tmp83_, _tmp85_);
+               _vala_ccode_node_unref0 (_tmp85_);
+               _tmp86_ = vala_typeregister_function_get_type_declaration (self);
                _tmp87_ = _tmp86_;
-               vala_ccode_fragment_append (_tmp84_, (ValaCCodeNode*) _tmp87_);
-               _vala_ccode_node_unref0 (_tmp87_);
-               _tmp88_ = get_fun;
-               vala_ccode_function_set_is_declaration (_tmp88_, FALSE);
-               _tmp89_ = get_fun;
-               _tmp90_ = vala_ccode_block_new ();
+               _tmp88_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp87_, NULL);
+               _tmp89_ = _tmp88_;
+               _tmp90_ = g_strdup_printf ("%s_get_type", _tmp89_);
                _tmp91_ = _tmp90_;
-               vala_ccode_function_set_block (_tmp89_, _tmp91_);
-               _vala_ccode_node_unref0 (_tmp91_);
-               _tmp92_ = get_fun;
-               _tmp93_ = vala_ccode_function_get_block (_tmp92_);
-               _tmp94_ = _tmp93_;
-               _tmp95_ = type_id_name;
-               _tmp96_ = vala_ccode_identifier_new (_tmp95_);
-               _tmp97_ = _tmp96_;
-               _tmp98_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp97_);
+               _tmp92_ = vala_ccode_function_new (_tmp91_, "GType");
+               _tmp93_ = _tmp92_;
+               _g_free0 (_tmp91_);
+               _g_free0 (_tmp89_);
+               _vala_code_node_unref0 (_tmp87_);
+               get_fun = _tmp93_;
+               _tmp94_ = get_fun;
+               vala_ccode_function_set_attributes (_tmp94_, "G_GNUC_CONST");
+               _tmp95_ = get_fun;
+               vala_ccode_function_set_is_declaration (_tmp95_, TRUE);
+               _tmp96_ = self->priv->declaration_fragment;
+               _tmp97_ = get_fun;
+               _tmp98_ = vala_ccode_function_copy (_tmp97_);
                _tmp99_ = _tmp98_;
-               vala_ccode_block_add_statement (_tmp94_, (ValaCCodeNode*) _tmp99_);
+               vala_ccode_fragment_append (_tmp96_, (ValaCCodeNode*) _tmp99_);
                _vala_ccode_node_unref0 (_tmp99_);
-               _vala_ccode_node_unref0 (_tmp97_);
-               _tmp100_ = self->priv->definition_fragment;
+               _tmp100_ = get_fun;
+               vala_ccode_function_set_is_declaration (_tmp100_, FALSE);
                _tmp101_ = get_fun;
-               vala_ccode_fragment_append (_tmp100_, (ValaCCodeNode*) _tmp101_);
+               _tmp102_ = vala_ccode_block_new ();
+               _tmp103_ = _tmp102_;
+               vala_ccode_function_set_block (_tmp101_, _tmp103_);
+               _vala_ccode_node_unref0 (_tmp103_);
+               _tmp104_ = get_fun;
+               _tmp105_ = vala_ccode_function_get_block (_tmp104_);
+               _tmp106_ = _tmp105_;
+               _tmp107_ = type_id_name;
+               _tmp108_ = vala_ccode_identifier_new (_tmp107_);
+               _tmp109_ = _tmp108_;
+               _tmp110_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp109_);
+               _tmp111_ = _tmp110_;
+               vala_ccode_block_add_statement (_tmp106_, (ValaCCodeNode*) _tmp111_);
+               _vala_ccode_node_unref0 (_tmp111_);
+               _vala_ccode_node_unref0 (_tmp109_);
+               _tmp112_ = self->priv->definition_fragment;
+               _tmp113_ = get_fun;
+               vala_ccode_fragment_append (_tmp112_, (ValaCCodeNode*) _tmp113_);
                _vala_ccode_node_unref0 (get_fun);
        }
        type_value_table_decl_name = NULL;
-       _tmp102_ = vala_ccode_block_new ();
-       type_init = _tmp102_;
-       _tmp103_ = fundamental;
-       if (_tmp103_) {
+       _tmp114_ = vala_ccode_block_new ();
+       type_init = _tmp114_;
+       _tmp115_ = fundamental;
+       if (_tmp115_) {
                ValaCCodeDeclaration* cgtypetabledecl = NULL;
-               ValaCCodeDeclaration* _tmp104_ = NULL;
-               ValaCCodeDeclaration* _tmp105_ = NULL;
-               ValaCCodeDeclaration* _tmp106_ = NULL;
-               gchar* _tmp107_ = NULL;
-               gchar* _tmp108_ = NULL;
-               gchar* _tmp109_ = NULL;
-               gchar* _tmp110_ = NULL;
-               gchar* _tmp111_ = NULL;
-               gchar* _tmp112_ = NULL;
-               gchar* _tmp113_ = NULL;
-               gchar* _tmp114_ = NULL;
-               gchar* _tmp115_ = NULL;
-               gchar* _tmp116_ = NULL;
-               gchar* _tmp117_ = NULL;
-               gchar* _tmp118_ = NULL;
+               ValaCCodeDeclaration* _tmp116_ = NULL;
+               ValaCCodeDeclaration* _tmp117_ = NULL;
+               ValaCCodeDeclaration* _tmp118_ = NULL;
                gchar* _tmp119_ = NULL;
                gchar* _tmp120_ = NULL;
-               ValaCCodeConstant* _tmp121_ = NULL;
-               ValaCCodeConstant* _tmp122_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp123_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp124_ = NULL;
+               gchar* _tmp121_ = NULL;
+               gchar* _tmp122_ = NULL;
+               gchar* _tmp123_ = NULL;
+               gchar* _tmp124_ = NULL;
                gchar* _tmp125_ = NULL;
-               ValaCCodeBlock* _tmp126_ = NULL;
-               ValaCCodeDeclaration* _tmp127_ = NULL;
-               _tmp104_ = vala_ccode_declaration_new ("const GTypeValueTable");
-               cgtypetabledecl = _tmp104_;
-               _tmp105_ = cgtypetabledecl;
-               vala_ccode_declaration_set_modifiers (_tmp105_, VALA_CCODE_MODIFIERS_STATIC);
-               _tmp106_ = cgtypetabledecl;
-               _tmp107_ = vala_typeregister_function_get_gtype_value_table_init_function_name (self);
-               _tmp108_ = _tmp107_;
-               _tmp109_ = vala_typeregister_function_get_gtype_value_table_free_function_name (self);
-               _tmp110_ = _tmp109_;
-               _tmp111_ = vala_typeregister_function_get_gtype_value_table_copy_function_name (self);
-               _tmp112_ = _tmp111_;
-               _tmp113_ = vala_typeregister_function_get_gtype_value_table_peek_pointer_function_name (self);
-               _tmp114_ = _tmp113_;
-               _tmp115_ = vala_typeregister_function_get_gtype_value_table_collect_value_function_name (self);
-               _tmp116_ = _tmp115_;
-               _tmp117_ = vala_typeregister_function_get_gtype_value_table_lcopy_value_function_name (self);
-               _tmp118_ = _tmp117_;
-               _tmp119_ = g_strdup_printf ("{ %s, %s, %s, %s, \"p\", %s, \"p\", %s }", _tmp108_, _tmp110_, _tmp112_, _tmp114_, _tmp116_, _tmp118_);
+               gchar* _tmp126_ = NULL;
+               gchar* _tmp127_ = NULL;
+               gchar* _tmp128_ = NULL;
+               gchar* _tmp129_ = NULL;
+               gchar* _tmp130_ = NULL;
+               gchar* _tmp131_ = NULL;
+               gchar* _tmp132_ = NULL;
+               ValaCCodeConstant* _tmp133_ = NULL;
+               ValaCCodeConstant* _tmp134_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp135_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp136_ = NULL;
+               gchar* _tmp137_ = NULL;
+               ValaCCodeBlock* _tmp138_ = NULL;
+               ValaCCodeDeclaration* _tmp139_ = NULL;
+               _tmp116_ = vala_ccode_declaration_new ("const GTypeValueTable");
+               cgtypetabledecl = _tmp116_;
+               _tmp117_ = cgtypetabledecl;
+               vala_ccode_declaration_set_modifiers (_tmp117_, VALA_CCODE_MODIFIERS_STATIC);
+               _tmp118_ = cgtypetabledecl;
+               _tmp119_ = vala_typeregister_function_get_gtype_value_table_init_function_name (self);
                _tmp120_ = _tmp119_;
-               _tmp121_ = vala_ccode_constant_new (_tmp120_);
+               _tmp121_ = vala_typeregister_function_get_gtype_value_table_free_function_name (self);
                _tmp122_ = _tmp121_;
-               _tmp123_ = vala_ccode_variable_declarator_new ("g_define_type_value_table", (ValaCCodeExpression*) _tmp122_, NULL);
+               _tmp123_ = vala_typeregister_function_get_gtype_value_table_copy_function_name (self);
                _tmp124_ = _tmp123_;
-               vala_ccode_declaration_add_declarator (_tmp106_, (ValaCCodeDeclarator*) _tmp124_);
-               _vala_ccode_node_unref0 (_tmp124_);
-               _vala_ccode_node_unref0 (_tmp122_);
+               _tmp125_ = vala_typeregister_function_get_gtype_value_table_peek_pointer_function_name (self);
+               _tmp126_ = _tmp125_;
+               _tmp127_ = vala_typeregister_function_get_gtype_value_table_collect_value_function_name (self);
+               _tmp128_ = _tmp127_;
+               _tmp129_ = vala_typeregister_function_get_gtype_value_table_lcopy_value_function_name (self);
+               _tmp130_ = _tmp129_;
+               _tmp131_ = g_strdup_printf ("{ %s, %s, %s, %s, \"p\", %s, \"p\", %s }", _tmp120_, _tmp122_, _tmp124_, _tmp126_, _tmp128_, _tmp130_);
+               _tmp132_ = _tmp131_;
+               _tmp133_ = vala_ccode_constant_new (_tmp132_);
+               _tmp134_ = _tmp133_;
+               _tmp135_ = vala_ccode_variable_declarator_new ("g_define_type_value_table", (ValaCCodeExpression*) _tmp134_, NULL);
+               _tmp136_ = _tmp135_;
+               vala_ccode_declaration_add_declarator (_tmp118_, (ValaCCodeDeclarator*) _tmp136_);
+               _vala_ccode_node_unref0 (_tmp136_);
+               _vala_ccode_node_unref0 (_tmp134_);
+               _g_free0 (_tmp132_);
+               _g_free0 (_tmp130_);
+               _g_free0 (_tmp128_);
+               _g_free0 (_tmp126_);
+               _g_free0 (_tmp124_);
+               _g_free0 (_tmp122_);
                _g_free0 (_tmp120_);
-               _g_free0 (_tmp118_);
-               _g_free0 (_tmp116_);
-               _g_free0 (_tmp114_);
-               _g_free0 (_tmp112_);
-               _g_free0 (_tmp110_);
-               _g_free0 (_tmp108_);
-               _tmp125_ = g_strdup ("&g_define_type_value_table");
+               _tmp137_ = g_strdup ("&g_define_type_value_table");
                _g_free0 (type_value_table_decl_name);
-               type_value_table_decl_name = _tmp125_;
-               _tmp126_ = type_init;
-               _tmp127_ = cgtypetabledecl;
-               vala_ccode_block_add_statement (_tmp126_, (ValaCCodeNode*) _tmp127_);
+               type_value_table_decl_name = _tmp137_;
+               _tmp138_ = type_init;
+               _tmp139_ = cgtypetabledecl;
+               vala_ccode_block_add_statement (_tmp138_, (ValaCCodeNode*) _tmp139_);
                _vala_ccode_node_unref0 (cgtypetabledecl);
        } else {
-               gchar* _tmp128_ = NULL;
-               _tmp128_ = g_strdup ("NULL");
+               gchar* _tmp140_ = NULL;
+               _tmp140_ = g_strdup ("NULL");
                _g_free0 (type_value_table_decl_name);
-               type_value_table_decl_name = _tmp128_;
+               type_value_table_decl_name = _tmp140_;
        }
-       _tmp129_ = vala_typeregister_function_get_type_declaration (self);
-       _tmp130_ = _tmp129_;
-       _tmp131_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp130_, VALA_TYPE_OBJECT_TYPE_SYMBOL);
-       _vala_code_node_unref0 (_tmp130_);
-       if (_tmp131_) {
+       _tmp141_ = vala_typeregister_function_get_type_declaration (self);
+       _tmp142_ = _tmp141_;
+       _tmp143_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp142_, VALA_TYPE_OBJECT_TYPE_SYMBOL);
+       _vala_code_node_unref0 (_tmp142_);
+       if (_tmp143_) {
                ValaCCodeDeclaration* ctypedecl = NULL;
-               ValaCCodeDeclaration* _tmp132_ = NULL;
-               ValaCCodeDeclaration* _tmp133_ = NULL;
-               gchar* _tmp134_ = NULL;
-               gboolean _tmp135_ = FALSE;
-               ValaCCodeDeclaration* _tmp138_ = NULL;
-               gchar* _tmp139_ = NULL;
-               gchar* _tmp140_ = NULL;
-               gchar* _tmp141_ = NULL;
-               gchar* _tmp142_ = NULL;
-               gchar* _tmp143_ = NULL;
-               gchar* _tmp144_ = NULL;
-               gchar* _tmp145_ = NULL;
+               ValaCCodeDeclaration* _tmp144_ = NULL;
+               ValaCCodeDeclaration* _tmp145_ = NULL;
                gchar* _tmp146_ = NULL;
-               gchar* _tmp147_ = NULL;
-               gchar* _tmp148_ = NULL;
-               gchar* _tmp149_ = NULL;
-               gchar* _tmp150_ = NULL;
-               const gchar* _tmp151_ = NULL;
+               gboolean _tmp147_ = FALSE;
+               ValaCCodeDeclaration* _tmp150_ = NULL;
+               gchar* _tmp151_ = NULL;
                gchar* _tmp152_ = NULL;
                gchar* _tmp153_ = NULL;
-               ValaCCodeConstant* _tmp154_ = NULL;
-               ValaCCodeConstant* _tmp155_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp156_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp157_ = NULL;
-               ValaCCodeBlock* _tmp158_ = NULL;
-               ValaCCodeDeclaration* _tmp159_ = NULL;
-               gboolean _tmp160_ = FALSE;
-               _tmp132_ = vala_ccode_declaration_new ("const GTypeInfo");
-               ctypedecl = _tmp132_;
-               _tmp133_ = ctypedecl;
-               vala_ccode_declaration_set_modifiers (_tmp133_, VALA_CCODE_MODIFIERS_STATIC);
-               _tmp135_ = plugin;
-               if (_tmp135_) {
-                       gchar* _tmp136_ = NULL;
-                       _tmp136_ = vala_typeregister_function_get_base_finalize_func_name (self);
-                       _g_free0 (_tmp134_);
-                       _tmp134_ = _tmp136_;
+               gchar* _tmp154_ = NULL;
+               gchar* _tmp155_ = NULL;
+               gchar* _tmp156_ = NULL;
+               gchar* _tmp157_ = NULL;
+               gchar* _tmp158_ = NULL;
+               gchar* _tmp159_ = NULL;
+               gchar* _tmp160_ = NULL;
+               gchar* _tmp161_ = NULL;
+               gchar* _tmp162_ = NULL;
+               const gchar* _tmp163_ = NULL;
+               gchar* _tmp164_ = NULL;
+               gchar* _tmp165_ = NULL;
+               ValaCCodeConstant* _tmp166_ = NULL;
+               ValaCCodeConstant* _tmp167_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp168_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp169_ = NULL;
+               ValaCCodeBlock* _tmp170_ = NULL;
+               ValaCCodeDeclaration* _tmp171_ = NULL;
+               gboolean _tmp172_ = FALSE;
+               _tmp144_ = vala_ccode_declaration_new ("const GTypeInfo");
+               ctypedecl = _tmp144_;
+               _tmp145_ = ctypedecl;
+               vala_ccode_declaration_set_modifiers (_tmp145_, VALA_CCODE_MODIFIERS_STATIC);
+               _tmp147_ = plugin;
+               if (_tmp147_) {
+                       gchar* _tmp148_ = NULL;
+                       _tmp148_ = vala_typeregister_function_get_base_finalize_func_name (self);
+                       _g_free0 (_tmp146_);
+                       _tmp146_ = _tmp148_;
                } else {
-                       gchar* _tmp137_ = NULL;
-                       _tmp137_ = g_strdup ("NULL");
-                       _g_free0 (_tmp134_);
-                       _tmp134_ = _tmp137_;
+                       gchar* _tmp149_ = NULL;
+                       _tmp149_ = g_strdup ("NULL");
+                       _g_free0 (_tmp146_);
+                       _tmp146_ = _tmp149_;
                }
-               _tmp138_ = ctypedecl;
-               _tmp139_ = vala_typeregister_function_get_type_struct_name (self);
-               _tmp140_ = _tmp139_;
-               _tmp141_ = vala_typeregister_function_get_base_init_func_name (self);
-               _tmp142_ = _tmp141_;
-               _tmp143_ = vala_typeregister_function_get_class_init_func_name (self);
-               _tmp144_ = _tmp143_;
-               _tmp145_ = vala_typeregister_function_get_class_finalize_func_name (self);
-               _tmp146_ = _tmp145_;
-               _tmp147_ = vala_typeregister_function_get_instance_struct_size (self);
-               _tmp148_ = _tmp147_;
-               _tmp149_ = vala_typeregister_function_get_instance_init_func_name (self);
-               _tmp150_ = _tmp149_;
-               _tmp151_ = type_value_table_decl_name;
-               _tmp152_ = g_strdup_printf ("{ sizeof (%s), (GBaseInitFunc) %s, (GBaseFinalizeFunc) %s, (GClassInit" \
+               _tmp150_ = ctypedecl;
+               _tmp151_ = vala_typeregister_function_get_type_struct_name (self);
+               _tmp152_ = _tmp151_;
+               _tmp153_ = vala_typeregister_function_get_base_init_func_name (self);
+               _tmp154_ = _tmp153_;
+               _tmp155_ = vala_typeregister_function_get_class_init_func_name (self);
+               _tmp156_ = _tmp155_;
+               _tmp157_ = vala_typeregister_function_get_class_finalize_func_name (self);
+               _tmp158_ = _tmp157_;
+               _tmp159_ = vala_typeregister_function_get_instance_struct_size (self);
+               _tmp160_ = _tmp159_;
+               _tmp161_ = vala_typeregister_function_get_instance_init_func_name (self);
+               _tmp162_ = _tmp161_;
+               _tmp163_ = type_value_table_decl_name;
+               _tmp164_ = g_strdup_printf ("{ sizeof (%s), (GBaseInitFunc) %s, (GBaseFinalizeFunc) %s, (GClassInit" \
 "Func) %s, (GClassFinalizeFunc) %s, NULL, %s, 0, (GInstanceInitFunc) %s" \
-", %s }", _tmp140_, _tmp142_, _tmp134_, _tmp144_, _tmp146_, _tmp148_, _tmp150_, _tmp151_);
-               _tmp153_ = _tmp152_;
-               _tmp154_ = vala_ccode_constant_new (_tmp153_);
-               _tmp155_ = _tmp154_;
-               _tmp156_ = vala_ccode_variable_declarator_new ("g_define_type_info", (ValaCCodeExpression*) _tmp155_, NULL);
-               _tmp157_ = _tmp156_;
-               vala_ccode_declaration_add_declarator (_tmp138_, (ValaCCodeDeclarator*) _tmp157_);
-               _vala_ccode_node_unref0 (_tmp157_);
-               _vala_ccode_node_unref0 (_tmp155_);
-               _g_free0 (_tmp153_);
-               _g_free0 (_tmp150_);
-               _g_free0 (_tmp148_);
-               _g_free0 (_tmp146_);
-               _g_free0 (_tmp144_);
-               _g_free0 (_tmp142_);
-               _g_free0 (_tmp140_);
-               _tmp158_ = type_init;
-               _tmp159_ = ctypedecl;
-               vala_ccode_block_add_statement (_tmp158_, (ValaCCodeNode*) _tmp159_);
-               _tmp160_ = fundamental;
-               if (_tmp160_) {
+", %s }", _tmp152_, _tmp154_, _tmp146_, _tmp156_, _tmp158_, _tmp160_, _tmp162_, _tmp163_);
+               _tmp165_ = _tmp164_;
+               _tmp166_ = vala_ccode_constant_new (_tmp165_);
+               _tmp167_ = _tmp166_;
+               _tmp168_ = vala_ccode_variable_declarator_new ("g_define_type_info", (ValaCCodeExpression*) _tmp167_, NULL);
+               _tmp169_ = _tmp168_;
+               vala_ccode_declaration_add_declarator (_tmp150_, (ValaCCodeDeclarator*) _tmp169_);
+               _vala_ccode_node_unref0 (_tmp169_);
+               _vala_ccode_node_unref0 (_tmp167_);
+               _g_free0 (_tmp165_);
+               _g_free0 (_tmp162_);
+               _g_free0 (_tmp160_);
+               _g_free0 (_tmp158_);
+               _g_free0 (_tmp156_);
+               _g_free0 (_tmp154_);
+               _g_free0 (_tmp152_);
+               _tmp170_ = type_init;
+               _tmp171_ = ctypedecl;
+               vala_ccode_block_add_statement (_tmp170_, (ValaCCodeNode*) _tmp171_);
+               _tmp172_ = fundamental;
+               if (_tmp172_) {
                        ValaCCodeDeclaration* ctypefundamentaldecl = NULL;
-                       ValaCCodeDeclaration* _tmp161_ = NULL;
-                       ValaCCodeDeclaration* _tmp162_ = NULL;
-                       ValaCCodeDeclaration* _tmp163_ = NULL;
-                       ValaCCodeConstant* _tmp164_ = NULL;
-                       ValaCCodeConstant* _tmp165_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp166_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp167_ = NULL;
-                       ValaCCodeBlock* _tmp168_ = NULL;
-                       ValaCCodeDeclaration* _tmp169_ = NULL;
-                       _tmp161_ = vala_ccode_declaration_new ("const GTypeFundamentalInfo");
-                       ctypefundamentaldecl = _tmp161_;
-                       _tmp162_ = ctypefundamentaldecl;
-                       vala_ccode_declaration_set_modifiers (_tmp162_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp163_ = ctypefundamentaldecl;
-                       _tmp164_ = vala_ccode_constant_new ("{ (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERI" \
+                       ValaCCodeDeclaration* _tmp173_ = NULL;
+                       ValaCCodeDeclaration* _tmp174_ = NULL;
+                       ValaCCodeDeclaration* _tmp175_ = NULL;
+                       ValaCCodeConstant* _tmp176_ = NULL;
+                       ValaCCodeConstant* _tmp177_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp178_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp179_ = NULL;
+                       ValaCCodeBlock* _tmp180_ = NULL;
+                       ValaCCodeDeclaration* _tmp181_ = NULL;
+                       _tmp173_ = vala_ccode_declaration_new ("const GTypeFundamentalInfo");
+                       ctypefundamentaldecl = _tmp173_;
+                       _tmp174_ = ctypefundamentaldecl;
+                       vala_ccode_declaration_set_modifiers (_tmp174_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp175_ = ctypefundamentaldecl;
+                       _tmp176_ = vala_ccode_constant_new ("{ (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERI" \
 "VABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }");
-                       _tmp165_ = _tmp164_;
-                       _tmp166_ = vala_ccode_variable_declarator_new ("g_define_type_fundamental_info", (ValaCCodeExpression*) _tmp165_, NULL);
-                       _tmp167_ = _tmp166_;
-                       vala_ccode_declaration_add_declarator (_tmp163_, (ValaCCodeDeclarator*) _tmp167_);
-                       _vala_ccode_node_unref0 (_tmp167_);
-                       _vala_ccode_node_unref0 (_tmp165_);
-                       _tmp168_ = type_init;
-                       _tmp169_ = ctypefundamentaldecl;
-                       vala_ccode_block_add_statement (_tmp168_, (ValaCCodeNode*) _tmp169_);
+                       _tmp177_ = _tmp176_;
+                       _tmp178_ = vala_ccode_variable_declarator_new ("g_define_type_fundamental_info", (ValaCCodeExpression*) _tmp177_, NULL);
+                       _tmp179_ = _tmp178_;
+                       vala_ccode_declaration_add_declarator (_tmp175_, (ValaCCodeDeclarator*) _tmp179_);
+                       _vala_ccode_node_unref0 (_tmp179_);
+                       _vala_ccode_node_unref0 (_tmp177_);
+                       _tmp180_ = type_init;
+                       _tmp181_ = ctypefundamentaldecl;
+                       vala_ccode_block_add_statement (_tmp180_, (ValaCCodeNode*) _tmp181_);
                        _vala_ccode_node_unref0 (ctypefundamentaldecl);
                }
-               _g_free0 (_tmp134_);
+               _g_free0 (_tmp146_);
                _vala_ccode_node_unref0 (ctypedecl);
        }
-       _tmp170_ = type_init;
-       _tmp171_ = vala_typeregister_function_get_type_interface_init_declaration (self);
-       _tmp172_ = _tmp171_;
-       vala_ccode_block_add_statement (_tmp170_, (ValaCCodeNode*) _tmp172_);
-       _vala_ccode_node_unref0 (_tmp172_);
-       _tmp175_ = cl;
-       if (_tmp175_ != NULL) {
-               ValaClass* _tmp176_ = NULL;
-               gboolean _tmp177_ = FALSE;
-               gboolean _tmp178_ = FALSE;
-               _tmp176_ = cl;
-               _tmp177_ = vala_class_get_has_class_private_fields (_tmp176_);
-               _tmp178_ = _tmp177_;
-               _tmp174_ = _tmp178_;
-       } else {
-               _tmp174_ = FALSE;
-       }
-       if (_tmp174_) {
-               ValaCodeContext* _tmp179_ = NULL;
-               gboolean _tmp180_ = FALSE;
-               _tmp179_ = self->priv->_context;
-               _tmp180_ = vala_code_context_require_glib_version (_tmp179_, 2, 24);
-               _tmp173_ = !_tmp180_;
-       } else {
-               _tmp173_ = FALSE;
-       }
-       if (_tmp173_) {
-               ValaCCodeFunctionCall* quark_reg_call = NULL;
-               gboolean _tmp181_ = FALSE;
-               ValaCCodeFunctionCall* _tmp188_ = NULL;
-               ValaTypeSymbol* _tmp189_ = NULL;
-               ValaTypeSymbol* _tmp190_ = NULL;
-               gchar* _tmp191_ = NULL;
-               gchar* _tmp192_ = NULL;
-               gchar* _tmp193_ = NULL;
-               gchar* _tmp194_ = NULL;
-               ValaCCodeConstant* _tmp195_ = NULL;
-               ValaCCodeConstant* _tmp196_ = NULL;
-               ValaCCodeBlock* _tmp197_ = NULL;
-               ValaTypeSymbol* _tmp198_ = NULL;
-               ValaTypeSymbol* _tmp199_ = NULL;
-               gchar* _tmp200_ = NULL;
-               gchar* _tmp201_ = NULL;
-               gchar* _tmp202_ = NULL;
-               gchar* _tmp203_ = NULL;
-               ValaCCodeIdentifier* _tmp204_ = NULL;
-               ValaCCodeIdentifier* _tmp205_ = NULL;
-               ValaCCodeFunctionCall* _tmp206_ = NULL;
-               ValaCCodeAssignment* _tmp207_ = NULL;
-               ValaCCodeAssignment* _tmp208_ = NULL;
-               ValaCCodeExpressionStatement* _tmp209_ = NULL;
-               ValaCCodeExpressionStatement* _tmp210_ = NULL;
-               _tmp181_ = plugin;
-               if (_tmp181_) {
-                       ValaCCodeIdentifier* _tmp182_ = NULL;
-                       ValaCCodeIdentifier* _tmp183_ = NULL;
-                       ValaCCodeFunctionCall* _tmp184_ = NULL;
-                       _tmp182_ = vala_ccode_identifier_new ("g_quark_from_string");
-                       _tmp183_ = _tmp182_;
-                       _tmp184_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp183_);
-                       _vala_ccode_node_unref0 (quark_reg_call);
-                       quark_reg_call = _tmp184_;
-                       _vala_ccode_node_unref0 (_tmp183_);
-               } else {
-                       ValaCCodeIdentifier* _tmp185_ = NULL;
-                       ValaCCodeIdentifier* _tmp186_ = NULL;
-                       ValaCCodeFunctionCall* _tmp187_ = NULL;
-                       _tmp185_ = vala_ccode_identifier_new ("g_quark_from_static_string");
-                       _tmp186_ = _tmp185_;
-                       _tmp187_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp186_);
-                       _vala_ccode_node_unref0 (quark_reg_call);
-                       quark_reg_call = _tmp187_;
-                       _vala_ccode_node_unref0 (_tmp186_);
-               }
-               _tmp188_ = quark_reg_call;
-               _tmp189_ = vala_typeregister_function_get_type_declaration (self);
-               _tmp190_ = _tmp189_;
-               _tmp191_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp190_);
-               _tmp192_ = _tmp191_;
-               _tmp193_ = g_strdup_printf ("\"Vala%sClassPrivate\"", _tmp192_);
-               _tmp194_ = _tmp193_;
-               _tmp195_ = vala_ccode_constant_new (_tmp194_);
-               _tmp196_ = _tmp195_;
-               vala_ccode_function_call_add_argument (_tmp188_, (ValaCCodeExpression*) _tmp196_);
-               _vala_ccode_node_unref0 (_tmp196_);
-               _g_free0 (_tmp194_);
-               _g_free0 (_tmp192_);
-               _vala_code_node_unref0 (_tmp190_);
-               _tmp197_ = type_init;
-               _tmp198_ = vala_typeregister_function_get_type_declaration (self);
-               _tmp199_ = _tmp198_;
-               _tmp200_ = vala_ccode_base_module_get_ccode_lower_case_name ((ValaCodeNode*) _tmp199_, NULL);
-               _tmp201_ = _tmp200_;
-               _tmp202_ = g_strdup_printf ("_vala_%s_class_private_quark", _tmp201_);
-               _tmp203_ = _tmp202_;
-               _tmp204_ = vala_ccode_identifier_new (_tmp203_);
-               _tmp205_ = _tmp204_;
-               _tmp206_ = quark_reg_call;
-               _tmp207_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp205_, (ValaCCodeExpression*) _tmp206_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
-               _tmp208_ = _tmp207_;
-               _tmp209_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp208_);
-               _tmp210_ = _tmp209_;
-               vala_ccode_block_add_statement (_tmp197_, (ValaCCodeNode*) _tmp210_);
-               _vala_ccode_node_unref0 (_tmp210_);
-               _vala_ccode_node_unref0 (_tmp208_);
-               _vala_ccode_node_unref0 (_tmp205_);
-               _g_free0 (_tmp203_);
-               _g_free0 (_tmp201_);
-               _vala_code_node_unref0 (_tmp199_);
-               _vala_ccode_node_unref0 (quark_reg_call);
-       }
-       _tmp211_ = vala_typeregister_function_get_type_declaration (self);
-       _tmp212_ = _tmp211_;
-       _tmp213_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp212_, VALA_TYPE_STRUCT);
-       _vala_code_node_unref0 (_tmp212_);
-       if (_tmp213_) {
-               ValaCCodeIdentifier* _tmp214_ = NULL;
-               ValaCCodeIdentifier* _tmp215_ = NULL;
-               ValaCCodeFunctionCall* _tmp216_ = NULL;
-               _tmp214_ = vala_ccode_identifier_new ("g_boxed_type_register_static");
-               _tmp215_ = _tmp214_;
-               _tmp216_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp215_);
+       _tmp182_ = type_init;
+       _tmp183_ = vala_typeregister_function_get_type_interface_init_declaration (self);
+       _tmp184_ = _tmp183_;
+       vala_ccode_block_add_statement (_tmp182_, (ValaCCodeNode*) _tmp184_);
+       _vala_ccode_node_unref0 (_tmp184_);
+       _tmp185_ = vala_typeregister_function_get_type_declaration (self);
+       _tmp186_ = _tmp185_;
+       _tmp187_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp186_, VALA_TYPE_STRUCT);
+       _vala_code_node_unref0 (_tmp186_);
+       if (_tmp187_) {
+               ValaCCodeIdentifier* _tmp188_ = NULL;
+               ValaCCodeIdentifier* _tmp189_ = NULL;
+               ValaCCodeFunctionCall* _tmp190_ = NULL;
+               _tmp188_ = vala_ccode_identifier_new ("g_boxed_type_register_static");
+               _tmp189_ = _tmp188_;
+               _tmp190_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp189_);
                _vala_ccode_node_unref0 (reg_call);
-               reg_call = _tmp216_;
-               _vala_ccode_node_unref0 (_tmp215_);
+               reg_call = _tmp190_;
+               _vala_ccode_node_unref0 (_tmp189_);
        } else {
-               ValaTypeSymbol* _tmp217_ = NULL;
-               ValaTypeSymbol* _tmp218_ = NULL;
-               gboolean _tmp219_ = FALSE;
-               _tmp217_ = vala_typeregister_function_get_type_declaration (self);
-               _tmp218_ = _tmp217_;
-               _tmp219_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp218_, VALA_TYPE_ENUM);
-               _vala_code_node_unref0 (_tmp218_);
-               if (_tmp219_) {
+               ValaTypeSymbol* _tmp191_ = NULL;
+               ValaTypeSymbol* _tmp192_ = NULL;
+               gboolean _tmp193_ = FALSE;
+               _tmp191_ = vala_typeregister_function_get_type_declaration (self);
+               _tmp192_ = _tmp191_;
+               _tmp193_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp192_, VALA_TYPE_ENUM);
+               _vala_code_node_unref0 (_tmp192_);
+               if (_tmp193_) {
                        ValaEnum* en = NULL;
-                       ValaTypeSymbol* _tmp220_ = NULL;
-                       ValaEnum* _tmp221_ = NULL;
-                       ValaEnum* _tmp222_ = NULL;
-                       gboolean _tmp223_ = FALSE;
-                       gboolean _tmp224_ = FALSE;
-                       _tmp220_ = vala_typeregister_function_get_type_declaration (self);
-                       _tmp221_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp220_, VALA_TYPE_ENUM) ? ((ValaEnum*) _tmp220_) : NULL;
-                       if (_tmp221_ == NULL) {
-                               _vala_code_node_unref0 (_tmp220_);
+                       ValaTypeSymbol* _tmp194_ = NULL;
+                       ValaEnum* _tmp195_ = NULL;
+                       ValaEnum* _tmp196_ = NULL;
+                       gboolean _tmp197_ = FALSE;
+                       gboolean _tmp198_ = FALSE;
+                       _tmp194_ = vala_typeregister_function_get_type_declaration (self);
+                       _tmp195_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp194_, VALA_TYPE_ENUM) ? ((ValaEnum*) _tmp194_) : NULL;
+                       if (_tmp195_ == NULL) {
+                               _vala_code_node_unref0 (_tmp194_);
                        }
-                       en = _tmp221_;
-                       _tmp222_ = en;
-                       _tmp223_ = vala_enum_get_is_flags (_tmp222_);
-                       _tmp224_ = _tmp223_;
-                       if (_tmp224_) {
-                               ValaCCodeIdentifier* _tmp225_ = NULL;
-                               ValaCCodeIdentifier* _tmp226_ = NULL;
-                               ValaCCodeFunctionCall* _tmp227_ = NULL;
-                               _tmp225_ = vala_ccode_identifier_new ("g_flags_register_static");
-                               _tmp226_ = _tmp225_;
-                               _tmp227_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp226_);
+                       en = _tmp195_;
+                       _tmp196_ = en;
+                       _tmp197_ = vala_enum_get_is_flags (_tmp196_);
+                       _tmp198_ = _tmp197_;
+                       if (_tmp198_) {
+                               ValaCCodeIdentifier* _tmp199_ = NULL;
+                               ValaCCodeIdentifier* _tmp200_ = NULL;
+                               ValaCCodeFunctionCall* _tmp201_ = NULL;
+                               _tmp199_ = vala_ccode_identifier_new ("g_flags_register_static");
+                               _tmp200_ = _tmp199_;
+                               _tmp201_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp200_);
                                _vala_ccode_node_unref0 (reg_call);
-                               reg_call = _tmp227_;
-                               _vala_ccode_node_unref0 (_tmp226_);
+                               reg_call = _tmp201_;
+                               _vala_ccode_node_unref0 (_tmp200_);
                        } else {
-                               ValaCCodeIdentifier* _tmp228_ = NULL;
-                               ValaCCodeIdentifier* _tmp229_ = NULL;
-                               ValaCCodeFunctionCall* _tmp230_ = NULL;
-                               _tmp228_ = vala_ccode_identifier_new ("g_enum_register_static");
-                               _tmp229_ = _tmp228_;
-                               _tmp230_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp229_);
+                               ValaCCodeIdentifier* _tmp202_ = NULL;
+                               ValaCCodeIdentifier* _tmp203_ = NULL;
+                               ValaCCodeFunctionCall* _tmp204_ = NULL;
+                               _tmp202_ = vala_ccode_identifier_new ("g_enum_register_static");
+                               _tmp203_ = _tmp202_;
+                               _tmp204_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp203_);
                                _vala_ccode_node_unref0 (reg_call);
-                               reg_call = _tmp230_;
-                               _vala_ccode_node_unref0 (_tmp229_);
+                               reg_call = _tmp204_;
+                               _vala_ccode_node_unref0 (_tmp203_);
                        }
                        _vala_code_node_unref0 (en);
                } else {
-                       gboolean _tmp231_ = FALSE;
-                       _tmp231_ = fundamental;
-                       if (_tmp231_) {
-                               ValaCCodeIdentifier* _tmp232_ = NULL;
-                               ValaCCodeIdentifier* _tmp233_ = NULL;
-                               ValaCCodeFunctionCall* _tmp234_ = NULL;
-                               ValaCCodeFunctionCall* _tmp235_ = NULL;
-                               ValaCCodeIdentifier* _tmp236_ = NULL;
-                               ValaCCodeIdentifier* _tmp237_ = NULL;
-                               ValaCCodeFunctionCall* _tmp238_ = NULL;
-                               ValaCCodeFunctionCall* _tmp239_ = NULL;
-                               _tmp232_ = vala_ccode_identifier_new ("g_type_register_fundamental");
-                               _tmp233_ = _tmp232_;
-                               _tmp234_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp233_);
+                       gboolean _tmp205_ = FALSE;
+                       _tmp205_ = fundamental;
+                       if (_tmp205_) {
+                               ValaCCodeIdentifier* _tmp206_ = NULL;
+                               ValaCCodeIdentifier* _tmp207_ = NULL;
+                               ValaCCodeFunctionCall* _tmp208_ = NULL;
+                               ValaCCodeFunctionCall* _tmp209_ = NULL;
+                               ValaCCodeIdentifier* _tmp210_ = NULL;
+                               ValaCCodeIdentifier* _tmp211_ = NULL;
+                               ValaCCodeFunctionCall* _tmp212_ = NULL;
+                               ValaCCodeFunctionCall* _tmp213_ = NULL;
+                               _tmp206_ = vala_ccode_identifier_new ("g_type_register_fundamental");
+                               _tmp207_ = _tmp206_;
+                               _tmp208_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp207_);
                                _vala_ccode_node_unref0 (reg_call);
-                               reg_call = _tmp234_;
-                               _vala_ccode_node_unref0 (_tmp233_);
-                               _tmp235_ = reg_call;
-                               _tmp236_ = vala_ccode_identifier_new ("g_type_fundamental_next");
-                               _tmp237_ = _tmp236_;
-                               _tmp238_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp237_);
-                               _tmp239_ = _tmp238_;
-                               vala_ccode_function_call_add_argument (_tmp235_, (ValaCCodeExpression*) _tmp239_);
-                               _vala_ccode_node_unref0 (_tmp239_);
-                               _vala_ccode_node_unref0 (_tmp237_);
+                               reg_call = _tmp208_;
+                               _vala_ccode_node_unref0 (_tmp207_);
+                               _tmp209_ = reg_call;
+                               _tmp210_ = vala_ccode_identifier_new ("g_type_fundamental_next");
+                               _tmp211_ = _tmp210_;
+                               _tmp212_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp211_);
+                               _tmp213_ = _tmp212_;
+                               vala_ccode_function_call_add_argument (_tmp209_, (ValaCCodeExpression*) _tmp213_);
+                               _vala_ccode_node_unref0 (_tmp213_);
+                               _vala_ccode_node_unref0 (_tmp211_);
                        } else {
-                               gboolean _tmp240_ = FALSE;
-                               _tmp240_ = plugin;
-                               if (!_tmp240_) {
-                                       ValaCCodeIdentifier* _tmp241_ = NULL;
-                                       ValaCCodeIdentifier* _tmp242_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp243_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp244_ = NULL;
-                                       gchar* _tmp245_ = NULL;
-                                       gchar* _tmp246_ = NULL;
-                                       ValaCCodeIdentifier* _tmp247_ = NULL;
-                                       ValaCCodeIdentifier* _tmp248_ = NULL;
-                                       _tmp241_ = vala_ccode_identifier_new ("g_type_register_static");
-                                       _tmp242_ = _tmp241_;
-                                       _tmp243_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp242_);
+                               gboolean _tmp214_ = FALSE;
+                               _tmp214_ = plugin;
+                               if (!_tmp214_) {
+                                       ValaCCodeIdentifier* _tmp215_ = NULL;
+                                       ValaCCodeIdentifier* _tmp216_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp217_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp218_ = NULL;
+                                       gchar* _tmp219_ = NULL;
+                                       gchar* _tmp220_ = NULL;
+                                       ValaCCodeIdentifier* _tmp221_ = NULL;
+                                       ValaCCodeIdentifier* _tmp222_ = NULL;
+                                       _tmp215_ = vala_ccode_identifier_new ("g_type_register_static");
+                                       _tmp216_ = _tmp215_;
+                                       _tmp217_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp216_);
                                        _vala_ccode_node_unref0 (reg_call);
-                                       reg_call = _tmp243_;
-                                       _vala_ccode_node_unref0 (_tmp242_);
-                                       _tmp244_ = reg_call;
-                                       _tmp245_ = vala_typeregister_function_get_parent_type_name (self);
-                                       _tmp246_ = _tmp245_;
-                                       _tmp247_ = vala_ccode_identifier_new (_tmp246_);
-                                       _tmp248_ = _tmp247_;
-                                       vala_ccode_function_call_add_argument (_tmp244_, (ValaCCodeExpression*) _tmp248_);
-                                       _vala_ccode_node_unref0 (_tmp248_);
-                                       _g_free0 (_tmp246_);
+                                       reg_call = _tmp217_;
+                                       _vala_ccode_node_unref0 (_tmp216_);
+                                       _tmp218_ = reg_call;
+                                       _tmp219_ = vala_typeregister_function_get_parent_type_name (self);
+                                       _tmp220_ = _tmp219_;
+                                       _tmp221_ = vala_ccode_identifier_new (_tmp220_);
+                                       _tmp222_ = _tmp221_;
+                                       vala_ccode_function_call_add_argument (_tmp218_, (ValaCCodeExpression*) _tmp222_);
+                                       _vala_ccode_node_unref0 (_tmp222_);
+                                       _g_free0 (_tmp220_);
                                } else {
-                                       ValaCCodeIdentifier* _tmp249_ = NULL;
-                                       ValaCCodeIdentifier* _tmp250_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp251_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp252_ = NULL;
-                                       ValaCCodeIdentifier* _tmp253_ = NULL;
-                                       ValaCCodeIdentifier* _tmp254_ = NULL;
-                                       ValaCCodeFunctionCall* _tmp255_ = NULL;
-                                       gchar* _tmp256_ = NULL;
-                                       gchar* _tmp257_ = NULL;
-                                       ValaCCodeIdentifier* _tmp258_ = NULL;
-                                       ValaCCodeIdentifier* _tmp259_ = NULL;
-                                       _tmp249_ = vala_ccode_identifier_new ("g_type_module_register_type");
-                                       _tmp250_ = _tmp249_;
-                                       _tmp251_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp250_);
+                                       ValaCCodeIdentifier* _tmp223_ = NULL;
+                                       ValaCCodeIdentifier* _tmp224_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp225_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp226_ = NULL;
+                                       ValaCCodeIdentifier* _tmp227_ = NULL;
+                                       ValaCCodeIdentifier* _tmp228_ = NULL;
+                                       ValaCCodeFunctionCall* _tmp229_ = NULL;
+                                       gchar* _tmp230_ = NULL;
+                                       gchar* _tmp231_ = NULL;
+                                       ValaCCodeIdentifier* _tmp232_ = NULL;
+                                       ValaCCodeIdentifier* _tmp233_ = NULL;
+                                       _tmp223_ = vala_ccode_identifier_new ("g_type_module_register_type");
+                                       _tmp224_ = _tmp223_;
+                                       _tmp225_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp224_);
                                        _vala_ccode_node_unref0 (reg_call);
-                                       reg_call = _tmp251_;
-                                       _vala_ccode_node_unref0 (_tmp250_);
-                                       _tmp252_ = reg_call;
-                                       _tmp253_ = vala_ccode_identifier_new ("module");
-                                       _tmp254_ = _tmp253_;
-                                       vala_ccode_function_call_add_argument (_tmp252_, (ValaCCodeExpression*) _tmp254_);
-                                       _vala_ccode_node_unref0 (_tmp254_);
-                                       _tmp255_ = reg_call;
-                                       _tmp256_ = vala_typeregister_function_get_parent_type_name (self);
-                                       _tmp257_ = _tmp256_;
-                                       _tmp258_ = vala_ccode_identifier_new (_tmp257_);
-                                       _tmp259_ = _tmp258_;
-                                       vala_ccode_function_call_add_argument (_tmp255_, (ValaCCodeExpression*) _tmp259_);
-                                       _vala_ccode_node_unref0 (_tmp259_);
-                                       _g_free0 (_tmp257_);
+                                       reg_call = _tmp225_;
+                                       _vala_ccode_node_unref0 (_tmp224_);
+                                       _tmp226_ = reg_call;
+                                       _tmp227_ = vala_ccode_identifier_new ("module");
+                                       _tmp228_ = _tmp227_;
+                                       vala_ccode_function_call_add_argument (_tmp226_, (ValaCCodeExpression*) _tmp228_);
+                                       _vala_ccode_node_unref0 (_tmp228_);
+                                       _tmp229_ = reg_call;
+                                       _tmp230_ = vala_typeregister_function_get_parent_type_name (self);
+                                       _tmp231_ = _tmp230_;
+                                       _tmp232_ = vala_ccode_identifier_new (_tmp231_);
+                                       _tmp233_ = _tmp232_;
+                                       vala_ccode_function_call_add_argument (_tmp229_, (ValaCCodeExpression*) _tmp233_);
+                                       _vala_ccode_node_unref0 (_tmp233_);
+                                       _g_free0 (_tmp231_);
                                }
                        }
                }
        }
-       _tmp260_ = reg_call;
-       _tmp261_ = vala_typeregister_function_get_type_declaration (self);
-       _tmp262_ = _tmp261_;
-       _tmp263_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp262_);
-       _tmp264_ = _tmp263_;
-       _tmp265_ = g_strdup_printf ("\"%s\"", _tmp264_);
-       _tmp266_ = _tmp265_;
-       _tmp267_ = vala_ccode_constant_new (_tmp266_);
-       _tmp268_ = _tmp267_;
-       vala_ccode_function_call_add_argument (_tmp260_, (ValaCCodeExpression*) _tmp268_);
-       _vala_ccode_node_unref0 (_tmp268_);
-       _g_free0 (_tmp266_);
-       _g_free0 (_tmp264_);
-       _vala_code_node_unref0 (_tmp262_);
-       _tmp269_ = vala_typeregister_function_get_type_declaration (self);
-       _tmp270_ = _tmp269_;
-       _tmp271_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp270_, VALA_TYPE_STRUCT);
-       _vala_code_node_unref0 (_tmp270_);
-       if (_tmp271_) {
+       _tmp234_ = reg_call;
+       _tmp235_ = vala_typeregister_function_get_type_declaration (self);
+       _tmp236_ = _tmp235_;
+       _tmp237_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp236_);
+       _tmp238_ = _tmp237_;
+       _tmp239_ = g_strdup_printf ("\"%s\"", _tmp238_);
+       _tmp240_ = _tmp239_;
+       _tmp241_ = vala_ccode_constant_new (_tmp240_);
+       _tmp242_ = _tmp241_;
+       vala_ccode_function_call_add_argument (_tmp234_, (ValaCCodeExpression*) _tmp242_);
+       _vala_ccode_node_unref0 (_tmp242_);
+       _g_free0 (_tmp240_);
+       _g_free0 (_tmp238_);
+       _vala_code_node_unref0 (_tmp236_);
+       _tmp243_ = vala_typeregister_function_get_type_declaration (self);
+       _tmp244_ = _tmp243_;
+       _tmp245_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp244_, VALA_TYPE_STRUCT);
+       _vala_code_node_unref0 (_tmp244_);
+       if (_tmp245_) {
                ValaStruct* st = NULL;
-               ValaTypeSymbol* _tmp272_ = NULL;
-               ValaCCodeFunctionCall* _tmp273_ = NULL;
-               ValaStruct* _tmp274_ = NULL;
-               gchar* _tmp275_ = NULL;
-               gchar* _tmp276_ = NULL;
-               ValaCCodeIdentifier* _tmp277_ = NULL;
-               ValaCCodeIdentifier* _tmp278_ = NULL;
-               ValaCCodeCastExpression* _tmp279_ = NULL;
-               ValaCCodeCastExpression* _tmp280_ = NULL;
-               ValaCCodeFunctionCall* _tmp281_ = NULL;
-               ValaStruct* _tmp282_ = NULL;
-               gchar* _tmp283_ = NULL;
-               gchar* _tmp284_ = NULL;
-               ValaCCodeIdentifier* _tmp285_ = NULL;
-               ValaCCodeIdentifier* _tmp286_ = NULL;
-               ValaCCodeCastExpression* _tmp287_ = NULL;
-               ValaCCodeCastExpression* _tmp288_ = NULL;
-               _tmp272_ = vala_typeregister_function_get_type_declaration (self);
-               st = G_TYPE_CHECK_INSTANCE_CAST (_tmp272_, VALA_TYPE_STRUCT, ValaStruct);
-               _tmp273_ = reg_call;
-               _tmp274_ = st;
-               _tmp275_ = vala_ccode_base_module_get_ccode_dup_function ((ValaTypeSymbol*) _tmp274_);
-               _tmp276_ = _tmp275_;
-               _tmp277_ = vala_ccode_identifier_new (_tmp276_);
-               _tmp278_ = _tmp277_;
-               _tmp279_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp278_, "GBoxedCopyFunc");
-               _tmp280_ = _tmp279_;
-               vala_ccode_function_call_add_argument (_tmp273_, (ValaCCodeExpression*) _tmp280_);
-               _vala_ccode_node_unref0 (_tmp280_);
-               _vala_ccode_node_unref0 (_tmp278_);
-               _g_free0 (_tmp276_);
-               _tmp281_ = reg_call;
-               _tmp282_ = st;
-               _tmp283_ = vala_ccode_base_module_get_ccode_free_function ((ValaTypeSymbol*) _tmp282_);
-               _tmp284_ = _tmp283_;
-               _tmp285_ = vala_ccode_identifier_new (_tmp284_);
-               _tmp286_ = _tmp285_;
-               _tmp287_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp286_, "GBoxedFreeFunc");
-               _tmp288_ = _tmp287_;
-               vala_ccode_function_call_add_argument (_tmp281_, (ValaCCodeExpression*) _tmp288_);
-               _vala_ccode_node_unref0 (_tmp288_);
-               _vala_ccode_node_unref0 (_tmp286_);
-               _g_free0 (_tmp284_);
+               ValaTypeSymbol* _tmp246_ = NULL;
+               ValaCCodeFunctionCall* _tmp247_ = NULL;
+               ValaStruct* _tmp248_ = NULL;
+               gchar* _tmp249_ = NULL;
+               gchar* _tmp250_ = NULL;
+               ValaCCodeIdentifier* _tmp251_ = NULL;
+               ValaCCodeIdentifier* _tmp252_ = NULL;
+               ValaCCodeCastExpression* _tmp253_ = NULL;
+               ValaCCodeCastExpression* _tmp254_ = NULL;
+               ValaCCodeFunctionCall* _tmp255_ = NULL;
+               ValaStruct* _tmp256_ = NULL;
+               gchar* _tmp257_ = NULL;
+               gchar* _tmp258_ = NULL;
+               ValaCCodeIdentifier* _tmp259_ = NULL;
+               ValaCCodeIdentifier* _tmp260_ = NULL;
+               ValaCCodeCastExpression* _tmp261_ = NULL;
+               ValaCCodeCastExpression* _tmp262_ = NULL;
+               _tmp246_ = vala_typeregister_function_get_type_declaration (self);
+               st = G_TYPE_CHECK_INSTANCE_CAST (_tmp246_, VALA_TYPE_STRUCT, ValaStruct);
+               _tmp247_ = reg_call;
+               _tmp248_ = st;
+               _tmp249_ = vala_ccode_base_module_get_ccode_dup_function ((ValaTypeSymbol*) _tmp248_);
+               _tmp250_ = _tmp249_;
+               _tmp251_ = vala_ccode_identifier_new (_tmp250_);
+               _tmp252_ = _tmp251_;
+               _tmp253_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp252_, "GBoxedCopyFunc");
+               _tmp254_ = _tmp253_;
+               vala_ccode_function_call_add_argument (_tmp247_, (ValaCCodeExpression*) _tmp254_);
+               _vala_ccode_node_unref0 (_tmp254_);
+               _vala_ccode_node_unref0 (_tmp252_);
+               _g_free0 (_tmp250_);
+               _tmp255_ = reg_call;
+               _tmp256_ = st;
+               _tmp257_ = vala_ccode_base_module_get_ccode_free_function ((ValaTypeSymbol*) _tmp256_);
+               _tmp258_ = _tmp257_;
+               _tmp259_ = vala_ccode_identifier_new (_tmp258_);
+               _tmp260_ = _tmp259_;
+               _tmp261_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp260_, "GBoxedFreeFunc");
+               _tmp262_ = _tmp261_;
+               vala_ccode_function_call_add_argument (_tmp255_, (ValaCCodeExpression*) _tmp262_);
+               _vala_ccode_node_unref0 (_tmp262_);
+               _vala_ccode_node_unref0 (_tmp260_);
+               _g_free0 (_tmp258_);
                _vala_code_node_unref0 (st);
        } else {
-               ValaTypeSymbol* _tmp289_ = NULL;
-               ValaTypeSymbol* _tmp290_ = NULL;
-               gboolean _tmp291_ = FALSE;
-               _tmp289_ = vala_typeregister_function_get_type_declaration (self);
-               _tmp290_ = _tmp289_;
-               _tmp291_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp290_, VALA_TYPE_ENUM);
-               _vala_code_node_unref0 (_tmp290_);
-               if (_tmp291_) {
+               ValaTypeSymbol* _tmp263_ = NULL;
+               ValaTypeSymbol* _tmp264_ = NULL;
+               gboolean _tmp265_ = FALSE;
+               _tmp263_ = vala_typeregister_function_get_type_declaration (self);
+               _tmp264_ = _tmp263_;
+               _tmp265_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp264_, VALA_TYPE_ENUM);
+               _vala_code_node_unref0 (_tmp264_);
+               if (_tmp265_) {
                        ValaEnum* en = NULL;
-                       ValaTypeSymbol* _tmp292_ = NULL;
-                       ValaEnum* _tmp293_ = NULL;
+                       ValaTypeSymbol* _tmp266_ = NULL;
+                       ValaEnum* _tmp267_ = NULL;
                        ValaCCodeInitializerList* clist = NULL;
-                       ValaCCodeInitializerList* _tmp294_ = NULL;
+                       ValaCCodeInitializerList* _tmp268_ = NULL;
                        ValaCCodeInitializerList* clist_ev = NULL;
-                       ValaCCodeInitializerList* _tmp327_ = NULL;
-                       ValaCCodeInitializerList* _tmp328_ = NULL;
-                       ValaCCodeConstant* _tmp329_ = NULL;
-                       ValaCCodeConstant* _tmp330_ = NULL;
-                       ValaCCodeInitializerList* _tmp331_ = NULL;
-                       ValaCCodeConstant* _tmp332_ = NULL;
-                       ValaCCodeConstant* _tmp333_ = NULL;
-                       ValaCCodeInitializerList* _tmp334_ = NULL;
-                       ValaCCodeConstant* _tmp335_ = NULL;
-                       ValaCCodeConstant* _tmp336_ = NULL;
-                       ValaCCodeInitializerList* _tmp337_ = NULL;
-                       ValaCCodeInitializerList* _tmp338_ = NULL;
+                       ValaCCodeInitializerList* _tmp301_ = NULL;
+                       ValaCCodeInitializerList* _tmp302_ = NULL;
+                       ValaCCodeConstant* _tmp303_ = NULL;
+                       ValaCCodeConstant* _tmp304_ = NULL;
+                       ValaCCodeInitializerList* _tmp305_ = NULL;
+                       ValaCCodeConstant* _tmp306_ = NULL;
+                       ValaCCodeConstant* _tmp307_ = NULL;
+                       ValaCCodeInitializerList* _tmp308_ = NULL;
+                       ValaCCodeConstant* _tmp309_ = NULL;
+                       ValaCCodeConstant* _tmp310_ = NULL;
+                       ValaCCodeInitializerList* _tmp311_ = NULL;
+                       ValaCCodeInitializerList* _tmp312_ = NULL;
                        ValaCCodeVariableDeclarator* enum_decl = NULL;
-                       ValaCCodeInitializerList* _tmp339_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp340_ = NULL;
-                       ValaEnum* _tmp341_ = NULL;
-                       gboolean _tmp342_ = FALSE;
-                       gboolean _tmp343_ = FALSE;
-                       ValaCCodeDeclaration* _tmp346_ = NULL;
-                       ValaCCodeVariableDeclarator* _tmp347_ = NULL;
-                       ValaCCodeDeclaration* _tmp348_ = NULL;
-                       ValaCCodeBlock* _tmp349_ = NULL;
-                       ValaCCodeDeclaration* _tmp350_ = NULL;
-                       ValaCCodeFunctionCall* _tmp351_ = NULL;
-                       ValaCCodeIdentifier* _tmp352_ = NULL;
-                       ValaCCodeIdentifier* _tmp353_ = NULL;
-                       _tmp292_ = vala_typeregister_function_get_type_declaration (self);
-                       _tmp293_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp292_, VALA_TYPE_ENUM) ? ((ValaEnum*) _tmp292_) : NULL;
-                       if (_tmp293_ == NULL) {
-                               _vala_code_node_unref0 (_tmp292_);
+                       ValaCCodeInitializerList* _tmp313_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp314_ = NULL;
+                       ValaEnum* _tmp315_ = NULL;
+                       gboolean _tmp316_ = FALSE;
+                       gboolean _tmp317_ = FALSE;
+                       ValaCCodeDeclaration* _tmp320_ = NULL;
+                       ValaCCodeVariableDeclarator* _tmp321_ = NULL;
+                       ValaCCodeDeclaration* _tmp322_ = NULL;
+                       ValaCCodeBlock* _tmp323_ = NULL;
+                       ValaCCodeDeclaration* _tmp324_ = NULL;
+                       ValaCCodeFunctionCall* _tmp325_ = NULL;
+                       ValaCCodeIdentifier* _tmp326_ = NULL;
+                       ValaCCodeIdentifier* _tmp327_ = NULL;
+                       _tmp266_ = vala_typeregister_function_get_type_declaration (self);
+                       _tmp267_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp266_, VALA_TYPE_ENUM) ? ((ValaEnum*) _tmp266_) : NULL;
+                       if (_tmp267_ == NULL) {
+                               _vala_code_node_unref0 (_tmp266_);
                        }
-                       en = _tmp293_;
-                       _tmp294_ = vala_ccode_initializer_list_new ();
-                       clist = _tmp294_;
+                       en = _tmp267_;
+                       _tmp268_ = vala_ccode_initializer_list_new ();
+                       clist = _tmp268_;
                        clist_ev = NULL;
                        {
                                ValaList* _ev_list = NULL;
-                               ValaEnum* _tmp295_ = NULL;
-                               ValaList* _tmp296_ = NULL;
+                               ValaEnum* _tmp269_ = NULL;
+                               ValaList* _tmp270_ = NULL;
                                gint _ev_size = 0;
-                               ValaList* _tmp297_ = NULL;
-                               gint _tmp298_ = 0;
-                               gint _tmp299_ = 0;
+                               ValaList* _tmp271_ = NULL;
+                               gint _tmp272_ = 0;
+                               gint _tmp273_ = 0;
                                gint _ev_index = 0;
-                               _tmp295_ = en;
-                               _tmp296_ = vala_enum_get_values (_tmp295_);
-                               _ev_list = _tmp296_;
-                               _tmp297_ = _ev_list;
-                               _tmp298_ = vala_collection_get_size ((ValaCollection*) _tmp297_);
-                               _tmp299_ = _tmp298_;
-                               _ev_size = _tmp299_;
+                               _tmp269_ = en;
+                               _tmp270_ = vala_enum_get_values (_tmp269_);
+                               _ev_list = _tmp270_;
+                               _tmp271_ = _ev_list;
+                               _tmp272_ = vala_collection_get_size ((ValaCollection*) _tmp271_);
+                               _tmp273_ = _tmp272_;
+                               _ev_size = _tmp273_;
                                _ev_index = -1;
                                while (TRUE) {
-                                       gint _tmp300_ = 0;
-                                       gint _tmp301_ = 0;
-                                       gint _tmp302_ = 0;
+                                       gint _tmp274_ = 0;
+                                       gint _tmp275_ = 0;
+                                       gint _tmp276_ = 0;
                                        ValaEnumValue* ev = NULL;
-                                       ValaList* _tmp303_ = NULL;
-                                       gint _tmp304_ = 0;
-                                       gpointer _tmp305_ = NULL;
-                                       ValaCCodeInitializerList* _tmp306_ = NULL;
-                                       ValaCCodeInitializerList* _tmp307_ = NULL;
-                                       ValaEnumValue* _tmp308_ = NULL;
-                                       gchar* _tmp309_ = NULL;
-                                       gchar* _tmp310_ = NULL;
-                                       ValaCCodeConstant* _tmp311_ = NULL;
-                                       ValaCCodeConstant* _tmp312_ = NULL;
-                                       ValaCCodeInitializerList* _tmp313_ = NULL;
-                                       ValaEnumValue* _tmp314_ = NULL;
-                                       gchar* _tmp315_ = NULL;
-                                       gchar* _tmp316_ = NULL;
-                                       gchar* _tmp317_ = NULL;
-                                       gchar* _tmp318_ = NULL;
-                                       ValaCCodeIdentifier* _tmp319_ = NULL;
-                                       ValaCCodeIdentifier* _tmp320_ = NULL;
-                                       ValaCCodeInitializerList* _tmp321_ = NULL;
-                                       ValaEnumValue* _tmp322_ = NULL;
-                                       ValaCCodeConstant* _tmp323_ = NULL;
-                                       ValaCCodeConstant* _tmp324_ = NULL;
-                                       ValaCCodeInitializerList* _tmp325_ = NULL;
-                                       ValaCCodeInitializerList* _tmp326_ = NULL;
-                                       _tmp300_ = _ev_index;
-                                       _ev_index = _tmp300_ + 1;
-                                       _tmp301_ = _ev_index;
-                                       _tmp302_ = _ev_size;
-                                       if (!(_tmp301_ < _tmp302_)) {
+                                       ValaList* _tmp277_ = NULL;
+                                       gint _tmp278_ = 0;
+                                       gpointer _tmp279_ = NULL;
+                                       ValaCCodeInitializerList* _tmp280_ = NULL;
+                                       ValaCCodeInitializerList* _tmp281_ = NULL;
+                                       ValaEnumValue* _tmp282_ = NULL;
+                                       gchar* _tmp283_ = NULL;
+                                       gchar* _tmp284_ = NULL;
+                                       ValaCCodeConstant* _tmp285_ = NULL;
+                                       ValaCCodeConstant* _tmp286_ = NULL;
+                                       ValaCCodeInitializerList* _tmp287_ = NULL;
+                                       ValaEnumValue* _tmp288_ = NULL;
+                                       gchar* _tmp289_ = NULL;
+                                       gchar* _tmp290_ = NULL;
+                                       gchar* _tmp291_ = NULL;
+                                       gchar* _tmp292_ = NULL;
+                                       ValaCCodeIdentifier* _tmp293_ = NULL;
+                                       ValaCCodeIdentifier* _tmp294_ = NULL;
+                                       ValaCCodeInitializerList* _tmp295_ = NULL;
+                                       ValaEnumValue* _tmp296_ = NULL;
+                                       ValaCCodeConstant* _tmp297_ = NULL;
+                                       ValaCCodeConstant* _tmp298_ = NULL;
+                                       ValaCCodeInitializerList* _tmp299_ = NULL;
+                                       ValaCCodeInitializerList* _tmp300_ = NULL;
+                                       _tmp274_ = _ev_index;
+                                       _ev_index = _tmp274_ + 1;
+                                       _tmp275_ = _ev_index;
+                                       _tmp276_ = _ev_size;
+                                       if (!(_tmp275_ < _tmp276_)) {
                                                break;
                                        }
-                                       _tmp303_ = _ev_list;
-                                       _tmp304_ = _ev_index;
-                                       _tmp305_ = vala_list_get (_tmp303_, _tmp304_);
-                                       ev = (ValaEnumValue*) _tmp305_;
-                                       _tmp306_ = vala_ccode_initializer_list_new ();
+                                       _tmp277_ = _ev_list;
+                                       _tmp278_ = _ev_index;
+                                       _tmp279_ = vala_list_get (_tmp277_, _tmp278_);
+                                       ev = (ValaEnumValue*) _tmp279_;
+                                       _tmp280_ = vala_ccode_initializer_list_new ();
                                        _vala_ccode_node_unref0 (clist_ev);
-                                       clist_ev = _tmp306_;
-                                       _tmp307_ = clist_ev;
-                                       _tmp308_ = ev;
-                                       _tmp309_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp308_);
-                                       _tmp310_ = _tmp309_;
-                                       _tmp311_ = vala_ccode_constant_new (_tmp310_);
-                                       _tmp312_ = _tmp311_;
-                                       vala_ccode_initializer_list_append (_tmp307_, (ValaCCodeExpression*) _tmp312_);
-                                       _vala_ccode_node_unref0 (_tmp312_);
-                                       _g_free0 (_tmp310_);
-                                       _tmp313_ = clist_ev;
-                                       _tmp314_ = ev;
-                                       _tmp315_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp314_);
-                                       _tmp316_ = _tmp315_;
-                                       _tmp317_ = g_strdup_printf ("\"%s\"", _tmp316_);
-                                       _tmp318_ = _tmp317_;
-                                       _tmp319_ = vala_ccode_identifier_new (_tmp318_);
-                                       _tmp320_ = _tmp319_;
-                                       vala_ccode_initializer_list_append (_tmp313_, (ValaCCodeExpression*) _tmp320_);
-                                       _vala_ccode_node_unref0 (_tmp320_);
-                                       _g_free0 (_tmp318_);
-                                       _g_free0 (_tmp316_);
-                                       _tmp321_ = clist_ev;
-                                       _tmp322_ = ev;
-                                       _tmp323_ = vala_ccode_base_module_get_enum_value_canonical_cconstant (_tmp322_);
-                                       _tmp324_ = _tmp323_;
-                                       vala_ccode_initializer_list_append (_tmp321_, (ValaCCodeExpression*) _tmp324_);
-                                       _vala_ccode_node_unref0 (_tmp324_);
-                                       _tmp325_ = clist;
-                                       _tmp326_ = clist_ev;
-                                       vala_ccode_initializer_list_append (_tmp325_, (ValaCCodeExpression*) _tmp326_);
+                                       clist_ev = _tmp280_;
+                                       _tmp281_ = clist_ev;
+                                       _tmp282_ = ev;
+                                       _tmp283_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp282_);
+                                       _tmp284_ = _tmp283_;
+                                       _tmp285_ = vala_ccode_constant_new (_tmp284_);
+                                       _tmp286_ = _tmp285_;
+                                       vala_ccode_initializer_list_append (_tmp281_, (ValaCCodeExpression*) _tmp286_);
+                                       _vala_ccode_node_unref0 (_tmp286_);
+                                       _g_free0 (_tmp284_);
+                                       _tmp287_ = clist_ev;
+                                       _tmp288_ = ev;
+                                       _tmp289_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp288_);
+                                       _tmp290_ = _tmp289_;
+                                       _tmp291_ = g_strdup_printf ("\"%s\"", _tmp290_);
+                                       _tmp292_ = _tmp291_;
+                                       _tmp293_ = vala_ccode_identifier_new (_tmp292_);
+                                       _tmp294_ = _tmp293_;
+                                       vala_ccode_initializer_list_append (_tmp287_, (ValaCCodeExpression*) _tmp294_);
+                                       _vala_ccode_node_unref0 (_tmp294_);
+                                       _g_free0 (_tmp292_);
+                                       _g_free0 (_tmp290_);
+                                       _tmp295_ = clist_ev;
+                                       _tmp296_ = ev;
+                                       _tmp297_ = vala_ccode_base_module_get_enum_value_canonical_cconstant (_tmp296_);
+                                       _tmp298_ = _tmp297_;
+                                       vala_ccode_initializer_list_append (_tmp295_, (ValaCCodeExpression*) _tmp298_);
+                                       _vala_ccode_node_unref0 (_tmp298_);
+                                       _tmp299_ = clist;
+                                       _tmp300_ = clist_ev;
+                                       vala_ccode_initializer_list_append (_tmp299_, (ValaCCodeExpression*) _tmp300_);
                                        _vala_code_node_unref0 (ev);
                                }
                                _vala_iterable_unref0 (_ev_list);
                        }
-                       _tmp327_ = vala_ccode_initializer_list_new ();
+                       _tmp301_ = vala_ccode_initializer_list_new ();
                        _vala_ccode_node_unref0 (clist_ev);
-                       clist_ev = _tmp327_;
-                       _tmp328_ = clist_ev;
-                       _tmp329_ = vala_ccode_constant_new ("0");
-                       _tmp330_ = _tmp329_;
-                       vala_ccode_initializer_list_append (_tmp328_, (ValaCCodeExpression*) _tmp330_);
-                       _vala_ccode_node_unref0 (_tmp330_);
-                       _tmp331_ = clist_ev;
-                       _tmp332_ = vala_ccode_constant_new ("NULL");
-                       _tmp333_ = _tmp332_;
-                       vala_ccode_initializer_list_append (_tmp331_, (ValaCCodeExpression*) _tmp333_);
-                       _vala_ccode_node_unref0 (_tmp333_);
-                       _tmp334_ = clist_ev;
-                       _tmp335_ = vala_ccode_constant_new ("NULL");
-                       _tmp336_ = _tmp335_;
-                       vala_ccode_initializer_list_append (_tmp334_, (ValaCCodeExpression*) _tmp336_);
-                       _vala_ccode_node_unref0 (_tmp336_);
-                       _tmp337_ = clist;
-                       _tmp338_ = clist_ev;
-                       vala_ccode_initializer_list_append (_tmp337_, (ValaCCodeExpression*) _tmp338_);
-                       _tmp339_ = clist;
-                       _tmp340_ = vala_ccode_variable_declarator_new ("values[]", (ValaCCodeExpression*) _tmp339_, NULL);
-                       enum_decl = _tmp340_;
-                       _tmp341_ = en;
-                       _tmp342_ = vala_enum_get_is_flags (_tmp341_);
-                       _tmp343_ = _tmp342_;
-                       if (_tmp343_) {
-                               ValaCCodeDeclaration* _tmp344_ = NULL;
-                               _tmp344_ = vala_ccode_declaration_new ("const GFlagsValue");
+                       clist_ev = _tmp301_;
+                       _tmp302_ = clist_ev;
+                       _tmp303_ = vala_ccode_constant_new ("0");
+                       _tmp304_ = _tmp303_;
+                       vala_ccode_initializer_list_append (_tmp302_, (ValaCCodeExpression*) _tmp304_);
+                       _vala_ccode_node_unref0 (_tmp304_);
+                       _tmp305_ = clist_ev;
+                       _tmp306_ = vala_ccode_constant_new ("NULL");
+                       _tmp307_ = _tmp306_;
+                       vala_ccode_initializer_list_append (_tmp305_, (ValaCCodeExpression*) _tmp307_);
+                       _vala_ccode_node_unref0 (_tmp307_);
+                       _tmp308_ = clist_ev;
+                       _tmp309_ = vala_ccode_constant_new ("NULL");
+                       _tmp310_ = _tmp309_;
+                       vala_ccode_initializer_list_append (_tmp308_, (ValaCCodeExpression*) _tmp310_);
+                       _vala_ccode_node_unref0 (_tmp310_);
+                       _tmp311_ = clist;
+                       _tmp312_ = clist_ev;
+                       vala_ccode_initializer_list_append (_tmp311_, (ValaCCodeExpression*) _tmp312_);
+                       _tmp313_ = clist;
+                       _tmp314_ = vala_ccode_variable_declarator_new ("values[]", (ValaCCodeExpression*) _tmp313_, NULL);
+                       enum_decl = _tmp314_;
+                       _tmp315_ = en;
+                       _tmp316_ = vala_enum_get_is_flags (_tmp315_);
+                       _tmp317_ = _tmp316_;
+                       if (_tmp317_) {
+                               ValaCCodeDeclaration* _tmp318_ = NULL;
+                               _tmp318_ = vala_ccode_declaration_new ("const GFlagsValue");
                                _vala_ccode_node_unref0 (_cdecl_);
-                               _cdecl_ = _tmp344_;
+                               _cdecl_ = _tmp318_;
                        } else {
-                               ValaCCodeDeclaration* _tmp345_ = NULL;
-                               _tmp345_ = vala_ccode_declaration_new ("const GEnumValue");
+                               ValaCCodeDeclaration* _tmp319_ = NULL;
+                               _tmp319_ = vala_ccode_declaration_new ("const GEnumValue");
                                _vala_ccode_node_unref0 (_cdecl_);
-                               _cdecl_ = _tmp345_;
+                               _cdecl_ = _tmp319_;
                        }
-                       _tmp346_ = _cdecl_;
-                       _tmp347_ = enum_decl;
-                       vala_ccode_declaration_add_declarator (_tmp346_, (ValaCCodeDeclarator*) _tmp347_);
-                       _tmp348_ = _cdecl_;
-                       vala_ccode_declaration_set_modifiers (_tmp348_, VALA_CCODE_MODIFIERS_STATIC);
-                       _tmp349_ = type_init;
-                       _tmp350_ = _cdecl_;
-                       vala_ccode_block_add_statement (_tmp349_, (ValaCCodeNode*) _tmp350_);
-                       _tmp351_ = reg_call;
-                       _tmp352_ = vala_ccode_identifier_new ("values");
-                       _tmp353_ = _tmp352_;
-                       vala_ccode_function_call_add_argument (_tmp351_, (ValaCCodeExpression*) _tmp353_);
-                       _vala_ccode_node_unref0 (_tmp353_);
+                       _tmp320_ = _cdecl_;
+                       _tmp321_ = enum_decl;
+                       vala_ccode_declaration_add_declarator (_tmp320_, (ValaCCodeDeclarator*) _tmp321_);
+                       _tmp322_ = _cdecl_;
+                       vala_ccode_declaration_set_modifiers (_tmp322_, VALA_CCODE_MODIFIERS_STATIC);
+                       _tmp323_ = type_init;
+                       _tmp324_ = _cdecl_;
+                       vala_ccode_block_add_statement (_tmp323_, (ValaCCodeNode*) _tmp324_);
+                       _tmp325_ = reg_call;
+                       _tmp326_ = vala_ccode_identifier_new ("values");
+                       _tmp327_ = _tmp326_;
+                       vala_ccode_function_call_add_argument (_tmp325_, (ValaCCodeExpression*) _tmp327_);
+                       _vala_ccode_node_unref0 (_tmp327_);
                        _vala_ccode_node_unref0 (enum_decl);
                        _vala_ccode_node_unref0 (clist_ev);
                        _vala_ccode_node_unref0 (clist);
                        _vala_code_node_unref0 (en);
                } else {
-                       ValaCCodeFunctionCall* _tmp354_ = NULL;
-                       ValaCCodeIdentifier* _tmp355_ = NULL;
-                       ValaCCodeIdentifier* _tmp356_ = NULL;
-                       gboolean _tmp357_ = FALSE;
-                       ValaCCodeFunctionCall* _tmp361_ = NULL;
-                       gchar* _tmp362_ = NULL;
-                       gchar* _tmp363_ = NULL;
-                       ValaCCodeConstant* _tmp364_ = NULL;
-                       ValaCCodeConstant* _tmp365_ = NULL;
-                       _tmp354_ = reg_call;
-                       _tmp355_ = vala_ccode_identifier_new ("&g_define_type_info");
-                       _tmp356_ = _tmp355_;
-                       vala_ccode_function_call_add_argument (_tmp354_, (ValaCCodeExpression*) _tmp356_);
-                       _vala_ccode_node_unref0 (_tmp356_);
-                       _tmp357_ = fundamental;
-                       if (_tmp357_) {
-                               ValaCCodeFunctionCall* _tmp358_ = NULL;
-                               ValaCCodeIdentifier* _tmp359_ = NULL;
-                               ValaCCodeIdentifier* _tmp360_ = NULL;
-                               _tmp358_ = reg_call;
-                               _tmp359_ = vala_ccode_identifier_new ("&g_define_type_fundamental_info");
-                               _tmp360_ = _tmp359_;
-                               vala_ccode_function_call_add_argument (_tmp358_, (ValaCCodeExpression*) _tmp360_);
-                               _vala_ccode_node_unref0 (_tmp360_);
+                       ValaCCodeFunctionCall* _tmp328_ = NULL;
+                       ValaCCodeIdentifier* _tmp329_ = NULL;
+                       ValaCCodeIdentifier* _tmp330_ = NULL;
+                       gboolean _tmp331_ = FALSE;
+                       ValaCCodeFunctionCall* _tmp335_ = NULL;
+                       gchar* _tmp336_ = NULL;
+                       gchar* _tmp337_ = NULL;
+                       ValaCCodeConstant* _tmp338_ = NULL;
+                       ValaCCodeConstant* _tmp339_ = NULL;
+                       _tmp328_ = reg_call;
+                       _tmp329_ = vala_ccode_identifier_new ("&g_define_type_info");
+                       _tmp330_ = _tmp329_;
+                       vala_ccode_function_call_add_argument (_tmp328_, (ValaCCodeExpression*) _tmp330_);
+                       _vala_ccode_node_unref0 (_tmp330_);
+                       _tmp331_ = fundamental;
+                       if (_tmp331_) {
+                               ValaCCodeFunctionCall* _tmp332_ = NULL;
+                               ValaCCodeIdentifier* _tmp333_ = NULL;
+                               ValaCCodeIdentifier* _tmp334_ = NULL;
+                               _tmp332_ = reg_call;
+                               _tmp333_ = vala_ccode_identifier_new ("&g_define_type_fundamental_info");
+                               _tmp334_ = _tmp333_;
+                               vala_ccode_function_call_add_argument (_tmp332_, (ValaCCodeExpression*) _tmp334_);
+                               _vala_ccode_node_unref0 (_tmp334_);
                        }
-                       _tmp361_ = reg_call;
-                       _tmp362_ = vala_typeregister_function_get_type_flags (self);
-                       _tmp363_ = _tmp362_;
-                       _tmp364_ = vala_ccode_constant_new (_tmp363_);
-                       _tmp365_ = _tmp364_;
-                       vala_ccode_function_call_add_argument (_tmp361_, (ValaCCodeExpression*) _tmp365_);
-                       _vala_ccode_node_unref0 (_tmp365_);
-                       _g_free0 (_tmp363_);
+                       _tmp335_ = reg_call;
+                       _tmp336_ = vala_typeregister_function_get_type_flags (self);
+                       _tmp337_ = _tmp336_;
+                       _tmp338_ = vala_ccode_constant_new (_tmp337_);
+                       _tmp339_ = _tmp338_;
+                       vala_ccode_function_call_add_argument (_tmp335_, (ValaCCodeExpression*) _tmp339_);
+                       _vala_ccode_node_unref0 (_tmp339_);
+                       _g_free0 (_tmp337_);
                }
        }
-       _tmp367_ = use_thread_safe;
-       if (_tmp367_) {
-               gboolean _tmp368_ = FALSE;
-               _tmp368_ = plugin;
-               _tmp366_ = !_tmp368_;
+       _tmp341_ = use_thread_safe;
+       if (_tmp341_) {
+               gboolean _tmp342_ = FALSE;
+               _tmp342_ = plugin;
+               _tmp340_ = !_tmp342_;
        } else {
-               _tmp366_ = FALSE;
+               _tmp340_ = FALSE;
        }
-       if (_tmp366_) {
+       if (_tmp340_) {
                ValaCCodeDeclaration* temp_decl = NULL;
-               ValaCCodeDeclaration* _tmp369_ = NULL;
-               ValaCCodeDeclaration* _tmp370_ = NULL;
-               const gchar* _tmp371_ = NULL;
-               ValaCCodeFunctionCall* _tmp372_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp373_ = NULL;
-               ValaCCodeVariableDeclarator* _tmp374_ = NULL;
-               ValaCCodeBlock* _tmp375_ = NULL;
-               ValaCCodeDeclaration* _tmp376_ = NULL;
-               _tmp369_ = vala_ccode_declaration_new ("GType");
-               temp_decl = _tmp369_;
-               _tmp370_ = temp_decl;
-               _tmp371_ = type_id_name;
-               _tmp372_ = reg_call;
-               _tmp373_ = vala_ccode_variable_declarator_new (_tmp371_, (ValaCCodeExpression*) _tmp372_, NULL);
-               _tmp374_ = _tmp373_;
-               vala_ccode_declaration_add_declarator (_tmp370_, (ValaCCodeDeclarator*) _tmp374_);
-               _vala_ccode_node_unref0 (_tmp374_);
-               _tmp375_ = type_init;
-               _tmp376_ = temp_decl;
-               vala_ccode_block_add_statement (_tmp375_, (ValaCCodeNode*) _tmp376_);
+               ValaCCodeDeclaration* _tmp343_ = NULL;
+               ValaCCodeDeclaration* _tmp344_ = NULL;
+               const gchar* _tmp345_ = NULL;
+               ValaCCodeFunctionCall* _tmp346_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp347_ = NULL;
+               ValaCCodeVariableDeclarator* _tmp348_ = NULL;
+               ValaCCodeBlock* _tmp349_ = NULL;
+               ValaCCodeDeclaration* _tmp350_ = NULL;
+               _tmp343_ = vala_ccode_declaration_new ("GType");
+               temp_decl = _tmp343_;
+               _tmp344_ = temp_decl;
+               _tmp345_ = type_id_name;
+               _tmp346_ = reg_call;
+               _tmp347_ = vala_ccode_variable_declarator_new (_tmp345_, (ValaCCodeExpression*) _tmp346_, NULL);
+               _tmp348_ = _tmp347_;
+               vala_ccode_declaration_add_declarator (_tmp344_, (ValaCCodeDeclarator*) _tmp348_);
+               _vala_ccode_node_unref0 (_tmp348_);
+               _tmp349_ = type_init;
+               _tmp350_ = temp_decl;
+               vala_ccode_block_add_statement (_tmp349_, (ValaCCodeNode*) _tmp350_);
                _vala_ccode_node_unref0 (temp_decl);
        } else {
-               ValaCCodeBlock* _tmp377_ = NULL;
-               const gchar* _tmp378_ = NULL;
+               ValaCCodeBlock* _tmp351_ = NULL;
+               const gchar* _tmp352_ = NULL;
+               ValaCCodeIdentifier* _tmp353_ = NULL;
+               ValaCCodeIdentifier* _tmp354_ = NULL;
+               ValaCCodeFunctionCall* _tmp355_ = NULL;
+               ValaCCodeAssignment* _tmp356_ = NULL;
+               ValaCCodeAssignment* _tmp357_ = NULL;
+               ValaCCodeExpressionStatement* _tmp358_ = NULL;
+               ValaCCodeExpressionStatement* _tmp359_ = NULL;
+               _tmp351_ = type_init;
+               _tmp352_ = type_id_name;
+               _tmp353_ = vala_ccode_identifier_new (_tmp352_);
+               _tmp354_ = _tmp353_;
+               _tmp355_ = reg_call;
+               _tmp356_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp354_, (ValaCCodeExpression*) _tmp355_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
+               _tmp357_ = _tmp356_;
+               _tmp358_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp357_);
+               _tmp359_ = _tmp358_;
+               vala_ccode_block_add_statement (_tmp351_, (ValaCCodeNode*) _tmp359_);
+               _vala_ccode_node_unref0 (_tmp359_);
+               _vala_ccode_node_unref0 (_tmp357_);
+               _vala_ccode_node_unref0 (_tmp354_);
+       }
+       _tmp361_ = cl;
+       if (_tmp361_ != NULL) {
+               ValaClass* _tmp362_ = NULL;
+               gboolean _tmp363_ = FALSE;
+               gboolean _tmp364_ = FALSE;
+               _tmp362_ = cl;
+               _tmp363_ = vala_class_get_has_class_private_fields (_tmp362_);
+               _tmp364_ = _tmp363_;
+               _tmp360_ = _tmp364_;
+       } else {
+               _tmp360_ = FALSE;
+       }
+       if (_tmp360_) {
+               ValaCCodeFunctionCall* add_class_private_call = NULL;
+               ValaCCodeIdentifier* _tmp365_ = NULL;
+               ValaCCodeIdentifier* _tmp366_ = NULL;
+               ValaCCodeFunctionCall* _tmp367_ = NULL;
+               ValaCCodeFunctionCall* _tmp368_ = NULL;
+               const gchar* _tmp369_ = NULL;
+               ValaCCodeIdentifier* _tmp370_ = NULL;
+               ValaCCodeIdentifier* _tmp371_ = NULL;
+               ValaCCodeFunctionCall* _tmp372_ = NULL;
+               ValaTypeSymbol* _tmp373_ = NULL;
+               ValaTypeSymbol* _tmp374_ = NULL;
+               gchar* _tmp375_ = NULL;
+               gchar* _tmp376_ = NULL;
+               gchar* _tmp377_ = NULL;
+               gchar* _tmp378_ = NULL;
                ValaCCodeIdentifier* _tmp379_ = NULL;
                ValaCCodeIdentifier* _tmp380_ = NULL;
-               ValaCCodeFunctionCall* _tmp381_ = NULL;
-               ValaCCodeAssignment* _tmp382_ = NULL;
-               ValaCCodeAssignment* _tmp383_ = NULL;
+               ValaCCodeBlock* _tmp381_ = NULL;
+               ValaCCodeFunctionCall* _tmp382_ = NULL;
+               ValaCCodeExpressionStatement* _tmp383_ = NULL;
                ValaCCodeExpressionStatement* _tmp384_ = NULL;
-               ValaCCodeExpressionStatement* _tmp385_ = NULL;
-               _tmp377_ = type_init;
-               _tmp378_ = type_id_name;
+               _tmp365_ = vala_ccode_identifier_new ("g_type_add_class_private");
+               _tmp366_ = _tmp365_;
+               _tmp367_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp366_);
+               _vala_ccode_node_unref0 (add_class_private_call);
+               add_class_private_call = _tmp367_;
+               _vala_ccode_node_unref0 (_tmp366_);
+               _tmp368_ = add_class_private_call;
+               _tmp369_ = type_id_name;
+               _tmp370_ = vala_ccode_identifier_new (_tmp369_);
+               _tmp371_ = _tmp370_;
+               vala_ccode_function_call_add_argument (_tmp368_, (ValaCCodeExpression*) _tmp371_);
+               _vala_ccode_node_unref0 (_tmp371_);
+               _tmp372_ = add_class_private_call;
+               _tmp373_ = vala_typeregister_function_get_type_declaration (self);
+               _tmp374_ = _tmp373_;
+               _tmp375_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp374_);
+               _tmp376_ = _tmp375_;
+               _tmp377_ = g_strdup_printf ("sizeof (%sClassPrivate)", _tmp376_);
+               _tmp378_ = _tmp377_;
                _tmp379_ = vala_ccode_identifier_new (_tmp378_);
                _tmp380_ = _tmp379_;
-               _tmp381_ = reg_call;
-               _tmp382_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp380_, (ValaCCodeExpression*) _tmp381_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
-               _tmp383_ = _tmp382_;
-               _tmp384_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp383_);
-               _tmp385_ = _tmp384_;
-               vala_ccode_block_add_statement (_tmp377_, (ValaCCodeNode*) _tmp385_);
-               _vala_ccode_node_unref0 (_tmp385_);
-               _vala_ccode_node_unref0 (_tmp383_);
+               vala_ccode_function_call_add_argument (_tmp372_, (ValaCCodeExpression*) _tmp380_);
                _vala_ccode_node_unref0 (_tmp380_);
-       }
-       _tmp388_ = cl;
-       if (_tmp388_ != NULL) {
-               ValaClass* _tmp389_ = NULL;
-               gboolean _tmp390_ = FALSE;
-               gboolean _tmp391_ = FALSE;
-               _tmp389_ = cl;
-               _tmp390_ = vala_class_get_has_class_private_fields (_tmp389_);
-               _tmp391_ = _tmp390_;
-               _tmp387_ = _tmp391_;
-       } else {
-               _tmp387_ = FALSE;
-       }
-       if (_tmp387_) {
-               ValaCodeContext* _tmp392_ = NULL;
-               gboolean _tmp393_ = FALSE;
-               _tmp392_ = self->priv->_context;
-               _tmp393_ = vala_code_context_require_glib_version (_tmp392_, 2, 24);
-               _tmp386_ = _tmp393_;
-       } else {
-               _tmp386_ = FALSE;
-       }
-       if (_tmp386_) {
-               ValaCCodeFunctionCall* add_class_private_call = NULL;
-               ValaCCodeIdentifier* _tmp394_ = NULL;
-               ValaCCodeIdentifier* _tmp395_ = NULL;
-               ValaCCodeFunctionCall* _tmp396_ = NULL;
-               ValaCCodeFunctionCall* _tmp397_ = NULL;
-               const gchar* _tmp398_ = NULL;
-               ValaCCodeIdentifier* _tmp399_ = NULL;
-               ValaCCodeIdentifier* _tmp400_ = NULL;
-               ValaCCodeFunctionCall* _tmp401_ = NULL;
-               ValaTypeSymbol* _tmp402_ = NULL;
-               ValaTypeSymbol* _tmp403_ = NULL;
-               gchar* _tmp404_ = NULL;
-               gchar* _tmp405_ = NULL;
-               gchar* _tmp406_ = NULL;
-               gchar* _tmp407_ = NULL;
-               ValaCCodeIdentifier* _tmp408_ = NULL;
-               ValaCCodeIdentifier* _tmp409_ = NULL;
-               ValaCCodeBlock* _tmp410_ = NULL;
-               ValaCCodeFunctionCall* _tmp411_ = NULL;
-               ValaCCodeExpressionStatement* _tmp412_ = NULL;
-               ValaCCodeExpressionStatement* _tmp413_ = NULL;
-               _tmp394_ = vala_ccode_identifier_new ("g_type_add_class_private");
-               _tmp395_ = _tmp394_;
-               _tmp396_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp395_);
-               _vala_ccode_node_unref0 (add_class_private_call);
-               add_class_private_call = _tmp396_;
-               _vala_ccode_node_unref0 (_tmp395_);
-               _tmp397_ = add_class_private_call;
-               _tmp398_ = type_id_name;
-               _tmp399_ = vala_ccode_identifier_new (_tmp398_);
-               _tmp400_ = _tmp399_;
-               vala_ccode_function_call_add_argument (_tmp397_, (ValaCCodeExpression*) _tmp400_);
-               _vala_ccode_node_unref0 (_tmp400_);
-               _tmp401_ = add_class_private_call;
-               _tmp402_ = vala_typeregister_function_get_type_declaration (self);
-               _tmp403_ = _tmp402_;
-               _tmp404_ = vala_ccode_base_module_get_ccode_name ((ValaCodeNode*) _tmp403_);
-               _tmp405_ = _tmp404_;
-               _tmp406_ = g_strdup_printf ("sizeof (%sClassPrivate)", _tmp405_);
-               _tmp407_ = _tmp406_;
-               _tmp408_ = vala_ccode_identifier_new (_tmp407_);
-               _tmp409_ = _tmp408_;
-               vala_ccode_function_call_add_argument (_tmp401_, (ValaCCodeExpression*) _tmp409_);
-               _vala_ccode_node_unref0 (_tmp409_);
-               _g_free0 (_tmp407_);
-               _g_free0 (_tmp405_);
-               _vala_code_node_unref0 (_tmp403_);
-               _tmp410_ = type_init;
-               _tmp411_ = add_class_private_call;
-               _tmp412_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp411_);
-               _tmp413_ = _tmp412_;
-               vala_ccode_block_add_statement (_tmp410_, (ValaCCodeNode*) _tmp413_);
-               _vala_ccode_node_unref0 (_tmp413_);
+               _g_free0 (_tmp378_);
+               _g_free0 (_tmp376_);
+               _vala_code_node_unref0 (_tmp374_);
+               _tmp381_ = type_init;
+               _tmp382_ = add_class_private_call;
+               _tmp383_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp382_);
+               _tmp384_ = _tmp383_;
+               vala_ccode_block_add_statement (_tmp381_, (ValaCCodeNode*) _tmp384_);
+               _vala_ccode_node_unref0 (_tmp384_);
                _vala_ccode_node_unref0 (add_class_private_call);
        }
-       _tmp414_ = declaration_only;
-       if (!_tmp414_) {
-               ValaCCodeBlock* _tmp415_ = NULL;
-               gboolean _tmp416_ = FALSE;
-               _tmp415_ = type_init;
-               _tmp416_ = plugin;
-               vala_typeregister_function_get_type_interface_init_statements (self, _tmp415_, _tmp416_);
+       _tmp385_ = declaration_only;
+       if (!_tmp385_) {
+               ValaCCodeBlock* _tmp386_ = NULL;
+               gboolean _tmp387_ = FALSE;
+               _tmp386_ = type_init;
+               _tmp387_ = plugin;
+               vala_typeregister_function_get_type_interface_init_statements (self, _tmp386_, _tmp387_);
        }
-       _tmp417_ = plugin;
-       if (!_tmp417_) {
+       _tmp388_ = plugin;
+       if (!_tmp388_) {
                ValaCCodeExpression* condition = NULL;
-               gboolean _tmp418_ = FALSE;
+               gboolean _tmp389_ = FALSE;
                ValaCCodeExpression* cond = NULL;
-               gboolean _tmp459_ = FALSE;
+               gboolean _tmp430_ = FALSE;
                ValaCCodeIfStatement* cif = NULL;
-               ValaCCodeExpression* _tmp467_ = NULL;
-               ValaCCodeBlock* _tmp468_ = NULL;
-               ValaCCodeIfStatement* _tmp469_ = NULL;
-               ValaCCodeBlock* _tmp470_ = NULL;
-               ValaCCodeIfStatement* _tmp471_ = NULL;
-               _tmp418_ = use_thread_safe;
-               if (_tmp418_) {
+               ValaCCodeExpression* _tmp438_ = NULL;
+               ValaCCodeBlock* _tmp439_ = NULL;
+               ValaCCodeIfStatement* _tmp440_ = NULL;
+               ValaCCodeBlock* _tmp441_ = NULL;
+               ValaCCodeIfStatement* _tmp442_ = NULL;
+               _tmp389_ = use_thread_safe;
+               if (_tmp389_) {
                        ValaCCodeFunctionCall* enter = NULL;
+                       ValaCCodeIdentifier* _tmp390_ = NULL;
+                       ValaCCodeIdentifier* _tmp391_ = NULL;
+                       ValaCCodeFunctionCall* _tmp392_ = NULL;
+                       ValaCCodeFunctionCall* _tmp393_ = NULL;
+                       ValaCCodeFunctionCall* _tmp394_ = NULL;
+                       const gchar* _tmp395_ = NULL;
+                       gchar* _tmp396_ = NULL;
+                       gchar* _tmp397_ = NULL;
+                       ValaCCodeIdentifier* _tmp398_ = NULL;
+                       ValaCCodeIdentifier* _tmp399_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp400_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp401_ = NULL;
+                       ValaCCodeFunctionCall* _tmp402_ = NULL;
+                       ValaCCodeExpression* _tmp403_ = NULL;
+                       ValaCCodeFunctionCall* leave = NULL;
+                       ValaCCodeIdentifier* _tmp404_ = NULL;
+                       ValaCCodeIdentifier* _tmp405_ = NULL;
+                       ValaCCodeFunctionCall* _tmp406_ = NULL;
+                       ValaCCodeFunctionCall* _tmp407_ = NULL;
+                       ValaCCodeFunctionCall* _tmp408_ = NULL;
+                       const gchar* _tmp409_ = NULL;
+                       gchar* _tmp410_ = NULL;
+                       gchar* _tmp411_ = NULL;
+                       ValaCCodeIdentifier* _tmp412_ = NULL;
+                       ValaCCodeIdentifier* _tmp413_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp414_ = NULL;
+                       ValaCCodeUnaryExpression* _tmp415_ = NULL;
+                       ValaCCodeFunctionCall* _tmp416_ = NULL;
+                       const gchar* _tmp417_ = NULL;
+                       ValaCCodeIdentifier* _tmp418_ = NULL;
                        ValaCCodeIdentifier* _tmp419_ = NULL;
-                       ValaCCodeIdentifier* _tmp420_ = NULL;
+                       ValaCCodeBlock* _tmp420_ = NULL;
                        ValaCCodeFunctionCall* _tmp421_ = NULL;
-                       ValaCCodeFunctionCall* _tmp422_ = NULL;
-                       ValaCCodeFunctionCall* _tmp423_ = NULL;
-                       const gchar* _tmp424_ = NULL;
-                       gchar* _tmp425_ = NULL;
-                       gchar* _tmp426_ = NULL;
-                       ValaCCodeIdentifier* _tmp427_ = NULL;
-                       ValaCCodeIdentifier* _tmp428_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp429_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp430_ = NULL;
-                       ValaCCodeFunctionCall* _tmp431_ = NULL;
-                       ValaCCodeExpression* _tmp432_ = NULL;
-                       ValaCCodeFunctionCall* leave = NULL;
-                       ValaCCodeIdentifier* _tmp433_ = NULL;
-                       ValaCCodeIdentifier* _tmp434_ = NULL;
-                       ValaCCodeFunctionCall* _tmp435_ = NULL;
-                       ValaCCodeFunctionCall* _tmp436_ = NULL;
-                       ValaCCodeFunctionCall* _tmp437_ = NULL;
-                       const gchar* _tmp438_ = NULL;
-                       gchar* _tmp439_ = NULL;
-                       gchar* _tmp440_ = NULL;
-                       ValaCCodeIdentifier* _tmp441_ = NULL;
-                       ValaCCodeIdentifier* _tmp442_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp443_ = NULL;
-                       ValaCCodeUnaryExpression* _tmp444_ = NULL;
-                       ValaCCodeFunctionCall* _tmp445_ = NULL;
-                       const gchar* _tmp446_ = NULL;
-                       ValaCCodeIdentifier* _tmp447_ = NULL;
-                       ValaCCodeIdentifier* _tmp448_ = NULL;
-                       ValaCCodeBlock* _tmp449_ = NULL;
-                       ValaCCodeFunctionCall* _tmp450_ = NULL;
-                       ValaCCodeExpressionStatement* _tmp451_ = NULL;
-                       ValaCCodeExpressionStatement* _tmp452_ = NULL;
-                       _tmp419_ = vala_ccode_identifier_new ("g_once_init_enter");
-                       _tmp420_ = _tmp419_;
-                       _tmp421_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp420_);
-                       _tmp422_ = _tmp421_;
-                       _vala_ccode_node_unref0 (_tmp420_);
-                       enter = _tmp422_;
-                       _tmp423_ = enter;
-                       _tmp424_ = type_id_name;
-                       _tmp425_ = g_strconcat (_tmp424_, "__volatile", NULL);
-                       _tmp426_ = _tmp425_;
-                       _tmp427_ = vala_ccode_identifier_new (_tmp426_);
-                       _tmp428_ = _tmp427_;
-                       _tmp429_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp428_);
-                       _tmp430_ = _tmp429_;
-                       vala_ccode_function_call_add_argument (_tmp423_, (ValaCCodeExpression*) _tmp430_);
-                       _vala_ccode_node_unref0 (_tmp430_);
-                       _vala_ccode_node_unref0 (_tmp428_);
-                       _g_free0 (_tmp426_);
-                       _tmp431_ = enter;
-                       _tmp432_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp431_);
+                       ValaCCodeExpressionStatement* _tmp422_ = NULL;
+                       ValaCCodeExpressionStatement* _tmp423_ = NULL;
+                       _tmp390_ = vala_ccode_identifier_new ("g_once_init_enter");
+                       _tmp391_ = _tmp390_;
+                       _tmp392_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp391_);
+                       _tmp393_ = _tmp392_;
+                       _vala_ccode_node_unref0 (_tmp391_);
+                       enter = _tmp393_;
+                       _tmp394_ = enter;
+                       _tmp395_ = type_id_name;
+                       _tmp396_ = g_strconcat (_tmp395_, "__volatile", NULL);
+                       _tmp397_ = _tmp396_;
+                       _tmp398_ = vala_ccode_identifier_new (_tmp397_);
+                       _tmp399_ = _tmp398_;
+                       _tmp400_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp399_);
+                       _tmp401_ = _tmp400_;
+                       vala_ccode_function_call_add_argument (_tmp394_, (ValaCCodeExpression*) _tmp401_);
+                       _vala_ccode_node_unref0 (_tmp401_);
+                       _vala_ccode_node_unref0 (_tmp399_);
+                       _g_free0 (_tmp397_);
+                       _tmp402_ = enter;
+                       _tmp403_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp402_);
                        _vala_ccode_node_unref0 (condition);
-                       condition = _tmp432_;
-                       _tmp433_ = vala_ccode_identifier_new ("g_once_init_leave");
-                       _tmp434_ = _tmp433_;
-                       _tmp435_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp434_);
-                       _tmp436_ = _tmp435_;
-                       _vala_ccode_node_unref0 (_tmp434_);
-                       leave = _tmp436_;
-                       _tmp437_ = leave;
-                       _tmp438_ = type_id_name;
-                       _tmp439_ = g_strconcat (_tmp438_, "__volatile", NULL);
-                       _tmp440_ = _tmp439_;
-                       _tmp441_ = vala_ccode_identifier_new (_tmp440_);
-                       _tmp442_ = _tmp441_;
-                       _tmp443_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp442_);
-                       _tmp444_ = _tmp443_;
-                       vala_ccode_function_call_add_argument (_tmp437_, (ValaCCodeExpression*) _tmp444_);
-                       _vala_ccode_node_unref0 (_tmp444_);
-                       _vala_ccode_node_unref0 (_tmp442_);
-                       _g_free0 (_tmp440_);
-                       _tmp445_ = leave;
-                       _tmp446_ = type_id_name;
-                       _tmp447_ = vala_ccode_identifier_new (_tmp446_);
-                       _tmp448_ = _tmp447_;
-                       vala_ccode_function_call_add_argument (_tmp445_, (ValaCCodeExpression*) _tmp448_);
-                       _vala_ccode_node_unref0 (_tmp448_);
-                       _tmp449_ = type_init;
-                       _tmp450_ = leave;
-                       _tmp451_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp450_);
-                       _tmp452_ = _tmp451_;
-                       vala_ccode_block_add_statement (_tmp449_, (ValaCCodeNode*) _tmp452_);
-                       _vala_ccode_node_unref0 (_tmp452_);
+                       condition = _tmp403_;
+                       _tmp404_ = vala_ccode_identifier_new ("g_once_init_leave");
+                       _tmp405_ = _tmp404_;
+                       _tmp406_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp405_);
+                       _tmp407_ = _tmp406_;
+                       _vala_ccode_node_unref0 (_tmp405_);
+                       leave = _tmp407_;
+                       _tmp408_ = leave;
+                       _tmp409_ = type_id_name;
+                       _tmp410_ = g_strconcat (_tmp409_, "__volatile", NULL);
+                       _tmp411_ = _tmp410_;
+                       _tmp412_ = vala_ccode_identifier_new (_tmp411_);
+                       _tmp413_ = _tmp412_;
+                       _tmp414_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp413_);
+                       _tmp415_ = _tmp414_;
+                       vala_ccode_function_call_add_argument (_tmp408_, (ValaCCodeExpression*) _tmp415_);
+                       _vala_ccode_node_unref0 (_tmp415_);
+                       _vala_ccode_node_unref0 (_tmp413_);
+                       _g_free0 (_tmp411_);
+                       _tmp416_ = leave;
+                       _tmp417_ = type_id_name;
+                       _tmp418_ = vala_ccode_identifier_new (_tmp417_);
+                       _tmp419_ = _tmp418_;
+                       vala_ccode_function_call_add_argument (_tmp416_, (ValaCCodeExpression*) _tmp419_);
+                       _vala_ccode_node_unref0 (_tmp419_);
+                       _tmp420_ = type_init;
+                       _tmp421_ = leave;
+                       _tmp422_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp421_);
+                       _tmp423_ = _tmp422_;
+                       vala_ccode_block_add_statement (_tmp420_, (ValaCCodeNode*) _tmp423_);
+                       _vala_ccode_node_unref0 (_tmp423_);
                        _vala_ccode_node_unref0 (leave);
                        _vala_ccode_node_unref0 (enter);
                } else {
                        ValaCCodeIdentifier* id = NULL;
-                       const gchar* _tmp453_ = NULL;
-                       ValaCCodeIdentifier* _tmp454_ = NULL;
+                       const gchar* _tmp424_ = NULL;
+                       ValaCCodeIdentifier* _tmp425_ = NULL;
                        ValaCCodeConstant* zero = NULL;
-                       ValaCCodeConstant* _tmp455_ = NULL;
-                       ValaCCodeIdentifier* _tmp456_ = NULL;
-                       ValaCCodeConstant* _tmp457_ = NULL;
-                       ValaCCodeBinaryExpression* _tmp458_ = NULL;
-                       _tmp453_ = type_id_name;
-                       _tmp454_ = vala_ccode_identifier_new (_tmp453_);
-                       id = _tmp454_;
-                       _tmp455_ = vala_ccode_constant_new ("0");
-                       zero = _tmp455_;
-                       _tmp456_ = id;
-                       _tmp457_ = zero;
-                       _tmp458_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp456_, (ValaCCodeExpression*) _tmp457_);
+                       ValaCCodeConstant* _tmp426_ = NULL;
+                       ValaCCodeIdentifier* _tmp427_ = NULL;
+                       ValaCCodeConstant* _tmp428_ = NULL;
+                       ValaCCodeBinaryExpression* _tmp429_ = NULL;
+                       _tmp424_ = type_id_name;
+                       _tmp425_ = vala_ccode_identifier_new (_tmp424_);
+                       id = _tmp425_;
+                       _tmp426_ = vala_ccode_constant_new ("0");
+                       zero = _tmp426_;
+                       _tmp427_ = id;
+                       _tmp428_ = zero;
+                       _tmp429_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp427_, (ValaCCodeExpression*) _tmp428_);
                        _vala_ccode_node_unref0 (condition);
-                       condition = (ValaCCodeExpression*) _tmp458_;
+                       condition = (ValaCCodeExpression*) _tmp429_;
                        _vala_ccode_node_unref0 (zero);
                        _vala_ccode_node_unref0 (id);
                }
-               _tmp459_ = use_thread_safe;
-               if (_tmp459_) {
-                       ValaCCodeExpression* _tmp460_ = NULL;
-                       ValaCCodeExpression* _tmp461_ = NULL;
-                       _tmp460_ = condition;
-                       _tmp461_ = _vala_ccode_node_ref0 (_tmp460_);
+               _tmp430_ = use_thread_safe;
+               if (_tmp430_) {
+                       ValaCCodeExpression* _tmp431_ = NULL;
+                       ValaCCodeExpression* _tmp432_ = NULL;
+                       _tmp431_ = condition;
+                       _tmp432_ = _vala_ccode_node_ref0 (_tmp431_);
                        _vala_ccode_node_unref0 (cond);
-                       cond = _tmp461_;
+                       cond = _tmp432_;
                } else {
-                       ValaCCodeIdentifier* _tmp462_ = NULL;
-                       ValaCCodeIdentifier* _tmp463_ = NULL;
-                       ValaCCodeFunctionCall* _tmp464_ = NULL;
-                       ValaCCodeExpression* _tmp465_ = NULL;
-                       ValaCCodeExpression* _tmp466_ = NULL;
-                       _tmp462_ = vala_ccode_identifier_new ("G_UNLIKELY");
-                       _tmp463_ = _tmp462_;
-                       _tmp464_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp463_);
+                       ValaCCodeIdentifier* _tmp433_ = NULL;
+                       ValaCCodeIdentifier* _tmp434_ = NULL;
+                       ValaCCodeFunctionCall* _tmp435_ = NULL;
+                       ValaCCodeExpression* _tmp436_ = NULL;
+                       ValaCCodeExpression* _tmp437_ = NULL;
+                       _tmp433_ = vala_ccode_identifier_new ("G_UNLIKELY");
+                       _tmp434_ = _tmp433_;
+                       _tmp435_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp434_);
                        _vala_ccode_node_unref0 (cond);
-                       cond = (ValaCCodeExpression*) _tmp464_;
-                       _vala_ccode_node_unref0 (_tmp463_);
-                       _tmp465_ = cond;
-                       _tmp466_ = condition;
-                       vala_ccode_function_call_add_argument (G_TYPE_CHECK_INSTANCE_TYPE (_tmp465_, VALA_TYPE_CCODE_FUNCTION_CALL) ? ((ValaCCodeFunctionCall*) _tmp465_) : NULL, _tmp466_);
+                       cond = (ValaCCodeExpression*) _tmp435_;
+                       _vala_ccode_node_unref0 (_tmp434_);
+                       _tmp436_ = cond;
+                       _tmp437_ = condition;
+                       vala_ccode_function_call_add_argument (G_TYPE_CHECK_INSTANCE_TYPE (_tmp436_, VALA_TYPE_CCODE_FUNCTION_CALL) ? ((ValaCCodeFunctionCall*) _tmp436_) : NULL, _tmp437_);
                }
-               _tmp467_ = cond;
-               _tmp468_ = type_init;
-               _tmp469_ = vala_ccode_if_statement_new (_tmp467_, (ValaCCodeStatement*) _tmp468_, NULL);
-               cif = _tmp469_;
-               _tmp470_ = type_block;
-               _tmp471_ = cif;
-               vala_ccode_block_add_statement (_tmp470_, (ValaCCodeNode*) _tmp471_);
+               _tmp438_ = cond;
+               _tmp439_ = type_init;
+               _tmp440_ = vala_ccode_if_statement_new (_tmp438_, (ValaCCodeStatement*) _tmp439_, NULL);
+               cif = _tmp440_;
+               _tmp441_ = type_block;
+               _tmp442_ = cif;
+               vala_ccode_block_add_statement (_tmp441_, (ValaCCodeNode*) _tmp442_);
                _vala_ccode_node_unref0 (cif);
                _vala_ccode_node_unref0 (cond);
                _vala_ccode_node_unref0 (condition);
        } else {
-               ValaCCodeBlock* _tmp472_ = NULL;
-               ValaCCodeBlock* _tmp473_ = NULL;
-               _tmp472_ = type_init;
-               _tmp473_ = _vala_ccode_node_ref0 (_tmp472_);
+               ValaCCodeBlock* _tmp443_ = NULL;
+               ValaCCodeBlock* _tmp444_ = NULL;
+               _tmp443_ = type_init;
+               _tmp444_ = _vala_ccode_node_ref0 (_tmp443_);
                _vala_ccode_node_unref0 (type_block);
-               type_block = _tmp473_;
+               type_block = _tmp444_;
        }
-       _tmp474_ = use_thread_safe;
-       if (_tmp474_) {
-               ValaCCodeBlock* _tmp475_ = NULL;
-               const gchar* _tmp476_ = NULL;
-               gchar* _tmp477_ = NULL;
-               gchar* _tmp478_ = NULL;
-               ValaCCodeIdentifier* _tmp479_ = NULL;
-               ValaCCodeIdentifier* _tmp480_ = NULL;
-               ValaCCodeReturnStatement* _tmp481_ = NULL;
-               ValaCCodeReturnStatement* _tmp482_ = NULL;
-               _tmp475_ = type_block;
-               _tmp476_ = type_id_name;
-               _tmp477_ = g_strconcat (_tmp476_, "__volatile", NULL);
-               _tmp478_ = _tmp477_;
-               _tmp479_ = vala_ccode_identifier_new (_tmp478_);
-               _tmp480_ = _tmp479_;
-               _tmp481_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp480_);
-               _tmp482_ = _tmp481_;
-               vala_ccode_block_add_statement (_tmp475_, (ValaCCodeNode*) _tmp482_);
-               _vala_ccode_node_unref0 (_tmp482_);
-               _vala_ccode_node_unref0 (_tmp480_);
-               _g_free0 (_tmp478_);
+       _tmp445_ = use_thread_safe;
+       if (_tmp445_) {
+               ValaCCodeBlock* _tmp446_ = NULL;
+               const gchar* _tmp447_ = NULL;
+               gchar* _tmp448_ = NULL;
+               gchar* _tmp449_ = NULL;
+               ValaCCodeIdentifier* _tmp450_ = NULL;
+               ValaCCodeIdentifier* _tmp451_ = NULL;
+               ValaCCodeReturnStatement* _tmp452_ = NULL;
+               ValaCCodeReturnStatement* _tmp453_ = NULL;
+               _tmp446_ = type_block;
+               _tmp447_ = type_id_name;
+               _tmp448_ = g_strconcat (_tmp447_, "__volatile", NULL);
+               _tmp449_ = _tmp448_;
+               _tmp450_ = vala_ccode_identifier_new (_tmp449_);
+               _tmp451_ = _tmp450_;
+               _tmp452_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp451_);
+               _tmp453_ = _tmp452_;
+               vala_ccode_block_add_statement (_tmp446_, (ValaCCodeNode*) _tmp453_);
+               _vala_ccode_node_unref0 (_tmp453_);
+               _vala_ccode_node_unref0 (_tmp451_);
+               _g_free0 (_tmp449_);
        } else {
-               ValaCCodeBlock* _tmp483_ = NULL;
-               const gchar* _tmp484_ = NULL;
-               ValaCCodeIdentifier* _tmp485_ = NULL;
-               ValaCCodeIdentifier* _tmp486_ = NULL;
-               ValaCCodeReturnStatement* _tmp487_ = NULL;
-               ValaCCodeReturnStatement* _tmp488_ = NULL;
-               _tmp483_ = type_block;
-               _tmp484_ = type_id_name;
-               _tmp485_ = vala_ccode_identifier_new (_tmp484_);
-               _tmp486_ = _tmp485_;
-               _tmp487_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp486_);
-               _tmp488_ = _tmp487_;
-               vala_ccode_block_add_statement (_tmp483_, (ValaCCodeNode*) _tmp488_);
-               _vala_ccode_node_unref0 (_tmp488_);
-               _vala_ccode_node_unref0 (_tmp486_);
+               ValaCCodeBlock* _tmp454_ = NULL;
+               const gchar* _tmp455_ = NULL;
+               ValaCCodeIdentifier* _tmp456_ = NULL;
+               ValaCCodeIdentifier* _tmp457_ = NULL;
+               ValaCCodeReturnStatement* _tmp458_ = NULL;
+               ValaCCodeReturnStatement* _tmp459_ = NULL;
+               _tmp454_ = type_block;
+               _tmp455_ = type_id_name;
+               _tmp456_ = vala_ccode_identifier_new (_tmp455_);
+               _tmp457_ = _tmp456_;
+               _tmp458_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp457_);
+               _tmp459_ = _tmp458_;
+               vala_ccode_block_add_statement (_tmp454_, (ValaCCodeNode*) _tmp459_);
+               _vala_ccode_node_unref0 (_tmp459_);
+               _vala_ccode_node_unref0 (_tmp457_);
        }
-       _tmp489_ = fun;
-       vala_ccode_function_set_is_declaration (_tmp489_, TRUE);
-       _tmp490_ = self->priv->declaration_fragment;
-       _tmp491_ = fun;
-       _tmp492_ = vala_ccode_function_copy (_tmp491_);
-       _tmp493_ = _tmp492_;
-       vala_ccode_fragment_append (_tmp490_, (ValaCCodeNode*) _tmp493_);
-       _vala_ccode_node_unref0 (_tmp493_);
-       _tmp494_ = fun;
-       vala_ccode_function_set_is_declaration (_tmp494_, FALSE);
-       _tmp495_ = fun;
-       _tmp496_ = type_block;
-       vala_ccode_function_set_block (_tmp495_, _tmp496_);
-       _tmp497_ = self->priv->definition_fragment;
-       _tmp498_ = fun;
-       vala_ccode_fragment_append (_tmp497_, (ValaCCodeNode*) _tmp498_);
+       _tmp460_ = fun;
+       vala_ccode_function_set_is_declaration (_tmp460_, TRUE);
+       _tmp461_ = self->priv->declaration_fragment;
+       _tmp462_ = fun;
+       _tmp463_ = vala_ccode_function_copy (_tmp462_);
+       _tmp464_ = _tmp463_;
+       vala_ccode_fragment_append (_tmp461_, (ValaCCodeNode*) _tmp464_);
+       _vala_ccode_node_unref0 (_tmp464_);
+       _tmp465_ = fun;
+       vala_ccode_function_set_is_declaration (_tmp465_, FALSE);
+       _tmp466_ = fun;
+       _tmp467_ = type_block;
+       vala_ccode_function_set_block (_tmp466_, _tmp467_);
+       _tmp468_ = self->priv->definition_fragment;
+       _tmp469_ = fun;
+       vala_ccode_fragment_append (_tmp468_, (ValaCCodeNode*) _tmp469_);
        _vala_ccode_node_unref0 (reg_call);
        _vala_ccode_node_unref0 (type_init);
        _g_free0 (type_value_table_decl_name);
@@ -2163,27 +2078,27 @@ void vala_value_take_typeregister_function (GValue* value, gpointer v_object) {
 
 static void vala_typeregister_function_class_init (ValaTypeRegisterFunctionClass * klass) {
        vala_typeregister_function_parent_class = g_type_class_peek_parent (klass);
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->finalize = vala_typeregister_function_finalize;
+       ((ValaTypeRegisterFunctionClass *) klass)->finalize = vala_typeregister_function_finalize;
        g_type_class_add_private (klass, sizeof (ValaTypeRegisterFunctionPrivate));
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_declaration = vala_typeregister_function_real_get_type_declaration;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_struct_name = vala_typeregister_function_real_get_type_struct_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_base_init_func_name = vala_typeregister_function_real_get_base_init_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_class_finalize_func_name = vala_typeregister_function_real_get_class_finalize_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_base_finalize_func_name = vala_typeregister_function_real_get_base_finalize_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_class_init_func_name = vala_typeregister_function_real_get_class_init_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_instance_struct_size = vala_typeregister_function_real_get_instance_struct_size;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_instance_init_func_name = vala_typeregister_function_real_get_instance_init_func_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_parent_type_name = vala_typeregister_function_real_get_parent_type_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_gtype_value_table_init_function_name = vala_typeregister_function_real_get_gtype_value_table_init_function_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_gtype_value_table_peek_pointer_function_name = vala_typeregister_function_real_get_gtype_value_table_peek_pointer_function_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_gtype_value_table_free_function_name = vala_typeregister_function_real_get_gtype_value_table_free_function_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_gtype_value_table_copy_function_name = vala_typeregister_function_real_get_gtype_value_table_copy_function_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_gtype_value_table_lcopy_value_function_name = vala_typeregister_function_real_get_gtype_value_table_lcopy_value_function_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_gtype_value_table_collect_value_function_name = vala_typeregister_function_real_get_gtype_value_table_collect_value_function_name;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_flags = vala_typeregister_function_real_get_type_flags;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_interface_init_declaration = vala_typeregister_function_real_get_type_interface_init_declaration;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_type_interface_init_statements = vala_typeregister_function_real_get_type_interface_init_statements;
-       VALA_TYPEREGISTER_FUNCTION_CLASS (klass)->get_accessibility = vala_typeregister_function_real_get_accessibility;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_declaration = vala_typeregister_function_real_get_type_declaration;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_struct_name = vala_typeregister_function_real_get_type_struct_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_base_init_func_name = vala_typeregister_function_real_get_base_init_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_class_finalize_func_name = vala_typeregister_function_real_get_class_finalize_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_base_finalize_func_name = vala_typeregister_function_real_get_base_finalize_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_class_init_func_name = vala_typeregister_function_real_get_class_init_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_instance_struct_size = vala_typeregister_function_real_get_instance_struct_size;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_instance_init_func_name = vala_typeregister_function_real_get_instance_init_func_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_parent_type_name = vala_typeregister_function_real_get_parent_type_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_gtype_value_table_init_function_name = vala_typeregister_function_real_get_gtype_value_table_init_function_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_gtype_value_table_peek_pointer_function_name = vala_typeregister_function_real_get_gtype_value_table_peek_pointer_function_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_gtype_value_table_free_function_name = vala_typeregister_function_real_get_gtype_value_table_free_function_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_gtype_value_table_copy_function_name = vala_typeregister_function_real_get_gtype_value_table_copy_function_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_gtype_value_table_lcopy_value_function_name = vala_typeregister_function_real_get_gtype_value_table_lcopy_value_function_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_gtype_value_table_collect_value_function_name = vala_typeregister_function_real_get_gtype_value_table_collect_value_function_name;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_flags = vala_typeregister_function_real_get_type_flags;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_interface_init_declaration = vala_typeregister_function_real_get_type_interface_init_declaration;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_type_interface_init_statements = vala_typeregister_function_real_get_type_interface_init_statements;
+       ((ValaTypeRegisterFunctionClass *) klass)->get_accessibility = vala_typeregister_function_real_get_accessibility;
 }
 
 
@@ -2205,6 +2120,7 @@ static void vala_typeregister_function_instance_init (ValaTypeRegisterFunction *
 static void vala_typeregister_function_finalize (ValaTypeRegisterFunction* obj) {
        ValaTypeRegisterFunction * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_TYPEREGISTER_FUNCTION, ValaTypeRegisterFunction);
+       g_signal_handlers_destroy (self);
        _vala_ccode_node_unref0 (self->priv->source_declaration_fragment);
        _vala_ccode_node_unref0 (self->priv->declaration_fragment);
        _vala_ccode_node_unref0 (self->priv->definition_fragment);
index 61e77a8..b7c18f8 100644 (file)
@@ -75,6 +75,10 @@ public abstract class Vala.TypeRegisterFunction {
                                fun.modifiers = CCodeModifiers.STATIC;
                                // avoid C warning as this function is not always used
                                fun.attributes += " G_GNUC_UNUSED";
+                       } else if (context.hide_internal && get_accessibility () == SymbolAccessibility.INTERNAL) {
+                               fun.modifiers = CCodeModifiers.INTERNAL;
+                               // avoid C warning as this function is not always used
+                               fun.attributes += " G_GNUC_UNUSED";
                        }
                } else {
                        fun = new CCodeFunction ("%s_register_type".printf (CCodeBaseModule.get_ccode_lower_case_name (get_type_declaration ())), "GType");
@@ -124,20 +128,6 @@ public abstract class Vala.TypeRegisterFunction {
 
                type_init.add_statement (get_type_interface_init_declaration ());
 
-               if (cl != null && cl.has_class_private_fields && !context.require_glib_version (2, 24)) {
-                       CCodeFunctionCall quark_reg_call;
-
-                       if (plugin) {
-                               quark_reg_call = new CCodeFunctionCall (new CCodeIdentifier ("g_quark_from_string"));
-                       } else {
-                               quark_reg_call = new CCodeFunctionCall (new CCodeIdentifier ("g_quark_from_static_string"));
-                       }
-
-                       quark_reg_call.add_argument (new CCodeConstant ("\"Vala%sClassPrivate\"".printf (CCodeBaseModule.get_ccode_name (get_type_declaration ()))));
-
-                       type_init.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeIdentifier ("_vala_%s_class_private_quark".printf (CCodeBaseModule.get_ccode_lower_case_name (get_type_declaration ()))), quark_reg_call)));
-               }
-
                CCodeFunctionCall reg_call;
                if (get_type_declaration () is Struct) {
                        reg_call = new CCodeFunctionCall (new CCodeIdentifier ("g_boxed_type_register_static"));
@@ -213,7 +203,7 @@ public abstract class Vala.TypeRegisterFunction {
                        type_init.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeIdentifier (type_id_name), reg_call)));
                }
 
-                if (cl != null && cl.has_class_private_fields && context.require_glib_version (2, 24)) {
+                if (cl != null && cl.has_class_private_fields) {
                        CCodeFunctionCall add_class_private_call;
 
                        add_class_private_call = new CCodeFunctionCall (new CCodeIdentifier ("g_type_add_class_private"));
index d6e7f81..1a513fa 100644 (file)
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.common
+
 NULL =
 
 AM_CPPFLAGS = \
@@ -26,13 +28,23 @@ valac_SOURCES = \
        $(NULL)
 
 valac.vala.stamp: $(valac_VALASOURCES)
-       $(VALA_V)$(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir $(srcdir)/../gee --pkg gee --vapidir $(srcdir)/../ccode --pkg ccode --vapidir $(srcdir)/../vala --pkg vala --vapidir $(srcdir)/../codegen --pkg codegen --pkg config $^
+       $(VALA_V)$(VALAC) \
+               $(COVERAGE_VALAFLAGS) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi --pkg gobject-2.0 \
+               --vapidir $(top_srcdir)/gee --pkg gee \
+               --vapidir $(top_srcdir)/ccode --pkg ccode \
+               --vapidir $(top_srcdir)/vala --pkg vala \
+               --vapidir $(top_srcdir)/codegen --pkg codegen \
+               --pkg config \
+               $^
        @touch $@
 
 valac_LDADD = \
        $(COVERAGE_LIBS) \
        $(GLIB_LIBS) \
-       ../codegen/libvala@PACKAGE_SUFFIX@.la \
+       $(top_builddir)/codegen/libvala@PACKAGE_SUFFIX@.la \
        $(NULL)
 
 EXTRA_DIST = $(valac_VALASOURCES) valac.vala.stamp
@@ -47,7 +59,3 @@ endif
 MAINTAINERCLEANFILES = \
        $(valac_VALASOURCES:.vala=.c) \
        $(NULL)
-
-VALA_V = $(VALA_V_$(V))
-VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
-VALA_V_0 = @echo "  VALAC " $^;
index ef09a1b..0569692 100644 (file)
@@ -77,10 +77,10 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/Makefile.common $(srcdir)/Makefile.in \
+       $(srcdir)/Makefile.am $(top_srcdir)/build-aux/depcomp
 bin_PROGRAMS = valac$(EXEEXT) $(am__EXEEXT_1)
 subdir = compiler
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/build-aux/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
        $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -101,7 +101,8 @@ am_valac_OBJECTS = $(am__objects_2) $(am__objects_1)
 valac_OBJECTS = $(am_valac_OBJECTS)
 am__DEPENDENCIES_1 =
 valac_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-       ../codegen/libvala@PACKAGE_SUFFIX@.la $(am__DEPENDENCIES_1)
+       $(top_builddir)/codegen/libvala@PACKAGE_SUFFIX@.la \
+       $(am__DEPENDENCIES_1)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
@@ -275,7 +276,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -304,8 +304,9 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
+VALA_V = $(VALA_V_$(V))
+VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
+VALA_V_0 = @echo "  VALAC " $^;
 NULL = 
 AM_CPPFLAGS = \
        $(COVERAGE_CFLAGS) \
@@ -330,7 +331,7 @@ valac_SOURCES = \
 valac_LDADD = \
        $(COVERAGE_LIBS) \
        $(GLIB_LIBS) \
-       ../codegen/libvala@PACKAGE_SUFFIX@.la \
+       $(top_builddir)/codegen/libvala@PACKAGE_SUFFIX@.la \
        $(NULL)
 
 EXTRA_DIST = $(valac_VALASOURCES) valac.vala.stamp
@@ -338,15 +339,12 @@ MAINTAINERCLEANFILES = \
        $(valac_VALASOURCES:.vala=.c) \
        $(NULL)
 
-VALA_V = $(VALA_V_$(V))
-VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
-VALA_V_0 = @echo "  VALAC " $^;
 all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.common $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -367,6 +365,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
+$(top_srcdir)/Makefile.common:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -678,7 +677,17 @@ uninstall-am: uninstall-binPROGRAMS
 
 
 valac.vala.stamp: $(valac_VALASOURCES)
-       $(VALA_V)$(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir $(srcdir)/../gee --pkg gee --vapidir $(srcdir)/../ccode --pkg ccode --vapidir $(srcdir)/../vala --pkg vala --vapidir $(srcdir)/../codegen --pkg codegen --pkg config $^
+       $(VALA_V)$(VALAC) \
+               $(COVERAGE_VALAFLAGS) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi --pkg gobject-2.0 \
+               --vapidir $(top_srcdir)/gee --pkg gee \
+               --vapidir $(top_srcdir)/ccode --pkg ccode \
+               --vapidir $(top_srcdir)/vala --pkg vala \
+               --vapidir $(top_srcdir)/codegen --pkg codegen \
+               --pkg config \
+               $^
        @touch $@
 
 install-exec-hook:
index 2b9ef48..f383b85 100644 (file)
@@ -130,6 +130,8 @@ static gchar* vala_compiler_internal_vapi_filename;
 static gchar* vala_compiler_internal_vapi_filename = NULL;
 static gchar* vala_compiler_fast_vapi_filename;
 static gchar* vala_compiler_fast_vapi_filename = NULL;
+static gboolean vala_compiler_vapi_comments;
+static gboolean vala_compiler_vapi_comments = FALSE;
 static gchar* vala_compiler_symbols_filename;
 static gchar* vala_compiler_symbols_filename = NULL;
 static gchar* vala_compiler_includedir;
@@ -150,6 +152,8 @@ static gboolean vala_compiler_enable_checking;
 static gboolean vala_compiler_enable_checking = FALSE;
 static gboolean vala_compiler_deprecated;
 static gboolean vala_compiler_deprecated = FALSE;
+static gboolean vala_compiler_hide_internal;
+static gboolean vala_compiler_hide_internal = FALSE;
 static gboolean vala_compiler_experimental;
 static gboolean vala_compiler_experimental = FALSE;
 static gboolean vala_compiler_experimental_non_null;
@@ -162,6 +166,8 @@ static gchar* vala_compiler_cc_command;
 static gchar* vala_compiler_cc_command = NULL;
 static gchar** vala_compiler_cc_options;
 static gchar** vala_compiler_cc_options = NULL;
+static gchar* vala_compiler_pkg_config_command;
+static gchar* vala_compiler_pkg_config_command = NULL;
 static gchar* vala_compiler_dump_tree;
 static gchar* vala_compiler_dump_tree = NULL;
 static gboolean vala_compiler_save_temps;
@@ -212,15 +218,15 @@ ValaCompiler* vala_compiler_construct (GType object_type);
 static void _vala_array_add1 (gchar*** array, int* length, int* size, gchar* value);
 static Block1Data* block1_data_ref (Block1Data* _data1_);
 static void block1_data_unref (void * _userdata_);
-static void ___lambda3_ (Block1Data* _data1_, GPid pid, gint status);
-static void ____lambda3__gchild_watch_func (GPid pid, gint status, gpointer self);
+static void ___lambda4_ (Block1Data* _data1_, GPid pid, gint status);
+static void ____lambda4__gchild_watch_func (GPid pid, gint status, gpointer self);
 static gint vala_compiler_main (gchar** args, int args_length1);
 static void vala_compiler_finalize (ValaCompiler* obj);
 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
 static gint _vala_array_length (gpointer array);
 
-static const GOptionEntry VALA_COMPILER_options[50] = {{"vapidir", (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_compiler_vapi_directories, "Look for package bindings in DIRECTORY", "DIRECTORY..."}, {"girdir", (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_compiler_gir_directories, "Look for .gir files in DIRECTORY", "DIRECTORY..."}, {"metadatadir", (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_compiler_metadata_directories, "Look for GIR .metadata files in DIRECTORY", "DIRECTORY..."}, {"pkg", (gchar) 0, 0, G_OPTION_ARG_STRING_ARRAY, &vala_compiler_packages, "Include binding for PACKAGE", "PACKAGE..."}, {"vapi", (gchar) 0, 0, G_OPTION_ARG_FILENAME, &vala_compiler_vapi_filename, "Output VAPI file name", "FILE"}, {"library", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_library, "Library name", "NAME"}, {"gir", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_gir, "GObject-Introspection repository file name", "NAME-VERSION.gir"}, {"basedir", 'b', 0, G_OPTION_ARG_FILENAME, &vala_compiler_basedir, "Base source directory", "DIRECTORY"}, {"directory", 'd', 0, G_OPTION_ARG_FILENAME, &vala_compiler_directory, "Output directory", "DIRECTORY"}, {"version", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_version, "Display version number", NULL}, {"api-version", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_api_version, "Display API version number", NULL}, {"ccode", 'C', 0, G_OPTION_ARG_NONE, &vala_compiler_ccode_only, "Output C code", NULL}, {"header", 'H', 0, G_OPTION_ARG_FILENAME, &vala_compiler_header_filename, "Output C header file", "FILE"}, {"use-header", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_use_header, "Use C header file", NULL}, {"includedir", (gchar) 0, 0, G_OPTION_ARG_FILENAME, &vala_compiler_includedir, "Directory used to include the C header file", "DIRECTORY"}, {"internal-header", 'h', 0, G_OPTION_ARG_FILENAME, &vala_compiler_internal_header_filename, "Output internal C header file", "FILE"}, {"internal-vapi", (gchar) 0, 0, G_OPTION_ARG_FILENAME, &vala_compiler_internal_vapi_filename, "Output vapi with internal api", "FILE"}, {"fast-vapi", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_fast_vapi_filename, "Output vapi without performing symbol resolution", NULL}, {"use-fast-vapi", (gchar) 0, 0, G_OPTION_ARG_STRING_ARRAY, &vala_compiler_fast_vapis, "Use --fast-vapi output during this compile", NULL}, {"deps", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_dependencies, "Write make-style dependency information to this file", NULL}, {"symbols", (gchar) 0, 0, G_OPTION_ARG_FILENAME, &vala_compiler_symbols_filename, "Output symbols file", "FILE"}, {"compile", 'c', 0, G_OPTION_ARG_NONE, &vala_compiler_compile_only, "Compile but do not link", NULL}, {"output", 'o', 0, G_OPTION_ARG_FILENAME, &vala_compiler_output, "Place output in file FILE", "FILE"}, {"debug", 'g', 0, G_OPTION_ARG_NONE, &vala_compiler_debug, "Produce debug information", NULL}, {"thread", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_thread, "Enable multithreading support", NULL}, {"enable-mem-profiler", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_mem_profiler, "Enable GLib memory profiler", NULL}, {"define", 'D', 0, G_OPTION_ARG_STRING_ARRAY, &vala_compiler_defines, "Define SYMBOL", "SYMBOL..."}, {"main", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_entry_point, "Use SYMBOL as entry point", "SYMBOL..."}, {"nostdpkg", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_nostdpkg, "Do not include standard packages", NULL}, {"disable-assert", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_disable_assert, "Disable assertions", NULL}, {"enable-checking", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_enable_checking, "Enable additional run-time checks", NULL}, {"enable-deprecated", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_deprecated, "Enable deprecated features", NULL}, {"enable-experimental", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_experimental, "Enable experimental features", NULL}, {"disable-warnings", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_disable_warnings, "Disable warnings", NULL}, {"fatal-warnings", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_fatal_warnings, "Treat warnings as fatal", NULL}, {"enable-experimental-non-null", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_experimental_non_null, "Enable experimental enhancements for non-null types", NULL}, {"enable-gobject-tracing", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_gobject_tracing, "Enable GObject creation tracing", NULL}, {"cc", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_cc_command, "Use COMMAND as C compiler command", "COMMAND"}, {"Xcc", 'X', 0, G_OPTION_ARG_STRING_ARRAY, &vala_compiler_cc_options, "Pass OPTION to the C compiler", "OPTION..."}, {"dump-tree", (gchar) 0, 0, G_OPTION_ARG_FILENAME, &vala_compiler_dump_tree, "Write code tree to FILE", "FILE"}, {"save-temps", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_save_temps, "Keep temporary files", NULL}, {"profile", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_profile, "Use the given profile instead of the default", "PROFILE"}, {"quiet", 'q', 0, G_OPTION_ARG_NONE, &vala_compiler_quiet_mode, "Do not print messages to the console", NULL}, {"verbose", 'v', 0, G_OPTION_ARG_NONE, &vala_compiler_verbose_mode, "Print additional messages to the console", NULL}, {"target-glib", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_target_glib, "Target version of glib for code generation", "MAJOR.MINOR"}, {"gresources", (gchar) 0, 0, G_OPTION_ARG_STRING_ARRAY, &vala_compiler_gresources, "XML of gresources", "FILE..."}, {"enable-version-header", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_enable_version_header, "Write vala build version in generated files", NULL}, {"disable-version-header", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_disable_version_header, "Do not write vala build version in generated files", NULL}, {"", (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_compiler_sources, NULL, "FILE..."}, {NULL}};
+static const GOptionEntry VALA_COMPILER_options[53] = {{"vapidir", (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_compiler_vapi_directories, "Look for package bindings in DIRECTORY", "DIRECTORY..."}, {"girdir", (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_compiler_gir_directories, "Look for .gir files in DIRECTORY", "DIRECTORY..."}, {"metadatadir", (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_compiler_metadata_directories, "Look for GIR .metadata files in DIRECTORY", "DIRECTORY..."}, {"pkg", (gchar) 0, 0, G_OPTION_ARG_STRING_ARRAY, &vala_compiler_packages, "Include binding for PACKAGE", "PACKAGE..."}, {"vapi", (gchar) 0, 0, G_OPTION_ARG_FILENAME, &vala_compiler_vapi_filename, "Output VAPI file name", "FILE"}, {"library", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_library, "Library name", "NAME"}, {"gir", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_gir, "GObject-Introspection repository file name", "NAME-VERSION.gir"}, {"basedir", 'b', 0, G_OPTION_ARG_FILENAME, &vala_compiler_basedir, "Base source directory", "DIRECTORY"}, {"directory", 'd', 0, G_OPTION_ARG_FILENAME, &vala_compiler_directory, "Output directory", "DIRECTORY"}, {"version", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_version, "Display version number", NULL}, {"api-version", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_api_version, "Display API version number", NULL}, {"ccode", 'C', 0, G_OPTION_ARG_NONE, &vala_compiler_ccode_only, "Output C code", NULL}, {"header", 'H', 0, G_OPTION_ARG_FILENAME, &vala_compiler_header_filename, "Output C header file", "FILE"}, {"use-header", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_use_header, "Use C header file", NULL}, {"includedir", (gchar) 0, 0, G_OPTION_ARG_FILENAME, &vala_compiler_includedir, "Directory used to include the C header file", "DIRECTORY"}, {"internal-header", 'h', 0, G_OPTION_ARG_FILENAME, &vala_compiler_internal_header_filename, "Output internal C header file", "FILE"}, {"internal-vapi", (gchar) 0, 0, G_OPTION_ARG_FILENAME, &vala_compiler_internal_vapi_filename, "Output vapi with internal api", "FILE"}, {"fast-vapi", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_fast_vapi_filename, "Output vapi without performing symbol resolution", NULL}, {"use-fast-vapi", (gchar) 0, 0, G_OPTION_ARG_STRING_ARRAY, &vala_compiler_fast_vapis, "Use --fast-vapi output during this compile", NULL}, {"vapi-comments", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_vapi_comments, "Include comments in generated vapi", NULL}, {"deps", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_dependencies, "Write make-style dependency information to this file", NULL}, {"symbols", (gchar) 0, 0, G_OPTION_ARG_FILENAME, &vala_compiler_symbols_filename, "Output symbols file", "FILE"}, {"compile", 'c', 0, G_OPTION_ARG_NONE, &vala_compiler_compile_only, "Compile but do not link", NULL}, {"output", 'o', 0, G_OPTION_ARG_FILENAME, &vala_compiler_output, "Place output in file FILE", "FILE"}, {"debug", 'g', 0, G_OPTION_ARG_NONE, &vala_compiler_debug, "Produce debug information", NULL}, {"thread", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_thread, "Enable multithreading support", NULL}, {"enable-mem-profiler", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_mem_profiler, "Enable GLib memory profiler", NULL}, {"define", 'D', 0, G_OPTION_ARG_STRING_ARRAY, &vala_compiler_defines, "Define SYMBOL", "SYMBOL..."}, {"main", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_entry_point, "Use SYMBOL as entry point", "SYMBOL..."}, {"nostdpkg", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_nostdpkg, "Do not include standard packages", NULL}, {"disable-assert", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_disable_assert, "Disable assertions", NULL}, {"enable-checking", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_enable_checking, "Enable additional run-time checks", NULL}, {"enable-deprecated", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_deprecated, "Enable deprecated features", NULL}, {"hide-internal", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_hide_internal, "Hide symbols marked as internal", NULL}, {"enable-experimental", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_experimental, "Enable experimental features", NULL}, {"disable-warnings", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_disable_warnings, "Disable warnings", NULL}, {"fatal-warnings", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_fatal_warnings, "Treat warnings as fatal", NULL}, {"enable-experimental-non-null", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_experimental_non_null, "Enable experimental enhancements for non-null types", NULL}, {"enable-gobject-tracing", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_gobject_tracing, "Enable GObject creation tracing", NULL}, {"cc", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_cc_command, "Use COMMAND as C compiler command", "COMMAND"}, {"Xcc", 'X', 0, G_OPTION_ARG_STRING_ARRAY, &vala_compiler_cc_options, "Pass OPTION to the C compiler", "OPTION..."}, {"pkg-config", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_pkg_config_command, "Use COMMAND as pkg-config command", "COMMAND"}, {"dump-tree", (gchar) 0, 0, G_OPTION_ARG_FILENAME, &vala_compiler_dump_tree, "Write code tree to FILE", "FILE"}, {"save-temps", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_save_temps, "Keep temporary files", NULL}, {"profile", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_profile, "Use the given profile instead of the default", "PROFILE"}, {"quiet", 'q', 0, G_OPTION_ARG_NONE, &vala_compiler_quiet_mode, "Do not print messages to the console", NULL}, {"verbose", 'v', 0, G_OPTION_ARG_NONE, &vala_compiler_verbose_mode, "Print additional messages to the console", NULL}, {"target-glib", (gchar) 0, 0, G_OPTION_ARG_STRING, &vala_compiler_target_glib, "Target version of glib for code generation", "MAJOR.MINOR"}, {"gresources", (gchar) 0, 0, G_OPTION_ARG_STRING_ARRAY, &vala_compiler_gresources, "XML of gresources", "FILE..."}, {"enable-version-header", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_enable_version_header, "Write vala build version in generated files", NULL}, {"disable-version-header", (gchar) 0, 0, G_OPTION_ARG_NONE, &vala_compiler_disable_version_header, "Do not write vala build version in generated files", NULL}, {"", (gchar) 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &vala_compiler_sources, NULL, "FILE..."}, {NULL}};
 
 static gint vala_compiler_quit (ValaCompiler* self) {
        gint result = 0;
@@ -553,14 +559,14 @@ static gint vala_compiler_run (ValaCompiler* self) {
        ValaCodeContext* _tmp29_ = NULL;
        gboolean _tmp30_ = FALSE;
        ValaCodeContext* _tmp31_ = NULL;
-       ValaReport* _tmp32_ = NULL;
-       ValaReport* _tmp33_ = NULL;
-       gboolean _tmp34_ = FALSE;
-       ValaCodeContext* _tmp35_ = NULL;
-       ValaReport* _tmp36_ = NULL;
-       ValaReport* _tmp37_ = NULL;
-       gboolean _tmp38_ = FALSE;
-       ValaCodeContext* _tmp39_ = NULL;
+       gboolean _tmp32_ = FALSE;
+       ValaCodeContext* _tmp33_ = NULL;
+       ValaReport* _tmp34_ = NULL;
+       ValaReport* _tmp35_ = NULL;
+       gboolean _tmp36_ = FALSE;
+       ValaCodeContext* _tmp37_ = NULL;
+       ValaReport* _tmp38_ = NULL;
+       ValaReport* _tmp39_ = NULL;
        gboolean _tmp40_ = FALSE;
        ValaCodeContext* _tmp41_ = NULL;
        gboolean _tmp42_ = FALSE;
@@ -568,145 +574,158 @@ static gint vala_compiler_run (ValaCompiler* self) {
        gboolean _tmp44_ = FALSE;
        ValaCodeContext* _tmp45_ = NULL;
        gboolean _tmp46_ = FALSE;
-       ValaCodeContext* _tmp47_ = NULL;
-       const gchar* _tmp48_ = NULL;
-       gboolean _tmp49_ = FALSE;
-       const gchar* _tmp50_ = NULL;
+       gboolean _tmp47_ = FALSE;
+       gboolean _tmp48_ = FALSE;
+       ValaCodeContext* _tmp50_ = NULL;
+       gboolean _tmp51_ = FALSE;
        ValaCodeContext* _tmp52_ = NULL;
-       gboolean _tmp53_ = FALSE;
-       ValaCodeContext* _tmp54_ = NULL;
+       const gchar* _tmp53_ = NULL;
+       gboolean _tmp54_ = FALSE;
        const gchar* _tmp55_ = NULL;
-       ValaCodeContext* _tmp56_ = NULL;
-       const gchar* _tmp57_ = NULL;
-       ValaCodeContext* _tmp58_ = NULL;
-       const gchar* _tmp59_ = NULL;
-       ValaCodeContext* _tmp60_ = NULL;
-       const gchar* _tmp61_ = NULL;
+       ValaCodeContext* _tmp57_ = NULL;
+       gboolean _tmp58_ = FALSE;
+       ValaCodeContext* _tmp59_ = NULL;
+       const gchar* _tmp60_ = NULL;
+       ValaCodeContext* _tmp61_ = NULL;
        const gchar* _tmp62_ = NULL;
+       ValaCodeContext* _tmp63_ = NULL;
+       const gchar* _tmp64_ = NULL;
+       ValaCodeContext* _tmp65_ = NULL;
+       const gchar* _tmp66_ = NULL;
+       gboolean _tmp67_ = FALSE;
+       const gchar* _tmp68_ = NULL;
        const gchar* _tmp70_ = NULL;
-       ValaCodeContext* _tmp79_ = NULL;
-       gchar** _tmp80_ = NULL;
-       gint _tmp80__length1 = 0;
-       gchar** _tmp81_ = NULL;
-       gint _tmp81__length1 = 0;
-       ValaCodeContext* _tmp82_ = NULL;
-       gchar** _tmp83_ = NULL;
-       gint _tmp83__length1 = 0;
-       gchar** _tmp84_ = NULL;
-       gint _tmp84__length1 = 0;
-       ValaCodeContext* _tmp85_ = NULL;
-       gchar** _tmp86_ = NULL;
-       gint _tmp86__length1 = 0;
-       gchar** _tmp87_ = NULL;
-       gint _tmp87__length1 = 0;
-       ValaCodeContext* _tmp88_ = NULL;
-       gboolean _tmp89_ = FALSE;
+       const gchar* _tmp78_ = NULL;
+       ValaCodeContext* _tmp87_ = NULL;
+       gchar** _tmp88_ = NULL;
+       gint _tmp88__length1 = 0;
+       gchar** _tmp89_ = NULL;
+       gint _tmp89__length1 = 0;
        ValaCodeContext* _tmp90_ = NULL;
        gboolean _tmp91_ = FALSE;
        ValaCodeContext* _tmp92_ = NULL;
-       gboolean _tmp93_ = FALSE;
-       ValaCodeContext* _tmp94_ = NULL;
-       gboolean _tmp95_ = FALSE;
-       gboolean _tmp96_ = FALSE;
-       gboolean _tmp97_ = FALSE;
-       const gchar* _tmp98_ = NULL;
+       gchar** _tmp93_ = NULL;
+       gint _tmp93__length1 = 0;
+       gchar** _tmp94_ = NULL;
+       gint _tmp94__length1 = 0;
+       ValaCodeContext* _tmp95_ = NULL;
+       gchar** _tmp96_ = NULL;
+       gint _tmp96__length1 = 0;
+       gchar** _tmp97_ = NULL;
+       gint _tmp97__length1 = 0;
+       ValaCodeContext* _tmp98_ = NULL;
+       gboolean _tmp99_ = FALSE;
+       ValaCodeContext* _tmp100_ = NULL;
+       gboolean _tmp101_ = FALSE;
+       ValaCodeContext* _tmp102_ = NULL;
+       gboolean _tmp103_ = FALSE;
+       ValaCodeContext* _tmp104_ = NULL;
+       gboolean _tmp105_ = FALSE;
        gboolean _tmp106_ = FALSE;
-       const gchar* _tmp107_ = NULL;
-       ValaCodeContext* _tmp108_ = NULL;
+       gboolean _tmp107_ = FALSE;
        gboolean _tmp109_ = FALSE;
-       ValaCodeContext* _tmp110_ = NULL;
+       gboolean _tmp110_ = FALSE;
        const gchar* _tmp111_ = NULL;
-       ValaCodeContext* _tmp112_ = NULL;
-       gboolean _tmp113_ = FALSE;
-       gchar** _tmp114_ = NULL;
-       gint _tmp114__length1 = 0;
+       gboolean _tmp119_ = FALSE;
+       const gchar* _tmp120_ = NULL;
+       ValaCodeContext* _tmp121_ = NULL;
+       gboolean _tmp122_ = FALSE;
+       ValaCodeContext* _tmp123_ = NULL;
+       const gchar* _tmp124_ = NULL;
+       ValaCodeContext* _tmp125_ = NULL;
+       gboolean _tmp126_ = FALSE;
+       gchar** _tmp127_ = NULL;
+       gint _tmp127__length1 = 0;
        gint glib_major = 0;
        gint glib_minor = 0;
-       gboolean _tmp126_ = FALSE;
-       const gchar* _tmp127_ = NULL;
-       ValaCodeContext* _tmp130_ = NULL;
-       gint _tmp131_ = 0;
-       ValaCodeContext* _tmp132_ = NULL;
-       gint _tmp133_ = 0;
-       ValaCodeContext* _tmp134_ = NULL;
-       gint _tmp135_ = 0;
-       gint _tmp136_ = 0;
-       gboolean _tmp145_ = FALSE;
-       gchar** _tmp148_ = NULL;
-       gint _tmp148__length1 = 0;
-       gchar** _tmp153_ = NULL;
-       gint _tmp153__length1 = 0;
-       ValaCodeContext* _tmp164_ = NULL;
-       gchar** _tmp165_ = NULL;
-       gint _tmp165__length1 = 0;
+       gboolean _tmp139_ = FALSE;
+       const gchar* _tmp140_ = NULL;
+       ValaCodeContext* _tmp143_ = NULL;
+       gint _tmp144_ = 0;
+       ValaCodeContext* _tmp145_ = NULL;
+       gint _tmp146_ = 0;
+       ValaCodeContext* _tmp147_ = NULL;
+       gint _tmp148_ = 0;
+       gint _tmp149_ = 0;
+       gboolean _tmp158_ = FALSE;
+       gchar** _tmp161_ = NULL;
+       gint _tmp161__length1 = 0;
        gchar** _tmp166_ = NULL;
        gint _tmp166__length1 = 0;
-       gboolean _tmp167_ = FALSE;
-       ValaCodeContext* _tmp168_ = NULL;
-       ValaReport* _tmp169_ = NULL;
-       ValaReport* _tmp170_ = NULL;
-       gint _tmp171_ = 0;
-       ValaCodeContext* _tmp179_ = NULL;
-       ValaGDBusServerModule* _tmp180_ = NULL;
-       ValaGDBusServerModule* _tmp181_ = NULL;
+       ValaCodeContext* _tmp177_ = NULL;
+       gchar** _tmp178_ = NULL;
+       gint _tmp178__length1 = 0;
+       gchar** _tmp179_ = NULL;
+       gint _tmp179__length1 = 0;
+       gboolean _tmp180_ = FALSE;
+       ValaCodeContext* _tmp181_ = NULL;
+       ValaReport* _tmp182_ = NULL;
+       ValaReport* _tmp183_ = NULL;
+       gint _tmp184_ = 0;
+       ValaCodeContext* _tmp192_ = NULL;
+       ValaGDBusServerModule* _tmp193_ = NULL;
+       ValaGDBusServerModule* _tmp194_ = NULL;
        gboolean has_c_files = FALSE;
-       gchar** _tmp182_ = NULL;
-       gint _tmp182__length1 = 0;
-       gboolean _tmp190_ = FALSE;
-       ValaCodeContext* _tmp191_ = NULL;
-       ValaReport* _tmp192_ = NULL;
-       ValaReport* _tmp193_ = NULL;
-       gint _tmp194_ = 0;
+       gboolean has_h_files = FALSE;
+       gchar** _tmp195_ = NULL;
+       gint _tmp195__length1 = 0;
+       gboolean _tmp205_ = FALSE;
+       gboolean _tmp206_ = FALSE;
+       gboolean _tmp210_ = FALSE;
+       ValaCodeContext* _tmp211_ = NULL;
+       ValaReport* _tmp212_ = NULL;
+       ValaReport* _tmp213_ = NULL;
+       gint _tmp214_ = 0;
        ValaParser* parser = NULL;
-       ValaParser* _tmp202_ = NULL;
-       ValaParser* _tmp203_ = NULL;
-       ValaCodeContext* _tmp204_ = NULL;
+       ValaParser* _tmp222_ = NULL;
+       ValaParser* _tmp223_ = NULL;
+       ValaCodeContext* _tmp224_ = NULL;
        ValaGenieParser* genie_parser = NULL;
-       ValaGenieParser* _tmp205_ = NULL;
-       ValaGenieParser* _tmp206_ = NULL;
-       ValaCodeContext* _tmp207_ = NULL;
+       ValaGenieParser* _tmp225_ = NULL;
+       ValaGenieParser* _tmp226_ = NULL;
+       ValaCodeContext* _tmp227_ = NULL;
        ValaGirParser* gir_parser = NULL;
-       ValaGirParser* _tmp208_ = NULL;
-       ValaGirParser* _tmp209_ = NULL;
-       ValaCodeContext* _tmp210_ = NULL;
-       gboolean _tmp211_ = FALSE;
-       ValaCodeContext* _tmp212_ = NULL;
-       ValaReport* _tmp213_ = NULL;
-       ValaReport* _tmp214_ = NULL;
-       gint _tmp215_ = 0;
-       const gchar* _tmp223_ = NULL;
-       ValaCodeContext* _tmp229_ = NULL;
-       gboolean _tmp230_ = FALSE;
-       ValaCodeContext* _tmp231_ = NULL;
-       ValaReport* _tmp232_ = NULL;
+       ValaGirParser* _tmp228_ = NULL;
+       ValaGirParser* _tmp229_ = NULL;
+       ValaCodeContext* _tmp230_ = NULL;
+       gboolean _tmp231_ = FALSE;
+       ValaCodeContext* _tmp232_ = NULL;
        ValaReport* _tmp233_ = NULL;
-       gint _tmp234_ = 0;
-       gboolean _tmp242_ = FALSE;
-       gboolean _tmp243_ = FALSE;
-       gboolean _tmp244_ = FALSE;
-       const gchar* _tmp252_ = NULL;
-       gboolean _tmp257_ = FALSE;
-       ValaCodeContext* _tmp258_ = NULL;
-       ValaReport* _tmp259_ = NULL;
-       ValaReport* _tmp260_ = NULL;
-       gint _tmp261_ = 0;
-       ValaCodeContext* _tmp269_ = NULL;
-       ValaCodeGenerator* _tmp270_ = NULL;
-       ValaCodeGenerator* _tmp271_ = NULL;
-       ValaCodeContext* _tmp272_ = NULL;
-       gboolean _tmp273_ = FALSE;
-       ValaCodeContext* _tmp274_ = NULL;
-       ValaReport* _tmp275_ = NULL;
-       ValaReport* _tmp276_ = NULL;
-       gint _tmp277_ = 0;
-       gboolean _tmp285_ = FALSE;
-       const gchar* _tmp286_ = NULL;
-       const gchar* _tmp290_ = NULL;
-       const gchar* _tmp342_ = NULL;
-       const gchar* _tmp356_ = NULL;
-       const gchar* _tmp379_ = NULL;
-       gboolean _tmp382_ = FALSE;
-       gint _tmp399_ = 0;
+       ValaReport* _tmp234_ = NULL;
+       gint _tmp235_ = 0;
+       const gchar* _tmp243_ = NULL;
+       ValaCodeContext* _tmp249_ = NULL;
+       gboolean _tmp250_ = FALSE;
+       ValaCodeContext* _tmp251_ = NULL;
+       ValaReport* _tmp252_ = NULL;
+       ValaReport* _tmp253_ = NULL;
+       gint _tmp254_ = 0;
+       gboolean _tmp262_ = FALSE;
+       gboolean _tmp263_ = FALSE;
+       gboolean _tmp264_ = FALSE;
+       const gchar* _tmp272_ = NULL;
+       gboolean _tmp277_ = FALSE;
+       ValaCodeContext* _tmp278_ = NULL;
+       ValaReport* _tmp279_ = NULL;
+       ValaReport* _tmp280_ = NULL;
+       gint _tmp281_ = 0;
+       ValaCodeContext* _tmp289_ = NULL;
+       ValaCodeGenerator* _tmp290_ = NULL;
+       ValaCodeGenerator* _tmp291_ = NULL;
+       ValaCodeContext* _tmp292_ = NULL;
+       gboolean _tmp293_ = FALSE;
+       ValaCodeContext* _tmp294_ = NULL;
+       ValaReport* _tmp295_ = NULL;
+       ValaReport* _tmp296_ = NULL;
+       gint _tmp297_ = 0;
+       gboolean _tmp305_ = FALSE;
+       const gchar* _tmp306_ = NULL;
+       const gchar* _tmp310_ = NULL;
+       const gchar* _tmp362_ = NULL;
+       const gchar* _tmp376_ = NULL;
+       const gchar* _tmp399_ = NULL;
+       gboolean _tmp402_ = FALSE;
+       gint _tmp426_ = 0;
        g_return_val_if_fail (self != NULL, 0);
        _tmp0_ = vala_code_context_new ();
        _vala_code_context_unref0 (self->priv->context);
@@ -777,215 +796,256 @@ static gint vala_compiler_run (ValaCompiler* self) {
        _tmp24_ = vala_compiler_deprecated;
        vala_code_context_set_deprecated (_tmp23_, _tmp24_);
        _tmp25_ = self->priv->context;
-       _tmp26_ = vala_compiler_experimental;
-       vala_code_context_set_experimental (_tmp25_, _tmp26_);
+       _tmp26_ = vala_compiler_hide_internal;
+       vala_code_context_set_hide_internal (_tmp25_, _tmp26_);
        _tmp27_ = self->priv->context;
-       _tmp28_ = vala_compiler_experimental_non_null;
-       vala_code_context_set_experimental_non_null (_tmp27_, _tmp28_);
+       _tmp28_ = vala_compiler_experimental;
+       vala_code_context_set_experimental (_tmp27_, _tmp28_);
        _tmp29_ = self->priv->context;
-       _tmp30_ = vala_compiler_gobject_tracing;
-       vala_code_context_set_gobject_tracing (_tmp29_, _tmp30_);
+       _tmp30_ = vala_compiler_experimental_non_null;
+       vala_code_context_set_experimental_non_null (_tmp29_, _tmp30_);
        _tmp31_ = self->priv->context;
-       _tmp32_ = vala_code_context_get_report (_tmp31_);
-       _tmp33_ = _tmp32_;
-       _tmp34_ = vala_compiler_disable_warnings;
-       vala_report_set_enable_warnings (_tmp33_, !_tmp34_);
-       _tmp35_ = self->priv->context;
-       _tmp36_ = vala_code_context_get_report (_tmp35_);
-       _tmp37_ = _tmp36_;
-       _tmp38_ = vala_compiler_quiet_mode;
-       vala_report_set_verbose_errors (_tmp37_, !_tmp38_);
-       _tmp39_ = self->priv->context;
-       _tmp40_ = vala_compiler_verbose_mode;
-       vala_code_context_set_verbose_mode (_tmp39_, _tmp40_);
+       _tmp32_ = vala_compiler_gobject_tracing;
+       vala_code_context_set_gobject_tracing (_tmp31_, _tmp32_);
+       _tmp33_ = self->priv->context;
+       _tmp34_ = vala_code_context_get_report (_tmp33_);
+       _tmp35_ = _tmp34_;
+       _tmp36_ = vala_compiler_disable_warnings;
+       vala_report_set_enable_warnings (_tmp35_, !_tmp36_);
+       _tmp37_ = self->priv->context;
+       _tmp38_ = vala_code_context_get_report (_tmp37_);
+       _tmp39_ = _tmp38_;
+       _tmp40_ = vala_compiler_quiet_mode;
+       vala_report_set_verbose_errors (_tmp39_, !_tmp40_);
        _tmp41_ = self->priv->context;
-       _tmp42_ = vala_compiler_disable_version_header;
-       vala_code_context_set_version_header (_tmp41_, !_tmp42_);
+       _tmp42_ = vala_compiler_verbose_mode;
+       vala_code_context_set_verbose_mode (_tmp41_, _tmp42_);
        _tmp43_ = self->priv->context;
-       _tmp44_ = vala_compiler_ccode_only;
-       vala_code_context_set_ccode_only (_tmp43_, _tmp44_);
+       _tmp44_ = vala_compiler_disable_version_header;
+       vala_code_context_set_version_header (_tmp43_, !_tmp44_);
        _tmp45_ = self->priv->context;
-       _tmp46_ = vala_compiler_compile_only;
-       vala_code_context_set_compile_only (_tmp45_, _tmp46_);
-       _tmp47_ = self->priv->context;
-       _tmp48_ = vala_compiler_header_filename;
-       vala_code_context_set_header_filename (_tmp47_, _tmp48_);
-       _tmp50_ = vala_compiler_header_filename;
-       if (_tmp50_ == NULL) {
-               gboolean _tmp51_ = FALSE;
-               _tmp51_ = vala_compiler_use_header;
-               _tmp49_ = _tmp51_;
+       _tmp46_ = vala_compiler_ccode_only;
+       vala_code_context_set_ccode_only (_tmp45_, _tmp46_);
+       _tmp48_ = vala_compiler_ccode_only;
+       if (_tmp48_) {
+               gchar** _tmp49_ = NULL;
+               gint _tmp49__length1 = 0;
+               _tmp49_ = vala_compiler_cc_options;
+               _tmp49__length1 = _vala_array_length (vala_compiler_cc_options);
+               _tmp47_ = _tmp49_ != NULL;
        } else {
-               _tmp49_ = FALSE;
+               _tmp47_ = FALSE;
        }
-       if (_tmp49_) {
-               vala_report_error (NULL, "--use-header may only be used in combination with --header");
+       if (_tmp47_) {
+               vala_report_warning (NULL, "-X has no effect when -C or --ccode is set");
        }
+       _tmp50_ = self->priv->context;
+       _tmp51_ = vala_compiler_compile_only;
+       vala_code_context_set_compile_only (_tmp50_, _tmp51_);
        _tmp52_ = self->priv->context;
-       _tmp53_ = vala_compiler_use_header;
-       vala_code_context_set_use_header (_tmp52_, _tmp53_);
-       _tmp54_ = self->priv->context;
-       _tmp55_ = vala_compiler_internal_header_filename;
-       vala_code_context_set_internal_header_filename (_tmp54_, _tmp55_);
-       _tmp56_ = self->priv->context;
-       _tmp57_ = vala_compiler_symbols_filename;
-       vala_code_context_set_symbols_filename (_tmp56_, _tmp57_);
-       _tmp58_ = self->priv->context;
-       _tmp59_ = vala_compiler_includedir;
-       vala_code_context_set_includedir (_tmp58_, _tmp59_);
-       _tmp60_ = self->priv->context;
-       _tmp61_ = vala_compiler_output;
-       vala_code_context_set_output (_tmp60_, _tmp61_);
-       _tmp62_ = vala_compiler_basedir;
-       if (_tmp62_ == NULL) {
-               ValaCodeContext* _tmp63_ = NULL;
-               gchar* _tmp64_ = NULL;
-               gchar* _tmp65_ = NULL;
-               _tmp63_ = self->priv->context;
-               _tmp64_ = vala_code_context_realpath (".");
-               _tmp65_ = _tmp64_;
-               vala_code_context_set_basedir (_tmp63_, _tmp65_);
-               _g_free0 (_tmp65_);
+       _tmp53_ = vala_compiler_header_filename;
+       vala_code_context_set_header_filename (_tmp52_, _tmp53_);
+       _tmp55_ = vala_compiler_header_filename;
+       if (_tmp55_ == NULL) {
+               gboolean _tmp56_ = FALSE;
+               _tmp56_ = vala_compiler_use_header;
+               _tmp54_ = _tmp56_;
+       } else {
+               _tmp54_ = FALSE;
+       }
+       if (_tmp54_) {
+               vala_report_error (NULL, "--use-header may only be used in combination with --header");
+       }
+       _tmp57_ = self->priv->context;
+       _tmp58_ = vala_compiler_use_header;
+       vala_code_context_set_use_header (_tmp57_, _tmp58_);
+       _tmp59_ = self->priv->context;
+       _tmp60_ = vala_compiler_internal_header_filename;
+       vala_code_context_set_internal_header_filename (_tmp59_, _tmp60_);
+       _tmp61_ = self->priv->context;
+       _tmp62_ = vala_compiler_symbols_filename;
+       vala_code_context_set_symbols_filename (_tmp61_, _tmp62_);
+       _tmp63_ = self->priv->context;
+       _tmp64_ = vala_compiler_includedir;
+       vala_code_context_set_includedir (_tmp63_, _tmp64_);
+       _tmp65_ = self->priv->context;
+       _tmp66_ = vala_compiler_output;
+       vala_code_context_set_output (_tmp65_, _tmp66_);
+       _tmp68_ = vala_compiler_output;
+       if (_tmp68_ != NULL) {
+               gboolean _tmp69_ = FALSE;
+               _tmp69_ = vala_compiler_ccode_only;
+               _tmp67_ = _tmp69_;
        } else {
-               ValaCodeContext* _tmp66_ = NULL;
-               const gchar* _tmp67_ = NULL;
-               gchar* _tmp68_ = NULL;
-               gchar* _tmp69_ = NULL;
-               _tmp66_ = self->priv->context;
-               _tmp67_ = vala_compiler_basedir;
-               _tmp68_ = vala_code_context_realpath (_tmp67_);
-               _tmp69_ = _tmp68_;
-               vala_code_context_set_basedir (_tmp66_, _tmp69_);
-               _g_free0 (_tmp69_);
-       }
-       _tmp70_ = vala_compiler_directory;
-       if (_tmp70_ != NULL) {
+               _tmp67_ = FALSE;
+       }
+       if (_tmp67_) {
+               vala_report_warning (NULL, "--output and -o have no effect when -C or --ccode is set");
+       }
+       _tmp70_ = vala_compiler_basedir;
+       if (_tmp70_ == NULL) {
                ValaCodeContext* _tmp71_ = NULL;
-               const gchar* _tmp72_ = NULL;
+               gchar* _tmp72_ = NULL;
                gchar* _tmp73_ = NULL;
-               gchar* _tmp74_ = NULL;
                _tmp71_ = self->priv->context;
-               _tmp72_ = vala_compiler_directory;
-               _tmp73_ = vala_code_context_realpath (_tmp72_);
-               _tmp74_ = _tmp73_;
-               vala_code_context_set_directory (_tmp71_, _tmp74_);
-               _g_free0 (_tmp74_);
+               _tmp72_ = vala_code_context_realpath (".");
+               _tmp73_ = _tmp72_;
+               vala_code_context_set_basedir (_tmp71_, _tmp73_);
+               _g_free0 (_tmp73_);
+       } else {
+               ValaCodeContext* _tmp74_ = NULL;
+               const gchar* _tmp75_ = NULL;
+               gchar* _tmp76_ = NULL;
+               gchar* _tmp77_ = NULL;
+               _tmp74_ = self->priv->context;
+               _tmp75_ = vala_compiler_basedir;
+               _tmp76_ = vala_code_context_realpath (_tmp75_);
+               _tmp77_ = _tmp76_;
+               vala_code_context_set_basedir (_tmp74_, _tmp77_);
+               _g_free0 (_tmp77_);
+       }
+       _tmp78_ = vala_compiler_directory;
+       if (_tmp78_ != NULL) {
+               ValaCodeContext* _tmp79_ = NULL;
+               const gchar* _tmp80_ = NULL;
+               gchar* _tmp81_ = NULL;
+               gchar* _tmp82_ = NULL;
+               _tmp79_ = self->priv->context;
+               _tmp80_ = vala_compiler_directory;
+               _tmp81_ = vala_code_context_realpath (_tmp80_);
+               _tmp82_ = _tmp81_;
+               vala_code_context_set_directory (_tmp79_, _tmp82_);
+               _g_free0 (_tmp82_);
        } else {
-               ValaCodeContext* _tmp75_ = NULL;
-               ValaCodeContext* _tmp76_ = NULL;
-               const gchar* _tmp77_ = NULL;
-               const gchar* _tmp78_ = NULL;
-               _tmp75_ = self->priv->context;
-               _tmp76_ = self->priv->context;
-               _tmp77_ = vala_code_context_get_basedir (_tmp76_);
-               _tmp78_ = _tmp77_;
-               vala_code_context_set_directory (_tmp75_, _tmp78_);
-       }
-       _tmp79_ = self->priv->context;
-       _tmp80_ = vala_compiler_vapi_directories;
-       _tmp80__length1 = _vala_array_length (vala_compiler_vapi_directories);
-       _tmp81_ = (_tmp80_ != NULL) ? _vala_array_dup1 (_tmp80_, _tmp80__length1) : ((gpointer) _tmp80_);
-       _tmp81__length1 = _tmp80__length1;
-       _tmp79_->vapi_directories = (_vala_array_free (_tmp79_->vapi_directories, _tmp79_->vapi_directories_length1, (GDestroyNotify) g_free), NULL);
-       _tmp79_->vapi_directories = _tmp81_;
-       _tmp79_->vapi_directories_length1 = _tmp81__length1;
-       _tmp82_ = self->priv->context;
-       _tmp83_ = vala_compiler_gir_directories;
-       _tmp83__length1 = _vala_array_length (vala_compiler_gir_directories);
-       _tmp84_ = (_tmp83_ != NULL) ? _vala_array_dup2 (_tmp83_, _tmp83__length1) : ((gpointer) _tmp83_);
-       _tmp84__length1 = _tmp83__length1;
-       _tmp82_->gir_directories = (_vala_array_free (_tmp82_->gir_directories, _tmp82_->gir_directories_length1, (GDestroyNotify) g_free), NULL);
-       _tmp82_->gir_directories = _tmp84_;
-       _tmp82_->gir_directories_length1 = _tmp84__length1;
-       _tmp85_ = self->priv->context;
-       _tmp86_ = vala_compiler_metadata_directories;
-       _tmp86__length1 = _vala_array_length (vala_compiler_metadata_directories);
-       _tmp87_ = (_tmp86_ != NULL) ? _vala_array_dup3 (_tmp86_, _tmp86__length1) : ((gpointer) _tmp86_);
-       _tmp87__length1 = _tmp86__length1;
-       _tmp85_->metadata_directories = (_vala_array_free (_tmp85_->metadata_directories, _tmp85_->metadata_directories_length1, (GDestroyNotify) g_free), NULL);
-       _tmp85_->metadata_directories = _tmp87_;
-       _tmp85_->metadata_directories_length1 = _tmp87__length1;
-       _tmp88_ = self->priv->context;
-       _tmp89_ = vala_compiler_debug;
-       vala_code_context_set_debug (_tmp88_, _tmp89_);
+               ValaCodeContext* _tmp83_ = NULL;
+               ValaCodeContext* _tmp84_ = NULL;
+               const gchar* _tmp85_ = NULL;
+               const gchar* _tmp86_ = NULL;
+               _tmp83_ = self->priv->context;
+               _tmp84_ = self->priv->context;
+               _tmp85_ = vala_code_context_get_basedir (_tmp84_);
+               _tmp86_ = _tmp85_;
+               vala_code_context_set_directory (_tmp83_, _tmp86_);
+       }
+       _tmp87_ = self->priv->context;
+       _tmp88_ = vala_compiler_vapi_directories;
+       _tmp88__length1 = _vala_array_length (vala_compiler_vapi_directories);
+       _tmp89_ = (_tmp88_ != NULL) ? _vala_array_dup1 (_tmp88_, _tmp88__length1) : ((gpointer) _tmp88_);
+       _tmp89__length1 = _tmp88__length1;
+       _tmp87_->vapi_directories = (_vala_array_free (_tmp87_->vapi_directories, _tmp87_->vapi_directories_length1, (GDestroyNotify) g_free), NULL);
+       _tmp87_->vapi_directories = _tmp89_;
+       _tmp87_->vapi_directories_length1 = _tmp89__length1;
        _tmp90_ = self->priv->context;
-       _tmp91_ = vala_compiler_thread;
-       vala_code_context_set_thread (_tmp90_, _tmp91_);
+       _tmp91_ = vala_compiler_vapi_comments;
+       vala_code_context_set_vapi_comments (_tmp90_, _tmp91_);
        _tmp92_ = self->priv->context;
-       _tmp93_ = vala_compiler_mem_profiler;
-       vala_code_context_set_mem_profiler (_tmp92_, _tmp93_);
-       _tmp94_ = self->priv->context;
-       _tmp95_ = vala_compiler_save_temps;
-       vala_code_context_set_save_temps (_tmp94_, _tmp95_);
-       _tmp98_ = vala_compiler_profile;
-       if (g_strcmp0 (_tmp98_, "gobject-2.0") == 0) {
-               _tmp97_ = TRUE;
+       _tmp93_ = vala_compiler_gir_directories;
+       _tmp93__length1 = _vala_array_length (vala_compiler_gir_directories);
+       _tmp94_ = (_tmp93_ != NULL) ? _vala_array_dup2 (_tmp93_, _tmp93__length1) : ((gpointer) _tmp93_);
+       _tmp94__length1 = _tmp93__length1;
+       _tmp92_->gir_directories = (_vala_array_free (_tmp92_->gir_directories, _tmp92_->gir_directories_length1, (GDestroyNotify) g_free), NULL);
+       _tmp92_->gir_directories = _tmp94_;
+       _tmp92_->gir_directories_length1 = _tmp94__length1;
+       _tmp95_ = self->priv->context;
+       _tmp96_ = vala_compiler_metadata_directories;
+       _tmp96__length1 = _vala_array_length (vala_compiler_metadata_directories);
+       _tmp97_ = (_tmp96_ != NULL) ? _vala_array_dup3 (_tmp96_, _tmp96__length1) : ((gpointer) _tmp96_);
+       _tmp97__length1 = _tmp96__length1;
+       _tmp95_->metadata_directories = (_vala_array_free (_tmp95_->metadata_directories, _tmp95_->metadata_directories_length1, (GDestroyNotify) g_free), NULL);
+       _tmp95_->metadata_directories = _tmp97_;
+       _tmp95_->metadata_directories_length1 = _tmp97__length1;
+       _tmp98_ = self->priv->context;
+       _tmp99_ = vala_compiler_debug;
+       vala_code_context_set_debug (_tmp98_, _tmp99_);
+       _tmp100_ = self->priv->context;
+       _tmp101_ = vala_compiler_thread;
+       vala_code_context_set_thread (_tmp100_, _tmp101_);
+       _tmp102_ = self->priv->context;
+       _tmp103_ = vala_compiler_mem_profiler;
+       vala_code_context_set_mem_profiler (_tmp102_, _tmp103_);
+       _tmp104_ = self->priv->context;
+       _tmp105_ = vala_compiler_save_temps;
+       vala_code_context_set_save_temps (_tmp104_, _tmp105_);
+       _tmp107_ = vala_compiler_ccode_only;
+       if (_tmp107_) {
+               gboolean _tmp108_ = FALSE;
+               _tmp108_ = vala_compiler_save_temps;
+               _tmp106_ = _tmp108_;
        } else {
-               const gchar* _tmp99_ = NULL;
-               _tmp99_ = vala_compiler_profile;
-               _tmp97_ = g_strcmp0 (_tmp99_, "gobject") == 0;
+               _tmp106_ = FALSE;
+       }
+       if (_tmp106_) {
+               vala_report_warning (NULL, "--save-temps has no effect when -C or --ccode is set");
        }
-       if (_tmp97_) {
-               _tmp96_ = TRUE;
+       _tmp111_ = vala_compiler_profile;
+       if (g_strcmp0 (_tmp111_, "gobject-2.0") == 0) {
+               _tmp110_ = TRUE;
        } else {
-               const gchar* _tmp100_ = NULL;
-               _tmp100_ = vala_compiler_profile;
-               _tmp96_ = _tmp100_ == NULL;
-       }
-       if (_tmp96_) {
-               ValaCodeContext* _tmp101_ = NULL;
-               ValaCodeContext* _tmp102_ = NULL;
-               _tmp101_ = self->priv->context;
-               vala_code_context_set_profile (_tmp101_, VALA_PROFILE_GOBJECT);
-               _tmp102_ = self->priv->context;
-               vala_code_context_add_define (_tmp102_, "GOBJECT");
+               const gchar* _tmp112_ = NULL;
+               _tmp112_ = vala_compiler_profile;
+               _tmp110_ = g_strcmp0 (_tmp112_, "gobject") == 0;
+       }
+       if (_tmp110_) {
+               _tmp109_ = TRUE;
+       } else {
+               const gchar* _tmp113_ = NULL;
+               _tmp113_ = vala_compiler_profile;
+               _tmp109_ = _tmp113_ == NULL;
+       }
+       if (_tmp109_) {
+               ValaCodeContext* _tmp114_ = NULL;
+               ValaCodeContext* _tmp115_ = NULL;
+               _tmp114_ = self->priv->context;
+               vala_code_context_set_profile (_tmp114_, VALA_PROFILE_GOBJECT);
+               _tmp115_ = self->priv->context;
+               vala_code_context_add_define (_tmp115_, "GOBJECT");
        } else {
-               const gchar* _tmp103_ = NULL;
-               gchar* _tmp104_ = NULL;
-               gchar* _tmp105_ = NULL;
-               _tmp103_ = vala_compiler_profile;
-               _tmp104_ = g_strdup_printf ("Unknown profile %s", _tmp103_);
-               _tmp105_ = _tmp104_;
-               vala_report_error (NULL, _tmp105_);
-               _g_free0 (_tmp105_);
-       }
-       _tmp106_ = vala_compiler_nostdpkg;
-       _tmp107_ = vala_compiler_fast_vapi_filename;
-       vala_compiler_nostdpkg = _tmp106_ | (_tmp107_ != NULL);
-       _tmp108_ = self->priv->context;
-       _tmp109_ = vala_compiler_nostdpkg;
-       vala_code_context_set_nostdpkg (_tmp108_, _tmp109_);
-       _tmp110_ = self->priv->context;
-       _tmp111_ = vala_compiler_entry_point;
-       vala_code_context_set_entry_point_name (_tmp110_, _tmp111_);
-       _tmp112_ = self->priv->context;
-       _tmp113_ = vala_compiler_run_output;
-       vala_code_context_set_run_output (_tmp112_, _tmp113_);
-       _tmp114_ = vala_compiler_defines;
-       _tmp114__length1 = _vala_array_length (vala_compiler_defines);
-       if (_tmp114_ != NULL) {
-               gchar** _tmp115_ = NULL;
-               gint _tmp115__length1 = 0;
-               _tmp115_ = vala_compiler_defines;
-               _tmp115__length1 = _vala_array_length (vala_compiler_defines);
+               const gchar* _tmp116_ = NULL;
+               gchar* _tmp117_ = NULL;
+               gchar* _tmp118_ = NULL;
+               _tmp116_ = vala_compiler_profile;
+               _tmp117_ = g_strdup_printf ("Unknown profile %s", _tmp116_);
+               _tmp118_ = _tmp117_;
+               vala_report_error (NULL, _tmp118_);
+               _g_free0 (_tmp118_);
+       }
+       _tmp119_ = vala_compiler_nostdpkg;
+       _tmp120_ = vala_compiler_fast_vapi_filename;
+       vala_compiler_nostdpkg = _tmp119_ | (_tmp120_ != NULL);
+       _tmp121_ = self->priv->context;
+       _tmp122_ = vala_compiler_nostdpkg;
+       vala_code_context_set_nostdpkg (_tmp121_, _tmp122_);
+       _tmp123_ = self->priv->context;
+       _tmp124_ = vala_compiler_entry_point;
+       vala_code_context_set_entry_point_name (_tmp123_, _tmp124_);
+       _tmp125_ = self->priv->context;
+       _tmp126_ = vala_compiler_run_output;
+       vala_code_context_set_run_output (_tmp125_, _tmp126_);
+       _tmp127_ = vala_compiler_defines;
+       _tmp127__length1 = _vala_array_length (vala_compiler_defines);
+       if (_tmp127_ != NULL) {
+               gchar** _tmp128_ = NULL;
+               gint _tmp128__length1 = 0;
+               _tmp128_ = vala_compiler_defines;
+               _tmp128__length1 = _vala_array_length (vala_compiler_defines);
                {
                        gchar** define_collection = NULL;
                        gint define_collection_length1 = 0;
                        gint _define_collection_size_ = 0;
                        gint define_it = 0;
-                       define_collection = _tmp115_;
-                       define_collection_length1 = _tmp115__length1;
-                       for (define_it = 0; define_it < _tmp115__length1; define_it = define_it + 1) {
-                               gchar* _tmp116_ = NULL;
+                       define_collection = _tmp128_;
+                       define_collection_length1 = _tmp128__length1;
+                       for (define_it = 0; define_it < _tmp128__length1; define_it = define_it + 1) {
+                               gchar* _tmp129_ = NULL;
                                gchar* define = NULL;
-                               _tmp116_ = g_strdup (define_collection[define_it]);
-                               define = _tmp116_;
+                               _tmp129_ = g_strdup (define_collection[define_it]);
+                               define = _tmp129_;
                                {
-                                       ValaCodeContext* _tmp117_ = NULL;
-                                       const gchar* _tmp118_ = NULL;
-                                       _tmp117_ = self->priv->context;
-                                       _tmp118_ = define;
-                                       vala_code_context_add_define (_tmp117_, _tmp118_);
+                                       ValaCodeContext* _tmp130_ = NULL;
+                                       const gchar* _tmp131_ = NULL;
+                                       _tmp130_ = self->priv->context;
+                                       _tmp131_ = define;
+                                       vala_code_context_add_define (_tmp130_, _tmp131_);
                                        _g_free0 (define);
                                }
                        }
@@ -995,127 +1055,127 @@ static gint vala_compiler_run (ValaCompiler* self) {
                gint i = 0;
                i = 2;
                {
-                       gboolean _tmp119_ = FALSE;
-                       _tmp119_ = TRUE;
+                       gboolean _tmp132_ = FALSE;
+                       _tmp132_ = TRUE;
                        while (TRUE) {
-                               gint _tmp121_ = 0;
-                               ValaCodeContext* _tmp122_ = NULL;
-                               gint _tmp123_ = 0;
-                               gchar* _tmp124_ = NULL;
-                               gchar* _tmp125_ = NULL;
-                               if (!_tmp119_) {
-                                       gint _tmp120_ = 0;
-                                       _tmp120_ = i;
-                                       i = _tmp120_ + 2;
+                               gint _tmp134_ = 0;
+                               ValaCodeContext* _tmp135_ = NULL;
+                               gint _tmp136_ = 0;
+                               gchar* _tmp137_ = NULL;
+                               gchar* _tmp138_ = NULL;
+                               if (!_tmp132_) {
+                                       gint _tmp133_ = 0;
+                                       _tmp133_ = i;
+                                       i = _tmp133_ + 2;
                                }
-                               _tmp119_ = FALSE;
-                               _tmp121_ = i;
-                               if (!(_tmp121_ <= 24)) {
+                               _tmp132_ = FALSE;
+                               _tmp134_ = i;
+                               if (!(_tmp134_ <= 26)) {
                                        break;
                                }
-                               _tmp122_ = self->priv->context;
-                               _tmp123_ = i;
-                               _tmp124_ = g_strdup_printf ("VALA_0_%d", _tmp123_);
-                               _tmp125_ = _tmp124_;
-                               vala_code_context_add_define (_tmp122_, _tmp125_);
-                               _g_free0 (_tmp125_);
+                               _tmp135_ = self->priv->context;
+                               _tmp136_ = i;
+                               _tmp137_ = g_strdup_printf ("VALA_0_%d", _tmp136_);
+                               _tmp138_ = _tmp137_;
+                               vala_code_context_add_define (_tmp135_, _tmp138_);
+                               _g_free0 (_tmp138_);
                        }
                }
        }
        glib_major = 2;
-       glib_minor = 18;
-       _tmp127_ = vala_compiler_target_glib;
-       if (_tmp127_ != NULL) {
-               const gchar* _tmp128_ = NULL;
-               gint _tmp129_ = 0;
-               _tmp128_ = vala_compiler_target_glib;
-               _tmp129_ = sscanf (_tmp128_, "%d.%d", &glib_major, &glib_minor);
-               _tmp126_ = _tmp129_ != 2;
+       glib_minor = 24;
+       _tmp140_ = vala_compiler_target_glib;
+       if (_tmp140_ != NULL) {
+               const gchar* _tmp141_ = NULL;
+               gint _tmp142_ = 0;
+               _tmp141_ = vala_compiler_target_glib;
+               _tmp142_ = sscanf (_tmp141_, "%d.%d", &glib_major, &glib_minor);
+               _tmp139_ = _tmp142_ != 2;
        } else {
-               _tmp126_ = FALSE;
+               _tmp139_ = FALSE;
        }
-       if (_tmp126_) {
+       if (_tmp139_) {
                vala_report_error (NULL, "Invalid format for --target-glib");
        }
-       _tmp130_ = self->priv->context;
-       _tmp131_ = glib_major;
-       vala_code_context_set_target_glib_major (_tmp130_, _tmp131_);
-       _tmp132_ = self->priv->context;
-       _tmp133_ = glib_minor;
-       vala_code_context_set_target_glib_minor (_tmp132_, _tmp133_);
-       _tmp134_ = self->priv->context;
-       _tmp135_ = vala_code_context_get_target_glib_major (_tmp134_);
-       _tmp136_ = _tmp135_;
-       if (_tmp136_ != 2) {
+       _tmp143_ = self->priv->context;
+       _tmp144_ = glib_major;
+       vala_code_context_set_target_glib_major (_tmp143_, _tmp144_);
+       _tmp145_ = self->priv->context;
+       _tmp146_ = glib_minor;
+       vala_code_context_set_target_glib_minor (_tmp145_, _tmp146_);
+       _tmp147_ = self->priv->context;
+       _tmp148_ = vala_code_context_get_target_glib_major (_tmp147_);
+       _tmp149_ = _tmp148_;
+       if (_tmp149_ != 2) {
                vala_report_error (NULL, "This version of valac only supports GLib 2");
        }
        {
                gint i = 0;
                i = 16;
                {
-                       gboolean _tmp137_ = FALSE;
-                       _tmp137_ = TRUE;
+                       gboolean _tmp150_ = FALSE;
+                       _tmp150_ = TRUE;
                        while (TRUE) {
-                               gint _tmp139_ = 0;
-                               gint _tmp140_ = 0;
-                               ValaCodeContext* _tmp141_ = NULL;
-                               gint _tmp142_ = 0;
-                               gchar* _tmp143_ = NULL;
-                               gchar* _tmp144_ = NULL;
-                               if (!_tmp137_) {
-                                       gint _tmp138_ = 0;
-                                       _tmp138_ = i;
-                                       i = _tmp138_ + 2;
+                               gint _tmp152_ = 0;
+                               gint _tmp153_ = 0;
+                               ValaCodeContext* _tmp154_ = NULL;
+                               gint _tmp155_ = 0;
+                               gchar* _tmp156_ = NULL;
+                               gchar* _tmp157_ = NULL;
+                               if (!_tmp150_) {
+                                       gint _tmp151_ = 0;
+                                       _tmp151_ = i;
+                                       i = _tmp151_ + 2;
                                }
-                               _tmp137_ = FALSE;
-                               _tmp139_ = i;
-                               _tmp140_ = glib_minor;
-                               if (!(_tmp139_ <= _tmp140_)) {
+                               _tmp150_ = FALSE;
+                               _tmp152_ = i;
+                               _tmp153_ = glib_minor;
+                               if (!(_tmp152_ <= _tmp153_)) {
                                        break;
                                }
-                               _tmp141_ = self->priv->context;
-                               _tmp142_ = i;
-                               _tmp143_ = g_strdup_printf ("GLIB_2_%d", _tmp142_);
-                               _tmp144_ = _tmp143_;
-                               vala_code_context_add_define (_tmp141_, _tmp144_);
-                               _g_free0 (_tmp144_);
+                               _tmp154_ = self->priv->context;
+                               _tmp155_ = i;
+                               _tmp156_ = g_strdup_printf ("GLIB_2_%d", _tmp155_);
+                               _tmp157_ = _tmp156_;
+                               vala_code_context_add_define (_tmp154_, _tmp157_);
+                               _g_free0 (_tmp157_);
                        }
                }
        }
-       _tmp145_ = vala_compiler_nostdpkg;
-       if (!_tmp145_) {
-               ValaCodeContext* _tmp146_ = NULL;
-               ValaCodeContext* _tmp147_ = NULL;
-               _tmp146_ = self->priv->context;
-               vala_code_context_add_external_package (_tmp146_, "glib-2.0");
-               _tmp147_ = self->priv->context;
-               vala_code_context_add_external_package (_tmp147_, "gobject-2.0");
-       }
-       _tmp148_ = vala_compiler_packages;
-       _tmp148__length1 = _vala_array_length (vala_compiler_packages);
-       if (_tmp148_ != NULL) {
-               gchar** _tmp149_ = NULL;
-               gint _tmp149__length1 = 0;
-               _tmp149_ = vala_compiler_packages;
-               _tmp149__length1 = _vala_array_length (vala_compiler_packages);
+       _tmp158_ = vala_compiler_nostdpkg;
+       if (!_tmp158_) {
+               ValaCodeContext* _tmp159_ = NULL;
+               ValaCodeContext* _tmp160_ = NULL;
+               _tmp159_ = self->priv->context;
+               vala_code_context_add_external_package (_tmp159_, "glib-2.0");
+               _tmp160_ = self->priv->context;
+               vala_code_context_add_external_package (_tmp160_, "gobject-2.0");
+       }
+       _tmp161_ = vala_compiler_packages;
+       _tmp161__length1 = _vala_array_length (vala_compiler_packages);
+       if (_tmp161_ != NULL) {
+               gchar** _tmp162_ = NULL;
+               gint _tmp162__length1 = 0;
+               _tmp162_ = vala_compiler_packages;
+               _tmp162__length1 = _vala_array_length (vala_compiler_packages);
                {
                        gchar** package_collection = NULL;
                        gint package_collection_length1 = 0;
                        gint _package_collection_size_ = 0;
                        gint package_it = 0;
-                       package_collection = _tmp149_;
-                       package_collection_length1 = _tmp149__length1;
-                       for (package_it = 0; package_it < _tmp149__length1; package_it = package_it + 1) {
-                               gchar* _tmp150_ = NULL;
+                       package_collection = _tmp162_;
+                       package_collection_length1 = _tmp162__length1;
+                       for (package_it = 0; package_it < _tmp162__length1; package_it = package_it + 1) {
+                               gchar* _tmp163_ = NULL;
                                gchar* package = NULL;
-                               _tmp150_ = g_strdup (package_collection[package_it]);
-                               package = _tmp150_;
+                               _tmp163_ = g_strdup (package_collection[package_it]);
+                               package = _tmp163_;
                                {
-                                       ValaCodeContext* _tmp151_ = NULL;
-                                       const gchar* _tmp152_ = NULL;
-                                       _tmp151_ = self->priv->context;
-                                       _tmp152_ = package;
-                                       vala_code_context_add_external_package (_tmp151_, _tmp152_);
+                                       ValaCodeContext* _tmp164_ = NULL;
+                                       const gchar* _tmp165_ = NULL;
+                                       _tmp164_ = self->priv->context;
+                                       _tmp165_ = package;
+                                       vala_code_context_add_external_package (_tmp164_, _tmp165_);
                                        _g_free0 (package);
                                }
                        }
@@ -1123,130 +1183,139 @@ static gint vala_compiler_run (ValaCompiler* self) {
                vala_compiler_packages = (_vala_array_free (vala_compiler_packages, _vala_array_length (vala_compiler_packages), (GDestroyNotify) g_free), NULL);
                vala_compiler_packages = NULL;
        }
-       _tmp153_ = vala_compiler_fast_vapis;
-       _tmp153__length1 = _vala_array_length (vala_compiler_fast_vapis);
-       if (_tmp153_ != NULL) {
-               gchar** _tmp154_ = NULL;
-               gint _tmp154__length1 = 0;
-               ValaCodeContext* _tmp163_ = NULL;
-               _tmp154_ = vala_compiler_fast_vapis;
-               _tmp154__length1 = _vala_array_length (vala_compiler_fast_vapis);
+       _tmp166_ = vala_compiler_fast_vapis;
+       _tmp166__length1 = _vala_array_length (vala_compiler_fast_vapis);
+       if (_tmp166_ != NULL) {
+               gchar** _tmp167_ = NULL;
+               gint _tmp167__length1 = 0;
+               ValaCodeContext* _tmp176_ = NULL;
+               _tmp167_ = vala_compiler_fast_vapis;
+               _tmp167__length1 = _vala_array_length (vala_compiler_fast_vapis);
                {
                        gchar** vapi_collection = NULL;
                        gint vapi_collection_length1 = 0;
                        gint _vapi_collection_size_ = 0;
                        gint vapi_it = 0;
-                       vapi_collection = _tmp154_;
-                       vapi_collection_length1 = _tmp154__length1;
-                       for (vapi_it = 0; vapi_it < _tmp154__length1; vapi_it = vapi_it + 1) {
-                               gchar* _tmp155_ = NULL;
+                       vapi_collection = _tmp167_;
+                       vapi_collection_length1 = _tmp167__length1;
+                       for (vapi_it = 0; vapi_it < _tmp167__length1; vapi_it = vapi_it + 1) {
+                               gchar* _tmp168_ = NULL;
                                gchar* vapi = NULL;
-                               _tmp155_ = g_strdup (vapi_collection[vapi_it]);
-                               vapi = _tmp155_;
+                               _tmp168_ = g_strdup (vapi_collection[vapi_it]);
+                               vapi = _tmp168_;
                                {
                                        gchar* rpath = NULL;
-                                       const gchar* _tmp156_ = NULL;
-                                       gchar* _tmp157_ = NULL;
+                                       const gchar* _tmp169_ = NULL;
+                                       gchar* _tmp170_ = NULL;
                                        ValaSourceFile* source_file = NULL;
-                                       ValaCodeContext* _tmp158_ = NULL;
-                                       const gchar* _tmp159_ = NULL;
-                                       ValaSourceFile* _tmp160_ = NULL;
-                                       ValaCodeContext* _tmp161_ = NULL;
-                                       ValaSourceFile* _tmp162_ = NULL;
-                                       _tmp156_ = vapi;
-                                       _tmp157_ = vala_code_context_realpath (_tmp156_);
-                                       rpath = _tmp157_;
-                                       _tmp158_ = self->priv->context;
-                                       _tmp159_ = rpath;
-                                       _tmp160_ = vala_source_file_new (_tmp158_, VALA_SOURCE_FILE_TYPE_FAST, _tmp159_, NULL, FALSE);
-                                       source_file = _tmp160_;
-                                       _tmp161_ = self->priv->context;
-                                       _tmp162_ = source_file;
-                                       vala_code_context_add_source_file (_tmp161_, _tmp162_);
+                                       ValaCodeContext* _tmp171_ = NULL;
+                                       const gchar* _tmp172_ = NULL;
+                                       ValaSourceFile* _tmp173_ = NULL;
+                                       ValaCodeContext* _tmp174_ = NULL;
+                                       ValaSourceFile* _tmp175_ = NULL;
+                                       _tmp169_ = vapi;
+                                       _tmp170_ = vala_code_context_realpath (_tmp169_);
+                                       rpath = _tmp170_;
+                                       _tmp171_ = self->priv->context;
+                                       _tmp172_ = rpath;
+                                       _tmp173_ = vala_source_file_new (_tmp171_, VALA_SOURCE_FILE_TYPE_FAST, _tmp172_, NULL, FALSE);
+                                       source_file = _tmp173_;
+                                       _tmp174_ = self->priv->context;
+                                       _tmp175_ = source_file;
+                                       vala_code_context_add_source_file (_tmp174_, _tmp175_);
                                        _vala_source_file_unref0 (source_file);
                                        _g_free0 (rpath);
                                        _g_free0 (vapi);
                                }
                        }
                }
-               _tmp163_ = self->priv->context;
-               vala_code_context_set_use_fast_vapi (_tmp163_, TRUE);
-       }
-       _tmp164_ = self->priv->context;
-       _tmp165_ = vala_compiler_gresources;
-       _tmp165__length1 = _vala_array_length (vala_compiler_gresources);
-       _tmp166_ = (_tmp165_ != NULL) ? _vala_array_dup4 (_tmp165_, _tmp165__length1) : ((gpointer) _tmp165_);
-       _tmp166__length1 = _tmp165__length1;
-       _tmp164_->gresources = (_vala_array_free (_tmp164_->gresources, _tmp164_->gresources_length1, (GDestroyNotify) g_free), NULL);
-       _tmp164_->gresources = _tmp166_;
-       _tmp164_->gresources_length1 = _tmp166__length1;
-       _tmp168_ = self->priv->context;
-       _tmp169_ = vala_code_context_get_report (_tmp168_);
-       _tmp170_ = _tmp169_;
-       _tmp171_ = vala_report_get_errors (_tmp170_);
-       if (_tmp171_ > 0) {
-               _tmp167_ = TRUE;
+               _tmp176_ = self->priv->context;
+               vala_code_context_set_use_fast_vapi (_tmp176_, TRUE);
+       }
+       _tmp177_ = self->priv->context;
+       _tmp178_ = vala_compiler_gresources;
+       _tmp178__length1 = _vala_array_length (vala_compiler_gresources);
+       _tmp179_ = (_tmp178_ != NULL) ? _vala_array_dup4 (_tmp178_, _tmp178__length1) : ((gpointer) _tmp178_);
+       _tmp179__length1 = _tmp178__length1;
+       _tmp177_->gresources = (_vala_array_free (_tmp177_->gresources, _tmp177_->gresources_length1, (GDestroyNotify) g_free), NULL);
+       _tmp177_->gresources = _tmp179_;
+       _tmp177_->gresources_length1 = _tmp179__length1;
+       _tmp181_ = self->priv->context;
+       _tmp182_ = vala_code_context_get_report (_tmp181_);
+       _tmp183_ = _tmp182_;
+       _tmp184_ = vala_report_get_errors (_tmp183_);
+       if (_tmp184_ > 0) {
+               _tmp180_ = TRUE;
        } else {
-               gboolean _tmp172_ = FALSE;
-               gboolean _tmp173_ = FALSE;
-               _tmp173_ = vala_compiler_fatal_warnings;
-               if (_tmp173_) {
-                       ValaCodeContext* _tmp174_ = NULL;
-                       ValaReport* _tmp175_ = NULL;
-                       ValaReport* _tmp176_ = NULL;
-                       gint _tmp177_ = 0;
-                       _tmp174_ = self->priv->context;
-                       _tmp175_ = vala_code_context_get_report (_tmp174_);
-                       _tmp176_ = _tmp175_;
-                       _tmp177_ = vala_report_get_warnings (_tmp176_);
-                       _tmp172_ = _tmp177_ > 0;
+               gboolean _tmp185_ = FALSE;
+               gboolean _tmp186_ = FALSE;
+               _tmp186_ = vala_compiler_fatal_warnings;
+               if (_tmp186_) {
+                       ValaCodeContext* _tmp187_ = NULL;
+                       ValaReport* _tmp188_ = NULL;
+                       ValaReport* _tmp189_ = NULL;
+                       gint _tmp190_ = 0;
+                       _tmp187_ = self->priv->context;
+                       _tmp188_ = vala_code_context_get_report (_tmp187_);
+                       _tmp189_ = _tmp188_;
+                       _tmp190_ = vala_report_get_warnings (_tmp189_);
+                       _tmp185_ = _tmp190_ > 0;
                } else {
-                       _tmp172_ = FALSE;
+                       _tmp185_ = FALSE;
                }
-               _tmp167_ = _tmp172_;
+               _tmp180_ = _tmp185_;
        }
-       if (_tmp167_) {
-               gint _tmp178_ = 0;
-               _tmp178_ = vala_compiler_quit (self);
-               result = _tmp178_;
+       if (_tmp180_) {
+               gint _tmp191_ = 0;
+               _tmp191_ = vala_compiler_quit (self);
+               result = _tmp191_;
                return result;
        }
-       _tmp179_ = self->priv->context;
-       _tmp180_ = vala_gd_bus_server_module_new ();
-       _tmp181_ = _tmp180_;
-       vala_code_context_set_codegen (_tmp179_, (ValaCodeGenerator*) _tmp181_);
-       _vala_code_visitor_unref0 (_tmp181_);
+       _tmp192_ = self->priv->context;
+       _tmp193_ = vala_gd_bus_server_module_new ();
+       _tmp194_ = _tmp193_;
+       vala_code_context_set_codegen (_tmp192_, (ValaCodeGenerator*) _tmp194_);
+       _vala_code_visitor_unref0 (_tmp194_);
        has_c_files = FALSE;
-       _tmp182_ = vala_compiler_sources;
-       _tmp182__length1 = _vala_array_length (vala_compiler_sources);
+       has_h_files = FALSE;
+       _tmp195_ = vala_compiler_sources;
+       _tmp195__length1 = _vala_array_length (vala_compiler_sources);
        {
                gchar** source_collection = NULL;
                gint source_collection_length1 = 0;
                gint _source_collection_size_ = 0;
                gint source_it = 0;
-               source_collection = _tmp182_;
-               source_collection_length1 = _tmp182__length1;
-               for (source_it = 0; source_it < _tmp182__length1; source_it = source_it + 1) {
-                       gchar* _tmp183_ = NULL;
+               source_collection = _tmp195_;
+               source_collection_length1 = _tmp195__length1;
+               for (source_it = 0; source_it < _tmp195__length1; source_it = source_it + 1) {
+                       gchar* _tmp196_ = NULL;
                        gchar* source = NULL;
-                       _tmp183_ = g_strdup (source_collection[source_it]);
-                       source = _tmp183_;
+                       _tmp196_ = g_strdup (source_collection[source_it]);
+                       source = _tmp196_;
                        {
-                               ValaCodeContext* _tmp184_ = NULL;
-                               const gchar* _tmp185_ = NULL;
-                               gboolean _tmp186_ = FALSE;
-                               gboolean _tmp187_ = FALSE;
-                               _tmp184_ = self->priv->context;
-                               _tmp185_ = source;
-                               _tmp186_ = vala_compiler_run_output;
-                               _tmp187_ = vala_code_context_add_source_filename (_tmp184_, _tmp185_, _tmp186_, TRUE);
-                               if (_tmp187_) {
-                                       const gchar* _tmp188_ = NULL;
-                                       gboolean _tmp189_ = FALSE;
-                                       _tmp188_ = source;
-                                       _tmp189_ = g_str_has_suffix (_tmp188_, ".c");
-                                       if (_tmp189_) {
+                               ValaCodeContext* _tmp197_ = NULL;
+                               const gchar* _tmp198_ = NULL;
+                               gboolean _tmp199_ = FALSE;
+                               gboolean _tmp200_ = FALSE;
+                               _tmp197_ = self->priv->context;
+                               _tmp198_ = source;
+                               _tmp199_ = vala_compiler_run_output;
+                               _tmp200_ = vala_code_context_add_source_filename (_tmp197_, _tmp198_, _tmp199_, TRUE);
+                               if (_tmp200_) {
+                                       const gchar* _tmp201_ = NULL;
+                                       gboolean _tmp202_ = FALSE;
+                                       _tmp201_ = source;
+                                       _tmp202_ = g_str_has_suffix (_tmp201_, ".c");
+                                       if (_tmp202_) {
                                                has_c_files = TRUE;
+                                       } else {
+                                               const gchar* _tmp203_ = NULL;
+                                               gboolean _tmp204_ = FALSE;
+                                               _tmp203_ = source;
+                                               _tmp204_ = g_str_has_suffix (_tmp203_, ".h");
+                                               if (_tmp204_) {
+                                                       has_h_files = TRUE;
+                                               }
                                        }
                                }
                                _g_free0 (source);
@@ -1255,431 +1324,450 @@ static gint vala_compiler_run (ValaCompiler* self) {
        }
        vala_compiler_sources = (_vala_array_free (vala_compiler_sources, _vala_array_length (vala_compiler_sources), (GDestroyNotify) g_free), NULL);
        vala_compiler_sources = NULL;
-       _tmp191_ = self->priv->context;
-       _tmp192_ = vala_code_context_get_report (_tmp191_);
-       _tmp193_ = _tmp192_;
-       _tmp194_ = vala_report_get_errors (_tmp193_);
-       if (_tmp194_ > 0) {
-               _tmp190_ = TRUE;
-       } else {
-               gboolean _tmp195_ = FALSE;
-               gboolean _tmp196_ = FALSE;
-               _tmp196_ = vala_compiler_fatal_warnings;
-               if (_tmp196_) {
-                       ValaCodeContext* _tmp197_ = NULL;
-                       ValaReport* _tmp198_ = NULL;
-                       ValaReport* _tmp199_ = NULL;
-                       gint _tmp200_ = 0;
-                       _tmp197_ = self->priv->context;
-                       _tmp198_ = vala_code_context_get_report (_tmp197_);
-                       _tmp199_ = _tmp198_;
-                       _tmp200_ = vala_report_get_warnings (_tmp199_);
-                       _tmp195_ = _tmp200_ > 0;
+       _tmp206_ = vala_compiler_ccode_only;
+       if (_tmp206_) {
+               gboolean _tmp207_ = FALSE;
+               gboolean _tmp208_ = FALSE;
+               _tmp208_ = has_c_files;
+               if (_tmp208_) {
+                       _tmp207_ = TRUE;
                } else {
-                       _tmp195_ = FALSE;
+                       gboolean _tmp209_ = FALSE;
+                       _tmp209_ = has_h_files;
+                       _tmp207_ = _tmp209_;
                }
-               _tmp190_ = _tmp195_;
+               _tmp205_ = _tmp207_;
+       } else {
+               _tmp205_ = FALSE;
        }
-       if (_tmp190_) {
-               gint _tmp201_ = 0;
-               _tmp201_ = vala_compiler_quit (self);
-               result = _tmp201_;
-               return result;
+       if (_tmp205_) {
+               vala_report_warning (NULL, "C header and source files are ignored when -C or --ccode is set");
        }
-       _tmp202_ = vala_parser_new ();
-       parser = _tmp202_;
-       _tmp203_ = parser;
-       _tmp204_ = self->priv->context;
-       vala_parser_parse (_tmp203_, _tmp204_);
-       _tmp205_ = vala_genie_parser_new ();
-       genie_parser = _tmp205_;
-       _tmp206_ = genie_parser;
-       _tmp207_ = self->priv->context;
-       vala_genie_parser_parse (_tmp206_, _tmp207_);
-       _tmp208_ = vala_gir_parser_new ();
-       gir_parser = _tmp208_;
-       _tmp209_ = gir_parser;
-       _tmp210_ = self->priv->context;
-       vala_gir_parser_parse (_tmp209_, _tmp210_);
-       _tmp212_ = self->priv->context;
-       _tmp213_ = vala_code_context_get_report (_tmp212_);
-       _tmp214_ = _tmp213_;
-       _tmp215_ = vala_report_get_errors (_tmp214_);
-       if (_tmp215_ > 0) {
-               _tmp211_ = TRUE;
+       _tmp211_ = self->priv->context;
+       _tmp212_ = vala_code_context_get_report (_tmp211_);
+       _tmp213_ = _tmp212_;
+       _tmp214_ = vala_report_get_errors (_tmp213_);
+       if (_tmp214_ > 0) {
+               _tmp210_ = TRUE;
        } else {
+               gboolean _tmp215_ = FALSE;
                gboolean _tmp216_ = FALSE;
-               gboolean _tmp217_ = FALSE;
-               _tmp217_ = vala_compiler_fatal_warnings;
-               if (_tmp217_) {
-                       ValaCodeContext* _tmp218_ = NULL;
+               _tmp216_ = vala_compiler_fatal_warnings;
+               if (_tmp216_) {
+                       ValaCodeContext* _tmp217_ = NULL;
+                       ValaReport* _tmp218_ = NULL;
                        ValaReport* _tmp219_ = NULL;
-                       ValaReport* _tmp220_ = NULL;
-                       gint _tmp221_ = 0;
-                       _tmp218_ = self->priv->context;
-                       _tmp219_ = vala_code_context_get_report (_tmp218_);
-                       _tmp220_ = _tmp219_;
-                       _tmp221_ = vala_report_get_warnings (_tmp220_);
-                       _tmp216_ = _tmp221_ > 0;
+                       gint _tmp220_ = 0;
+                       _tmp217_ = self->priv->context;
+                       _tmp218_ = vala_code_context_get_report (_tmp217_);
+                       _tmp219_ = _tmp218_;
+                       _tmp220_ = vala_report_get_warnings (_tmp219_);
+                       _tmp215_ = _tmp220_ > 0;
+               } else {
+                       _tmp215_ = FALSE;
+               }
+               _tmp210_ = _tmp215_;
+       }
+       if (_tmp210_) {
+               gint _tmp221_ = 0;
+               _tmp221_ = vala_compiler_quit (self);
+               result = _tmp221_;
+               return result;
+       }
+       _tmp222_ = vala_parser_new ();
+       parser = _tmp222_;
+       _tmp223_ = parser;
+       _tmp224_ = self->priv->context;
+       vala_parser_parse (_tmp223_, _tmp224_);
+       _tmp225_ = vala_genie_parser_new ();
+       genie_parser = _tmp225_;
+       _tmp226_ = genie_parser;
+       _tmp227_ = self->priv->context;
+       vala_genie_parser_parse (_tmp226_, _tmp227_);
+       _tmp228_ = vala_gir_parser_new ();
+       gir_parser = _tmp228_;
+       _tmp229_ = gir_parser;
+       _tmp230_ = self->priv->context;
+       vala_gir_parser_parse (_tmp229_, _tmp230_);
+       _tmp232_ = self->priv->context;
+       _tmp233_ = vala_code_context_get_report (_tmp232_);
+       _tmp234_ = _tmp233_;
+       _tmp235_ = vala_report_get_errors (_tmp234_);
+       if (_tmp235_ > 0) {
+               _tmp231_ = TRUE;
+       } else {
+               gboolean _tmp236_ = FALSE;
+               gboolean _tmp237_ = FALSE;
+               _tmp237_ = vala_compiler_fatal_warnings;
+               if (_tmp237_) {
+                       ValaCodeContext* _tmp238_ = NULL;
+                       ValaReport* _tmp239_ = NULL;
+                       ValaReport* _tmp240_ = NULL;
+                       gint _tmp241_ = 0;
+                       _tmp238_ = self->priv->context;
+                       _tmp239_ = vala_code_context_get_report (_tmp238_);
+                       _tmp240_ = _tmp239_;
+                       _tmp241_ = vala_report_get_warnings (_tmp240_);
+                       _tmp236_ = _tmp241_ > 0;
                } else {
-                       _tmp216_ = FALSE;
+                       _tmp236_ = FALSE;
                }
-               _tmp211_ = _tmp216_;
+               _tmp231_ = _tmp236_;
        }
-       if (_tmp211_) {
-               gint _tmp222_ = 0;
-               _tmp222_ = vala_compiler_quit (self);
-               result = _tmp222_;
+       if (_tmp231_) {
+               gint _tmp242_ = 0;
+               _tmp242_ = vala_compiler_quit (self);
+               result = _tmp242_;
                _vala_code_visitor_unref0 (gir_parser);
                _vala_code_visitor_unref0 (genie_parser);
                _vala_code_visitor_unref0 (parser);
                return result;
        }
-       _tmp223_ = vala_compiler_fast_vapi_filename;
-       if (_tmp223_ != NULL) {
+       _tmp243_ = vala_compiler_fast_vapi_filename;
+       if (_tmp243_ != NULL) {
                ValaCodeWriter* interface_writer = NULL;
-               ValaCodeWriter* _tmp224_ = NULL;
-               ValaCodeWriter* _tmp225_ = NULL;
-               ValaCodeContext* _tmp226_ = NULL;
-               const gchar* _tmp227_ = NULL;
-               gint _tmp228_ = 0;
-               _tmp224_ = vala_code_writer_new (VALA_CODE_WRITER_TYPE_FAST);
-               interface_writer = _tmp224_;
-               _tmp225_ = interface_writer;
-               _tmp226_ = self->priv->context;
-               _tmp227_ = vala_compiler_fast_vapi_filename;
-               vala_code_writer_write_file (_tmp225_, _tmp226_, _tmp227_);
-               _tmp228_ = vala_compiler_quit (self);
-               result = _tmp228_;
+               ValaCodeWriter* _tmp244_ = NULL;
+               ValaCodeWriter* _tmp245_ = NULL;
+               ValaCodeContext* _tmp246_ = NULL;
+               const gchar* _tmp247_ = NULL;
+               gint _tmp248_ = 0;
+               _tmp244_ = vala_code_writer_new (VALA_CODE_WRITER_TYPE_FAST);
+               interface_writer = _tmp244_;
+               _tmp245_ = interface_writer;
+               _tmp246_ = self->priv->context;
+               _tmp247_ = vala_compiler_fast_vapi_filename;
+               vala_code_writer_write_file (_tmp245_, _tmp246_, _tmp247_);
+               _tmp248_ = vala_compiler_quit (self);
+               result = _tmp248_;
                _vala_code_visitor_unref0 (interface_writer);
                _vala_code_visitor_unref0 (gir_parser);
                _vala_code_visitor_unref0 (genie_parser);
                _vala_code_visitor_unref0 (parser);
                return result;
        }
-       _tmp229_ = self->priv->context;
-       vala_code_context_check (_tmp229_);
-       _tmp231_ = self->priv->context;
-       _tmp232_ = vala_code_context_get_report (_tmp231_);
-       _tmp233_ = _tmp232_;
-       _tmp234_ = vala_report_get_errors (_tmp233_);
-       if (_tmp234_ > 0) {
-               _tmp230_ = TRUE;
+       _tmp249_ = self->priv->context;
+       vala_code_context_check (_tmp249_);
+       _tmp251_ = self->priv->context;
+       _tmp252_ = vala_code_context_get_report (_tmp251_);
+       _tmp253_ = _tmp252_;
+       _tmp254_ = vala_report_get_errors (_tmp253_);
+       if (_tmp254_ > 0) {
+               _tmp250_ = TRUE;
        } else {
-               gboolean _tmp235_ = FALSE;
-               gboolean _tmp236_ = FALSE;
-               _tmp236_ = vala_compiler_fatal_warnings;
-               if (_tmp236_) {
-                       ValaCodeContext* _tmp237_ = NULL;
-                       ValaReport* _tmp238_ = NULL;
-                       ValaReport* _tmp239_ = NULL;
-                       gint _tmp240_ = 0;
-                       _tmp237_ = self->priv->context;
-                       _tmp238_ = vala_code_context_get_report (_tmp237_);
-                       _tmp239_ = _tmp238_;
-                       _tmp240_ = vala_report_get_warnings (_tmp239_);
-                       _tmp235_ = _tmp240_ > 0;
+               gboolean _tmp255_ = FALSE;
+               gboolean _tmp256_ = FALSE;
+               _tmp256_ = vala_compiler_fatal_warnings;
+               if (_tmp256_) {
+                       ValaCodeContext* _tmp257_ = NULL;
+                       ValaReport* _tmp258_ = NULL;
+                       ValaReport* _tmp259_ = NULL;
+                       gint _tmp260_ = 0;
+                       _tmp257_ = self->priv->context;
+                       _tmp258_ = vala_code_context_get_report (_tmp257_);
+                       _tmp259_ = _tmp258_;
+                       _tmp260_ = vala_report_get_warnings (_tmp259_);
+                       _tmp255_ = _tmp260_ > 0;
                } else {
-                       _tmp235_ = FALSE;
+                       _tmp255_ = FALSE;
                }
-               _tmp230_ = _tmp235_;
+               _tmp250_ = _tmp255_;
        }
-       if (_tmp230_) {
-               gint _tmp241_ = 0;
-               _tmp241_ = vala_compiler_quit (self);
-               result = _tmp241_;
+       if (_tmp250_) {
+               gint _tmp261_ = 0;
+               _tmp261_ = vala_compiler_quit (self);
+               result = _tmp261_;
                _vala_code_visitor_unref0 (gir_parser);
                _vala_code_visitor_unref0 (genie_parser);
                _vala_code_visitor_unref0 (parser);
                return result;
        }
-       _tmp244_ = vala_compiler_ccode_only;
-       if (!_tmp244_) {
-               gboolean _tmp245_ = FALSE;
-               _tmp245_ = vala_compiler_compile_only;
-               _tmp243_ = !_tmp245_;
+       _tmp264_ = vala_compiler_ccode_only;
+       if (!_tmp264_) {
+               gboolean _tmp265_ = FALSE;
+               _tmp265_ = vala_compiler_compile_only;
+               _tmp263_ = !_tmp265_;
        } else {
-               _tmp243_ = FALSE;
+               _tmp263_ = FALSE;
        }
-       if (_tmp243_) {
-               const gchar* _tmp246_ = NULL;
-               _tmp246_ = vala_compiler_library;
-               _tmp242_ = _tmp246_ == NULL;
+       if (_tmp263_) {
+               const gchar* _tmp266_ = NULL;
+               _tmp266_ = vala_compiler_library;
+               _tmp262_ = _tmp266_ == NULL;
        } else {
-               _tmp242_ = FALSE;
-       }
-       if (_tmp242_) {
-               gboolean _tmp247_ = FALSE;
-               gboolean _tmp248_ = FALSE;
-               _tmp248_ = has_c_files;
-               if (!_tmp248_) {
-                       ValaCodeContext* _tmp249_ = NULL;
-                       ValaMethod* _tmp250_ = NULL;
-                       ValaMethod* _tmp251_ = NULL;
-                       _tmp249_ = self->priv->context;
-                       _tmp250_ = vala_code_context_get_entry_point (_tmp249_);
-                       _tmp251_ = _tmp250_;
-                       _tmp247_ = _tmp251_ == NULL;
+               _tmp262_ = FALSE;
+       }
+       if (_tmp262_) {
+               gboolean _tmp267_ = FALSE;
+               gboolean _tmp268_ = FALSE;
+               _tmp268_ = has_c_files;
+               if (!_tmp268_) {
+                       ValaCodeContext* _tmp269_ = NULL;
+                       ValaMethod* _tmp270_ = NULL;
+                       ValaMethod* _tmp271_ = NULL;
+                       _tmp269_ = self->priv->context;
+                       _tmp270_ = vala_code_context_get_entry_point (_tmp269_);
+                       _tmp271_ = _tmp270_;
+                       _tmp267_ = _tmp271_ == NULL;
                } else {
-                       _tmp247_ = FALSE;
+                       _tmp267_ = FALSE;
                }
-               if (_tmp247_) {
+               if (_tmp267_) {
                        vala_report_error (NULL, "program does not contain a static `main' method");
                }
        }
-       _tmp252_ = vala_compiler_dump_tree;
-       if (_tmp252_ != NULL) {
+       _tmp272_ = vala_compiler_dump_tree;
+       if (_tmp272_ != NULL) {
                ValaCodeWriter* code_writer = NULL;
-               ValaCodeWriter* _tmp253_ = NULL;
-               ValaCodeWriter* _tmp254_ = NULL;
-               ValaCodeContext* _tmp255_ = NULL;
-               const gchar* _tmp256_ = NULL;
-               _tmp253_ = vala_code_writer_new (VALA_CODE_WRITER_TYPE_DUMP);
-               code_writer = _tmp253_;
-               _tmp254_ = code_writer;
-               _tmp255_ = self->priv->context;
-               _tmp256_ = vala_compiler_dump_tree;
-               vala_code_writer_write_file (_tmp254_, _tmp255_, _tmp256_);
+               ValaCodeWriter* _tmp273_ = NULL;
+               ValaCodeWriter* _tmp274_ = NULL;
+               ValaCodeContext* _tmp275_ = NULL;
+               const gchar* _tmp276_ = NULL;
+               _tmp273_ = vala_code_writer_new (VALA_CODE_WRITER_TYPE_DUMP);
+               code_writer = _tmp273_;
+               _tmp274_ = code_writer;
+               _tmp275_ = self->priv->context;
+               _tmp276_ = vala_compiler_dump_tree;
+               vala_code_writer_write_file (_tmp274_, _tmp275_, _tmp276_);
                _vala_code_visitor_unref0 (code_writer);
        }
-       _tmp258_ = self->priv->context;
-       _tmp259_ = vala_code_context_get_report (_tmp258_);
-       _tmp260_ = _tmp259_;
-       _tmp261_ = vala_report_get_errors (_tmp260_);
-       if (_tmp261_ > 0) {
-               _tmp257_ = TRUE;
+       _tmp278_ = self->priv->context;
+       _tmp279_ = vala_code_context_get_report (_tmp278_);
+       _tmp280_ = _tmp279_;
+       _tmp281_ = vala_report_get_errors (_tmp280_);
+       if (_tmp281_ > 0) {
+               _tmp277_ = TRUE;
        } else {
-               gboolean _tmp262_ = FALSE;
-               gboolean _tmp263_ = FALSE;
-               _tmp263_ = vala_compiler_fatal_warnings;
-               if (_tmp263_) {
-                       ValaCodeContext* _tmp264_ = NULL;
-                       ValaReport* _tmp265_ = NULL;
-                       ValaReport* _tmp266_ = NULL;
-                       gint _tmp267_ = 0;
-                       _tmp264_ = self->priv->context;
-                       _tmp265_ = vala_code_context_get_report (_tmp264_);
-                       _tmp266_ = _tmp265_;
-                       _tmp267_ = vala_report_get_warnings (_tmp266_);
-                       _tmp262_ = _tmp267_ > 0;
+               gboolean _tmp282_ = FALSE;
+               gboolean _tmp283_ = FALSE;
+               _tmp283_ = vala_compiler_fatal_warnings;
+               if (_tmp283_) {
+                       ValaCodeContext* _tmp284_ = NULL;
+                       ValaReport* _tmp285_ = NULL;
+                       ValaReport* _tmp286_ = NULL;
+                       gint _tmp287_ = 0;
+                       _tmp284_ = self->priv->context;
+                       _tmp285_ = vala_code_context_get_report (_tmp284_);
+                       _tmp286_ = _tmp285_;
+                       _tmp287_ = vala_report_get_warnings (_tmp286_);
+                       _tmp282_ = _tmp287_ > 0;
                } else {
-                       _tmp262_ = FALSE;
+                       _tmp282_ = FALSE;
                }
-               _tmp257_ = _tmp262_;
+               _tmp277_ = _tmp282_;
        }
-       if (_tmp257_) {
-               gint _tmp268_ = 0;
-               _tmp268_ = vala_compiler_quit (self);
-               result = _tmp268_;
+       if (_tmp277_) {
+               gint _tmp288_ = 0;
+               _tmp288_ = vala_compiler_quit (self);
+               result = _tmp288_;
                _vala_code_visitor_unref0 (gir_parser);
                _vala_code_visitor_unref0 (genie_parser);
                _vala_code_visitor_unref0 (parser);
                return result;
        }
-       _tmp269_ = self->priv->context;
-       _tmp270_ = vala_code_context_get_codegen (_tmp269_);
-       _tmp271_ = _tmp270_;
-       _tmp272_ = self->priv->context;
-       vala_code_generator_emit (_tmp271_, _tmp272_);
-       _tmp274_ = self->priv->context;
-       _tmp275_ = vala_code_context_get_report (_tmp274_);
-       _tmp276_ = _tmp275_;
-       _tmp277_ = vala_report_get_errors (_tmp276_);
-       if (_tmp277_ > 0) {
-               _tmp273_ = TRUE;
+       _tmp289_ = self->priv->context;
+       _tmp290_ = vala_code_context_get_codegen (_tmp289_);
+       _tmp291_ = _tmp290_;
+       _tmp292_ = self->priv->context;
+       vala_code_generator_emit (_tmp291_, _tmp292_);
+       _tmp294_ = self->priv->context;
+       _tmp295_ = vala_code_context_get_report (_tmp294_);
+       _tmp296_ = _tmp295_;
+       _tmp297_ = vala_report_get_errors (_tmp296_);
+       if (_tmp297_ > 0) {
+               _tmp293_ = TRUE;
        } else {
-               gboolean _tmp278_ = FALSE;
-               gboolean _tmp279_ = FALSE;
-               _tmp279_ = vala_compiler_fatal_warnings;
-               if (_tmp279_) {
-                       ValaCodeContext* _tmp280_ = NULL;
-                       ValaReport* _tmp281_ = NULL;
-                       ValaReport* _tmp282_ = NULL;
-                       gint _tmp283_ = 0;
-                       _tmp280_ = self->priv->context;
-                       _tmp281_ = vala_code_context_get_report (_tmp280_);
-                       _tmp282_ = _tmp281_;
-                       _tmp283_ = vala_report_get_warnings (_tmp282_);
-                       _tmp278_ = _tmp283_ > 0;
+               gboolean _tmp298_ = FALSE;
+               gboolean _tmp299_ = FALSE;
+               _tmp299_ = vala_compiler_fatal_warnings;
+               if (_tmp299_) {
+                       ValaCodeContext* _tmp300_ = NULL;
+                       ValaReport* _tmp301_ = NULL;
+                       ValaReport* _tmp302_ = NULL;
+                       gint _tmp303_ = 0;
+                       _tmp300_ = self->priv->context;
+                       _tmp301_ = vala_code_context_get_report (_tmp300_);
+                       _tmp302_ = _tmp301_;
+                       _tmp303_ = vala_report_get_warnings (_tmp302_);
+                       _tmp298_ = _tmp303_ > 0;
                } else {
-                       _tmp278_ = FALSE;
+                       _tmp298_ = FALSE;
                }
-               _tmp273_ = _tmp278_;
+               _tmp293_ = _tmp298_;
        }
-       if (_tmp273_) {
-               gint _tmp284_ = 0;
-               _tmp284_ = vala_compiler_quit (self);
-               result = _tmp284_;
+       if (_tmp293_) {
+               gint _tmp304_ = 0;
+               _tmp304_ = vala_compiler_quit (self);
+               result = _tmp304_;
                _vala_code_visitor_unref0 (gir_parser);
                _vala_code_visitor_unref0 (genie_parser);
                _vala_code_visitor_unref0 (parser);
                return result;
        }
-       _tmp286_ = vala_compiler_vapi_filename;
-       if (_tmp286_ == NULL) {
-               const gchar* _tmp287_ = NULL;
-               _tmp287_ = vala_compiler_library;
-               _tmp285_ = _tmp287_ != NULL;
+       _tmp306_ = vala_compiler_vapi_filename;
+       if (_tmp306_ == NULL) {
+               const gchar* _tmp307_ = NULL;
+               _tmp307_ = vala_compiler_library;
+               _tmp305_ = _tmp307_ != NULL;
        } else {
-               _tmp285_ = FALSE;
+               _tmp305_ = FALSE;
        }
-       if (_tmp285_) {
-               const gchar* _tmp288_ = NULL;
-               gchar* _tmp289_ = NULL;
-               _tmp288_ = vala_compiler_library;
-               _tmp289_ = g_strdup_printf ("%s.vapi", _tmp288_);
+       if (_tmp305_) {
+               const gchar* _tmp308_ = NULL;
+               gchar* _tmp309_ = NULL;
+               _tmp308_ = vala_compiler_library;
+               _tmp309_ = g_strdup_printf ("%s.vapi", _tmp308_);
                _g_free0 (vala_compiler_vapi_filename);
-               vala_compiler_vapi_filename = _tmp289_;
+               vala_compiler_vapi_filename = _tmp309_;
        }
-       _tmp290_ = vala_compiler_library;
-       if (_tmp290_ != NULL) {
-               const gchar* _tmp291_ = NULL;
-               _tmp291_ = vala_compiler_gir;
-               if (_tmp291_ != NULL) {
+       _tmp310_ = vala_compiler_library;
+       if (_tmp310_ != NULL) {
+               const gchar* _tmp311_ = NULL;
+               _tmp311_ = vala_compiler_gir;
+               if (_tmp311_ != NULL) {
                        gchar* gir_base = NULL;
-                       const gchar* _tmp292_ = NULL;
-                       gchar* _tmp293_ = NULL;
+                       const gchar* _tmp312_ = NULL;
+                       gchar* _tmp313_ = NULL;
                        glong gir_len = 0L;
-                       const gchar* _tmp294_ = NULL;
-                       gint _tmp295_ = 0;
-                       gint _tmp296_ = 0;
+                       const gchar* _tmp314_ = NULL;
+                       gint _tmp315_ = 0;
+                       gint _tmp316_ = 0;
                        gint last_hyphen = 0;
-                       const gchar* _tmp297_ = NULL;
-                       gint _tmp298_ = 0;
-                       gboolean _tmp299_ = FALSE;
-                       gint _tmp300_ = 0;
-                       _tmp292_ = vala_compiler_gir;
-                       _tmp293_ = g_path_get_basename (_tmp292_);
-                       gir_base = _tmp293_;
-                       _tmp294_ = gir_base;
-                       _tmp295_ = strlen (_tmp294_);
-                       _tmp296_ = _tmp295_;
-                       gir_len = (glong) _tmp296_;
-                       _tmp297_ = gir_base;
-                       _tmp298_ = string_last_index_of_char (_tmp297_, (gunichar) '-', 0);
-                       last_hyphen = _tmp298_;
-                       _tmp300_ = last_hyphen;
-                       if (_tmp300_ == (-1)) {
-                               _tmp299_ = TRUE;
+                       const gchar* _tmp317_ = NULL;
+                       gint _tmp318_ = 0;
+                       gboolean _tmp319_ = FALSE;
+                       gint _tmp320_ = 0;
+                       _tmp312_ = vala_compiler_gir;
+                       _tmp313_ = g_path_get_basename (_tmp312_);
+                       gir_base = _tmp313_;
+                       _tmp314_ = gir_base;
+                       _tmp315_ = strlen (_tmp314_);
+                       _tmp316_ = _tmp315_;
+                       gir_len = (glong) _tmp316_;
+                       _tmp317_ = gir_base;
+                       _tmp318_ = string_last_index_of_char (_tmp317_, (gunichar) '-', 0);
+                       last_hyphen = _tmp318_;
+                       _tmp320_ = last_hyphen;
+                       if (_tmp320_ == (-1)) {
+                               _tmp319_ = TRUE;
                        } else {
-                               const gchar* _tmp301_ = NULL;
-                               gboolean _tmp302_ = FALSE;
-                               _tmp301_ = gir_base;
-                               _tmp302_ = g_str_has_suffix (_tmp301_, ".gir");
-                               _tmp299_ = !_tmp302_;
+                               const gchar* _tmp321_ = NULL;
+                               gboolean _tmp322_ = FALSE;
+                               _tmp321_ = gir_base;
+                               _tmp322_ = g_str_has_suffix (_tmp321_, ".gir");
+                               _tmp319_ = !_tmp322_;
                        }
-                       if (_tmp299_) {
-                               const gchar* _tmp303_ = NULL;
-                               gchar* _tmp304_ = NULL;
-                               gchar* _tmp305_ = NULL;
-                               _tmp303_ = vala_compiler_gir;
-                               _tmp304_ = g_strdup_printf ("GIR file name `%s' is not well-formed, expected NAME-VERSION.gir", _tmp303_);
-                               _tmp305_ = _tmp304_;
-                               vala_report_error (NULL, _tmp305_);
-                               _g_free0 (_tmp305_);
+                       if (_tmp319_) {
+                               const gchar* _tmp323_ = NULL;
+                               gchar* _tmp324_ = NULL;
+                               gchar* _tmp325_ = NULL;
+                               _tmp323_ = vala_compiler_gir;
+                               _tmp324_ = g_strdup_printf ("GIR file name `%s' is not well-formed, expected NAME-VERSION.gir", _tmp323_);
+                               _tmp325_ = _tmp324_;
+                               vala_report_error (NULL, _tmp325_);
+                               _g_free0 (_tmp325_);
                        } else {
                                gchar* gir_namespace = NULL;
-                               const gchar* _tmp306_ = NULL;
-                               gint _tmp307_ = 0;
-                               gchar* _tmp308_ = NULL;
+                               const gchar* _tmp326_ = NULL;
+                               gint _tmp327_ = 0;
+                               gchar* _tmp328_ = NULL;
                                gchar* gir_version = NULL;
-                               const gchar* _tmp309_ = NULL;
-                               gint _tmp310_ = 0;
-                               glong _tmp311_ = 0L;
-                               gint _tmp312_ = 0;
-                               gchar* _tmp313_ = NULL;
-                               const gchar* _tmp314_ = NULL;
-                               gboolean _tmp315_ = FALSE;
-                               gboolean _tmp316_ = FALSE;
-                               gboolean _tmp317_ = FALSE;
-                               const gchar* _tmp318_ = NULL;
-                               _tmp306_ = gir_base;
-                               _tmp307_ = last_hyphen;
-                               _tmp308_ = string_substring (_tmp306_, (glong) 0, (glong) _tmp307_);
-                               gir_namespace = _tmp308_;
-                               _tmp309_ = gir_base;
-                               _tmp310_ = last_hyphen;
-                               _tmp311_ = gir_len;
-                               _tmp312_ = last_hyphen;
-                               _tmp313_ = string_substring (_tmp309_, (glong) (_tmp310_ + 1), (_tmp311_ - _tmp312_) - 5);
-                               gir_version = _tmp313_;
-                               _tmp314_ = gir_version;
-                               g_strcanon (_tmp314_, "0123456789.", '?');
-                               _tmp318_ = gir_namespace;
-                               if (g_strcmp0 (_tmp318_, "") == 0) {
-                                       _tmp317_ = TRUE;
+                               const gchar* _tmp329_ = NULL;
+                               gint _tmp330_ = 0;
+                               glong _tmp331_ = 0L;
+                               gint _tmp332_ = 0;
+                               gchar* _tmp333_ = NULL;
+                               const gchar* _tmp334_ = NULL;
+                               gboolean _tmp335_ = FALSE;
+                               gboolean _tmp336_ = FALSE;
+                               gboolean _tmp337_ = FALSE;
+                               const gchar* _tmp338_ = NULL;
+                               _tmp326_ = gir_base;
+                               _tmp327_ = last_hyphen;
+                               _tmp328_ = string_substring (_tmp326_, (glong) 0, (glong) _tmp327_);
+                               gir_namespace = _tmp328_;
+                               _tmp329_ = gir_base;
+                               _tmp330_ = last_hyphen;
+                               _tmp331_ = gir_len;
+                               _tmp332_ = last_hyphen;
+                               _tmp333_ = string_substring (_tmp329_, (glong) (_tmp330_ + 1), (_tmp331_ - _tmp332_) - 5);
+                               gir_version = _tmp333_;
+                               _tmp334_ = gir_version;
+                               g_strcanon (_tmp334_, "0123456789.", '?');
+                               _tmp338_ = gir_namespace;
+                               if (g_strcmp0 (_tmp338_, "") == 0) {
+                                       _tmp337_ = TRUE;
                                } else {
-                                       const gchar* _tmp319_ = NULL;
-                                       _tmp319_ = gir_version;
-                                       _tmp317_ = g_strcmp0 (_tmp319_, "") == 0;
+                                       const gchar* _tmp339_ = NULL;
+                                       _tmp339_ = gir_version;
+                                       _tmp337_ = g_strcmp0 (_tmp339_, "") == 0;
                                }
-                               if (_tmp317_) {
-                                       _tmp316_ = TRUE;
+                               if (_tmp337_) {
+                                       _tmp336_ = TRUE;
                                } else {
-                                       const gchar* _tmp320_ = NULL;
-                                       gchar _tmp321_ = '\0';
-                                       gboolean _tmp322_ = FALSE;
-                                       _tmp320_ = gir_version;
-                                       _tmp321_ = string_get (_tmp320_, (glong) 0);
-                                       _tmp322_ = g_ascii_isdigit (_tmp321_);
-                                       _tmp316_ = !_tmp322_;
+                                       const gchar* _tmp340_ = NULL;
+                                       gchar _tmp341_ = '\0';
+                                       gboolean _tmp342_ = FALSE;
+                                       _tmp340_ = gir_version;
+                                       _tmp341_ = string_get (_tmp340_, (glong) 0);
+                                       _tmp342_ = g_ascii_isdigit (_tmp341_);
+                                       _tmp336_ = !_tmp342_;
                                }
-                               if (_tmp316_) {
-                                       _tmp315_ = TRUE;
+                               if (_tmp336_) {
+                                       _tmp335_ = TRUE;
                                } else {
-                                       const gchar* _tmp323_ = NULL;
-                                       gboolean _tmp324_ = FALSE;
-                                       _tmp323_ = gir_version;
-                                       _tmp324_ = string_contains (_tmp323_, "?");
-                                       _tmp315_ = _tmp324_;
+                                       const gchar* _tmp343_ = NULL;
+                                       gboolean _tmp344_ = FALSE;
+                                       _tmp343_ = gir_version;
+                                       _tmp344_ = string_contains (_tmp343_, "?");
+                                       _tmp335_ = _tmp344_;
                                }
-                               if (_tmp315_) {
-                                       const gchar* _tmp325_ = NULL;
-                                       gchar* _tmp326_ = NULL;
-                                       gchar* _tmp327_ = NULL;
-                                       _tmp325_ = vala_compiler_gir;
-                                       _tmp326_ = g_strdup_printf ("GIR file name `%s' is not well-formed, expected NAME-VERSION.gir", _tmp325_);
-                                       _tmp327_ = _tmp326_;
-                                       vala_report_error (NULL, _tmp327_);
-                                       _g_free0 (_tmp327_);
+                               if (_tmp335_) {
+                                       const gchar* _tmp345_ = NULL;
+                                       gchar* _tmp346_ = NULL;
+                                       gchar* _tmp347_ = NULL;
+                                       _tmp345_ = vala_compiler_gir;
+                                       _tmp346_ = g_strdup_printf ("GIR file name `%s' is not well-formed, expected NAME-VERSION.gir", _tmp345_);
+                                       _tmp347_ = _tmp346_;
+                                       vala_report_error (NULL, _tmp347_);
+                                       _g_free0 (_tmp347_);
                                } else {
                                        ValaGIRWriter* gir_writer = NULL;
-                                       ValaGIRWriter* _tmp328_ = NULL;
+                                       ValaGIRWriter* _tmp348_ = NULL;
                                        gchar* gir_directory = NULL;
-                                       gchar* _tmp329_ = NULL;
-                                       const gchar* _tmp330_ = NULL;
-                                       ValaGIRWriter* _tmp335_ = NULL;
-                                       ValaCodeContext* _tmp336_ = NULL;
-                                       const gchar* _tmp337_ = NULL;
-                                       const gchar* _tmp338_ = NULL;
-                                       const gchar* _tmp339_ = NULL;
-                                       const gchar* _tmp340_ = NULL;
-                                       const gchar* _tmp341_ = NULL;
-                                       _tmp328_ = vala_gir_writer_new ();
-                                       gir_writer = _tmp328_;
-                                       _tmp329_ = g_strdup (".");
-                                       gir_directory = _tmp329_;
-                                       _tmp330_ = vala_compiler_directory;
-                                       if (_tmp330_ != NULL) {
-                                               ValaCodeContext* _tmp331_ = NULL;
-                                               const gchar* _tmp332_ = NULL;
-                                               const gchar* _tmp333_ = NULL;
-                                               gchar* _tmp334_ = NULL;
-                                               _tmp331_ = self->priv->context;
-                                               _tmp332_ = vala_code_context_get_directory (_tmp331_);
-                                               _tmp333_ = _tmp332_;
-                                               _tmp334_ = g_strdup (_tmp333_);
+                                       gchar* _tmp349_ = NULL;
+                                       const gchar* _tmp350_ = NULL;
+                                       ValaGIRWriter* _tmp355_ = NULL;
+                                       ValaCodeContext* _tmp356_ = NULL;
+                                       const gchar* _tmp357_ = NULL;
+                                       const gchar* _tmp358_ = NULL;
+                                       const gchar* _tmp359_ = NULL;
+                                       const gchar* _tmp360_ = NULL;
+                                       const gchar* _tmp361_ = NULL;
+                                       _tmp348_ = vala_gir_writer_new ();
+                                       gir_writer = _tmp348_;
+                                       _tmp349_ = g_strdup (".");
+                                       gir_directory = _tmp349_;
+                                       _tmp350_ = vala_compiler_directory;
+                                       if (_tmp350_ != NULL) {
+                                               ValaCodeContext* _tmp351_ = NULL;
+                                               const gchar* _tmp352_ = NULL;
+                                               const gchar* _tmp353_ = NULL;
+                                               gchar* _tmp354_ = NULL;
+                                               _tmp351_ = self->priv->context;
+                                               _tmp352_ = vala_code_context_get_directory (_tmp351_);
+                                               _tmp353_ = _tmp352_;
+                                               _tmp354_ = g_strdup (_tmp353_);
                                                _g_free0 (gir_directory);
-                                               gir_directory = _tmp334_;
+                                               gir_directory = _tmp354_;
                                        }
-                                       _tmp335_ = gir_writer;
-                                       _tmp336_ = self->priv->context;
-                                       _tmp337_ = gir_directory;
-                                       _tmp338_ = vala_compiler_gir;
-                                       _tmp339_ = gir_namespace;
-                                       _tmp340_ = gir_version;
-                                       _tmp341_ = vala_compiler_library;
-                                       vala_gir_writer_write_file (_tmp335_, _tmp336_, _tmp337_, _tmp338_, _tmp339_, _tmp340_, _tmp341_);
+                                       _tmp355_ = gir_writer;
+                                       _tmp356_ = self->priv->context;
+                                       _tmp357_ = gir_directory;
+                                       _tmp358_ = vala_compiler_gir;
+                                       _tmp359_ = gir_namespace;
+                                       _tmp360_ = gir_version;
+                                       _tmp361_ = vala_compiler_library;
+                                       vala_gir_writer_write_file (_tmp355_, _tmp356_, _tmp357_, _tmp358_, _tmp359_, _tmp360_, _tmp361_);
                                        _g_free0 (gir_directory);
                                        _vala_code_visitor_unref0 (gir_writer);
                                }
@@ -1693,193 +1781,215 @@ static gint vala_compiler_run (ValaCompiler* self) {
                _g_free0 (vala_compiler_library);
                vala_compiler_library = NULL;
        }
-       _tmp342_ = vala_compiler_vapi_filename;
-       if (_tmp342_ != NULL) {
+       _tmp362_ = vala_compiler_vapi_filename;
+       if (_tmp362_ != NULL) {
                ValaCodeWriter* interface_writer = NULL;
-               ValaCodeWriter* _tmp343_ = NULL;
-               gboolean _tmp344_ = FALSE;
-               const gchar* _tmp345_ = NULL;
-               ValaCodeWriter* _tmp353_ = NULL;
-               ValaCodeContext* _tmp354_ = NULL;
-               const gchar* _tmp355_ = NULL;
-               _tmp343_ = vala_code_writer_new (VALA_CODE_WRITER_TYPE_EXTERNAL);
-               interface_writer = _tmp343_;
-               _tmp345_ = vala_compiler_directory;
-               if (_tmp345_ != NULL) {
-                       const gchar* _tmp346_ = NULL;
-                       gboolean _tmp347_ = FALSE;
-                       _tmp346_ = vala_compiler_vapi_filename;
-                       _tmp347_ = g_path_is_absolute (_tmp346_);
-                       _tmp344_ = !_tmp347_;
+               ValaCodeWriter* _tmp363_ = NULL;
+               gboolean _tmp364_ = FALSE;
+               const gchar* _tmp365_ = NULL;
+               ValaCodeWriter* _tmp373_ = NULL;
+               ValaCodeContext* _tmp374_ = NULL;
+               const gchar* _tmp375_ = NULL;
+               _tmp363_ = vala_code_writer_new (VALA_CODE_WRITER_TYPE_EXTERNAL);
+               interface_writer = _tmp363_;
+               _tmp365_ = vala_compiler_directory;
+               if (_tmp365_ != NULL) {
+                       const gchar* _tmp366_ = NULL;
+                       gboolean _tmp367_ = FALSE;
+                       _tmp366_ = vala_compiler_vapi_filename;
+                       _tmp367_ = g_path_is_absolute (_tmp366_);
+                       _tmp364_ = !_tmp367_;
                } else {
-                       _tmp344_ = FALSE;
+                       _tmp364_ = FALSE;
                }
-               if (_tmp344_) {
-                       ValaCodeContext* _tmp348_ = NULL;
-                       const gchar* _tmp349_ = NULL;
-                       const gchar* _tmp350_ = NULL;
-                       const gchar* _tmp351_ = NULL;
-                       gchar* _tmp352_ = NULL;
-                       _tmp348_ = self->priv->context;
-                       _tmp349_ = vala_code_context_get_directory (_tmp348_);
-                       _tmp350_ = _tmp349_;
-                       _tmp351_ = vala_compiler_vapi_filename;
-                       _tmp352_ = g_strdup_printf ("%s%c%s", _tmp350_, (gint) G_DIR_SEPARATOR, _tmp351_);
+               if (_tmp364_) {
+                       ValaCodeContext* _tmp368_ = NULL;
+                       const gchar* _tmp369_ = NULL;
+                       const gchar* _tmp370_ = NULL;
+                       const gchar* _tmp371_ = NULL;
+                       gchar* _tmp372_ = NULL;
+                       _tmp368_ = self->priv->context;
+                       _tmp369_ = vala_code_context_get_directory (_tmp368_);
+                       _tmp370_ = _tmp369_;
+                       _tmp371_ = vala_compiler_vapi_filename;
+                       _tmp372_ = g_strdup_printf ("%s%c%s", _tmp370_, (gint) G_DIR_SEPARATOR, _tmp371_);
                        _g_free0 (vala_compiler_vapi_filename);
-                       vala_compiler_vapi_filename = _tmp352_;
+                       vala_compiler_vapi_filename = _tmp372_;
                }
-               _tmp353_ = interface_writer;
-               _tmp354_ = self->priv->context;
-               _tmp355_ = vala_compiler_vapi_filename;
-               vala_code_writer_write_file (_tmp353_, _tmp354_, _tmp355_);
+               _tmp373_ = interface_writer;
+               _tmp374_ = self->priv->context;
+               _tmp375_ = vala_compiler_vapi_filename;
+               vala_code_writer_write_file (_tmp373_, _tmp374_, _tmp375_);
                _vala_code_visitor_unref0 (interface_writer);
        }
-       _tmp356_ = vala_compiler_internal_vapi_filename;
-       if (_tmp356_ != NULL) {
-               gboolean _tmp357_ = FALSE;
-               const gchar* _tmp358_ = NULL;
+       _tmp376_ = vala_compiler_internal_vapi_filename;
+       if (_tmp376_ != NULL) {
+               gboolean _tmp377_ = FALSE;
+               const gchar* _tmp378_ = NULL;
                ValaCodeWriter* interface_writer = NULL;
-               ValaCodeWriter* _tmp361_ = NULL;
-               ValaCodeWriter* _tmp362_ = NULL;
-               const gchar* _tmp363_ = NULL;
-               const gchar* _tmp364_ = NULL;
+               ValaCodeWriter* _tmp381_ = NULL;
+               ValaCodeWriter* _tmp382_ = NULL;
+               const gchar* _tmp383_ = NULL;
+               const gchar* _tmp384_ = NULL;
                gchar* vapi_filename = NULL;
-               const gchar* _tmp365_ = NULL;
-               gchar* _tmp366_ = NULL;
-               gboolean _tmp367_ = FALSE;
-               const gchar* _tmp368_ = NULL;
-               ValaCodeWriter* _tmp376_ = NULL;
-               ValaCodeContext* _tmp377_ = NULL;
-               const gchar* _tmp378_ = NULL;
-               _tmp358_ = vala_compiler_internal_header_filename;
-               if (_tmp358_ == NULL) {
-                       _tmp357_ = TRUE;
+               const gchar* _tmp385_ = NULL;
+               gchar* _tmp386_ = NULL;
+               gboolean _tmp387_ = FALSE;
+               const gchar* _tmp388_ = NULL;
+               ValaCodeWriter* _tmp396_ = NULL;
+               ValaCodeContext* _tmp397_ = NULL;
+               const gchar* _tmp398_ = NULL;
+               _tmp378_ = vala_compiler_internal_header_filename;
+               if (_tmp378_ == NULL) {
+                       _tmp377_ = TRUE;
                } else {
-                       const gchar* _tmp359_ = NULL;
-                       _tmp359_ = vala_compiler_header_filename;
-                       _tmp357_ = _tmp359_ == NULL;
+                       const gchar* _tmp379_ = NULL;
+                       _tmp379_ = vala_compiler_header_filename;
+                       _tmp377_ = _tmp379_ == NULL;
                }
-               if (_tmp357_) {
-                       gint _tmp360_ = 0;
+               if (_tmp377_) {
+                       gint _tmp380_ = 0;
                        vala_report_error (NULL, "--internal-vapi may only be used in combination with --header and --in" \
 "ternal-header");
-                       _tmp360_ = vala_compiler_quit (self);
-                       result = _tmp360_;
+                       _tmp380_ = vala_compiler_quit (self);
+                       result = _tmp380_;
                        _vala_code_visitor_unref0 (gir_parser);
                        _vala_code_visitor_unref0 (genie_parser);
                        _vala_code_visitor_unref0 (parser);
                        return result;
                }
-               _tmp361_ = vala_code_writer_new (VALA_CODE_WRITER_TYPE_INTERNAL);
-               interface_writer = _tmp361_;
-               _tmp362_ = interface_writer;
-               _tmp363_ = vala_compiler_header_filename;
-               _tmp364_ = vala_compiler_internal_header_filename;
-               vala_code_writer_set_cheader_override (_tmp362_, _tmp363_, _tmp364_);
-               _tmp365_ = vala_compiler_internal_vapi_filename;
-               _tmp366_ = g_strdup (_tmp365_);
-               vapi_filename = _tmp366_;
-               _tmp368_ = vala_compiler_directory;
-               if (_tmp368_ != NULL) {
-                       const gchar* _tmp369_ = NULL;
-                       gboolean _tmp370_ = FALSE;
-                       _tmp369_ = vapi_filename;
-                       _tmp370_ = g_path_is_absolute (_tmp369_);
-                       _tmp367_ = !_tmp370_;
+               _tmp381_ = vala_code_writer_new (VALA_CODE_WRITER_TYPE_INTERNAL);
+               interface_writer = _tmp381_;
+               _tmp382_ = interface_writer;
+               _tmp383_ = vala_compiler_header_filename;
+               _tmp384_ = vala_compiler_internal_header_filename;
+               vala_code_writer_set_cheader_override (_tmp382_, _tmp383_, _tmp384_);
+               _tmp385_ = vala_compiler_internal_vapi_filename;
+               _tmp386_ = g_strdup (_tmp385_);
+               vapi_filename = _tmp386_;
+               _tmp388_ = vala_compiler_directory;
+               if (_tmp388_ != NULL) {
+                       const gchar* _tmp389_ = NULL;
+                       gboolean _tmp390_ = FALSE;
+                       _tmp389_ = vapi_filename;
+                       _tmp390_ = g_path_is_absolute (_tmp389_);
+                       _tmp387_ = !_tmp390_;
                } else {
-                       _tmp367_ = FALSE;
+                       _tmp387_ = FALSE;
                }
-               if (_tmp367_) {
-                       ValaCodeContext* _tmp371_ = NULL;
-                       const gchar* _tmp372_ = NULL;
-                       const gchar* _tmp373_ = NULL;
-                       const gchar* _tmp374_ = NULL;
-                       gchar* _tmp375_ = NULL;
-                       _tmp371_ = self->priv->context;
-                       _tmp372_ = vala_code_context_get_directory (_tmp371_);
-                       _tmp373_ = _tmp372_;
-                       _tmp374_ = vapi_filename;
-                       _tmp375_ = g_strdup_printf ("%s%c%s", _tmp373_, (gint) G_DIR_SEPARATOR, _tmp374_);
+               if (_tmp387_) {
+                       ValaCodeContext* _tmp391_ = NULL;
+                       const gchar* _tmp392_ = NULL;
+                       const gchar* _tmp393_ = NULL;
+                       const gchar* _tmp394_ = NULL;
+                       gchar* _tmp395_ = NULL;
+                       _tmp391_ = self->priv->context;
+                       _tmp392_ = vala_code_context_get_directory (_tmp391_);
+                       _tmp393_ = _tmp392_;
+                       _tmp394_ = vapi_filename;
+                       _tmp395_ = g_strdup_printf ("%s%c%s", _tmp393_, (gint) G_DIR_SEPARATOR, _tmp394_);
                        _g_free0 (vapi_filename);
-                       vapi_filename = _tmp375_;
+                       vapi_filename = _tmp395_;
                }
-               _tmp376_ = interface_writer;
-               _tmp377_ = self->priv->context;
-               _tmp378_ = vapi_filename;
-               vala_code_writer_write_file (_tmp376_, _tmp377_, _tmp378_);
+               _tmp396_ = interface_writer;
+               _tmp397_ = self->priv->context;
+               _tmp398_ = vapi_filename;
+               vala_code_writer_write_file (_tmp396_, _tmp397_, _tmp398_);
                _g_free0 (vala_compiler_internal_vapi_filename);
                vala_compiler_internal_vapi_filename = NULL;
                _g_free0 (vapi_filename);
                _vala_code_visitor_unref0 (interface_writer);
        }
-       _tmp379_ = vala_compiler_dependencies;
-       if (_tmp379_ != NULL) {
-               ValaCodeContext* _tmp380_ = NULL;
-               const gchar* _tmp381_ = NULL;
-               _tmp380_ = self->priv->context;
-               _tmp381_ = vala_compiler_dependencies;
-               vala_code_context_write_dependencies (_tmp380_, _tmp381_);
+       _tmp399_ = vala_compiler_dependencies;
+       if (_tmp399_ != NULL) {
+               ValaCodeContext* _tmp400_ = NULL;
+               const gchar* _tmp401_ = NULL;
+               _tmp400_ = self->priv->context;
+               _tmp401_ = vala_compiler_dependencies;
+               vala_code_context_write_dependencies (_tmp400_, _tmp401_);
        }
-       _tmp382_ = vala_compiler_ccode_only;
-       if (!_tmp382_) {
+       _tmp402_ = vala_compiler_ccode_only;
+       if (!_tmp402_) {
                ValaCCodeCompiler* ccompiler = NULL;
-               ValaCCodeCompiler* _tmp383_ = NULL;
-               gboolean _tmp384_ = FALSE;
-               const gchar* _tmp385_ = NULL;
-               gchar** _tmp389_ = NULL;
-               gint _tmp389__length1 = 0;
-               _tmp383_ = vala_ccode_compiler_new ();
-               ccompiler = _tmp383_;
-               _tmp385_ = vala_compiler_cc_command;
-               if (_tmp385_ == NULL) {
-                       const gchar* _tmp386_ = NULL;
-                       _tmp386_ = g_getenv ("CC");
-                       _tmp384_ = _tmp386_ != NULL;
+               ValaCCodeCompiler* _tmp403_ = NULL;
+               gboolean _tmp404_ = FALSE;
+               const gchar* _tmp405_ = NULL;
+               gboolean _tmp409_ = FALSE;
+               const gchar* _tmp410_ = NULL;
+               gchar** _tmp414_ = NULL;
+               gint _tmp414__length1 = 0;
+               _tmp403_ = vala_ccode_compiler_new ();
+               ccompiler = _tmp403_;
+               _tmp405_ = vala_compiler_cc_command;
+               if (_tmp405_ == NULL) {
+                       const gchar* _tmp406_ = NULL;
+                       _tmp406_ = g_getenv ("CC");
+                       _tmp404_ = _tmp406_ != NULL;
                } else {
-                       _tmp384_ = FALSE;
+                       _tmp404_ = FALSE;
                }
-               if (_tmp384_) {
-                       const gchar* _tmp387_ = NULL;
-                       gchar* _tmp388_ = NULL;
-                       _tmp387_ = g_getenv ("CC");
-                       _tmp388_ = g_strdup (_tmp387_);
+               if (_tmp404_) {
+                       const gchar* _tmp407_ = NULL;
+                       gchar* _tmp408_ = NULL;
+                       _tmp407_ = g_getenv ("CC");
+                       _tmp408_ = g_strdup (_tmp407_);
                        _g_free0 (vala_compiler_cc_command);
-                       vala_compiler_cc_command = _tmp388_;
+                       vala_compiler_cc_command = _tmp408_;
                }
-               _tmp389_ = vala_compiler_cc_options;
-               _tmp389__length1 = _vala_array_length (vala_compiler_cc_options);
-               if (_tmp389_ == NULL) {
-                       ValaCCodeCompiler* _tmp390_ = NULL;
-                       ValaCodeContext* _tmp391_ = NULL;
-                       const gchar* _tmp392_ = NULL;
-                       gchar** _tmp393_ = NULL;
-                       gchar** _tmp394_ = NULL;
-                       gint _tmp394__length1 = 0;
-                       _tmp390_ = ccompiler;
-                       _tmp391_ = self->priv->context;
-                       _tmp392_ = vala_compiler_cc_command;
-                       _tmp393_ = g_new0 (gchar*, 0 + 1);
-                       _tmp394_ = _tmp393_;
-                       _tmp394__length1 = 0;
-                       vala_ccode_compiler_compile (_tmp390_, _tmp391_, _tmp392_, _tmp394_, 0);
-                       _tmp394_ = (_vala_array_free (_tmp394_, _tmp394__length1, (GDestroyNotify) g_free), NULL);
+               _tmp410_ = vala_compiler_pkg_config_command;
+               if (_tmp410_ == NULL) {
+                       const gchar* _tmp411_ = NULL;
+                       _tmp411_ = g_getenv ("PKG_CONFIG");
+                       _tmp409_ = _tmp411_ != NULL;
+               } else {
+                       _tmp409_ = FALSE;
+               }
+               if (_tmp409_) {
+                       const gchar* _tmp412_ = NULL;
+                       gchar* _tmp413_ = NULL;
+                       _tmp412_ = g_getenv ("PKG_CONFIG");
+                       _tmp413_ = g_strdup (_tmp412_);
+                       _g_free0 (vala_compiler_pkg_config_command);
+                       vala_compiler_pkg_config_command = _tmp413_;
+               }
+               _tmp414_ = vala_compiler_cc_options;
+               _tmp414__length1 = _vala_array_length (vala_compiler_cc_options);
+               if (_tmp414_ == NULL) {
+                       ValaCCodeCompiler* _tmp415_ = NULL;
+                       ValaCodeContext* _tmp416_ = NULL;
+                       const gchar* _tmp417_ = NULL;
+                       gchar** _tmp418_ = NULL;
+                       gchar** _tmp419_ = NULL;
+                       gint _tmp419__length1 = 0;
+                       const gchar* _tmp420_ = NULL;
+                       _tmp415_ = ccompiler;
+                       _tmp416_ = self->priv->context;
+                       _tmp417_ = vala_compiler_cc_command;
+                       _tmp418_ = g_new0 (gchar*, 0 + 1);
+                       _tmp419_ = _tmp418_;
+                       _tmp419__length1 = 0;
+                       _tmp420_ = vala_compiler_pkg_config_command;
+                       vala_ccode_compiler_compile (_tmp415_, _tmp416_, _tmp417_, _tmp419_, 0, _tmp420_);
+                       _tmp419_ = (_vala_array_free (_tmp419_, _tmp419__length1, (GDestroyNotify) g_free), NULL);
                } else {
-                       ValaCCodeCompiler* _tmp395_ = NULL;
-                       ValaCodeContext* _tmp396_ = NULL;
-                       const gchar* _tmp397_ = NULL;
-                       gchar** _tmp398_ = NULL;
-                       gint _tmp398__length1 = 0;
-                       _tmp395_ = ccompiler;
-                       _tmp396_ = self->priv->context;
-                       _tmp397_ = vala_compiler_cc_command;
-                       _tmp398_ = vala_compiler_cc_options;
-                       _tmp398__length1 = _vala_array_length (vala_compiler_cc_options);
-                       vala_ccode_compiler_compile (_tmp395_, _tmp396_, _tmp397_, _tmp398_, _tmp398__length1);
+                       ValaCCodeCompiler* _tmp421_ = NULL;
+                       ValaCodeContext* _tmp422_ = NULL;
+                       const gchar* _tmp423_ = NULL;
+                       gchar** _tmp424_ = NULL;
+                       gint _tmp424__length1 = 0;
+                       const gchar* _tmp425_ = NULL;
+                       _tmp421_ = ccompiler;
+                       _tmp422_ = self->priv->context;
+                       _tmp423_ = vala_compiler_cc_command;
+                       _tmp424_ = vala_compiler_cc_options;
+                       _tmp424__length1 = _vala_array_length (vala_compiler_cc_options);
+                       _tmp425_ = vala_compiler_pkg_config_command;
+                       vala_ccode_compiler_compile (_tmp421_, _tmp422_, _tmp423_, _tmp424_, _tmp424__length1, _tmp425_);
                }
                _vala_ccode_compiler_unref0 (ccompiler);
        }
-       _tmp399_ = vala_compiler_quit (self);
-       result = _tmp399_;
+       _tmp426_ = vala_compiler_quit (self);
+       result = _tmp426_;
        _vala_code_visitor_unref0 (gir_parser);
        _vala_code_visitor_unref0 (genie_parser);
        _vala_code_visitor_unref0 (parser);
@@ -1913,7 +2023,7 @@ static void block1_data_unref (void * _userdata_) {
 }
 
 
-static void ___lambda3_ (Block1Data* _data1_, GPid pid, gint status) {
+static void ___lambda4_ (Block1Data* _data1_, GPid pid, gint status) {
        gint _tmp0_ = 0;
        GMainLoop* _tmp1_ = NULL;
        _tmp0_ = status;
@@ -1923,8 +2033,8 @@ static void ___lambda3_ (Block1Data* _data1_, GPid pid, gint status) {
 }
 
 
-static void ____lambda3__gchild_watch_func (GPid pid, gint status, gpointer self) {
-       ___lambda3_ (self, pid, status);
+static void ____lambda4__gchild_watch_func (GPid pid, gint status, gpointer self) {
+       ___lambda4_ (self, pid, status);
 }
 
 
@@ -2029,7 +2139,7 @@ static gint vala_compiler_run_source (gchar** args, int args_length1) {
                        compile_args_length1 = _tmp13_;
                        _compile_args_size_ = compile_args_length1;
                        _g_free0 (_tmp11_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                compile_args = (_vala_array_free (compile_args, compile_args_length1, (GDestroyNotify) g_free), NULL);
                                if (_inner_error_->domain == G_SHELL_ERROR) {
                                        goto __catch0_g_shell_error;
@@ -2055,7 +2165,7 @@ static gint vala_compiler_run_source (gchar** args, int args_length1) {
                        _temp_args_size_ = temp_args_length1;
                        _tmp18_ = opt_context;
                        g_option_context_parse (_tmp18_, &temp_args_length1, &temp_args, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                _g_option_context_free0 (opt_context);
                                compile_args = (_vala_array_free (compile_args, compile_args_length1, (GDestroyNotify) g_free), NULL);
                                if (_inner_error_->domain == G_SHELL_ERROR) {
@@ -2117,7 +2227,7 @@ static gint vala_compiler_run_source (gchar** args, int args_length1) {
                        return result;
                }
                __finally0:
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
                        return 0;
@@ -2269,7 +2379,7 @@ static gint vala_compiler_run_source (gchar** args, int args_length1) {
                _tmp74__length1 = target_args_length1;
                g_spawn_async (NULL, _tmp74_, NULL, (G_SPAWN_CHILD_INHERITS_STDIN | G_SPAWN_DO_NOT_REAP_CHILD) | G_SPAWN_FILE_AND_ARGV_ZERO, NULL, NULL, &_tmp75_, &_inner_error_);
                pid = _tmp75_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        block1_data_unref (_data1_);
                        _data1_ = NULL;
                        if (_inner_error_->domain == G_SPAWN_ERROR) {
@@ -2286,7 +2396,7 @@ static gint vala_compiler_run_source (gchar** args, int args_length1) {
                _tmp76_ = vala_compiler_output;
                g_unlink (_tmp76_);
                _tmp77_ = pid;
-               g_child_watch_add_full (G_PRIORITY_DEFAULT_IDLE, _tmp77_, ____lambda3__gchild_watch_func, block1_data_ref (_data1_), block1_data_unref);
+               g_child_watch_add_full (G_PRIORITY_DEFAULT_IDLE, _tmp77_, ____lambda4__gchild_watch_func, block1_data_ref (_data1_), block1_data_unref);
                _tmp78_ = _data1_->loop;
                g_main_loop_run (_tmp78_);
                _tmp79_ = _data1_->child_status;
@@ -2391,7 +2501,7 @@ static gint vala_compiler_main (gchar** args, int args_length1) {
                g_option_context_add_main_entries (_tmp14_, VALA_COMPILER_options, NULL);
                _tmp15_ = opt_context;
                g_option_context_parse (_tmp15_, &args_length1, &args, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_option_context_free0 (opt_context);
                        if (_inner_error_->domain == G_OPTION_ERROR) {
                                goto __catch2_g_option_error;
@@ -2430,7 +2540,7 @@ static gint vala_compiler_main (gchar** args, int args_length1) {
                return result;
        }
        __finally2:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return 0;
@@ -2618,7 +2728,7 @@ void vala_value_take_compiler (GValue* value, gpointer v_object) {
 
 static void vala_compiler_class_init (ValaCompilerClass * klass) {
        vala_compiler_parent_class = g_type_class_peek_parent (klass);
-       VALA_COMPILER_CLASS (klass)->finalize = vala_compiler_finalize;
+       ((ValaCompilerClass *) klass)->finalize = vala_compiler_finalize;
        g_type_class_add_private (klass, sizeof (ValaCompilerPrivate));
 }
 
@@ -2632,6 +2742,7 @@ static void vala_compiler_instance_init (ValaCompiler * self) {
 static void vala_compiler_finalize (ValaCompiler* obj) {
        ValaCompiler * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_COMPILER, ValaCompiler);
+       g_signal_handlers_destroy (self);
        _vala_code_context_unref0 (self->priv->context);
 }
 
index 16b55f2..9c50fcb 100644 (file)
@@ -53,6 +53,7 @@ class Vala.Compiler {
        static string internal_header_filename;
        static string internal_vapi_filename;
        static string fast_vapi_filename;
+       static bool vapi_comments;
        static string symbols_filename;
        static string includedir;
        static bool compile_only;
@@ -63,6 +64,7 @@ class Vala.Compiler {
        static bool disable_assert;
        static bool enable_checking;
        static bool deprecated;
+       static bool hide_internal;
        static bool experimental;
        static bool experimental_non_null;
        static bool gobject_tracing;
@@ -70,6 +72,7 @@ class Vala.Compiler {
        static string cc_command;
        [CCode (array_length = false, array_null_terminated = true)]
        static string[] cc_options;
+       static string pkg_config_command;
        static string dump_tree;
        static bool save_temps;
        [CCode (array_length = false, array_null_terminated = true)]
@@ -109,6 +112,7 @@ class Vala.Compiler {
                { "internal-vapi", 0, 0, OptionArg.FILENAME, ref internal_vapi_filename, "Output vapi with internal api", "FILE" },
                { "fast-vapi", 0, 0, OptionArg.STRING, ref fast_vapi_filename, "Output vapi without performing symbol resolution", null },
                { "use-fast-vapi", 0, 0, OptionArg.STRING_ARRAY, ref fast_vapis, "Use --fast-vapi output during this compile", null },
+               { "vapi-comments", 0, 0, OptionArg.NONE, ref vapi_comments, "Include comments in generated vapi", null },
                { "deps", 0, 0, OptionArg.STRING, ref dependencies, "Write make-style dependency information to this file", null },
                { "symbols", 0, 0, OptionArg.FILENAME, ref symbols_filename, "Output symbols file", "FILE" },
                { "compile", 'c', 0, OptionArg.NONE, ref compile_only, "Compile but do not link", null },
@@ -122,6 +126,7 @@ class Vala.Compiler {
                { "disable-assert", 0, 0, OptionArg.NONE, ref disable_assert, "Disable assertions", null },
                { "enable-checking", 0, 0, OptionArg.NONE, ref enable_checking, "Enable additional run-time checks", null },
                { "enable-deprecated", 0, 0, OptionArg.NONE, ref deprecated, "Enable deprecated features", null },
+               { "hide-internal", 0, 0, OptionArg.NONE, ref hide_internal, "Hide symbols marked as internal", null },
                { "enable-experimental", 0, 0, OptionArg.NONE, ref experimental, "Enable experimental features", null },
                { "disable-warnings", 0, 0, OptionArg.NONE, ref disable_warnings, "Disable warnings", null },
                { "fatal-warnings", 0, 0, OptionArg.NONE, ref fatal_warnings, "Treat warnings as fatal", null },
@@ -129,6 +134,7 @@ class Vala.Compiler {
                { "enable-gobject-tracing", 0, 0, OptionArg.NONE, ref gobject_tracing, "Enable GObject creation tracing", null },
                { "cc", 0, 0, OptionArg.STRING, ref cc_command, "Use COMMAND as C compiler command", "COMMAND" },
                { "Xcc", 'X', 0, OptionArg.STRING_ARRAY, ref cc_options, "Pass OPTION to the C compiler", "OPTION..." },
+               { "pkg-config", 0, 0, OptionArg.STRING, ref pkg_config_command, "Use COMMAND as pkg-config command", "COMMAND" },
                { "dump-tree", 0, 0, OptionArg.FILENAME, ref dump_tree, "Write code tree to FILE", "FILE" },
                { "save-temps", 0, 0, OptionArg.NONE, ref save_temps, "Keep temporary files", null },
                { "profile", 0, 0, OptionArg.STRING, ref profile, "Use the given profile instead of the default", "PROFILE" },
@@ -176,6 +182,7 @@ class Vala.Compiler {
                context.assert = !disable_assert;
                context.checking = enable_checking;
                context.deprecated = deprecated;
+               context.hide_internal = hide_internal;
                context.experimental = experimental;
                context.experimental_non_null = experimental_non_null;
                context.gobject_tracing = gobject_tracing;
@@ -185,6 +192,9 @@ class Vala.Compiler {
                context.version_header = !disable_version_header;
 
                context.ccode_only = ccode_only;
+               if (ccode_only && cc_options != null) {
+                       Report.warning (null, "-X has no effect when -C or --ccode is set");
+               }
                context.compile_only = compile_only;
                context.header_filename = header_filename;
                if (header_filename == null && use_header) {
@@ -195,6 +205,9 @@ class Vala.Compiler {
                context.symbols_filename = symbols_filename;
                context.includedir = includedir;
                context.output = output;
+               if (output != null && ccode_only) {
+                       Report.warning (null, "--output and -o have no effect when -C or --ccode is set");
+               }
                if (basedir == null) {
                        context.basedir = CodeContext.realpath (".");
                } else {
@@ -206,12 +219,16 @@ class Vala.Compiler {
                        context.directory = context.basedir;
                }
                context.vapi_directories = vapi_directories;
+               context.vapi_comments = vapi_comments;
                context.gir_directories = gir_directories;
                context.metadata_directories = metadata_directories;
                context.debug = debug;
                context.thread = thread;
                context.mem_profiler = mem_profiler;
                context.save_temps = save_temps;
+               if (ccode_only && save_temps) {
+                       Report.warning (null, "--save-temps has no effect when -C or --ccode is set");
+               }
                if (profile == "gobject-2.0" || profile == "gobject" || profile == null) {
                        // default profile
                        context.profile = Profile.GOBJECT;
@@ -232,12 +249,12 @@ class Vala.Compiler {
                        }
                }
 
-               for (int i = 2; i <= 24; i += 2) {
+               for (int i = 2; i <= 26; i += 2) {
                        context.add_define ("VALA_0_%d".printf (i));
                }
 
                int glib_major = 2;
-               int glib_minor = 18;
+               int glib_minor = 24;
                if (target_glib != null && target_glib.scanf ("%d.%d", out glib_major, out glib_minor) != 2) {
                        Report.error (null, "Invalid format for --target-glib");
                }
@@ -283,16 +300,22 @@ class Vala.Compiler {
                context.codegen = new GDBusServerModule ();
 
                bool has_c_files = false;
+               bool has_h_files = false;
 
                foreach (string source in sources) {
                        if (context.add_source_filename (source, run_output, true)) {
                                if (source.has_suffix (".c")) {
                                        has_c_files = true;
+                               } else if (source.has_suffix (".h")) {
+                                       has_h_files = true;
                                }
                        }
                }
                sources = null;
-               
+               if (ccode_only && (has_c_files || has_h_files)) {
+                       Report.warning (null, "C header and source files are ignored when -C or --ccode is set");
+               }
+
                if (context.report.get_errors () > 0 || (fatal_warnings && context.report.get_warnings () > 0)) {
                        return quit ();
                }
@@ -424,10 +447,13 @@ class Vala.Compiler {
                        if (cc_command == null && Environment.get_variable ("CC") != null) {
                                cc_command = Environment.get_variable ("CC");
                        }
+                       if (pkg_config_command == null && Environment.get_variable ("PKG_CONFIG") != null) {
+                               pkg_config_command = Environment.get_variable ("PKG_CONFIG");
+                       }
                        if (cc_options == null) {
-                               ccompiler.compile (context, cc_command, new string[] { });
+                               ccompiler.compile (context, cc_command, new string[] { }, pkg_config_command);
                        } else {
-                               ccompiler.compile (context, cc_command, cc_options);
+                               ccompiler.compile (context, cc_command, cc_options, pkg_config_command);
                        }
                }
 
index d65545b..e1d0059 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for vala 0.24.0.
+# Generated by GNU Autoconf 2.69 for vala 0.26.1.
 #
 # Report bugs to <j@bitron.ch>.
 #
@@ -589,8 +589,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='vala'
 PACKAGE_TARNAME='vala'
-PACKAGE_VERSION='0.24.0'
-PACKAGE_STRING='vala 0.24.0'
+PACKAGE_VERSION='0.26.1'
+PACKAGE_STRING='vala 0.26.1'
 PACKAGE_BUGREPORT='j@bitron.ch'
 PACKAGE_URL=''
 
@@ -647,11 +647,6 @@ GLIB_CFLAGS
 PKG_CONFIG_LIBDIR
 PKG_CONFIG_PATH
 PKG_CONFIG
-vala_gen_introspect_decl
-gen_introspect_decl
-vapigen_decl
-ENABLE_VAPIGEN_FALSE
-ENABLE_VAPIGEN_TRUE
 COVERAGE_LIBS
 COVERAGE_CFLAGS
 COVERAGE_VALAFLAGS
@@ -797,7 +792,6 @@ with_sysroot
 enable_libtool_lock
 enable_unversioned
 enable_coverage
-enable_vapigen
 '
       ac_precious_vars='build_alias
 host_alias
@@ -1357,7 +1351,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures vala 0.24.0 to adapt to many kinds of systems.
+\`configure' configures vala 0.26.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1427,7 +1421,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of vala 0.24.0:";;
+     short | recursive ) echo "Configuration of vala 0.26.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1451,7 +1445,6 @@ Optional Features:
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --disable-unversioned   Disable unversioned binaries
   --enable-coverage       Enable coverage analysis
-  --disable-vapigen       Disable VAPI generator
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1553,7 +1546,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-vala configure 0.24.0
+vala configure 0.26.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1831,7 +1824,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by vala $as_me 0.24.0, which was
+It was created by vala $as_me 0.26.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2698,7 +2691,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='vala'
- VERSION='0.24.0'
+ VERSION='0.26.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2814,7 +2807,7 @@ fi
 
 
 
-PACKAGE_SUFFIX=-0.24
+PACKAGE_SUFFIX=-0.26
 
 echo \#buildapi-variable-no-builddir >/dev/null
 
 
 
 
-# Check whether --enable-vapigen was given.
-if test "${enable_vapigen+set}" = set; then :
-  enableval=$enable_vapigen; enable_vapigen=$enableval
-else
-  enable_vapigen=yes
-fi
-
- if test x$enable_vapigen = xyes; then
-  ENABLE_VAPIGEN_TRUE=
-  ENABLE_VAPIGEN_FALSE='#'
-else
-  ENABLE_VAPIGEN_TRUE='#'
-  ENABLE_VAPIGEN_FALSE=
-fi
-
-
-if test "$enable_vapigen" = "yes"; then
-  vapigen_decl="vapigen=\${bindir}/vapigen${PACKAGE_SUFFIX}"
-  gen_introspect_decl="gen_introspect=\${libdir}/vala${PACKAGE_SUFFIX}/gen-introspect${PACKAGE_SUFFIX}"
-  vala_gen_introspect_decl="vala_gen_introspect=\${bindir}/vala-gen-introspect${PACKAGE_SUFFIX}"
-else
-  vapigen_decl=''
-  gen_introspect_decl=''
-  vala_gen_introspect_decl=''
-fi
-
-
-
-
-GLIB_REQUIRED=2.18.0
+GLIB_REQUIRED=2.24.0
 
 
 
@@ -12445,10 +12409,6 @@ if test -z "${ENABLE_COVERAGE_TRUE}" && test -z "${ENABLE_COVERAGE_FALSE}"; then
   as_fn_error $? "conditional \"ENABLE_COVERAGE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${ENABLE_VAPIGEN_TRUE}" && test -z "${ENABLE_VAPIGEN_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_VAPIGEN\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${HAVE_XSLTPROC_TRUE}" && test -z "${HAVE_XSLTPROC_FALSE}"; then
   as_fn_error $? "conditional \"HAVE_XSLTPROC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -12850,7 +12810,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by vala $as_me 0.24.0, which was
+This file was extended by vala $as_me 0.26.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -12916,7 +12876,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-vala config.status 0.24.0
+vala config.status 0.26.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
index 4fcda23..4b11904 100644 (file)
@@ -3,10 +3,10 @@ AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_HEADERS(config.h)
 AC_CONFIG_MACRO_DIR([m4])
-AM_INIT_AUTOMAKE([1.11 dist-bzip2])
+AM_INIT_AUTOMAKE([1.11 dist-xz no-dist-gzip])
 AM_MAINTAINER_MODE([enable])
 
-PACKAGE_SUFFIX=-0.24
+PACKAGE_SUFFIX=-0.26
 
 dnl http://people.gnome.org/~walters/docs/build-api.txt
 dnl We don't support separate builddir when building from git
@@ -65,23 +65,7 @@ AC_SUBST(COVERAGE_VALAFLAGS)
 AC_SUBST(COVERAGE_CFLAGS)
 AC_SUBST(COVERAGE_LIBS)
 
-AC_ARG_ENABLE(vapigen, AS_HELP_STRING([--disable-vapigen], [Disable VAPI generator]), enable_vapigen=$enableval, enable_vapigen=yes)
-AM_CONDITIONAL(ENABLE_VAPIGEN, test x$enable_vapigen = xyes)
-
-if test "$enable_vapigen" = "yes"; then
-  vapigen_decl="vapigen=\${bindir}/vapigen${PACKAGE_SUFFIX}"
-  gen_introspect_decl="gen_introspect=\${libdir}/vala${PACKAGE_SUFFIX}/gen-introspect${PACKAGE_SUFFIX}"
-  vala_gen_introspect_decl="vala_gen_introspect=\${bindir}/vala-gen-introspect${PACKAGE_SUFFIX}"
-else
-  vapigen_decl=''
-  gen_introspect_decl=''
-  vala_gen_introspect_decl=''
-fi
-AC_SUBST(vapigen_decl)
-AC_SUBST(gen_introspect_decl)
-AC_SUBST(vala_gen_introspect_decl)
-
-GLIB_REQUIRED=2.18.0
+GLIB_REQUIRED=2.24.0
 
 PKG_CHECK_MODULES(GLIB, glib-2.0 >= $GLIB_REQUIRED gobject-2.0 >= $GLIB_REQUIRED)
 
index 71d979f..58ba205 100644 (file)
@@ -4,19 +4,7 @@ SUBDIRS = \
        vala \
        $(NULL)
 
-if ENABLE_VAPIGEN
-VAPIGEN_MANS = \
-       vala-gen-introspect.1 \
-       vapigen.1 \
-       $(NULL)
-endif
-
-man_MANS = \
-       valac.1 \
-       $(VAPIGEN_MANS) \
-       $(NULL)
-
-EXTRA_DIST = \
+dist_man_MANS = \
        valac.1 \
        vala-gen-introspect.1 \
        vapigen.1 \
@@ -25,8 +13,6 @@ EXTRA_DIST = \
 if ENABLE_UNVERSIONED
 install-data-hook:
        cd $(DESTDIR)$(man1dir) && $(LN_S) -f valac@PACKAGE_SUFFIX@.1 valac.1
-if ENABLE_VAPIGEN
        cd $(DESTDIR)$(man1dir) && $(LN_S) -f vala-gen-introspect@PACKAGE_SUFFIX@.1 vala-gen-introspect.1
        cd $(DESTDIR)$(man1dir) && $(LN_S) -f vapigen@PACKAGE_SUFFIX@.1 vapigen.1
 endif
-endif
index ca760a9..b3bfc1f 100644 (file)
@@ -77,7 +77,8 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = doc
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       $(dist_man_MANS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
        $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -146,7 +147,7 @@ am__uninstall_files_from_dir = { \
 man1dir = $(mandir)/man1
 am__installdirs = "$(DESTDIR)$(man1dir)"
 NROFF = nroff
-MANS = $(man_MANS)
+MANS = $(dist_man_MANS)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
   distclean-recursive maintainer-clean-recursive
 am__recursive_targets = \
@@ -309,7 +310,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -338,24 +338,12 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
 NULL = 
 SUBDIRS = \
        vala \
        $(NULL)
 
-@ENABLE_VAPIGEN_TRUE@VAPIGEN_MANS = \
-@ENABLE_VAPIGEN_TRUE@  vala-gen-introspect.1 \
-@ENABLE_VAPIGEN_TRUE@  vapigen.1 \
-@ENABLE_VAPIGEN_TRUE@  $(NULL)
-
-man_MANS = \
-       valac.1 \
-       $(VAPIGEN_MANS) \
-       $(NULL)
-
-EXTRA_DIST = \
+dist_man_MANS = \
        valac.1 \
        vala-gen-introspect.1 \
        vapigen.1 \
@@ -400,10 +388,10 @@ mostlyclean-libtool:
 
 clean-libtool:
        -rm -rf .libs _libs
-install-man1: $(man_MANS)
+install-man1: $(dist_man_MANS)
        @$(NORMAL_INSTALL)
        @list1=''; \
-       list2='$(man_MANS)'; \
+       list2='$(dist_man_MANS)'; \
        test -n "$(man1dir)" \
          && test -n "`echo $$list1$$list2`" \
          || exit 0; \
@@ -438,7 +426,7 @@ uninstall-man1:
        @$(NORMAL_UNINSTALL)
        @list=''; test -n "$(man1dir)" || exit 0; \
        files=`{ for i in $$list; do echo "$$i"; done; \
-       l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+       l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
          sed -n '/\.1[a-z]*$$/p'; \
        } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
              -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
@@ -727,8 +715,8 @@ uninstall-man: uninstall-man1
 
 @ENABLE_UNVERSIONED_TRUE@install-data-hook:
 @ENABLE_UNVERSIONED_TRUE@      cd $(DESTDIR)$(man1dir) && $(LN_S) -f valac@PACKAGE_SUFFIX@.1 valac.1
-@ENABLE_UNVERSIONED_TRUE@@ENABLE_VAPIGEN_TRUE@ cd $(DESTDIR)$(man1dir) && $(LN_S) -f vala-gen-introspect@PACKAGE_SUFFIX@.1 vala-gen-introspect.1
-@ENABLE_UNVERSIONED_TRUE@@ENABLE_VAPIGEN_TRUE@ cd $(DESTDIR)$(man1dir) && $(LN_S) -f vapigen@PACKAGE_SUFFIX@.1 vapigen.1
+@ENABLE_UNVERSIONED_TRUE@      cd $(DESTDIR)$(man1dir) && $(LN_S) -f vala-gen-introspect@PACKAGE_SUFFIX@.1 vala-gen-introspect.1
+@ENABLE_UNVERSIONED_TRUE@      cd $(DESTDIR)$(man1dir) && $(LN_S) -f vapigen@PACKAGE_SUFFIX@.1 vapigen.1
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index b204fd6..528370d 100644 (file)
@@ -248,7 +248,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -277,8 +276,6 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
 NULL = 
 book_name = vala@PACKAGE_SUFFIX@
 bookdir = $(datadir)/devhelp/books/$(book_name)
index f9ac2fc..db4e75b 100644 (file)
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.common
+
 NULL =
 
 AM_CPPFLAGS = \
@@ -36,7 +38,14 @@ geeinclude_HEADERS = \
        $(NULL)
 
 gee.vapi gee.vala.stamp: $(libgee_la_VALASOURCES)
-       $(VALA_V)$(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 -H valagee.h --library gee $^
+       $(VALA_V)$(VALAC) \
+               $(COVERAGE_VALAFLAGS) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi --pkg gobject-2.0 \
+               -H valagee.h \
+               --library gee \
+               $^
        @touch $@
 
 libgee_la_LIBADD = \
@@ -51,7 +60,3 @@ MAINTAINERCLEANFILES = \
        valagee.h \
        $(libgee_la_VALASOURCES:.vala=.c) \
        $(NULL)
-
-VALA_V = $(VALA_V_$(V))
-VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
-VALA_V_0 = @echo "  VALAC " $^;
index 2b73dab..dcfb13e 100644 (file)
@@ -78,9 +78,10 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/Makefile.common $(srcdir)/Makefile.in \
+       $(srcdir)/Makefile.am $(top_srcdir)/build-aux/depcomp \
+       $(geeinclude_HEADERS)
 subdir = gee
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/build-aux/depcomp $(geeinclude_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
        $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -304,7 +305,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -333,8 +333,9 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
+VALA_V = $(VALA_V_$(V))
+VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
+VALA_V_0 = @echo "  VALAC " $^;
 NULL = 
 AM_CPPFLAGS = \
        $(COVERAGE_CFLAGS) \
@@ -380,15 +381,12 @@ MAINTAINERCLEANFILES = \
        $(libgee_la_VALASOURCES:.vala=.c) \
        $(NULL)
 
-VALA_V = $(VALA_V_$(V))
-VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
-VALA_V_0 = @echo "  VALAC " $^;
 all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.common $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -409,6 +407,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
+$(top_srcdir)/Makefile.common:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -712,7 +711,14 @@ uninstall-am: uninstall-geeincludeHEADERS
        $(NULL)
 
 gee.vapi gee.vala.stamp: $(libgee_la_VALASOURCES)
-       $(VALA_V)$(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 -H valagee.h --library gee $^
+       $(VALA_V)$(VALAC) \
+               $(COVERAGE_VALAFLAGS) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi --pkg gobject-2.0 \
+               -H valagee.h \
+               --library gee \
+               $^
        @touch $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
index 0d4dafc..ee2413f 100644 (file)
@@ -873,10 +873,10 @@ static void vala_array_list_iterator_set_list (ValaArrayListIterator* self, Vala
 
 static void vala_array_list_iterator_class_init (ValaArrayListIteratorClass * klass) {
        vala_array_list_iterator_parent_class = g_type_class_peek_parent (klass);
-       VALA_ITERATOR_CLASS (klass)->finalize = vala_array_list_iterator_finalize;
+       ((ValaIteratorClass *) klass)->finalize = vala_array_list_iterator_finalize;
        g_type_class_add_private (klass, sizeof (ValaArrayListIteratorPrivate));
-       VALA_ITERATOR_CLASS (klass)->next = vala_array_list_iterator_real_next;
-       VALA_ITERATOR_CLASS (klass)->get = vala_array_list_iterator_real_get;
+       ((ValaIteratorClass *) klass)->next = vala_array_list_iterator_real_next;
+       ((ValaIteratorClass *) klass)->get = vala_array_list_iterator_real_get;
 }
 
 
@@ -909,19 +909,19 @@ static GType vala_array_list_iterator_get_type (void) {
 
 static void vala_array_list_class_init (ValaArrayListClass * klass) {
        vala_array_list_parent_class = g_type_class_peek_parent (klass);
-       VALA_ITERABLE_CLASS (klass)->finalize = vala_array_list_finalize;
+       ((ValaIterableClass *) klass)->finalize = vala_array_list_finalize;
        g_type_class_add_private (klass, sizeof (ValaArrayListPrivate));
-       VALA_ITERABLE_CLASS (klass)->get_element_type = vala_array_list_real_get_element_type;
-       VALA_ITERABLE_CLASS (klass)->iterator = vala_array_list_real_iterator;
-       VALA_COLLECTION_CLASS (klass)->contains = vala_array_list_real_contains;
-       VALA_LIST_CLASS (klass)->index_of = vala_array_list_real_index_of;
-       VALA_LIST_CLASS (klass)->get = vala_array_list_real_get;
-       VALA_LIST_CLASS (klass)->set = vala_array_list_real_set;
-       VALA_COLLECTION_CLASS (klass)->add = vala_array_list_real_add;
-       VALA_LIST_CLASS (klass)->insert = vala_array_list_real_insert;
-       VALA_COLLECTION_CLASS (klass)->remove = vala_array_list_real_remove;
-       VALA_LIST_CLASS (klass)->remove_at = vala_array_list_real_remove_at;
-       VALA_COLLECTION_CLASS (klass)->clear = vala_array_list_real_clear;
+       ((ValaIterableClass *) klass)->get_element_type = vala_array_list_real_get_element_type;
+       ((ValaIterableClass *) klass)->iterator = vala_array_list_real_iterator;
+       ((ValaCollectionClass *) klass)->contains = vala_array_list_real_contains;
+       ((ValaListClass *) klass)->index_of = vala_array_list_real_index_of;
+       ((ValaListClass *) klass)->get = vala_array_list_real_get;
+       ((ValaListClass *) klass)->set = vala_array_list_real_set;
+       ((ValaCollectionClass *) klass)->add = vala_array_list_real_add;
+       ((ValaListClass *) klass)->insert = vala_array_list_real_insert;
+       ((ValaCollectionClass *) klass)->remove = vala_array_list_real_remove;
+       ((ValaListClass *) klass)->remove_at = vala_array_list_real_remove_at;
+       ((ValaCollectionClass *) klass)->clear = vala_array_list_real_clear;
        VALA_COLLECTION_CLASS (klass)->get_size = vala_array_list_real_get_size;
 }
 
index 84efd19..c4f9122 100644 (file)
@@ -221,10 +221,10 @@ gint vala_collection_get_size (ValaCollection* self) {
 static void vala_collection_class_init (ValaCollectionClass * klass) {
        vala_collection_parent_class = g_type_class_peek_parent (klass);
        g_type_class_add_private (klass, sizeof (ValaCollectionPrivate));
-       VALA_COLLECTION_CLASS (klass)->contains = vala_collection_real_contains;
-       VALA_COLLECTION_CLASS (klass)->add = vala_collection_real_add;
-       VALA_COLLECTION_CLASS (klass)->remove = vala_collection_real_remove;
-       VALA_COLLECTION_CLASS (klass)->clear = vala_collection_real_clear;
+       ((ValaCollectionClass *) klass)->contains = vala_collection_real_contains;
+       ((ValaCollectionClass *) klass)->add = vala_collection_real_add;
+       ((ValaCollectionClass *) klass)->remove = vala_collection_real_remove;
+       ((ValaCollectionClass *) klass)->clear = vala_collection_real_clear;
 }
 
 
index 3f20909..c8e7e0a 100644 (file)
@@ -1244,14 +1244,14 @@ static gint vala_hash_map_key_set_real_get_size (ValaCollection* base) {
 
 static void vala_hash_map_key_set_class_init (ValaHashMapKeySetClass * klass) {
        vala_hash_map_key_set_parent_class = g_type_class_peek_parent (klass);
-       VALA_ITERABLE_CLASS (klass)->finalize = vala_hash_map_key_set_finalize;
+       ((ValaIterableClass *) klass)->finalize = vala_hash_map_key_set_finalize;
        g_type_class_add_private (klass, sizeof (ValaHashMapKeySetPrivate));
-       VALA_ITERABLE_CLASS (klass)->get_element_type = vala_hash_map_key_set_real_get_element_type;
-       VALA_ITERABLE_CLASS (klass)->iterator = vala_hash_map_key_set_real_iterator;
-       VALA_COLLECTION_CLASS (klass)->add = vala_hash_map_key_set_real_add;
-       VALA_COLLECTION_CLASS (klass)->clear = vala_hash_map_key_set_real_clear;
-       VALA_COLLECTION_CLASS (klass)->remove = vala_hash_map_key_set_real_remove;
-       VALA_COLLECTION_CLASS (klass)->contains = vala_hash_map_key_set_real_contains;
+       ((ValaIterableClass *) klass)->get_element_type = vala_hash_map_key_set_real_get_element_type;
+       ((ValaIterableClass *) klass)->iterator = vala_hash_map_key_set_real_iterator;
+       ((ValaCollectionClass *) klass)->add = vala_hash_map_key_set_real_add;
+       ((ValaCollectionClass *) klass)->clear = vala_hash_map_key_set_real_clear;
+       ((ValaCollectionClass *) klass)->remove = vala_hash_map_key_set_real_remove;
+       ((ValaCollectionClass *) klass)->contains = vala_hash_map_key_set_real_contains;
        VALA_COLLECTION_CLASS (klass)->get_size = vala_hash_map_key_set_real_get_size;
 }
 
@@ -1424,11 +1424,11 @@ static void vala_hash_map_map_iterator_set_map (ValaHashMapMapIterator* self, Va
 
 static void vala_hash_map_map_iterator_class_init (ValaHashMapMapIteratorClass * klass) {
        vala_hash_map_map_iterator_parent_class = g_type_class_peek_parent (klass);
-       VALA_MAP_ITERATOR_CLASS (klass)->finalize = vala_hash_map_map_iterator_finalize;
+       ((ValaMapIteratorClass *) klass)->finalize = vala_hash_map_map_iterator_finalize;
        g_type_class_add_private (klass, sizeof (ValaHashMapMapIteratorPrivate));
-       VALA_MAP_ITERATOR_CLASS (klass)->next = vala_hash_map_map_iterator_real_next;
-       VALA_MAP_ITERATOR_CLASS (klass)->get_key = vala_hash_map_map_iterator_real_get_key;
-       VALA_MAP_ITERATOR_CLASS (klass)->get_value = vala_hash_map_map_iterator_real_get_value;
+       ((ValaMapIteratorClass *) klass)->next = vala_hash_map_map_iterator_real_next;
+       ((ValaMapIteratorClass *) klass)->get_key = vala_hash_map_map_iterator_real_get_key;
+       ((ValaMapIteratorClass *) klass)->get_value = vala_hash_map_map_iterator_real_get_value;
 }
 
 
@@ -1576,10 +1576,10 @@ static void vala_hash_map_key_iterator_set_map (ValaHashMapKeyIterator* self, Va
 
 static void vala_hash_map_key_iterator_class_init (ValaHashMapKeyIteratorClass * klass) {
        vala_hash_map_key_iterator_parent_class = g_type_class_peek_parent (klass);
-       VALA_ITERATOR_CLASS (klass)->finalize = vala_hash_map_key_iterator_finalize;
+       ((ValaIteratorClass *) klass)->finalize = vala_hash_map_key_iterator_finalize;
        g_type_class_add_private (klass, sizeof (ValaHashMapKeyIteratorPrivate));
-       VALA_ITERATOR_CLASS (klass)->next = vala_hash_map_key_iterator_real_next;
-       VALA_ITERATOR_CLASS (klass)->get = vala_hash_map_key_iterator_real_get;
+       ((ValaIteratorClass *) klass)->next = vala_hash_map_key_iterator_real_next;
+       ((ValaIteratorClass *) klass)->get = vala_hash_map_key_iterator_real_get;
 }
 
 
@@ -1751,14 +1751,14 @@ static gint vala_hash_map_value_collection_real_get_size (ValaCollection* base)
 
 static void vala_hash_map_value_collection_class_init (ValaHashMapValueCollectionClass * klass) {
        vala_hash_map_value_collection_parent_class = g_type_class_peek_parent (klass);
-       VALA_ITERABLE_CLASS (klass)->finalize = vala_hash_map_value_collection_finalize;
+       ((ValaIterableClass *) klass)->finalize = vala_hash_map_value_collection_finalize;
        g_type_class_add_private (klass, sizeof (ValaHashMapValueCollectionPrivate));
-       VALA_ITERABLE_CLASS (klass)->get_element_type = vala_hash_map_value_collection_real_get_element_type;
-       VALA_ITERABLE_CLASS (klass)->iterator = vala_hash_map_value_collection_real_iterator;
-       VALA_COLLECTION_CLASS (klass)->add = vala_hash_map_value_collection_real_add;
-       VALA_COLLECTION_CLASS (klass)->clear = vala_hash_map_value_collection_real_clear;
-       VALA_COLLECTION_CLASS (klass)->remove = vala_hash_map_value_collection_real_remove;
-       VALA_COLLECTION_CLASS (klass)->contains = vala_hash_map_value_collection_real_contains;
+       ((ValaIterableClass *) klass)->get_element_type = vala_hash_map_value_collection_real_get_element_type;
+       ((ValaIterableClass *) klass)->iterator = vala_hash_map_value_collection_real_iterator;
+       ((ValaCollectionClass *) klass)->add = vala_hash_map_value_collection_real_add;
+       ((ValaCollectionClass *) klass)->clear = vala_hash_map_value_collection_real_clear;
+       ((ValaCollectionClass *) klass)->remove = vala_hash_map_value_collection_real_remove;
+       ((ValaCollectionClass *) klass)->contains = vala_hash_map_value_collection_real_contains;
        VALA_COLLECTION_CLASS (klass)->get_size = vala_hash_map_value_collection_real_get_size;
 }
 
@@ -1906,10 +1906,10 @@ static void vala_hash_map_value_iterator_set_map (ValaHashMapValueIterator* self
 
 static void vala_hash_map_value_iterator_class_init (ValaHashMapValueIteratorClass * klass) {
        vala_hash_map_value_iterator_parent_class = g_type_class_peek_parent (klass);
-       VALA_ITERATOR_CLASS (klass)->finalize = vala_hash_map_value_iterator_finalize;
+       ((ValaIteratorClass *) klass)->finalize = vala_hash_map_value_iterator_finalize;
        g_type_class_add_private (klass, sizeof (ValaHashMapValueIteratorPrivate));
-       VALA_ITERATOR_CLASS (klass)->next = vala_hash_map_value_iterator_real_next;
-       VALA_ITERATOR_CLASS (klass)->get = vala_hash_map_value_iterator_real_get;
+       ((ValaIteratorClass *) klass)->next = vala_hash_map_value_iterator_real_next;
+       ((ValaIteratorClass *) klass)->get = vala_hash_map_value_iterator_real_get;
 }
 
 
@@ -1941,16 +1941,16 @@ static GType vala_hash_map_value_iterator_get_type (void) {
 
 static void vala_hash_map_class_init (ValaHashMapClass * klass) {
        vala_hash_map_parent_class = g_type_class_peek_parent (klass);
-       VALA_MAP_CLASS (klass)->finalize = vala_hash_map_finalize;
+       ((ValaMapClass *) klass)->finalize = vala_hash_map_finalize;
        g_type_class_add_private (klass, sizeof (ValaHashMapPrivate));
-       VALA_MAP_CLASS (klass)->get_keys = vala_hash_map_real_get_keys;
-       VALA_MAP_CLASS (klass)->get_values = vala_hash_map_real_get_values;
-       VALA_MAP_CLASS (klass)->map_iterator = vala_hash_map_real_map_iterator;
-       VALA_MAP_CLASS (klass)->contains = vala_hash_map_real_contains;
-       VALA_MAP_CLASS (klass)->get = vala_hash_map_real_get;
-       VALA_MAP_CLASS (klass)->set = vala_hash_map_real_set;
-       VALA_MAP_CLASS (klass)->remove = vala_hash_map_real_remove;
-       VALA_MAP_CLASS (klass)->clear = vala_hash_map_real_clear;
+       ((ValaMapClass *) klass)->get_keys = vala_hash_map_real_get_keys;
+       ((ValaMapClass *) klass)->get_values = vala_hash_map_real_get_values;
+       ((ValaMapClass *) klass)->map_iterator = vala_hash_map_real_map_iterator;
+       ((ValaMapClass *) klass)->contains = vala_hash_map_real_contains;
+       ((ValaMapClass *) klass)->get = vala_hash_map_real_get;
+       ((ValaMapClass *) klass)->set = vala_hash_map_real_set;
+       ((ValaMapClass *) klass)->remove = vala_hash_map_real_remove;
+       ((ValaMapClass *) klass)->clear = vala_hash_map_real_clear;
        VALA_MAP_CLASS (klass)->get_size = vala_hash_map_real_get_size;
 }
 
index 1fb2ed3..33c2ef9 100644 (file)
@@ -170,7 +170,7 @@ public class Vala.HashMap<K,V> : Map<K,V> {
                }
        }
 
-       ~HashSet () {
+       ~HashMap () {
                clear ();
        }
 
index dc6bc63..816fd65 100644 (file)
@@ -900,10 +900,10 @@ static void vala_hash_set_iterator_set_set (ValaHashSetIterator* self, ValaHashS
 
 static void vala_hash_set_iterator_class_init (ValaHashSetIteratorClass * klass) {
        vala_hash_set_iterator_parent_class = g_type_class_peek_parent (klass);
-       VALA_ITERATOR_CLASS (klass)->finalize = vala_hash_set_iterator_finalize;
+       ((ValaIteratorClass *) klass)->finalize = vala_hash_set_iterator_finalize;
        g_type_class_add_private (klass, sizeof (ValaHashSetIteratorPrivate));
-       VALA_ITERATOR_CLASS (klass)->next = vala_hash_set_iterator_real_next;
-       VALA_ITERATOR_CLASS (klass)->get = vala_hash_set_iterator_real_get;
+       ((ValaIteratorClass *) klass)->next = vala_hash_set_iterator_real_next;
+       ((ValaIteratorClass *) klass)->get = vala_hash_set_iterator_real_get;
 }
 
 
@@ -936,14 +936,14 @@ static GType vala_hash_set_iterator_get_type (void) {
 
 static void vala_hash_set_class_init (ValaHashSetClass * klass) {
        vala_hash_set_parent_class = g_type_class_peek_parent (klass);
-       VALA_ITERABLE_CLASS (klass)->finalize = vala_hash_set_finalize;
+       ((ValaIterableClass *) klass)->finalize = vala_hash_set_finalize;
        g_type_class_add_private (klass, sizeof (ValaHashSetPrivate));
-       VALA_COLLECTION_CLASS (klass)->contains = vala_hash_set_real_contains;
-       VALA_ITERABLE_CLASS (klass)->get_element_type = vala_hash_set_real_get_element_type;
-       VALA_ITERABLE_CLASS (klass)->iterator = vala_hash_set_real_iterator;
-       VALA_COLLECTION_CLASS (klass)->add = vala_hash_set_real_add;
-       VALA_COLLECTION_CLASS (klass)->remove = vala_hash_set_real_remove;
-       VALA_COLLECTION_CLASS (klass)->clear = vala_hash_set_real_clear;
+       ((ValaCollectionClass *) klass)->contains = vala_hash_set_real_contains;
+       ((ValaIterableClass *) klass)->get_element_type = vala_hash_set_real_get_element_type;
+       ((ValaIterableClass *) klass)->iterator = vala_hash_set_real_iterator;
+       ((ValaCollectionClass *) klass)->add = vala_hash_set_real_add;
+       ((ValaCollectionClass *) klass)->remove = vala_hash_set_real_remove;
+       ((ValaCollectionClass *) klass)->clear = vala_hash_set_real_clear;
        VALA_COLLECTION_CLASS (klass)->get_size = vala_hash_set_real_get_size;
 }
 
index d9e9c9b..eaca3c8 100644 (file)
@@ -255,10 +255,10 @@ void vala_value_take_iterable (GValue* value, gpointer v_object) {
 
 static void vala_iterable_class_init (ValaIterableClass * klass) {
        vala_iterable_parent_class = g_type_class_peek_parent (klass);
-       VALA_ITERABLE_CLASS (klass)->finalize = vala_iterable_finalize;
+       ((ValaIterableClass *) klass)->finalize = vala_iterable_finalize;
        g_type_class_add_private (klass, sizeof (ValaIterablePrivate));
-       VALA_ITERABLE_CLASS (klass)->get_element_type = vala_iterable_real_get_element_type;
-       VALA_ITERABLE_CLASS (klass)->iterator = vala_iterable_real_iterator;
+       ((ValaIterableClass *) klass)->get_element_type = vala_iterable_real_get_element_type;
+       ((ValaIterableClass *) klass)->iterator = vala_iterable_real_iterator;
 }
 
 
@@ -271,6 +271,7 @@ static void vala_iterable_instance_init (ValaIterable * self) {
 static void vala_iterable_finalize (ValaIterable* obj) {
        ValaIterable * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_ITERABLE, ValaIterable);
+       g_signal_handlers_destroy (self);
 }
 
 
index 7d52fc5..63c281e 100644 (file)
@@ -241,10 +241,10 @@ void vala_value_take_iterator (GValue* value, gpointer v_object) {
 
 static void vala_iterator_class_init (ValaIteratorClass * klass) {
        vala_iterator_parent_class = g_type_class_peek_parent (klass);
-       VALA_ITERATOR_CLASS (klass)->finalize = vala_iterator_finalize;
+       ((ValaIteratorClass *) klass)->finalize = vala_iterator_finalize;
        g_type_class_add_private (klass, sizeof (ValaIteratorPrivate));
-       VALA_ITERATOR_CLASS (klass)->next = vala_iterator_real_next;
-       VALA_ITERATOR_CLASS (klass)->get = vala_iterator_real_get;
+       ((ValaIteratorClass *) klass)->next = vala_iterator_real_next;
+       ((ValaIteratorClass *) klass)->get = vala_iterator_real_get;
 }
 
 
@@ -257,6 +257,7 @@ static void vala_iterator_instance_init (ValaIterator * self) {
 static void vala_iterator_finalize (ValaIterator* obj) {
        ValaIterator * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_ITERATOR, ValaIterator);
+       g_signal_handlers_destroy (self);
 }
 
 
index 5b65af8..d455040 100644 (file)
@@ -257,11 +257,11 @@ ValaList* vala_list_construct (GType object_type, GType g_type, GBoxedCopyFunc g
 static void vala_list_class_init (ValaListClass * klass) {
        vala_list_parent_class = g_type_class_peek_parent (klass);
        g_type_class_add_private (klass, sizeof (ValaListPrivate));
-       VALA_LIST_CLASS (klass)->get = vala_list_real_get;
-       VALA_LIST_CLASS (klass)->set = vala_list_real_set;
-       VALA_LIST_CLASS (klass)->index_of = vala_list_real_index_of;
-       VALA_LIST_CLASS (klass)->insert = vala_list_real_insert;
-       VALA_LIST_CLASS (klass)->remove_at = vala_list_real_remove_at;
+       ((ValaListClass *) klass)->get = vala_list_real_get;
+       ((ValaListClass *) klass)->set = vala_list_real_set;
+       ((ValaListClass *) klass)->index_of = vala_list_real_index_of;
+       ((ValaListClass *) klass)->insert = vala_list_real_insert;
+       ((ValaListClass *) klass)->remove_at = vala_list_real_remove_at;
 }
 
 
index a73a77c..add557a 100644 (file)
--- a/gee/map.c
+++ b/gee/map.c
@@ -440,16 +440,16 @@ void vala_value_take_map (GValue* value, gpointer v_object) {
 
 static void vala_map_class_init (ValaMapClass * klass) {
        vala_map_parent_class = g_type_class_peek_parent (klass);
-       VALA_MAP_CLASS (klass)->finalize = vala_map_finalize;
+       ((ValaMapClass *) klass)->finalize = vala_map_finalize;
        g_type_class_add_private (klass, sizeof (ValaMapPrivate));
-       VALA_MAP_CLASS (klass)->get_keys = vala_map_real_get_keys;
-       VALA_MAP_CLASS (klass)->get_values = vala_map_real_get_values;
-       VALA_MAP_CLASS (klass)->contains = vala_map_real_contains;
-       VALA_MAP_CLASS (klass)->get = vala_map_real_get;
-       VALA_MAP_CLASS (klass)->set = vala_map_real_set;
-       VALA_MAP_CLASS (klass)->remove = vala_map_real_remove;
-       VALA_MAP_CLASS (klass)->clear = vala_map_real_clear;
-       VALA_MAP_CLASS (klass)->map_iterator = vala_map_real_map_iterator;
+       ((ValaMapClass *) klass)->get_keys = vala_map_real_get_keys;
+       ((ValaMapClass *) klass)->get_values = vala_map_real_get_values;
+       ((ValaMapClass *) klass)->contains = vala_map_real_contains;
+       ((ValaMapClass *) klass)->get = vala_map_real_get;
+       ((ValaMapClass *) klass)->set = vala_map_real_set;
+       ((ValaMapClass *) klass)->remove = vala_map_real_remove;
+       ((ValaMapClass *) klass)->clear = vala_map_real_clear;
+       ((ValaMapClass *) klass)->map_iterator = vala_map_real_map_iterator;
 }
 
 
@@ -462,6 +462,7 @@ static void vala_map_instance_init (ValaMap * self) {
 static void vala_map_finalize (ValaMap* obj) {
        ValaMap * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_MAP, ValaMap);
+       g_signal_handlers_destroy (self);
 }
 
 
index 394b6cf..e406659 100644 (file)
@@ -267,11 +267,11 @@ void vala_value_take_map_iterator (GValue* value, gpointer v_object) {
 
 static void vala_map_iterator_class_init (ValaMapIteratorClass * klass) {
        vala_map_iterator_parent_class = g_type_class_peek_parent (klass);
-       VALA_MAP_ITERATOR_CLASS (klass)->finalize = vala_map_iterator_finalize;
+       ((ValaMapIteratorClass *) klass)->finalize = vala_map_iterator_finalize;
        g_type_class_add_private (klass, sizeof (ValaMapIteratorPrivate));
-       VALA_MAP_ITERATOR_CLASS (klass)->next = vala_map_iterator_real_next;
-       VALA_MAP_ITERATOR_CLASS (klass)->get_key = vala_map_iterator_real_get_key;
-       VALA_MAP_ITERATOR_CLASS (klass)->get_value = vala_map_iterator_real_get_value;
+       ((ValaMapIteratorClass *) klass)->next = vala_map_iterator_real_next;
+       ((ValaMapIteratorClass *) klass)->get_key = vala_map_iterator_real_get_key;
+       ((ValaMapIteratorClass *) klass)->get_value = vala_map_iterator_real_get_value;
 }
 
 
@@ -284,6 +284,7 @@ static void vala_map_iterator_instance_init (ValaMapIterator * self) {
 static void vala_map_iterator_finalize (ValaMapIterator* obj) {
        ValaMapIterator * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_MAP_ITERATOR, ValaMapIterator);
+       g_signal_handlers_destroy (self);
 }
 
 
index b88fdd2..389536a 100644 (file)
@@ -303,7 +303,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -332,8 +331,6 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
 NULL = 
 AM_CPPFLAGS = \
        $(GLIB_CFLAGS) \
index 7689d71..a87195c 100644 (file)
@@ -8,7 +8,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 37
+#define YY_FLEX_SUBMINOR_VERSION 39
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
index 4e96afa..ae2ab9a 100644 (file)
@@ -7,9 +7,9 @@ datarootdir=@datarootdir@
 datadir=@datadir@
 vapidir=@datadir@/vala@PACKAGE_SUFFIX@/vapi
 
-@vapigen_decl@
-@gen_introspect_decl@
-@vala_gen_introspect_decl@
+vapigen=@bindir@/vapigen@PACKAGE_SUFFIX@
+gen_introspect=@libdir@/vala@PACKAGE_SUFFIX@/gen-introspect@PACKAGE_SUFFIX@
+vala_gen_introspect=@bindir@/vala-gen-introspect@PACKAGE_SUFFIX@
 
 Name: Vala
 Description: The Vala compiler library
index cbfd580..85ca6b3 100644 (file)
@@ -22,6 +22,7 @@ TESTS = \
        basic-types/arrays.vala \
        basic-types/pointers.vala \
        basic-types/sizeof.vala \
+       basic-types/bug571486.vala \
        basic-types/bug591552.vala \
        basic-types/bug595751.vala \
        basic-types/bug596637.vala \
@@ -33,6 +34,7 @@ TESTS = \
        basic-types/bug652380.vala \
        basic-types/bug655908.vala \
        basic-types/bug659975.vala \
+       basic-types/bug678791.vala \
        basic-types/bug686336.vala \
        namespaces.vala \
        methods/lambda.vala \
@@ -53,12 +55,14 @@ TESTS = \
        methods/bug646345.vala \
        methods/bug648320.vala \
        methods/bug649562.vala \
+       methods/bug652098.vala \
        methods/bug653391.vala \
        methods/bug653908.vala \
        methods/bug663210.vala \
        methods/bug723009.vala \
        methods/bug723195.vala \
        methods/bug726347.vala \
+       methods/bug736235.vala \
        methods/generics.vala \
        control-flow/break.vala \
        control-flow/expressions-conditional.vala \
@@ -72,6 +76,7 @@ TESTS = \
        control-flow/bug665904.vala \
        control-flow/bug691514.vala     \
        enums/enums.vala \
+       enums/flags.vala \
        enums/bug673879.vala \
        structs/structs.vala \
        structs/gvalue.vala \
@@ -140,6 +145,7 @@ TESTS = \
        objects/bug643711.vala \
        objects/bug646362.vala \
        objects/bug646792.vala \
+       objects/bug647018.vala \
        objects/bug653138.vala \
        objects/bug654702.vala \
        objects/bug663134.vala \
index 152241e..9a60c8d 100644 (file)
@@ -81,12 +81,13 @@ noinst_PROGRAMS = $(am__EXEEXT_1)
 TESTS = basic-types/integers.vala basic-types/escape-chars.vala \
        basic-types/floats.vala basic-types/strings.vala \
        basic-types/arrays.vala basic-types/pointers.vala \
-       basic-types/sizeof.vala basic-types/bug591552.vala \
-       basic-types/bug595751.vala basic-types/bug596637.vala \
-       basic-types/bug596785.vala basic-types/bug632322.vala \
-       basic-types/bug647222.vala basic-types/bug648364.vala \
-       basic-types/bug650993.vala basic-types/bug652380.vala \
-       basic-types/bug655908.vala basic-types/bug659975.vala \
+       basic-types/sizeof.vala basic-types/bug571486.vala \
+       basic-types/bug591552.vala basic-types/bug595751.vala \
+       basic-types/bug596637.vala basic-types/bug596785.vala \
+       basic-types/bug632322.vala basic-types/bug647222.vala \
+       basic-types/bug648364.vala basic-types/bug650993.vala \
+       basic-types/bug652380.vala basic-types/bug655908.vala \
+       basic-types/bug659975.vala basic-types/bug678791.vala \
        basic-types/bug686336.vala namespaces.vala methods/lambda.vala \
        methods/closures.vala methods/prepostconditions.vala \
        methods/symbolresolution.vala methods/bug595538.vala \
@@ -96,17 +97,18 @@ TESTS = basic-types/integers.vala basic-types/escape-chars.vala \
        methods/bug622570.vala methods/bug639054.vala \
        methods/bug642885.vala methods/bug642899.vala \
        methods/bug646345.vala methods/bug648320.vala \
-       methods/bug649562.vala methods/bug653391.vala \
-       methods/bug653908.vala methods/bug663210.vala \
-       methods/bug723009.vala methods/bug723195.vala \
-       methods/bug726347.vala methods/generics.vala \
+       methods/bug649562.vala methods/bug652098.vala \
+       methods/bug653391.vala methods/bug653908.vala \
+       methods/bug663210.vala methods/bug723009.vala \
+       methods/bug723195.vala methods/bug726347.vala \
+       methods/bug736235.vala methods/generics.vala \
        control-flow/break.vala \
        control-flow/expressions-conditional.vala \
        control-flow/for.vala control-flow/foreach.vala \
        control-flow/switch.vala control-flow/sideeffects.vala \
        control-flow/bug639482.vala control-flow/bug652549.vala \
        control-flow/bug661985.vala control-flow/bug665904.vala \
-       control-flow/bug691514.vala enums/enums.vala \
+       control-flow/bug691514.vala enums/enums.vala enums/flags.vala \
        enums/bug673879.vala structs/structs.vala structs/gvalue.vala \
        structs/bug530605.vala structs/bug572091.vala \
        structs/bug583603.vala structs/bug595587.vala \
@@ -140,12 +142,13 @@ TESTS = basic-types/integers.vala basic-types/escape-chars.vala \
        objects/bug628639.vala objects/bug634782.vala \
        objects/bug642809.vala objects/bug643711.vala \
        objects/bug646362.vala objects/bug646792.vala \
-       objects/bug653138.vala objects/bug654702.vala \
-       objects/bug663134.vala objects/bug664529.vala \
-       objects/bug667668.vala objects/bug683646.vala \
-       objects/bug695671.vala objects/bug701978.vala \
-       objects/bug702736.vala objects/bug702846.vala \
-       errors/errors.vala errors/bug567181.vala errors/bug579101.vala \
+       objects/bug647018.vala objects/bug653138.vala \
+       objects/bug654702.vala objects/bug663134.vala \
+       objects/bug664529.vala objects/bug667668.vala \
+       objects/bug683646.vala objects/bug695671.vala \
+       objects/bug701978.vala objects/bug702736.vala \
+       objects/bug702846.vala errors/errors.vala \
+       errors/bug567181.vala errors/bug579101.vala \
        errors/bug596228.vala errors/bug623049.vala \
        errors/bug639589.vala errors/bug651145.vala \
        asynchronous/bug595735.vala asynchronous/bug595755.vala \
@@ -514,7 +517,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -543,8 +545,6 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
 NULL = 
 AM_CPPFLAGS = \
        $(GLIB_CFLAGS) \
@@ -799,6 +799,13 @@ basic-types/sizeof.vala.log: basic-types/sizeof.vala
        --log-file $$b.log --trs-file $$b.trs \
        $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
        "$$tst" $(AM_TESTS_FD_REDIRECT)
+basic-types/bug571486.vala.log: basic-types/bug571486.vala
+       @p='basic-types/bug571486.vala'; \
+       b='basic-types/bug571486.vala'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
 basic-types/bug591552.vala.log: basic-types/bug591552.vala
        @p='basic-types/bug591552.vala'; \
        b='basic-types/bug591552.vala'; \
@@ -876,6 +883,13 @@ basic-types/bug659975.vala.log: basic-types/bug659975.vala
        --log-file $$b.log --trs-file $$b.trs \
        $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
        "$$tst" $(AM_TESTS_FD_REDIRECT)
+basic-types/bug678791.vala.log: basic-types/bug678791.vala
+       @p='basic-types/bug678791.vala'; \
+       b='basic-types/bug678791.vala'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
 basic-types/bug686336.vala.log: basic-types/bug686336.vala
        @p='basic-types/bug686336.vala'; \
        b='basic-types/bug686336.vala'; \
@@ -1016,6 +1030,13 @@ methods/bug649562.vala.log: methods/bug649562.vala
        --log-file $$b.log --trs-file $$b.trs \
        $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
        "$$tst" $(AM_TESTS_FD_REDIRECT)
+methods/bug652098.vala.log: methods/bug652098.vala
+       @p='methods/bug652098.vala'; \
+       b='methods/bug652098.vala'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
 methods/bug653391.vala.log: methods/bug653391.vala
        @p='methods/bug653391.vala'; \
        b='methods/bug653391.vala'; \
@@ -1058,6 +1079,13 @@ methods/bug726347.vala.log: methods/bug726347.vala
        --log-file $$b.log --trs-file $$b.trs \
        $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
        "$$tst" $(AM_TESTS_FD_REDIRECT)
+methods/bug736235.vala.log: methods/bug736235.vala
+       @p='methods/bug736235.vala'; \
+       b='methods/bug736235.vala'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
 methods/generics.vala.log: methods/generics.vala
        @p='methods/generics.vala'; \
        b='methods/generics.vala'; \
@@ -1149,6 +1177,13 @@ enums/enums.vala.log: enums/enums.vala
        --log-file $$b.log --trs-file $$b.trs \
        $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
        "$$tst" $(AM_TESTS_FD_REDIRECT)
+enums/flags.vala.log: enums/flags.vala
+       @p='enums/flags.vala'; \
+       b='enums/flags.vala'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
 enums/bug673879.vala.log: enums/bug673879.vala
        @p='enums/bug673879.vala'; \
        b='enums/bug673879.vala'; \
@@ -1625,6 +1660,13 @@ objects/bug646792.vala.log: objects/bug646792.vala
        --log-file $$b.log --trs-file $$b.trs \
        $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
        "$$tst" $(AM_TESTS_FD_REDIRECT)
+objects/bug647018.vala.log: objects/bug647018.vala
+       @p='objects/bug647018.vala'; \
+       b='objects/bug647018.vala'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
 objects/bug653138.vala.log: objects/bug653138.vala
        @p='objects/bug653138.vala'; \
        b='objects/bug653138.vala'; \
index 4a6a006..00a7164 100644 (file)
@@ -84,6 +84,7 @@ void test_array_pass () {
        assert (b[0] == 42);
 }
 
+const int FOO = 2;
 void test_static_array () {
        int a[2];
        assert (a.length == 2);
@@ -91,6 +92,9 @@ void test_static_array () {
        assert (a[1] == 23);
        a = { 23, 34 };
        assert (a[0] == 23 && a[1] == 34);
+
+       int b[FOO * 1 << 3];
+       assert (b.length == FOO * 1 << 3);
 }
 
 void test_reference_transfer () {
diff --git a/tests/basic-types/bug571486.vala b/tests/basic-types/bug571486.vala
new file mode 100644 (file)
index 0000000..4ba922e
--- /dev/null
@@ -0,0 +1,29 @@
+public unowned (unowned string)[] var1 = null;
+public (unowned string)[] var2 = null;
+
+class Foo {
+       public (unowned string)[] var3 = null;
+
+       public (unowned string)[] meth ((unowned string)[] var4) {
+               var3 = ((unowned string)[]) var4;
+               return ((unowned string)[]) var3;
+       }
+}
+
+void main () {
+       Object o1 = new Object ();
+       Object o2 = new Object ();
+       
+       (unowned Object)[] test = new (unowned Object)[] { o1 };
+       assert (o1.ref_count == 1);
+       test[0] = o2;
+       assert (o1.ref_count == 1);
+       assert (o2.ref_count == 1);
+       
+       test = null;    
+       assert (o1.ref_count == 1);
+       assert (o2.ref_count == 1);
+
+       int[] i = new int[42];
+    int j = (((int*) i)[4] + 5);
+}
\ No newline at end of file
diff --git a/tests/basic-types/bug678791.vala b/tests/basic-types/bug678791.vala
new file mode 100644 (file)
index 0000000..2f3171f
--- /dev/null
@@ -0,0 +1,15 @@
+public enum Foo {
+       BAR
+}
+
+void main () {
+       int? a = null;
+       int b = 1;
+       assert (a != b);
+       assert (b != a);
+
+       Foo? f = null;
+       Foo g = Foo.BAR;
+       assert (f != g);
+       assert (g != f);
+}
diff --git a/tests/enums/flags.vala b/tests/enums/flags.vala
new file mode 100644 (file)
index 0000000..52b439d
--- /dev/null
@@ -0,0 +1,31 @@
+using GLib;
+
+[Flags]
+enum Foo {
+       VAL1,
+       VAL2,
+       VAL3
+}
+
+void main () {
+       Foo foo, bar, baz;
+
+       foo = (Foo.VAL1 | Foo.VAL2 | Foo.VAL3);
+       bar = (Foo.VAL1 | Foo.VAL2);
+       baz = (bar | Foo.VAL3);
+
+       assert (Foo.VAL1 == 1 << 0);
+       assert (Foo.VAL2 == 1 << 1);
+       assert (Foo.VAL3 == 1 << 2);
+
+       assert (Foo.VAL1 in bar);
+       assert ((Foo.VAL1 | Foo.VAL2) in bar);
+       assert (!(Foo.VAL3 in bar));
+
+       assert (Foo.VAL1 in baz);
+       assert (Foo.VAL2 in baz);
+       assert (Foo.VAL3 in baz);
+
+       assert (bar in foo);
+}
+
index d56f3f2..264e637 100644 (file)
@@ -58,7 +58,9 @@ class Maman.Bar : Object {
                try {
                        throw new BarError.FOO ("error message");
                } catch (Error e) {
-                       return;
+                       if (e is BarError && e is BarError.FOO) {
+                               return;
+                       }
                }
 
                assert_not_reached ();
diff --git a/tests/methods/bug652098.vala b/tests/methods/bug652098.vala
new file mode 100644 (file)
index 0000000..d16f27f
--- /dev/null
@@ -0,0 +1,55 @@
+interface Iface1 : Object {
+       public abstract int foo ();
+}
+
+interface Iface2 : Object {
+       public abstract int foo ();
+}
+
+class Obj1 : Object, Iface1, Iface2 {
+       public int Iface1.foo () {
+               return 1;
+       }
+
+       public int Iface2.foo () {
+               return 2;
+       }
+}
+
+class Obj2 : Object, Iface1, Iface2 {
+       public int Iface1.foo () {
+               return 1;
+       }
+
+       public int foo () {
+               return 2;
+       }
+}
+
+class Base : Object {
+       public void foo () {
+       }
+}
+
+interface Iface : Object {
+       public abstract void foo ();
+}
+
+class Concrete : Base, Iface {
+}
+
+void main () {
+       var obj1 = new Obj1 ();
+       var iface1 = (Iface1) obj1;
+       var iface2 = (Iface2) obj1;
+       
+       assert (iface1.foo () == 1);
+       assert (iface2.foo () == 2);
+
+       var obj2 = new Obj2 ();
+       iface1 = (Iface1) obj2;
+       iface2 = (Iface2) obj2;
+       
+       assert (iface1.foo () == 1);
+       assert (iface2.foo () == 2);
+}
\ No newline at end of file
diff --git a/tests/methods/bug736235.vala b/tests/methods/bug736235.vala
new file mode 100644 (file)
index 0000000..bdbeb9b
--- /dev/null
@@ -0,0 +1,10 @@
+public class Foo : GLib.Object {
+  public string? bar { get; construct; }
+
+  public Foo () {
+    GLib.Object (bar: (string?) null);
+  }
+}
+
+void main () {
+}
\ No newline at end of file
diff --git a/tests/objects/bug647018.vala b/tests/objects/bug647018.vala
new file mode 100644 (file)
index 0000000..27fbdab
--- /dev/null
@@ -0,0 +1,9 @@
+// allow fields starting with a digit if the cname is valid
+[CCode (cname = "good")]
+int 2good;
+
+// gets default cname - must fail
+//int 2bad;
+
+void main () {
+}
index 543975a..e991121 100644 (file)
@@ -9,15 +9,6 @@ public struct PublicStruct {
        public int field;
 }
 
-struct StructWithPrivateField {
-       private int field;
-
-       public void test () {
-               field = 1;
-               stdout.printf ("StructWithPrivateField: field = %d\n", field);
-       }
-}
-
 struct StructWithCreationMethod {
        public StructWithCreationMethod () {
                stdout.printf ("StructWithCreationMethod\n");
@@ -78,9 +69,6 @@ void main () {
        test_out_parameter (out simple_struct);
        stdout.printf ("after test_out_parameter: st.field = %d\n", simple_struct.field);
 
-       var struct_with_private_field = StructWithPrivateField ();
-       struct_with_private_field.test ();
-
        stdout.printf (".\n");
 }
 
diff --git a/vala.m4 b/vala.m4
index 4fc0740..4393866 100644 (file)
--- a/vala.m4
+++ b/vala.m4
@@ -89,7 +89,7 @@ AC_DEFUN([VALA_CHECK_MODULES],
         AC_REQUIRE([_VALA_CHECK_COMPILE_WITH_ARGS])dnl
                AC_ARG_VAR([$1][_VALAFLAGS], [Vala compiler flags for $1])dnl
 
-        VALA_MODULES="`echo '$2' | sed -e 's/ [[=<>]]\+ [[0-9.]]\+//g'`"
+        VALA_MODULES="`echo $2 | sed -e 's/ [[=<>]]\+ [[0-9.]]\+//g'`"
         for MODULE in $VALA_MODULES; do
             $1[]_VALAFLAGS="$[]$1[]_VALAFLAGS --pkg $MODULE"
         done
index ee8d410..54d01bd 100644 (file)
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.common
+
 NULL =
 
 AM_CPPFLAGS = \
@@ -173,13 +175,22 @@ valainclude_HEADERS = \
        $(NULL)
 
 vala.vapi vala.vala.stamp: $(libvalacore_la_VALASOURCES)
-       $(VALA_V)$(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir $(srcdir)/../gee --pkg gee --pkg config -H vala.h --library vala $^
+       $(VALA_V)$(VALAC) \
+               $(COVERAGE_VALAFLAGS) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi --pkg gobject-2.0 \
+               --vapidir $(top_srcdir)/gee --pkg gee \
+               --pkg config \
+               -H vala.h \
+               --library vala \
+               $^
        @touch $@
 
 libvalacore_la_LIBADD = \
        $(COVERAGE_LIBS) \
        $(GLIB_LIBS) \
-       ../gee/libgee.la \
+       $(top_builddir)/gee/libgee.la \
        $(NULL)
 
 EXTRA_DIST = $(libvalacore_la_VALASOURCES) vala.vapi vala.vala.stamp
@@ -189,7 +200,3 @@ MAINTAINERCLEANFILES = \
        vala.h \
        $(libvalacore_la_VALASOURCES:.vala=.c) \
        $(NULL)
-
-VALA_V = $(VALA_V_$(V))
-VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
-VALA_V_0 = @echo "  VALAC " $^;
index 85e11d8..c2f970e 100644 (file)
@@ -78,9 +78,10 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/Makefile.common $(srcdir)/Makefile.in \
+       $(srcdir)/Makefile.am $(top_srcdir)/build-aux/depcomp \
+       $(valainclude_HEADERS)
 subdir = vala
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(top_srcdir)/build-aux/depcomp $(valainclude_HEADERS)
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
        $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -95,7 +96,8 @@ CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libvalacore_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_1) ../gee/libgee.la $(am__DEPENDENCIES_1)
+       $(am__DEPENDENCIES_1) $(top_builddir)/gee/libgee.la \
+       $(am__DEPENDENCIES_1)
 am__objects_1 =
 am__objects_2 = valaaddressofexpression.lo \
        valaarraycreationexpression.lo valaarraylengthfield.lo \
@@ -356,7 +358,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -385,8 +386,9 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
+VALA_V = $(VALA_V_$(V))
+VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
+VALA_V_0 = @echo "  VALAC " $^;
 NULL = 
 AM_CPPFLAGS = \
        $(COVERAGE_CFLAGS) \
@@ -561,7 +563,7 @@ valainclude_HEADERS = \
 libvalacore_la_LIBADD = \
        $(COVERAGE_LIBS) \
        $(GLIB_LIBS) \
-       ../gee/libgee.la \
+       $(top_builddir)/gee/libgee.la \
        $(NULL)
 
 EXTRA_DIST = $(libvalacore_la_VALASOURCES) vala.vapi vala.vala.stamp
@@ -571,15 +573,12 @@ MAINTAINERCLEANFILES = \
        $(libvalacore_la_VALASOURCES:.vala=.c) \
        $(NULL)
 
-VALA_V = $(VALA_V_$(V))
-VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
-VALA_V_0 = @echo "  VALAC " $^;
 all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.common $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -600,6 +599,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
+$(top_srcdir)/Makefile.common:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -1037,7 +1037,16 @@ uninstall-am: uninstall-valaincludeHEADERS
 
 
 vala.vapi vala.vala.stamp: $(libvalacore_la_VALASOURCES)
-       $(VALA_V)$(VALAC) $(COVERAGE_VALAFLAGS) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --pkg gobject-2.0 --vapidir $(srcdir)/../gee --pkg gee --pkg config -H vala.h --library vala $^
+       $(VALA_V)$(VALAC) \
+               $(COVERAGE_VALAFLAGS) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi --pkg gobject-2.0 \
+               --vapidir $(top_srcdir)/gee --pkg gee \
+               --pkg config \
+               -H vala.h \
+               --library vala \
+               $^
        @touch $@
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
index be0ce76..dc80118 100644 (file)
@@ -3576,8 +3576,8 @@ gboolean vala_array_type_get_inline_allocated (ValaArrayType* self);
 void vala_array_type_set_inline_allocated (ValaArrayType* self, gboolean value);
 gboolean vala_array_type_get_fixed_length (ValaArrayType* self);
 void vala_array_type_set_fixed_length (ValaArrayType* self, gboolean value);
-gint vala_array_type_get_length (ValaArrayType* self);
-void vala_array_type_set_length (ValaArrayType* self, gint value);
+ValaExpression* vala_array_type_get_length (ValaArrayType* self);
+void vala_array_type_set_length (ValaArrayType* self, ValaExpression* value);
 gint vala_array_type_get_rank (ValaArrayType* self);
 void vala_array_type_set_rank (ValaArrayType* self, gint value);
 GType vala_assignment_get_type (void) G_GNUC_CONST;
@@ -3801,6 +3801,8 @@ gboolean vala_code_context_get_checking (ValaCodeContext* self);
 void vala_code_context_set_checking (ValaCodeContext* self, gboolean value);
 gboolean vala_code_context_get_deprecated (ValaCodeContext* self);
 void vala_code_context_set_deprecated (ValaCodeContext* self, gboolean value);
+gboolean vala_code_context_get_hide_internal (ValaCodeContext* self);
+void vala_code_context_set_hide_internal (ValaCodeContext* self, gboolean value);
 gboolean vala_code_context_get_experimental (ValaCodeContext* self);
 void vala_code_context_set_experimental (ValaCodeContext* self, gboolean value);
 gboolean vala_code_context_get_experimental_non_null (ValaCodeContext* self);
@@ -3854,6 +3856,8 @@ gboolean vala_code_context_get_nostdpkg (ValaCodeContext* self);
 void vala_code_context_set_nostdpkg (ValaCodeContext* self, gboolean value);
 gboolean vala_code_context_get_use_fast_vapi (ValaCodeContext* self);
 void vala_code_context_set_use_fast_vapi (ValaCodeContext* self, gboolean value);
+gboolean vala_code_context_get_vapi_comments (ValaCodeContext* self);
+void vala_code_context_set_vapi_comments (ValaCodeContext* self, gboolean value);
 gboolean vala_code_context_get_save_csources (ValaCodeContext* self);
 GType vala_report_get_type (void) G_GNUC_CONST;
 ValaReport* vala_code_context_get_report (ValaCodeContext* self);
@@ -4512,6 +4516,8 @@ gboolean vala_method_get_returns_modified_pointer (ValaMethod* self);
 void vala_method_set_returns_modified_pointer (ValaMethod* self, gboolean value);
 ValaMethod* vala_method_get_base_method (ValaMethod* self);
 ValaMethod* vala_method_get_base_interface_method (ValaMethod* self);
+ValaDataType* vala_method_get_base_interface_type (ValaMethod* self);
+void vala_method_set_base_interface_type (ValaMethod* self, ValaDataType* value);
 gboolean vala_method_get_entry_point (ValaMethod* self);
 ValaParameter* vala_method_get_this_parameter (ValaMethod* self);
 void vala_method_set_this_parameter (ValaMethod* self, ValaParameter* value);
@@ -4644,6 +4650,7 @@ gboolean vala_postfix_expression_get_increment (ValaPostfixExpression* self);
 void vala_postfix_expression_set_increment (ValaPostfixExpression* self, gboolean value);
 ValaPropertyAccessor* vala_property_accessor_new (gboolean readable, gboolean writable, gboolean construction, ValaDataType* value_type, ValaBlock* body, ValaSourceReference* source_reference, ValaComment* comment);
 ValaPropertyAccessor* vala_property_accessor_construct (GType object_type, gboolean readable, gboolean writable, gboolean construction, ValaDataType* value_type, ValaBlock* body, ValaSourceReference* source_reference, ValaComment* comment);
+ValaMethod* vala_property_accessor_get_method (ValaPropertyAccessor* self);
 ValaProperty* vala_property_accessor_get_prop (ValaPropertyAccessor* self);
 ValaDataType* vala_property_accessor_get_value_type (ValaPropertyAccessor* self);
 void vala_property_accessor_set_value_type (ValaPropertyAccessor* self, ValaDataType* value);
@@ -4756,6 +4763,8 @@ ValaDataType* vala_semantic_analyzer_get_value_type_for_symbol (ValaSemanticAnal
 ValaSymbol* vala_semantic_analyzer_symbol_lookup_inherited (ValaSymbol* sym, const gchar* name);
 ValaDataType* vala_semantic_analyzer_get_data_type_for_symbol (ValaTypeSymbol* sym);
 gboolean vala_semantic_analyzer_check_arguments (ValaSemanticAnalyzer* self, ValaExpression* expr, ValaDataType* mtype, ValaList* params, ValaList* args);
+gboolean vala_semantic_analyzer_check_variadic_arguments (ValaSemanticAnalyzer* self, ValaIterator* arg_it, gint i, ValaSourceReference* source_reference);
+gboolean vala_semantic_analyzer_check_print_format (ValaSemanticAnalyzer* self, const gchar* format, ValaIterator* arg_it, ValaSourceReference* source_reference);
 ValaDataType* vala_semantic_analyzer_get_actual_type (ValaDataType* derived_instance_type, ValaMemberAccess* method_access, ValaGenericType* generic_type, ValaCodeNode* node_reference);
 gboolean vala_semantic_analyzer_is_in_instance_method (ValaSemanticAnalyzer* self);
 ValaExpression* vala_semantic_analyzer_create_temp_access (ValaLocalVariable* local, ValaDataType* target_type);
index fd97d87..c989130 100644 (file)
@@ -194,6 +194,7 @@ namespace Vala {
                public override bool check (Vala.CodeContext context);
                public override void emit (Vala.CodeGenerator codegen);
                public Vala.List<Vala.Expression> get_sizes ();
+               public override void get_used_variables (Vala.Collection<Vala.Variable> collection);
                public override bool is_pure ();
                public override void replace_expression (Vala.Expression old_node, Vala.Expression new_node);
                public override void replace_type (Vala.DataType old_type, Vala.DataType new_type);
@@ -232,7 +233,7 @@ namespace Vala {
                public bool fixed_length { get; set; }
                public bool inline_allocated { get; set; }
                public bool invalid_syntax { get; set; }
-               public int length { get; set; }
+               public Vala.Expression? length { get; set; }
                public int rank { get; set; }
        }
        [CCode (cheader_filename = "vala.h")]
@@ -500,6 +501,7 @@ namespace Vala {
                public Vala.FlowAnalyzer flow_analyzer { get; private set; }
                public bool gobject_tracing { get; set; }
                public string? header_filename { get; set; }
+               public bool hide_internal { get; set; }
                public string? includedir { get; set; }
                public string? internal_header_filename { get; set; }
                public bool mem_profiler { get; set; }
@@ -520,6 +522,7 @@ namespace Vala {
                public bool thread { get; set; }
                public bool use_fast_vapi { get; set; }
                public bool use_header { get; set; }
+               public bool vapi_comments { get; set; }
                public bool verbose_mode { get; set; }
                public bool version_header { get; set; }
        }
@@ -1159,6 +1162,7 @@ namespace Vala {
                public override bool check (Vala.CodeContext context);
                public override void emit (Vala.CodeGenerator codegen);
                public Vala.List<Vala.Expression> get_initializers ();
+               public override void get_used_variables (Vala.Collection<Vala.Variable> collection);
                public override bool is_constant ();
                public override bool is_pure ();
                public override void replace_expression (Vala.Expression old_node, Vala.Expression new_node);
@@ -1319,6 +1323,7 @@ namespace Vala {
                public override void accept (Vala.CodeVisitor visitor);
                public override bool check (Vala.CodeContext context);
                public override void emit (Vala.CodeGenerator codegen);
+               public override void get_used_variables (Vala.Collection<Vala.Variable> collection);
                public override void replace_expression (Vala.Expression old_node, Vala.Expression new_node);
                public Vala.Expression initializer { get; set; }
                public string name { get; set; }
@@ -1351,6 +1356,7 @@ namespace Vala {
                public bool is_variadic ();
                public override void replace_type (Vala.DataType old_type, Vala.DataType new_type);
                public Vala.Method base_interface_method { get; }
+               public Vala.DataType base_interface_type { get; set; }
                public Vala.Method base_method { get; }
                public Vala.MemberBinding binding { get; set; }
                public bool closure { get; set; }
@@ -1610,6 +1616,7 @@ namespace Vala {
                public override void accept (Vala.CodeVisitor visitor);
                public override void accept_children (Vala.CodeVisitor visitor);
                public override bool check (Vala.CodeContext context);
+               public Vala.Method? get_method ();
                public override void replace_type (Vala.DataType old_type, Vala.DataType new_type);
                public bool automatic_body { get; set; }
                public bool construction { get; set; }
@@ -1752,6 +1759,8 @@ namespace Vala {
                public SemanticAnalyzer ();
                public void analyze (Vala.CodeContext context);
                public bool check_arguments (Vala.Expression expr, Vala.DataType mtype, Vala.List<Vala.Parameter> @params, Vala.List<Vala.Expression> args);
+               public bool check_print_format (string format, Vala.Iterator<Vala.Expression> arg_it, Vala.SourceReference source_reference);
+               public bool check_variadic_arguments (Vala.Iterator<Vala.Expression>? arg_it, int i, Vala.SourceReference source_reference);
                public static Vala.Expression create_temp_access (Vala.LocalVariable local, Vala.DataType? target_type);
                public Vala.Method? find_current_method ();
                public Vala.Method? find_parent_method (Vala.Symbol sym);
@@ -2070,6 +2079,7 @@ namespace Vala {
                public override void visit_member_access (Vala.MemberAccess expr);
                public override void visit_method (Vala.Method m);
                public override void visit_method_call (Vala.MethodCall expr);
+               public override void visit_named_argument (Vala.NamedArgument expr);
                public override void visit_namespace (Vala.Namespace ns);
                public override void visit_object_creation_expression (Vala.ObjectCreationExpression expr);
                public override void visit_postfix_expression (Vala.PostfixExpression expr);
index 8055f27..cb6a8bd 100644 (file)
@@ -627,14 +627,14 @@ void vala_addressof_expression_set_inner (ValaAddressofExpression* self, ValaExp
 
 static void vala_addressof_expression_class_init (ValaAddressofExpressionClass * klass) {
        vala_addressof_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_addressof_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_addressof_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaAddressofExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_addressof_expression_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_addressof_expression_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_addressof_expression_real_replace_expression;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_addressof_expression_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_addressof_expression_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_addressof_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_addressof_expression_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_addressof_expression_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_addressof_expression_real_replace_expression;
+       ((ValaExpressionClass *) klass)->is_pure = vala_addressof_expression_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_addressof_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_addressof_expression_real_emit;
 }
 
 
index 65de186..9ce16d5 100644 (file)
@@ -369,6 +369,8 @@ void vala_data_type_set_value_owned (ValaDataType* self, gboolean value);
 void vala_expression_set_value_type (ValaExpression* self, ValaDataType* value);
 static void vala_array_creation_expression_real_emit (ValaCodeNode* base, ValaCodeGenerator* codegen);
 void vala_code_node_emit (ValaCodeNode* self, ValaCodeGenerator* codegen);
+static void vala_array_creation_expression_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection);
+void vala_code_node_get_used_variables (ValaCodeNode* self, ValaCollection* collection);
 static void vala_array_creation_expression_finalize (ValaCodeNode* obj);
 
 
@@ -1285,6 +1287,71 @@ static void vala_array_creation_expression_real_emit (ValaCodeNode* base, ValaCo
 }
 
 
+static void vala_array_creation_expression_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection) {
+       ValaArrayCreationExpression * self;
+       ValaInitializerList* _tmp13_ = NULL;
+       ValaInitializerList* _tmp14_ = NULL;
+       self = (ValaArrayCreationExpression*) base;
+       g_return_if_fail (collection != NULL);
+       {
+               ValaList* _e_list = NULL;
+               ValaList* _tmp0_ = NULL;
+               ValaList* _tmp1_ = NULL;
+               gint _e_size = 0;
+               ValaList* _tmp2_ = NULL;
+               gint _tmp3_ = 0;
+               gint _tmp4_ = 0;
+               gint _e_index = 0;
+               _tmp0_ = self->priv->sizes;
+               _tmp1_ = _vala_iterable_ref0 (_tmp0_);
+               _e_list = _tmp1_;
+               _tmp2_ = _e_list;
+               _tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
+               _tmp4_ = _tmp3_;
+               _e_size = _tmp4_;
+               _e_index = -1;
+               while (TRUE) {
+                       gint _tmp5_ = 0;
+                       gint _tmp6_ = 0;
+                       gint _tmp7_ = 0;
+                       ValaExpression* e = NULL;
+                       ValaList* _tmp8_ = NULL;
+                       gint _tmp9_ = 0;
+                       gpointer _tmp10_ = NULL;
+                       ValaExpression* _tmp11_ = NULL;
+                       ValaCollection* _tmp12_ = NULL;
+                       _tmp5_ = _e_index;
+                       _e_index = _tmp5_ + 1;
+                       _tmp6_ = _e_index;
+                       _tmp7_ = _e_size;
+                       if (!(_tmp6_ < _tmp7_)) {
+                               break;
+                       }
+                       _tmp8_ = _e_list;
+                       _tmp9_ = _e_index;
+                       _tmp10_ = vala_list_get (_tmp8_, _tmp9_);
+                       e = (ValaExpression*) _tmp10_;
+                       _tmp11_ = e;
+                       _tmp12_ = collection;
+                       vala_code_node_get_used_variables ((ValaCodeNode*) _tmp11_, _tmp12_);
+                       _vala_code_node_unref0 (e);
+               }
+               _vala_iterable_unref0 (_e_list);
+       }
+       _tmp13_ = vala_array_creation_expression_get_initializer_list (self);
+       _tmp14_ = _tmp13_;
+       if (_tmp14_ != NULL) {
+               ValaInitializerList* _tmp15_ = NULL;
+               ValaInitializerList* _tmp16_ = NULL;
+               ValaCollection* _tmp17_ = NULL;
+               _tmp15_ = vala_array_creation_expression_get_initializer_list (self);
+               _tmp16_ = _tmp15_;
+               _tmp17_ = collection;
+               vala_code_node_get_used_variables ((ValaCodeNode*) _tmp16_, _tmp17_);
+       }
+}
+
+
 ValaDataType* vala_array_creation_expression_get_element_type (ValaArrayCreationExpression* self) {
        ValaDataType* result;
        ValaDataType* _tmp0_ = NULL;
@@ -1357,15 +1424,16 @@ void vala_array_creation_expression_set_initializer_list (ValaArrayCreationExpre
 
 static void vala_array_creation_expression_class_init (ValaArrayCreationExpressionClass * klass) {
        vala_array_creation_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_array_creation_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_array_creation_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaArrayCreationExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_array_creation_expression_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_array_creation_expression_real_accept;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_array_creation_expression_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_array_creation_expression_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_array_creation_expression_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_array_creation_expression_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_array_creation_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_array_creation_expression_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->accept = vala_array_creation_expression_real_accept;
+       ((ValaExpressionClass *) klass)->is_pure = vala_array_creation_expression_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_array_creation_expression_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_array_creation_expression_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_array_creation_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_array_creation_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_array_creation_expression_real_get_used_variables;
 }
 
 
index 3b52748..ec29ce8 100644 (file)
@@ -260,4 +260,14 @@ public class Vala.ArrayCreationExpression : Expression {
 
                codegen.visit_expression (this);
        }
+
+       public override void get_used_variables (Collection<Variable> collection) {
+               foreach (Expression e in sizes) {
+                       e.get_used_variables (collection);
+               }
+
+               if (initializer_list != null) {
+                       initializer_list.get_used_variables (collection);
+               }
+       }
 }
index 3981a09..01671fa 100644 (file)
@@ -316,6 +316,16 @@ typedef struct _ValaIntegerTypeClass ValaIntegerTypeClass;
 
 typedef struct _ValaVoidType ValaVoidType;
 typedef struct _ValaVoidTypeClass ValaVoidTypeClass;
+
+#define VALA_TYPE_CONSTANT (vala_constant_get_type ())
+#define VALA_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTANT, ValaConstant))
+#define VALA_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTANT, ValaConstantClass))
+#define VALA_IS_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONSTANT))
+#define VALA_IS_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONSTANT))
+#define VALA_CONSTANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONSTANT, ValaConstantClass))
+
+typedef struct _ValaConstant ValaConstant;
+typedef struct _ValaConstantClass ValaConstantClass;
 #define _g_free0(var) (var = (g_free (var), NULL))
 
 #define VALA_TYPE_SEMANTIC_ANALYZER (vala_semantic_analyzer_get_type ())
@@ -369,16 +379,6 @@ typedef struct _ValaInterfaceClass ValaInterfaceClass;
 typedef struct _ValaEnum ValaEnum;
 typedef struct _ValaEnumClass ValaEnumClass;
 
-#define VALA_TYPE_CONSTANT (vala_constant_get_type ())
-#define VALA_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTANT, ValaConstant))
-#define VALA_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTANT, ValaConstantClass))
-#define VALA_IS_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONSTANT))
-#define VALA_IS_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONSTANT))
-#define VALA_CONSTANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONSTANT, ValaConstantClass))
-
-typedef struct _ValaConstant ValaConstant;
-typedef struct _ValaConstantClass ValaConstantClass;
-
 #define VALA_TYPE_ENUM_VALUE (vala_enum_value_get_type ())
 #define VALA_ENUM_VALUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ENUM_VALUE, ValaEnumValue))
 #define VALA_ENUM_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ENUM_VALUE, ValaEnumValueClass))
@@ -1159,9 +1159,9 @@ struct _ValaArrayTypePrivate {
        gboolean _invalid_syntax;
        gboolean _inline_allocated;
        gboolean _fixed_length;
-       gint _length;
        gint _rank;
        ValaDataType* _element_type;
+       ValaExpression* _length;
        ValaArrayLengthField* length_field;
        ValaArrayResizeMethod* resize_method;
        ValaArrayMoveMethod* move_method;
@@ -1428,11 +1428,14 @@ gboolean vala_array_type_get_inline_allocated (ValaArrayType* self);
 void vala_array_type_set_inline_allocated (ValaArrayType* self, gboolean value);
 gboolean vala_array_type_get_fixed_length (ValaArrayType* self);
 void vala_array_type_set_fixed_length (ValaArrayType* self, gboolean value);
-gint vala_array_type_get_length (ValaArrayType* self);
-void vala_array_type_set_length (ValaArrayType* self, gint value);
+ValaExpression* vala_array_type_get_length (ValaArrayType* self);
+void vala_array_type_set_length (ValaArrayType* self, ValaExpression* value);
 static gboolean vala_array_type_real_is_array (ValaDataType* base);
 static gchar* vala_array_type_real_to_qualified_string (ValaDataType* base, ValaScope* scope);
 gchar* vala_data_type_to_qualified_string (ValaDataType* self, ValaScope* scope);
+gboolean vala_data_type_is_weak (ValaDataType* self);
+ValaCodeNode* vala_code_node_get_parent_node (ValaCodeNode* self);
+GType vala_constant_get_type (void) G_GNUC_CONST;
 static gboolean vala_array_type_real_compatible (ValaDataType* base, ValaDataType* target_type);
 ValaTypeSymbol* vala_data_type_get_data_type (ValaDataType* self);
 gboolean vala_typesymbol_is_subtype_of (ValaTypeSymbol* self, ValaTypeSymbol* t);
@@ -1443,7 +1446,6 @@ GType vala_object_type_symbol_get_type (void) G_GNUC_CONST;
 GType vala_class_get_type (void) G_GNUC_CONST;
 GType vala_interface_get_type (void) G_GNUC_CONST;
 GType vala_enum_get_type (void) G_GNUC_CONST;
-GType vala_constant_get_type (void) G_GNUC_CONST;
 GType vala_enum_value_get_type (void) G_GNUC_CONST;
 GType vala_error_domain_get_type (void) G_GNUC_CONST;
 GType vala_error_code_get_type (void) G_GNUC_CONST;
@@ -1528,6 +1530,8 @@ gboolean vala_array_type_get_invalid_syntax (ValaArrayType* self);
 void vala_report_error (ValaSourceReference* source, const gchar* message);
 void vala_code_node_set_error (ValaCodeNode* self, gboolean value);
 gboolean vala_code_node_check (ValaCodeNode* self, ValaCodeContext* context);
+ValaDataType* vala_expression_get_value_type (ValaExpression* self);
+gboolean vala_expression_is_constant (ValaExpression* self);
 static ValaDataType* vala_array_type_real_get_actual_type (ValaDataType* base, ValaDataType* derived_instance_type, ValaMemberAccess* method_access, ValaCodeNode* node_reference);
 GType vala_generic_type_get_type (void) G_GNUC_CONST;
 gboolean vala_data_type_has_type_arguments (ValaDataType* self);
@@ -1965,12 +1969,14 @@ static ValaDataType* vala_array_type_real_copy (ValaDataType* base) {
        if (_tmp20_) {
                ValaArrayType* _tmp21_ = NULL;
                ValaArrayType* _tmp22_ = NULL;
-               gint _tmp23_ = 0;
+               ValaExpression* _tmp23_ = NULL;
+               ValaExpression* _tmp24_ = NULL;
                _tmp21_ = _result_;
                vala_array_type_set_fixed_length (_tmp21_, TRUE);
                _tmp22_ = _result_;
-               _tmp23_ = self->priv->_length;
-               vala_array_type_set_length (_tmp22_, _tmp23_);
+               _tmp23_ = vala_array_type_get_length (self);
+               _tmp24_ = _tmp23_;
+               vala_array_type_set_length (_tmp22_, _tmp24_);
        }
        result = (ValaDataType*) _result_;
        return result;
@@ -1989,56 +1995,75 @@ static gboolean vala_array_type_real_is_array (ValaDataType* base) {
 static gchar* vala_array_type_real_to_qualified_string (ValaDataType* base, ValaScope* scope) {
        ValaArrayType * self;
        gchar* result = NULL;
-       gboolean _tmp0_ = FALSE;
+       gchar* elem_str = NULL;
+       ValaDataType* _tmp0_ = NULL;
+       ValaDataType* _tmp1_ = NULL;
+       ValaScope* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gboolean _tmp4_ = FALSE;
+       ValaDataType* _tmp5_ = NULL;
+       ValaDataType* _tmp6_ = NULL;
+       gboolean _tmp7_ = FALSE;
+       gboolean _tmp12_ = FALSE;
        self = (ValaArrayType*) base;
-       _tmp0_ = self->priv->_fixed_length;
-       if (!_tmp0_) {
-               const gchar* _tmp1_ = NULL;
-               gboolean _tmp2_ = FALSE;
-               gboolean _tmp3_ = FALSE;
-               ValaDataType* _tmp4_ = NULL;
-               ValaDataType* _tmp5_ = NULL;
-               ValaScope* _tmp6_ = NULL;
-               gchar* _tmp7_ = NULL;
-               gchar* _tmp8_ = NULL;
-               gint _tmp9_ = 0;
-               gchar* _tmp10_ = NULL;
+       _tmp0_ = vala_array_type_get_element_type (self);
+       _tmp1_ = _tmp0_;
+       _tmp2_ = scope;
+       _tmp3_ = vala_data_type_to_qualified_string (_tmp1_, _tmp2_);
+       elem_str = _tmp3_;
+       _tmp5_ = vala_array_type_get_element_type (self);
+       _tmp6_ = _tmp5_;
+       _tmp7_ = vala_data_type_is_weak (_tmp6_);
+       if (_tmp7_) {
+               ValaCodeNode* _tmp8_ = NULL;
+               ValaCodeNode* _tmp9_ = NULL;
+               _tmp8_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
+               _tmp9_ = _tmp8_;
+               _tmp4_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, VALA_TYPE_CONSTANT);
+       } else {
+               _tmp4_ = FALSE;
+       }
+       if (_tmp4_) {
+               const gchar* _tmp10_ = NULL;
                gchar* _tmp11_ = NULL;
-               gchar* _tmp12_ = NULL;
-               gchar* _tmp13_ = NULL;
-               _tmp2_ = vala_data_type_get_nullable ((ValaDataType*) self);
-               _tmp3_ = _tmp2_;
-               if (_tmp3_) {
-                       _tmp1_ = "?";
+               _tmp10_ = elem_str;
+               _tmp11_ = g_strdup_printf ("(unowned %s)", _tmp10_);
+               _g_free0 (elem_str);
+               elem_str = _tmp11_;
+       }
+       _tmp12_ = self->priv->_fixed_length;
+       if (!_tmp12_) {
+               const gchar* _tmp13_ = NULL;
+               gboolean _tmp14_ = FALSE;
+               gboolean _tmp15_ = FALSE;
+               const gchar* _tmp16_ = NULL;
+               gint _tmp17_ = 0;
+               gchar* _tmp18_ = NULL;
+               gchar* _tmp19_ = NULL;
+               gchar* _tmp20_ = NULL;
+               gchar* _tmp21_ = NULL;
+               _tmp14_ = vala_data_type_get_nullable ((ValaDataType*) self);
+               _tmp15_ = _tmp14_;
+               if (_tmp15_) {
+                       _tmp13_ = "?";
                } else {
-                       _tmp1_ = "";
+                       _tmp13_ = "";
                }
-               _tmp4_ = vala_array_type_get_element_type (self);
-               _tmp5_ = _tmp4_;
-               _tmp6_ = scope;
-               _tmp7_ = vala_data_type_to_qualified_string (_tmp5_, _tmp6_);
-               _tmp8_ = _tmp7_;
-               _tmp9_ = self->priv->_rank;
-               _tmp10_ = g_strnfill ((gsize) (_tmp9_ - 1), ',');
-               _tmp11_ = _tmp10_;
-               _tmp12_ = g_strdup_printf ("%s[%s]%s", _tmp8_, _tmp11_, _tmp1_);
-               _tmp13_ = _tmp12_;
-               _g_free0 (_tmp11_);
-               _g_free0 (_tmp8_);
-               result = _tmp13_;
+               _tmp16_ = elem_str;
+               _tmp17_ = self->priv->_rank;
+               _tmp18_ = g_strnfill ((gsize) (_tmp17_ - 1), ',');
+               _tmp19_ = _tmp18_;
+               _tmp20_ = g_strdup_printf ("%s[%s]%s", _tmp16_, _tmp19_, _tmp13_);
+               _tmp21_ = _tmp20_;
+               _g_free0 (_tmp19_);
+               result = _tmp21_;
+               _g_free0 (elem_str);
                return result;
        } else {
-               ValaDataType* _tmp14_ = NULL;
-               ValaDataType* _tmp15_ = NULL;
-               ValaScope* _tmp16_ = NULL;
-               gchar* _tmp17_ = NULL;
-               _tmp14_ = vala_array_type_get_element_type (self);
-               _tmp15_ = _tmp14_;
-               _tmp16_ = scope;
-               _tmp17_ = vala_data_type_to_qualified_string (_tmp15_, _tmp16_);
-               result = _tmp17_;
+               result = elem_str;
                return result;
        }
+       _g_free0 (elem_str);
 }
 
 
@@ -2352,10 +2377,12 @@ static gboolean vala_array_type_real_check (ValaCodeNode* base, ValaCodeContext*
        ValaArrayType * self;
        gboolean result = FALSE;
        gboolean _tmp0_ = FALSE;
-       ValaDataType* _tmp3_ = NULL;
-       ValaDataType* _tmp4_ = NULL;
-       ValaCodeContext* _tmp5_ = NULL;
-       gboolean _tmp6_ = FALSE;
+       gboolean _tmp3_ = FALSE;
+       gboolean _tmp4_ = FALSE;
+       ValaDataType* _tmp27_ = NULL;
+       ValaDataType* _tmp28_ = NULL;
+       ValaCodeContext* _tmp29_ = NULL;
+       gboolean _tmp30_ = FALSE;
        self = (ValaArrayType*) base;
        g_return_val_if_fail (context != NULL, FALSE);
        _tmp0_ = self->priv->_invalid_syntax;
@@ -2369,11 +2396,77 @@ static gboolean vala_array_type_real_check (ValaCodeNode* base, ValaCodeContext*
                result = FALSE;
                return result;
        }
-       _tmp3_ = vala_array_type_get_element_type (self);
-       _tmp4_ = _tmp3_;
-       _tmp5_ = context;
-       _tmp6_ = vala_code_node_check ((ValaCodeNode*) _tmp4_, _tmp5_);
-       result = _tmp6_;
+       _tmp4_ = self->priv->_fixed_length;
+       if (_tmp4_) {
+               ValaExpression* _tmp5_ = NULL;
+               ValaExpression* _tmp6_ = NULL;
+               _tmp5_ = vala_array_type_get_length (self);
+               _tmp6_ = _tmp5_;
+               _tmp3_ = _tmp6_ != NULL;
+       } else {
+               _tmp3_ = FALSE;
+       }
+       if (_tmp3_) {
+               ValaExpression* _tmp7_ = NULL;
+               ValaExpression* _tmp8_ = NULL;
+               ValaCodeContext* _tmp9_ = NULL;
+               gboolean _tmp10_ = FALSE;
+               gboolean _tmp11_ = FALSE;
+               ValaExpression* _tmp12_ = NULL;
+               ValaExpression* _tmp13_ = NULL;
+               ValaDataType* _tmp14_ = NULL;
+               ValaDataType* _tmp15_ = NULL;
+               _tmp7_ = vala_array_type_get_length (self);
+               _tmp8_ = _tmp7_;
+               _tmp9_ = context;
+               vala_code_node_check ((ValaCodeNode*) _tmp8_, _tmp9_);
+               _tmp12_ = vala_array_type_get_length (self);
+               _tmp13_ = _tmp12_;
+               _tmp14_ = vala_expression_get_value_type (_tmp13_);
+               _tmp15_ = _tmp14_;
+               if (_tmp15_ == NULL) {
+                       _tmp11_ = TRUE;
+               } else {
+                       ValaExpression* _tmp16_ = NULL;
+                       ValaExpression* _tmp17_ = NULL;
+                       ValaDataType* _tmp18_ = NULL;
+                       ValaDataType* _tmp19_ = NULL;
+                       _tmp16_ = vala_array_type_get_length (self);
+                       _tmp17_ = _tmp16_;
+                       _tmp18_ = vala_expression_get_value_type (_tmp17_);
+                       _tmp19_ = _tmp18_;
+                       _tmp11_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, VALA_TYPE_INTEGER_TYPE);
+               }
+               if (_tmp11_) {
+                       _tmp10_ = TRUE;
+               } else {
+                       ValaExpression* _tmp20_ = NULL;
+                       ValaExpression* _tmp21_ = NULL;
+                       gboolean _tmp22_ = FALSE;
+                       _tmp20_ = vala_array_type_get_length (self);
+                       _tmp21_ = _tmp20_;
+                       _tmp22_ = vala_expression_is_constant (_tmp21_);
+                       _tmp10_ = !_tmp22_;
+               }
+               if (_tmp10_) {
+                       ValaExpression* _tmp23_ = NULL;
+                       ValaExpression* _tmp24_ = NULL;
+                       ValaSourceReference* _tmp25_ = NULL;
+                       ValaSourceReference* _tmp26_ = NULL;
+                       _tmp23_ = vala_array_type_get_length (self);
+                       _tmp24_ = _tmp23_;
+                       _tmp25_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp24_);
+                       _tmp26_ = _tmp25_;
+                       vala_report_error (_tmp26_, "Expression of constant integer type expected");
+                       result = FALSE;
+                       return result;
+               }
+       }
+       _tmp27_ = vala_array_type_get_element_type (self);
+       _tmp28_ = _tmp27_;
+       _tmp29_ = context;
+       _tmp30_ = vala_code_node_check ((ValaCodeNode*) _tmp28_, _tmp29_);
+       result = _tmp30_;
        return result;
 }
 
@@ -2546,21 +2639,31 @@ void vala_array_type_set_fixed_length (ValaArrayType* self, gboolean value) {
 }
 
 
-gint vala_array_type_get_length (ValaArrayType* self) {
-       gint result;
-       gint _tmp0_ = 0;
-       g_return_val_if_fail (self != NULL, 0);
+ValaExpression* vala_array_type_get_length (ValaArrayType* self) {
+       ValaExpression* result;
+       ValaExpression* _tmp0_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
        _tmp0_ = self->priv->_length;
        result = _tmp0_;
        return result;
 }
 
 
-void vala_array_type_set_length (ValaArrayType* self, gint value) {
-       gint _tmp0_ = 0;
+void vala_array_type_set_length (ValaArrayType* self, ValaExpression* value) {
+       ValaExpression* _tmp0_ = NULL;
+       ValaExpression* _tmp1_ = NULL;
+       ValaExpression* _tmp2_ = NULL;
        g_return_if_fail (self != NULL);
        _tmp0_ = value;
-       self->priv->_length = _tmp0_;
+       _tmp1_ = _vala_code_node_ref0 (_tmp0_);
+       _vala_code_node_unref0 (self->priv->_length);
+       self->priv->_length = _tmp1_;
+       _tmp2_ = self->priv->_length;
+       if (_tmp2_ != NULL) {
+               ValaExpression* _tmp3_ = NULL;
+               _tmp3_ = self->priv->_length;
+               vala_code_node_set_parent_node ((ValaCodeNode*) _tmp3_, (ValaCodeNode*) self);
+       }
 }
 
 
@@ -2584,20 +2687,20 @@ void vala_array_type_set_rank (ValaArrayType* self, gint value) {
 
 static void vala_array_type_class_init (ValaArrayTypeClass * klass) {
        vala_array_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_array_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_array_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaArrayTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->get_member = vala_array_type_real_get_member;
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_array_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->is_array = vala_array_type_real_is_array;
-       VALA_DATA_TYPE_CLASS (klass)->to_qualified_string = vala_array_type_real_to_qualified_string;
-       VALA_DATA_TYPE_CLASS (klass)->compatible = vala_array_type_real_compatible;
-       VALA_DATA_TYPE_CLASS (klass)->is_reference_type_or_type_parameter = vala_array_type_real_is_reference_type_or_type_parameter;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_array_type_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_array_type_real_replace_type;
-       VALA_DATA_TYPE_CLASS (klass)->is_accessible = vala_array_type_real_is_accessible;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_array_type_real_check;
-       VALA_DATA_TYPE_CLASS (klass)->get_actual_type = vala_array_type_real_get_actual_type;
-       VALA_DATA_TYPE_CLASS (klass)->is_disposable = vala_array_type_real_is_disposable;
+       ((ValaDataTypeClass *) klass)->get_member = vala_array_type_real_get_member;
+       ((ValaDataTypeClass *) klass)->copy = vala_array_type_real_copy;
+       ((ValaDataTypeClass *) klass)->is_array = vala_array_type_real_is_array;
+       ((ValaDataTypeClass *) klass)->to_qualified_string = vala_array_type_real_to_qualified_string;
+       ((ValaDataTypeClass *) klass)->compatible = vala_array_type_real_compatible;
+       ((ValaDataTypeClass *) klass)->is_reference_type_or_type_parameter = vala_array_type_real_is_reference_type_or_type_parameter;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_array_type_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_array_type_real_replace_type;
+       ((ValaDataTypeClass *) klass)->is_accessible = vala_array_type_real_is_accessible;
+       ((ValaCodeNodeClass *) klass)->check = vala_array_type_real_check;
+       ((ValaDataTypeClass *) klass)->get_actual_type = vala_array_type_real_get_actual_type;
+       ((ValaDataTypeClass *) klass)->is_disposable = vala_array_type_real_is_disposable;
 }
 
 
@@ -2610,6 +2713,7 @@ static void vala_array_type_finalize (ValaCodeNode* obj) {
        ValaArrayType * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_ARRAY_TYPE, ValaArrayType);
        _vala_code_node_unref0 (self->priv->_element_type);
+       _vala_code_node_unref0 (self->priv->_length);
        _vala_code_node_unref0 (self->priv->length_field);
        _vala_code_node_unref0 (self->priv->resize_method);
        _vala_code_node_unref0 (self->priv->move_method);
index 852342c..941485a 100644 (file)
@@ -46,7 +46,15 @@ public class Vala.ArrayType : ReferenceType {
        /**
         * The length of this fixed-length array.
         */
-       public int length { get; set; }
+       public Expression? length {
+               get { return _length; }
+               set {
+                       _length = value;
+                       if (_length != null) {
+                               _length.parent_node = this;
+                       }
+               }
+       }
 
        /**
         * The rank of this array.
@@ -54,6 +62,7 @@ public class Vala.ArrayType : ReferenceType {
        public int rank { get; set; }
 
        private DataType _element_type;
+       private Expression _length;
 
        private ArrayLengthField length_field;
        private ArrayResizeMethod resize_method;
@@ -156,10 +165,15 @@ public class Vala.ArrayType : ReferenceType {
        }
 
        public override string to_qualified_string (Scope? scope) {
+               var elem_str = element_type.to_qualified_string (scope);
+               if (element_type.is_weak () && !(parent_node is Constant)) {
+                       elem_str = "(unowned %s)".printf (elem_str);
+               }
+               
                if (!fixed_length) {
-                       return "%s[%s]%s".printf (element_type.to_qualified_string (scope), string.nfill (rank - 1, ','), nullable ? "?" : "");
+                       return "%s[%s]%s".printf (elem_str, string.nfill (rank - 1, ','), nullable ? "?" : "");
                } else {
-                       return element_type.to_qualified_string (scope);
+                       return elem_str;
                }
        }
 
@@ -231,6 +245,16 @@ public class Vala.ArrayType : ReferenceType {
                        error = true;
                        return false;
                }
+
+               if (fixed_length && length != null) {
+                       length.check (context);
+
+                       if (length.value_type == null || !(length.value_type is IntegerType) || !length.is_constant ()) {
+                               Report.error (length.source_reference, "Expression of constant integer type expected");
+                               return false;
+                       }
+               }
+
                return element_type.check (context);
        }
 
index da14edd..51e2c88 100644 (file)
@@ -4851,16 +4851,16 @@ void vala_assignment_set_right (ValaAssignment* self, ValaExpression* value) {
 
 static void vala_assignment_class_init (ValaAssignmentClass * klass) {
        vala_assignment_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_assignment_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_assignment_finalize;
        g_type_class_add_private (klass, sizeof (ValaAssignmentPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_assignment_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_assignment_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_assignment_real_replace_expression;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_assignment_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_assignment_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_assignment_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_assignment_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_assignment_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_assignment_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_assignment_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_assignment_real_replace_expression;
+       ((ValaExpressionClass *) klass)->is_pure = vala_assignment_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_assignment_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_assignment_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_assignment_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_assignment_real_get_used_variables;
 }
 
 
index a75b6f3..71db74c 100644 (file)
@@ -608,7 +608,7 @@ void vala_attribute_set_name (ValaAttribute* self, const gchar* value) {
 
 static void vala_attribute_class_init (ValaAttributeClass * klass) {
        vala_attribute_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_attribute_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_attribute_finalize;
        g_type_class_add_private (klass, sizeof (ValaAttributePrivate));
 }
 
index 3cf9f22..b865c0c 100644 (file)
@@ -605,11 +605,11 @@ static void vala_base_access_real_emit (ValaCodeNode* base, ValaCodeGenerator* c
 
 static void vala_base_access_class_init (ValaBaseAccessClass * klass) {
        vala_base_access_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_base_access_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_base_access_real_to_string;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_base_access_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_base_access_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_base_access_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_base_access_real_accept;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_base_access_real_to_string;
+       ((ValaExpressionClass *) klass)->is_pure = vala_base_access_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_base_access_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_base_access_real_emit;
 }
 
 
index d7f5359..3d843d2 100644 (file)
@@ -510,7 +510,7 @@ void vala_value_take_basic_block (GValue* value, gpointer v_object) {
 
 static void vala_basic_block_class_init (ValaBasicBlockClass * klass) {
        vala_basic_block_parent_class = g_type_class_peek_parent (klass);
-       VALA_BASIC_BLOCK_CLASS (klass)->finalize = vala_basic_block_finalize;
+       ((ValaBasicBlockClass *) klass)->finalize = vala_basic_block_finalize;
        g_type_class_add_private (klass, sizeof (ValaBasicBlockPrivate));
 }
 
@@ -558,6 +558,7 @@ static void vala_basic_block_instance_init (ValaBasicBlock * self) {
 static void vala_basic_block_finalize (ValaBasicBlock* obj) {
        ValaBasicBlock * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_BASIC_BLOCK, ValaBasicBlock);
+       g_signal_handlers_destroy (self);
        _vala_iterable_unref0 (self->priv->nodes);
        _vala_iterable_unref0 (self->priv->predecessors);
        _vala_iterable_unref0 (self->priv->successors);
index 2c03ca0..00f95df 100644 (file)
@@ -1469,6 +1469,8 @@ void vala_expression_insert_statement (ValaExpression* self, ValaBlock* block, V
 void vala_code_node_set_error (ValaCodeNode* self, gboolean value);
 ValaDataType* vala_expression_get_target_type (ValaExpression* self);
 void vala_expression_set_target_type (ValaExpression* self, ValaDataType* value);
+ValaDataType* vala_expression_get_formal_target_type (ValaExpression* self);
+void vala_expression_set_formal_target_type (ValaExpression* self, ValaDataType* value);
 ValaCodeNode* vala_code_node_get_parent_node (ValaCodeNode* self);
 void vala_code_node_replace_expression (ValaCodeNode* self, ValaExpression* old_node, ValaExpression* new_node);
 ValaDataType* vala_expression_get_value_type (ValaExpression* self);
@@ -1898,65 +1900,65 @@ static gboolean vala_binary_expression_real_check (ValaCodeNode* base, ValaCodeC
        ValaSemanticAnalyzer* _tmp7_ = NULL;
        ValaSymbol* _tmp8_ = NULL;
        ValaSymbol* _tmp9_ = NULL;
-       ValaBinaryOperator _tmp131_ = 0;
-       gboolean _tmp258_ = FALSE;
-       ValaExpression* _tmp259_ = NULL;
-       ValaExpression* _tmp260_ = NULL;
-       ValaCodeContext* _tmp261_ = NULL;
-       gboolean _tmp262_ = FALSE;
-       ValaExpression* _tmp267_ = NULL;
-       ValaExpression* _tmp268_ = NULL;
-       ValaDataType* _tmp269_ = NULL;
-       ValaDataType* _tmp270_ = NULL;
-       gboolean _tmp275_ = FALSE;
-       ValaBinaryOperator _tmp276_ = 0;
-       ValaExpression* _tmp285_ = NULL;
-       ValaExpression* _tmp286_ = NULL;
-       ValaDataType* _tmp287_ = NULL;
-       ValaDataType* _tmp288_ = NULL;
-       ValaExpression* _tmp301_ = NULL;
-       ValaExpression* _tmp302_ = NULL;
-       ValaDataType* _tmp303_ = NULL;
-       ValaDataType* _tmp304_ = NULL;
-       ValaExpression* _tmp317_ = NULL;
-       ValaExpression* _tmp318_ = NULL;
-       ValaExpression* _tmp319_ = NULL;
+       ValaBinaryOperator _tmp134_ = 0;
+       gboolean _tmp261_ = FALSE;
+       ValaExpression* _tmp262_ = NULL;
+       ValaExpression* _tmp263_ = NULL;
+       ValaCodeContext* _tmp264_ = NULL;
+       gboolean _tmp265_ = FALSE;
+       ValaExpression* _tmp270_ = NULL;
+       ValaExpression* _tmp271_ = NULL;
+       ValaDataType* _tmp272_ = NULL;
+       ValaDataType* _tmp273_ = NULL;
+       gboolean _tmp278_ = FALSE;
+       ValaBinaryOperator _tmp279_ = 0;
+       ValaExpression* _tmp288_ = NULL;
+       ValaExpression* _tmp289_ = NULL;
+       ValaDataType* _tmp290_ = NULL;
+       ValaDataType* _tmp291_ = NULL;
+       ValaExpression* _tmp304_ = NULL;
+       ValaExpression* _tmp305_ = NULL;
+       ValaDataType* _tmp306_ = NULL;
+       ValaDataType* _tmp307_ = NULL;
        ValaExpression* _tmp320_ = NULL;
-       ValaDataType* _tmp321_ = NULL;
-       ValaDataType* _tmp322_ = NULL;
-       ValaDataType* _tmp323_ = NULL;
+       ValaExpression* _tmp321_ = NULL;
+       ValaExpression* _tmp322_ = NULL;
+       ValaExpression* _tmp323_ = NULL;
        ValaDataType* _tmp324_ = NULL;
-       ValaExpression* _tmp325_ = NULL;
-       ValaExpression* _tmp326_ = NULL;
+       ValaDataType* _tmp325_ = NULL;
+       ValaDataType* _tmp326_ = NULL;
        ValaDataType* _tmp327_ = NULL;
-       ValaDataType* _tmp328_ = NULL;
+       ValaExpression* _tmp328_ = NULL;
        ValaExpression* _tmp329_ = NULL;
-       ValaExpression* _tmp330_ = NULL;
-       ValaExpression* _tmp331_ = NULL;
+       ValaDataType* _tmp330_ = NULL;
+       ValaDataType* _tmp331_ = NULL;
        ValaExpression* _tmp332_ = NULL;
-       ValaDataType* _tmp333_ = NULL;
-       ValaDataType* _tmp334_ = NULL;
-       ValaDataType* _tmp335_ = NULL;
+       ValaExpression* _tmp333_ = NULL;
+       ValaExpression* _tmp334_ = NULL;
+       ValaExpression* _tmp335_ = NULL;
        ValaDataType* _tmp336_ = NULL;
-       ValaExpression* _tmp337_ = NULL;
-       ValaExpression* _tmp338_ = NULL;
+       ValaDataType* _tmp337_ = NULL;
+       ValaDataType* _tmp338_ = NULL;
        ValaDataType* _tmp339_ = NULL;
-       ValaDataType* _tmp340_ = NULL;
-       gboolean _tmp341_ = FALSE;
-       ValaExpression* _tmp342_ = NULL;
-       ValaExpression* _tmp343_ = NULL;
-       ValaDataType* _tmp344_ = NULL;
-       ValaDataType* _tmp345_ = NULL;
-       ValaTypeSymbol* _tmp346_ = NULL;
-       ValaTypeSymbol* _tmp347_ = NULL;
-       ValaCodeContext* _tmp348_ = NULL;
-       ValaSemanticAnalyzer* _tmp349_ = NULL;
-       ValaSemanticAnalyzer* _tmp350_ = NULL;
-       ValaDataType* _tmp351_ = NULL;
-       ValaTypeSymbol* _tmp352_ = NULL;
-       ValaTypeSymbol* _tmp353_ = NULL;
-       gboolean _tmp954_ = FALSE;
-       gboolean _tmp955_ = FALSE;
+       ValaExpression* _tmp340_ = NULL;
+       ValaExpression* _tmp341_ = NULL;
+       ValaDataType* _tmp342_ = NULL;
+       ValaDataType* _tmp343_ = NULL;
+       gboolean _tmp344_ = FALSE;
+       ValaExpression* _tmp345_ = NULL;
+       ValaExpression* _tmp346_ = NULL;
+       ValaDataType* _tmp347_ = NULL;
+       ValaDataType* _tmp348_ = NULL;
+       ValaTypeSymbol* _tmp349_ = NULL;
+       ValaTypeSymbol* _tmp350_ = NULL;
+       ValaCodeContext* _tmp351_ = NULL;
+       ValaSemanticAnalyzer* _tmp352_ = NULL;
+       ValaSemanticAnalyzer* _tmp353_ = NULL;
+       ValaDataType* _tmp354_ = NULL;
+       ValaTypeSymbol* _tmp355_ = NULL;
+       ValaTypeSymbol* _tmp356_ = NULL;
+       gboolean _tmp945_ = FALSE;
+       gboolean _tmp946_ = FALSE;
        self = (ValaBinaryExpression*) base;
        g_return_val_if_fail (context != NULL, FALSE);
        _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
@@ -2105,10 +2107,13 @@ static gboolean vala_binary_expression_real_check (ValaCodeNode* base, ValaCodeC
                ValaDataType* _tmp124_ = NULL;
                ValaDataType* _tmp125_ = NULL;
                ValaMemberAccess* _tmp126_ = NULL;
-               ValaCodeContext* _tmp127_ = NULL;
-               ValaCodeNode* _tmp128_ = NULL;
-               ValaCodeNode* _tmp129_ = NULL;
-               ValaMemberAccess* _tmp130_ = NULL;
+               ValaDataType* _tmp127_ = NULL;
+               ValaDataType* _tmp128_ = NULL;
+               ValaMemberAccess* _tmp129_ = NULL;
+               ValaCodeContext* _tmp130_ = NULL;
+               ValaCodeNode* _tmp131_ = NULL;
+               ValaCodeNode* _tmp132_ = NULL;
+               ValaMemberAccess* _tmp133_ = NULL;
                _tmp13_ = context;
                _tmp14_ = vala_code_context_get_analyzer (_tmp13_);
                _tmp15_ = _tmp14_;
@@ -2269,12 +2274,16 @@ static gboolean vala_binary_expression_real_check (ValaCodeNode* base, ValaCodeC
                _tmp125_ = _tmp124_;
                vala_expression_set_target_type ((ValaExpression*) _tmp123_, _tmp125_);
                _tmp126_ = ma;
-               _tmp127_ = context;
-               vala_code_node_check ((ValaCodeNode*) _tmp126_, _tmp127_);
-               _tmp128_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
-               _tmp129_ = _tmp128_;
-               _tmp130_ = ma;
-               vala_code_node_replace_expression (_tmp129_, (ValaExpression*) self, (ValaExpression*) _tmp130_);
+               _tmp127_ = vala_expression_get_formal_target_type ((ValaExpression*) self);
+               _tmp128_ = _tmp127_;
+               vala_expression_set_formal_target_type ((ValaExpression*) _tmp126_, _tmp128_);
+               _tmp129_ = ma;
+               _tmp130_ = context;
+               vala_code_node_check ((ValaCodeNode*) _tmp129_, _tmp130_);
+               _tmp131_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
+               _tmp132_ = _tmp131_;
+               _tmp133_ = ma;
+               vala_code_node_replace_expression (_tmp132_, (ValaExpression*) self, (ValaExpression*) _tmp133_);
                result = TRUE;
                _vala_code_node_unref0 (ma);
                _vala_code_node_unref0 (if_stmt);
@@ -2286,298 +2295,298 @@ static gboolean vala_binary_expression_real_check (ValaCodeNode* base, ValaCodeC
                _vala_code_node_unref0 (local);
                return result;
        }
-       _tmp131_ = self->priv->_operator;
-       if (_tmp131_ == VALA_BINARY_OPERATOR_COALESCE) {
-               ValaExpression* _tmp132_ = NULL;
-               ValaExpression* _tmp133_ = NULL;
-               ValaCodeContext* _tmp134_ = NULL;
-               gboolean _tmp135_ = FALSE;
+       _tmp134_ = self->priv->_operator;
+       if (_tmp134_ == VALA_BINARY_OPERATOR_COALESCE) {
+               ValaExpression* _tmp135_ = NULL;
                ValaExpression* _tmp136_ = NULL;
-               ValaExpression* _tmp137_ = NULL;
-               ValaCodeContext* _tmp138_ = NULL;
-               gboolean _tmp139_ = FALSE;
-               ValaDataType* local_type = NULL;
+               ValaCodeContext* _tmp137_ = NULL;
+               gboolean _tmp138_ = FALSE;
+               ValaExpression* _tmp139_ = NULL;
                ValaExpression* _tmp140_ = NULL;
-               ValaExpression* _tmp141_ = NULL;
-               ValaDataType* _tmp142_ = NULL;
-               ValaDataType* _tmp143_ = NULL;
+               ValaCodeContext* _tmp141_ = NULL;
+               gboolean _tmp142_ = FALSE;
+               ValaDataType* local_type = NULL;
+               ValaExpression* _tmp143_ = NULL;
+               ValaExpression* _tmp144_ = NULL;
+               ValaDataType* _tmp145_ = NULL;
+               ValaDataType* _tmp146_ = NULL;
                ValaLocalVariable* local = NULL;
-               ValaDataType* _tmp170_ = NULL;
-               gchar* _tmp171_ = NULL;
-               gchar* _tmp172_ = NULL;
-               ValaExpression* _tmp173_ = NULL;
-               ValaExpression* _tmp174_ = NULL;
-               ValaSourceReference* _tmp175_ = NULL;
-               ValaSourceReference* _tmp176_ = NULL;
-               ValaLocalVariable* _tmp177_ = NULL;
-               ValaLocalVariable* _tmp178_ = NULL;
+               ValaDataType* _tmp173_ = NULL;
+               gchar* _tmp174_ = NULL;
+               gchar* _tmp175_ = NULL;
+               ValaExpression* _tmp176_ = NULL;
+               ValaExpression* _tmp177_ = NULL;
+               ValaSourceReference* _tmp178_ = NULL;
+               ValaSourceReference* _tmp179_ = NULL;
+               ValaLocalVariable* _tmp180_ = NULL;
+               ValaLocalVariable* _tmp181_ = NULL;
                ValaDeclarationStatement* decl = NULL;
-               ValaLocalVariable* _tmp179_ = NULL;
-               ValaSourceReference* _tmp180_ = NULL;
-               ValaSourceReference* _tmp181_ = NULL;
-               ValaDeclarationStatement* _tmp182_ = NULL;
+               ValaLocalVariable* _tmp182_ = NULL;
+               ValaSourceReference* _tmp183_ = NULL;
+               ValaSourceReference* _tmp184_ = NULL;
+               ValaDeclarationStatement* _tmp185_ = NULL;
                ValaExpressionStatement* right_stmt = NULL;
-               ValaLocalVariable* _tmp183_ = NULL;
-               const gchar* _tmp184_ = NULL;
-               const gchar* _tmp185_ = NULL;
-               ValaExpression* _tmp186_ = NULL;
-               ValaExpression* _tmp187_ = NULL;
-               ValaSourceReference* _tmp188_ = NULL;
-               ValaSourceReference* _tmp189_ = NULL;
-               ValaMemberAccess* _tmp190_ = NULL;
-               ValaMemberAccess* _tmp191_ = NULL;
-               ValaExpression* _tmp192_ = NULL;
-               ValaExpression* _tmp193_ = NULL;
-               ValaExpression* _tmp194_ = NULL;
+               ValaLocalVariable* _tmp186_ = NULL;
+               const gchar* _tmp187_ = NULL;
+               const gchar* _tmp188_ = NULL;
+               ValaExpression* _tmp189_ = NULL;
+               ValaExpression* _tmp190_ = NULL;
+               ValaSourceReference* _tmp191_ = NULL;
+               ValaSourceReference* _tmp192_ = NULL;
+               ValaMemberAccess* _tmp193_ = NULL;
+               ValaMemberAccess* _tmp194_ = NULL;
                ValaExpression* _tmp195_ = NULL;
-               ValaSourceReference* _tmp196_ = NULL;
-               ValaSourceReference* _tmp197_ = NULL;
-               ValaAssignment* _tmp198_ = NULL;
-               ValaAssignment* _tmp199_ = NULL;
-               ValaExpression* _tmp200_ = NULL;
-               ValaExpression* _tmp201_ = NULL;
-               ValaSourceReference* _tmp202_ = NULL;
-               ValaSourceReference* _tmp203_ = NULL;
-               ValaExpressionStatement* _tmp204_ = NULL;
-               ValaExpressionStatement* _tmp205_ = NULL;
-               ValaBlock* true_block = NULL;
+               ValaExpression* _tmp196_ = NULL;
+               ValaExpression* _tmp197_ = NULL;
+               ValaExpression* _tmp198_ = NULL;
+               ValaSourceReference* _tmp199_ = NULL;
+               ValaSourceReference* _tmp200_ = NULL;
+               ValaAssignment* _tmp201_ = NULL;
+               ValaAssignment* _tmp202_ = NULL;
+               ValaExpression* _tmp203_ = NULL;
+               ValaExpression* _tmp204_ = NULL;
+               ValaSourceReference* _tmp205_ = NULL;
                ValaSourceReference* _tmp206_ = NULL;
-               ValaSourceReference* _tmp207_ = NULL;
-               ValaBlock* _tmp208_ = NULL;
-               ValaBlock* _tmp209_ = NULL;
-               ValaExpressionStatement* _tmp210_ = NULL;
+               ValaExpressionStatement* _tmp207_ = NULL;
+               ValaExpressionStatement* _tmp208_ = NULL;
+               ValaBlock* true_block = NULL;
+               ValaSourceReference* _tmp209_ = NULL;
+               ValaSourceReference* _tmp210_ = NULL;
+               ValaBlock* _tmp211_ = NULL;
+               ValaBlock* _tmp212_ = NULL;
+               ValaExpressionStatement* _tmp213_ = NULL;
                ValaBinaryExpression* cond = NULL;
-               ValaLocalVariable* _tmp211_ = NULL;
-               const gchar* _tmp212_ = NULL;
-               const gchar* _tmp213_ = NULL;
-               ValaExpression* _tmp214_ = NULL;
-               ValaExpression* _tmp215_ = NULL;
-               ValaSourceReference* _tmp216_ = NULL;
-               ValaSourceReference* _tmp217_ = NULL;
-               ValaMemberAccess* _tmp218_ = NULL;
-               ValaMemberAccess* _tmp219_ = NULL;
+               ValaLocalVariable* _tmp214_ = NULL;
+               const gchar* _tmp215_ = NULL;
+               const gchar* _tmp216_ = NULL;
+               ValaExpression* _tmp217_ = NULL;
+               ValaExpression* _tmp218_ = NULL;
+               ValaSourceReference* _tmp219_ = NULL;
                ValaSourceReference* _tmp220_ = NULL;
-               ValaSourceReference* _tmp221_ = NULL;
-               ValaNullLiteral* _tmp222_ = NULL;
-               ValaNullLiteral* _tmp223_ = NULL;
+               ValaMemberAccess* _tmp221_ = NULL;
+               ValaMemberAccess* _tmp222_ = NULL;
+               ValaSourceReference* _tmp223_ = NULL;
                ValaSourceReference* _tmp224_ = NULL;
-               ValaSourceReference* _tmp225_ = NULL;
-               ValaBinaryExpression* _tmp226_ = NULL;
-               ValaBinaryExpression* _tmp227_ = NULL;
+               ValaNullLiteral* _tmp225_ = NULL;
+               ValaNullLiteral* _tmp226_ = NULL;
+               ValaSourceReference* _tmp227_ = NULL;
+               ValaSourceReference* _tmp228_ = NULL;
+               ValaBinaryExpression* _tmp229_ = NULL;
+               ValaBinaryExpression* _tmp230_ = NULL;
                ValaIfStatement* if_stmt = NULL;
-               ValaBinaryExpression* _tmp228_ = NULL;
-               ValaBlock* _tmp229_ = NULL;
-               ValaSourceReference* _tmp230_ = NULL;
-               ValaSourceReference* _tmp231_ = NULL;
-               ValaIfStatement* _tmp232_ = NULL;
-               ValaCodeContext* _tmp233_ = NULL;
-               ValaSemanticAnalyzer* _tmp234_ = NULL;
-               ValaSemanticAnalyzer* _tmp235_ = NULL;
-               ValaBlock* _tmp236_ = NULL;
-               ValaDeclarationStatement* _tmp237_ = NULL;
-               ValaCodeContext* _tmp238_ = NULL;
-               ValaSemanticAnalyzer* _tmp239_ = NULL;
-               ValaSemanticAnalyzer* _tmp240_ = NULL;
-               ValaBlock* _tmp241_ = NULL;
-               ValaIfStatement* _tmp242_ = NULL;
-               ValaDeclarationStatement* _tmp243_ = NULL;
-               ValaCodeContext* _tmp244_ = NULL;
-               gboolean _tmp245_ = FALSE;
-               ValaIfStatement* _tmp246_ = NULL;
+               ValaBinaryExpression* _tmp231_ = NULL;
+               ValaBlock* _tmp232_ = NULL;
+               ValaSourceReference* _tmp233_ = NULL;
+               ValaSourceReference* _tmp234_ = NULL;
+               ValaIfStatement* _tmp235_ = NULL;
+               ValaCodeContext* _tmp236_ = NULL;
+               ValaSemanticAnalyzer* _tmp237_ = NULL;
+               ValaSemanticAnalyzer* _tmp238_ = NULL;
+               ValaBlock* _tmp239_ = NULL;
+               ValaDeclarationStatement* _tmp240_ = NULL;
+               ValaCodeContext* _tmp241_ = NULL;
+               ValaSemanticAnalyzer* _tmp242_ = NULL;
+               ValaSemanticAnalyzer* _tmp243_ = NULL;
+               ValaBlock* _tmp244_ = NULL;
+               ValaIfStatement* _tmp245_ = NULL;
+               ValaDeclarationStatement* _tmp246_ = NULL;
                ValaCodeContext* _tmp247_ = NULL;
                gboolean _tmp248_ = FALSE;
+               ValaIfStatement* _tmp249_ = NULL;
+               ValaCodeContext* _tmp250_ = NULL;
+               gboolean _tmp251_ = FALSE;
                ValaExpression* temp_access = NULL;
-               ValaLocalVariable* _tmp249_ = NULL;
-               ValaDataType* _tmp250_ = NULL;
-               ValaDataType* _tmp251_ = NULL;
-               ValaExpression* _tmp252_ = NULL;
-               ValaExpression* _tmp253_ = NULL;
-               ValaCodeContext* _tmp254_ = NULL;
-               ValaCodeNode* _tmp255_ = NULL;
-               ValaCodeNode* _tmp256_ = NULL;
-               ValaExpression* _tmp257_ = NULL;
-               _tmp132_ = vala_binary_expression_get_left (self);
-               _tmp133_ = _tmp132_;
-               _tmp134_ = context;
-               _tmp135_ = vala_code_node_check ((ValaCodeNode*) _tmp133_, _tmp134_);
-               if (!_tmp135_) {
+               ValaLocalVariable* _tmp252_ = NULL;
+               ValaDataType* _tmp253_ = NULL;
+               ValaDataType* _tmp254_ = NULL;
+               ValaExpression* _tmp255_ = NULL;
+               ValaExpression* _tmp256_ = NULL;
+               ValaCodeContext* _tmp257_ = NULL;
+               ValaCodeNode* _tmp258_ = NULL;
+               ValaCodeNode* _tmp259_ = NULL;
+               ValaExpression* _tmp260_ = NULL;
+               _tmp135_ = vala_binary_expression_get_left (self);
+               _tmp136_ = _tmp135_;
+               _tmp137_ = context;
+               _tmp138_ = vala_code_node_check ((ValaCodeNode*) _tmp136_, _tmp137_);
+               if (!_tmp138_) {
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        result = FALSE;
                        return result;
                }
-               _tmp136_ = vala_binary_expression_get_right (self);
-               _tmp137_ = _tmp136_;
-               _tmp138_ = context;
-               _tmp139_ = vala_code_node_check ((ValaCodeNode*) _tmp137_, _tmp138_);
-               if (!_tmp139_) {
+               _tmp139_ = vala_binary_expression_get_right (self);
+               _tmp140_ = _tmp139_;
+               _tmp141_ = context;
+               _tmp142_ = vala_code_node_check ((ValaCodeNode*) _tmp140_, _tmp141_);
+               if (!_tmp142_) {
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        result = FALSE;
                        return result;
                }
                local_type = NULL;
-               _tmp140_ = vala_binary_expression_get_left (self);
-               _tmp141_ = _tmp140_;
-               _tmp142_ = vala_expression_get_value_type (_tmp141_);
-               _tmp143_ = _tmp142_;
-               if (_tmp143_ != NULL) {
-                       ValaExpression* _tmp144_ = NULL;
-                       ValaExpression* _tmp145_ = NULL;
-                       ValaDataType* _tmp146_ = NULL;
-                       ValaDataType* _tmp147_ = NULL;
-                       ValaDataType* _tmp148_ = NULL;
-                       gboolean _tmp149_ = FALSE;
-                       ValaExpression* _tmp150_ = NULL;
-                       ValaExpression* _tmp151_ = NULL;
-                       ValaDataType* _tmp152_ = NULL;
-                       ValaDataType* _tmp153_ = NULL;
-                       _tmp144_ = vala_binary_expression_get_left (self);
-                       _tmp145_ = _tmp144_;
-                       _tmp146_ = vala_expression_get_value_type (_tmp145_);
-                       _tmp147_ = _tmp146_;
-                       _tmp148_ = vala_data_type_copy (_tmp147_);
+               _tmp143_ = vala_binary_expression_get_left (self);
+               _tmp144_ = _tmp143_;
+               _tmp145_ = vala_expression_get_value_type (_tmp144_);
+               _tmp146_ = _tmp145_;
+               if (_tmp146_ != NULL) {
+                       ValaExpression* _tmp147_ = NULL;
+                       ValaExpression* _tmp148_ = NULL;
+                       ValaDataType* _tmp149_ = NULL;
+                       ValaDataType* _tmp150_ = NULL;
+                       ValaDataType* _tmp151_ = NULL;
+                       gboolean _tmp152_ = FALSE;
+                       ValaExpression* _tmp153_ = NULL;
+                       ValaExpression* _tmp154_ = NULL;
+                       ValaDataType* _tmp155_ = NULL;
+                       ValaDataType* _tmp156_ = NULL;
+                       _tmp147_ = vala_binary_expression_get_left (self);
+                       _tmp148_ = _tmp147_;
+                       _tmp149_ = vala_expression_get_value_type (_tmp148_);
+                       _tmp150_ = _tmp149_;
+                       _tmp151_ = vala_data_type_copy (_tmp150_);
                        _vala_code_node_unref0 (local_type);
-                       local_type = _tmp148_;
-                       _tmp150_ = vala_binary_expression_get_right (self);
-                       _tmp151_ = _tmp150_;
-                       _tmp152_ = vala_expression_get_value_type (_tmp151_);
-                       _tmp153_ = _tmp152_;
-                       if (_tmp153_ != NULL) {
-                               ValaExpression* _tmp154_ = NULL;
-                               ValaExpression* _tmp155_ = NULL;
-                               ValaDataType* _tmp156_ = NULL;
-                               ValaDataType* _tmp157_ = NULL;
-                               gboolean _tmp158_ = FALSE;
-                               gboolean _tmp159_ = FALSE;
-                               _tmp154_ = vala_binary_expression_get_right (self);
-                               _tmp155_ = _tmp154_;
-                               _tmp156_ = vala_expression_get_value_type (_tmp155_);
-                               _tmp157_ = _tmp156_;
-                               _tmp158_ = vala_data_type_get_value_owned (_tmp157_);
-                               _tmp159_ = _tmp158_;
-                               _tmp149_ = _tmp159_;
+                       local_type = _tmp151_;
+                       _tmp153_ = vala_binary_expression_get_right (self);
+                       _tmp154_ = _tmp153_;
+                       _tmp155_ = vala_expression_get_value_type (_tmp154_);
+                       _tmp156_ = _tmp155_;
+                       if (_tmp156_ != NULL) {
+                               ValaExpression* _tmp157_ = NULL;
+                               ValaExpression* _tmp158_ = NULL;
+                               ValaDataType* _tmp159_ = NULL;
+                               ValaDataType* _tmp160_ = NULL;
+                               gboolean _tmp161_ = FALSE;
+                               gboolean _tmp162_ = FALSE;
+                               _tmp157_ = vala_binary_expression_get_right (self);
+                               _tmp158_ = _tmp157_;
+                               _tmp159_ = vala_expression_get_value_type (_tmp158_);
+                               _tmp160_ = _tmp159_;
+                               _tmp161_ = vala_data_type_get_value_owned (_tmp160_);
+                               _tmp162_ = _tmp161_;
+                               _tmp152_ = _tmp162_;
                        } else {
-                               _tmp149_ = FALSE;
+                               _tmp152_ = FALSE;
                        }
-                       if (_tmp149_) {
-                               ValaDataType* _tmp160_ = NULL;
-                               _tmp160_ = local_type;
-                               vala_data_type_set_value_owned (_tmp160_, TRUE);
+                       if (_tmp152_) {
+                               ValaDataType* _tmp163_ = NULL;
+                               _tmp163_ = local_type;
+                               vala_data_type_set_value_owned (_tmp163_, TRUE);
                        }
                } else {
-                       ValaExpression* _tmp161_ = NULL;
-                       ValaExpression* _tmp162_ = NULL;
-                       ValaDataType* _tmp163_ = NULL;
-                       ValaDataType* _tmp164_ = NULL;
-                       _tmp161_ = vala_binary_expression_get_right (self);
-                       _tmp162_ = _tmp161_;
-                       _tmp163_ = vala_expression_get_value_type (_tmp162_);
-                       _tmp164_ = _tmp163_;
-                       if (_tmp164_ != NULL) {
-                               ValaExpression* _tmp165_ = NULL;
-                               ValaExpression* _tmp166_ = NULL;
-                               ValaDataType* _tmp167_ = NULL;
-                               ValaDataType* _tmp168_ = NULL;
-                               ValaDataType* _tmp169_ = NULL;
-                               _tmp165_ = vala_binary_expression_get_right (self);
-                               _tmp166_ = _tmp165_;
-                               _tmp167_ = vala_expression_get_value_type (_tmp166_);
-                               _tmp168_ = _tmp167_;
-                               _tmp169_ = vala_data_type_copy (_tmp168_);
+                       ValaExpression* _tmp164_ = NULL;
+                       ValaExpression* _tmp165_ = NULL;
+                       ValaDataType* _tmp166_ = NULL;
+                       ValaDataType* _tmp167_ = NULL;
+                       _tmp164_ = vala_binary_expression_get_right (self);
+                       _tmp165_ = _tmp164_;
+                       _tmp166_ = vala_expression_get_value_type (_tmp165_);
+                       _tmp167_ = _tmp166_;
+                       if (_tmp167_ != NULL) {
+                               ValaExpression* _tmp168_ = NULL;
+                               ValaExpression* _tmp169_ = NULL;
+                               ValaDataType* _tmp170_ = NULL;
+                               ValaDataType* _tmp171_ = NULL;
+                               ValaDataType* _tmp172_ = NULL;
+                               _tmp168_ = vala_binary_expression_get_right (self);
+                               _tmp169_ = _tmp168_;
+                               _tmp170_ = vala_expression_get_value_type (_tmp169_);
+                               _tmp171_ = _tmp170_;
+                               _tmp172_ = vala_data_type_copy (_tmp171_);
                                _vala_code_node_unref0 (local_type);
-                               local_type = _tmp169_;
+                               local_type = _tmp172_;
                        }
                }
-               _tmp170_ = local_type;
-               _tmp171_ = vala_code_node_get_temp_name ();
-               _tmp172_ = _tmp171_;
-               _tmp173_ = vala_binary_expression_get_left (self);
-               _tmp174_ = _tmp173_;
-               _tmp175_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-               _tmp176_ = _tmp175_;
-               _tmp177_ = vala_local_variable_new (_tmp170_, _tmp172_, _tmp174_, _tmp176_);
-               _tmp178_ = _tmp177_;
-               _g_free0 (_tmp172_);
-               local = _tmp178_;
-               _tmp179_ = local;
-               _tmp180_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp173_ = local_type;
+               _tmp174_ = vala_code_node_get_temp_name ();
+               _tmp175_ = _tmp174_;
+               _tmp176_ = vala_binary_expression_get_left (self);
+               _tmp177_ = _tmp176_;
+               _tmp178_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp179_ = _tmp178_;
+               _tmp180_ = vala_local_variable_new (_tmp173_, _tmp175_, _tmp177_, _tmp179_);
                _tmp181_ = _tmp180_;
-               _tmp182_ = vala_declaration_statement_new ((ValaSymbol*) _tmp179_, _tmp181_);
-               decl = _tmp182_;
-               _tmp183_ = local;
-               _tmp184_ = vala_symbol_get_name ((ValaSymbol*) _tmp183_);
-               _tmp185_ = _tmp184_;
-               _tmp186_ = vala_binary_expression_get_right (self);
-               _tmp187_ = _tmp186_;
-               _tmp188_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp187_);
-               _tmp189_ = _tmp188_;
-               _tmp190_ = vala_member_access_new_simple (_tmp185_, _tmp189_);
-               _tmp191_ = _tmp190_;
-               _tmp192_ = vala_binary_expression_get_right (self);
-               _tmp193_ = _tmp192_;
-               _tmp194_ = vala_binary_expression_get_right (self);
-               _tmp195_ = _tmp194_;
-               _tmp196_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp195_);
-               _tmp197_ = _tmp196_;
-               _tmp198_ = vala_assignment_new ((ValaExpression*) _tmp191_, _tmp193_, VALA_ASSIGNMENT_OPERATOR_SIMPLE, _tmp197_);
-               _tmp199_ = _tmp198_;
-               _tmp200_ = vala_binary_expression_get_right (self);
-               _tmp201_ = _tmp200_;
-               _tmp202_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp201_);
-               _tmp203_ = _tmp202_;
-               _tmp204_ = vala_expression_statement_new ((ValaExpression*) _tmp199_, _tmp203_);
-               _tmp205_ = _tmp204_;
-               _vala_code_node_unref0 (_tmp199_);
-               _vala_code_node_unref0 (_tmp191_);
-               right_stmt = _tmp205_;
-               _tmp206_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-               _tmp207_ = _tmp206_;
-               _tmp208_ = vala_block_new (_tmp207_);
-               true_block = _tmp208_;
-               _tmp209_ = true_block;
-               _tmp210_ = right_stmt;
-               vala_block_add_statement (_tmp209_, (ValaStatement*) _tmp210_);
-               _tmp211_ = local;
-               _tmp212_ = vala_symbol_get_name ((ValaSymbol*) _tmp211_);
-               _tmp213_ = _tmp212_;
-               _tmp214_ = vala_binary_expression_get_left (self);
-               _tmp215_ = _tmp214_;
-               _tmp216_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp215_);
-               _tmp217_ = _tmp216_;
-               _tmp218_ = vala_member_access_new_simple (_tmp213_, _tmp217_);
-               _tmp219_ = _tmp218_;
-               _tmp220_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-               _tmp221_ = _tmp220_;
-               _tmp222_ = vala_null_literal_new (_tmp221_);
-               _tmp223_ = _tmp222_;
-               _tmp224_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-               _tmp225_ = _tmp224_;
-               _tmp226_ = vala_binary_expression_new (VALA_BINARY_OPERATOR_EQUALITY, (ValaExpression*) _tmp219_, (ValaExpression*) _tmp223_, _tmp225_);
-               _tmp227_ = _tmp226_;
-               _vala_code_node_unref0 (_tmp223_);
-               _vala_code_node_unref0 (_tmp219_);
-               cond = _tmp227_;
-               _tmp228_ = cond;
-               _tmp229_ = true_block;
-               _tmp230_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-               _tmp231_ = _tmp230_;
-               _tmp232_ = vala_if_statement_new ((ValaExpression*) _tmp228_, _tmp229_, NULL, _tmp231_);
-               if_stmt = _tmp232_;
-               _tmp233_ = context;
-               _tmp234_ = vala_code_context_get_analyzer (_tmp233_);
-               _tmp235_ = _tmp234_;
-               _tmp236_ = _tmp235_->insert_block;
-               _tmp237_ = decl;
-               vala_expression_insert_statement ((ValaExpression*) self, _tmp236_, (ValaStatement*) _tmp237_);
-               _tmp238_ = context;
-               _tmp239_ = vala_code_context_get_analyzer (_tmp238_);
-               _tmp240_ = _tmp239_;
-               _tmp241_ = _tmp240_->insert_block;
-               _tmp242_ = if_stmt;
-               vala_expression_insert_statement ((ValaExpression*) self, _tmp241_, (ValaStatement*) _tmp242_);
-               _tmp243_ = decl;
-               _tmp244_ = context;
-               _tmp245_ = vala_code_node_check ((ValaCodeNode*) _tmp243_, _tmp244_);
-               if (!_tmp245_) {
+               _g_free0 (_tmp175_);
+               local = _tmp181_;
+               _tmp182_ = local;
+               _tmp183_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp184_ = _tmp183_;
+               _tmp185_ = vala_declaration_statement_new ((ValaSymbol*) _tmp182_, _tmp184_);
+               decl = _tmp185_;
+               _tmp186_ = local;
+               _tmp187_ = vala_symbol_get_name ((ValaSymbol*) _tmp186_);
+               _tmp188_ = _tmp187_;
+               _tmp189_ = vala_binary_expression_get_right (self);
+               _tmp190_ = _tmp189_;
+               _tmp191_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp190_);
+               _tmp192_ = _tmp191_;
+               _tmp193_ = vala_member_access_new_simple (_tmp188_, _tmp192_);
+               _tmp194_ = _tmp193_;
+               _tmp195_ = vala_binary_expression_get_right (self);
+               _tmp196_ = _tmp195_;
+               _tmp197_ = vala_binary_expression_get_right (self);
+               _tmp198_ = _tmp197_;
+               _tmp199_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp198_);
+               _tmp200_ = _tmp199_;
+               _tmp201_ = vala_assignment_new ((ValaExpression*) _tmp194_, _tmp196_, VALA_ASSIGNMENT_OPERATOR_SIMPLE, _tmp200_);
+               _tmp202_ = _tmp201_;
+               _tmp203_ = vala_binary_expression_get_right (self);
+               _tmp204_ = _tmp203_;
+               _tmp205_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp204_);
+               _tmp206_ = _tmp205_;
+               _tmp207_ = vala_expression_statement_new ((ValaExpression*) _tmp202_, _tmp206_);
+               _tmp208_ = _tmp207_;
+               _vala_code_node_unref0 (_tmp202_);
+               _vala_code_node_unref0 (_tmp194_);
+               right_stmt = _tmp208_;
+               _tmp209_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp210_ = _tmp209_;
+               _tmp211_ = vala_block_new (_tmp210_);
+               true_block = _tmp211_;
+               _tmp212_ = true_block;
+               _tmp213_ = right_stmt;
+               vala_block_add_statement (_tmp212_, (ValaStatement*) _tmp213_);
+               _tmp214_ = local;
+               _tmp215_ = vala_symbol_get_name ((ValaSymbol*) _tmp214_);
+               _tmp216_ = _tmp215_;
+               _tmp217_ = vala_binary_expression_get_left (self);
+               _tmp218_ = _tmp217_;
+               _tmp219_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp218_);
+               _tmp220_ = _tmp219_;
+               _tmp221_ = vala_member_access_new_simple (_tmp216_, _tmp220_);
+               _tmp222_ = _tmp221_;
+               _tmp223_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp224_ = _tmp223_;
+               _tmp225_ = vala_null_literal_new (_tmp224_);
+               _tmp226_ = _tmp225_;
+               _tmp227_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp228_ = _tmp227_;
+               _tmp229_ = vala_binary_expression_new (VALA_BINARY_OPERATOR_EQUALITY, (ValaExpression*) _tmp222_, (ValaExpression*) _tmp226_, _tmp228_);
+               _tmp230_ = _tmp229_;
+               _vala_code_node_unref0 (_tmp226_);
+               _vala_code_node_unref0 (_tmp222_);
+               cond = _tmp230_;
+               _tmp231_ = cond;
+               _tmp232_ = true_block;
+               _tmp233_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp234_ = _tmp233_;
+               _tmp235_ = vala_if_statement_new ((ValaExpression*) _tmp231_, _tmp232_, NULL, _tmp234_);
+               if_stmt = _tmp235_;
+               _tmp236_ = context;
+               _tmp237_ = vala_code_context_get_analyzer (_tmp236_);
+               _tmp238_ = _tmp237_;
+               _tmp239_ = _tmp238_->insert_block;
+               _tmp240_ = decl;
+               vala_expression_insert_statement ((ValaExpression*) self, _tmp239_, (ValaStatement*) _tmp240_);
+               _tmp241_ = context;
+               _tmp242_ = vala_code_context_get_analyzer (_tmp241_);
+               _tmp243_ = _tmp242_;
+               _tmp244_ = _tmp243_->insert_block;
+               _tmp245_ = if_stmt;
+               vala_expression_insert_statement ((ValaExpression*) self, _tmp244_, (ValaStatement*) _tmp245_);
+               _tmp246_ = decl;
+               _tmp247_ = context;
+               _tmp248_ = vala_code_node_check ((ValaCodeNode*) _tmp246_, _tmp247_);
+               if (!_tmp248_) {
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        result = FALSE;
                        _vala_code_node_unref0 (if_stmt);
@@ -2589,10 +2598,10 @@ static gboolean vala_binary_expression_real_check (ValaCodeNode* base, ValaCodeC
                        _vala_code_node_unref0 (local_type);
                        return result;
                }
-               _tmp246_ = if_stmt;
-               _tmp247_ = context;
-               _tmp248_ = vala_code_node_check ((ValaCodeNode*) _tmp246_, _tmp247_);
-               if (!_tmp248_) {
+               _tmp249_ = if_stmt;
+               _tmp250_ = context;
+               _tmp251_ = vala_code_node_check ((ValaCodeNode*) _tmp249_, _tmp250_);
+               if (!_tmp251_) {
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        result = FALSE;
                        _vala_code_node_unref0 (if_stmt);
@@ -2604,18 +2613,18 @@ static gboolean vala_binary_expression_real_check (ValaCodeNode* base, ValaCodeC
                        _vala_code_node_unref0 (local_type);
                        return result;
                }
-               _tmp249_ = local;
-               _tmp250_ = vala_expression_get_target_type ((ValaExpression*) self);
-               _tmp251_ = _tmp250_;
-               _tmp252_ = vala_semantic_analyzer_create_temp_access (_tmp249_, _tmp251_);
-               temp_access = _tmp252_;
-               _tmp253_ = temp_access;
-               _tmp254_ = context;
-               vala_code_node_check ((ValaCodeNode*) _tmp253_, _tmp254_);
-               _tmp255_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
-               _tmp256_ = _tmp255_;
-               _tmp257_ = temp_access;
-               vala_code_node_replace_expression (_tmp256_, (ValaExpression*) self, _tmp257_);
+               _tmp252_ = local;
+               _tmp253_ = vala_expression_get_target_type ((ValaExpression*) self);
+               _tmp254_ = _tmp253_;
+               _tmp255_ = vala_semantic_analyzer_create_temp_access (_tmp252_, _tmp254_);
+               temp_access = _tmp255_;
+               _tmp256_ = temp_access;
+               _tmp257_ = context;
+               vala_code_node_check ((ValaCodeNode*) _tmp256_, _tmp257_);
+               _tmp258_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
+               _tmp259_ = _tmp258_;
+               _tmp260_ = temp_access;
+               vala_code_node_replace_expression (_tmp259_, (ValaExpression*) self, _tmp260_);
                result = TRUE;
                _vala_code_node_unref0 (temp_access);
                _vala_code_node_unref0 (if_stmt);
@@ -2627,1719 +2636,1690 @@ static gboolean vala_binary_expression_real_check (ValaCodeNode* base, ValaCodeC
                _vala_code_node_unref0 (local_type);
                return result;
        }
-       _tmp259_ = vala_binary_expression_get_left (self);
-       _tmp260_ = _tmp259_;
-       _tmp261_ = context;
-       _tmp262_ = vala_code_node_check ((ValaCodeNode*) _tmp260_, _tmp261_);
-       if (!_tmp262_) {
-               _tmp258_ = TRUE;
+       _tmp262_ = vala_binary_expression_get_left (self);
+       _tmp263_ = _tmp262_;
+       _tmp264_ = context;
+       _tmp265_ = vala_code_node_check ((ValaCodeNode*) _tmp263_, _tmp264_);
+       if (!_tmp265_) {
+               _tmp261_ = TRUE;
        } else {
-               ValaExpression* _tmp263_ = NULL;
-               ValaExpression* _tmp264_ = NULL;
-               ValaCodeContext* _tmp265_ = NULL;
-               gboolean _tmp266_ = FALSE;
-               _tmp263_ = vala_binary_expression_get_right (self);
-               _tmp264_ = _tmp263_;
-               _tmp265_ = context;
-               _tmp266_ = vala_code_node_check ((ValaCodeNode*) _tmp264_, _tmp265_);
-               _tmp258_ = !_tmp266_;
+               ValaExpression* _tmp266_ = NULL;
+               ValaExpression* _tmp267_ = NULL;
+               ValaCodeContext* _tmp268_ = NULL;
+               gboolean _tmp269_ = FALSE;
+               _tmp266_ = vala_binary_expression_get_right (self);
+               _tmp267_ = _tmp266_;
+               _tmp268_ = context;
+               _tmp269_ = vala_code_node_check ((ValaCodeNode*) _tmp267_, _tmp268_);
+               _tmp261_ = !_tmp269_;
        }
-       if (_tmp258_) {
+       if (_tmp261_) {
                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                result = FALSE;
                return result;
        }
-       _tmp267_ = vala_binary_expression_get_left (self);
-       _tmp268_ = _tmp267_;
-       _tmp269_ = vala_expression_get_value_type (_tmp268_);
-       _tmp270_ = _tmp269_;
-       if (_tmp270_ == NULL) {
-               ValaExpression* _tmp271_ = NULL;
-               ValaExpression* _tmp272_ = NULL;
-               ValaSourceReference* _tmp273_ = NULL;
-               ValaSourceReference* _tmp274_ = NULL;
-               _tmp271_ = vala_binary_expression_get_left (self);
-               _tmp272_ = _tmp271_;
-               _tmp273_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp272_);
-               _tmp274_ = _tmp273_;
-               vala_report_error (_tmp274_, "invalid left operand");
+       _tmp270_ = vala_binary_expression_get_left (self);
+       _tmp271_ = _tmp270_;
+       _tmp272_ = vala_expression_get_value_type (_tmp271_);
+       _tmp273_ = _tmp272_;
+       if (_tmp273_ == NULL) {
+               ValaExpression* _tmp274_ = NULL;
+               ValaExpression* _tmp275_ = NULL;
+               ValaSourceReference* _tmp276_ = NULL;
+               ValaSourceReference* _tmp277_ = NULL;
+               _tmp274_ = vala_binary_expression_get_left (self);
+               _tmp275_ = _tmp274_;
+               _tmp276_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp275_);
+               _tmp277_ = _tmp276_;
+               vala_report_error (_tmp277_, "invalid left operand");
                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                result = FALSE;
                return result;
        }
-       _tmp276_ = self->priv->_operator;
-       if (_tmp276_ != VALA_BINARY_OPERATOR_IN) {
-               ValaExpression* _tmp277_ = NULL;
-               ValaExpression* _tmp278_ = NULL;
-               ValaDataType* _tmp279_ = NULL;
-               ValaDataType* _tmp280_ = NULL;
-               _tmp277_ = vala_binary_expression_get_right (self);
-               _tmp278_ = _tmp277_;
-               _tmp279_ = vala_expression_get_value_type (_tmp278_);
-               _tmp280_ = _tmp279_;
-               _tmp275_ = _tmp280_ == NULL;
+       _tmp279_ = self->priv->_operator;
+       if (_tmp279_ != VALA_BINARY_OPERATOR_IN) {
+               ValaExpression* _tmp280_ = NULL;
+               ValaExpression* _tmp281_ = NULL;
+               ValaDataType* _tmp282_ = NULL;
+               ValaDataType* _tmp283_ = NULL;
+               _tmp280_ = vala_binary_expression_get_right (self);
+               _tmp281_ = _tmp280_;
+               _tmp282_ = vala_expression_get_value_type (_tmp281_);
+               _tmp283_ = _tmp282_;
+               _tmp278_ = _tmp283_ == NULL;
        } else {
-               _tmp275_ = FALSE;
+               _tmp278_ = FALSE;
        }
-       if (_tmp275_) {
-               ValaExpression* _tmp281_ = NULL;
-               ValaExpression* _tmp282_ = NULL;
-               ValaSourceReference* _tmp283_ = NULL;
-               ValaSourceReference* _tmp284_ = NULL;
-               _tmp281_ = vala_binary_expression_get_right (self);
-               _tmp282_ = _tmp281_;
-               _tmp283_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp282_);
-               _tmp284_ = _tmp283_;
-               vala_report_error (_tmp284_, "invalid right operand");
+       if (_tmp278_) {
+               ValaExpression* _tmp284_ = NULL;
+               ValaExpression* _tmp285_ = NULL;
+               ValaSourceReference* _tmp286_ = NULL;
+               ValaSourceReference* _tmp287_ = NULL;
+               _tmp284_ = vala_binary_expression_get_right (self);
+               _tmp285_ = _tmp284_;
+               _tmp286_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp285_);
+               _tmp287_ = _tmp286_;
+               vala_report_error (_tmp287_, "invalid right operand");
                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                result = FALSE;
                return result;
        }
-       _tmp285_ = vala_binary_expression_get_left (self);
-       _tmp286_ = _tmp285_;
-       _tmp287_ = vala_expression_get_value_type (_tmp286_);
-       _tmp288_ = _tmp287_;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp288_, VALA_TYPE_FIELD_PROTOTYPE)) {
-               ValaExpression* _tmp289_ = NULL;
-               ValaExpression* _tmp290_ = NULL;
-               ValaSourceReference* _tmp291_ = NULL;
-               ValaSourceReference* _tmp292_ = NULL;
+       _tmp288_ = vala_binary_expression_get_left (self);
+       _tmp289_ = _tmp288_;
+       _tmp290_ = vala_expression_get_value_type (_tmp289_);
+       _tmp291_ = _tmp290_;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp291_, VALA_TYPE_FIELD_PROTOTYPE)) {
+               ValaExpression* _tmp292_ = NULL;
                ValaExpression* _tmp293_ = NULL;
-               ValaExpression* _tmp294_ = NULL;
-               ValaSymbol* _tmp295_ = NULL;
-               ValaSymbol* _tmp296_ = NULL;
-               gchar* _tmp297_ = NULL;
-               gchar* _tmp298_ = NULL;
-               gchar* _tmp299_ = NULL;
+               ValaSourceReference* _tmp294_ = NULL;
+               ValaSourceReference* _tmp295_ = NULL;
+               ValaExpression* _tmp296_ = NULL;
+               ValaExpression* _tmp297_ = NULL;
+               ValaSymbol* _tmp298_ = NULL;
+               ValaSymbol* _tmp299_ = NULL;
                gchar* _tmp300_ = NULL;
+               gchar* _tmp301_ = NULL;
+               gchar* _tmp302_ = NULL;
+               gchar* _tmp303_ = NULL;
                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-               _tmp289_ = vala_binary_expression_get_left (self);
-               _tmp290_ = _tmp289_;
-               _tmp291_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp290_);
-               _tmp292_ = _tmp291_;
-               _tmp293_ = vala_binary_expression_get_left (self);
-               _tmp294_ = _tmp293_;
-               _tmp295_ = vala_expression_get_symbol_reference (_tmp294_);
-               _tmp296_ = _tmp295_;
-               _tmp297_ = vala_symbol_get_full_name (_tmp296_);
-               _tmp298_ = _tmp297_;
-               _tmp299_ = g_strdup_printf ("Access to instance member `%s' denied", _tmp298_);
-               _tmp300_ = _tmp299_;
-               vala_report_error (_tmp292_, _tmp300_);
-               _g_free0 (_tmp300_);
-               _g_free0 (_tmp298_);
+               _tmp292_ = vala_binary_expression_get_left (self);
+               _tmp293_ = _tmp292_;
+               _tmp294_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp293_);
+               _tmp295_ = _tmp294_;
+               _tmp296_ = vala_binary_expression_get_left (self);
+               _tmp297_ = _tmp296_;
+               _tmp298_ = vala_expression_get_symbol_reference (_tmp297_);
+               _tmp299_ = _tmp298_;
+               _tmp300_ = vala_symbol_get_full_name (_tmp299_);
+               _tmp301_ = _tmp300_;
+               _tmp302_ = g_strdup_printf ("Access to instance member `%s' denied", _tmp301_);
+               _tmp303_ = _tmp302_;
+               vala_report_error (_tmp295_, _tmp303_);
+               _g_free0 (_tmp303_);
+               _g_free0 (_tmp301_);
                result = FALSE;
                return result;
        }
-       _tmp301_ = vala_binary_expression_get_right (self);
-       _tmp302_ = _tmp301_;
-       _tmp303_ = vala_expression_get_value_type (_tmp302_);
-       _tmp304_ = _tmp303_;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp304_, VALA_TYPE_FIELD_PROTOTYPE)) {
-               ValaExpression* _tmp305_ = NULL;
-               ValaExpression* _tmp306_ = NULL;
-               ValaSourceReference* _tmp307_ = NULL;
-               ValaSourceReference* _tmp308_ = NULL;
+       _tmp304_ = vala_binary_expression_get_right (self);
+       _tmp305_ = _tmp304_;
+       _tmp306_ = vala_expression_get_value_type (_tmp305_);
+       _tmp307_ = _tmp306_;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp307_, VALA_TYPE_FIELD_PROTOTYPE)) {
+               ValaExpression* _tmp308_ = NULL;
                ValaExpression* _tmp309_ = NULL;
-               ValaExpression* _tmp310_ = NULL;
-               ValaSymbol* _tmp311_ = NULL;
-               ValaSymbol* _tmp312_ = NULL;
-               gchar* _tmp313_ = NULL;
-               gchar* _tmp314_ = NULL;
-               gchar* _tmp315_ = NULL;
+               ValaSourceReference* _tmp310_ = NULL;
+               ValaSourceReference* _tmp311_ = NULL;
+               ValaExpression* _tmp312_ = NULL;
+               ValaExpression* _tmp313_ = NULL;
+               ValaSymbol* _tmp314_ = NULL;
+               ValaSymbol* _tmp315_ = NULL;
                gchar* _tmp316_ = NULL;
+               gchar* _tmp317_ = NULL;
+               gchar* _tmp318_ = NULL;
+               gchar* _tmp319_ = NULL;
                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-               _tmp305_ = vala_binary_expression_get_right (self);
-               _tmp306_ = _tmp305_;
-               _tmp307_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp306_);
-               _tmp308_ = _tmp307_;
-               _tmp309_ = vala_binary_expression_get_right (self);
-               _tmp310_ = _tmp309_;
-               _tmp311_ = vala_expression_get_symbol_reference (_tmp310_);
-               _tmp312_ = _tmp311_;
-               _tmp313_ = vala_symbol_get_full_name (_tmp312_);
-               _tmp314_ = _tmp313_;
-               _tmp315_ = g_strdup_printf ("Access to instance member `%s' denied", _tmp314_);
-               _tmp316_ = _tmp315_;
-               vala_report_error (_tmp308_, _tmp316_);
-               _g_free0 (_tmp316_);
-               _g_free0 (_tmp314_);
+               _tmp308_ = vala_binary_expression_get_right (self);
+               _tmp309_ = _tmp308_;
+               _tmp310_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp309_);
+               _tmp311_ = _tmp310_;
+               _tmp312_ = vala_binary_expression_get_right (self);
+               _tmp313_ = _tmp312_;
+               _tmp314_ = vala_expression_get_symbol_reference (_tmp313_);
+               _tmp315_ = _tmp314_;
+               _tmp316_ = vala_symbol_get_full_name (_tmp315_);
+               _tmp317_ = _tmp316_;
+               _tmp318_ = g_strdup_printf ("Access to instance member `%s' denied", _tmp317_);
+               _tmp319_ = _tmp318_;
+               vala_report_error (_tmp311_, _tmp319_);
+               _g_free0 (_tmp319_);
+               _g_free0 (_tmp317_);
                result = FALSE;
                return result;
        }
-       _tmp317_ = vala_binary_expression_get_left (self);
-       _tmp318_ = _tmp317_;
-       _tmp319_ = vala_binary_expression_get_left (self);
-       _tmp320_ = _tmp319_;
-       _tmp321_ = vala_expression_get_value_type (_tmp320_);
-       _tmp322_ = _tmp321_;
-       _tmp323_ = vala_data_type_copy (_tmp322_);
-       _tmp324_ = _tmp323_;
-       vala_expression_set_target_type (_tmp318_, _tmp324_);
-       _vala_code_node_unref0 (_tmp324_);
-       _tmp325_ = vala_binary_expression_get_left (self);
-       _tmp326_ = _tmp325_;
-       _tmp327_ = vala_expression_get_target_type (_tmp326_);
-       _tmp328_ = _tmp327_;
-       vala_data_type_set_value_owned (_tmp328_, FALSE);
-       _tmp329_ = vala_binary_expression_get_right (self);
-       _tmp330_ = _tmp329_;
-       _tmp331_ = vala_binary_expression_get_right (self);
-       _tmp332_ = _tmp331_;
-       _tmp333_ = vala_expression_get_value_type (_tmp332_);
-       _tmp334_ = _tmp333_;
-       _tmp335_ = vala_data_type_copy (_tmp334_);
-       _tmp336_ = _tmp335_;
-       vala_expression_set_target_type (_tmp330_, _tmp336_);
-       _vala_code_node_unref0 (_tmp336_);
-       _tmp337_ = vala_binary_expression_get_right (self);
-       _tmp338_ = _tmp337_;
-       _tmp339_ = vala_expression_get_target_type (_tmp338_);
-       _tmp340_ = _tmp339_;
-       vala_data_type_set_value_owned (_tmp340_, FALSE);
-       _tmp342_ = vala_binary_expression_get_left (self);
+       _tmp320_ = vala_binary_expression_get_left (self);
+       _tmp321_ = _tmp320_;
+       _tmp322_ = vala_binary_expression_get_left (self);
+       _tmp323_ = _tmp322_;
+       _tmp324_ = vala_expression_get_value_type (_tmp323_);
+       _tmp325_ = _tmp324_;
+       _tmp326_ = vala_data_type_copy (_tmp325_);
+       _tmp327_ = _tmp326_;
+       vala_expression_set_target_type (_tmp321_, _tmp327_);
+       _vala_code_node_unref0 (_tmp327_);
+       _tmp328_ = vala_binary_expression_get_left (self);
+       _tmp329_ = _tmp328_;
+       _tmp330_ = vala_expression_get_target_type (_tmp329_);
+       _tmp331_ = _tmp330_;
+       vala_data_type_set_value_owned (_tmp331_, FALSE);
+       _tmp332_ = vala_binary_expression_get_right (self);
+       _tmp333_ = _tmp332_;
+       _tmp334_ = vala_binary_expression_get_right (self);
+       _tmp335_ = _tmp334_;
+       _tmp336_ = vala_expression_get_value_type (_tmp335_);
+       _tmp337_ = _tmp336_;
+       _tmp338_ = vala_data_type_copy (_tmp337_);
+       _tmp339_ = _tmp338_;
+       vala_expression_set_target_type (_tmp333_, _tmp339_);
+       _vala_code_node_unref0 (_tmp339_);
+       _tmp340_ = vala_binary_expression_get_right (self);
+       _tmp341_ = _tmp340_;
+       _tmp342_ = vala_expression_get_target_type (_tmp341_);
        _tmp343_ = _tmp342_;
-       _tmp344_ = vala_expression_get_value_type (_tmp343_);
-       _tmp345_ = _tmp344_;
-       _tmp346_ = vala_data_type_get_data_type (_tmp345_);
-       _tmp347_ = _tmp346_;
-       _tmp348_ = context;
-       _tmp349_ = vala_code_context_get_analyzer (_tmp348_);
+       vala_data_type_set_value_owned (_tmp343_, FALSE);
+       _tmp345_ = vala_binary_expression_get_left (self);
+       _tmp346_ = _tmp345_;
+       _tmp347_ = vala_expression_get_value_type (_tmp346_);
+       _tmp348_ = _tmp347_;
+       _tmp349_ = vala_data_type_get_data_type (_tmp348_);
        _tmp350_ = _tmp349_;
-       _tmp351_ = _tmp350_->string_type;
-       _tmp352_ = vala_data_type_get_data_type (_tmp351_);
+       _tmp351_ = context;
+       _tmp352_ = vala_code_context_get_analyzer (_tmp351_);
        _tmp353_ = _tmp352_;
-       if (_tmp347_ == _tmp353_) {
-               ValaBinaryOperator _tmp354_ = 0;
-               _tmp354_ = self->priv->_operator;
-               _tmp341_ = _tmp354_ == VALA_BINARY_OPERATOR_PLUS;
+       _tmp354_ = _tmp353_->string_type;
+       _tmp355_ = vala_data_type_get_data_type (_tmp354_);
+       _tmp356_ = _tmp355_;
+       if (_tmp350_ == _tmp356_) {
+               ValaBinaryOperator _tmp357_ = 0;
+               _tmp357_ = self->priv->_operator;
+               _tmp344_ = _tmp357_ == VALA_BINARY_OPERATOR_PLUS;
        } else {
-               _tmp341_ = FALSE;
+               _tmp344_ = FALSE;
        }
-       if (_tmp341_) {
-               gboolean _tmp355_ = FALSE;
-               ValaExpression* _tmp356_ = NULL;
-               ValaExpression* _tmp357_ = NULL;
-               ValaDataType* _tmp358_ = NULL;
-               ValaDataType* _tmp359_ = NULL;
-               ValaCodeContext* _tmp374_ = NULL;
-               ValaSemanticAnalyzer* _tmp375_ = NULL;
-               ValaSemanticAnalyzer* _tmp376_ = NULL;
-               ValaDataType* _tmp377_ = NULL;
-               ValaDataType* _tmp378_ = NULL;
-               ValaDataType* _tmp379_ = NULL;
-               gboolean _tmp380_ = FALSE;
-               ValaExpression* _tmp381_ = NULL;
-               ValaExpression* _tmp382_ = NULL;
+       if (_tmp344_) {
+               gboolean _tmp358_ = FALSE;
+               ValaExpression* _tmp359_ = NULL;
+               ValaExpression* _tmp360_ = NULL;
+               ValaDataType* _tmp361_ = NULL;
+               ValaDataType* _tmp362_ = NULL;
+               ValaCodeContext* _tmp377_ = NULL;
+               ValaSemanticAnalyzer* _tmp378_ = NULL;
+               ValaSemanticAnalyzer* _tmp379_ = NULL;
+               ValaDataType* _tmp380_ = NULL;
+               ValaDataType* _tmp381_ = NULL;
+               ValaDataType* _tmp382_ = NULL;
                gboolean _tmp383_ = FALSE;
-               _tmp356_ = vala_binary_expression_get_right (self);
-               _tmp357_ = _tmp356_;
-               _tmp358_ = vala_expression_get_value_type (_tmp357_);
-               _tmp359_ = _tmp358_;
-               if (_tmp359_ == NULL) {
-                       _tmp355_ = TRUE;
+               ValaExpression* _tmp384_ = NULL;
+               ValaExpression* _tmp385_ = NULL;
+               gboolean _tmp386_ = FALSE;
+               _tmp359_ = vala_binary_expression_get_right (self);
+               _tmp360_ = _tmp359_;
+               _tmp361_ = vala_expression_get_value_type (_tmp360_);
+               _tmp362_ = _tmp361_;
+               if (_tmp362_ == NULL) {
+                       _tmp358_ = TRUE;
                } else {
-                       ValaExpression* _tmp360_ = NULL;
-                       ValaExpression* _tmp361_ = NULL;
-                       ValaDataType* _tmp362_ = NULL;
-                       ValaDataType* _tmp363_ = NULL;
-                       ValaTypeSymbol* _tmp364_ = NULL;
-                       ValaTypeSymbol* _tmp365_ = NULL;
-                       ValaCodeContext* _tmp366_ = NULL;
-                       ValaSemanticAnalyzer* _tmp367_ = NULL;
-                       ValaSemanticAnalyzer* _tmp368_ = NULL;
-                       ValaDataType* _tmp369_ = NULL;
-                       ValaTypeSymbol* _tmp370_ = NULL;
-                       ValaTypeSymbol* _tmp371_ = NULL;
-                       _tmp360_ = vala_binary_expression_get_right (self);
-                       _tmp361_ = _tmp360_;
-                       _tmp362_ = vala_expression_get_value_type (_tmp361_);
-                       _tmp363_ = _tmp362_;
-                       _tmp364_ = vala_data_type_get_data_type (_tmp363_);
-                       _tmp365_ = _tmp364_;
-                       _tmp366_ = context;
-                       _tmp367_ = vala_code_context_get_analyzer (_tmp366_);
+                       ValaExpression* _tmp363_ = NULL;
+                       ValaExpression* _tmp364_ = NULL;
+                       ValaDataType* _tmp365_ = NULL;
+                       ValaDataType* _tmp366_ = NULL;
+                       ValaTypeSymbol* _tmp367_ = NULL;
+                       ValaTypeSymbol* _tmp368_ = NULL;
+                       ValaCodeContext* _tmp369_ = NULL;
+                       ValaSemanticAnalyzer* _tmp370_ = NULL;
+                       ValaSemanticAnalyzer* _tmp371_ = NULL;
+                       ValaDataType* _tmp372_ = NULL;
+                       ValaTypeSymbol* _tmp373_ = NULL;
+                       ValaTypeSymbol* _tmp374_ = NULL;
+                       _tmp363_ = vala_binary_expression_get_right (self);
+                       _tmp364_ = _tmp363_;
+                       _tmp365_ = vala_expression_get_value_type (_tmp364_);
+                       _tmp366_ = _tmp365_;
+                       _tmp367_ = vala_data_type_get_data_type (_tmp366_);
                        _tmp368_ = _tmp367_;
-                       _tmp369_ = _tmp368_->string_type;
-                       _tmp370_ = vala_data_type_get_data_type (_tmp369_);
+                       _tmp369_ = context;
+                       _tmp370_ = vala_code_context_get_analyzer (_tmp369_);
                        _tmp371_ = _tmp370_;
-                       _tmp355_ = _tmp365_ != _tmp371_;
+                       _tmp372_ = _tmp371_->string_type;
+                       _tmp373_ = vala_data_type_get_data_type (_tmp372_);
+                       _tmp374_ = _tmp373_;
+                       _tmp358_ = _tmp368_ != _tmp374_;
                }
-               if (_tmp355_) {
-                       ValaSourceReference* _tmp372_ = NULL;
-                       ValaSourceReference* _tmp373_ = NULL;
+               if (_tmp358_) {
+                       ValaSourceReference* _tmp375_ = NULL;
+                       ValaSourceReference* _tmp376_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                       _tmp372_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                       _tmp373_ = _tmp372_;
-                       vala_report_error (_tmp373_, "Operands must be strings");
+                       _tmp375_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                       _tmp376_ = _tmp375_;
+                       vala_report_error (_tmp376_, "Operands must be strings");
                        result = FALSE;
                        return result;
                }
-               _tmp374_ = context;
-               _tmp375_ = vala_code_context_get_analyzer (_tmp374_);
-               _tmp376_ = _tmp375_;
-               _tmp377_ = _tmp376_->string_type;
-               _tmp378_ = vala_data_type_copy (_tmp377_);
+               _tmp377_ = context;
+               _tmp378_ = vala_code_context_get_analyzer (_tmp377_);
                _tmp379_ = _tmp378_;
-               vala_expression_set_value_type ((ValaExpression*) self, _tmp379_);
-               _vala_code_node_unref0 (_tmp379_);
-               _tmp381_ = vala_binary_expression_get_left (self);
+               _tmp380_ = _tmp379_->string_type;
+               _tmp381_ = vala_data_type_copy (_tmp380_);
                _tmp382_ = _tmp381_;
-               _tmp383_ = vala_expression_is_constant (_tmp382_);
-               if (_tmp383_) {
-                       ValaExpression* _tmp384_ = NULL;
-                       ValaExpression* _tmp385_ = NULL;
-                       gboolean _tmp386_ = FALSE;
-                       _tmp384_ = vala_binary_expression_get_right (self);
-                       _tmp385_ = _tmp384_;
-                       _tmp386_ = vala_expression_is_constant (_tmp385_);
-                       _tmp380_ = _tmp386_;
-               } else {
-                       _tmp380_ = FALSE;
-               }
-               if (_tmp380_) {
-                       ValaDataType* _tmp387_ = NULL;
-                       ValaDataType* _tmp388_ = NULL;
-                       _tmp387_ = vala_expression_get_value_type ((ValaExpression*) self);
+               vala_expression_set_value_type ((ValaExpression*) self, _tmp382_);
+               _vala_code_node_unref0 (_tmp382_);
+               _tmp384_ = vala_binary_expression_get_left (self);
+               _tmp385_ = _tmp384_;
+               _tmp386_ = vala_expression_is_constant (_tmp385_);
+               if (_tmp386_) {
+                       ValaExpression* _tmp387_ = NULL;
+                       ValaExpression* _tmp388_ = NULL;
+                       gboolean _tmp389_ = FALSE;
+                       _tmp387_ = vala_binary_expression_get_right (self);
                        _tmp388_ = _tmp387_;
-                       vala_data_type_set_value_owned (_tmp388_, FALSE);
+                       _tmp389_ = vala_expression_is_constant (_tmp388_);
+                       _tmp383_ = _tmp389_;
                } else {
-                       ValaDataType* _tmp389_ = NULL;
+                       _tmp383_ = FALSE;
+               }
+               if (_tmp383_) {
                        ValaDataType* _tmp390_ = NULL;
-                       _tmp389_ = vala_expression_get_value_type ((ValaExpression*) self);
-                       _tmp390_ = _tmp389_;
-                       vala_data_type_set_value_owned (_tmp390_, TRUE);
+                       ValaDataType* _tmp391_ = NULL;
+                       _tmp390_ = vala_expression_get_value_type ((ValaExpression*) self);
+                       _tmp391_ = _tmp390_;
+                       vala_data_type_set_value_owned (_tmp391_, FALSE);
+               } else {
+                       ValaDataType* _tmp392_ = NULL;
+                       ValaDataType* _tmp393_ = NULL;
+                       _tmp392_ = vala_expression_get_value_type ((ValaExpression*) self);
+                       _tmp393_ = _tmp392_;
+                       vala_data_type_set_value_owned (_tmp393_, TRUE);
                }
        } else {
-               gboolean _tmp391_ = FALSE;
-               ValaExpression* _tmp392_ = NULL;
-               ValaExpression* _tmp393_ = NULL;
-               ValaDataType* _tmp394_ = NULL;
-               ValaDataType* _tmp395_ = NULL;
-               _tmp392_ = vala_binary_expression_get_left (self);
-               _tmp393_ = _tmp392_;
-               _tmp394_ = vala_expression_get_value_type (_tmp393_);
-               _tmp395_ = _tmp394_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp395_, VALA_TYPE_ARRAY_TYPE)) {
-                       ValaBinaryOperator _tmp396_ = 0;
-                       _tmp396_ = self->priv->_operator;
-                       _tmp391_ = _tmp396_ == VALA_BINARY_OPERATOR_PLUS;
+               gboolean _tmp394_ = FALSE;
+               ValaExpression* _tmp395_ = NULL;
+               ValaExpression* _tmp396_ = NULL;
+               ValaDataType* _tmp397_ = NULL;
+               ValaDataType* _tmp398_ = NULL;
+               _tmp395_ = vala_binary_expression_get_left (self);
+               _tmp396_ = _tmp395_;
+               _tmp397_ = vala_expression_get_value_type (_tmp396_);
+               _tmp398_ = _tmp397_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp398_, VALA_TYPE_ARRAY_TYPE)) {
+                       ValaBinaryOperator _tmp399_ = 0;
+                       _tmp399_ = self->priv->_operator;
+                       _tmp394_ = _tmp399_ == VALA_BINARY_OPERATOR_PLUS;
                } else {
-                       _tmp391_ = FALSE;
+                       _tmp394_ = FALSE;
                }
-               if (_tmp391_) {
+               if (_tmp394_) {
                        ValaArrayType* array_type = NULL;
-                       ValaExpression* _tmp397_ = NULL;
-                       ValaExpression* _tmp398_ = NULL;
-                       ValaDataType* _tmp399_ = NULL;
-                       ValaDataType* _tmp400_ = NULL;
-                       ValaArrayType* _tmp401_ = NULL;
-                       gboolean _tmp402_ = FALSE;
-                       ValaExpression* _tmp403_ = NULL;
-                       ValaExpression* _tmp404_ = NULL;
-                       ValaDataType* _tmp405_ = NULL;
-                       ValaDataType* _tmp406_ = NULL;
-                       ValaExpression* _tmp417_ = NULL;
-                       ValaExpression* _tmp418_ = NULL;
-                       ValaArrayType* _tmp419_ = NULL;
-                       ValaDataType* _tmp420_ = NULL;
-                       ValaDataType* _tmp421_ = NULL;
-                       ValaDataType* _tmp422_ = NULL;
+                       ValaExpression* _tmp400_ = NULL;
+                       ValaExpression* _tmp401_ = NULL;
+                       ValaDataType* _tmp402_ = NULL;
+                       ValaDataType* _tmp403_ = NULL;
+                       ValaArrayType* _tmp404_ = NULL;
+                       gboolean _tmp405_ = FALSE;
+                       ValaExpression* _tmp406_ = NULL;
+                       ValaExpression* _tmp407_ = NULL;
+                       ValaDataType* _tmp408_ = NULL;
+                       ValaDataType* _tmp409_ = NULL;
+                       ValaExpression* _tmp420_ = NULL;
+                       ValaExpression* _tmp421_ = NULL;
+                       ValaArrayType* _tmp422_ = NULL;
                        ValaDataType* _tmp423_ = NULL;
-                       ValaArrayType* _tmp424_ = NULL;
+                       ValaDataType* _tmp424_ = NULL;
                        ValaDataType* _tmp425_ = NULL;
                        ValaDataType* _tmp426_ = NULL;
-                       ValaDataType* _tmp427_ = NULL;
+                       ValaArrayType* _tmp427_ = NULL;
                        ValaDataType* _tmp428_ = NULL;
-                       _tmp397_ = vala_binary_expression_get_left (self);
-                       _tmp398_ = _tmp397_;
-                       _tmp399_ = vala_expression_get_value_type (_tmp398_);
-                       _tmp400_ = _tmp399_;
-                       _tmp401_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp400_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                       array_type = _tmp401_;
-                       _tmp403_ = vala_binary_expression_get_right (self);
-                       _tmp404_ = _tmp403_;
-                       _tmp405_ = vala_expression_get_value_type (_tmp404_);
-                       _tmp406_ = _tmp405_;
-                       if (_tmp406_ == NULL) {
-                               _tmp402_ = TRUE;
+                       ValaDataType* _tmp429_ = NULL;
+                       ValaDataType* _tmp430_ = NULL;
+                       ValaDataType* _tmp431_ = NULL;
+                       _tmp400_ = vala_binary_expression_get_left (self);
+                       _tmp401_ = _tmp400_;
+                       _tmp402_ = vala_expression_get_value_type (_tmp401_);
+                       _tmp403_ = _tmp402_;
+                       _tmp404_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp403_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                       array_type = _tmp404_;
+                       _tmp406_ = vala_binary_expression_get_right (self);
+                       _tmp407_ = _tmp406_;
+                       _tmp408_ = vala_expression_get_value_type (_tmp407_);
+                       _tmp409_ = _tmp408_;
+                       if (_tmp409_ == NULL) {
+                               _tmp405_ = TRUE;
                        } else {
-                               ValaExpression* _tmp407_ = NULL;
-                               ValaExpression* _tmp408_ = NULL;
-                               ValaDataType* _tmp409_ = NULL;
-                               ValaDataType* _tmp410_ = NULL;
-                               ValaArrayType* _tmp411_ = NULL;
+                               ValaExpression* _tmp410_ = NULL;
+                               ValaExpression* _tmp411_ = NULL;
                                ValaDataType* _tmp412_ = NULL;
                                ValaDataType* _tmp413_ = NULL;
-                               gboolean _tmp414_ = FALSE;
-                               _tmp407_ = vala_binary_expression_get_right (self);
-                               _tmp408_ = _tmp407_;
-                               _tmp409_ = vala_expression_get_value_type (_tmp408_);
-                               _tmp410_ = _tmp409_;
-                               _tmp411_ = array_type;
-                               _tmp412_ = vala_array_type_get_element_type (_tmp411_);
+                               ValaArrayType* _tmp414_ = NULL;
+                               ValaDataType* _tmp415_ = NULL;
+                               ValaDataType* _tmp416_ = NULL;
+                               gboolean _tmp417_ = FALSE;
+                               _tmp410_ = vala_binary_expression_get_right (self);
+                               _tmp411_ = _tmp410_;
+                               _tmp412_ = vala_expression_get_value_type (_tmp411_);
                                _tmp413_ = _tmp412_;
-                               _tmp414_ = vala_data_type_compatible (_tmp410_, _tmp413_);
-                               _tmp402_ = !_tmp414_;
+                               _tmp414_ = array_type;
+                               _tmp415_ = vala_array_type_get_element_type (_tmp414_);
+                               _tmp416_ = _tmp415_;
+                               _tmp417_ = vala_data_type_compatible (_tmp413_, _tmp416_);
+                               _tmp405_ = !_tmp417_;
                        }
-                       if (_tmp402_) {
-                               ValaSourceReference* _tmp415_ = NULL;
-                               ValaSourceReference* _tmp416_ = NULL;
+                       if (_tmp405_) {
+                               ValaSourceReference* _tmp418_ = NULL;
+                               ValaSourceReference* _tmp419_ = NULL;
                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                               _tmp415_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp416_ = _tmp415_;
-                               vala_report_error (_tmp416_, "Incompatible operand");
+                               _tmp418_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp419_ = _tmp418_;
+                               vala_report_error (_tmp419_, "Incompatible operand");
                                result = FALSE;
                                _vala_code_node_unref0 (array_type);
                                return result;
                        }
-                       _tmp417_ = vala_binary_expression_get_right (self);
-                       _tmp418_ = _tmp417_;
-                       _tmp419_ = array_type;
-                       _tmp420_ = vala_array_type_get_element_type (_tmp419_);
+                       _tmp420_ = vala_binary_expression_get_right (self);
                        _tmp421_ = _tmp420_;
-                       _tmp422_ = vala_data_type_copy (_tmp421_);
-                       _tmp423_ = _tmp422_;
-                       vala_expression_set_target_type (_tmp418_, _tmp423_);
-                       _vala_code_node_unref0 (_tmp423_);
-                       _tmp424_ = array_type;
-                       _tmp425_ = vala_data_type_copy ((ValaDataType*) _tmp424_);
+                       _tmp422_ = array_type;
+                       _tmp423_ = vala_array_type_get_element_type (_tmp422_);
+                       _tmp424_ = _tmp423_;
+                       _tmp425_ = vala_data_type_copy (_tmp424_);
                        _tmp426_ = _tmp425_;
-                       vala_expression_set_value_type ((ValaExpression*) self, _tmp426_);
+                       vala_expression_set_target_type (_tmp421_, _tmp426_);
                        _vala_code_node_unref0 (_tmp426_);
-                       _tmp427_ = vala_expression_get_value_type ((ValaExpression*) self);
-                       _tmp428_ = _tmp427_;
-                       vala_data_type_set_value_owned (_tmp428_, TRUE);
+                       _tmp427_ = array_type;
+                       _tmp428_ = vala_data_type_copy ((ValaDataType*) _tmp427_);
+                       _tmp429_ = _tmp428_;
+                       vala_expression_set_value_type ((ValaExpression*) self, _tmp429_);
+                       _vala_code_node_unref0 (_tmp429_);
+                       _tmp430_ = vala_expression_get_value_type ((ValaExpression*) self);
+                       _tmp431_ = _tmp430_;
+                       vala_data_type_set_value_owned (_tmp431_, TRUE);
                        _vala_code_node_unref0 (array_type);
                } else {
-                       gboolean _tmp429_ = FALSE;
-                       gboolean _tmp430_ = FALSE;
-                       gboolean _tmp431_ = FALSE;
-                       ValaBinaryOperator _tmp432_ = 0;
-                       _tmp432_ = self->priv->_operator;
-                       if (_tmp432_ == VALA_BINARY_OPERATOR_PLUS) {
-                               _tmp431_ = TRUE;
+                       gboolean _tmp432_ = FALSE;
+                       gboolean _tmp433_ = FALSE;
+                       gboolean _tmp434_ = FALSE;
+                       ValaBinaryOperator _tmp435_ = 0;
+                       _tmp435_ = self->priv->_operator;
+                       if (_tmp435_ == VALA_BINARY_OPERATOR_PLUS) {
+                               _tmp434_ = TRUE;
                        } else {
-                               ValaBinaryOperator _tmp433_ = 0;
-                               _tmp433_ = self->priv->_operator;
-                               _tmp431_ = _tmp433_ == VALA_BINARY_OPERATOR_MINUS;
+                               ValaBinaryOperator _tmp436_ = 0;
+                               _tmp436_ = self->priv->_operator;
+                               _tmp434_ = _tmp436_ == VALA_BINARY_OPERATOR_MINUS;
                        }
-                       if (_tmp431_) {
-                               _tmp430_ = TRUE;
+                       if (_tmp434_) {
+                               _tmp433_ = TRUE;
                        } else {
-                               ValaBinaryOperator _tmp434_ = 0;
-                               _tmp434_ = self->priv->_operator;
-                               _tmp430_ = _tmp434_ == VALA_BINARY_OPERATOR_MUL;
+                               ValaBinaryOperator _tmp437_ = 0;
+                               _tmp437_ = self->priv->_operator;
+                               _tmp433_ = _tmp437_ == VALA_BINARY_OPERATOR_MUL;
                        }
-                       if (_tmp430_) {
-                               _tmp429_ = TRUE;
+                       if (_tmp433_) {
+                               _tmp432_ = TRUE;
                        } else {
-                               ValaBinaryOperator _tmp435_ = 0;
-                               _tmp435_ = self->priv->_operator;
-                               _tmp429_ = _tmp435_ == VALA_BINARY_OPERATOR_DIV;
+                               ValaBinaryOperator _tmp438_ = 0;
+                               _tmp438_ = self->priv->_operator;
+                               _tmp432_ = _tmp438_ == VALA_BINARY_OPERATOR_DIV;
                        }
-                       if (_tmp429_) {
-                               ValaExpression* _tmp436_ = NULL;
-                               ValaExpression* _tmp437_ = NULL;
-                               ValaDataType* _tmp438_ = NULL;
-                               ValaDataType* _tmp439_ = NULL;
-                               ValaDataType* _tmp486_ = NULL;
-                               ValaDataType* _tmp487_ = NULL;
-                               ValaDataType* _tmp501_ = NULL;
-                               ValaDataType* _tmp502_ = NULL;
-                               _tmp436_ = vala_binary_expression_get_left (self);
-                               _tmp437_ = _tmp436_;
-                               _tmp438_ = vala_expression_get_value_type (_tmp437_);
-                               _tmp439_ = _tmp438_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp439_, VALA_TYPE_POINTER_TYPE)) {
+                       if (_tmp432_) {
+                               ValaExpression* _tmp439_ = NULL;
+                               ValaExpression* _tmp440_ = NULL;
+                               ValaDataType* _tmp441_ = NULL;
+                               ValaDataType* _tmp442_ = NULL;
+                               ValaDataType* _tmp489_ = NULL;
+                               ValaDataType* _tmp490_ = NULL;
+                               ValaDataType* _tmp504_ = NULL;
+                               ValaDataType* _tmp505_ = NULL;
+                               _tmp439_ = vala_binary_expression_get_left (self);
+                               _tmp440_ = _tmp439_;
+                               _tmp441_ = vala_expression_get_value_type (_tmp440_);
+                               _tmp442_ = _tmp441_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp442_, VALA_TYPE_POINTER_TYPE)) {
                                        ValaPointerType* pointer_type = NULL;
-                                       ValaExpression* _tmp440_ = NULL;
-                                       ValaExpression* _tmp441_ = NULL;
-                                       ValaDataType* _tmp442_ = NULL;
-                                       ValaDataType* _tmp443_ = NULL;
-                                       ValaPointerType* _tmp444_ = NULL;
-                                       ValaPointerType* _tmp445_ = NULL;
+                                       ValaExpression* _tmp443_ = NULL;
+                                       ValaExpression* _tmp444_ = NULL;
+                                       ValaDataType* _tmp445_ = NULL;
                                        ValaDataType* _tmp446_ = NULL;
-                                       ValaDataType* _tmp447_ = NULL;
+                                       ValaPointerType* _tmp447_ = NULL;
+                                       ValaPointerType* _tmp448_ = NULL;
+                                       ValaDataType* _tmp449_ = NULL;
+                                       ValaDataType* _tmp450_ = NULL;
                                        ValaStruct* offset_type = NULL;
-                                       ValaExpression* _tmp450_ = NULL;
-                                       ValaExpression* _tmp451_ = NULL;
-                                       ValaDataType* _tmp452_ = NULL;
-                                       ValaDataType* _tmp453_ = NULL;
-                                       ValaTypeSymbol* _tmp454_ = NULL;
-                                       ValaTypeSymbol* _tmp455_ = NULL;
-                                       ValaStruct* _tmp456_ = NULL;
-                                       gboolean _tmp457_ = FALSE;
-                                       ValaStruct* _tmp458_ = NULL;
-                                       _tmp440_ = vala_binary_expression_get_left (self);
-                                       _tmp441_ = _tmp440_;
-                                       _tmp442_ = vala_expression_get_value_type (_tmp441_);
-                                       _tmp443_ = _tmp442_;
-                                       _tmp444_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp443_, VALA_TYPE_POINTER_TYPE, ValaPointerType));
-                                       pointer_type = _tmp444_;
-                                       _tmp445_ = pointer_type;
-                                       _tmp446_ = vala_pointer_type_get_base_type (_tmp445_);
-                                       _tmp447_ = _tmp446_;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp447_, VALA_TYPE_VOID_TYPE)) {
-                                               ValaSourceReference* _tmp448_ = NULL;
-                                               ValaSourceReference* _tmp449_ = NULL;
+                                       ValaExpression* _tmp453_ = NULL;
+                                       ValaExpression* _tmp454_ = NULL;
+                                       ValaDataType* _tmp455_ = NULL;
+                                       ValaDataType* _tmp456_ = NULL;
+                                       ValaTypeSymbol* _tmp457_ = NULL;
+                                       ValaTypeSymbol* _tmp458_ = NULL;
+                                       ValaStruct* _tmp459_ = NULL;
+                                       gboolean _tmp460_ = FALSE;
+                                       ValaStruct* _tmp461_ = NULL;
+                                       _tmp443_ = vala_binary_expression_get_left (self);
+                                       _tmp444_ = _tmp443_;
+                                       _tmp445_ = vala_expression_get_value_type (_tmp444_);
+                                       _tmp446_ = _tmp445_;
+                                       _tmp447_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp446_, VALA_TYPE_POINTER_TYPE, ValaPointerType));
+                                       pointer_type = _tmp447_;
+                                       _tmp448_ = pointer_type;
+                                       _tmp449_ = vala_pointer_type_get_base_type (_tmp448_);
+                                       _tmp450_ = _tmp449_;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp450_, VALA_TYPE_VOID_TYPE)) {
+                                               ValaSourceReference* _tmp451_ = NULL;
+                                               ValaSourceReference* _tmp452_ = NULL;
                                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                                               _tmp448_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                               _tmp449_ = _tmp448_;
-                                               vala_report_error (_tmp449_, "Pointer arithmetic not supported for `void*'");
+                                               _tmp451_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                               _tmp452_ = _tmp451_;
+                                               vala_report_error (_tmp452_, "Pointer arithmetic not supported for `void*'");
                                                result = FALSE;
                                                _vala_code_node_unref0 (pointer_type);
                                                return result;
                                        }
-                                       _tmp450_ = vala_binary_expression_get_right (self);
-                                       _tmp451_ = _tmp450_;
-                                       _tmp452_ = vala_expression_get_value_type (_tmp451_);
-                                       _tmp453_ = _tmp452_;
-                                       _tmp454_ = vala_data_type_get_data_type (_tmp453_);
-                                       _tmp455_ = _tmp454_;
-                                       _tmp456_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp455_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp455_) : NULL);
-                                       offset_type = _tmp456_;
-                                       _tmp458_ = offset_type;
-                                       if (_tmp458_ != NULL) {
-                                               ValaStruct* _tmp459_ = NULL;
-                                               gboolean _tmp460_ = FALSE;
-                                               _tmp459_ = offset_type;
-                                               _tmp460_ = vala_struct_is_integer_type (_tmp459_);
-                                               _tmp457_ = _tmp460_;
+                                       _tmp453_ = vala_binary_expression_get_right (self);
+                                       _tmp454_ = _tmp453_;
+                                       _tmp455_ = vala_expression_get_value_type (_tmp454_);
+                                       _tmp456_ = _tmp455_;
+                                       _tmp457_ = vala_data_type_get_data_type (_tmp456_);
+                                       _tmp458_ = _tmp457_;
+                                       _tmp459_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp458_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp458_) : NULL);
+                                       offset_type = _tmp459_;
+                                       _tmp461_ = offset_type;
+                                       if (_tmp461_ != NULL) {
+                                               ValaStruct* _tmp462_ = NULL;
+                                               gboolean _tmp463_ = FALSE;
+                                               _tmp462_ = offset_type;
+                                               _tmp463_ = vala_struct_is_integer_type (_tmp462_);
+                                               _tmp460_ = _tmp463_;
                                        } else {
-                                               _tmp457_ = FALSE;
+                                               _tmp460_ = FALSE;
                                        }
-                                       if (_tmp457_) {
-                                               gboolean _tmp461_ = FALSE;
-                                               ValaBinaryOperator _tmp462_ = 0;
-                                               _tmp462_ = self->priv->_operator;
-                                               if (_tmp462_ == VALA_BINARY_OPERATOR_PLUS) {
-                                                       _tmp461_ = TRUE;
+                                       if (_tmp460_) {
+                                               gboolean _tmp464_ = FALSE;
+                                               ValaBinaryOperator _tmp465_ = 0;
+                                               _tmp465_ = self->priv->_operator;
+                                               if (_tmp465_ == VALA_BINARY_OPERATOR_PLUS) {
+                                                       _tmp464_ = TRUE;
                                                } else {
-                                                       ValaBinaryOperator _tmp463_ = 0;
-                                                       _tmp463_ = self->priv->_operator;
-                                                       _tmp461_ = _tmp463_ == VALA_BINARY_OPERATOR_MINUS;
+                                                       ValaBinaryOperator _tmp466_ = 0;
+                                                       _tmp466_ = self->priv->_operator;
+                                                       _tmp464_ = _tmp466_ == VALA_BINARY_OPERATOR_MINUS;
                                                }
-                                               if (_tmp461_) {
-                                                       ValaExpression* _tmp464_ = NULL;
-                                                       ValaExpression* _tmp465_ = NULL;
-                                                       ValaDataType* _tmp466_ = NULL;
-                                                       ValaDataType* _tmp467_ = NULL;
-                                                       ValaDataType* _tmp468_ = NULL;
+                                               if (_tmp464_) {
+                                                       ValaExpression* _tmp467_ = NULL;
+                                                       ValaExpression* _tmp468_ = NULL;
                                                        ValaDataType* _tmp469_ = NULL;
-                                                       _tmp464_ = vala_binary_expression_get_left (self);
-                                                       _tmp465_ = _tmp464_;
-                                                       _tmp466_ = vala_expression_get_value_type (_tmp465_);
-                                                       _tmp467_ = _tmp466_;
-                                                       _tmp468_ = vala_data_type_copy (_tmp467_);
-                                                       _tmp469_ = _tmp468_;
-                                                       vala_expression_set_value_type ((ValaExpression*) self, _tmp469_);
-                                                       _vala_code_node_unref0 (_tmp469_);
+                                                       ValaDataType* _tmp470_ = NULL;
+                                                       ValaDataType* _tmp471_ = NULL;
+                                                       ValaDataType* _tmp472_ = NULL;
+                                                       _tmp467_ = vala_binary_expression_get_left (self);
+                                                       _tmp468_ = _tmp467_;
+                                                       _tmp469_ = vala_expression_get_value_type (_tmp468_);
+                                                       _tmp470_ = _tmp469_;
+                                                       _tmp471_ = vala_data_type_copy (_tmp470_);
+                                                       _tmp472_ = _tmp471_;
+                                                       vala_expression_set_value_type ((ValaExpression*) self, _tmp472_);
+                                                       _vala_code_node_unref0 (_tmp472_);
                                                }
                                        } else {
-                                               ValaExpression* _tmp470_ = NULL;
-                                               ValaExpression* _tmp471_ = NULL;
-                                               ValaDataType* _tmp472_ = NULL;
-                                               ValaDataType* _tmp473_ = NULL;
-                                               _tmp470_ = vala_binary_expression_get_right (self);
-                                               _tmp471_ = _tmp470_;
-                                               _tmp472_ = vala_expression_get_value_type (_tmp471_);
-                                               _tmp473_ = _tmp472_;
-                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp473_, VALA_TYPE_POINTER_TYPE)) {
-                                                       ValaCodeContext* _tmp474_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp475_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp476_ = NULL;
-                                                       ValaDataType* _tmp477_ = NULL;
-                                                       _tmp474_ = context;
-                                                       _tmp475_ = vala_code_context_get_analyzer (_tmp474_);
-                                                       _tmp476_ = _tmp475_;
-                                                       _tmp477_ = _tmp476_->size_t_type;
-                                                       vala_expression_set_value_type ((ValaExpression*) self, _tmp477_);
+                                               ValaExpression* _tmp473_ = NULL;
+                                               ValaExpression* _tmp474_ = NULL;
+                                               ValaDataType* _tmp475_ = NULL;
+                                               ValaDataType* _tmp476_ = NULL;
+                                               _tmp473_ = vala_binary_expression_get_right (self);
+                                               _tmp474_ = _tmp473_;
+                                               _tmp475_ = vala_expression_get_value_type (_tmp474_);
+                                               _tmp476_ = _tmp475_;
+                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp476_, VALA_TYPE_POINTER_TYPE)) {
+                                                       ValaCodeContext* _tmp477_ = NULL;
+                                                       ValaSemanticAnalyzer* _tmp478_ = NULL;
+                                                       ValaSemanticAnalyzer* _tmp479_ = NULL;
+                                                       ValaDataType* _tmp480_ = NULL;
+                                                       _tmp477_ = context;
+                                                       _tmp478_ = vala_code_context_get_analyzer (_tmp477_);
+                                                       _tmp479_ = _tmp478_;
+                                                       _tmp480_ = _tmp479_->size_t_type;
+                                                       vala_expression_set_value_type ((ValaExpression*) self, _tmp480_);
                                                }
                                        }
                                        _vala_code_node_unref0 (offset_type);
                                        _vala_code_node_unref0 (pointer_type);
                                } else {
-                                       ValaExpression* _tmp478_ = NULL;
-                                       ValaExpression* _tmp479_ = NULL;
-                                       ValaDataType* _tmp480_ = NULL;
-                                       ValaDataType* _tmp481_ = NULL;
+                                       ValaExpression* _tmp481_ = NULL;
                                        ValaExpression* _tmp482_ = NULL;
-                                       ValaExpression* _tmp483_ = NULL;
+                                       ValaDataType* _tmp483_ = NULL;
                                        ValaDataType* _tmp484_ = NULL;
-                                       ValaDataType* _tmp485_ = NULL;
-                                       _tmp478_ = vala_binary_expression_get_left (self);
-                                       _tmp479_ = _tmp478_;
-                                       _tmp480_ = vala_expression_get_target_type (_tmp479_);
-                                       _tmp481_ = _tmp480_;
-                                       vala_data_type_set_nullable (_tmp481_, FALSE);
-                                       _tmp482_ = vala_binary_expression_get_right (self);
-                                       _tmp483_ = _tmp482_;
-                                       _tmp484_ = vala_expression_get_target_type (_tmp483_);
-                                       _tmp485_ = _tmp484_;
-                                       vala_data_type_set_nullable (_tmp485_, FALSE);
+                                       ValaExpression* _tmp485_ = NULL;
+                                       ValaExpression* _tmp486_ = NULL;
+                                       ValaDataType* _tmp487_ = NULL;
+                                       ValaDataType* _tmp488_ = NULL;
+                                       _tmp481_ = vala_binary_expression_get_left (self);
+                                       _tmp482_ = _tmp481_;
+                                       _tmp483_ = vala_expression_get_target_type (_tmp482_);
+                                       _tmp484_ = _tmp483_;
+                                       vala_data_type_set_nullable (_tmp484_, FALSE);
+                                       _tmp485_ = vala_binary_expression_get_right (self);
+                                       _tmp486_ = _tmp485_;
+                                       _tmp487_ = vala_expression_get_target_type (_tmp486_);
+                                       _tmp488_ = _tmp487_;
+                                       vala_data_type_set_nullable (_tmp488_, FALSE);
                                }
-                               _tmp486_ = vala_expression_get_value_type ((ValaExpression*) self);
-                               _tmp487_ = _tmp486_;
-                               if (_tmp487_ == NULL) {
-                                       ValaCodeContext* _tmp488_ = NULL;
-                                       ValaSemanticAnalyzer* _tmp489_ = NULL;
-                                       ValaSemanticAnalyzer* _tmp490_ = NULL;
-                                       ValaExpression* _tmp491_ = NULL;
-                                       ValaExpression* _tmp492_ = NULL;
-                                       ValaDataType* _tmp493_ = NULL;
-                                       ValaDataType* _tmp494_ = NULL;
+                               _tmp489_ = vala_expression_get_value_type ((ValaExpression*) self);
+                               _tmp490_ = _tmp489_;
+                               if (_tmp490_ == NULL) {
+                                       ValaCodeContext* _tmp491_ = NULL;
+                                       ValaSemanticAnalyzer* _tmp492_ = NULL;
+                                       ValaSemanticAnalyzer* _tmp493_ = NULL;
+                                       ValaExpression* _tmp494_ = NULL;
                                        ValaExpression* _tmp495_ = NULL;
-                                       ValaExpression* _tmp496_ = NULL;
+                                       ValaDataType* _tmp496_ = NULL;
                                        ValaDataType* _tmp497_ = NULL;
-                                       ValaDataType* _tmp498_ = NULL;
-                                       ValaDataType* _tmp499_ = NULL;
+                                       ValaExpression* _tmp498_ = NULL;
+                                       ValaExpression* _tmp499_ = NULL;
                                        ValaDataType* _tmp500_ = NULL;
-                                       _tmp488_ = context;
-                                       _tmp489_ = vala_code_context_get_analyzer (_tmp488_);
-                                       _tmp490_ = _tmp489_;
-                                       _tmp491_ = vala_binary_expression_get_left (self);
-                                       _tmp492_ = _tmp491_;
-                                       _tmp493_ = vala_expression_get_target_type (_tmp492_);
-                                       _tmp494_ = _tmp493_;
-                                       _tmp495_ = vala_binary_expression_get_right (self);
-                                       _tmp496_ = _tmp495_;
-                                       _tmp497_ = vala_expression_get_target_type (_tmp496_);
-                                       _tmp498_ = _tmp497_;
-                                       _tmp499_ = vala_semantic_analyzer_get_arithmetic_result_type (_tmp490_, _tmp494_, _tmp498_);
-                                       _tmp500_ = _tmp499_;
-                                       vala_expression_set_value_type ((ValaExpression*) self, _tmp500_);
-                                       _vala_code_node_unref0 (_tmp500_);
+                                       ValaDataType* _tmp501_ = NULL;
+                                       ValaDataType* _tmp502_ = NULL;
+                                       ValaDataType* _tmp503_ = NULL;
+                                       _tmp491_ = context;
+                                       _tmp492_ = vala_code_context_get_analyzer (_tmp491_);
+                                       _tmp493_ = _tmp492_;
+                                       _tmp494_ = vala_binary_expression_get_left (self);
+                                       _tmp495_ = _tmp494_;
+                                       _tmp496_ = vala_expression_get_target_type (_tmp495_);
+                                       _tmp497_ = _tmp496_;
+                                       _tmp498_ = vala_binary_expression_get_right (self);
+                                       _tmp499_ = _tmp498_;
+                                       _tmp500_ = vala_expression_get_target_type (_tmp499_);
+                                       _tmp501_ = _tmp500_;
+                                       _tmp502_ = vala_semantic_analyzer_get_arithmetic_result_type (_tmp493_, _tmp497_, _tmp501_);
+                                       _tmp503_ = _tmp502_;
+                                       vala_expression_set_value_type ((ValaExpression*) self, _tmp503_);
+                                       _vala_code_node_unref0 (_tmp503_);
                                }
-                               _tmp501_ = vala_expression_get_value_type ((ValaExpression*) self);
-                               _tmp502_ = _tmp501_;
-                               if (_tmp502_ == NULL) {
-                                       ValaSourceReference* _tmp503_ = NULL;
-                                       ValaSourceReference* _tmp504_ = NULL;
-                                       ValaExpression* _tmp505_ = NULL;
-                                       ValaExpression* _tmp506_ = NULL;
-                                       ValaDataType* _tmp507_ = NULL;
-                                       ValaDataType* _tmp508_ = NULL;
-                                       gchar* _tmp509_ = NULL;
-                                       gchar* _tmp510_ = NULL;
-                                       ValaExpression* _tmp511_ = NULL;
-                                       ValaExpression* _tmp512_ = NULL;
-                                       ValaDataType* _tmp513_ = NULL;
-                                       ValaDataType* _tmp514_ = NULL;
-                                       gchar* _tmp515_ = NULL;
-                                       gchar* _tmp516_ = NULL;
-                                       gchar* _tmp517_ = NULL;
+                               _tmp504_ = vala_expression_get_value_type ((ValaExpression*) self);
+                               _tmp505_ = _tmp504_;
+                               if (_tmp505_ == NULL) {
+                                       ValaSourceReference* _tmp506_ = NULL;
+                                       ValaSourceReference* _tmp507_ = NULL;
+                                       ValaExpression* _tmp508_ = NULL;
+                                       ValaExpression* _tmp509_ = NULL;
+                                       ValaDataType* _tmp510_ = NULL;
+                                       ValaDataType* _tmp511_ = NULL;
+                                       gchar* _tmp512_ = NULL;
+                                       gchar* _tmp513_ = NULL;
+                                       ValaExpression* _tmp514_ = NULL;
+                                       ValaExpression* _tmp515_ = NULL;
+                                       ValaDataType* _tmp516_ = NULL;
+                                       ValaDataType* _tmp517_ = NULL;
                                        gchar* _tmp518_ = NULL;
+                                       gchar* _tmp519_ = NULL;
+                                       gchar* _tmp520_ = NULL;
+                                       gchar* _tmp521_ = NULL;
                                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                                       _tmp503_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                       _tmp504_ = _tmp503_;
-                                       _tmp505_ = vala_binary_expression_get_left (self);
-                                       _tmp506_ = _tmp505_;
-                                       _tmp507_ = vala_expression_get_value_type (_tmp506_);
-                                       _tmp508_ = _tmp507_;
-                                       _tmp509_ = vala_code_node_to_string ((ValaCodeNode*) _tmp508_);
-                                       _tmp510_ = _tmp509_;
-                                       _tmp511_ = vala_binary_expression_get_right (self);
-                                       _tmp512_ = _tmp511_;
-                                       _tmp513_ = vala_expression_get_value_type (_tmp512_);
-                                       _tmp514_ = _tmp513_;
-                                       _tmp515_ = vala_code_node_to_string ((ValaCodeNode*) _tmp514_);
-                                       _tmp516_ = _tmp515_;
-                                       _tmp517_ = g_strdup_printf ("Arithmetic operation not supported for types `%s' and `%s'", _tmp510_, _tmp516_);
-                                       _tmp518_ = _tmp517_;
-                                       vala_report_error (_tmp504_, _tmp518_);
-                                       _g_free0 (_tmp518_);
-                                       _g_free0 (_tmp516_);
-                                       _g_free0 (_tmp510_);
+                                       _tmp506_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                       _tmp507_ = _tmp506_;
+                                       _tmp508_ = vala_binary_expression_get_left (self);
+                                       _tmp509_ = _tmp508_;
+                                       _tmp510_ = vala_expression_get_value_type (_tmp509_);
+                                       _tmp511_ = _tmp510_;
+                                       _tmp512_ = vala_code_node_to_string ((ValaCodeNode*) _tmp511_);
+                                       _tmp513_ = _tmp512_;
+                                       _tmp514_ = vala_binary_expression_get_right (self);
+                                       _tmp515_ = _tmp514_;
+                                       _tmp516_ = vala_expression_get_value_type (_tmp515_);
+                                       _tmp517_ = _tmp516_;
+                                       _tmp518_ = vala_code_node_to_string ((ValaCodeNode*) _tmp517_);
+                                       _tmp519_ = _tmp518_;
+                                       _tmp520_ = g_strdup_printf ("Arithmetic operation not supported for types `%s' and `%s'", _tmp513_, _tmp519_);
+                                       _tmp521_ = _tmp520_;
+                                       vala_report_error (_tmp507_, _tmp521_);
+                                       _g_free0 (_tmp521_);
+                                       _g_free0 (_tmp519_);
+                                       _g_free0 (_tmp513_);
                                        result = FALSE;
                                        return result;
                                }
                        } else {
-                               gboolean _tmp519_ = FALSE;
-                               gboolean _tmp520_ = FALSE;
-                               gboolean _tmp521_ = FALSE;
-                               ValaBinaryOperator _tmp522_ = 0;
-                               _tmp522_ = self->priv->_operator;
-                               if (_tmp522_ == VALA_BINARY_OPERATOR_MOD) {
-                                       _tmp521_ = TRUE;
+                               gboolean _tmp522_ = FALSE;
+                               gboolean _tmp523_ = FALSE;
+                               gboolean _tmp524_ = FALSE;
+                               ValaBinaryOperator _tmp525_ = 0;
+                               _tmp525_ = self->priv->_operator;
+                               if (_tmp525_ == VALA_BINARY_OPERATOR_MOD) {
+                                       _tmp524_ = TRUE;
                                } else {
-                                       ValaBinaryOperator _tmp523_ = 0;
-                                       _tmp523_ = self->priv->_operator;
-                                       _tmp521_ = _tmp523_ == VALA_BINARY_OPERATOR_SHIFT_LEFT;
+                                       ValaBinaryOperator _tmp526_ = 0;
+                                       _tmp526_ = self->priv->_operator;
+                                       _tmp524_ = _tmp526_ == VALA_BINARY_OPERATOR_SHIFT_LEFT;
                                }
-                               if (_tmp521_) {
-                                       _tmp520_ = TRUE;
+                               if (_tmp524_) {
+                                       _tmp523_ = TRUE;
                                } else {
-                                       ValaBinaryOperator _tmp524_ = 0;
-                                       _tmp524_ = self->priv->_operator;
-                                       _tmp520_ = _tmp524_ == VALA_BINARY_OPERATOR_SHIFT_RIGHT;
+                                       ValaBinaryOperator _tmp527_ = 0;
+                                       _tmp527_ = self->priv->_operator;
+                                       _tmp523_ = _tmp527_ == VALA_BINARY_OPERATOR_SHIFT_RIGHT;
                                }
-                               if (_tmp520_) {
-                                       _tmp519_ = TRUE;
+                               if (_tmp523_) {
+                                       _tmp522_ = TRUE;
                                } else {
-                                       ValaBinaryOperator _tmp525_ = 0;
-                                       _tmp525_ = self->priv->_operator;
-                                       _tmp519_ = _tmp525_ == VALA_BINARY_OPERATOR_BITWISE_XOR;
+                                       ValaBinaryOperator _tmp528_ = 0;
+                                       _tmp528_ = self->priv->_operator;
+                                       _tmp522_ = _tmp528_ == VALA_BINARY_OPERATOR_BITWISE_XOR;
                                }
-                               if (_tmp519_) {
-                                       ValaExpression* _tmp526_ = NULL;
-                                       ValaExpression* _tmp527_ = NULL;
-                                       ValaDataType* _tmp528_ = NULL;
-                                       ValaDataType* _tmp529_ = NULL;
+                               if (_tmp522_) {
+                                       ValaExpression* _tmp529_ = NULL;
                                        ValaExpression* _tmp530_ = NULL;
-                                       ValaExpression* _tmp531_ = NULL;
+                                       ValaDataType* _tmp531_ = NULL;
                                        ValaDataType* _tmp532_ = NULL;
-                                       ValaDataType* _tmp533_ = NULL;
-                                       ValaCodeContext* _tmp534_ = NULL;
-                                       ValaSemanticAnalyzer* _tmp535_ = NULL;
-                                       ValaSemanticAnalyzer* _tmp536_ = NULL;
-                                       ValaExpression* _tmp537_ = NULL;
-                                       ValaExpression* _tmp538_ = NULL;
-                                       ValaDataType* _tmp539_ = NULL;
-                                       ValaDataType* _tmp540_ = NULL;
+                                       ValaExpression* _tmp533_ = NULL;
+                                       ValaExpression* _tmp534_ = NULL;
+                                       ValaDataType* _tmp535_ = NULL;
+                                       ValaDataType* _tmp536_ = NULL;
+                                       ValaCodeContext* _tmp537_ = NULL;
+                                       ValaSemanticAnalyzer* _tmp538_ = NULL;
+                                       ValaSemanticAnalyzer* _tmp539_ = NULL;
+                                       ValaExpression* _tmp540_ = NULL;
                                        ValaExpression* _tmp541_ = NULL;
-                                       ValaExpression* _tmp542_ = NULL;
+                                       ValaDataType* _tmp542_ = NULL;
                                        ValaDataType* _tmp543_ = NULL;
-                                       ValaDataType* _tmp544_ = NULL;
-                                       ValaDataType* _tmp545_ = NULL;
+                                       ValaExpression* _tmp544_ = NULL;
+                                       ValaExpression* _tmp545_ = NULL;
                                        ValaDataType* _tmp546_ = NULL;
                                        ValaDataType* _tmp547_ = NULL;
                                        ValaDataType* _tmp548_ = NULL;
-                                       _tmp526_ = vala_binary_expression_get_left (self);
-                                       _tmp527_ = _tmp526_;
-                                       _tmp528_ = vala_expression_get_target_type (_tmp527_);
-                                       _tmp529_ = _tmp528_;
-                                       vala_data_type_set_nullable (_tmp529_, FALSE);
-                                       _tmp530_ = vala_binary_expression_get_right (self);
-                                       _tmp531_ = _tmp530_;
-                                       _tmp532_ = vala_expression_get_target_type (_tmp531_);
-                                       _tmp533_ = _tmp532_;
-                                       vala_data_type_set_nullable (_tmp533_, FALSE);
-                                       _tmp534_ = context;
-                                       _tmp535_ = vala_code_context_get_analyzer (_tmp534_);
+                                       ValaDataType* _tmp549_ = NULL;
+                                       ValaDataType* _tmp550_ = NULL;
+                                       ValaDataType* _tmp551_ = NULL;
+                                       _tmp529_ = vala_binary_expression_get_left (self);
+                                       _tmp530_ = _tmp529_;
+                                       _tmp531_ = vala_expression_get_target_type (_tmp530_);
+                                       _tmp532_ = _tmp531_;
+                                       vala_data_type_set_nullable (_tmp532_, FALSE);
+                                       _tmp533_ = vala_binary_expression_get_right (self);
+                                       _tmp534_ = _tmp533_;
+                                       _tmp535_ = vala_expression_get_target_type (_tmp534_);
                                        _tmp536_ = _tmp535_;
-                                       _tmp537_ = vala_binary_expression_get_left (self);
-                                       _tmp538_ = _tmp537_;
-                                       _tmp539_ = vala_expression_get_target_type (_tmp538_);
-                                       _tmp540_ = _tmp539_;
-                                       _tmp541_ = vala_binary_expression_get_right (self);
-                                       _tmp542_ = _tmp541_;
-                                       _tmp543_ = vala_expression_get_target_type (_tmp542_);
-                                       _tmp544_ = _tmp543_;
-                                       _tmp545_ = vala_semantic_analyzer_get_arithmetic_result_type (_tmp536_, _tmp540_, _tmp544_);
-                                       _tmp546_ = _tmp545_;
-                                       vala_expression_set_value_type ((ValaExpression*) self, _tmp546_);
-                                       _vala_code_node_unref0 (_tmp546_);
-                                       _tmp547_ = vala_expression_get_value_type ((ValaExpression*) self);
-                                       _tmp548_ = _tmp547_;
-                                       if (_tmp548_ == NULL) {
-                                               ValaSourceReference* _tmp549_ = NULL;
-                                               ValaSourceReference* _tmp550_ = NULL;
-                                               ValaExpression* _tmp551_ = NULL;
-                                               ValaExpression* _tmp552_ = NULL;
-                                               ValaDataType* _tmp553_ = NULL;
-                                               ValaDataType* _tmp554_ = NULL;
-                                               gchar* _tmp555_ = NULL;
-                                               gchar* _tmp556_ = NULL;
-                                               ValaExpression* _tmp557_ = NULL;
-                                               ValaExpression* _tmp558_ = NULL;
-                                               ValaDataType* _tmp559_ = NULL;
-                                               ValaDataType* _tmp560_ = NULL;
-                                               gchar* _tmp561_ = NULL;
-                                               gchar* _tmp562_ = NULL;
-                                               gchar* _tmp563_ = NULL;
+                                       vala_data_type_set_nullable (_tmp536_, FALSE);
+                                       _tmp537_ = context;
+                                       _tmp538_ = vala_code_context_get_analyzer (_tmp537_);
+                                       _tmp539_ = _tmp538_;
+                                       _tmp540_ = vala_binary_expression_get_left (self);
+                                       _tmp541_ = _tmp540_;
+                                       _tmp542_ = vala_expression_get_target_type (_tmp541_);
+                                       _tmp543_ = _tmp542_;
+                                       _tmp544_ = vala_binary_expression_get_right (self);
+                                       _tmp545_ = _tmp544_;
+                                       _tmp546_ = vala_expression_get_target_type (_tmp545_);
+                                       _tmp547_ = _tmp546_;
+                                       _tmp548_ = vala_semantic_analyzer_get_arithmetic_result_type (_tmp539_, _tmp543_, _tmp547_);
+                                       _tmp549_ = _tmp548_;
+                                       vala_expression_set_value_type ((ValaExpression*) self, _tmp549_);
+                                       _vala_code_node_unref0 (_tmp549_);
+                                       _tmp550_ = vala_expression_get_value_type ((ValaExpression*) self);
+                                       _tmp551_ = _tmp550_;
+                                       if (_tmp551_ == NULL) {
+                                               ValaSourceReference* _tmp552_ = NULL;
+                                               ValaSourceReference* _tmp553_ = NULL;
+                                               ValaExpression* _tmp554_ = NULL;
+                                               ValaExpression* _tmp555_ = NULL;
+                                               ValaDataType* _tmp556_ = NULL;
+                                               ValaDataType* _tmp557_ = NULL;
+                                               gchar* _tmp558_ = NULL;
+                                               gchar* _tmp559_ = NULL;
+                                               ValaExpression* _tmp560_ = NULL;
+                                               ValaExpression* _tmp561_ = NULL;
+                                               ValaDataType* _tmp562_ = NULL;
+                                               ValaDataType* _tmp563_ = NULL;
                                                gchar* _tmp564_ = NULL;
+                                               gchar* _tmp565_ = NULL;
+                                               gchar* _tmp566_ = NULL;
+                                               gchar* _tmp567_ = NULL;
                                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                                               _tmp549_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                               _tmp550_ = _tmp549_;
-                                               _tmp551_ = vala_binary_expression_get_left (self);
-                                               _tmp552_ = _tmp551_;
-                                               _tmp553_ = vala_expression_get_value_type (_tmp552_);
-                                               _tmp554_ = _tmp553_;
-                                               _tmp555_ = vala_code_node_to_string ((ValaCodeNode*) _tmp554_);
-                                               _tmp556_ = _tmp555_;
-                                               _tmp557_ = vala_binary_expression_get_right (self);
-                                               _tmp558_ = _tmp557_;
-                                               _tmp559_ = vala_expression_get_value_type (_tmp558_);
-                                               _tmp560_ = _tmp559_;
-                                               _tmp561_ = vala_code_node_to_string ((ValaCodeNode*) _tmp560_);
-                                               _tmp562_ = _tmp561_;
-                                               _tmp563_ = g_strdup_printf ("Arithmetic operation not supported for types `%s' and `%s'", _tmp556_, _tmp562_);
-                                               _tmp564_ = _tmp563_;
-                                               vala_report_error (_tmp550_, _tmp564_);
-                                               _g_free0 (_tmp564_);
-                                               _g_free0 (_tmp562_);
-                                               _g_free0 (_tmp556_);
+                                               _tmp552_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                               _tmp553_ = _tmp552_;
+                                               _tmp554_ = vala_binary_expression_get_left (self);
+                                               _tmp555_ = _tmp554_;
+                                               _tmp556_ = vala_expression_get_value_type (_tmp555_);
+                                               _tmp557_ = _tmp556_;
+                                               _tmp558_ = vala_code_node_to_string ((ValaCodeNode*) _tmp557_);
+                                               _tmp559_ = _tmp558_;
+                                               _tmp560_ = vala_binary_expression_get_right (self);
+                                               _tmp561_ = _tmp560_;
+                                               _tmp562_ = vala_expression_get_value_type (_tmp561_);
+                                               _tmp563_ = _tmp562_;
+                                               _tmp564_ = vala_code_node_to_string ((ValaCodeNode*) _tmp563_);
+                                               _tmp565_ = _tmp564_;
+                                               _tmp566_ = g_strdup_printf ("Arithmetic operation not supported for types `%s' and `%s'", _tmp559_, _tmp565_);
+                                               _tmp567_ = _tmp566_;
+                                               vala_report_error (_tmp553_, _tmp567_);
+                                               _g_free0 (_tmp567_);
+                                               _g_free0 (_tmp565_);
+                                               _g_free0 (_tmp559_);
                                                result = FALSE;
                                                return result;
                                        }
                                } else {
-                                       gboolean _tmp565_ = FALSE;
-                                       gboolean _tmp566_ = FALSE;
-                                       gboolean _tmp567_ = FALSE;
-                                       ValaBinaryOperator _tmp568_ = 0;
-                                       _tmp568_ = self->priv->_operator;
-                                       if (_tmp568_ == VALA_BINARY_OPERATOR_LESS_THAN) {
-                                               _tmp567_ = TRUE;
+                                       gboolean _tmp568_ = FALSE;
+                                       gboolean _tmp569_ = FALSE;
+                                       gboolean _tmp570_ = FALSE;
+                                       ValaBinaryOperator _tmp571_ = 0;
+                                       _tmp571_ = self->priv->_operator;
+                                       if (_tmp571_ == VALA_BINARY_OPERATOR_LESS_THAN) {
+                                               _tmp570_ = TRUE;
                                        } else {
-                                               ValaBinaryOperator _tmp569_ = 0;
-                                               _tmp569_ = self->priv->_operator;
-                                               _tmp567_ = _tmp569_ == VALA_BINARY_OPERATOR_GREATER_THAN;
+                                               ValaBinaryOperator _tmp572_ = 0;
+                                               _tmp572_ = self->priv->_operator;
+                                               _tmp570_ = _tmp572_ == VALA_BINARY_OPERATOR_GREATER_THAN;
                                        }
-                                       if (_tmp567_) {
-                                               _tmp566_ = TRUE;
+                                       if (_tmp570_) {
+                                               _tmp569_ = TRUE;
                                        } else {
-                                               ValaBinaryOperator _tmp570_ = 0;
-                                               _tmp570_ = self->priv->_operator;
-                                               _tmp566_ = _tmp570_ == VALA_BINARY_OPERATOR_LESS_THAN_OR_EQUAL;
+                                               ValaBinaryOperator _tmp573_ = 0;
+                                               _tmp573_ = self->priv->_operator;
+                                               _tmp569_ = _tmp573_ == VALA_BINARY_OPERATOR_LESS_THAN_OR_EQUAL;
                                        }
-                                       if (_tmp566_) {
-                                               _tmp565_ = TRUE;
+                                       if (_tmp569_) {
+                                               _tmp568_ = TRUE;
                                        } else {
-                                               ValaBinaryOperator _tmp571_ = 0;
-                                               _tmp571_ = self->priv->_operator;
-                                               _tmp565_ = _tmp571_ == VALA_BINARY_OPERATOR_GREATER_THAN_OR_EQUAL;
+                                               ValaBinaryOperator _tmp574_ = 0;
+                                               _tmp574_ = self->priv->_operator;
+                                               _tmp568_ = _tmp574_ == VALA_BINARY_OPERATOR_GREATER_THAN_OR_EQUAL;
                                        }
-                                       if (_tmp565_) {
-                                               gboolean _tmp572_ = FALSE;
-                                               ValaExpression* _tmp573_ = NULL;
-                                               ValaExpression* _tmp574_ = NULL;
-                                               ValaDataType* _tmp575_ = NULL;
-                                               ValaDataType* _tmp576_ = NULL;
-                                               ValaCodeContext* _tmp577_ = NULL;
-                                               ValaSemanticAnalyzer* _tmp578_ = NULL;
-                                               ValaSemanticAnalyzer* _tmp579_ = NULL;
-                                               ValaDataType* _tmp580_ = NULL;
-                                               gboolean _tmp581_ = FALSE;
-                                               ValaCodeContext* _tmp665_ = NULL;
-                                               ValaSemanticAnalyzer* _tmp666_ = NULL;
-                                               ValaSemanticAnalyzer* _tmp667_ = NULL;
-                                               ValaDataType* _tmp668_ = NULL;
-                                               _tmp573_ = vala_binary_expression_get_left (self);
-                                               _tmp574_ = _tmp573_;
-                                               _tmp575_ = vala_expression_get_value_type (_tmp574_);
-                                               _tmp576_ = _tmp575_;
-                                               _tmp577_ = context;
-                                               _tmp578_ = vala_code_context_get_analyzer (_tmp577_);
+                                       if (_tmp568_) {
+                                               gboolean _tmp575_ = FALSE;
+                                               ValaExpression* _tmp576_ = NULL;
+                                               ValaExpression* _tmp577_ = NULL;
+                                               ValaDataType* _tmp578_ = NULL;
+                                               ValaDataType* _tmp579_ = NULL;
+                                               ValaCodeContext* _tmp580_ = NULL;
+                                               ValaSemanticAnalyzer* _tmp581_ = NULL;
+                                               ValaSemanticAnalyzer* _tmp582_ = NULL;
+                                               ValaDataType* _tmp583_ = NULL;
+                                               gboolean _tmp584_ = FALSE;
+                                               ValaCodeContext* _tmp668_ = NULL;
+                                               ValaSemanticAnalyzer* _tmp669_ = NULL;
+                                               ValaSemanticAnalyzer* _tmp670_ = NULL;
+                                               ValaDataType* _tmp671_ = NULL;
+                                               _tmp576_ = vala_binary_expression_get_left (self);
+                                               _tmp577_ = _tmp576_;
+                                               _tmp578_ = vala_expression_get_value_type (_tmp577_);
                                                _tmp579_ = _tmp578_;
-                                               _tmp580_ = _tmp579_->string_type;
-                                               _tmp581_ = vala_data_type_compatible (_tmp576_, _tmp580_);
-                                               if (_tmp581_) {
-                                                       ValaExpression* _tmp582_ = NULL;
-                                                       ValaExpression* _tmp583_ = NULL;
-                                                       ValaDataType* _tmp584_ = NULL;
-                                                       ValaDataType* _tmp585_ = NULL;
-                                                       ValaCodeContext* _tmp586_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp587_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp588_ = NULL;
-                                                       ValaDataType* _tmp589_ = NULL;
-                                                       gboolean _tmp590_ = FALSE;
-                                                       _tmp582_ = vala_binary_expression_get_right (self);
-                                                       _tmp583_ = _tmp582_;
-                                                       _tmp584_ = vala_expression_get_value_type (_tmp583_);
-                                                       _tmp585_ = _tmp584_;
-                                                       _tmp586_ = context;
-                                                       _tmp587_ = vala_code_context_get_analyzer (_tmp586_);
+                                               _tmp580_ = context;
+                                               _tmp581_ = vala_code_context_get_analyzer (_tmp580_);
+                                               _tmp582_ = _tmp581_;
+                                               _tmp583_ = _tmp582_->string_type;
+                                               _tmp584_ = vala_data_type_compatible (_tmp579_, _tmp583_);
+                                               if (_tmp584_) {
+                                                       ValaExpression* _tmp585_ = NULL;
+                                                       ValaExpression* _tmp586_ = NULL;
+                                                       ValaDataType* _tmp587_ = NULL;
+                                                       ValaDataType* _tmp588_ = NULL;
+                                                       ValaCodeContext* _tmp589_ = NULL;
+                                                       ValaSemanticAnalyzer* _tmp590_ = NULL;
+                                                       ValaSemanticAnalyzer* _tmp591_ = NULL;
+                                                       ValaDataType* _tmp592_ = NULL;
+                                                       gboolean _tmp593_ = FALSE;
+                                                       _tmp585_ = vala_binary_expression_get_right (self);
+                                                       _tmp586_ = _tmp585_;
+                                                       _tmp587_ = vala_expression_get_value_type (_tmp586_);
                                                        _tmp588_ = _tmp587_;
-                                                       _tmp589_ = _tmp588_->string_type;
-                                                       _tmp590_ = vala_data_type_compatible (_tmp585_, _tmp589_);
-                                                       _tmp572_ = _tmp590_;
+                                                       _tmp589_ = context;
+                                                       _tmp590_ = vala_code_context_get_analyzer (_tmp589_);
+                                                       _tmp591_ = _tmp590_;
+                                                       _tmp592_ = _tmp591_->string_type;
+                                                       _tmp593_ = vala_data_type_compatible (_tmp588_, _tmp592_);
+                                                       _tmp575_ = _tmp593_;
                                                } else {
-                                                       _tmp572_ = FALSE;
+                                                       _tmp575_ = FALSE;
                                                }
-                                               if (_tmp572_) {
+                                               if (_tmp575_) {
                                                } else {
-                                                       gboolean _tmp591_ = FALSE;
-                                                       ValaExpression* _tmp592_ = NULL;
-                                                       ValaExpression* _tmp593_ = NULL;
-                                                       ValaDataType* _tmp594_ = NULL;
-                                                       ValaDataType* _tmp595_ = NULL;
-                                                       _tmp592_ = vala_binary_expression_get_left (self);
-                                                       _tmp593_ = _tmp592_;
-                                                       _tmp594_ = vala_expression_get_value_type (_tmp593_);
-                                                       _tmp595_ = _tmp594_;
-                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp595_, VALA_TYPE_POINTER_TYPE)) {
-                                                               ValaExpression* _tmp596_ = NULL;
-                                                               ValaExpression* _tmp597_ = NULL;
-                                                               ValaDataType* _tmp598_ = NULL;
-                                                               ValaDataType* _tmp599_ = NULL;
-                                                               _tmp596_ = vala_binary_expression_get_right (self);
-                                                               _tmp597_ = _tmp596_;
-                                                               _tmp598_ = vala_expression_get_value_type (_tmp597_);
-                                                               _tmp599_ = _tmp598_;
-                                                               _tmp591_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp599_, VALA_TYPE_POINTER_TYPE);
+                                                       gboolean _tmp594_ = FALSE;
+                                                       ValaExpression* _tmp595_ = NULL;
+                                                       ValaExpression* _tmp596_ = NULL;
+                                                       ValaDataType* _tmp597_ = NULL;
+                                                       ValaDataType* _tmp598_ = NULL;
+                                                       _tmp595_ = vala_binary_expression_get_left (self);
+                                                       _tmp596_ = _tmp595_;
+                                                       _tmp597_ = vala_expression_get_value_type (_tmp596_);
+                                                       _tmp598_ = _tmp597_;
+                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp598_, VALA_TYPE_POINTER_TYPE)) {
+                                                               ValaExpression* _tmp599_ = NULL;
+                                                               ValaExpression* _tmp600_ = NULL;
+                                                               ValaDataType* _tmp601_ = NULL;
+                                                               ValaDataType* _tmp602_ = NULL;
+                                                               _tmp599_ = vala_binary_expression_get_right (self);
+                                                               _tmp600_ = _tmp599_;
+                                                               _tmp601_ = vala_expression_get_value_type (_tmp600_);
+                                                               _tmp602_ = _tmp601_;
+                                                               _tmp594_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp602_, VALA_TYPE_POINTER_TYPE);
                                                        } else {
-                                                               _tmp591_ = FALSE;
+                                                               _tmp594_ = FALSE;
                                                        }
-                                                       if (_tmp591_) {
+                                                       if (_tmp594_) {
                                                        } else {
                                                                ValaDataType* resulting_type = NULL;
-                                                               gboolean _tmp600_ = FALSE;
-                                                               ValaDataType* _tmp629_ = NULL;
-                                                               gboolean _tmp646_ = FALSE;
-                                                               ValaExpression* _tmp652_ = NULL;
-                                                               ValaExpression* _tmp653_ = NULL;
-                                                               ValaDataType* _tmp654_ = NULL;
-                                                               ValaDataType* _tmp655_ = NULL;
-                                                               ValaDataType* _tmp656_ = NULL;
-                                                               ValaExpression* _tmp657_ = NULL;
-                                                               ValaExpression* _tmp658_ = NULL;
+                                                               gboolean _tmp603_ = FALSE;
+                                                               ValaDataType* _tmp632_ = NULL;
+                                                               gboolean _tmp649_ = FALSE;
+                                                               ValaExpression* _tmp655_ = NULL;
+                                                               ValaExpression* _tmp656_ = NULL;
+                                                               ValaDataType* _tmp657_ = NULL;
+                                                               ValaDataType* _tmp658_ = NULL;
                                                                ValaDataType* _tmp659_ = NULL;
-                                                               ValaDataType* _tmp660_ = NULL;
+                                                               ValaExpression* _tmp660_ = NULL;
                                                                ValaExpression* _tmp661_ = NULL;
-                                                               ValaExpression* _tmp662_ = NULL;
+                                                               ValaDataType* _tmp662_ = NULL;
                                                                ValaDataType* _tmp663_ = NULL;
-                                                               ValaDataType* _tmp664_ = NULL;
-                                                               _tmp600_ = self->chained;
-                                                               if (_tmp600_) {
+                                                               ValaExpression* _tmp664_ = NULL;
+                                                               ValaExpression* _tmp665_ = NULL;
+                                                               ValaDataType* _tmp666_ = NULL;
+                                                               ValaDataType* _tmp667_ = NULL;
+                                                               _tmp603_ = self->chained;
+                                                               if (_tmp603_) {
                                                                        ValaBinaryExpression* lbe = NULL;
-                                                                       ValaExpression* _tmp601_ = NULL;
-                                                                       ValaExpression* _tmp602_ = NULL;
-                                                                       ValaBinaryExpression* _tmp603_ = NULL;
-                                                                       ValaCodeContext* _tmp604_ = NULL;
-                                                                       ValaSemanticAnalyzer* _tmp605_ = NULL;
-                                                                       ValaSemanticAnalyzer* _tmp606_ = NULL;
-                                                                       ValaBinaryExpression* _tmp607_ = NULL;
-                                                                       ValaExpression* _tmp608_ = NULL;
-                                                                       ValaExpression* _tmp609_ = NULL;
-                                                                       ValaDataType* _tmp610_ = NULL;
-                                                                       ValaDataType* _tmp611_ = NULL;
+                                                                       ValaExpression* _tmp604_ = NULL;
+                                                                       ValaExpression* _tmp605_ = NULL;
+                                                                       ValaBinaryExpression* _tmp606_ = NULL;
+                                                                       ValaCodeContext* _tmp607_ = NULL;
+                                                                       ValaSemanticAnalyzer* _tmp608_ = NULL;
+                                                                       ValaSemanticAnalyzer* _tmp609_ = NULL;
+                                                                       ValaBinaryExpression* _tmp610_ = NULL;
+                                                                       ValaExpression* _tmp611_ = NULL;
                                                                        ValaExpression* _tmp612_ = NULL;
-                                                                       ValaExpression* _tmp613_ = NULL;
+                                                                       ValaDataType* _tmp613_ = NULL;
                                                                        ValaDataType* _tmp614_ = NULL;
-                                                                       ValaDataType* _tmp615_ = NULL;
-                                                                       ValaDataType* _tmp616_ = NULL;
-                                                                       _tmp601_ = vala_binary_expression_get_left (self);
-                                                                       _tmp602_ = _tmp601_;
-                                                                       _tmp603_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp602_, VALA_TYPE_BINARY_EXPRESSION, ValaBinaryExpression));
-                                                                       lbe = _tmp603_;
-                                                                       _tmp604_ = context;
-                                                                       _tmp605_ = vala_code_context_get_analyzer (_tmp604_);
-                                                                       _tmp606_ = _tmp605_;
-                                                                       _tmp607_ = lbe;
-                                                                       _tmp608_ = vala_binary_expression_get_right (_tmp607_);
+                                                                       ValaExpression* _tmp615_ = NULL;
+                                                                       ValaExpression* _tmp616_ = NULL;
+                                                                       ValaDataType* _tmp617_ = NULL;
+                                                                       ValaDataType* _tmp618_ = NULL;
+                                                                       ValaDataType* _tmp619_ = NULL;
+                                                                       _tmp604_ = vala_binary_expression_get_left (self);
+                                                                       _tmp605_ = _tmp604_;
+                                                                       _tmp606_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp605_, VALA_TYPE_BINARY_EXPRESSION, ValaBinaryExpression));
+                                                                       lbe = _tmp606_;
+                                                                       _tmp607_ = context;
+                                                                       _tmp608_ = vala_code_context_get_analyzer (_tmp607_);
                                                                        _tmp609_ = _tmp608_;
-                                                                       _tmp610_ = vala_expression_get_target_type (_tmp609_);
-                                                                       _tmp611_ = _tmp610_;
-                                                                       _tmp612_ = vala_binary_expression_get_right (self);
-                                                                       _tmp613_ = _tmp612_;
-                                                                       _tmp614_ = vala_expression_get_target_type (_tmp613_);
-                                                                       _tmp615_ = _tmp614_;
-                                                                       _tmp616_ = vala_semantic_analyzer_get_arithmetic_result_type (_tmp606_, _tmp611_, _tmp615_);
+                                                                       _tmp610_ = lbe;
+                                                                       _tmp611_ = vala_binary_expression_get_right (_tmp610_);
+                                                                       _tmp612_ = _tmp611_;
+                                                                       _tmp613_ = vala_expression_get_target_type (_tmp612_);
+                                                                       _tmp614_ = _tmp613_;
+                                                                       _tmp615_ = vala_binary_expression_get_right (self);
+                                                                       _tmp616_ = _tmp615_;
+                                                                       _tmp617_ = vala_expression_get_target_type (_tmp616_);
+                                                                       _tmp618_ = _tmp617_;
+                                                                       _tmp619_ = vala_semantic_analyzer_get_arithmetic_result_type (_tmp609_, _tmp614_, _tmp618_);
                                                                        _vala_code_node_unref0 (resulting_type);
-                                                                       resulting_type = _tmp616_;
+                                                                       resulting_type = _tmp619_;
                                                                        _vala_code_node_unref0 (lbe);
                                                                } else {
-                                                                       ValaCodeContext* _tmp617_ = NULL;
-                                                                       ValaSemanticAnalyzer* _tmp618_ = NULL;
-                                                                       ValaSemanticAnalyzer* _tmp619_ = NULL;
-                                                                       ValaExpression* _tmp620_ = NULL;
-                                                                       ValaExpression* _tmp621_ = NULL;
-                                                                       ValaDataType* _tmp622_ = NULL;
-                                                                       ValaDataType* _tmp623_ = NULL;
+                                                                       ValaCodeContext* _tmp620_ = NULL;
+                                                                       ValaSemanticAnalyzer* _tmp621_ = NULL;
+                                                                       ValaSemanticAnalyzer* _tmp622_ = NULL;
+                                                                       ValaExpression* _tmp623_ = NULL;
                                                                        ValaExpression* _tmp624_ = NULL;
-                                                                       ValaExpression* _tmp625_ = NULL;
+                                                                       ValaDataType* _tmp625_ = NULL;
                                                                        ValaDataType* _tmp626_ = NULL;
-                                                                       ValaDataType* _tmp627_ = NULL;
-                                                                       ValaDataType* _tmp628_ = NULL;
-                                                                       _tmp617_ = context;
-                                                                       _tmp618_ = vala_code_context_get_analyzer (_tmp617_);
-                                                                       _tmp619_ = _tmp618_;
-                                                                       _tmp620_ = vala_binary_expression_get_left (self);
-                                                                       _tmp621_ = _tmp620_;
-                                                                       _tmp622_ = vala_expression_get_target_type (_tmp621_);
-                                                                       _tmp623_ = _tmp622_;
-                                                                       _tmp624_ = vala_binary_expression_get_right (self);
-                                                                       _tmp625_ = _tmp624_;
-                                                                       _tmp626_ = vala_expression_get_target_type (_tmp625_);
-                                                                       _tmp627_ = _tmp626_;
-                                                                       _tmp628_ = vala_semantic_analyzer_get_arithmetic_result_type (_tmp619_, _tmp623_, _tmp627_);
+                                                                       ValaExpression* _tmp627_ = NULL;
+                                                                       ValaExpression* _tmp628_ = NULL;
+                                                                       ValaDataType* _tmp629_ = NULL;
+                                                                       ValaDataType* _tmp630_ = NULL;
+                                                                       ValaDataType* _tmp631_ = NULL;
+                                                                       _tmp620_ = context;
+                                                                       _tmp621_ = vala_code_context_get_analyzer (_tmp620_);
+                                                                       _tmp622_ = _tmp621_;
+                                                                       _tmp623_ = vala_binary_expression_get_left (self);
+                                                                       _tmp624_ = _tmp623_;
+                                                                       _tmp625_ = vala_expression_get_target_type (_tmp624_);
+                                                                       _tmp626_ = _tmp625_;
+                                                                       _tmp627_ = vala_binary_expression_get_right (self);
+                                                                       _tmp628_ = _tmp627_;
+                                                                       _tmp629_ = vala_expression_get_target_type (_tmp628_);
+                                                                       _tmp630_ = _tmp629_;
+                                                                       _tmp631_ = vala_semantic_analyzer_get_arithmetic_result_type (_tmp622_, _tmp626_, _tmp630_);
                                                                        _vala_code_node_unref0 (resulting_type);
-                                                                       resulting_type = _tmp628_;
+                                                                       resulting_type = _tmp631_;
                                                                }
-                                                               _tmp629_ = resulting_type;
-                                                               if (_tmp629_ == NULL) {
-                                                                       ValaSourceReference* _tmp630_ = NULL;
-                                                                       ValaSourceReference* _tmp631_ = NULL;
-                                                                       ValaExpression* _tmp632_ = NULL;
-                                                                       ValaExpression* _tmp633_ = NULL;
-                                                                       ValaDataType* _tmp634_ = NULL;
-                                                                       ValaDataType* _tmp635_ = NULL;
-                                                                       gchar* _tmp636_ = NULL;
-                                                                       gchar* _tmp637_ = NULL;
-                                                                       ValaExpression* _tmp638_ = NULL;
-                                                                       ValaExpression* _tmp639_ = NULL;
-                                                                       ValaDataType* _tmp640_ = NULL;
-                                                                       ValaDataType* _tmp641_ = NULL;
-                                                                       gchar* _tmp642_ = NULL;
-                                                                       gchar* _tmp643_ = NULL;
-                                                                       gchar* _tmp644_ = NULL;
+                                                               _tmp632_ = resulting_type;
+                                                               if (_tmp632_ == NULL) {
+                                                                       ValaSourceReference* _tmp633_ = NULL;
+                                                                       ValaSourceReference* _tmp634_ = NULL;
+                                                                       ValaExpression* _tmp635_ = NULL;
+                                                                       ValaExpression* _tmp636_ = NULL;
+                                                                       ValaDataType* _tmp637_ = NULL;
+                                                                       ValaDataType* _tmp638_ = NULL;
+                                                                       gchar* _tmp639_ = NULL;
+                                                                       gchar* _tmp640_ = NULL;
+                                                                       ValaExpression* _tmp641_ = NULL;
+                                                                       ValaExpression* _tmp642_ = NULL;
+                                                                       ValaDataType* _tmp643_ = NULL;
+                                                                       ValaDataType* _tmp644_ = NULL;
                                                                        gchar* _tmp645_ = NULL;
+                                                                       gchar* _tmp646_ = NULL;
+                                                                       gchar* _tmp647_ = NULL;
+                                                                       gchar* _tmp648_ = NULL;
                                                                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                                                                       _tmp630_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                       _tmp631_ = _tmp630_;
-                                                                       _tmp632_ = vala_binary_expression_get_left (self);
-                                                                       _tmp633_ = _tmp632_;
-                                                                       _tmp634_ = vala_expression_get_value_type (_tmp633_);
-                                                                       _tmp635_ = _tmp634_;
-                                                                       _tmp636_ = vala_code_node_to_string ((ValaCodeNode*) _tmp635_);
-                                                                       _tmp637_ = _tmp636_;
-                                                                       _tmp638_ = vala_binary_expression_get_right (self);
-                                                                       _tmp639_ = _tmp638_;
-                                                                       _tmp640_ = vala_expression_get_value_type (_tmp639_);
-                                                                       _tmp641_ = _tmp640_;
-                                                                       _tmp642_ = vala_code_node_to_string ((ValaCodeNode*) _tmp641_);
-                                                                       _tmp643_ = _tmp642_;
-                                                                       _tmp644_ = g_strdup_printf ("Relational operation not supported for types `%s' and `%s'", _tmp637_, _tmp643_);
-                                                                       _tmp645_ = _tmp644_;
-                                                                       vala_report_error (_tmp631_, _tmp645_);
-                                                                       _g_free0 (_tmp645_);
-                                                                       _g_free0 (_tmp643_);
-                                                                       _g_free0 (_tmp637_);
+                                                                       _tmp633_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                       _tmp634_ = _tmp633_;
+                                                                       _tmp635_ = vala_binary_expression_get_left (self);
+                                                                       _tmp636_ = _tmp635_;
+                                                                       _tmp637_ = vala_expression_get_value_type (_tmp636_);
+                                                                       _tmp638_ = _tmp637_;
+                                                                       _tmp639_ = vala_code_node_to_string ((ValaCodeNode*) _tmp638_);
+                                                                       _tmp640_ = _tmp639_;
+                                                                       _tmp641_ = vala_binary_expression_get_right (self);
+                                                                       _tmp642_ = _tmp641_;
+                                                                       _tmp643_ = vala_expression_get_value_type (_tmp642_);
+                                                                       _tmp644_ = _tmp643_;
+                                                                       _tmp645_ = vala_code_node_to_string ((ValaCodeNode*) _tmp644_);
+                                                                       _tmp646_ = _tmp645_;
+                                                                       _tmp647_ = g_strdup_printf ("Relational operation not supported for types `%s' and `%s'", _tmp640_, _tmp646_);
+                                                                       _tmp648_ = _tmp647_;
+                                                                       vala_report_error (_tmp634_, _tmp648_);
+                                                                       _g_free0 (_tmp648_);
+                                                                       _g_free0 (_tmp646_);
+                                                                       _g_free0 (_tmp640_);
                                                                        result = FALSE;
                                                                        _vala_code_node_unref0 (resulting_type);
                                                                        return result;
                                                                }
-                                                               _tmp646_ = self->chained;
-                                                               if (!_tmp646_) {
-                                                                       ValaExpression* _tmp647_ = NULL;
-                                                                       ValaExpression* _tmp648_ = NULL;
-                                                                       ValaDataType* _tmp649_ = NULL;
-                                                                       ValaDataType* _tmp650_ = NULL;
-                                                                       ValaDataType* _tmp651_ = NULL;
-                                                                       _tmp647_ = vala_binary_expression_get_left (self);
-                                                                       _tmp648_ = _tmp647_;
-                                                                       _tmp649_ = resulting_type;
-                                                                       _tmp650_ = vala_data_type_copy (_tmp649_);
+                                                               _tmp649_ = self->chained;
+                                                               if (!_tmp649_) {
+                                                                       ValaExpression* _tmp650_ = NULL;
+                                                                       ValaExpression* _tmp651_ = NULL;
+                                                                       ValaDataType* _tmp652_ = NULL;
+                                                                       ValaDataType* _tmp653_ = NULL;
+                                                                       ValaDataType* _tmp654_ = NULL;
+                                                                       _tmp650_ = vala_binary_expression_get_left (self);
                                                                        _tmp651_ = _tmp650_;
-                                                                       vala_expression_set_target_type (_tmp648_, _tmp651_);
-                                                                       _vala_code_node_unref0 (_tmp651_);
+                                                                       _tmp652_ = resulting_type;
+                                                                       _tmp653_ = vala_data_type_copy (_tmp652_);
+                                                                       _tmp654_ = _tmp653_;
+                                                                       vala_expression_set_target_type (_tmp651_, _tmp654_);
+                                                                       _vala_code_node_unref0 (_tmp654_);
                                                                }
-                                                               _tmp652_ = vala_binary_expression_get_right (self);
-                                                               _tmp653_ = _tmp652_;
-                                                               _tmp654_ = resulting_type;
-                                                               _tmp655_ = vala_data_type_copy (_tmp654_);
+                                                               _tmp655_ = vala_binary_expression_get_right (self);
                                                                _tmp656_ = _tmp655_;
-                                                               vala_expression_set_target_type (_tmp653_, _tmp656_);
-                                                               _vala_code_node_unref0 (_tmp656_);
-                                                               _tmp657_ = vala_binary_expression_get_left (self);
-                                                               _tmp658_ = _tmp657_;
-                                                               _tmp659_ = vala_expression_get_target_type (_tmp658_);
-                                                               _tmp660_ = _tmp659_;
-                                                               vala_data_type_set_nullable (_tmp660_, FALSE);
-                                                               _tmp661_ = vala_binary_expression_get_right (self);
-                                                               _tmp662_ = _tmp661_;
-                                                               _tmp663_ = vala_expression_get_target_type (_tmp662_);
-                                                               _tmp664_ = _tmp663_;
-                                                               vala_data_type_set_nullable (_tmp664_, FALSE);
+                                                               _tmp657_ = resulting_type;
+                                                               _tmp658_ = vala_data_type_copy (_tmp657_);
+                                                               _tmp659_ = _tmp658_;
+                                                               vala_expression_set_target_type (_tmp656_, _tmp659_);
+                                                               _vala_code_node_unref0 (_tmp659_);
+                                                               _tmp660_ = vala_binary_expression_get_left (self);
+                                                               _tmp661_ = _tmp660_;
+                                                               _tmp662_ = vala_expression_get_target_type (_tmp661_);
+                                                               _tmp663_ = _tmp662_;
+                                                               vala_data_type_set_nullable (_tmp663_, FALSE);
+                                                               _tmp664_ = vala_binary_expression_get_right (self);
+                                                               _tmp665_ = _tmp664_;
+                                                               _tmp666_ = vala_expression_get_target_type (_tmp665_);
+                                                               _tmp667_ = _tmp666_;
+                                                               vala_data_type_set_nullable (_tmp667_, FALSE);
                                                                _vala_code_node_unref0 (resulting_type);
                                                        }
                                                }
-                                               _tmp665_ = context;
-                                               _tmp666_ = vala_code_context_get_analyzer (_tmp665_);
-                                               _tmp667_ = _tmp666_;
-                                               _tmp668_ = _tmp667_->bool_type;
-                                               vala_expression_set_value_type ((ValaExpression*) self, _tmp668_);
+                                               _tmp668_ = context;
+                                               _tmp669_ = vala_code_context_get_analyzer (_tmp668_);
+                                               _tmp670_ = _tmp669_;
+                                               _tmp671_ = _tmp670_->bool_type;
+                                               vala_expression_set_value_type ((ValaExpression*) self, _tmp671_);
                                        } else {
-                                               gboolean _tmp669_ = FALSE;
-                                               ValaBinaryOperator _tmp670_ = 0;
-                                               _tmp670_ = self->priv->_operator;
-                                               if (_tmp670_ == VALA_BINARY_OPERATOR_EQUALITY) {
-                                                       _tmp669_ = TRUE;
+                                               gboolean _tmp672_ = FALSE;
+                                               ValaBinaryOperator _tmp673_ = 0;
+                                               _tmp673_ = self->priv->_operator;
+                                               if (_tmp673_ == VALA_BINARY_OPERATOR_EQUALITY) {
+                                                       _tmp672_ = TRUE;
                                                } else {
-                                                       ValaBinaryOperator _tmp671_ = 0;
-                                                       _tmp671_ = self->priv->_operator;
-                                                       _tmp669_ = _tmp671_ == VALA_BINARY_OPERATOR_INEQUALITY;
+                                                       ValaBinaryOperator _tmp674_ = 0;
+                                                       _tmp674_ = self->priv->_operator;
+                                                       _tmp672_ = _tmp674_ == VALA_BINARY_OPERATOR_INEQUALITY;
                                                }
-                                               if (_tmp669_) {
-                                                       gboolean _tmp672_ = FALSE;
-                                                       ValaExpression* _tmp673_ = NULL;
-                                                       ValaExpression* _tmp674_ = NULL;
-                                                       ValaDataType* _tmp675_ = NULL;
-                                                       ValaDataType* _tmp676_ = NULL;
+                                               if (_tmp672_) {
+                                                       gboolean _tmp675_ = FALSE;
+                                                       ValaExpression* _tmp676_ = NULL;
                                                        ValaExpression* _tmp677_ = NULL;
-                                                       ValaExpression* _tmp678_ = NULL;
+                                                       ValaDataType* _tmp678_ = NULL;
                                                        ValaDataType* _tmp679_ = NULL;
-                                                       ValaDataType* _tmp680_ = NULL;
-                                                       gboolean _tmp681_ = FALSE;
+                                                       ValaExpression* _tmp680_ = NULL;
+                                                       ValaExpression* _tmp681_ = NULL;
+                                                       ValaDataType* _tmp682_ = NULL;
+                                                       ValaDataType* _tmp683_ = NULL;
+                                                       gboolean _tmp684_ = FALSE;
                                                        ValaDataType* resulting_type = NULL;
-                                                       ValaCodeContext* _tmp707_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp708_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp709_ = NULL;
-                                                       ValaExpression* _tmp710_ = NULL;
-                                                       ValaExpression* _tmp711_ = NULL;
-                                                       ValaDataType* _tmp712_ = NULL;
-                                                       ValaDataType* _tmp713_ = NULL;
+                                                       ValaCodeContext* _tmp710_ = NULL;
+                                                       ValaSemanticAnalyzer* _tmp711_ = NULL;
+                                                       ValaSemanticAnalyzer* _tmp712_ = NULL;
+                                                       ValaExpression* _tmp713_ = NULL;
                                                        ValaExpression* _tmp714_ = NULL;
-                                                       ValaExpression* _tmp715_ = NULL;
+                                                       ValaDataType* _tmp715_ = NULL;
                                                        ValaDataType* _tmp716_ = NULL;
-                                                       ValaDataType* _tmp717_ = NULL;
-                                                       ValaDataType* _tmp718_ = NULL;
+                                                       ValaExpression* _tmp717_ = NULL;
+                                                       ValaExpression* _tmp718_ = NULL;
                                                        ValaDataType* _tmp719_ = NULL;
-                                                       ValaExpression* _tmp730_ = NULL;
-                                                       ValaExpression* _tmp731_ = NULL;
-                                                       ValaDataType* _tmp732_ = NULL;
-                                                       ValaDataType* _tmp733_ = NULL;
+                                                       ValaDataType* _tmp720_ = NULL;
+                                                       ValaDataType* _tmp721_ = NULL;
+                                                       ValaDataType* _tmp722_ = NULL;
+                                                       ValaExpression* _tmp733_ = NULL;
                                                        ValaExpression* _tmp734_ = NULL;
-                                                       ValaExpression* _tmp735_ = NULL;
+                                                       ValaDataType* _tmp735_ = NULL;
                                                        ValaDataType* _tmp736_ = NULL;
-                                                       ValaDataType* _tmp737_ = NULL;
+                                                       ValaExpression* _tmp737_ = NULL;
                                                        ValaExpression* _tmp738_ = NULL;
-                                                       ValaExpression* _tmp739_ = NULL;
+                                                       ValaDataType* _tmp739_ = NULL;
                                                        ValaDataType* _tmp740_ = NULL;
-                                                       ValaDataType* _tmp741_ = NULL;
-                                                       gboolean _tmp742_ = FALSE;
-                                                       gboolean _tmp743_ = FALSE;
-                                                       ValaExpression* _tmp744_ = NULL;
-                                                       ValaExpression* _tmp745_ = NULL;
-                                                       ValaDataType* _tmp746_ = NULL;
-                                                       ValaDataType* _tmp747_ = NULL;
-                                                       gboolean _tmp748_ = FALSE;
-                                                       gboolean _tmp749_ = FALSE;
-                                                       ValaCodeContext* _tmp770_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp771_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp772_ = NULL;
-                                                       ValaDataType* _tmp773_ = NULL;
-                                                       _tmp673_ = vala_binary_expression_get_right (self);
-                                                       _tmp674_ = _tmp673_;
-                                                       _tmp675_ = vala_expression_get_value_type (_tmp674_);
-                                                       _tmp676_ = _tmp675_;
-                                                       _tmp677_ = vala_binary_expression_get_left (self);
-                                                       _tmp678_ = _tmp677_;
-                                                       _tmp679_ = vala_expression_get_value_type (_tmp678_);
-                                                       _tmp680_ = _tmp679_;
-                                                       _tmp681_ = vala_data_type_compatible (_tmp676_, _tmp680_);
-                                                       if (!_tmp681_) {
-                                                               ValaExpression* _tmp682_ = NULL;
-                                                               ValaExpression* _tmp683_ = NULL;
-                                                               ValaDataType* _tmp684_ = NULL;
-                                                               ValaDataType* _tmp685_ = NULL;
+                                                       ValaExpression* _tmp741_ = NULL;
+                                                       ValaExpression* _tmp742_ = NULL;
+                                                       ValaDataType* _tmp743_ = NULL;
+                                                       ValaDataType* _tmp744_ = NULL;
+                                                       gboolean _tmp745_ = FALSE;
+                                                       gboolean _tmp746_ = FALSE;
+                                                       ValaExpression* _tmp747_ = NULL;
+                                                       ValaExpression* _tmp748_ = NULL;
+                                                       ValaDataType* _tmp749_ = NULL;
+                                                       ValaDataType* _tmp750_ = NULL;
+                                                       gboolean _tmp751_ = FALSE;
+                                                       gboolean _tmp752_ = FALSE;
+                                                       ValaCodeContext* _tmp761_ = NULL;
+                                                       ValaSemanticAnalyzer* _tmp762_ = NULL;
+                                                       ValaSemanticAnalyzer* _tmp763_ = NULL;
+                                                       ValaDataType* _tmp764_ = NULL;
+                                                       _tmp676_ = vala_binary_expression_get_right (self);
+                                                       _tmp677_ = _tmp676_;
+                                                       _tmp678_ = vala_expression_get_value_type (_tmp677_);
+                                                       _tmp679_ = _tmp678_;
+                                                       _tmp680_ = vala_binary_expression_get_left (self);
+                                                       _tmp681_ = _tmp680_;
+                                                       _tmp682_ = vala_expression_get_value_type (_tmp681_);
+                                                       _tmp683_ = _tmp682_;
+                                                       _tmp684_ = vala_data_type_compatible (_tmp679_, _tmp683_);
+                                                       if (!_tmp684_) {
+                                                               ValaExpression* _tmp685_ = NULL;
                                                                ValaExpression* _tmp686_ = NULL;
-                                                               ValaExpression* _tmp687_ = NULL;
+                                                               ValaDataType* _tmp687_ = NULL;
                                                                ValaDataType* _tmp688_ = NULL;
-                                                               ValaDataType* _tmp689_ = NULL;
-                                                               gboolean _tmp690_ = FALSE;
-                                                               _tmp682_ = vala_binary_expression_get_left (self);
-                                                               _tmp683_ = _tmp682_;
-                                                               _tmp684_ = vala_expression_get_value_type (_tmp683_);
-                                                               _tmp685_ = _tmp684_;
-                                                               _tmp686_ = vala_binary_expression_get_right (self);
-                                                               _tmp687_ = _tmp686_;
-                                                               _tmp688_ = vala_expression_get_value_type (_tmp687_);
-                                                               _tmp689_ = _tmp688_;
-                                                               _tmp690_ = vala_data_type_compatible (_tmp685_, _tmp689_);
-                                                               _tmp672_ = !_tmp690_;
+                                                               ValaExpression* _tmp689_ = NULL;
+                                                               ValaExpression* _tmp690_ = NULL;
+                                                               ValaDataType* _tmp691_ = NULL;
+                                                               ValaDataType* _tmp692_ = NULL;
+                                                               gboolean _tmp693_ = FALSE;
+                                                               _tmp685_ = vala_binary_expression_get_left (self);
+                                                               _tmp686_ = _tmp685_;
+                                                               _tmp687_ = vala_expression_get_value_type (_tmp686_);
+                                                               _tmp688_ = _tmp687_;
+                                                               _tmp689_ = vala_binary_expression_get_right (self);
+                                                               _tmp690_ = _tmp689_;
+                                                               _tmp691_ = vala_expression_get_value_type (_tmp690_);
+                                                               _tmp692_ = _tmp691_;
+                                                               _tmp693_ = vala_data_type_compatible (_tmp688_, _tmp692_);
+                                                               _tmp675_ = !_tmp693_;
                                                        } else {
-                                                               _tmp672_ = FALSE;
+                                                               _tmp675_ = FALSE;
                                                        }
-                                                       if (_tmp672_) {
-                                                               ValaSourceReference* _tmp691_ = NULL;
-                                                               ValaSourceReference* _tmp692_ = NULL;
-                                                               ValaExpression* _tmp693_ = NULL;
-                                                               ValaExpression* _tmp694_ = NULL;
-                                                               ValaDataType* _tmp695_ = NULL;
-                                                               ValaDataType* _tmp696_ = NULL;
-                                                               gchar* _tmp697_ = NULL;
-                                                               gchar* _tmp698_ = NULL;
-                                                               ValaExpression* _tmp699_ = NULL;
-                                                               ValaExpression* _tmp700_ = NULL;
-                                                               ValaDataType* _tmp701_ = NULL;
-                                                               ValaDataType* _tmp702_ = NULL;
-                                                               gchar* _tmp703_ = NULL;
-                                                               gchar* _tmp704_ = NULL;
-                                                               gchar* _tmp705_ = NULL;
+                                                       if (_tmp675_) {
+                                                               ValaSourceReference* _tmp694_ = NULL;
+                                                               ValaSourceReference* _tmp695_ = NULL;
+                                                               ValaExpression* _tmp696_ = NULL;
+                                                               ValaExpression* _tmp697_ = NULL;
+                                                               ValaDataType* _tmp698_ = NULL;
+                                                               ValaDataType* _tmp699_ = NULL;
+                                                               gchar* _tmp700_ = NULL;
+                                                               gchar* _tmp701_ = NULL;
+                                                               ValaExpression* _tmp702_ = NULL;
+                                                               ValaExpression* _tmp703_ = NULL;
+                                                               ValaDataType* _tmp704_ = NULL;
+                                                               ValaDataType* _tmp705_ = NULL;
                                                                gchar* _tmp706_ = NULL;
-                                                               _tmp691_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                               _tmp692_ = _tmp691_;
-                                                               _tmp693_ = vala_binary_expression_get_right (self);
-                                                               _tmp694_ = _tmp693_;
-                                                               _tmp695_ = vala_expression_get_value_type (_tmp694_);
-                                                               _tmp696_ = _tmp695_;
-                                                               _tmp697_ = vala_code_node_to_string ((ValaCodeNode*) _tmp696_);
-                                                               _tmp698_ = _tmp697_;
-                                                               _tmp699_ = vala_binary_expression_get_left (self);
-                                                               _tmp700_ = _tmp699_;
-                                                               _tmp701_ = vala_expression_get_value_type (_tmp700_);
-                                                               _tmp702_ = _tmp701_;
-                                                               _tmp703_ = vala_code_node_to_string ((ValaCodeNode*) _tmp702_);
-                                                               _tmp704_ = _tmp703_;
-                                                               _tmp705_ = g_strdup_printf ("Equality operation: `%s' and `%s' are incompatible", _tmp698_, _tmp704_);
-                                                               _tmp706_ = _tmp705_;
-                                                               vala_report_error (_tmp692_, _tmp706_);
-                                                               _g_free0 (_tmp706_);
-                                                               _g_free0 (_tmp704_);
-                                                               _g_free0 (_tmp698_);
+                                                               gchar* _tmp707_ = NULL;
+                                                               gchar* _tmp708_ = NULL;
+                                                               gchar* _tmp709_ = NULL;
+                                                               _tmp694_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                               _tmp695_ = _tmp694_;
+                                                               _tmp696_ = vala_binary_expression_get_right (self);
+                                                               _tmp697_ = _tmp696_;
+                                                               _tmp698_ = vala_expression_get_value_type (_tmp697_);
+                                                               _tmp699_ = _tmp698_;
+                                                               _tmp700_ = vala_code_node_to_string ((ValaCodeNode*) _tmp699_);
+                                                               _tmp701_ = _tmp700_;
+                                                               _tmp702_ = vala_binary_expression_get_left (self);
+                                                               _tmp703_ = _tmp702_;
+                                                               _tmp704_ = vala_expression_get_value_type (_tmp703_);
+                                                               _tmp705_ = _tmp704_;
+                                                               _tmp706_ = vala_code_node_to_string ((ValaCodeNode*) _tmp705_);
+                                                               _tmp707_ = _tmp706_;
+                                                               _tmp708_ = g_strdup_printf ("Equality operation: `%s' and `%s' are incompatible", _tmp701_, _tmp707_);
+                                                               _tmp709_ = _tmp708_;
+                                                               vala_report_error (_tmp695_, _tmp709_);
+                                                               _g_free0 (_tmp709_);
+                                                               _g_free0 (_tmp707_);
+                                                               _g_free0 (_tmp701_);
                                                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                                                result = FALSE;
                                                                return result;
                                                        }
-                                                       _tmp707_ = context;
-                                                       _tmp708_ = vala_code_context_get_analyzer (_tmp707_);
-                                                       _tmp709_ = _tmp708_;
-                                                       _tmp710_ = vala_binary_expression_get_left (self);
-                                                       _tmp711_ = _tmp710_;
-                                                       _tmp712_ = vala_expression_get_target_type (_tmp711_);
-                                                       _tmp713_ = _tmp712_;
-                                                       _tmp714_ = vala_binary_expression_get_right (self);
-                                                       _tmp715_ = _tmp714_;
-                                                       _tmp716_ = vala_expression_get_target_type (_tmp715_);
-                                                       _tmp717_ = _tmp716_;
-                                                       _tmp718_ = vala_semantic_analyzer_get_arithmetic_result_type (_tmp709_, _tmp713_, _tmp717_);
-                                                       resulting_type = _tmp718_;
-                                                       _tmp719_ = resulting_type;
-                                                       if (_tmp719_ != NULL) {
-                                                               ValaExpression* _tmp720_ = NULL;
-                                                               ValaExpression* _tmp721_ = NULL;
-                                                               ValaDataType* _tmp722_ = NULL;
-                                                               ValaDataType* _tmp723_ = NULL;
-                                                               ValaDataType* _tmp724_ = NULL;
-                                                               ValaExpression* _tmp725_ = NULL;
-                                                               ValaExpression* _tmp726_ = NULL;
+                                                       _tmp710_ = context;
+                                                       _tmp711_ = vala_code_context_get_analyzer (_tmp710_);
+                                                       _tmp712_ = _tmp711_;
+                                                       _tmp713_ = vala_binary_expression_get_left (self);
+                                                       _tmp714_ = _tmp713_;
+                                                       _tmp715_ = vala_expression_get_target_type (_tmp714_);
+                                                       _tmp716_ = _tmp715_;
+                                                       _tmp717_ = vala_binary_expression_get_right (self);
+                                                       _tmp718_ = _tmp717_;
+                                                       _tmp719_ = vala_expression_get_target_type (_tmp718_);
+                                                       _tmp720_ = _tmp719_;
+                                                       _tmp721_ = vala_semantic_analyzer_get_arithmetic_result_type (_tmp712_, _tmp716_, _tmp720_);
+                                                       resulting_type = _tmp721_;
+                                                       _tmp722_ = resulting_type;
+                                                       if (_tmp722_ != NULL) {
+                                                               ValaExpression* _tmp723_ = NULL;
+                                                               ValaExpression* _tmp724_ = NULL;
+                                                               ValaDataType* _tmp725_ = NULL;
+                                                               ValaDataType* _tmp726_ = NULL;
                                                                ValaDataType* _tmp727_ = NULL;
-                                                               ValaDataType* _tmp728_ = NULL;
-                                                               ValaDataType* _tmp729_ = NULL;
-                                                               _tmp720_ = vala_binary_expression_get_left (self);
-                                                               _tmp721_ = _tmp720_;
-                                                               _tmp722_ = resulting_type;
-                                                               _tmp723_ = vala_data_type_copy (_tmp722_);
+                                                               ValaExpression* _tmp728_ = NULL;
+                                                               ValaExpression* _tmp729_ = NULL;
+                                                               ValaDataType* _tmp730_ = NULL;
+                                                               ValaDataType* _tmp731_ = NULL;
+                                                               ValaDataType* _tmp732_ = NULL;
+                                                               _tmp723_ = vala_binary_expression_get_left (self);
                                                                _tmp724_ = _tmp723_;
-                                                               vala_expression_set_target_type (_tmp721_, _tmp724_);
-                                                               _vala_code_node_unref0 (_tmp724_);
-                                                               _tmp725_ = vala_binary_expression_get_right (self);
-                                                               _tmp726_ = _tmp725_;
-                                                               _tmp727_ = resulting_type;
-                                                               _tmp728_ = vala_data_type_copy (_tmp727_);
+                                                               _tmp725_ = resulting_type;
+                                                               _tmp726_ = vala_data_type_copy (_tmp725_);
+                                                               _tmp727_ = _tmp726_;
+                                                               vala_expression_set_target_type (_tmp724_, _tmp727_);
+                                                               _vala_code_node_unref0 (_tmp727_);
+                                                               _tmp728_ = vala_binary_expression_get_right (self);
                                                                _tmp729_ = _tmp728_;
-                                                               vala_expression_set_target_type (_tmp726_, _tmp729_);
-                                                               _vala_code_node_unref0 (_tmp729_);
+                                                               _tmp730_ = resulting_type;
+                                                               _tmp731_ = vala_data_type_copy (_tmp730_);
+                                                               _tmp732_ = _tmp731_;
+                                                               vala_expression_set_target_type (_tmp729_, _tmp732_);
+                                                               _vala_code_node_unref0 (_tmp732_);
                                                        }
-                                                       _tmp730_ = vala_binary_expression_get_left (self);
-                                                       _tmp731_ = _tmp730_;
-                                                       _tmp732_ = vala_expression_get_target_type (_tmp731_);
-                                                       _tmp733_ = _tmp732_;
-                                                       vala_data_type_set_value_owned (_tmp733_, FALSE);
-                                                       _tmp734_ = vala_binary_expression_get_right (self);
-                                                       _tmp735_ = _tmp734_;
-                                                       _tmp736_ = vala_expression_get_target_type (_tmp735_);
-                                                       _tmp737_ = _tmp736_;
-                                                       vala_data_type_set_value_owned (_tmp737_, FALSE);
-                                                       _tmp738_ = vala_binary_expression_get_left (self);
-                                                       _tmp739_ = _tmp738_;
-                                                       _tmp740_ = vala_expression_get_value_type (_tmp739_);
-                                                       _tmp741_ = _tmp740_;
-                                                       _tmp742_ = vala_data_type_get_nullable (_tmp741_);
-                                                       _tmp743_ = _tmp742_;
-                                                       _tmp744_ = vala_binary_expression_get_right (self);
-                                                       _tmp745_ = _tmp744_;
-                                                       _tmp746_ = vala_expression_get_value_type (_tmp745_);
-                                                       _tmp747_ = _tmp746_;
-                                                       _tmp748_ = vala_data_type_get_nullable (_tmp747_);
-                                                       _tmp749_ = _tmp748_;
-                                                       if (_tmp743_ != _tmp749_) {
-                                                               ValaExpression* _tmp750_ = NULL;
-                                                               ValaExpression* _tmp751_ = NULL;
-                                                               ValaDataType* _tmp752_ = NULL;
-                                                               ValaDataType* _tmp753_ = NULL;
-                                                               gboolean _tmp754_ = FALSE;
-                                                               gboolean _tmp755_ = FALSE;
-                                                               _tmp750_ = vala_binary_expression_get_left (self);
-                                                               _tmp751_ = _tmp750_;
-                                                               _tmp752_ = vala_expression_get_value_type (_tmp751_);
-                                                               _tmp753_ = _tmp752_;
-                                                               _tmp754_ = vala_data_type_get_nullable (_tmp753_);
-                                                               _tmp755_ = _tmp754_;
-                                                               if (!_tmp755_) {
-                                                                       ValaExpression* _tmp756_ = NULL;
-                                                                       ValaExpression* _tmp757_ = NULL;
-                                                                       ValaDataType* _tmp758_ = NULL;
-                                                                       ValaDataType* _tmp759_ = NULL;
-                                                                       _tmp756_ = vala_binary_expression_get_left (self);
-                                                                       _tmp757_ = _tmp756_;
-                                                                       _tmp758_ = vala_expression_get_target_type (_tmp757_);
-                                                                       _tmp759_ = _tmp758_;
-                                                                       vala_data_type_set_nullable (_tmp759_, TRUE);
-                                                               } else {
-                                                                       ValaExpression* _tmp760_ = NULL;
-                                                                       ValaExpression* _tmp761_ = NULL;
-                                                                       ValaDataType* _tmp762_ = NULL;
-                                                                       ValaDataType* _tmp763_ = NULL;
-                                                                       gboolean _tmp764_ = FALSE;
-                                                                       gboolean _tmp765_ = FALSE;
-                                                                       _tmp760_ = vala_binary_expression_get_right (self);
-                                                                       _tmp761_ = _tmp760_;
-                                                                       _tmp762_ = vala_expression_get_value_type (_tmp761_);
-                                                                       _tmp763_ = _tmp762_;
-                                                                       _tmp764_ = vala_data_type_get_nullable (_tmp763_);
-                                                                       _tmp765_ = _tmp764_;
-                                                                       if (!_tmp765_) {
-                                                                               ValaExpression* _tmp766_ = NULL;
-                                                                               ValaExpression* _tmp767_ = NULL;
-                                                                               ValaDataType* _tmp768_ = NULL;
-                                                                               ValaDataType* _tmp769_ = NULL;
-                                                                               _tmp766_ = vala_binary_expression_get_right (self);
-                                                                               _tmp767_ = _tmp766_;
-                                                                               _tmp768_ = vala_expression_get_target_type (_tmp767_);
-                                                                               _tmp769_ = _tmp768_;
-                                                                               vala_data_type_set_nullable (_tmp769_, TRUE);
-                                                                       }
-                                                               }
+                                                       _tmp733_ = vala_binary_expression_get_left (self);
+                                                       _tmp734_ = _tmp733_;
+                                                       _tmp735_ = vala_expression_get_target_type (_tmp734_);
+                                                       _tmp736_ = _tmp735_;
+                                                       vala_data_type_set_value_owned (_tmp736_, FALSE);
+                                                       _tmp737_ = vala_binary_expression_get_right (self);
+                                                       _tmp738_ = _tmp737_;
+                                                       _tmp739_ = vala_expression_get_target_type (_tmp738_);
+                                                       _tmp740_ = _tmp739_;
+                                                       vala_data_type_set_value_owned (_tmp740_, FALSE);
+                                                       _tmp741_ = vala_binary_expression_get_left (self);
+                                                       _tmp742_ = _tmp741_;
+                                                       _tmp743_ = vala_expression_get_value_type (_tmp742_);
+                                                       _tmp744_ = _tmp743_;
+                                                       _tmp745_ = vala_data_type_get_nullable (_tmp744_);
+                                                       _tmp746_ = _tmp745_;
+                                                       _tmp747_ = vala_binary_expression_get_right (self);
+                                                       _tmp748_ = _tmp747_;
+                                                       _tmp749_ = vala_expression_get_value_type (_tmp748_);
+                                                       _tmp750_ = _tmp749_;
+                                                       _tmp751_ = vala_data_type_get_nullable (_tmp750_);
+                                                       _tmp752_ = _tmp751_;
+                                                       if (_tmp746_ != _tmp752_) {
+                                                               ValaExpression* _tmp753_ = NULL;
+                                                               ValaExpression* _tmp754_ = NULL;
+                                                               ValaDataType* _tmp755_ = NULL;
+                                                               ValaDataType* _tmp756_ = NULL;
+                                                               ValaExpression* _tmp757_ = NULL;
+                                                               ValaExpression* _tmp758_ = NULL;
+                                                               ValaDataType* _tmp759_ = NULL;
+                                                               ValaDataType* _tmp760_ = NULL;
+                                                               _tmp753_ = vala_binary_expression_get_left (self);
+                                                               _tmp754_ = _tmp753_;
+                                                               _tmp755_ = vala_expression_get_target_type (_tmp754_);
+                                                               _tmp756_ = _tmp755_;
+                                                               vala_data_type_set_nullable (_tmp756_, TRUE);
+                                                               _tmp757_ = vala_binary_expression_get_right (self);
+                                                               _tmp758_ = _tmp757_;
+                                                               _tmp759_ = vala_expression_get_target_type (_tmp758_);
+                                                               _tmp760_ = _tmp759_;
+                                                               vala_data_type_set_nullable (_tmp760_, TRUE);
                                                        }
-                                                       _tmp770_ = context;
-                                                       _tmp771_ = vala_code_context_get_analyzer (_tmp770_);
-                                                       _tmp772_ = _tmp771_;
-                                                       _tmp773_ = _tmp772_->bool_type;
-                                                       vala_expression_set_value_type ((ValaExpression*) self, _tmp773_);
+                                                       _tmp761_ = context;
+                                                       _tmp762_ = vala_code_context_get_analyzer (_tmp761_);
+                                                       _tmp763_ = _tmp762_;
+                                                       _tmp764_ = _tmp763_->bool_type;
+                                                       vala_expression_set_value_type ((ValaExpression*) self, _tmp764_);
                                                        _vala_code_node_unref0 (resulting_type);
                                                } else {
-                                                       gboolean _tmp774_ = FALSE;
-                                                       ValaBinaryOperator _tmp775_ = 0;
-                                                       _tmp775_ = self->priv->_operator;
-                                                       if (_tmp775_ == VALA_BINARY_OPERATOR_BITWISE_AND) {
-                                                               _tmp774_ = TRUE;
+                                                       gboolean _tmp765_ = FALSE;
+                                                       ValaBinaryOperator _tmp766_ = 0;
+                                                       _tmp766_ = self->priv->_operator;
+                                                       if (_tmp766_ == VALA_BINARY_OPERATOR_BITWISE_AND) {
+                                                               _tmp765_ = TRUE;
                                                        } else {
-                                                               ValaBinaryOperator _tmp776_ = 0;
-                                                               _tmp776_ = self->priv->_operator;
-                                                               _tmp774_ = _tmp776_ == VALA_BINARY_OPERATOR_BITWISE_OR;
+                                                               ValaBinaryOperator _tmp767_ = 0;
+                                                               _tmp767_ = self->priv->_operator;
+                                                               _tmp765_ = _tmp767_ == VALA_BINARY_OPERATOR_BITWISE_OR;
                                                        }
-                                                       if (_tmp774_) {
+                                                       if (_tmp765_) {
+                                                               ValaExpression* _tmp768_ = NULL;
+                                                               ValaExpression* _tmp769_ = NULL;
+                                                               ValaDataType* _tmp770_ = NULL;
+                                                               ValaDataType* _tmp771_ = NULL;
+                                                               ValaExpression* _tmp772_ = NULL;
+                                                               ValaExpression* _tmp773_ = NULL;
+                                                               ValaDataType* _tmp774_ = NULL;
+                                                               ValaDataType* _tmp775_ = NULL;
+                                                               ValaExpression* _tmp776_ = NULL;
                                                                ValaExpression* _tmp777_ = NULL;
-                                                               ValaExpression* _tmp778_ = NULL;
+                                                               ValaDataType* _tmp778_ = NULL;
                                                                ValaDataType* _tmp779_ = NULL;
                                                                ValaDataType* _tmp780_ = NULL;
-                                                               ValaExpression* _tmp781_ = NULL;
-                                                               ValaExpression* _tmp782_ = NULL;
-                                                               ValaDataType* _tmp783_ = NULL;
-                                                               ValaDataType* _tmp784_ = NULL;
-                                                               ValaExpression* _tmp785_ = NULL;
-                                                               ValaExpression* _tmp786_ = NULL;
-                                                               ValaDataType* _tmp787_ = NULL;
-                                                               ValaDataType* _tmp788_ = NULL;
-                                                               ValaDataType* _tmp789_ = NULL;
-                                                               ValaDataType* _tmp790_ = NULL;
-                                                               _tmp777_ = vala_binary_expression_get_left (self);
-                                                               _tmp778_ = _tmp777_;
-                                                               _tmp779_ = vala_expression_get_target_type (_tmp778_);
-                                                               _tmp780_ = _tmp779_;
-                                                               vala_data_type_set_nullable (_tmp780_, FALSE);
-                                                               _tmp781_ = vala_binary_expression_get_right (self);
-                                                               _tmp782_ = _tmp781_;
-                                                               _tmp783_ = vala_expression_get_target_type (_tmp782_);
-                                                               _tmp784_ = _tmp783_;
-                                                               vala_data_type_set_nullable (_tmp784_, FALSE);
-                                                               _tmp785_ = vala_binary_expression_get_left (self);
-                                                               _tmp786_ = _tmp785_;
-                                                               _tmp787_ = vala_expression_get_target_type (_tmp786_);
-                                                               _tmp788_ = _tmp787_;
-                                                               _tmp789_ = vala_data_type_copy (_tmp788_);
-                                                               _tmp790_ = _tmp789_;
-                                                               vala_expression_set_value_type ((ValaExpression*) self, _tmp790_);
-                                                               _vala_code_node_unref0 (_tmp790_);
+                                                               ValaDataType* _tmp781_ = NULL;
+                                                               _tmp768_ = vala_binary_expression_get_left (self);
+                                                               _tmp769_ = _tmp768_;
+                                                               _tmp770_ = vala_expression_get_target_type (_tmp769_);
+                                                               _tmp771_ = _tmp770_;
+                                                               vala_data_type_set_nullable (_tmp771_, FALSE);
+                                                               _tmp772_ = vala_binary_expression_get_right (self);
+                                                               _tmp773_ = _tmp772_;
+                                                               _tmp774_ = vala_expression_get_target_type (_tmp773_);
+                                                               _tmp775_ = _tmp774_;
+                                                               vala_data_type_set_nullable (_tmp775_, FALSE);
+                                                               _tmp776_ = vala_binary_expression_get_left (self);
+                                                               _tmp777_ = _tmp776_;
+                                                               _tmp778_ = vala_expression_get_target_type (_tmp777_);
+                                                               _tmp779_ = _tmp778_;
+                                                               _tmp780_ = vala_data_type_copy (_tmp779_);
+                                                               _tmp781_ = _tmp780_;
+                                                               vala_expression_set_value_type ((ValaExpression*) self, _tmp781_);
+                                                               _vala_code_node_unref0 (_tmp781_);
                                                        } else {
-                                                               gboolean _tmp791_ = FALSE;
-                                                               ValaBinaryOperator _tmp792_ = 0;
-                                                               _tmp792_ = self->priv->_operator;
-                                                               if (_tmp792_ == VALA_BINARY_OPERATOR_AND) {
-                                                                       _tmp791_ = TRUE;
+                                                               gboolean _tmp782_ = FALSE;
+                                                               ValaBinaryOperator _tmp783_ = 0;
+                                                               _tmp783_ = self->priv->_operator;
+                                                               if (_tmp783_ == VALA_BINARY_OPERATOR_AND) {
+                                                                       _tmp782_ = TRUE;
                                                                } else {
-                                                                       ValaBinaryOperator _tmp793_ = 0;
-                                                                       _tmp793_ = self->priv->_operator;
-                                                                       _tmp791_ = _tmp793_ == VALA_BINARY_OPERATOR_OR;
+                                                                       ValaBinaryOperator _tmp784_ = 0;
+                                                                       _tmp784_ = self->priv->_operator;
+                                                                       _tmp782_ = _tmp784_ == VALA_BINARY_OPERATOR_OR;
                                                                }
-                                                               if (_tmp791_) {
+                                                               if (_tmp782_) {
+                                                                       gboolean _tmp785_ = FALSE;
+                                                                       ValaExpression* _tmp786_ = NULL;
+                                                                       ValaExpression* _tmp787_ = NULL;
+                                                                       ValaDataType* _tmp788_ = NULL;
+                                                                       ValaDataType* _tmp789_ = NULL;
+                                                                       ValaCodeContext* _tmp790_ = NULL;
+                                                                       ValaSemanticAnalyzer* _tmp791_ = NULL;
+                                                                       ValaSemanticAnalyzer* _tmp792_ = NULL;
+                                                                       ValaDataType* _tmp793_ = NULL;
                                                                        gboolean _tmp794_ = FALSE;
-                                                                       ValaExpression* _tmp795_ = NULL;
-                                                                       ValaExpression* _tmp796_ = NULL;
-                                                                       ValaDataType* _tmp797_ = NULL;
-                                                                       ValaDataType* _tmp798_ = NULL;
-                                                                       ValaCodeContext* _tmp799_ = NULL;
-                                                                       ValaSemanticAnalyzer* _tmp800_ = NULL;
-                                                                       ValaSemanticAnalyzer* _tmp801_ = NULL;
-                                                                       ValaDataType* _tmp802_ = NULL;
-                                                                       gboolean _tmp803_ = FALSE;
-                                                                       ValaExpression* _tmp815_ = NULL;
-                                                                       ValaExpression* _tmp816_ = NULL;
+                                                                       ValaExpression* _tmp806_ = NULL;
+                                                                       ValaExpression* _tmp807_ = NULL;
+                                                                       ValaDataType* _tmp808_ = NULL;
+                                                                       ValaDataType* _tmp809_ = NULL;
+                                                                       ValaExpression* _tmp810_ = NULL;
+                                                                       ValaExpression* _tmp811_ = NULL;
+                                                                       ValaDataType* _tmp812_ = NULL;
+                                                                       ValaDataType* _tmp813_ = NULL;
+                                                                       ValaCodeContext* _tmp814_ = NULL;
+                                                                       ValaSemanticAnalyzer* _tmp815_ = NULL;
+                                                                       ValaSemanticAnalyzer* _tmp816_ = NULL;
                                                                        ValaDataType* _tmp817_ = NULL;
-                                                                       ValaDataType* _tmp818_ = NULL;
-                                                                       ValaExpression* _tmp819_ = NULL;
-                                                                       ValaExpression* _tmp820_ = NULL;
-                                                                       ValaDataType* _tmp821_ = NULL;
-                                                                       ValaDataType* _tmp822_ = NULL;
-                                                                       ValaCodeContext* _tmp823_ = NULL;
-                                                                       ValaSemanticAnalyzer* _tmp824_ = NULL;
-                                                                       ValaSemanticAnalyzer* _tmp825_ = NULL;
-                                                                       ValaDataType* _tmp826_ = NULL;
-                                                                       _tmp795_ = vala_binary_expression_get_left (self);
-                                                                       _tmp796_ = _tmp795_;
-                                                                       _tmp797_ = vala_expression_get_value_type (_tmp796_);
-                                                                       _tmp798_ = _tmp797_;
-                                                                       _tmp799_ = context;
-                                                                       _tmp800_ = vala_code_context_get_analyzer (_tmp799_);
-                                                                       _tmp801_ = _tmp800_;
-                                                                       _tmp802_ = _tmp801_->bool_type;
-                                                                       _tmp803_ = vala_data_type_compatible (_tmp798_, _tmp802_);
-                                                                       if (!_tmp803_) {
-                                                                               _tmp794_ = TRUE;
+                                                                       _tmp786_ = vala_binary_expression_get_left (self);
+                                                                       _tmp787_ = _tmp786_;
+                                                                       _tmp788_ = vala_expression_get_value_type (_tmp787_);
+                                                                       _tmp789_ = _tmp788_;
+                                                                       _tmp790_ = context;
+                                                                       _tmp791_ = vala_code_context_get_analyzer (_tmp790_);
+                                                                       _tmp792_ = _tmp791_;
+                                                                       _tmp793_ = _tmp792_->bool_type;
+                                                                       _tmp794_ = vala_data_type_compatible (_tmp789_, _tmp793_);
+                                                                       if (!_tmp794_) {
+                                                                               _tmp785_ = TRUE;
                                                                        } else {
-                                                                               ValaExpression* _tmp804_ = NULL;
-                                                                               ValaExpression* _tmp805_ = NULL;
-                                                                               ValaDataType* _tmp806_ = NULL;
-                                                                               ValaDataType* _tmp807_ = NULL;
-                                                                               ValaCodeContext* _tmp808_ = NULL;
-                                                                               ValaSemanticAnalyzer* _tmp809_ = NULL;
-                                                                               ValaSemanticAnalyzer* _tmp810_ = NULL;
-                                                                               ValaDataType* _tmp811_ = NULL;
-                                                                               gboolean _tmp812_ = FALSE;
-                                                                               _tmp804_ = vala_binary_expression_get_right (self);
-                                                                               _tmp805_ = _tmp804_;
-                                                                               _tmp806_ = vala_expression_get_value_type (_tmp805_);
-                                                                               _tmp807_ = _tmp806_;
-                                                                               _tmp808_ = context;
-                                                                               _tmp809_ = vala_code_context_get_analyzer (_tmp808_);
-                                                                               _tmp810_ = _tmp809_;
-                                                                               _tmp811_ = _tmp810_->bool_type;
-                                                                               _tmp812_ = vala_data_type_compatible (_tmp807_, _tmp811_);
-                                                                               _tmp794_ = !_tmp812_;
+                                                                               ValaExpression* _tmp795_ = NULL;
+                                                                               ValaExpression* _tmp796_ = NULL;
+                                                                               ValaDataType* _tmp797_ = NULL;
+                                                                               ValaDataType* _tmp798_ = NULL;
+                                                                               ValaCodeContext* _tmp799_ = NULL;
+                                                                               ValaSemanticAnalyzer* _tmp800_ = NULL;
+                                                                               ValaSemanticAnalyzer* _tmp801_ = NULL;
+                                                                               ValaDataType* _tmp802_ = NULL;
+                                                                               gboolean _tmp803_ = FALSE;
+                                                                               _tmp795_ = vala_binary_expression_get_right (self);
+                                                                               _tmp796_ = _tmp795_;
+                                                                               _tmp797_ = vala_expression_get_value_type (_tmp796_);
+                                                                               _tmp798_ = _tmp797_;
+                                                                               _tmp799_ = context;
+                                                                               _tmp800_ = vala_code_context_get_analyzer (_tmp799_);
+                                                                               _tmp801_ = _tmp800_;
+                                                                               _tmp802_ = _tmp801_->bool_type;
+                                                                               _tmp803_ = vala_data_type_compatible (_tmp798_, _tmp802_);
+                                                                               _tmp785_ = !_tmp803_;
                                                                        }
-                                                                       if (_tmp794_) {
-                                                                               ValaSourceReference* _tmp813_ = NULL;
-                                                                               ValaSourceReference* _tmp814_ = NULL;
+                                                                       if (_tmp785_) {
+                                                                               ValaSourceReference* _tmp804_ = NULL;
+                                                                               ValaSourceReference* _tmp805_ = NULL;
                                                                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                                                                               _tmp813_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                               _tmp814_ = _tmp813_;
-                                                                               vala_report_error (_tmp814_, "Operands must be boolean");
+                                                                               _tmp804_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                               _tmp805_ = _tmp804_;
+                                                                               vala_report_error (_tmp805_, "Operands must be boolean");
                                                                        }
-                                                                       _tmp815_ = vala_binary_expression_get_left (self);
+                                                                       _tmp806_ = vala_binary_expression_get_left (self);
+                                                                       _tmp807_ = _tmp806_;
+                                                                       _tmp808_ = vala_expression_get_target_type (_tmp807_);
+                                                                       _tmp809_ = _tmp808_;
+                                                                       vala_data_type_set_nullable (_tmp809_, FALSE);
+                                                                       _tmp810_ = vala_binary_expression_get_right (self);
+                                                                       _tmp811_ = _tmp810_;
+                                                                       _tmp812_ = vala_expression_get_target_type (_tmp811_);
+                                                                       _tmp813_ = _tmp812_;
+                                                                       vala_data_type_set_nullable (_tmp813_, FALSE);
+                                                                       _tmp814_ = context;
+                                                                       _tmp815_ = vala_code_context_get_analyzer (_tmp814_);
                                                                        _tmp816_ = _tmp815_;
-                                                                       _tmp817_ = vala_expression_get_target_type (_tmp816_);
-                                                                       _tmp818_ = _tmp817_;
-                                                                       vala_data_type_set_nullable (_tmp818_, FALSE);
-                                                                       _tmp819_ = vala_binary_expression_get_right (self);
-                                                                       _tmp820_ = _tmp819_;
-                                                                       _tmp821_ = vala_expression_get_target_type (_tmp820_);
-                                                                       _tmp822_ = _tmp821_;
-                                                                       vala_data_type_set_nullable (_tmp822_, FALSE);
-                                                                       _tmp823_ = context;
-                                                                       _tmp824_ = vala_code_context_get_analyzer (_tmp823_);
-                                                                       _tmp825_ = _tmp824_;
-                                                                       _tmp826_ = _tmp825_->bool_type;
-                                                                       vala_expression_set_value_type ((ValaExpression*) self, _tmp826_);
+                                                                       _tmp817_ = _tmp816_->bool_type;
+                                                                       vala_expression_set_value_type ((ValaExpression*) self, _tmp817_);
                                                                } else {
-                                                                       ValaBinaryOperator _tmp827_ = 0;
-                                                                       _tmp827_ = self->priv->_operator;
-                                                                       if (_tmp827_ == VALA_BINARY_OPERATOR_IN) {
+                                                                       ValaBinaryOperator _tmp818_ = 0;
+                                                                       _tmp818_ = self->priv->_operator;
+                                                                       if (_tmp818_ == VALA_BINARY_OPERATOR_IN) {
+                                                                               gboolean _tmp819_ = FALSE;
+                                                                               ValaExpression* _tmp820_ = NULL;
+                                                                               ValaExpression* _tmp821_ = NULL;
+                                                                               ValaDataType* _tmp822_ = NULL;
+                                                                               ValaDataType* _tmp823_ = NULL;
+                                                                               ValaCodeContext* _tmp824_ = NULL;
+                                                                               ValaSemanticAnalyzer* _tmp825_ = NULL;
+                                                                               ValaSemanticAnalyzer* _tmp826_ = NULL;
+                                                                               ValaDataType* _tmp827_ = NULL;
                                                                                gboolean _tmp828_ = FALSE;
-                                                                               ValaExpression* _tmp829_ = NULL;
-                                                                               ValaExpression* _tmp830_ = NULL;
-                                                                               ValaDataType* _tmp831_ = NULL;
-                                                                               ValaDataType* _tmp832_ = NULL;
-                                                                               ValaCodeContext* _tmp833_ = NULL;
-                                                                               ValaSemanticAnalyzer* _tmp834_ = NULL;
-                                                                               ValaSemanticAnalyzer* _tmp835_ = NULL;
-                                                                               ValaDataType* _tmp836_ = NULL;
-                                                                               gboolean _tmp837_ = FALSE;
-                                                                               ValaCodeContext* _tmp950_ = NULL;
-                                                                               ValaSemanticAnalyzer* _tmp951_ = NULL;
-                                                                               ValaSemanticAnalyzer* _tmp952_ = NULL;
-                                                                               ValaDataType* _tmp953_ = NULL;
-                                                                               _tmp829_ = vala_binary_expression_get_left (self);
-                                                                               _tmp830_ = _tmp829_;
-                                                                               _tmp831_ = vala_expression_get_value_type (_tmp830_);
-                                                                               _tmp832_ = _tmp831_;
-                                                                               _tmp833_ = context;
-                                                                               _tmp834_ = vala_code_context_get_analyzer (_tmp833_);
-                                                                               _tmp835_ = _tmp834_;
-                                                                               _tmp836_ = _tmp835_->int_type;
-                                                                               _tmp837_ = vala_data_type_compatible (_tmp832_, _tmp836_);
-                                                                               if (_tmp837_) {
+                                                                               ValaCodeContext* _tmp941_ = NULL;
+                                                                               ValaSemanticAnalyzer* _tmp942_ = NULL;
+                                                                               ValaSemanticAnalyzer* _tmp943_ = NULL;
+                                                                               ValaDataType* _tmp944_ = NULL;
+                                                                               _tmp820_ = vala_binary_expression_get_left (self);
+                                                                               _tmp821_ = _tmp820_;
+                                                                               _tmp822_ = vala_expression_get_value_type (_tmp821_);
+                                                                               _tmp823_ = _tmp822_;
+                                                                               _tmp824_ = context;
+                                                                               _tmp825_ = vala_code_context_get_analyzer (_tmp824_);
+                                                                               _tmp826_ = _tmp825_;
+                                                                               _tmp827_ = _tmp826_->int_type;
+                                                                               _tmp828_ = vala_data_type_compatible (_tmp823_, _tmp827_);
+                                                                               if (_tmp828_) {
+                                                                                       ValaExpression* _tmp829_ = NULL;
+                                                                                       ValaExpression* _tmp830_ = NULL;
+                                                                                       ValaDataType* _tmp831_ = NULL;
+                                                                                       ValaDataType* _tmp832_ = NULL;
+                                                                                       ValaCodeContext* _tmp833_ = NULL;
+                                                                                       ValaSemanticAnalyzer* _tmp834_ = NULL;
+                                                                                       ValaSemanticAnalyzer* _tmp835_ = NULL;
+                                                                                       ValaDataType* _tmp836_ = NULL;
+                                                                                       gboolean _tmp837_ = FALSE;
+                                                                                       _tmp829_ = vala_binary_expression_get_right (self);
+                                                                                       _tmp830_ = _tmp829_;
+                                                                                       _tmp831_ = vala_expression_get_value_type (_tmp830_);
+                                                                                       _tmp832_ = _tmp831_;
+                                                                                       _tmp833_ = context;
+                                                                                       _tmp834_ = vala_code_context_get_analyzer (_tmp833_);
+                                                                                       _tmp835_ = _tmp834_;
+                                                                                       _tmp836_ = _tmp835_->int_type;
+                                                                                       _tmp837_ = vala_data_type_compatible (_tmp832_, _tmp836_);
+                                                                                       _tmp819_ = _tmp837_;
+                                                                               } else {
+                                                                                       _tmp819_ = FALSE;
+                                                                               }
+                                                                               if (_tmp819_) {
                                                                                        ValaExpression* _tmp838_ = NULL;
                                                                                        ValaExpression* _tmp839_ = NULL;
                                                                                        ValaDataType* _tmp840_ = NULL;
                                                                                        ValaDataType* _tmp841_ = NULL;
-                                                                                       ValaCodeContext* _tmp842_ = NULL;
-                                                                                       ValaSemanticAnalyzer* _tmp843_ = NULL;
-                                                                                       ValaSemanticAnalyzer* _tmp844_ = NULL;
+                                                                                       ValaExpression* _tmp842_ = NULL;
+                                                                                       ValaExpression* _tmp843_ = NULL;
+                                                                                       ValaDataType* _tmp844_ = NULL;
                                                                                        ValaDataType* _tmp845_ = NULL;
-                                                                                       gboolean _tmp846_ = FALSE;
-                                                                                       _tmp838_ = vala_binary_expression_get_right (self);
+                                                                                       _tmp838_ = vala_binary_expression_get_left (self);
                                                                                        _tmp839_ = _tmp838_;
-                                                                                       _tmp840_ = vala_expression_get_value_type (_tmp839_);
+                                                                                       _tmp840_ = vala_expression_get_target_type (_tmp839_);
                                                                                        _tmp841_ = _tmp840_;
-                                                                                       _tmp842_ = context;
-                                                                                       _tmp843_ = vala_code_context_get_analyzer (_tmp842_);
-                                                                                       _tmp844_ = _tmp843_;
-                                                                                       _tmp845_ = _tmp844_->int_type;
-                                                                                       _tmp846_ = vala_data_type_compatible (_tmp841_, _tmp845_);
-                                                                                       _tmp828_ = _tmp846_;
+                                                                                       vala_data_type_set_nullable (_tmp841_, FALSE);
+                                                                                       _tmp842_ = vala_binary_expression_get_right (self);
+                                                                                       _tmp843_ = _tmp842_;
+                                                                                       _tmp844_ = vala_expression_get_target_type (_tmp843_);
+                                                                                       _tmp845_ = _tmp844_;
+                                                                                       vala_data_type_set_nullable (_tmp845_, FALSE);
                                                                                } else {
-                                                                                       _tmp828_ = FALSE;
-                                                                               }
-                                                                               if (_tmp828_) {
+                                                                                       ValaExpression* _tmp846_ = NULL;
                                                                                        ValaExpression* _tmp847_ = NULL;
-                                                                                       ValaExpression* _tmp848_ = NULL;
+                                                                                       ValaDataType* _tmp848_ = NULL;
                                                                                        ValaDataType* _tmp849_ = NULL;
-                                                                                       ValaDataType* _tmp850_ = NULL;
-                                                                                       ValaExpression* _tmp851_ = NULL;
-                                                                                       ValaExpression* _tmp852_ = NULL;
-                                                                                       ValaDataType* _tmp853_ = NULL;
-                                                                                       ValaDataType* _tmp854_ = NULL;
-                                                                                       _tmp847_ = vala_binary_expression_get_left (self);
-                                                                                       _tmp848_ = _tmp847_;
-                                                                                       _tmp849_ = vala_expression_get_target_type (_tmp848_);
-                                                                                       _tmp850_ = _tmp849_;
-                                                                                       vala_data_type_set_nullable (_tmp850_, FALSE);
-                                                                                       _tmp851_ = vala_binary_expression_get_right (self);
-                                                                                       _tmp852_ = _tmp851_;
-                                                                                       _tmp853_ = vala_expression_get_target_type (_tmp852_);
-                                                                                       _tmp854_ = _tmp853_;
-                                                                                       vala_data_type_set_nullable (_tmp854_, FALSE);
-                                                                               } else {
-                                                                                       ValaExpression* _tmp855_ = NULL;
-                                                                                       ValaExpression* _tmp856_ = NULL;
-                                                                                       ValaDataType* _tmp857_ = NULL;
-                                                                                       ValaDataType* _tmp858_ = NULL;
-                                                                                       _tmp855_ = vala_binary_expression_get_right (self);
-                                                                                       _tmp856_ = _tmp855_;
-                                                                                       _tmp857_ = vala_expression_get_value_type (_tmp856_);
-                                                                                       _tmp858_ = _tmp857_;
-                                                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp858_, VALA_TYPE_ARRAY_TYPE)) {
-                                                                                               ValaExpression* _tmp859_ = NULL;
-                                                                                               ValaExpression* _tmp860_ = NULL;
-                                                                                               ValaDataType* _tmp861_ = NULL;
-                                                                                               ValaDataType* _tmp862_ = NULL;
-                                                                                               ValaExpression* _tmp863_ = NULL;
-                                                                                               ValaExpression* _tmp864_ = NULL;
-                                                                                               ValaDataType* _tmp865_ = NULL;
-                                                                                               ValaDataType* _tmp866_ = NULL;
-                                                                                               ValaDataType* _tmp867_ = NULL;
-                                                                                               ValaDataType* _tmp868_ = NULL;
-                                                                                               gboolean _tmp869_ = FALSE;
-                                                                                               _tmp859_ = vala_binary_expression_get_left (self);
-                                                                                               _tmp860_ = _tmp859_;
-                                                                                               _tmp861_ = vala_expression_get_value_type (_tmp860_);
-                                                                                               _tmp862_ = _tmp861_;
-                                                                                               _tmp863_ = vala_binary_expression_get_right (self);
-                                                                                               _tmp864_ = _tmp863_;
-                                                                                               _tmp865_ = vala_expression_get_value_type (_tmp864_);
-                                                                                               _tmp866_ = _tmp865_;
-                                                                                               _tmp867_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp866_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                                                                               _tmp868_ = _tmp867_;
-                                                                                               _tmp869_ = vala_data_type_compatible (_tmp862_, _tmp868_);
-                                                                                               if (!_tmp869_) {
-                                                                                                       ValaSourceReference* _tmp870_ = NULL;
-                                                                                                       ValaSourceReference* _tmp871_ = NULL;
-                                                                                                       ValaExpression* _tmp872_ = NULL;
-                                                                                                       ValaExpression* _tmp873_ = NULL;
-                                                                                                       ValaDataType* _tmp874_ = NULL;
-                                                                                                       ValaDataType* _tmp875_ = NULL;
+                                                                                       _tmp846_ = vala_binary_expression_get_right (self);
+                                                                                       _tmp847_ = _tmp846_;
+                                                                                       _tmp848_ = vala_expression_get_value_type (_tmp847_);
+                                                                                       _tmp849_ = _tmp848_;
+                                                                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp849_, VALA_TYPE_ARRAY_TYPE)) {
+                                                                                               ValaExpression* _tmp850_ = NULL;
+                                                                                               ValaExpression* _tmp851_ = NULL;
+                                                                                               ValaDataType* _tmp852_ = NULL;
+                                                                                               ValaDataType* _tmp853_ = NULL;
+                                                                                               ValaExpression* _tmp854_ = NULL;
+                                                                                               ValaExpression* _tmp855_ = NULL;
+                                                                                               ValaDataType* _tmp856_ = NULL;
+                                                                                               ValaDataType* _tmp857_ = NULL;
+                                                                                               ValaDataType* _tmp858_ = NULL;
+                                                                                               ValaDataType* _tmp859_ = NULL;
+                                                                                               gboolean _tmp860_ = FALSE;
+                                                                                               _tmp850_ = vala_binary_expression_get_left (self);
+                                                                                               _tmp851_ = _tmp850_;
+                                                                                               _tmp852_ = vala_expression_get_value_type (_tmp851_);
+                                                                                               _tmp853_ = _tmp852_;
+                                                                                               _tmp854_ = vala_binary_expression_get_right (self);
+                                                                                               _tmp855_ = _tmp854_;
+                                                                                               _tmp856_ = vala_expression_get_value_type (_tmp855_);
+                                                                                               _tmp857_ = _tmp856_;
+                                                                                               _tmp858_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp857_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                                                                               _tmp859_ = _tmp858_;
+                                                                                               _tmp860_ = vala_data_type_compatible (_tmp853_, _tmp859_);
+                                                                                               if (!_tmp860_) {
+                                                                                                       ValaSourceReference* _tmp861_ = NULL;
+                                                                                                       ValaSourceReference* _tmp862_ = NULL;
+                                                                                                       ValaExpression* _tmp863_ = NULL;
+                                                                                                       ValaExpression* _tmp864_ = NULL;
+                                                                                                       ValaDataType* _tmp865_ = NULL;
+                                                                                                       ValaDataType* _tmp866_ = NULL;
+                                                                                                       gchar* _tmp867_ = NULL;
+                                                                                                       gchar* _tmp868_ = NULL;
+                                                                                                       ValaExpression* _tmp869_ = NULL;
+                                                                                                       ValaExpression* _tmp870_ = NULL;
+                                                                                                       ValaDataType* _tmp871_ = NULL;
+                                                                                                       ValaDataType* _tmp872_ = NULL;
+                                                                                                       gchar* _tmp873_ = NULL;
+                                                                                                       gchar* _tmp874_ = NULL;
+                                                                                                       gchar* _tmp875_ = NULL;
                                                                                                        gchar* _tmp876_ = NULL;
-                                                                                                       gchar* _tmp877_ = NULL;
-                                                                                                       ValaExpression* _tmp878_ = NULL;
-                                                                                                       ValaExpression* _tmp879_ = NULL;
-                                                                                                       ValaDataType* _tmp880_ = NULL;
-                                                                                                       ValaDataType* _tmp881_ = NULL;
-                                                                                                       gchar* _tmp882_ = NULL;
-                                                                                                       gchar* _tmp883_ = NULL;
-                                                                                                       gchar* _tmp884_ = NULL;
-                                                                                                       gchar* _tmp885_ = NULL;
-                                                                                                       _tmp870_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                                                       _tmp871_ = _tmp870_;
-                                                                                                       _tmp872_ = vala_binary_expression_get_left (self);
-                                                                                                       _tmp873_ = _tmp872_;
-                                                                                                       _tmp874_ = vala_expression_get_value_type (_tmp873_);
-                                                                                                       _tmp875_ = _tmp874_;
-                                                                                                       _tmp876_ = vala_code_node_to_string ((ValaCodeNode*) _tmp875_);
-                                                                                                       _tmp877_ = _tmp876_;
-                                                                                                       _tmp878_ = vala_binary_expression_get_right (self);
-                                                                                                       _tmp879_ = _tmp878_;
-                                                                                                       _tmp880_ = vala_expression_get_value_type (_tmp879_);
-                                                                                                       _tmp881_ = _tmp880_;
-                                                                                                       _tmp882_ = vala_code_node_to_string ((ValaCodeNode*) _tmp881_);
-                                                                                                       _tmp883_ = _tmp882_;
-                                                                                                       _tmp884_ = g_strdup_printf ("Cannot look for `%s' in `%s'", _tmp877_, _tmp883_);
-                                                                                                       _tmp885_ = _tmp884_;
-                                                                                                       vala_report_error (_tmp871_, _tmp885_);
-                                                                                                       _g_free0 (_tmp885_);
-                                                                                                       _g_free0 (_tmp883_);
-                                                                                                       _g_free0 (_tmp877_);
+                                                                                                       _tmp861_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                                                       _tmp862_ = _tmp861_;
+                                                                                                       _tmp863_ = vala_binary_expression_get_left (self);
+                                                                                                       _tmp864_ = _tmp863_;
+                                                                                                       _tmp865_ = vala_expression_get_value_type (_tmp864_);
+                                                                                                       _tmp866_ = _tmp865_;
+                                                                                                       _tmp867_ = vala_code_node_to_string ((ValaCodeNode*) _tmp866_);
+                                                                                                       _tmp868_ = _tmp867_;
+                                                                                                       _tmp869_ = vala_binary_expression_get_right (self);
+                                                                                                       _tmp870_ = _tmp869_;
+                                                                                                       _tmp871_ = vala_expression_get_value_type (_tmp870_);
+                                                                                                       _tmp872_ = _tmp871_;
+                                                                                                       _tmp873_ = vala_code_node_to_string ((ValaCodeNode*) _tmp872_);
+                                                                                                       _tmp874_ = _tmp873_;
+                                                                                                       _tmp875_ = g_strdup_printf ("Cannot look for `%s' in `%s'", _tmp868_, _tmp874_);
+                                                                                                       _tmp876_ = _tmp875_;
+                                                                                                       vala_report_error (_tmp862_, _tmp876_);
+                                                                                                       _g_free0 (_tmp876_);
+                                                                                                       _g_free0 (_tmp874_);
+                                                                                                       _g_free0 (_tmp868_);
                                                                                                }
                                                                                        } else {
                                                                                                ValaMethod* contains_method = NULL;
-                                                                                               ValaExpression* _tmp886_ = NULL;
-                                                                                               ValaExpression* _tmp887_ = NULL;
-                                                                                               ValaDataType* _tmp888_ = NULL;
-                                                                                               ValaDataType* _tmp889_ = NULL;
-                                                                                               ValaSymbol* _tmp890_ = NULL;
-                                                                                               ValaMethod* _tmp891_ = NULL;
-                                                                                               ValaMethod* _tmp892_ = NULL;
-                                                                                               ValaMethod* _tmp903_ = NULL;
-                                                                                               ValaList* _tmp904_ = NULL;
-                                                                                               ValaList* _tmp905_ = NULL;
-                                                                                               gint _tmp906_ = 0;
-                                                                                               gint _tmp907_ = 0;
-                                                                                               gboolean _tmp908_ = FALSE;
-                                                                                               ValaMethod* _tmp916_ = NULL;
-                                                                                               ValaDataType* _tmp917_ = NULL;
-                                                                                               ValaDataType* _tmp918_ = NULL;
-                                                                                               ValaCodeContext* _tmp919_ = NULL;
-                                                                                               ValaSemanticAnalyzer* _tmp920_ = NULL;
-                                                                                               ValaSemanticAnalyzer* _tmp921_ = NULL;
-                                                                                               ValaDataType* _tmp922_ = NULL;
-                                                                                               gboolean _tmp923_ = FALSE;
+                                                                                               ValaExpression* _tmp877_ = NULL;
+                                                                                               ValaExpression* _tmp878_ = NULL;
+                                                                                               ValaDataType* _tmp879_ = NULL;
+                                                                                               ValaDataType* _tmp880_ = NULL;
+                                                                                               ValaSymbol* _tmp881_ = NULL;
+                                                                                               ValaMethod* _tmp882_ = NULL;
+                                                                                               ValaMethod* _tmp883_ = NULL;
+                                                                                               ValaMethod* _tmp894_ = NULL;
+                                                                                               ValaList* _tmp895_ = NULL;
+                                                                                               ValaList* _tmp896_ = NULL;
+                                                                                               gint _tmp897_ = 0;
+                                                                                               gint _tmp898_ = 0;
+                                                                                               gboolean _tmp899_ = FALSE;
+                                                                                               ValaMethod* _tmp907_ = NULL;
+                                                                                               ValaDataType* _tmp908_ = NULL;
+                                                                                               ValaDataType* _tmp909_ = NULL;
+                                                                                               ValaCodeContext* _tmp910_ = NULL;
+                                                                                               ValaSemanticAnalyzer* _tmp911_ = NULL;
+                                                                                               ValaSemanticAnalyzer* _tmp912_ = NULL;
+                                                                                               ValaDataType* _tmp913_ = NULL;
+                                                                                               gboolean _tmp914_ = FALSE;
                                                                                                ValaMethodCall* contains_call = NULL;
-                                                                                               ValaExpression* _tmp931_ = NULL;
-                                                                                               ValaExpression* _tmp932_ = NULL;
-                                                                                               ValaSourceReference* _tmp933_ = NULL;
-                                                                                               ValaSourceReference* _tmp934_ = NULL;
-                                                                                               ValaMemberAccess* _tmp935_ = NULL;
-                                                                                               ValaMemberAccess* _tmp936_ = NULL;
-                                                                                               ValaSourceReference* _tmp937_ = NULL;
-                                                                                               ValaSourceReference* _tmp938_ = NULL;
-                                                                                               ValaMethodCall* _tmp939_ = NULL;
-                                                                                               ValaMethodCall* _tmp940_ = NULL;
-                                                                                               ValaMethodCall* _tmp941_ = NULL;
-                                                                                               ValaExpression* _tmp942_ = NULL;
-                                                                                               ValaExpression* _tmp943_ = NULL;
-                                                                                               ValaCodeNode* _tmp944_ = NULL;
-                                                                                               ValaCodeNode* _tmp945_ = NULL;
-                                                                                               ValaMethodCall* _tmp946_ = NULL;
-                                                                                               ValaMethodCall* _tmp947_ = NULL;
-                                                                                               ValaCodeContext* _tmp948_ = NULL;
-                                                                                               gboolean _tmp949_ = FALSE;
-                                                                                               _tmp886_ = vala_binary_expression_get_right (self);
-                                                                                               _tmp887_ = _tmp886_;
-                                                                                               _tmp888_ = vala_expression_get_value_type (_tmp887_);
-                                                                                               _tmp889_ = _tmp888_;
-                                                                                               _tmp890_ = vala_data_type_get_member (_tmp889_, "contains");
-                                                                                               _tmp891_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp890_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp890_) : NULL;
-                                                                                               if (_tmp891_ == NULL) {
-                                                                                                       _vala_code_node_unref0 (_tmp890_);
+                                                                                               ValaExpression* _tmp922_ = NULL;
+                                                                                               ValaExpression* _tmp923_ = NULL;
+                                                                                               ValaSourceReference* _tmp924_ = NULL;
+                                                                                               ValaSourceReference* _tmp925_ = NULL;
+                                                                                               ValaMemberAccess* _tmp926_ = NULL;
+                                                                                               ValaMemberAccess* _tmp927_ = NULL;
+                                                                                               ValaSourceReference* _tmp928_ = NULL;
+                                                                                               ValaSourceReference* _tmp929_ = NULL;
+                                                                                               ValaMethodCall* _tmp930_ = NULL;
+                                                                                               ValaMethodCall* _tmp931_ = NULL;
+                                                                                               ValaMethodCall* _tmp932_ = NULL;
+                                                                                               ValaExpression* _tmp933_ = NULL;
+                                                                                               ValaExpression* _tmp934_ = NULL;
+                                                                                               ValaCodeNode* _tmp935_ = NULL;
+                                                                                               ValaCodeNode* _tmp936_ = NULL;
+                                                                                               ValaMethodCall* _tmp937_ = NULL;
+                                                                                               ValaMethodCall* _tmp938_ = NULL;
+                                                                                               ValaCodeContext* _tmp939_ = NULL;
+                                                                                               gboolean _tmp940_ = FALSE;
+                                                                                               _tmp877_ = vala_binary_expression_get_right (self);
+                                                                                               _tmp878_ = _tmp877_;
+                                                                                               _tmp879_ = vala_expression_get_value_type (_tmp878_);
+                                                                                               _tmp880_ = _tmp879_;
+                                                                                               _tmp881_ = vala_data_type_get_member (_tmp880_, "contains");
+                                                                                               _tmp882_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp881_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp881_) : NULL;
+                                                                                               if (_tmp882_ == NULL) {
+                                                                                                       _vala_code_node_unref0 (_tmp881_);
                                                                                                }
-                                                                                               contains_method = _tmp891_;
-                                                                                               _tmp892_ = contains_method;
-                                                                                               if (_tmp892_ == NULL) {
-                                                                                                       ValaSourceReference* _tmp893_ = NULL;
-                                                                                                       ValaSourceReference* _tmp894_ = NULL;
-                                                                                                       ValaExpression* _tmp895_ = NULL;
-                                                                                                       ValaExpression* _tmp896_ = NULL;
-                                                                                                       ValaDataType* _tmp897_ = NULL;
-                                                                                                       ValaDataType* _tmp898_ = NULL;
-                                                                                                       gchar* _tmp899_ = NULL;
-                                                                                                       gchar* _tmp900_ = NULL;
-                                                                                                       gchar* _tmp901_ = NULL;
-                                                                                                       gchar* _tmp902_ = NULL;
-                                                                                                       _tmp893_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                                                       _tmp894_ = _tmp893_;
-                                                                                                       _tmp895_ = vala_binary_expression_get_right (self);
-                                                                                                       _tmp896_ = _tmp895_;
-                                                                                                       _tmp897_ = vala_expression_get_value_type (_tmp896_);
-                                                                                                       _tmp898_ = _tmp897_;
-                                                                                                       _tmp899_ = vala_code_node_to_string ((ValaCodeNode*) _tmp898_);
-                                                                                                       _tmp900_ = _tmp899_;
-                                                                                                       _tmp901_ = g_strdup_printf ("`%s' does not have a `contains' method", _tmp900_);
-                                                                                                       _tmp902_ = _tmp901_;
-                                                                                                       vala_report_error (_tmp894_, _tmp902_);
-                                                                                                       _g_free0 (_tmp902_);
-                                                                                                       _g_free0 (_tmp900_);
+                                                                                               contains_method = _tmp882_;
+                                                                                               _tmp883_ = contains_method;
+                                                                                               if (_tmp883_ == NULL) {
+                                                                                                       ValaSourceReference* _tmp884_ = NULL;
+                                                                                                       ValaSourceReference* _tmp885_ = NULL;
+                                                                                                       ValaExpression* _tmp886_ = NULL;
+                                                                                                       ValaExpression* _tmp887_ = NULL;
+                                                                                                       ValaDataType* _tmp888_ = NULL;
+                                                                                                       ValaDataType* _tmp889_ = NULL;
+                                                                                                       gchar* _tmp890_ = NULL;
+                                                                                                       gchar* _tmp891_ = NULL;
+                                                                                                       gchar* _tmp892_ = NULL;
+                                                                                                       gchar* _tmp893_ = NULL;
+                                                                                                       _tmp884_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                                                       _tmp885_ = _tmp884_;
+                                                                                                       _tmp886_ = vala_binary_expression_get_right (self);
+                                                                                                       _tmp887_ = _tmp886_;
+                                                                                                       _tmp888_ = vala_expression_get_value_type (_tmp887_);
+                                                                                                       _tmp889_ = _tmp888_;
+                                                                                                       _tmp890_ = vala_code_node_to_string ((ValaCodeNode*) _tmp889_);
+                                                                                                       _tmp891_ = _tmp890_;
+                                                                                                       _tmp892_ = g_strdup_printf ("`%s' does not have a `contains' method", _tmp891_);
+                                                                                                       _tmp893_ = _tmp892_;
+                                                                                                       vala_report_error (_tmp885_, _tmp893_);
+                                                                                                       _g_free0 (_tmp893_);
+                                                                                                       _g_free0 (_tmp891_);
                                                                                                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                                                                                        result = FALSE;
                                                                                                        _vala_code_node_unref0 (contains_method);
                                                                                                        return result;
                                                                                                }
-                                                                                               _tmp903_ = contains_method;
-                                                                                               _tmp904_ = vala_method_get_parameters (_tmp903_);
-                                                                                               _tmp905_ = _tmp904_;
-                                                                                               _tmp906_ = vala_collection_get_size ((ValaCollection*) _tmp905_);
-                                                                                               _tmp907_ = _tmp906_;
-                                                                                               _tmp908_ = _tmp907_ != 1;
-                                                                                               _vala_iterable_unref0 (_tmp905_);
-                                                                                               if (_tmp908_) {
-                                                                                                       ValaSourceReference* _tmp909_ = NULL;
-                                                                                                       ValaSourceReference* _tmp910_ = NULL;
-                                                                                                       ValaMethod* _tmp911_ = NULL;
-                                                                                                       gchar* _tmp912_ = NULL;
-                                                                                                       gchar* _tmp913_ = NULL;
-                                                                                                       gchar* _tmp914_ = NULL;
-                                                                                                       gchar* _tmp915_ = NULL;
-                                                                                                       _tmp909_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                                                       _tmp910_ = _tmp909_;
-                                                                                                       _tmp911_ = contains_method;
-                                                                                                       _tmp912_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp911_);
-                                                                                                       _tmp913_ = _tmp912_;
-                                                                                                       _tmp914_ = g_strdup_printf ("`%s' must have one parameter", _tmp913_);
-                                                                                                       _tmp915_ = _tmp914_;
-                                                                                                       vala_report_error (_tmp910_, _tmp915_);
-                                                                                                       _g_free0 (_tmp915_);
-                                                                                                       _g_free0 (_tmp913_);
+                                                                                               _tmp894_ = contains_method;
+                                                                                               _tmp895_ = vala_method_get_parameters (_tmp894_);
+                                                                                               _tmp896_ = _tmp895_;
+                                                                                               _tmp897_ = vala_collection_get_size ((ValaCollection*) _tmp896_);
+                                                                                               _tmp898_ = _tmp897_;
+                                                                                               _tmp899_ = _tmp898_ != 1;
+                                                                                               _vala_iterable_unref0 (_tmp896_);
+                                                                                               if (_tmp899_) {
+                                                                                                       ValaSourceReference* _tmp900_ = NULL;
+                                                                                                       ValaSourceReference* _tmp901_ = NULL;
+                                                                                                       ValaMethod* _tmp902_ = NULL;
+                                                                                                       gchar* _tmp903_ = NULL;
+                                                                                                       gchar* _tmp904_ = NULL;
+                                                                                                       gchar* _tmp905_ = NULL;
+                                                                                                       gchar* _tmp906_ = NULL;
+                                                                                                       _tmp900_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                                                       _tmp901_ = _tmp900_;
+                                                                                                       _tmp902_ = contains_method;
+                                                                                                       _tmp903_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp902_);
+                                                                                                       _tmp904_ = _tmp903_;
+                                                                                                       _tmp905_ = g_strdup_printf ("`%s' must have one parameter", _tmp904_);
+                                                                                                       _tmp906_ = _tmp905_;
+                                                                                                       vala_report_error (_tmp901_, _tmp906_);
+                                                                                                       _g_free0 (_tmp906_);
+                                                                                                       _g_free0 (_tmp904_);
                                                                                                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                                                                                        result = FALSE;
                                                                                                        _vala_code_node_unref0 (contains_method);
                                                                                                        return result;
                                                                                                }
-                                                                                               _tmp916_ = contains_method;
-                                                                                               _tmp917_ = vala_method_get_return_type (_tmp916_);
-                                                                                               _tmp918_ = _tmp917_;
-                                                                                               _tmp919_ = context;
-                                                                                               _tmp920_ = vala_code_context_get_analyzer (_tmp919_);
-                                                                                               _tmp921_ = _tmp920_;
-                                                                                               _tmp922_ = _tmp921_->bool_type;
-                                                                                               _tmp923_ = vala_data_type_compatible (_tmp918_, _tmp922_);
-                                                                                               if (!_tmp923_) {
-                                                                                                       ValaSourceReference* _tmp924_ = NULL;
-                                                                                                       ValaSourceReference* _tmp925_ = NULL;
-                                                                                                       ValaMethod* _tmp926_ = NULL;
-                                                                                                       gchar* _tmp927_ = NULL;
-                                                                                                       gchar* _tmp928_ = NULL;
-                                                                                                       gchar* _tmp929_ = NULL;
-                                                                                                       gchar* _tmp930_ = NULL;
-                                                                                                       _tmp924_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                                                       _tmp925_ = _tmp924_;
-                                                                                                       _tmp926_ = contains_method;
-                                                                                                       _tmp927_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp926_);
-                                                                                                       _tmp928_ = _tmp927_;
-                                                                                                       _tmp929_ = g_strdup_printf ("`%s' must return a boolean value", _tmp928_);
-                                                                                                       _tmp930_ = _tmp929_;
-                                                                                                       vala_report_error (_tmp925_, _tmp930_);
-                                                                                                       _g_free0 (_tmp930_);
-                                                                                                       _g_free0 (_tmp928_);
+                                                                                               _tmp907_ = contains_method;
+                                                                                               _tmp908_ = vala_method_get_return_type (_tmp907_);
+                                                                                               _tmp909_ = _tmp908_;
+                                                                                               _tmp910_ = context;
+                                                                                               _tmp911_ = vala_code_context_get_analyzer (_tmp910_);
+                                                                                               _tmp912_ = _tmp911_;
+                                                                                               _tmp913_ = _tmp912_->bool_type;
+                                                                                               _tmp914_ = vala_data_type_compatible (_tmp909_, _tmp913_);
+                                                                                               if (!_tmp914_) {
+                                                                                                       ValaSourceReference* _tmp915_ = NULL;
+                                                                                                       ValaSourceReference* _tmp916_ = NULL;
+                                                                                                       ValaMethod* _tmp917_ = NULL;
+                                                                                                       gchar* _tmp918_ = NULL;
+                                                                                                       gchar* _tmp919_ = NULL;
+                                                                                                       gchar* _tmp920_ = NULL;
+                                                                                                       gchar* _tmp921_ = NULL;
+                                                                                                       _tmp915_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                                                       _tmp916_ = _tmp915_;
+                                                                                                       _tmp917_ = contains_method;
+                                                                                                       _tmp918_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp917_);
+                                                                                                       _tmp919_ = _tmp918_;
+                                                                                                       _tmp920_ = g_strdup_printf ("`%s' must return a boolean value", _tmp919_);
+                                                                                                       _tmp921_ = _tmp920_;
+                                                                                                       vala_report_error (_tmp916_, _tmp921_);
+                                                                                                       _g_free0 (_tmp921_);
+                                                                                                       _g_free0 (_tmp919_);
                                                                                                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                                                                                        result = FALSE;
                                                                                                        _vala_code_node_unref0 (contains_method);
                                                                                                        return result;
                                                                                                }
-                                                                                               _tmp931_ = vala_binary_expression_get_right (self);
-                                                                                               _tmp932_ = _tmp931_;
-                                                                                               _tmp933_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                                               _tmp922_ = vala_binary_expression_get_right (self);
+                                                                                               _tmp923_ = _tmp922_;
+                                                                                               _tmp924_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                                               _tmp925_ = _tmp924_;
+                                                                                               _tmp926_ = vala_member_access_new (_tmp923_, "contains", _tmp925_);
+                                                                                               _tmp927_ = _tmp926_;
+                                                                                               _tmp928_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                                               _tmp929_ = _tmp928_;
+                                                                                               _tmp930_ = vala_method_call_new ((ValaExpression*) _tmp927_, _tmp929_);
+                                                                                               _tmp931_ = _tmp930_;
+                                                                                               _vala_code_node_unref0 (_tmp927_);
+                                                                                               contains_call = _tmp931_;
+                                                                                               _tmp932_ = contains_call;
+                                                                                               _tmp933_ = vala_binary_expression_get_left (self);
                                                                                                _tmp934_ = _tmp933_;
-                                                                                               _tmp935_ = vala_member_access_new (_tmp932_, "contains", _tmp934_);
+                                                                                               vala_method_call_add_argument (_tmp932_, _tmp934_);
+                                                                                               _tmp935_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
                                                                                                _tmp936_ = _tmp935_;
-                                                                                               _tmp937_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                                               _tmp938_ = _tmp937_;
-                                                                                               _tmp939_ = vala_method_call_new ((ValaExpression*) _tmp936_, _tmp938_);
-                                                                                               _tmp940_ = _tmp939_;
-                                                                                               _vala_code_node_unref0 (_tmp936_);
-                                                                                               contains_call = _tmp940_;
-                                                                                               _tmp941_ = contains_call;
-                                                                                               _tmp942_ = vala_binary_expression_get_left (self);
-                                                                                               _tmp943_ = _tmp942_;
-                                                                                               vala_method_call_add_argument (_tmp941_, _tmp943_);
-                                                                                               _tmp944_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
-                                                                                               _tmp945_ = _tmp944_;
-                                                                                               _tmp946_ = contains_call;
-                                                                                               vala_code_node_replace_expression (_tmp945_, (ValaExpression*) self, (ValaExpression*) _tmp946_);
-                                                                                               _tmp947_ = contains_call;
-                                                                                               _tmp948_ = context;
-                                                                                               _tmp949_ = vala_code_node_check ((ValaCodeNode*) _tmp947_, _tmp948_);
-                                                                                               result = _tmp949_;
+                                                                                               _tmp937_ = contains_call;
+                                                                                               vala_code_node_replace_expression (_tmp936_, (ValaExpression*) self, (ValaExpression*) _tmp937_);
+                                                                                               _tmp938_ = contains_call;
+                                                                                               _tmp939_ = context;
+                                                                                               _tmp940_ = vala_code_node_check ((ValaCodeNode*) _tmp938_, _tmp939_);
+                                                                                               result = _tmp940_;
                                                                                                _vala_code_node_unref0 (contains_call);
                                                                                                _vala_code_node_unref0 (contains_method);
                                                                                                return result;
                                                                                        }
                                                                                }
-                                                                               _tmp950_ = context;
-                                                                               _tmp951_ = vala_code_context_get_analyzer (_tmp950_);
-                                                                               _tmp952_ = _tmp951_;
-                                                                               _tmp953_ = _tmp952_->bool_type;
-                                                                               vala_expression_set_value_type ((ValaExpression*) self, _tmp953_);
+                                                                               _tmp941_ = context;
+                                                                               _tmp942_ = vala_code_context_get_analyzer (_tmp941_);
+                                                                               _tmp943_ = _tmp942_;
+                                                                               _tmp944_ = _tmp943_->bool_type;
+                                                                               vala_expression_set_value_type ((ValaExpression*) self, _tmp944_);
                                                                        } else {
                                                                                g_assert_not_reached ();
                                                                        }
@@ -4351,9 +4331,9 @@ static gboolean vala_binary_expression_real_check (ValaCodeNode* base, ValaCodeC
                        }
                }
        }
-       _tmp954_ = vala_code_node_get_error ((ValaCodeNode*) self);
-       _tmp955_ = _tmp954_;
-       result = !_tmp955_;
+       _tmp945_ = vala_code_node_get_error ((ValaCodeNode*) self);
+       _tmp946_ = _tmp945_;
+       result = !_tmp946_;
        return result;
 }
 
@@ -4495,19 +4475,19 @@ void vala_binary_expression_set_right (ValaBinaryExpression* self, ValaExpressio
 
 static void vala_binary_expression_class_init (ValaBinaryExpressionClass * klass) {
        vala_binary_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_binary_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_binary_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaBinaryExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_binary_expression_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_binary_expression_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_binary_expression_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_binary_expression_real_to_string;
-       VALA_EXPRESSION_CLASS (klass)->is_constant = vala_binary_expression_real_is_constant;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_binary_expression_real_is_pure;
-       VALA_EXPRESSION_CLASS (klass)->is_non_null = vala_binary_expression_real_is_non_null;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_binary_expression_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_binary_expression_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_binary_expression_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_binary_expression_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_binary_expression_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_binary_expression_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_binary_expression_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_binary_expression_real_to_string;
+       ((ValaExpressionClass *) klass)->is_constant = vala_binary_expression_real_is_constant;
+       ((ValaExpressionClass *) klass)->is_pure = vala_binary_expression_real_is_pure;
+       ((ValaExpressionClass *) klass)->is_non_null = vala_binary_expression_real_is_non_null;
+       ((ValaCodeNodeClass *) klass)->check = vala_binary_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_binary_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_binary_expression_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_binary_expression_real_get_used_variables;
 }
 
 
index bdd9e5e..8ccddba 100644 (file)
@@ -186,6 +186,7 @@ public class Vala.BinaryExpression : Expression {
 
                        var ma = new MemberAccess.simple (local.name, source_reference);
                        ma.target_type = target_type;
+                       ma.formal_target_type = formal_target_type;
                        ma.check (context);
 
                        parent_node.replace_expression (this, ma);
@@ -422,12 +423,12 @@ public class Vala.BinaryExpression : Expression {
                        right.target_type.value_owned = false;
 
                        if (left.value_type.nullable != right.value_type.nullable) {
-                               // if only one operand is nullable, make sure the other operand is promoted to nullable as well
-                               if (!left.value_type.nullable) {
-                                       left.target_type.nullable = true;
-                               } else if (!right.value_type.nullable) {
-                                       right.target_type.nullable = true;
-                               }
+                               // if only one operand is nullable, make sure the other
+                               // operand is promoted to nullable as well,
+                               // reassign both, as get_arithmetic_result_type doesn't
+                               // take nullability into account
+                               left.target_type.nullable = true;
+                               right.target_type.nullable = true;
                        }
 
                        value_type = context.analyzer.bool_type;
index 04bc41f..74e88fb 100644 (file)
@@ -2524,12 +2524,12 @@ void vala_block_set_captured (ValaBlock* self, gboolean value) {
 
 static void vala_block_class_init (ValaBlockClass * klass) {
        vala_block_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_block_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_block_finalize;
        g_type_class_add_private (klass, sizeof (ValaBlockPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_block_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_block_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_block_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_block_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_block_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_block_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_block_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_block_real_emit;
 }
 
 
index 85fcd6b..b314f78 100644 (file)
@@ -1475,13 +1475,13 @@ void vala_boolean_literal_set_value (ValaBooleanLiteral* self, gboolean value) {
 
 static void vala_boolean_literal_class_init (ValaBooleanLiteralClass * klass) {
        vala_boolean_literal_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_boolean_literal_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_boolean_literal_finalize;
        g_type_class_add_private (klass, sizeof (ValaBooleanLiteralPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_boolean_literal_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_boolean_literal_real_to_string;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_boolean_literal_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_boolean_literal_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_boolean_literal_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_boolean_literal_real_accept;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_boolean_literal_real_to_string;
+       ((ValaExpressionClass *) klass)->is_pure = vala_boolean_literal_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_boolean_literal_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_boolean_literal_real_emit;
 }
 
 
index 5b4389b..21b2d97 100644 (file)
@@ -384,7 +384,7 @@ static ValaDataType* vala_boolean_type_real_copy (ValaDataType* base) {
 
 static void vala_boolean_type_class_init (ValaBooleanTypeClass * klass) {
        vala_boolean_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_boolean_type_real_copy;
+       ((ValaDataTypeClass *) klass)->copy = vala_boolean_type_real_copy;
 }
 
 
index 094273a..44f51b9 100644 (file)
@@ -279,8 +279,8 @@ static void vala_break_statement_real_emit (ValaCodeNode* base, ValaCodeGenerato
 
 static void vala_break_statement_class_init (ValaBreakStatementClass * klass) {
        vala_break_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_break_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_break_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_break_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->emit = vala_break_statement_real_emit;
 }
 
 
index ecd0ce5..73c1086 100644 (file)
@@ -1954,18 +1954,18 @@ void vala_cast_expression_set_is_non_null_cast (ValaCastExpression* self, gboole
 
 static void vala_cast_expression_class_init (ValaCastExpressionClass * klass) {
        vala_cast_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_cast_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_cast_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaCastExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_cast_expression_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_cast_expression_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_cast_expression_real_replace_expression;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_cast_expression_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_cast_expression_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_cast_expression_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_cast_expression_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_cast_expression_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_cast_expression_real_get_used_variables;
-       VALA_EXPRESSION_CLASS (klass)->is_constant = vala_cast_expression_real_is_constant;
+       ((ValaCodeNodeClass *) klass)->accept = vala_cast_expression_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_cast_expression_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_cast_expression_real_replace_expression;
+       ((ValaExpressionClass *) klass)->is_pure = vala_cast_expression_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_cast_expression_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_cast_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_cast_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_cast_expression_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_cast_expression_real_get_used_variables;
+       ((ValaExpressionClass *) klass)->is_constant = vala_cast_expression_real_is_constant;
 }
 
 
index 6d0fc09..5f70e67 100644 (file)
@@ -751,14 +751,14 @@ void vala_catch_clause_set_clabel_name (ValaCatchClause* self, const gchar* valu
 
 static void vala_catch_clause_class_init (ValaCatchClauseClass * klass) {
        vala_catch_clause_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_catch_clause_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_catch_clause_finalize;
        g_type_class_add_private (klass, sizeof (ValaCatchClausePrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_catch_clause_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_catch_clause_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_catch_clause_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_catch_clause_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_catch_clause_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_catch_clause_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_catch_clause_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_catch_clause_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_catch_clause_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_catch_clause_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_catch_clause_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_catch_clause_real_get_defined_variables;
 }
 
 
index c40683f..4a45611 100644 (file)
@@ -1595,13 +1595,13 @@ void vala_character_literal_set_value (ValaCharacterLiteral* self, const gchar*
 
 static void vala_character_literal_class_init (ValaCharacterLiteralClass * klass) {
        vala_character_literal_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_character_literal_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_character_literal_finalize;
        g_type_class_add_private (klass, sizeof (ValaCharacterLiteralPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_character_literal_real_accept;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_character_literal_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_character_literal_real_to_string;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_character_literal_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_character_literal_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_character_literal_real_accept;
+       ((ValaExpressionClass *) klass)->is_pure = vala_character_literal_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_character_literal_real_to_string;
+       ((ValaCodeNodeClass *) klass)->check = vala_character_literal_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_character_literal_real_emit;
 }
 
 
index e78deeb..f3f0722 100644 (file)
@@ -1420,6 +1420,7 @@ const gchar* vala_creation_method_get_class_name (ValaCreationMethod* self);
 void vala_report_error (ValaSourceReference* source, const gchar* message);
 gchar* vala_symbol_get_full_name (ValaSymbol* self);
 void vala_code_node_set_error (ValaCodeNode* self, gboolean value);
+ValaDataType* vala_method_get_base_interface_type (ValaMethod* self);
 static ValaList* vala_class_real_get_methods (ValaObjectTypeSymbol* base);
 static void vala_class_real_add_property (ValaSymbol* base, ValaProperty* prop);
 void vala_property_set_this_parameter (ValaProperty* self, ValaParameter* value);
@@ -1555,12 +1556,12 @@ GType vala_source_file_type_get_type (void) G_GNUC_CONST;
 ValaSourceFileType vala_symbol_get_source_type (ValaSymbol* self);
 ValaList* vala_object_type_symbol_get_methods (ValaObjectTypeSymbol* self);
 gboolean vala_method_get_is_abstract (ValaMethod* self);
-ValaSymbol* vala_scope_lookup (ValaScope* self, const gchar* name);
 gboolean vala_symbol_check_deprecated (ValaSymbol* self, ValaSourceReference* source_ref);
 gboolean vala_symbol_check_experimental (ValaSymbol* self, ValaSourceReference* source_ref);
 void vala_symbol_set_used (ValaSymbol* self, gboolean value);
 ValaList* vala_object_type_symbol_get_properties (ValaObjectTypeSymbol* self);
 gboolean vala_property_get_is_abstract (ValaProperty* self);
+ValaSymbol* vala_scope_lookup (ValaScope* self, const gchar* name);
 gboolean vala_class_get_is_abstract (ValaClass* self);
 ValaSymbol* vala_semantic_analyzer_symbol_lookup_inherited (ValaSymbol* sym, const gchar* name);
 gboolean vala_method_get_overrides (ValaMethod* self);
@@ -1879,12 +1880,9 @@ static void vala_class_real_add_method (ValaSymbol* base, ValaMethod* m) {
        ValaMethod* _tmp65_ = NULL;
        ValaList* _tmp93_ = NULL;
        ValaMethod* _tmp94_ = NULL;
-       ValaScope* _tmp95_ = NULL;
-       ValaScope* _tmp96_ = NULL;
-       ValaMethod* _tmp97_ = NULL;
-       const gchar* _tmp98_ = NULL;
-       const gchar* _tmp99_ = NULL;
-       ValaMethod* _tmp100_ = NULL;
+       ValaMethod* _tmp95_ = NULL;
+       ValaDataType* _tmp96_ = NULL;
+       ValaDataType* _tmp97_ = NULL;
        self = (ValaClass*) base;
        g_return_if_fail (m != NULL);
        _tmp1_ = m;
@@ -2115,13 +2113,32 @@ static void vala_class_real_add_method (ValaSymbol* base, ValaMethod* m) {
        _tmp93_ = self->priv->methods;
        _tmp94_ = m;
        vala_collection_add ((ValaCollection*) _tmp93_, _tmp94_);
-       _tmp95_ = vala_symbol_get_scope ((ValaSymbol*) self);
-       _tmp96_ = _tmp95_;
-       _tmp97_ = m;
-       _tmp98_ = vala_symbol_get_name ((ValaSymbol*) _tmp97_);
-       _tmp99_ = _tmp98_;
-       _tmp100_ = m;
-       vala_scope_add (_tmp96_, _tmp99_, (ValaSymbol*) _tmp100_);
+       _tmp95_ = m;
+       _tmp96_ = vala_method_get_base_interface_type (_tmp95_);
+       _tmp97_ = _tmp96_;
+       if (_tmp97_ == NULL) {
+               ValaScope* _tmp98_ = NULL;
+               ValaScope* _tmp99_ = NULL;
+               ValaMethod* _tmp100_ = NULL;
+               const gchar* _tmp101_ = NULL;
+               const gchar* _tmp102_ = NULL;
+               ValaMethod* _tmp103_ = NULL;
+               _tmp98_ = vala_symbol_get_scope ((ValaSymbol*) self);
+               _tmp99_ = _tmp98_;
+               _tmp100_ = m;
+               _tmp101_ = vala_symbol_get_name ((ValaSymbol*) _tmp100_);
+               _tmp102_ = _tmp101_;
+               _tmp103_ = m;
+               vala_scope_add (_tmp99_, _tmp102_, (ValaSymbol*) _tmp103_);
+       } else {
+               ValaScope* _tmp104_ = NULL;
+               ValaScope* _tmp105_ = NULL;
+               ValaMethod* _tmp106_ = NULL;
+               _tmp104_ = vala_symbol_get_scope ((ValaSymbol*) self);
+               _tmp105_ = _tmp104_;
+               _tmp106_ = m;
+               vala_scope_add (_tmp105_, NULL, (ValaSymbol*) _tmp106_);
+       }
 }
 
 
@@ -3514,16 +3531,16 @@ static gboolean vala_class_real_check (ValaCodeNode* base, ValaCodeContext* cont
        gint _tmp341_ = 0;
        ValaSourceFileType _tmp369_ = 0;
        ValaSourceFileType _tmp370_ = 0;
-       ValaCodeContext* _tmp559_ = NULL;
-       ValaSemanticAnalyzer* _tmp560_ = NULL;
-       ValaSemanticAnalyzer* _tmp561_ = NULL;
-       ValaSourceFile* _tmp562_ = NULL;
-       ValaCodeContext* _tmp563_ = NULL;
-       ValaSemanticAnalyzer* _tmp564_ = NULL;
-       ValaSemanticAnalyzer* _tmp565_ = NULL;
-       ValaSymbol* _tmp566_ = NULL;
-       gboolean _tmp567_ = FALSE;
-       gboolean _tmp568_ = FALSE;
+       ValaCodeContext* _tmp578_ = NULL;
+       ValaSemanticAnalyzer* _tmp579_ = NULL;
+       ValaSemanticAnalyzer* _tmp580_ = NULL;
+       ValaSourceFile* _tmp581_ = NULL;
+       ValaCodeContext* _tmp582_ = NULL;
+       ValaSemanticAnalyzer* _tmp583_ = NULL;
+       ValaSemanticAnalyzer* _tmp584_ = NULL;
+       ValaSymbol* _tmp585_ = NULL;
+       gboolean _tmp586_ = FALSE;
+       gboolean _tmp587_ = FALSE;
        self = (ValaClass*) base;
        g_return_val_if_fail (context != NULL, FALSE);
        _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
@@ -4697,7 +4714,7 @@ static gboolean vala_class_real_check (ValaCodeNode* base, ValaCodeContext* cont
        _tmp369_ = vala_symbol_get_source_type ((ValaSymbol*) self);
        _tmp370_ = _tmp369_;
        if (_tmp370_ == VALA_SOURCE_FILE_TYPE_SOURCE) {
-               gboolean _tmp483_ = FALSE;
+               gboolean _tmp502_ = FALSE;
                {
                        ValaList* _base_type_list = NULL;
                        ValaList* _tmp371_ = NULL;
@@ -4811,98 +4828,159 @@ static gboolean vala_class_real_check (ValaCodeNode* base, ValaCodeContext* cont
                                                        _tmp405_ = vala_method_get_is_abstract (_tmp404_);
                                                        _tmp406_ = _tmp405_;
                                                        if (_tmp406_) {
-                                                               ValaSymbol* sym = NULL;
+                                                               gboolean implemented = FALSE;
                                                                ValaClass* base_class = NULL;
                                                                ValaClass* _tmp407_ = NULL;
-                                                               ValaSymbol* _tmp421_ = NULL;
-                                                               sym = NULL;
+                                                               gboolean _tmp447_ = FALSE;
+                                                               implemented = FALSE;
                                                                _tmp407_ = _vala_code_node_ref0 (self);
                                                                base_class = _tmp407_;
                                                                while (TRUE) {
-                                                                       gboolean _tmp408_ = FALSE;
-                                                                       ValaClass* _tmp409_ = NULL;
-                                                                       ValaClass* _tmp411_ = NULL;
-                                                                       ValaScope* _tmp412_ = NULL;
-                                                                       ValaScope* _tmp413_ = NULL;
-                                                                       ValaMethod* _tmp414_ = NULL;
-                                                                       const gchar* _tmp415_ = NULL;
-                                                                       const gchar* _tmp416_ = NULL;
-                                                                       ValaSymbol* _tmp417_ = NULL;
-                                                                       ValaClass* _tmp418_ = NULL;
-                                                                       ValaClass* _tmp419_ = NULL;
-                                                                       ValaClass* _tmp420_ = NULL;
-                                                                       _tmp409_ = base_class;
-                                                                       if (_tmp409_ != NULL) {
-                                                                               ValaSymbol* _tmp410_ = NULL;
-                                                                               _tmp410_ = sym;
-                                                                               _tmp408_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp410_, VALA_TYPE_METHOD);
-                                                                       } else {
-                                                                               _tmp408_ = FALSE;
-                                                                       }
-                                                                       if (!_tmp408_) {
+                                                                       ValaClass* _tmp408_ = NULL;
+                                                                       ValaClass* _tmp444_ = NULL;
+                                                                       ValaClass* _tmp445_ = NULL;
+                                                                       ValaClass* _tmp446_ = NULL;
+                                                                       _tmp408_ = base_class;
+                                                                       if (!(_tmp408_ != NULL)) {
                                                                                break;
                                                                        }
-                                                                       _tmp411_ = base_class;
-                                                                       _tmp412_ = vala_symbol_get_scope ((ValaSymbol*) _tmp411_);
-                                                                       _tmp413_ = _tmp412_;
-                                                                       _tmp414_ = m;
-                                                                       _tmp415_ = vala_symbol_get_name ((ValaSymbol*) _tmp414_);
-                                                                       _tmp416_ = _tmp415_;
-                                                                       _tmp417_ = vala_scope_lookup (_tmp413_, _tmp416_);
-                                                                       _vala_code_node_unref0 (sym);
-                                                                       sym = _tmp417_;
-                                                                       _tmp418_ = base_class;
-                                                                       _tmp419_ = _tmp418_->priv->_base_class;
-                                                                       _tmp420_ = _vala_code_node_ref0 (_tmp419_);
+                                                                       {
+                                                                               ValaList* _impl_list = NULL;
+                                                                               ValaClass* _tmp409_ = NULL;
+                                                                               ValaList* _tmp410_ = NULL;
+                                                                               gint _impl_size = 0;
+                                                                               ValaList* _tmp411_ = NULL;
+                                                                               gint _tmp412_ = 0;
+                                                                               gint _tmp413_ = 0;
+                                                                               gint _impl_index = 0;
+                                                                               _tmp409_ = base_class;
+                                                                               _tmp410_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp409_);
+                                                                               _impl_list = _tmp410_;
+                                                                               _tmp411_ = _impl_list;
+                                                                               _tmp412_ = vala_collection_get_size ((ValaCollection*) _tmp411_);
+                                                                               _tmp413_ = _tmp412_;
+                                                                               _impl_size = _tmp413_;
+                                                                               _impl_index = -1;
+                                                                               while (TRUE) {
+                                                                                       gint _tmp414_ = 0;
+                                                                                       gint _tmp415_ = 0;
+                                                                                       gint _tmp416_ = 0;
+                                                                                       ValaMethod* impl = NULL;
+                                                                                       ValaList* _tmp417_ = NULL;
+                                                                                       gint _tmp418_ = 0;
+                                                                                       gpointer _tmp419_ = NULL;
+                                                                                       gboolean _tmp420_ = FALSE;
+                                                                                       ValaMethod* _tmp421_ = NULL;
+                                                                                       const gchar* _tmp422_ = NULL;
+                                                                                       const gchar* _tmp423_ = NULL;
+                                                                                       ValaMethod* _tmp424_ = NULL;
+                                                                                       const gchar* _tmp425_ = NULL;
+                                                                                       const gchar* _tmp426_ = NULL;
+                                                                                       _tmp414_ = _impl_index;
+                                                                                       _impl_index = _tmp414_ + 1;
+                                                                                       _tmp415_ = _impl_index;
+                                                                                       _tmp416_ = _impl_size;
+                                                                                       if (!(_tmp415_ < _tmp416_)) {
+                                                                                               break;
+                                                                                       }
+                                                                                       _tmp417_ = _impl_list;
+                                                                                       _tmp418_ = _impl_index;
+                                                                                       _tmp419_ = vala_list_get (_tmp417_, _tmp418_);
+                                                                                       impl = (ValaMethod*) _tmp419_;
+                                                                                       _tmp421_ = impl;
+                                                                                       _tmp422_ = vala_symbol_get_name ((ValaSymbol*) _tmp421_);
+                                                                                       _tmp423_ = _tmp422_;
+                                                                                       _tmp424_ = m;
+                                                                                       _tmp425_ = vala_symbol_get_name ((ValaSymbol*) _tmp424_);
+                                                                                       _tmp426_ = _tmp425_;
+                                                                                       if (g_strcmp0 (_tmp423_, _tmp426_) == 0) {
+                                                                                               gboolean _tmp427_ = FALSE;
+                                                                                               ValaMethod* _tmp428_ = NULL;
+                                                                                               ValaDataType* _tmp429_ = NULL;
+                                                                                               ValaDataType* _tmp430_ = NULL;
+                                                                                               _tmp428_ = impl;
+                                                                                               _tmp429_ = vala_method_get_base_interface_type (_tmp428_);
+                                                                                               _tmp430_ = _tmp429_;
+                                                                                               if (_tmp430_ == NULL) {
+                                                                                                       _tmp427_ = TRUE;
+                                                                                               } else {
+                                                                                                       ValaMethod* _tmp431_ = NULL;
+                                                                                                       ValaDataType* _tmp432_ = NULL;
+                                                                                                       ValaDataType* _tmp433_ = NULL;
+                                                                                                       ValaTypeSymbol* _tmp434_ = NULL;
+                                                                                                       ValaTypeSymbol* _tmp435_ = NULL;
+                                                                                                       ValaInterface* _tmp436_ = NULL;
+                                                                                                       _tmp431_ = impl;
+                                                                                                       _tmp432_ = vala_method_get_base_interface_type (_tmp431_);
+                                                                                                       _tmp433_ = _tmp432_;
+                                                                                                       _tmp434_ = vala_data_type_get_data_type (_tmp433_);
+                                                                                                       _tmp435_ = _tmp434_;
+                                                                                                       _tmp436_ = iface;
+                                                                                                       _tmp427_ = _tmp435_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp436_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
+                                                                                               }
+                                                                                               _tmp420_ = _tmp427_;
+                                                                                       } else {
+                                                                                               _tmp420_ = FALSE;
+                                                                                       }
+                                                                                       if (_tmp420_) {
+                                                                                               ValaMethod* _tmp437_ = NULL;
+                                                                                               ValaSourceReference* _tmp438_ = NULL;
+                                                                                               ValaSourceReference* _tmp439_ = NULL;
+                                                                                               ValaMethod* _tmp440_ = NULL;
+                                                                                               ValaSourceReference* _tmp441_ = NULL;
+                                                                                               ValaSourceReference* _tmp442_ = NULL;
+                                                                                               ValaMethod* _tmp443_ = NULL;
+                                                                                               _tmp437_ = impl;
+                                                                                               _tmp438_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                                               _tmp439_ = _tmp438_;
+                                                                                               vala_symbol_check_deprecated ((ValaSymbol*) _tmp437_, _tmp439_);
+                                                                                               _tmp440_ = impl;
+                                                                                               _tmp441_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                                               _tmp442_ = _tmp441_;
+                                                                                               vala_symbol_check_experimental ((ValaSymbol*) _tmp440_, _tmp442_);
+                                                                                               _tmp443_ = impl;
+                                                                                               vala_symbol_set_used ((ValaSymbol*) _tmp443_, TRUE);
+                                                                                               implemented = TRUE;
+                                                                                               _vala_code_node_unref0 (impl);
+                                                                                               break;
+                                                                                       }
+                                                                                       _vala_code_node_unref0 (impl);
+                                                                               }
+                                                                               _vala_iterable_unref0 (_impl_list);
+                                                                       }
+                                                                       _tmp444_ = base_class;
+                                                                       _tmp445_ = _tmp444_->priv->_base_class;
+                                                                       _tmp446_ = _vala_code_node_ref0 (_tmp445_);
                                                                        _vala_code_node_unref0 (base_class);
-                                                                       base_class = _tmp420_;
+                                                                       base_class = _tmp446_;
                                                                }
-                                                               _tmp421_ = sym;
-                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp421_, VALA_TYPE_METHOD)) {
-                                                                       ValaSymbol* _tmp422_ = NULL;
-                                                                       ValaSourceReference* _tmp423_ = NULL;
-                                                                       ValaSourceReference* _tmp424_ = NULL;
-                                                                       ValaSymbol* _tmp425_ = NULL;
-                                                                       ValaSourceReference* _tmp426_ = NULL;
-                                                                       ValaSourceReference* _tmp427_ = NULL;
-                                                                       ValaSymbol* _tmp428_ = NULL;
-                                                                       _tmp422_ = sym;
-                                                                       _tmp423_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                       _tmp424_ = _tmp423_;
-                                                                       vala_symbol_check_deprecated (_tmp422_, _tmp424_);
-                                                                       _tmp425_ = sym;
-                                                                       _tmp426_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                       _tmp427_ = _tmp426_;
-                                                                       vala_symbol_check_experimental (_tmp425_, _tmp427_);
-                                                                       _tmp428_ = sym;
-                                                                       vala_symbol_set_used (_tmp428_, TRUE);
-                                                               } else {
-                                                                       ValaSourceReference* _tmp429_ = NULL;
-                                                                       ValaSourceReference* _tmp430_ = NULL;
-                                                                       gchar* _tmp431_ = NULL;
-                                                                       gchar* _tmp432_ = NULL;
-                                                                       ValaMethod* _tmp433_ = NULL;
-                                                                       gchar* _tmp434_ = NULL;
-                                                                       gchar* _tmp435_ = NULL;
-                                                                       gchar* _tmp436_ = NULL;
-                                                                       gchar* _tmp437_ = NULL;
+                                                               _tmp447_ = implemented;
+                                                               if (!_tmp447_) {
+                                                                       ValaSourceReference* _tmp448_ = NULL;
+                                                                       ValaSourceReference* _tmp449_ = NULL;
+                                                                       gchar* _tmp450_ = NULL;
+                                                                       gchar* _tmp451_ = NULL;
+                                                                       ValaMethod* _tmp452_ = NULL;
+                                                                       gchar* _tmp453_ = NULL;
+                                                                       gchar* _tmp454_ = NULL;
+                                                                       gchar* _tmp455_ = NULL;
+                                                                       gchar* _tmp456_ = NULL;
                                                                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                                                                       _tmp429_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                       _tmp430_ = _tmp429_;
-                                                                       _tmp431_ = vala_symbol_get_full_name ((ValaSymbol*) self);
-                                                                       _tmp432_ = _tmp431_;
-                                                                       _tmp433_ = m;
-                                                                       _tmp434_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp433_);
-                                                                       _tmp435_ = _tmp434_;
-                                                                       _tmp436_ = g_strdup_printf ("`%s' does not implement interface method `%s'", _tmp432_, _tmp435_);
-                                                                       _tmp437_ = _tmp436_;
-                                                                       vala_report_error (_tmp430_, _tmp437_);
-                                                                       _g_free0 (_tmp437_);
-                                                                       _g_free0 (_tmp435_);
-                                                                       _g_free0 (_tmp432_);
+                                                                       _tmp448_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                       _tmp449_ = _tmp448_;
+                                                                       _tmp450_ = vala_symbol_get_full_name ((ValaSymbol*) self);
+                                                                       _tmp451_ = _tmp450_;
+                                                                       _tmp452_ = m;
+                                                                       _tmp453_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp452_);
+                                                                       _tmp454_ = _tmp453_;
+                                                                       _tmp455_ = g_strdup_printf ("`%s' does not implement interface method `%s'", _tmp451_, _tmp454_);
+                                                                       _tmp456_ = _tmp455_;
+                                                                       vala_report_error (_tmp449_, _tmp456_);
+                                                                       _g_free0 (_tmp456_);
+                                                                       _g_free0 (_tmp454_);
+                                                                       _g_free0 (_tmp451_);
                                                                }
                                                                _vala_code_node_unref0 (base_class);
-                                                               _vala_code_node_unref0 (sym);
                                                        }
                                                        _vala_code_node_unref0 (m);
                                                }
@@ -4910,136 +4988,136 @@ static gboolean vala_class_real_check (ValaCodeNode* base, ValaCodeContext* cont
                                        }
                                        {
                                                ValaList* _prop_list = NULL;
-                                               ValaInterface* _tmp438_ = NULL;
-                                               ValaList* _tmp439_ = NULL;
+                                               ValaInterface* _tmp457_ = NULL;
+                                               ValaList* _tmp458_ = NULL;
                                                gint _prop_size = 0;
-                                               ValaList* _tmp440_ = NULL;
-                                               gint _tmp441_ = 0;
-                                               gint _tmp442_ = 0;
+                                               ValaList* _tmp459_ = NULL;
+                                               gint _tmp460_ = 0;
+                                               gint _tmp461_ = 0;
                                                gint _prop_index = 0;
-                                               _tmp438_ = iface;
-                                               _tmp439_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp438_);
-                                               _prop_list = _tmp439_;
-                                               _tmp440_ = _prop_list;
-                                               _tmp441_ = vala_collection_get_size ((ValaCollection*) _tmp440_);
-                                               _tmp442_ = _tmp441_;
-                                               _prop_size = _tmp442_;
+                                               _tmp457_ = iface;
+                                               _tmp458_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp457_);
+                                               _prop_list = _tmp458_;
+                                               _tmp459_ = _prop_list;
+                                               _tmp460_ = vala_collection_get_size ((ValaCollection*) _tmp459_);
+                                               _tmp461_ = _tmp460_;
+                                               _prop_size = _tmp461_;
                                                _prop_index = -1;
                                                while (TRUE) {
-                                                       gint _tmp443_ = 0;
-                                                       gint _tmp444_ = 0;
-                                                       gint _tmp445_ = 0;
+                                                       gint _tmp462_ = 0;
+                                                       gint _tmp463_ = 0;
+                                                       gint _tmp464_ = 0;
                                                        ValaProperty* prop = NULL;
-                                                       ValaList* _tmp446_ = NULL;
-                                                       gint _tmp447_ = 0;
-                                                       gpointer _tmp448_ = NULL;
-                                                       ValaProperty* _tmp449_ = NULL;
-                                                       gboolean _tmp450_ = FALSE;
-                                                       gboolean _tmp451_ = FALSE;
-                                                       _tmp443_ = _prop_index;
-                                                       _prop_index = _tmp443_ + 1;
-                                                       _tmp444_ = _prop_index;
-                                                       _tmp445_ = _prop_size;
-                                                       if (!(_tmp444_ < _tmp445_)) {
+                                                       ValaList* _tmp465_ = NULL;
+                                                       gint _tmp466_ = 0;
+                                                       gpointer _tmp467_ = NULL;
+                                                       ValaProperty* _tmp468_ = NULL;
+                                                       gboolean _tmp469_ = FALSE;
+                                                       gboolean _tmp470_ = FALSE;
+                                                       _tmp462_ = _prop_index;
+                                                       _prop_index = _tmp462_ + 1;
+                                                       _tmp463_ = _prop_index;
+                                                       _tmp464_ = _prop_size;
+                                                       if (!(_tmp463_ < _tmp464_)) {
                                                                break;
                                                        }
-                                                       _tmp446_ = _prop_list;
-                                                       _tmp447_ = _prop_index;
-                                                       _tmp448_ = vala_list_get (_tmp446_, _tmp447_);
-                                                       prop = (ValaProperty*) _tmp448_;
-                                                       _tmp449_ = prop;
-                                                       _tmp450_ = vala_property_get_is_abstract (_tmp449_);
-                                                       _tmp451_ = _tmp450_;
-                                                       if (_tmp451_) {
+                                                       _tmp465_ = _prop_list;
+                                                       _tmp466_ = _prop_index;
+                                                       _tmp467_ = vala_list_get (_tmp465_, _tmp466_);
+                                                       prop = (ValaProperty*) _tmp467_;
+                                                       _tmp468_ = prop;
+                                                       _tmp469_ = vala_property_get_is_abstract (_tmp468_);
+                                                       _tmp470_ = _tmp469_;
+                                                       if (_tmp470_) {
                                                                ValaSymbol* sym = NULL;
                                                                ValaClass* base_class = NULL;
-                                                               ValaClass* _tmp452_ = NULL;
-                                                               ValaSymbol* _tmp466_ = NULL;
+                                                               ValaClass* _tmp471_ = NULL;
+                                                               ValaSymbol* _tmp485_ = NULL;
                                                                sym = NULL;
-                                                               _tmp452_ = _vala_code_node_ref0 (self);
-                                                               base_class = _tmp452_;
+                                                               _tmp471_ = _vala_code_node_ref0 (self);
+                                                               base_class = _tmp471_;
                                                                while (TRUE) {
-                                                                       gboolean _tmp453_ = FALSE;
-                                                                       ValaClass* _tmp454_ = NULL;
-                                                                       ValaClass* _tmp456_ = NULL;
-                                                                       ValaScope* _tmp457_ = NULL;
-                                                                       ValaScope* _tmp458_ = NULL;
-                                                                       ValaProperty* _tmp459_ = NULL;
-                                                                       const gchar* _tmp460_ = NULL;
-                                                                       const gchar* _tmp461_ = NULL;
-                                                                       ValaSymbol* _tmp462_ = NULL;
-                                                                       ValaClass* _tmp463_ = NULL;
-                                                                       ValaClass* _tmp464_ = NULL;
-                                                                       ValaClass* _tmp465_ = NULL;
-                                                                       _tmp454_ = base_class;
-                                                                       if (_tmp454_ != NULL) {
-                                                                               ValaSymbol* _tmp455_ = NULL;
-                                                                               _tmp455_ = sym;
-                                                                               _tmp453_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp455_, VALA_TYPE_PROPERTY);
+                                                                       gboolean _tmp472_ = FALSE;
+                                                                       ValaClass* _tmp473_ = NULL;
+                                                                       ValaClass* _tmp475_ = NULL;
+                                                                       ValaScope* _tmp476_ = NULL;
+                                                                       ValaScope* _tmp477_ = NULL;
+                                                                       ValaProperty* _tmp478_ = NULL;
+                                                                       const gchar* _tmp479_ = NULL;
+                                                                       const gchar* _tmp480_ = NULL;
+                                                                       ValaSymbol* _tmp481_ = NULL;
+                                                                       ValaClass* _tmp482_ = NULL;
+                                                                       ValaClass* _tmp483_ = NULL;
+                                                                       ValaClass* _tmp484_ = NULL;
+                                                                       _tmp473_ = base_class;
+                                                                       if (_tmp473_ != NULL) {
+                                                                               ValaSymbol* _tmp474_ = NULL;
+                                                                               _tmp474_ = sym;
+                                                                               _tmp472_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp474_, VALA_TYPE_PROPERTY);
                                                                        } else {
-                                                                               _tmp453_ = FALSE;
+                                                                               _tmp472_ = FALSE;
                                                                        }
-                                                                       if (!_tmp453_) {
+                                                                       if (!_tmp472_) {
                                                                                break;
                                                                        }
-                                                                       _tmp456_ = base_class;
-                                                                       _tmp457_ = vala_symbol_get_scope ((ValaSymbol*) _tmp456_);
-                                                                       _tmp458_ = _tmp457_;
-                                                                       _tmp459_ = prop;
-                                                                       _tmp460_ = vala_symbol_get_name ((ValaSymbol*) _tmp459_);
-                                                                       _tmp461_ = _tmp460_;
-                                                                       _tmp462_ = vala_scope_lookup (_tmp458_, _tmp461_);
+                                                                       _tmp475_ = base_class;
+                                                                       _tmp476_ = vala_symbol_get_scope ((ValaSymbol*) _tmp475_);
+                                                                       _tmp477_ = _tmp476_;
+                                                                       _tmp478_ = prop;
+                                                                       _tmp479_ = vala_symbol_get_name ((ValaSymbol*) _tmp478_);
+                                                                       _tmp480_ = _tmp479_;
+                                                                       _tmp481_ = vala_scope_lookup (_tmp477_, _tmp480_);
                                                                        _vala_code_node_unref0 (sym);
-                                                                       sym = _tmp462_;
-                                                                       _tmp463_ = base_class;
-                                                                       _tmp464_ = _tmp463_->priv->_base_class;
-                                                                       _tmp465_ = _vala_code_node_ref0 (_tmp464_);
+                                                                       sym = _tmp481_;
+                                                                       _tmp482_ = base_class;
+                                                                       _tmp483_ = _tmp482_->priv->_base_class;
+                                                                       _tmp484_ = _vala_code_node_ref0 (_tmp483_);
                                                                        _vala_code_node_unref0 (base_class);
-                                                                       base_class = _tmp465_;
+                                                                       base_class = _tmp484_;
                                                                }
-                                                               _tmp466_ = sym;
-                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp466_, VALA_TYPE_PROPERTY)) {
-                                                                       ValaSymbol* _tmp467_ = NULL;
-                                                                       ValaSourceReference* _tmp468_ = NULL;
-                                                                       ValaSourceReference* _tmp469_ = NULL;
-                                                                       ValaSymbol* _tmp470_ = NULL;
-                                                                       ValaSourceReference* _tmp471_ = NULL;
-                                                                       ValaSourceReference* _tmp472_ = NULL;
-                                                                       ValaSymbol* _tmp473_ = NULL;
-                                                                       _tmp467_ = sym;
-                                                                       _tmp468_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                       _tmp469_ = _tmp468_;
-                                                                       vala_symbol_check_deprecated (_tmp467_, _tmp469_);
-                                                                       _tmp470_ = sym;
-                                                                       _tmp471_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                       _tmp472_ = _tmp471_;
-                                                                       vala_symbol_check_experimental (_tmp470_, _tmp472_);
-                                                                       _tmp473_ = sym;
-                                                                       vala_symbol_set_used (_tmp473_, TRUE);
+                                                               _tmp485_ = sym;
+                                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp485_, VALA_TYPE_PROPERTY)) {
+                                                                       ValaSymbol* _tmp486_ = NULL;
+                                                                       ValaSourceReference* _tmp487_ = NULL;
+                                                                       ValaSourceReference* _tmp488_ = NULL;
+                                                                       ValaSymbol* _tmp489_ = NULL;
+                                                                       ValaSourceReference* _tmp490_ = NULL;
+                                                                       ValaSourceReference* _tmp491_ = NULL;
+                                                                       ValaSymbol* _tmp492_ = NULL;
+                                                                       _tmp486_ = sym;
+                                                                       _tmp487_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                       _tmp488_ = _tmp487_;
+                                                                       vala_symbol_check_deprecated (_tmp486_, _tmp488_);
+                                                                       _tmp489_ = sym;
+                                                                       _tmp490_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                       _tmp491_ = _tmp490_;
+                                                                       vala_symbol_check_experimental (_tmp489_, _tmp491_);
+                                                                       _tmp492_ = sym;
+                                                                       vala_symbol_set_used (_tmp492_, TRUE);
                                                                } else {
-                                                                       ValaSourceReference* _tmp474_ = NULL;
-                                                                       ValaSourceReference* _tmp475_ = NULL;
-                                                                       gchar* _tmp476_ = NULL;
-                                                                       gchar* _tmp477_ = NULL;
-                                                                       ValaProperty* _tmp478_ = NULL;
-                                                                       gchar* _tmp479_ = NULL;
-                                                                       gchar* _tmp480_ = NULL;
-                                                                       gchar* _tmp481_ = NULL;
-                                                                       gchar* _tmp482_ = NULL;
+                                                                       ValaSourceReference* _tmp493_ = NULL;
+                                                                       ValaSourceReference* _tmp494_ = NULL;
+                                                                       gchar* _tmp495_ = NULL;
+                                                                       gchar* _tmp496_ = NULL;
+                                                                       ValaProperty* _tmp497_ = NULL;
+                                                                       gchar* _tmp498_ = NULL;
+                                                                       gchar* _tmp499_ = NULL;
+                                                                       gchar* _tmp500_ = NULL;
+                                                                       gchar* _tmp501_ = NULL;
                                                                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                                                                       _tmp474_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                                       _tmp475_ = _tmp474_;
-                                                                       _tmp476_ = vala_symbol_get_full_name ((ValaSymbol*) self);
-                                                                       _tmp477_ = _tmp476_;
-                                                                       _tmp478_ = prop;
-                                                                       _tmp479_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp478_);
-                                                                       _tmp480_ = _tmp479_;
-                                                                       _tmp481_ = g_strdup_printf ("`%s' does not implement interface property `%s'", _tmp477_, _tmp480_);
-                                                                       _tmp482_ = _tmp481_;
-                                                                       vala_report_error (_tmp475_, _tmp482_);
-                                                                       _g_free0 (_tmp482_);
-                                                                       _g_free0 (_tmp480_);
-                                                                       _g_free0 (_tmp477_);
+                                                                       _tmp493_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                                       _tmp494_ = _tmp493_;
+                                                                       _tmp495_ = vala_symbol_get_full_name ((ValaSymbol*) self);
+                                                                       _tmp496_ = _tmp495_;
+                                                                       _tmp497_ = prop;
+                                                                       _tmp498_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp497_);
+                                                                       _tmp499_ = _tmp498_;
+                                                                       _tmp500_ = g_strdup_printf ("`%s' does not implement interface property `%s'", _tmp496_, _tmp499_);
+                                                                       _tmp501_ = _tmp500_;
+                                                                       vala_report_error (_tmp494_, _tmp501_);
+                                                                       _g_free0 (_tmp501_);
+                                                                       _g_free0 (_tmp499_);
+                                                                       _g_free0 (_tmp496_);
                                                                }
                                                                _vala_code_node_unref0 (base_class);
                                                                _vala_code_node_unref0 (sym);
@@ -5054,129 +5132,129 @@ static gboolean vala_class_real_check (ValaCodeNode* base, ValaCodeContext* cont
                        }
                        _vala_iterable_unref0 (_base_type_list);
                }
-               _tmp483_ = self->priv->_is_abstract;
-               if (!_tmp483_) {
+               _tmp502_ = self->priv->_is_abstract;
+               if (!_tmp502_) {
                        ValaClass* base_class = NULL;
-                       ValaClass* _tmp484_ = NULL;
-                       ValaClass* _tmp485_ = NULL;
-                       _tmp484_ = self->priv->_base_class;
-                       _tmp485_ = _vala_code_node_ref0 (_tmp484_);
-                       base_class = _tmp485_;
+                       ValaClass* _tmp503_ = NULL;
+                       ValaClass* _tmp504_ = NULL;
+                       _tmp503_ = self->priv->_base_class;
+                       _tmp504_ = _vala_code_node_ref0 (_tmp503_);
+                       base_class = _tmp504_;
                        while (TRUE) {
-                               gboolean _tmp486_ = FALSE;
-                               ValaClass* _tmp487_ = NULL;
-                               ValaClass* _tmp556_ = NULL;
-                               ValaClass* _tmp557_ = NULL;
-                               ValaClass* _tmp558_ = NULL;
-                               _tmp487_ = base_class;
-                               if (_tmp487_ != NULL) {
-                                       ValaClass* _tmp488_ = NULL;
-                                       gboolean _tmp489_ = FALSE;
-                                       _tmp488_ = base_class;
-                                       _tmp489_ = _tmp488_->priv->_is_abstract;
-                                       _tmp486_ = _tmp489_;
+                               gboolean _tmp505_ = FALSE;
+                               ValaClass* _tmp506_ = NULL;
+                               ValaClass* _tmp575_ = NULL;
+                               ValaClass* _tmp576_ = NULL;
+                               ValaClass* _tmp577_ = NULL;
+                               _tmp506_ = base_class;
+                               if (_tmp506_ != NULL) {
+                                       ValaClass* _tmp507_ = NULL;
+                                       gboolean _tmp508_ = FALSE;
+                                       _tmp507_ = base_class;
+                                       _tmp508_ = _tmp507_->priv->_is_abstract;
+                                       _tmp505_ = _tmp508_;
                                } else {
-                                       _tmp486_ = FALSE;
+                                       _tmp505_ = FALSE;
                                }
-                               if (!_tmp486_) {
+                               if (!_tmp505_) {
                                        break;
                                }
                                {
                                        ValaList* _base_method_list = NULL;
-                                       ValaClass* _tmp490_ = NULL;
-                                       ValaList* _tmp491_ = NULL;
+                                       ValaClass* _tmp509_ = NULL;
+                                       ValaList* _tmp510_ = NULL;
                                        gint _base_method_size = 0;
-                                       ValaList* _tmp492_ = NULL;
-                                       gint _tmp493_ = 0;
-                                       gint _tmp494_ = 0;
+                                       ValaList* _tmp511_ = NULL;
+                                       gint _tmp512_ = 0;
+                                       gint _tmp513_ = 0;
                                        gint _base_method_index = 0;
-                                       _tmp490_ = base_class;
-                                       _tmp491_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp490_);
-                                       _base_method_list = _tmp491_;
-                                       _tmp492_ = _base_method_list;
-                                       _tmp493_ = vala_collection_get_size ((ValaCollection*) _tmp492_);
-                                       _tmp494_ = _tmp493_;
-                                       _base_method_size = _tmp494_;
+                                       _tmp509_ = base_class;
+                                       _tmp510_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp509_);
+                                       _base_method_list = _tmp510_;
+                                       _tmp511_ = _base_method_list;
+                                       _tmp512_ = vala_collection_get_size ((ValaCollection*) _tmp511_);
+                                       _tmp513_ = _tmp512_;
+                                       _base_method_size = _tmp513_;
                                        _base_method_index = -1;
                                        while (TRUE) {
-                                               gint _tmp495_ = 0;
-                                               gint _tmp496_ = 0;
-                                               gint _tmp497_ = 0;
+                                               gint _tmp514_ = 0;
+                                               gint _tmp515_ = 0;
+                                               gint _tmp516_ = 0;
                                                ValaMethod* base_method = NULL;
-                                               ValaList* _tmp498_ = NULL;
-                                               gint _tmp499_ = 0;
-                                               gpointer _tmp500_ = NULL;
-                                               ValaMethod* _tmp501_ = NULL;
-                                               gboolean _tmp502_ = FALSE;
-                                               gboolean _tmp503_ = FALSE;
-                                               _tmp495_ = _base_method_index;
-                                               _base_method_index = _tmp495_ + 1;
-                                               _tmp496_ = _base_method_index;
-                                               _tmp497_ = _base_method_size;
-                                               if (!(_tmp496_ < _tmp497_)) {
+                                               ValaList* _tmp517_ = NULL;
+                                               gint _tmp518_ = 0;
+                                               gpointer _tmp519_ = NULL;
+                                               ValaMethod* _tmp520_ = NULL;
+                                               gboolean _tmp521_ = FALSE;
+                                               gboolean _tmp522_ = FALSE;
+                                               _tmp514_ = _base_method_index;
+                                               _base_method_index = _tmp514_ + 1;
+                                               _tmp515_ = _base_method_index;
+                                               _tmp516_ = _base_method_size;
+                                               if (!(_tmp515_ < _tmp516_)) {
                                                        break;
                                                }
-                                               _tmp498_ = _base_method_list;
-                                               _tmp499_ = _base_method_index;
-                                               _tmp500_ = vala_list_get (_tmp498_, _tmp499_);
-                                               base_method = (ValaMethod*) _tmp500_;
-                                               _tmp501_ = base_method;
-                                               _tmp502_ = vala_method_get_is_abstract (_tmp501_);
-                                               _tmp503_ = _tmp502_;
-                                               if (_tmp503_) {
+                                               _tmp517_ = _base_method_list;
+                                               _tmp518_ = _base_method_index;
+                                               _tmp519_ = vala_list_get (_tmp517_, _tmp518_);
+                                               base_method = (ValaMethod*) _tmp519_;
+                                               _tmp520_ = base_method;
+                                               _tmp521_ = vala_method_get_is_abstract (_tmp520_);
+                                               _tmp522_ = _tmp521_;
+                                               if (_tmp522_) {
                                                        ValaMethod* override_method = NULL;
-                                                       ValaMethod* _tmp504_ = NULL;
-                                                       const gchar* _tmp505_ = NULL;
-                                                       const gchar* _tmp506_ = NULL;
-                                                       ValaSymbol* _tmp507_ = NULL;
-                                                       ValaMethod* _tmp508_ = NULL;
-                                                       gboolean _tmp509_ = FALSE;
-                                                       ValaMethod* _tmp510_ = NULL;
-                                                       _tmp504_ = base_method;
-                                                       _tmp505_ = vala_symbol_get_name ((ValaSymbol*) _tmp504_);
-                                                       _tmp506_ = _tmp505_;
-                                                       _tmp507_ = vala_semantic_analyzer_symbol_lookup_inherited ((ValaSymbol*) self, _tmp506_);
-                                                       _tmp508_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp507_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp507_) : NULL;
-                                                       if (_tmp508_ == NULL) {
-                                                               _vala_code_node_unref0 (_tmp507_);
+                                                       ValaMethod* _tmp523_ = NULL;
+                                                       const gchar* _tmp524_ = NULL;
+                                                       const gchar* _tmp525_ = NULL;
+                                                       ValaSymbol* _tmp526_ = NULL;
+                                                       ValaMethod* _tmp527_ = NULL;
+                                                       gboolean _tmp528_ = FALSE;
+                                                       ValaMethod* _tmp529_ = NULL;
+                                                       _tmp523_ = base_method;
+                                                       _tmp524_ = vala_symbol_get_name ((ValaSymbol*) _tmp523_);
+                                                       _tmp525_ = _tmp524_;
+                                                       _tmp526_ = vala_semantic_analyzer_symbol_lookup_inherited ((ValaSymbol*) self, _tmp525_);
+                                                       _tmp527_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp526_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp526_) : NULL;
+                                                       if (_tmp527_ == NULL) {
+                                                               _vala_code_node_unref0 (_tmp526_);
                                                        }
-                                                       override_method = _tmp508_;
-                                                       _tmp510_ = override_method;
-                                                       if (_tmp510_ == NULL) {
-                                                               _tmp509_ = TRUE;
+                                                       override_method = _tmp527_;
+                                                       _tmp529_ = override_method;
+                                                       if (_tmp529_ == NULL) {
+                                                               _tmp528_ = TRUE;
                                                        } else {
-                                                               ValaMethod* _tmp511_ = NULL;
-                                                               gboolean _tmp512_ = FALSE;
-                                                               gboolean _tmp513_ = FALSE;
-                                                               _tmp511_ = override_method;
-                                                               _tmp512_ = vala_method_get_overrides (_tmp511_);
-                                                               _tmp513_ = _tmp512_;
-                                                               _tmp509_ = !_tmp513_;
+                                                               ValaMethod* _tmp530_ = NULL;
+                                                               gboolean _tmp531_ = FALSE;
+                                                               gboolean _tmp532_ = FALSE;
+                                                               _tmp530_ = override_method;
+                                                               _tmp531_ = vala_method_get_overrides (_tmp530_);
+                                                               _tmp532_ = _tmp531_;
+                                                               _tmp528_ = !_tmp532_;
                                                        }
-                                                       if (_tmp509_) {
-                                                               ValaSourceReference* _tmp514_ = NULL;
-                                                               ValaSourceReference* _tmp515_ = NULL;
-                                                               gchar* _tmp516_ = NULL;
-                                                               gchar* _tmp517_ = NULL;
-                                                               ValaMethod* _tmp518_ = NULL;
-                                                               gchar* _tmp519_ = NULL;
-                                                               gchar* _tmp520_ = NULL;
-                                                               gchar* _tmp521_ = NULL;
-                                                               gchar* _tmp522_ = NULL;
+                                                       if (_tmp528_) {
+                                                               ValaSourceReference* _tmp533_ = NULL;
+                                                               ValaSourceReference* _tmp534_ = NULL;
+                                                               gchar* _tmp535_ = NULL;
+                                                               gchar* _tmp536_ = NULL;
+                                                               ValaMethod* _tmp537_ = NULL;
+                                                               gchar* _tmp538_ = NULL;
+                                                               gchar* _tmp539_ = NULL;
+                                                               gchar* _tmp540_ = NULL;
+                                                               gchar* _tmp541_ = NULL;
                                                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                                                               _tmp514_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                               _tmp515_ = _tmp514_;
-                                                               _tmp516_ = vala_symbol_get_full_name ((ValaSymbol*) self);
-                                                               _tmp517_ = _tmp516_;
-                                                               _tmp518_ = base_method;
-                                                               _tmp519_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp518_);
-                                                               _tmp520_ = _tmp519_;
-                                                               _tmp521_ = g_strdup_printf ("`%s' does not implement abstract method `%s'", _tmp517_, _tmp520_);
-                                                               _tmp522_ = _tmp521_;
-                                                               vala_report_error (_tmp515_, _tmp522_);
-                                                               _g_free0 (_tmp522_);
-                                                               _g_free0 (_tmp520_);
-                                                               _g_free0 (_tmp517_);
+                                                               _tmp533_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                               _tmp534_ = _tmp533_;
+                                                               _tmp535_ = vala_symbol_get_full_name ((ValaSymbol*) self);
+                                                               _tmp536_ = _tmp535_;
+                                                               _tmp537_ = base_method;
+                                                               _tmp538_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp537_);
+                                                               _tmp539_ = _tmp538_;
+                                                               _tmp540_ = g_strdup_printf ("`%s' does not implement abstract method `%s'", _tmp536_, _tmp539_);
+                                                               _tmp541_ = _tmp540_;
+                                                               vala_report_error (_tmp534_, _tmp541_);
+                                                               _g_free0 (_tmp541_);
+                                                               _g_free0 (_tmp539_);
+                                                               _g_free0 (_tmp536_);
                                                        }
                                                        _vala_code_node_unref0 (override_method);
                                                }
@@ -5186,100 +5264,100 @@ static gboolean vala_class_real_check (ValaCodeNode* base, ValaCodeContext* cont
                                }
                                {
                                        ValaList* _base_property_list = NULL;
-                                       ValaClass* _tmp523_ = NULL;
-                                       ValaList* _tmp524_ = NULL;
+                                       ValaClass* _tmp542_ = NULL;
+                                       ValaList* _tmp543_ = NULL;
                                        gint _base_property_size = 0;
-                                       ValaList* _tmp525_ = NULL;
-                                       gint _tmp526_ = 0;
-                                       gint _tmp527_ = 0;
+                                       ValaList* _tmp544_ = NULL;
+                                       gint _tmp545_ = 0;
+                                       gint _tmp546_ = 0;
                                        gint _base_property_index = 0;
-                                       _tmp523_ = base_class;
-                                       _tmp524_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp523_);
-                                       _base_property_list = _tmp524_;
-                                       _tmp525_ = _base_property_list;
-                                       _tmp526_ = vala_collection_get_size ((ValaCollection*) _tmp525_);
-                                       _tmp527_ = _tmp526_;
-                                       _base_property_size = _tmp527_;
+                                       _tmp542_ = base_class;
+                                       _tmp543_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp542_);
+                                       _base_property_list = _tmp543_;
+                                       _tmp544_ = _base_property_list;
+                                       _tmp545_ = vala_collection_get_size ((ValaCollection*) _tmp544_);
+                                       _tmp546_ = _tmp545_;
+                                       _base_property_size = _tmp546_;
                                        _base_property_index = -1;
                                        while (TRUE) {
-                                               gint _tmp528_ = 0;
-                                               gint _tmp529_ = 0;
-                                               gint _tmp530_ = 0;
+                                               gint _tmp547_ = 0;
+                                               gint _tmp548_ = 0;
+                                               gint _tmp549_ = 0;
                                                ValaProperty* base_property = NULL;
-                                               ValaList* _tmp531_ = NULL;
-                                               gint _tmp532_ = 0;
-                                               gpointer _tmp533_ = NULL;
-                                               ValaProperty* _tmp534_ = NULL;
-                                               gboolean _tmp535_ = FALSE;
-                                               gboolean _tmp536_ = FALSE;
-                                               _tmp528_ = _base_property_index;
-                                               _base_property_index = _tmp528_ + 1;
-                                               _tmp529_ = _base_property_index;
-                                               _tmp530_ = _base_property_size;
-                                               if (!(_tmp529_ < _tmp530_)) {
+                                               ValaList* _tmp550_ = NULL;
+                                               gint _tmp551_ = 0;
+                                               gpointer _tmp552_ = NULL;
+                                               ValaProperty* _tmp553_ = NULL;
+                                               gboolean _tmp554_ = FALSE;
+                                               gboolean _tmp555_ = FALSE;
+                                               _tmp547_ = _base_property_index;
+                                               _base_property_index = _tmp547_ + 1;
+                                               _tmp548_ = _base_property_index;
+                                               _tmp549_ = _base_property_size;
+                                               if (!(_tmp548_ < _tmp549_)) {
                                                        break;
                                                }
-                                               _tmp531_ = _base_property_list;
-                                               _tmp532_ = _base_property_index;
-                                               _tmp533_ = vala_list_get (_tmp531_, _tmp532_);
-                                               base_property = (ValaProperty*) _tmp533_;
-                                               _tmp534_ = base_property;
-                                               _tmp535_ = vala_property_get_is_abstract (_tmp534_);
-                                               _tmp536_ = _tmp535_;
-                                               if (_tmp536_) {
+                                               _tmp550_ = _base_property_list;
+                                               _tmp551_ = _base_property_index;
+                                               _tmp552_ = vala_list_get (_tmp550_, _tmp551_);
+                                               base_property = (ValaProperty*) _tmp552_;
+                                               _tmp553_ = base_property;
+                                               _tmp554_ = vala_property_get_is_abstract (_tmp553_);
+                                               _tmp555_ = _tmp554_;
+                                               if (_tmp555_) {
                                                        ValaProperty* override_property = NULL;
-                                                       ValaProperty* _tmp537_ = NULL;
-                                                       const gchar* _tmp538_ = NULL;
-                                                       const gchar* _tmp539_ = NULL;
-                                                       ValaSymbol* _tmp540_ = NULL;
-                                                       ValaProperty* _tmp541_ = NULL;
-                                                       gboolean _tmp542_ = FALSE;
-                                                       ValaProperty* _tmp543_ = NULL;
-                                                       _tmp537_ = base_property;
-                                                       _tmp538_ = vala_symbol_get_name ((ValaSymbol*) _tmp537_);
-                                                       _tmp539_ = _tmp538_;
-                                                       _tmp540_ = vala_semantic_analyzer_symbol_lookup_inherited ((ValaSymbol*) self, _tmp539_);
-                                                       _tmp541_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp540_, VALA_TYPE_PROPERTY) ? ((ValaProperty*) _tmp540_) : NULL;
-                                                       if (_tmp541_ == NULL) {
-                                                               _vala_code_node_unref0 (_tmp540_);
+                                                       ValaProperty* _tmp556_ = NULL;
+                                                       const gchar* _tmp557_ = NULL;
+                                                       const gchar* _tmp558_ = NULL;
+                                                       ValaSymbol* _tmp559_ = NULL;
+                                                       ValaProperty* _tmp560_ = NULL;
+                                                       gboolean _tmp561_ = FALSE;
+                                                       ValaProperty* _tmp562_ = NULL;
+                                                       _tmp556_ = base_property;
+                                                       _tmp557_ = vala_symbol_get_name ((ValaSymbol*) _tmp556_);
+                                                       _tmp558_ = _tmp557_;
+                                                       _tmp559_ = vala_semantic_analyzer_symbol_lookup_inherited ((ValaSymbol*) self, _tmp558_);
+                                                       _tmp560_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp559_, VALA_TYPE_PROPERTY) ? ((ValaProperty*) _tmp559_) : NULL;
+                                                       if (_tmp560_ == NULL) {
+                                                               _vala_code_node_unref0 (_tmp559_);
                                                        }
-                                                       override_property = _tmp541_;
-                                                       _tmp543_ = override_property;
-                                                       if (_tmp543_ == NULL) {
-                                                               _tmp542_ = TRUE;
+                                                       override_property = _tmp560_;
+                                                       _tmp562_ = override_property;
+                                                       if (_tmp562_ == NULL) {
+                                                               _tmp561_ = TRUE;
                                                        } else {
-                                                               ValaProperty* _tmp544_ = NULL;
-                                                               gboolean _tmp545_ = FALSE;
-                                                               gboolean _tmp546_ = FALSE;
-                                                               _tmp544_ = override_property;
-                                                               _tmp545_ = vala_property_get_overrides (_tmp544_);
-                                                               _tmp546_ = _tmp545_;
-                                                               _tmp542_ = !_tmp546_;
+                                                               ValaProperty* _tmp563_ = NULL;
+                                                               gboolean _tmp564_ = FALSE;
+                                                               gboolean _tmp565_ = FALSE;
+                                                               _tmp563_ = override_property;
+                                                               _tmp564_ = vala_property_get_overrides (_tmp563_);
+                                                               _tmp565_ = _tmp564_;
+                                                               _tmp561_ = !_tmp565_;
                                                        }
-                                                       if (_tmp542_) {
-                                                               ValaSourceReference* _tmp547_ = NULL;
-                                                               ValaSourceReference* _tmp548_ = NULL;
-                                                               gchar* _tmp549_ = NULL;
-                                                               gchar* _tmp550_ = NULL;
-                                                               ValaProperty* _tmp551_ = NULL;
-                                                               gchar* _tmp552_ = NULL;
-                                                               gchar* _tmp553_ = NULL;
-                                                               gchar* _tmp554_ = NULL;
-                                                               gchar* _tmp555_ = NULL;
+                                                       if (_tmp561_) {
+                                                               ValaSourceReference* _tmp566_ = NULL;
+                                                               ValaSourceReference* _tmp567_ = NULL;
+                                                               gchar* _tmp568_ = NULL;
+                                                               gchar* _tmp569_ = NULL;
+                                                               ValaProperty* _tmp570_ = NULL;
+                                                               gchar* _tmp571_ = NULL;
+                                                               gchar* _tmp572_ = NULL;
+                                                               gchar* _tmp573_ = NULL;
+                                                               gchar* _tmp574_ = NULL;
                                                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                                                               _tmp547_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                               _tmp548_ = _tmp547_;
-                                                               _tmp549_ = vala_symbol_get_full_name ((ValaSymbol*) self);
-                                                               _tmp550_ = _tmp549_;
-                                                               _tmp551_ = base_property;
-                                                               _tmp552_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp551_);
-                                                               _tmp553_ = _tmp552_;
-                                                               _tmp554_ = g_strdup_printf ("`%s' does not implement abstract property `%s'", _tmp550_, _tmp553_);
-                                                               _tmp555_ = _tmp554_;
-                                                               vala_report_error (_tmp548_, _tmp555_);
-                                                               _g_free0 (_tmp555_);
-                                                               _g_free0 (_tmp553_);
-                                                               _g_free0 (_tmp550_);
+                                                               _tmp566_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                               _tmp567_ = _tmp566_;
+                                                               _tmp568_ = vala_symbol_get_full_name ((ValaSymbol*) self);
+                                                               _tmp569_ = _tmp568_;
+                                                               _tmp570_ = base_property;
+                                                               _tmp571_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp570_);
+                                                               _tmp572_ = _tmp571_;
+                                                               _tmp573_ = g_strdup_printf ("`%s' does not implement abstract property `%s'", _tmp569_, _tmp572_);
+                                                               _tmp574_ = _tmp573_;
+                                                               vala_report_error (_tmp567_, _tmp574_);
+                                                               _g_free0 (_tmp574_);
+                                                               _g_free0 (_tmp572_);
+                                                               _g_free0 (_tmp569_);
                                                        }
                                                        _vala_code_node_unref0 (override_property);
                                                }
@@ -5287,28 +5365,28 @@ static gboolean vala_class_real_check (ValaCodeNode* base, ValaCodeContext* cont
                                        }
                                        _vala_iterable_unref0 (_base_property_list);
                                }
-                               _tmp556_ = base_class;
-                               _tmp557_ = _tmp556_->priv->_base_class;
-                               _tmp558_ = _vala_code_node_ref0 (_tmp557_);
+                               _tmp575_ = base_class;
+                               _tmp576_ = _tmp575_->priv->_base_class;
+                               _tmp577_ = _vala_code_node_ref0 (_tmp576_);
                                _vala_code_node_unref0 (base_class);
-                               base_class = _tmp558_;
+                               base_class = _tmp577_;
                        }
                        _vala_code_node_unref0 (base_class);
                }
        }
-       _tmp559_ = context;
-       _tmp560_ = vala_code_context_get_analyzer (_tmp559_);
-       _tmp561_ = _tmp560_;
-       _tmp562_ = old_source_file;
-       vala_semantic_analyzer_set_current_source_file (_tmp561_, _tmp562_);
-       _tmp563_ = context;
-       _tmp564_ = vala_code_context_get_analyzer (_tmp563_);
-       _tmp565_ = _tmp564_;
-       _tmp566_ = old_symbol;
-       vala_semantic_analyzer_set_current_symbol (_tmp565_, _tmp566_);
-       _tmp567_ = vala_code_node_get_error ((ValaCodeNode*) self);
-       _tmp568_ = _tmp567_;
-       result = !_tmp568_;
+       _tmp578_ = context;
+       _tmp579_ = vala_code_context_get_analyzer (_tmp578_);
+       _tmp580_ = _tmp579_;
+       _tmp581_ = old_source_file;
+       vala_semantic_analyzer_set_current_source_file (_tmp580_, _tmp581_);
+       _tmp582_ = context;
+       _tmp583_ = vala_code_context_get_analyzer (_tmp582_);
+       _tmp584_ = _tmp583_;
+       _tmp585_ = old_symbol;
+       vala_semantic_analyzer_set_current_symbol (_tmp584_, _tmp585_);
+       _tmp586_ = vala_code_node_get_error ((ValaCodeNode*) self);
+       _tmp587_ = _tmp586_;
+       result = !_tmp587_;
        _vala_iterable_unref0 (missing_prereqs);
        _vala_iterable_unref0 (prerequisites);
        _vala_code_node_unref0 (old_symbol);
@@ -5772,28 +5850,28 @@ gboolean vala_class_get_is_error_base (ValaClass* self) {
 
 static void vala_class_class_init (ValaClassClass * klass) {
        vala_class_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_class_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_class_finalize;
        g_type_class_add_private (klass, sizeof (ValaClassPrivate));
-       VALA_SYMBOL_CLASS (klass)->add_constant = vala_class_real_add_constant;
-       VALA_SYMBOL_CLASS (klass)->add_field = vala_class_real_add_field;
-       VALA_SYMBOL_CLASS (klass)->add_method = vala_class_real_add_method;
-       VALA_OBJECT_TYPE_SYMBOL_CLASS (klass)->get_methods = vala_class_real_get_methods;
-       VALA_SYMBOL_CLASS (klass)->add_property = vala_class_real_add_property;
-       VALA_OBJECT_TYPE_SYMBOL_CLASS (klass)->get_properties = vala_class_real_get_properties;
-       VALA_SYMBOL_CLASS (klass)->add_signal = vala_class_real_add_signal;
-       VALA_OBJECT_TYPE_SYMBOL_CLASS (klass)->get_signals = vala_class_real_get_signals;
-       VALA_SYMBOL_CLASS (klass)->add_class = vala_class_real_add_class;
-       VALA_SYMBOL_CLASS (klass)->add_struct = vala_class_real_add_struct;
-       VALA_SYMBOL_CLASS (klass)->add_enum = vala_class_real_add_enum;
-       VALA_SYMBOL_CLASS (klass)->add_delegate = vala_class_real_add_delegate;
-       VALA_SYMBOL_CLASS (klass)->add_constructor = vala_class_real_add_constructor;
-       VALA_SYMBOL_CLASS (klass)->add_destructor = vala_class_real_add_destructor;
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_class_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_class_real_accept_children;
-       VALA_TYPESYMBOL_CLASS (klass)->is_reference_type = vala_class_real_is_reference_type;
-       VALA_TYPESYMBOL_CLASS (klass)->is_subtype_of = vala_class_real_is_subtype_of;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_class_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_class_real_check;
+       ((ValaSymbolClass *) klass)->add_constant = vala_class_real_add_constant;
+       ((ValaSymbolClass *) klass)->add_field = vala_class_real_add_field;
+       ((ValaSymbolClass *) klass)->add_method = vala_class_real_add_method;
+       ((ValaObjectTypeSymbolClass *) klass)->get_methods = vala_class_real_get_methods;
+       ((ValaSymbolClass *) klass)->add_property = vala_class_real_add_property;
+       ((ValaObjectTypeSymbolClass *) klass)->get_properties = vala_class_real_get_properties;
+       ((ValaSymbolClass *) klass)->add_signal = vala_class_real_add_signal;
+       ((ValaObjectTypeSymbolClass *) klass)->get_signals = vala_class_real_get_signals;
+       ((ValaSymbolClass *) klass)->add_class = vala_class_real_add_class;
+       ((ValaSymbolClass *) klass)->add_struct = vala_class_real_add_struct;
+       ((ValaSymbolClass *) klass)->add_enum = vala_class_real_add_enum;
+       ((ValaSymbolClass *) klass)->add_delegate = vala_class_real_add_delegate;
+       ((ValaSymbolClass *) klass)->add_constructor = vala_class_real_add_constructor;
+       ((ValaSymbolClass *) klass)->add_destructor = vala_class_real_add_destructor;
+       ((ValaCodeNodeClass *) klass)->accept = vala_class_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_class_real_accept_children;
+       ((ValaTypeSymbolClass *) klass)->is_reference_type = vala_class_real_is_reference_type;
+       ((ValaTypeSymbolClass *) klass)->is_subtype_of = vala_class_real_is_subtype_of;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_class_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_class_real_check;
 }
 
 
index ba23a50..12a82af 100644 (file)
@@ -317,7 +317,12 @@ public class Vala.Class : ObjectTypeSymbol {
                }
 
                methods.add (m);
-               scope.add (m.name, m);
+               if (m.base_interface_type == null) {
+                       scope.add (m.name, m);
+               } else {
+                       // explicit interface method implementation
+                       scope.add (null, m);
+               }
        }
 
        /**
@@ -782,18 +787,22 @@ public class Vala.Class : ObjectTypeSymbol {
                                        /* check methods */
                                        foreach (Method m in iface.get_methods ()) {
                                                if (m.is_abstract) {
-                                                       Symbol sym = null;
+                                                       var implemented = false;
                                                        var base_class = this;
-                                                       while (base_class != null && !(sym is Method)) {
-                                                               sym = base_class.scope.lookup (m.name);
+                                                       while (base_class != null) {
+                                                               foreach (var impl in base_class.get_methods ()) {
+                                                                       if (impl.name == m.name && (impl.base_interface_type == null || impl.base_interface_type.data_type == iface)) {
+                                                                               // method is used as interface implementation, so it is not unused
+                                                                               impl.check_deprecated (source_reference);
+                                                                               impl.check_experimental (source_reference);
+                                                                               impl.used = true;
+                                                                               implemented = true;
+                                                                               break;
+                                                                       }
+                                                               }
                                                                base_class = base_class.base_class;
                                                        }
-                                                       if (sym is Method) {
-                                                               // method is used as interface implementation, so it is not unused
-                                                               sym.check_deprecated (source_reference);
-                                                               sym.check_experimental (source_reference);
-                                                               sym.used = true;
-                                                       } else {
+                                                       if (!implemented) {
                                                                error = true;
                                                                Report.error (source_reference, "`%s' does not implement interface method `%s'".printf (get_full_name (), m.get_full_name ()));
                                                        }
index 537d96e..09323a0 100644 (file)
@@ -495,9 +495,9 @@ void vala_class_type_set_class_symbol (ValaClassType* self, ValaClass* value) {
 
 static void vala_class_type_class_init (ValaClassTypeClass * klass) {
        vala_class_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_class_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_class_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaClassTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_class_type_real_copy;
+       ((ValaDataTypeClass *) klass)->copy = vala_class_type_real_copy;
 }
 
 
index 39cb3db..7dcee48 100644 (file)
@@ -235,6 +235,7 @@ struct _ValaCodeContextPrivate {
        gboolean _assert;
        gboolean _checking;
        gboolean _deprecated;
+       gboolean _hide_internal;
        gboolean _experimental;
        gboolean _experimental_non_null;
        gboolean _gobject_tracing;
@@ -261,6 +262,7 @@ struct _ValaCodeContextPrivate {
        gboolean _version_header;
        gboolean _nostdpkg;
        gboolean _use_fast_vapi;
+       gboolean _vapi_comments;
        ValaReport* _report;
        ValaMethod* _entry_point;
        gchar* _entry_point_name;
@@ -417,6 +419,8 @@ gboolean vala_code_context_get_checking (ValaCodeContext* self);
 void vala_code_context_set_checking (ValaCodeContext* self, gboolean value);
 gboolean vala_code_context_get_deprecated (ValaCodeContext* self);
 void vala_code_context_set_deprecated (ValaCodeContext* self, gboolean value);
+gboolean vala_code_context_get_hide_internal (ValaCodeContext* self);
+void vala_code_context_set_hide_internal (ValaCodeContext* self, gboolean value);
 gboolean vala_code_context_get_experimental (ValaCodeContext* self);
 void vala_code_context_set_experimental (ValaCodeContext* self, gboolean value);
 gboolean vala_code_context_get_experimental_non_null (ValaCodeContext* self);
@@ -466,6 +470,8 @@ gboolean vala_code_context_get_nostdpkg (ValaCodeContext* self);
 void vala_code_context_set_nostdpkg (ValaCodeContext* self, gboolean value);
 gboolean vala_code_context_get_use_fast_vapi (ValaCodeContext* self);
 void vala_code_context_set_use_fast_vapi (ValaCodeContext* self, gboolean value);
+gboolean vala_code_context_get_vapi_comments (ValaCodeContext* self);
+void vala_code_context_set_vapi_comments (ValaCodeContext* self, gboolean value);
 gboolean vala_code_context_get_save_csources (ValaCodeContext* self);
 void vala_code_context_set_report (ValaCodeContext* self, ValaReport* value);
 ValaMethod* vala_code_context_get_entry_point (ValaCodeContext* self);
@@ -893,7 +899,7 @@ gboolean vala_code_context_add_packages_from_file (ValaCodeContext* self, const
                g_file_get_contents (_tmp2_, &_tmp3_, NULL, &_inner_error_);
                _g_free0 (contents);
                contents = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_free0 (contents);
                        if (_inner_error_->domain == G_FILE_ERROR) {
                                goto __catch0_g_file_error;
@@ -959,7 +965,7 @@ gboolean vala_code_context_add_packages_from_file (ValaCodeContext* self, const
                return result;
        }
        __finally0:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return FALSE;
@@ -1852,7 +1858,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                gint _tmp43__length1 = 0;
                const gchar* _tmp44_ = NULL;
                void* _tmp45_ = NULL;
-               const gchar* _tmp59_ = NULL;
+               const gchar* _tmp62_ = NULL;
                len = (gsize) 1;
                {
                        gboolean _tmp9_ = FALSE;
@@ -1929,7 +1935,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                        _tmp25__length1 = str_array_length1;
                                        _tmp26_ = i;
                                        _tmp27_ = _tmp25_[_tmp26_];
-                                       _tmp28_ = strlen (_tmp27_);
+                                       _tmp28_ = strlen ((const gchar*) _tmp27_);
                                        _tmp29_ = _tmp28_;
                                        _tmp21_ = _tmp29_;
                                } else {
@@ -1951,7 +1957,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                _tmp34_ = str_array_length1;
                _tmp35_ = len;
                _tmp36_ = separator;
-               _tmp37_ = strlen (_tmp36_);
+               _tmp37_ = strlen ((const gchar*) _tmp36_);
                _tmp38_ = _tmp37_;
                _tmp39_ = i;
                len = _tmp35_ + (_tmp38_ * (_tmp39_ - 1));
@@ -1962,7 +1968,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                _tmp43_ = str_array;
                _tmp43__length1 = str_array_length1;
                _tmp44_ = _tmp43_[0];
-               _tmp45_ = g_stpcpy ((void*) _tmp42_, _tmp44_);
+               _tmp45_ = g_stpcpy ((void*) _tmp42_, (const gchar*) _tmp44_);
                ptr = _tmp45_;
                {
                        gboolean _tmp46_ = FALSE;
@@ -1980,8 +1986,8 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                gint _tmp54__length1 = 0;
                                gint _tmp55_ = 0;
                                const gchar* _tmp56_ = NULL;
-                               void* _tmp57_ = NULL;
-                               void* _tmp58_ = NULL;
+                               void* _tmp60_ = NULL;
+                               void* _tmp61_ = NULL;
                                if (!_tmp46_) {
                                        gint _tmp47_ = 0;
                                        _tmp47_ = i;
@@ -1996,29 +2002,38 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                }
                                _tmp50_ = ptr;
                                _tmp51_ = separator;
-                               _tmp52_ = g_stpcpy (_tmp50_, _tmp51_);
+                               _tmp52_ = g_stpcpy (_tmp50_, (const gchar*) _tmp51_);
                                ptr = _tmp52_;
                                _tmp54_ = str_array;
                                _tmp54__length1 = str_array_length1;
                                _tmp55_ = i;
                                _tmp56_ = _tmp54_[_tmp55_];
-                               _tmp53_ = _tmp56_;
-                               if (_tmp53_ == NULL) {
+                               if (_tmp56_ != NULL) {
+                                       gchar** _tmp57_ = NULL;
+                                       gint _tmp57__length1 = 0;
+                                       gint _tmp58_ = 0;
+                                       const gchar* _tmp59_ = NULL;
+                                       _tmp57_ = str_array;
+                                       _tmp57__length1 = str_array_length1;
+                                       _tmp58_ = i;
+                                       _tmp59_ = _tmp57_[_tmp58_];
+                                       _tmp53_ = (const gchar*) _tmp59_;
+                               } else {
                                        _tmp53_ = "";
                                }
-                               _tmp57_ = ptr;
-                               _tmp58_ = g_stpcpy (_tmp57_, _tmp53_);
-                               ptr = _tmp58_;
+                               _tmp60_ = ptr;
+                               _tmp61_ = g_stpcpy (_tmp60_, _tmp53_);
+                               ptr = _tmp61_;
                        }
                }
-               _tmp59_ = res;
+               _tmp62_ = res;
                res = NULL;
-               result = (gchar*) _tmp59_;
+               result = (gchar*) _tmp62_;
                return result;
        } else {
-               gchar* _tmp60_ = NULL;
-               _tmp60_ = g_strdup ("");
-               result = _tmp60_;
+               gchar* _tmp63_ = NULL;
+               _tmp63_ = g_strdup ("");
+               result = _tmp63_;
                return result;
        }
 }
@@ -2363,6 +2378,24 @@ void vala_code_context_set_deprecated (ValaCodeContext* self, gboolean value) {
 }
 
 
+gboolean vala_code_context_get_hide_internal (ValaCodeContext* self) {
+       gboolean result;
+       gboolean _tmp0_ = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       _tmp0_ = self->priv->_hide_internal;
+       result = _tmp0_;
+       return result;
+}
+
+
+void vala_code_context_set_hide_internal (ValaCodeContext* self, gboolean value) {
+       gboolean _tmp0_ = FALSE;
+       g_return_if_fail (self != NULL);
+       _tmp0_ = value;
+       self->priv->_hide_internal = _tmp0_;
+}
+
+
 gboolean vala_code_context_get_experimental (ValaCodeContext* self) {
        gboolean result;
        gboolean _tmp0_ = FALSE;
@@ -2860,6 +2893,24 @@ void vala_code_context_set_use_fast_vapi (ValaCodeContext* self, gboolean value)
 }
 
 
+gboolean vala_code_context_get_vapi_comments (ValaCodeContext* self) {
+       gboolean result;
+       gboolean _tmp0_ = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       _tmp0_ = self->priv->_vapi_comments;
+       result = _tmp0_;
+       return result;
+}
+
+
+void vala_code_context_set_vapi_comments (ValaCodeContext* self, gboolean value) {
+       gboolean _tmp0_ = FALSE;
+       g_return_if_fail (self != NULL);
+       _tmp0_ = value;
+       self->priv->_vapi_comments = _tmp0_;
+}
+
+
 gboolean vala_code_context_get_save_csources (ValaCodeContext* self) {
        gboolean result;
        gboolean _tmp0_ = FALSE;
@@ -3166,12 +3217,11 @@ void vala_value_take_code_context (GValue* value, gpointer v_object) {
 
 
 static void vala_code_context_class_init (ValaCodeContextClass * klass) {
-       GStaticPrivate _tmp0_ = G_STATIC_PRIVATE_INIT;
        vala_code_context_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_CONTEXT_CLASS (klass)->finalize = vala_code_context_finalize;
+       ((ValaCodeContextClass *) klass)->finalize = vala_code_context_finalize;
        g_type_class_add_private (klass, sizeof (ValaCodeContextPrivate));
-       g_static_private_init (&_tmp0_);
-       vala_code_context_context_stack_key = _tmp0_;
+       g_static_private_init (&vala_code_context_context_stack_key);
+       vala_code_context_context_stack_key = vala_code_context_context_stack_key;
 }
 
 
@@ -3212,6 +3262,7 @@ static void vala_code_context_instance_init (ValaCodeContext * self) {
 static void vala_code_context_finalize (ValaCodeContext* obj) {
        ValaCodeContext * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CODE_CONTEXT, ValaCodeContext);
+       g_signal_handlers_destroy (self);
        _g_free0 (self->priv->_header_filename);
        _g_free0 (self->priv->_internal_header_filename);
        _g_free0 (self->priv->_includedir);
index afad107..00c242c 100644 (file)
@@ -42,6 +42,11 @@ public class Vala.CodeContext {
        public bool deprecated { get; set; }
 
        /**
+        * Hide the symbols marked as internal
+        */
+       public bool hide_internal { get; set; }
+
+       /**
         * Do not warn when using experimental features.
         */
        public bool experimental { get; set; }
@@ -169,6 +174,11 @@ public class Vala.CodeContext {
        public bool use_fast_vapi { get; set; }
 
        /**
+        * Include comments in generated vapi.
+        */
+       public bool vapi_comments { get; set; }
+
+       /**
         * Returns true if the target version of glib is greater than or 
         * equal to the specified version.
         */
index ee54b34..5e89c42 100644 (file)
@@ -1292,14 +1292,14 @@ ValaCodeGenerator* vala_code_generator_construct (GType object_type) {
 
 static void vala_code_generator_class_init (ValaCodeGeneratorClass * klass) {
        vala_code_generator_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_GENERATOR_CLASS (klass)->emit = vala_code_generator_real_emit;
-       VALA_CODE_GENERATOR_CLASS (klass)->create_local = vala_code_generator_real_create_local;
-       VALA_CODE_GENERATOR_CLASS (klass)->load_local = vala_code_generator_real_load_local;
-       VALA_CODE_GENERATOR_CLASS (klass)->store_local = vala_code_generator_real_store_local;
-       VALA_CODE_GENERATOR_CLASS (klass)->load_parameter = vala_code_generator_real_load_parameter;
-       VALA_CODE_GENERATOR_CLASS (klass)->store_parameter = vala_code_generator_real_store_parameter;
-       VALA_CODE_GENERATOR_CLASS (klass)->load_field = vala_code_generator_real_load_field;
-       VALA_CODE_GENERATOR_CLASS (klass)->store_field = vala_code_generator_real_store_field;
+       ((ValaCodeGeneratorClass *) klass)->emit = vala_code_generator_real_emit;
+       ((ValaCodeGeneratorClass *) klass)->create_local = vala_code_generator_real_create_local;
+       ((ValaCodeGeneratorClass *) klass)->load_local = vala_code_generator_real_load_local;
+       ((ValaCodeGeneratorClass *) klass)->store_local = vala_code_generator_real_store_local;
+       ((ValaCodeGeneratorClass *) klass)->load_parameter = vala_code_generator_real_load_parameter;
+       ((ValaCodeGeneratorClass *) klass)->store_parameter = vala_code_generator_real_store_parameter;
+       ((ValaCodeGeneratorClass *) klass)->load_field = vala_code_generator_real_load_field;
+       ((ValaCodeGeneratorClass *) klass)->store_field = vala_code_generator_real_store_field;
 }
 
 
index 539ee25..d1bdda4 100644 (file)
@@ -1593,17 +1593,17 @@ void vala_value_take_code_node (GValue* value, gpointer v_object) {
 
 static void vala_code_node_class_init (ValaCodeNodeClass * klass) {
        vala_code_node_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_code_node_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_code_node_finalize;
        g_type_class_add_private (klass, sizeof (ValaCodeNodePrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_code_node_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_code_node_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_code_node_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_code_node_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_code_node_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_code_node_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_code_node_real_to_string;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_code_node_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_code_node_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_code_node_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_code_node_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_code_node_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_code_node_real_emit;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_code_node_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_code_node_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_code_node_real_to_string;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_code_node_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_code_node_real_get_used_variables;
 }
 
 
@@ -1616,6 +1616,7 @@ static void vala_code_node_instance_init (ValaCodeNode * self) {
 static void vala_code_node_finalize (ValaCodeNode* obj) {
        ValaCodeNode * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CODE_NODE, ValaCodeNode);
+       g_signal_handlers_destroy (self);
        _vala_source_reference_unref0 (self->priv->_source_reference);
        __g_list_free__vala_code_node_unref0_0 (self->attributes);
        _vala_iterable_unref0 (self->priv->_error_types);
@@ -1785,7 +1786,7 @@ void vala_value_take_attribute_cache (GValue* value, gpointer v_object) {
 
 static void vala_attribute_cache_class_init (ValaAttributeCacheClass * klass) {
        vala_attribute_cache_parent_class = g_type_class_peek_parent (klass);
-       VALA_ATTRIBUTE_CACHE_CLASS (klass)->finalize = vala_attribute_cache_finalize;
+       ((ValaAttributeCacheClass *) klass)->finalize = vala_attribute_cache_finalize;
 }
 
 
@@ -1797,6 +1798,7 @@ static void vala_attribute_cache_instance_init (ValaAttributeCache * self) {
 static void vala_attribute_cache_finalize (ValaAttributeCache* obj) {
        ValaAttributeCache * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_ATTRIBUTE_CACHE, ValaAttributeCache);
+       g_signal_handlers_destroy (self);
 }
 
 
index 6678663..7c3cd27 100644 (file)
@@ -2671,87 +2671,87 @@ void vala_value_take_code_visitor (GValue* value, gpointer v_object) {
 
 static void vala_code_visitor_class_init (ValaCodeVisitorClass * klass) {
        vala_code_visitor_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_code_visitor_finalize;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_source_file = vala_code_visitor_real_visit_source_file;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_namespace = vala_code_visitor_real_visit_namespace;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_code_visitor_real_visit_class;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_struct = vala_code_visitor_real_visit_struct;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_interface = vala_code_visitor_real_visit_interface;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_code_visitor_real_visit_enum;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_enum_value = vala_code_visitor_real_visit_enum_value;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_error_domain = vala_code_visitor_real_visit_error_domain;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_error_code = vala_code_visitor_real_visit_error_code;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_delegate = vala_code_visitor_real_visit_delegate;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_constant = vala_code_visitor_real_visit_constant;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_field = vala_code_visitor_real_visit_field;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method = vala_code_visitor_real_visit_method;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_creation_method = vala_code_visitor_real_visit_creation_method;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_formal_parameter = vala_code_visitor_real_visit_formal_parameter;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_property = vala_code_visitor_real_visit_property;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_property_accessor = vala_code_visitor_real_visit_property_accessor;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_signal = vala_code_visitor_real_visit_signal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_constructor = vala_code_visitor_real_visit_constructor;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_destructor = vala_code_visitor_real_visit_destructor;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_type_parameter = vala_code_visitor_real_visit_type_parameter;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_using_directive = vala_code_visitor_real_visit_using_directive;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_data_type = vala_code_visitor_real_visit_data_type;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_block = vala_code_visitor_real_visit_block;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_empty_statement = vala_code_visitor_real_visit_empty_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_declaration_statement = vala_code_visitor_real_visit_declaration_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_local_variable = vala_code_visitor_real_visit_local_variable;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_initializer_list = vala_code_visitor_real_visit_initializer_list;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_expression_statement = vala_code_visitor_real_visit_expression_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_if_statement = vala_code_visitor_real_visit_if_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_switch_statement = vala_code_visitor_real_visit_switch_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_switch_section = vala_code_visitor_real_visit_switch_section;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_switch_label = vala_code_visitor_real_visit_switch_label;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_loop = vala_code_visitor_real_visit_loop;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_while_statement = vala_code_visitor_real_visit_while_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_do_statement = vala_code_visitor_real_visit_do_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_for_statement = vala_code_visitor_real_visit_for_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_foreach_statement = vala_code_visitor_real_visit_foreach_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_break_statement = vala_code_visitor_real_visit_break_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_continue_statement = vala_code_visitor_real_visit_continue_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_return_statement = vala_code_visitor_real_visit_return_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_yield_statement = vala_code_visitor_real_visit_yield_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_throw_statement = vala_code_visitor_real_visit_throw_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_try_statement = vala_code_visitor_real_visit_try_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_catch_clause = vala_code_visitor_real_visit_catch_clause;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_lock_statement = vala_code_visitor_real_visit_lock_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_unlock_statement = vala_code_visitor_real_visit_unlock_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_delete_statement = vala_code_visitor_real_visit_delete_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_expression = vala_code_visitor_real_visit_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_array_creation_expression = vala_code_visitor_real_visit_array_creation_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_boolean_literal = vala_code_visitor_real_visit_boolean_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_character_literal = vala_code_visitor_real_visit_character_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_integer_literal = vala_code_visitor_real_visit_integer_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_real_literal = vala_code_visitor_real_visit_real_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_regex_literal = vala_code_visitor_real_visit_regex_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_string_literal = vala_code_visitor_real_visit_string_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_template = vala_code_visitor_real_visit_template;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_tuple = vala_code_visitor_real_visit_tuple;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_null_literal = vala_code_visitor_real_visit_null_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_member_access = vala_code_visitor_real_visit_member_access;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method_call = vala_code_visitor_real_visit_method_call;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_element_access = vala_code_visitor_real_visit_element_access;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_slice_expression = vala_code_visitor_real_visit_slice_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_base_access = vala_code_visitor_real_visit_base_access;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_postfix_expression = vala_code_visitor_real_visit_postfix_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_object_creation_expression = vala_code_visitor_real_visit_object_creation_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_sizeof_expression = vala_code_visitor_real_visit_sizeof_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_typeof_expression = vala_code_visitor_real_visit_typeof_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_unary_expression = vala_code_visitor_real_visit_unary_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_cast_expression = vala_code_visitor_real_visit_cast_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_named_argument = vala_code_visitor_real_visit_named_argument;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_pointer_indirection = vala_code_visitor_real_visit_pointer_indirection;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_addressof_expression = vala_code_visitor_real_visit_addressof_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_reference_transfer_expression = vala_code_visitor_real_visit_reference_transfer_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_binary_expression = vala_code_visitor_real_visit_binary_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_type_check = vala_code_visitor_real_visit_type_check;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_conditional_expression = vala_code_visitor_real_visit_conditional_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_lambda_expression = vala_code_visitor_real_visit_lambda_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_assignment = vala_code_visitor_real_visit_assignment;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_end_full_expression = vala_code_visitor_real_visit_end_full_expression;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_code_visitor_finalize;
+       ((ValaCodeVisitorClass *) klass)->visit_source_file = vala_code_visitor_real_visit_source_file;
+       ((ValaCodeVisitorClass *) klass)->visit_namespace = vala_code_visitor_real_visit_namespace;
+       ((ValaCodeVisitorClass *) klass)->visit_class = vala_code_visitor_real_visit_class;
+       ((ValaCodeVisitorClass *) klass)->visit_struct = vala_code_visitor_real_visit_struct;
+       ((ValaCodeVisitorClass *) klass)->visit_interface = vala_code_visitor_real_visit_interface;
+       ((ValaCodeVisitorClass *) klass)->visit_enum = vala_code_visitor_real_visit_enum;
+       ((ValaCodeVisitorClass *) klass)->visit_enum_value = vala_code_visitor_real_visit_enum_value;
+       ((ValaCodeVisitorClass *) klass)->visit_error_domain = vala_code_visitor_real_visit_error_domain;
+       ((ValaCodeVisitorClass *) klass)->visit_error_code = vala_code_visitor_real_visit_error_code;
+       ((ValaCodeVisitorClass *) klass)->visit_delegate = vala_code_visitor_real_visit_delegate;
+       ((ValaCodeVisitorClass *) klass)->visit_constant = vala_code_visitor_real_visit_constant;
+       ((ValaCodeVisitorClass *) klass)->visit_field = vala_code_visitor_real_visit_field;
+       ((ValaCodeVisitorClass *) klass)->visit_method = vala_code_visitor_real_visit_method;
+       ((ValaCodeVisitorClass *) klass)->visit_creation_method = vala_code_visitor_real_visit_creation_method;
+       ((ValaCodeVisitorClass *) klass)->visit_formal_parameter = vala_code_visitor_real_visit_formal_parameter;
+       ((ValaCodeVisitorClass *) klass)->visit_property = vala_code_visitor_real_visit_property;
+       ((ValaCodeVisitorClass *) klass)->visit_property_accessor = vala_code_visitor_real_visit_property_accessor;
+       ((ValaCodeVisitorClass *) klass)->visit_signal = vala_code_visitor_real_visit_signal;
+       ((ValaCodeVisitorClass *) klass)->visit_constructor = vala_code_visitor_real_visit_constructor;
+       ((ValaCodeVisitorClass *) klass)->visit_destructor = vala_code_visitor_real_visit_destructor;
+       ((ValaCodeVisitorClass *) klass)->visit_type_parameter = vala_code_visitor_real_visit_type_parameter;
+       ((ValaCodeVisitorClass *) klass)->visit_using_directive = vala_code_visitor_real_visit_using_directive;
+       ((ValaCodeVisitorClass *) klass)->visit_data_type = vala_code_visitor_real_visit_data_type;
+       ((ValaCodeVisitorClass *) klass)->visit_block = vala_code_visitor_real_visit_block;
+       ((ValaCodeVisitorClass *) klass)->visit_empty_statement = vala_code_visitor_real_visit_empty_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_declaration_statement = vala_code_visitor_real_visit_declaration_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_local_variable = vala_code_visitor_real_visit_local_variable;
+       ((ValaCodeVisitorClass *) klass)->visit_initializer_list = vala_code_visitor_real_visit_initializer_list;
+       ((ValaCodeVisitorClass *) klass)->visit_expression_statement = vala_code_visitor_real_visit_expression_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_if_statement = vala_code_visitor_real_visit_if_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_switch_statement = vala_code_visitor_real_visit_switch_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_switch_section = vala_code_visitor_real_visit_switch_section;
+       ((ValaCodeVisitorClass *) klass)->visit_switch_label = vala_code_visitor_real_visit_switch_label;
+       ((ValaCodeVisitorClass *) klass)->visit_loop = vala_code_visitor_real_visit_loop;
+       ((ValaCodeVisitorClass *) klass)->visit_while_statement = vala_code_visitor_real_visit_while_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_do_statement = vala_code_visitor_real_visit_do_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_for_statement = vala_code_visitor_real_visit_for_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_foreach_statement = vala_code_visitor_real_visit_foreach_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_break_statement = vala_code_visitor_real_visit_break_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_continue_statement = vala_code_visitor_real_visit_continue_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_return_statement = vala_code_visitor_real_visit_return_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_yield_statement = vala_code_visitor_real_visit_yield_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_throw_statement = vala_code_visitor_real_visit_throw_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_try_statement = vala_code_visitor_real_visit_try_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_catch_clause = vala_code_visitor_real_visit_catch_clause;
+       ((ValaCodeVisitorClass *) klass)->visit_lock_statement = vala_code_visitor_real_visit_lock_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_unlock_statement = vala_code_visitor_real_visit_unlock_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_delete_statement = vala_code_visitor_real_visit_delete_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_expression = vala_code_visitor_real_visit_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_array_creation_expression = vala_code_visitor_real_visit_array_creation_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_boolean_literal = vala_code_visitor_real_visit_boolean_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_character_literal = vala_code_visitor_real_visit_character_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_integer_literal = vala_code_visitor_real_visit_integer_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_real_literal = vala_code_visitor_real_visit_real_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_regex_literal = vala_code_visitor_real_visit_regex_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_string_literal = vala_code_visitor_real_visit_string_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_template = vala_code_visitor_real_visit_template;
+       ((ValaCodeVisitorClass *) klass)->visit_tuple = vala_code_visitor_real_visit_tuple;
+       ((ValaCodeVisitorClass *) klass)->visit_null_literal = vala_code_visitor_real_visit_null_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_member_access = vala_code_visitor_real_visit_member_access;
+       ((ValaCodeVisitorClass *) klass)->visit_method_call = vala_code_visitor_real_visit_method_call;
+       ((ValaCodeVisitorClass *) klass)->visit_element_access = vala_code_visitor_real_visit_element_access;
+       ((ValaCodeVisitorClass *) klass)->visit_slice_expression = vala_code_visitor_real_visit_slice_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_base_access = vala_code_visitor_real_visit_base_access;
+       ((ValaCodeVisitorClass *) klass)->visit_postfix_expression = vala_code_visitor_real_visit_postfix_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_object_creation_expression = vala_code_visitor_real_visit_object_creation_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_sizeof_expression = vala_code_visitor_real_visit_sizeof_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_typeof_expression = vala_code_visitor_real_visit_typeof_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_unary_expression = vala_code_visitor_real_visit_unary_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_cast_expression = vala_code_visitor_real_visit_cast_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_named_argument = vala_code_visitor_real_visit_named_argument;
+       ((ValaCodeVisitorClass *) klass)->visit_pointer_indirection = vala_code_visitor_real_visit_pointer_indirection;
+       ((ValaCodeVisitorClass *) klass)->visit_addressof_expression = vala_code_visitor_real_visit_addressof_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_reference_transfer_expression = vala_code_visitor_real_visit_reference_transfer_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_binary_expression = vala_code_visitor_real_visit_binary_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_type_check = vala_code_visitor_real_visit_type_check;
+       ((ValaCodeVisitorClass *) klass)->visit_conditional_expression = vala_code_visitor_real_visit_conditional_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_lambda_expression = vala_code_visitor_real_visit_lambda_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_assignment = vala_code_visitor_real_visit_assignment;
+       ((ValaCodeVisitorClass *) klass)->visit_end_full_expression = vala_code_visitor_real_visit_end_full_expression;
 }
 
 
@@ -2763,6 +2763,7 @@ static void vala_code_visitor_instance_init (ValaCodeVisitor * self) {
 static void vala_code_visitor_finalize (ValaCodeVisitor* obj) {
        ValaCodeVisitor * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CODE_VISITOR, ValaCodeVisitor);
+       g_signal_handlers_destroy (self);
 }
 
 
index 13641b1..0688a40 100644 (file)
@@ -5,6 +5,7 @@
  *
  * Copyright (C) 2006-2014  Jürg Billeter
  * Copyright (C) 2006-2008  Raffaele Sandrini
+ * Copyright (C) 2014       Richard Wiedenhöft
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -952,7 +953,7 @@ typedef struct _ValaScopeClass ValaScopeClass;
 
 typedef struct _ValaSourceReference ValaSourceReference;
 typedef struct _ValaSourceReferenceClass ValaSourceReferenceClass;
-#define _g_mapped_file_free0(var) ((var == NULL) ? NULL : (var = (g_mapped_file_free (var), NULL)))
+#define _g_mapped_file_unref0(var) ((var == NULL) ? NULL : (var = (g_mapped_file_unref (var), NULL)))
 #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
 
 #define VALA_TYPE_UNRESOLVED_SYMBOL (vala_unresolved_symbol_get_type ())
@@ -966,6 +967,20 @@ typedef struct _ValaUnresolvedSymbol ValaUnresolvedSymbol;
 typedef struct _ValaUnresolvedSymbolClass ValaUnresolvedSymbolClass;
 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
 #define __g_list_free__vala_code_node_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__vala_code_node_unref0_ (var), NULL)))
+
+#define VALA_TYPE_COMMENT (vala_comment_get_type ())
+#define VALA_COMMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_COMMENT, ValaComment))
+#define VALA_COMMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_COMMENT, ValaCommentClass))
+#define VALA_IS_COMMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_COMMENT))
+#define VALA_IS_COMMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_COMMENT))
+#define VALA_COMMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_COMMENT, ValaCommentClass))
+
+typedef struct _ValaComment ValaComment;
+typedef struct _ValaCommentClass ValaCommentClass;
+
+#define VALA_TYPE_SOURCE_FILE_TYPE (vala_source_file_type_get_type ())
+#define _vala_source_reference_unref0(var) ((var == NULL) ? NULL : (var = (vala_source_reference_unref (var), NULL)))
+#define _vala_comment_unref0(var) ((var == NULL) ? NULL : (var = (vala_comment_unref (var), NULL)))
 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
 #define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
 
@@ -1152,6 +1167,13 @@ struct _ValaCodeWriterPrivate {
 };
 
 typedef enum  {
+       VALA_SOURCE_FILE_TYPE_NONE,
+       VALA_SOURCE_FILE_TYPE_SOURCE,
+       VALA_SOURCE_FILE_TYPE_PACKAGE,
+       VALA_SOURCE_FILE_TYPE_FAST
+} ValaSourceFileType;
+
+typedef enum  {
        VALA_MEMBER_BINDING_INSTANCE,
        VALA_MEMBER_BINDING_CLASS,
        VALA_MEMBER_BINDING_STATIC
@@ -1531,6 +1553,22 @@ static void _g_list_free__vala_code_node_unref0_ (GList* self);
 static void vala_code_writer_real_visit_namespace (ValaCodeVisitor* base, ValaNamespace* ns);
 gboolean vala_symbol_get_external_package (ValaSymbol* self);
 void vala_code_node_accept_children (ValaCodeNode* self, ValaCodeVisitor* visitor);
+gpointer vala_comment_ref (gpointer instance);
+void vala_comment_unref (gpointer instance);
+GParamSpec* vala_param_spec_comment (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void vala_value_set_comment (GValue* value, gpointer v_object);
+void vala_value_take_comment (GValue* value, gpointer v_object);
+gpointer vala_value_get_comment (const GValue* value);
+GType vala_comment_get_type (void) G_GNUC_CONST;
+ValaList* vala_namespace_get_comments (ValaNamespace* self);
+gboolean vala_code_context_get_vapi_comments (ValaCodeContext* self);
+ValaSourceReference* vala_comment_get_source_reference (ValaComment* self);
+ValaSourceFile* vala_source_reference_get_file (ValaSourceReference* self);
+GType vala_source_file_type_get_type (void) G_GNUC_CONST;
+ValaSourceFileType vala_source_file_get_file_type (ValaSourceFile* self);
+static void vala_code_writer_write_comment (ValaCodeWriter* self, ValaComment* comment);
+void vala_report_warning (ValaSourceReference* source, const gchar* message);
+void vala_report_notice (ValaSourceReference* source, const gchar* message);
 static void vala_code_writer_write_attributes (ValaCodeWriter* self, ValaCodeNode* node);
 static void vala_code_writer_write_indent (ValaCodeWriter* self);
 static void vala_code_writer_write_identifier (ValaCodeWriter* self, const gchar* s);
@@ -1552,10 +1590,10 @@ static gchar* vala_code_writer_get_cheaders (ValaCodeWriter* self, ValaSymbol* s
 gchar* vala_code_node_get_attribute_string (ValaCodeNode* self, const gchar* attribute, const gchar* argument, const gchar* default_value);
 ValaSymbol* vala_symbol_get_parent_symbol (ValaSymbol* self);
 ValaSourceReference* vala_code_node_get_source_reference (ValaCodeNode* self);
-ValaSourceFile* vala_source_reference_get_file (ValaSourceReference* self);
 gchar* vala_source_file_get_cinclude_filename (ValaSourceFile* self);
 static void vala_code_writer_real_visit_class (ValaCodeVisitor* base, ValaClass* cl);
 static gboolean vala_code_writer_check_accessibility (ValaCodeWriter* self, ValaSymbol* sym);
+ValaComment* vala_symbol_get_comment (ValaSymbol* self);
 static void vala_code_writer_write_accessibility (ValaCodeWriter* self, ValaSymbol* sym);
 gboolean vala_class_get_is_abstract (ValaClass* self);
 static void vala_code_writer_write_type_parameters (ValaCodeWriter* self, ValaList* type_params);
@@ -1786,25 +1824,26 @@ ValaExpression* vala_lambda_expression_get_expression_body (ValaLambdaExpression
 static void vala_code_writer_real_visit_assignment (ValaCodeVisitor* base, ValaAssignment* a);
 ValaExpression* vala_assignment_get_left (ValaAssignment* self);
 ValaExpression* vala_assignment_get_right (ValaAssignment* self);
+const gchar* vala_comment_get_content (ValaComment* self);
 GType vala_token_type_get_type (void) G_GNUC_CONST;
 ValaTokenType vala_scanner_get_identifier_or_keyword (gchar* begin, gint len);
 gchar* vala_data_type_to_qualified_string (ValaDataType* self, ValaScope* scope);
 GType vala_reference_type_get_type (void) G_GNUC_CONST;
 GType vala_array_type_get_type (void) G_GNUC_CONST;
 gboolean vala_array_type_get_fixed_length (ValaArrayType* self);
-gint vala_array_type_get_length (ValaArrayType* self);
+ValaExpression* vala_array_type_get_length (ValaArrayType* self);
 GType vala_symbol_accessibility_get_type (void) G_GNUC_CONST;
 ValaSymbolAccessibility vala_symbol_get_access (ValaSymbol* self);
 GType vala_attribute_get_type (void) G_GNUC_CONST;
 GType vala_code_generator_get_type (void) G_GNUC_CONST;
-static gint ____lambda3_ (ValaCodeWriter* self, ValaAttribute* a, ValaAttribute* b);
+static gint ____lambda4_ (ValaCodeWriter* self, ValaAttribute* a, ValaAttribute* b);
 const gchar* vala_attribute_get_name (ValaAttribute* self);
-static gint _____lambda3__gcompare_data_func (gconstpointer a, gconstpointer b, gpointer self);
+static gint _____lambda4__gcompare_data_func (gconstpointer a, gconstpointer b, gpointer self);
 ValaAttribute* vala_code_node_get_attribute (ValaCodeNode* self, const gchar* name);
 ValaAttribute* vala_attribute_new (const gchar* name, ValaSourceReference* source_reference);
 ValaAttribute* vala_attribute_construct (GType object_type, const gchar* name, ValaSourceReference* source_reference);
-static gint ___lambda4_ (ValaCodeWriter* self, ValaAttribute* a, ValaAttribute* b);
-static gint ____lambda4__gcompare_data_func (gconstpointer a, gconstpointer b, gpointer self);
+static gint ___lambda5_ (ValaCodeWriter* self, ValaAttribute* a, ValaAttribute* b);
+static gint ____lambda5__gcompare_data_func (gconstpointer a, gconstpointer b, gpointer self);
 static void _g_free0_ (gpointer var);
 gboolean vala_attribute_has_argument (ValaAttribute* self, const gchar* name);
 gboolean vala_symbol_get_external (ValaSymbol* self);
@@ -2009,7 +2048,7 @@ void vala_code_writer_write_file (ValaCodeWriter* self, ValaCodeContext* context
                        _tmp39_ = filename;
                        _tmp40_ = g_mapped_file_new (_tmp39_, FALSE, &_inner_error_);
                        old_file = _tmp40_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == G_FILE_ERROR) {
                                        goto __catch1_g_file_error;
                                }
@@ -2023,12 +2062,12 @@ void vala_code_writer_write_file (ValaCodeWriter* self, ValaCodeContext* context
                        _tmp41_ = temp_filename;
                        _tmp42_ = g_mapped_file_new (_tmp41_, FALSE, &_inner_error_);
                        new_file = _tmp42_;
-                       if (_inner_error_ != NULL) {
-                               _g_mapped_file_free0 (old_file);
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
+                               _g_mapped_file_unref0 (old_file);
                                if (_inner_error_->domain == G_FILE_ERROR) {
                                        goto __catch1_g_file_error;
                                }
-                               _g_mapped_file_free0 (old_file);
+                               _g_mapped_file_unref0 (old_file);
                                _g_free0 (header);
                                _g_free0 (_tmp15_);
                                _g_free0 (temp_filename);
@@ -2059,12 +2098,12 @@ void vala_code_writer_write_file (ValaCodeWriter* self, ValaCodeContext* context
                                        changed = FALSE;
                                }
                        }
-                       _g_mapped_file_free0 (old_file);
+                       _g_mapped_file_unref0 (old_file);
                        old_file = NULL;
-                       _g_mapped_file_free0 (new_file);
+                       _g_mapped_file_unref0 (new_file);
                        new_file = NULL;
-                       _g_mapped_file_free0 (new_file);
-                       _g_mapped_file_free0 (old_file);
+                       _g_mapped_file_unref0 (new_file);
+                       _g_mapped_file_unref0 (old_file);
                }
                goto __finally1;
                __catch1_g_file_error:
@@ -2075,7 +2114,7 @@ void vala_code_writer_write_file (ValaCodeWriter* self, ValaCodeContext* context
                        _g_error_free0 (e);
                }
                __finally1:
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_free0 (header);
                        _g_free0 (_tmp15_);
                        _g_free0 (temp_filename);
@@ -2218,6 +2257,16 @@ static void vala_code_writer_real_visit_using_directive (ValaCodeVisitor* base,
 }
 
 
+static gpointer _vala_iterable_ref0 (gpointer self) {
+       return self ? vala_iterable_ref (self) : NULL;
+}
+
+
+static gpointer _vala_source_reference_ref0 (gpointer self) {
+       return self ? vala_source_reference_ref (self) : NULL;
+}
+
+
 static void vala_code_writer_real_visit_namespace (ValaCodeVisitor* base, ValaNamespace* ns) {
        ValaCodeWriter * self;
        ValaNamespace* _tmp0_ = NULL;
@@ -2226,48 +2275,55 @@ static void vala_code_writer_real_visit_namespace (ValaCodeVisitor* base, ValaNa
        ValaNamespace* _tmp3_ = NULL;
        const gchar* _tmp4_ = NULL;
        const gchar* _tmp5_ = NULL;
+       ValaList* comments = NULL;
        ValaNamespace* _tmp7_ = NULL;
-       ValaNamespace* _tmp8_ = NULL;
-       const gchar* _tmp9_ = NULL;
-       const gchar* _tmp10_ = NULL;
-       ValaNamespace* _tmp11_ = NULL;
-       ValaScope* _tmp12_ = NULL;
-       ValaScope* _tmp13_ = NULL;
-       ValaScope* _tmp14_ = NULL;
-       ValaNamespace* _tmp15_ = NULL;
-       ValaList* _tmp16_ = NULL;
-       ValaList* _tmp17_ = NULL;
-       ValaNamespace* _tmp18_ = NULL;
-       ValaList* _tmp19_ = NULL;
-       ValaList* _tmp20_ = NULL;
-       ValaNamespace* _tmp21_ = NULL;
-       ValaList* _tmp22_ = NULL;
-       ValaList* _tmp23_ = NULL;
-       ValaNamespace* _tmp24_ = NULL;
-       ValaList* _tmp25_ = NULL;
-       ValaList* _tmp26_ = NULL;
-       ValaNamespace* _tmp27_ = NULL;
-       ValaList* _tmp28_ = NULL;
-       ValaList* _tmp29_ = NULL;
-       ValaNamespace* _tmp30_ = NULL;
-       ValaList* _tmp31_ = NULL;
-       ValaList* _tmp32_ = NULL;
-       ValaNamespace* _tmp33_ = NULL;
-       ValaList* _tmp34_ = NULL;
-       ValaList* _tmp35_ = NULL;
-       ValaNamespace* _tmp36_ = NULL;
-       ValaList* _tmp37_ = NULL;
-       ValaList* _tmp38_ = NULL;
-       ValaNamespace* _tmp39_ = NULL;
-       ValaList* _tmp40_ = NULL;
-       ValaList* _tmp41_ = NULL;
-       ValaNamespace* _tmp42_ = NULL;
-       ValaList* _tmp43_ = NULL;
-       ValaList* _tmp44_ = NULL;
-       ValaScope* _tmp45_ = NULL;
-       ValaScope* _tmp46_ = NULL;
-       ValaScope* _tmp47_ = NULL;
-       ValaScope* _tmp48_ = NULL;
+       ValaList* _tmp8_ = NULL;
+       gboolean _tmp9_ = FALSE;
+       ValaCodeContext* _tmp10_ = NULL;
+       gboolean _tmp11_ = FALSE;
+       gboolean _tmp12_ = FALSE;
+       ValaNamespace* _tmp44_ = NULL;
+       ValaNamespace* _tmp45_ = NULL;
+       const gchar* _tmp46_ = NULL;
+       const gchar* _tmp47_ = NULL;
+       ValaNamespace* _tmp48_ = NULL;
+       ValaScope* _tmp49_ = NULL;
+       ValaScope* _tmp50_ = NULL;
+       ValaScope* _tmp51_ = NULL;
+       ValaNamespace* _tmp52_ = NULL;
+       ValaList* _tmp53_ = NULL;
+       ValaList* _tmp54_ = NULL;
+       ValaNamespace* _tmp55_ = NULL;
+       ValaList* _tmp56_ = NULL;
+       ValaList* _tmp57_ = NULL;
+       ValaNamespace* _tmp58_ = NULL;
+       ValaList* _tmp59_ = NULL;
+       ValaList* _tmp60_ = NULL;
+       ValaNamespace* _tmp61_ = NULL;
+       ValaList* _tmp62_ = NULL;
+       ValaList* _tmp63_ = NULL;
+       ValaNamespace* _tmp64_ = NULL;
+       ValaList* _tmp65_ = NULL;
+       ValaList* _tmp66_ = NULL;
+       ValaNamespace* _tmp67_ = NULL;
+       ValaList* _tmp68_ = NULL;
+       ValaList* _tmp69_ = NULL;
+       ValaNamespace* _tmp70_ = NULL;
+       ValaList* _tmp71_ = NULL;
+       ValaList* _tmp72_ = NULL;
+       ValaNamespace* _tmp73_ = NULL;
+       ValaList* _tmp74_ = NULL;
+       ValaList* _tmp75_ = NULL;
+       ValaNamespace* _tmp76_ = NULL;
+       ValaList* _tmp77_ = NULL;
+       ValaList* _tmp78_ = NULL;
+       ValaNamespace* _tmp79_ = NULL;
+       ValaList* _tmp80_ = NULL;
+       ValaList* _tmp81_ = NULL;
+       ValaScope* _tmp82_ = NULL;
+       ValaScope* _tmp83_ = NULL;
+       ValaScope* _tmp84_ = NULL;
+       ValaScope* _tmp85_ = NULL;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (ns != NULL);
        _tmp0_ = ns;
@@ -2286,78 +2342,189 @@ static void vala_code_writer_real_visit_namespace (ValaCodeVisitor* base, ValaNa
                return;
        }
        _tmp7_ = ns;
-       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp7_);
+       _tmp8_ = vala_namespace_get_comments (_tmp7_);
+       comments = _tmp8_;
+       _tmp10_ = self->priv->context;
+       _tmp11_ = vala_code_context_get_vapi_comments (_tmp10_);
+       _tmp12_ = _tmp11_;
+       if (_tmp12_) {
+               ValaList* _tmp13_ = NULL;
+               gint _tmp14_ = 0;
+               gint _tmp15_ = 0;
+               _tmp13_ = comments;
+               _tmp14_ = vala_collection_get_size ((ValaCollection*) _tmp13_);
+               _tmp15_ = _tmp14_;
+               _tmp9_ = _tmp15_ > 0;
+       } else {
+               _tmp9_ = FALSE;
+       }
+       if (_tmp9_) {
+               gboolean first = FALSE;
+               ValaSourceReference* first_reference = NULL;
+               first = TRUE;
+               first_reference = NULL;
+               {
+                       ValaList* _comment_list = NULL;
+                       ValaList* _tmp16_ = NULL;
+                       ValaList* _tmp17_ = NULL;
+                       gint _comment_size = 0;
+                       ValaList* _tmp18_ = NULL;
+                       gint _tmp19_ = 0;
+                       gint _tmp20_ = 0;
+                       gint _comment_index = 0;
+                       _tmp16_ = comments;
+                       _tmp17_ = _vala_iterable_ref0 (_tmp16_);
+                       _comment_list = _tmp17_;
+                       _tmp18_ = _comment_list;
+                       _tmp19_ = vala_collection_get_size ((ValaCollection*) _tmp18_);
+                       _tmp20_ = _tmp19_;
+                       _comment_size = _tmp20_;
+                       _comment_index = -1;
+                       while (TRUE) {
+                               gint _tmp21_ = 0;
+                               gint _tmp22_ = 0;
+                               gint _tmp23_ = 0;
+                               ValaComment* comment = NULL;
+                               ValaList* _tmp24_ = NULL;
+                               gint _tmp25_ = 0;
+                               gpointer _tmp26_ = NULL;
+                               ValaComment* _tmp27_ = NULL;
+                               ValaSourceReference* _tmp28_ = NULL;
+                               ValaSourceReference* _tmp29_ = NULL;
+                               ValaSourceFile* _tmp30_ = NULL;
+                               ValaSourceFile* _tmp31_ = NULL;
+                               ValaSourceFileType _tmp32_ = 0;
+                               ValaSourceFileType _tmp33_ = 0;
+                               _tmp21_ = _comment_index;
+                               _comment_index = _tmp21_ + 1;
+                               _tmp22_ = _comment_index;
+                               _tmp23_ = _comment_size;
+                               if (!(_tmp22_ < _tmp23_)) {
+                                       break;
+                               }
+                               _tmp24_ = _comment_list;
+                               _tmp25_ = _comment_index;
+                               _tmp26_ = vala_list_get (_tmp24_, _tmp25_);
+                               comment = (ValaComment*) _tmp26_;
+                               _tmp27_ = comment;
+                               _tmp28_ = vala_comment_get_source_reference (_tmp27_);
+                               _tmp29_ = _tmp28_;
+                               _tmp30_ = vala_source_reference_get_file (_tmp29_);
+                               _tmp31_ = _tmp30_;
+                               _tmp32_ = vala_source_file_get_file_type (_tmp31_);
+                               _tmp33_ = _tmp32_;
+                               if (_tmp33_ == VALA_SOURCE_FILE_TYPE_SOURCE) {
+                                       gboolean _tmp34_ = FALSE;
+                                       _tmp34_ = first;
+                                       if (_tmp34_) {
+                                               ValaComment* _tmp35_ = NULL;
+                                               ValaComment* _tmp36_ = NULL;
+                                               ValaSourceReference* _tmp37_ = NULL;
+                                               ValaSourceReference* _tmp38_ = NULL;
+                                               ValaSourceReference* _tmp39_ = NULL;
+                                               _tmp35_ = comment;
+                                               vala_code_writer_write_comment (self, _tmp35_);
+                                               first = FALSE;
+                                               _tmp36_ = comment;
+                                               _tmp37_ = vala_comment_get_source_reference (_tmp36_);
+                                               _tmp38_ = _tmp37_;
+                                               _tmp39_ = _vala_source_reference_ref0 (_tmp38_);
+                                               _vala_source_reference_unref0 (first_reference);
+                                               first_reference = _tmp39_;
+                                       } else {
+                                               ValaComment* _tmp40_ = NULL;
+                                               ValaSourceReference* _tmp41_ = NULL;
+                                               ValaSourceReference* _tmp42_ = NULL;
+                                               ValaSourceReference* _tmp43_ = NULL;
+                                               _tmp40_ = comment;
+                                               _tmp41_ = vala_comment_get_source_reference (_tmp40_);
+                                               _tmp42_ = _tmp41_;
+                                               vala_report_warning (_tmp42_, "Comment describes namespace, that was already described by another com" \
+"ment.");
+                                               _tmp43_ = first_reference;
+                                               vala_report_notice (_tmp43_, "Previous comment was here.");
+                                       }
+                               }
+                               _vala_comment_unref0 (comment);
+                       }
+                       _vala_iterable_unref0 (_comment_list);
+               }
+               _vala_source_reference_unref0 (first_reference);
+       }
+       _tmp44_ = ns;
+       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp44_);
        vala_code_writer_write_indent (self);
        vala_code_writer_write_string (self, "namespace ");
-       _tmp8_ = ns;
-       _tmp9_ = vala_symbol_get_name ((ValaSymbol*) _tmp8_);
-       _tmp10_ = _tmp9_;
-       vala_code_writer_write_identifier (self, _tmp10_);
+       _tmp45_ = ns;
+       _tmp46_ = vala_symbol_get_name ((ValaSymbol*) _tmp45_);
+       _tmp47_ = _tmp46_;
+       vala_code_writer_write_identifier (self, _tmp47_);
        vala_code_writer_write_begin_block (self);
-       _tmp11_ = ns;
-       _tmp12_ = vala_symbol_get_scope ((ValaSymbol*) _tmp11_);
-       _tmp13_ = _tmp12_;
-       _tmp14_ = _vala_scope_ref0 (_tmp13_);
+       _tmp48_ = ns;
+       _tmp49_ = vala_symbol_get_scope ((ValaSymbol*) _tmp48_);
+       _tmp50_ = _tmp49_;
+       _tmp51_ = _vala_scope_ref0 (_tmp50_);
        _vala_scope_unref0 (self->priv->current_scope);
-       self->priv->current_scope = _tmp14_;
-       _tmp15_ = ns;
-       _tmp16_ = vala_namespace_get_namespaces (_tmp15_);
-       _tmp17_ = _tmp16_;
-       vala_code_writer_visit_sorted (self, _tmp17_);
-       _vala_iterable_unref0 (_tmp17_);
-       _tmp18_ = ns;
-       _tmp19_ = vala_namespace_get_classes (_tmp18_);
-       _tmp20_ = _tmp19_;
-       vala_code_writer_visit_sorted (self, _tmp20_);
-       _vala_iterable_unref0 (_tmp20_);
-       _tmp21_ = ns;
-       _tmp22_ = vala_namespace_get_interfaces (_tmp21_);
-       _tmp23_ = _tmp22_;
-       vala_code_writer_visit_sorted (self, _tmp23_);
-       _vala_iterable_unref0 (_tmp23_);
-       _tmp24_ = ns;
-       _tmp25_ = vala_namespace_get_structs (_tmp24_);
-       _tmp26_ = _tmp25_;
-       vala_code_writer_visit_sorted (self, _tmp26_);
-       _vala_iterable_unref0 (_tmp26_);
-       _tmp27_ = ns;
-       _tmp28_ = vala_namespace_get_enums (_tmp27_);
-       _tmp29_ = _tmp28_;
-       vala_code_writer_visit_sorted (self, _tmp29_);
-       _vala_iterable_unref0 (_tmp29_);
-       _tmp30_ = ns;
-       _tmp31_ = vala_namespace_get_error_domains (_tmp30_);
-       _tmp32_ = _tmp31_;
-       vala_code_writer_visit_sorted (self, _tmp32_);
-       _vala_iterable_unref0 (_tmp32_);
-       _tmp33_ = ns;
-       _tmp34_ = vala_namespace_get_delegates (_tmp33_);
-       _tmp35_ = _tmp34_;
-       vala_code_writer_visit_sorted (self, _tmp35_);
-       _vala_iterable_unref0 (_tmp35_);
-       _tmp36_ = ns;
-       _tmp37_ = vala_namespace_get_fields (_tmp36_);
-       _tmp38_ = _tmp37_;
-       vala_code_writer_visit_sorted (self, _tmp38_);
-       _vala_iterable_unref0 (_tmp38_);
-       _tmp39_ = ns;
-       _tmp40_ = vala_namespace_get_constants (_tmp39_);
-       _tmp41_ = _tmp40_;
-       vala_code_writer_visit_sorted (self, _tmp41_);
-       _vala_iterable_unref0 (_tmp41_);
-       _tmp42_ = ns;
-       _tmp43_ = vala_namespace_get_methods (_tmp42_);
-       _tmp44_ = _tmp43_;
-       vala_code_writer_visit_sorted (self, _tmp44_);
-       _vala_iterable_unref0 (_tmp44_);
-       _tmp45_ = self->priv->current_scope;
-       _tmp46_ = vala_scope_get_parent_scope (_tmp45_);
-       _tmp47_ = _tmp46_;
-       _tmp48_ = _vala_scope_ref0 (_tmp47_);
+       self->priv->current_scope = _tmp51_;
+       _tmp52_ = ns;
+       _tmp53_ = vala_namespace_get_namespaces (_tmp52_);
+       _tmp54_ = _tmp53_;
+       vala_code_writer_visit_sorted (self, _tmp54_);
+       _vala_iterable_unref0 (_tmp54_);
+       _tmp55_ = ns;
+       _tmp56_ = vala_namespace_get_classes (_tmp55_);
+       _tmp57_ = _tmp56_;
+       vala_code_writer_visit_sorted (self, _tmp57_);
+       _vala_iterable_unref0 (_tmp57_);
+       _tmp58_ = ns;
+       _tmp59_ = vala_namespace_get_interfaces (_tmp58_);
+       _tmp60_ = _tmp59_;
+       vala_code_writer_visit_sorted (self, _tmp60_);
+       _vala_iterable_unref0 (_tmp60_);
+       _tmp61_ = ns;
+       _tmp62_ = vala_namespace_get_structs (_tmp61_);
+       _tmp63_ = _tmp62_;
+       vala_code_writer_visit_sorted (self, _tmp63_);
+       _vala_iterable_unref0 (_tmp63_);
+       _tmp64_ = ns;
+       _tmp65_ = vala_namespace_get_enums (_tmp64_);
+       _tmp66_ = _tmp65_;
+       vala_code_writer_visit_sorted (self, _tmp66_);
+       _vala_iterable_unref0 (_tmp66_);
+       _tmp67_ = ns;
+       _tmp68_ = vala_namespace_get_error_domains (_tmp67_);
+       _tmp69_ = _tmp68_;
+       vala_code_writer_visit_sorted (self, _tmp69_);
+       _vala_iterable_unref0 (_tmp69_);
+       _tmp70_ = ns;
+       _tmp71_ = vala_namespace_get_delegates (_tmp70_);
+       _tmp72_ = _tmp71_;
+       vala_code_writer_visit_sorted (self, _tmp72_);
+       _vala_iterable_unref0 (_tmp72_);
+       _tmp73_ = ns;
+       _tmp74_ = vala_namespace_get_fields (_tmp73_);
+       _tmp75_ = _tmp74_;
+       vala_code_writer_visit_sorted (self, _tmp75_);
+       _vala_iterable_unref0 (_tmp75_);
+       _tmp76_ = ns;
+       _tmp77_ = vala_namespace_get_constants (_tmp76_);
+       _tmp78_ = _tmp77_;
+       vala_code_writer_visit_sorted (self, _tmp78_);
+       _vala_iterable_unref0 (_tmp78_);
+       _tmp79_ = ns;
+       _tmp80_ = vala_namespace_get_methods (_tmp79_);
+       _tmp81_ = _tmp80_;
+       vala_code_writer_visit_sorted (self, _tmp81_);
+       _vala_iterable_unref0 (_tmp81_);
+       _tmp82_ = self->priv->current_scope;
+       _tmp83_ = vala_scope_get_parent_scope (_tmp82_);
+       _tmp84_ = _tmp83_;
+       _tmp85_ = _vala_scope_ref0 (_tmp84_);
        _vala_scope_unref0 (self->priv->current_scope);
-       self->priv->current_scope = _tmp48_;
+       self->priv->current_scope = _tmp85_;
        vala_code_writer_write_end_block (self);
        vala_code_writer_write_newline (self);
+       _vala_iterable_unref0 (comments);
 }
 
 
@@ -2386,7 +2553,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp4_ = _tmp3_;
                _g_free0 (_tmp2_);
                regex = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch2_g_regex_error;
                        }
@@ -2398,7 +2565,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp7_ = replacement;
                _tmp8_ = g_regex_replace_literal (_tmp6_, self, (gssize) (-1), 0, _tmp7_, 0, &_inner_error_);
                _tmp5_ = _tmp8_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_regex_unref0 (regex);
                        if (_inner_error_->domain == G_REGEX_ERROR) {
                                goto __catch2_g_regex_error;
@@ -2425,7 +2592,7 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _g_error_free0 (e);
        }
        __finally2:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return NULL;
@@ -2585,11 +2752,6 @@ static gchar* vala_code_writer_get_cheaders (ValaCodeWriter* self, ValaSymbol* s
 }
 
 
-static gpointer _vala_iterable_ref0 (gpointer self) {
-       return self ? vala_iterable_ref (self) : NULL;
-}
-
-
 static void vala_code_writer_real_visit_class (ValaCodeVisitor* base, ValaClass* cl) {
        ValaCodeWriter * self;
        ValaClass* _tmp0_ = NULL;
@@ -2597,61 +2759,65 @@ static void vala_code_writer_real_visit_class (ValaCodeVisitor* base, ValaClass*
        gboolean _tmp2_ = FALSE;
        ValaClass* _tmp3_ = NULL;
        gboolean _tmp4_ = FALSE;
-       ValaClass* _tmp5_ = NULL;
-       ValaClass* _tmp6_ = NULL;
-       ValaClass* _tmp7_ = NULL;
+       gboolean _tmp5_ = FALSE;
+       ValaCodeContext* _tmp6_ = NULL;
+       gboolean _tmp7_ = FALSE;
        gboolean _tmp8_ = FALSE;
-       gboolean _tmp9_ = FALSE;
-       ValaClass* _tmp10_ = NULL;
-       const gchar* _tmp11_ = NULL;
-       const gchar* _tmp12_ = NULL;
-       ValaClass* _tmp13_ = NULL;
-       ValaList* _tmp14_ = NULL;
-       ValaList* _tmp15_ = NULL;
-       ValaList* base_types = NULL;
+       ValaClass* _tmp15_ = NULL;
        ValaClass* _tmp16_ = NULL;
-       ValaList* _tmp17_ = NULL;
-       ValaList* _tmp18_ = NULL;
-       gint _tmp19_ = 0;
-       gint _tmp20_ = 0;
-       ValaClass* _tmp34_ = NULL;
-       ValaScope* _tmp35_ = NULL;
-       ValaScope* _tmp36_ = NULL;
-       ValaScope* _tmp37_ = NULL;
-       ValaClass* _tmp38_ = NULL;
-       ValaList* _tmp39_ = NULL;
-       ValaList* _tmp40_ = NULL;
-       ValaClass* _tmp41_ = NULL;
-       ValaList* _tmp42_ = NULL;
-       ValaList* _tmp43_ = NULL;
+       ValaClass* _tmp17_ = NULL;
+       gboolean _tmp18_ = FALSE;
+       gboolean _tmp19_ = FALSE;
+       ValaClass* _tmp20_ = NULL;
+       const gchar* _tmp21_ = NULL;
+       const gchar* _tmp22_ = NULL;
+       ValaClass* _tmp23_ = NULL;
+       ValaList* _tmp24_ = NULL;
+       ValaList* _tmp25_ = NULL;
+       ValaList* base_types = NULL;
+       ValaClass* _tmp26_ = NULL;
+       ValaList* _tmp27_ = NULL;
+       ValaList* _tmp28_ = NULL;
+       gint _tmp29_ = 0;
+       gint _tmp30_ = 0;
        ValaClass* _tmp44_ = NULL;
-       ValaList* _tmp45_ = NULL;
-       ValaList* _tmp46_ = NULL;
-       ValaClass* _tmp47_ = NULL;
-       ValaList* _tmp48_ = NULL;
+       ValaScope* _tmp45_ = NULL;
+       ValaScope* _tmp46_ = NULL;
+       ValaScope* _tmp47_ = NULL;
+       ValaClass* _tmp48_ = NULL;
        ValaList* _tmp49_ = NULL;
-       ValaClass* _tmp50_ = NULL;
-       ValaList* _tmp51_ = NULL;
+       ValaList* _tmp50_ = NULL;
+       ValaClass* _tmp51_ = NULL;
        ValaList* _tmp52_ = NULL;
-       ValaClass* _tmp53_ = NULL;
-       ValaList* _tmp54_ = NULL;
+       ValaList* _tmp53_ = NULL;
+       ValaClass* _tmp54_ = NULL;
        ValaList* _tmp55_ = NULL;
-       ValaClass* _tmp56_ = NULL;
-       ValaList* _tmp57_ = NULL;
+       ValaList* _tmp56_ = NULL;
+       ValaClass* _tmp57_ = NULL;
        ValaList* _tmp58_ = NULL;
-       ValaClass* _tmp59_ = NULL;
-       ValaList* _tmp60_ = NULL;
+       ValaList* _tmp59_ = NULL;
+       ValaClass* _tmp60_ = NULL;
        ValaList* _tmp61_ = NULL;
-       ValaClass* _tmp62_ = NULL;
-       ValaList* _tmp63_ = NULL;
+       ValaList* _tmp62_ = NULL;
+       ValaClass* _tmp63_ = NULL;
        ValaList* _tmp64_ = NULL;
-       ValaClass* _tmp65_ = NULL;
-       ValaConstructor* _tmp66_ = NULL;
-       ValaConstructor* _tmp67_ = NULL;
-       ValaScope* _tmp71_ = NULL;
-       ValaScope* _tmp72_ = NULL;
-       ValaScope* _tmp73_ = NULL;
-       ValaScope* _tmp74_ = NULL;
+       ValaList* _tmp65_ = NULL;
+       ValaClass* _tmp66_ = NULL;
+       ValaList* _tmp67_ = NULL;
+       ValaList* _tmp68_ = NULL;
+       ValaClass* _tmp69_ = NULL;
+       ValaList* _tmp70_ = NULL;
+       ValaList* _tmp71_ = NULL;
+       ValaClass* _tmp72_ = NULL;
+       ValaList* _tmp73_ = NULL;
+       ValaList* _tmp74_ = NULL;
+       ValaClass* _tmp75_ = NULL;
+       ValaConstructor* _tmp76_ = NULL;
+       ValaConstructor* _tmp77_ = NULL;
+       ValaScope* _tmp81_ = NULL;
+       ValaScope* _tmp82_ = NULL;
+       ValaScope* _tmp83_ = NULL;
+       ValaScope* _tmp84_ = NULL;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (cl != NULL);
        _tmp0_ = cl;
@@ -2665,158 +2831,181 @@ static void vala_code_writer_real_visit_class (ValaCodeVisitor* base, ValaClass*
        if (!_tmp4_) {
                return;
        }
-       _tmp5_ = cl;
-       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp5_);
+       _tmp6_ = self->priv->context;
+       _tmp7_ = vala_code_context_get_vapi_comments (_tmp6_);
+       _tmp8_ = _tmp7_;
+       if (_tmp8_) {
+               ValaClass* _tmp9_ = NULL;
+               ValaComment* _tmp10_ = NULL;
+               ValaComment* _tmp11_ = NULL;
+               _tmp9_ = cl;
+               _tmp10_ = vala_symbol_get_comment ((ValaSymbol*) _tmp9_);
+               _tmp11_ = _tmp10_;
+               _tmp5_ = _tmp11_ != NULL;
+       } else {
+               _tmp5_ = FALSE;
+       }
+       if (_tmp5_) {
+               ValaClass* _tmp12_ = NULL;
+               ValaComment* _tmp13_ = NULL;
+               ValaComment* _tmp14_ = NULL;
+               _tmp12_ = cl;
+               _tmp13_ = vala_symbol_get_comment ((ValaSymbol*) _tmp12_);
+               _tmp14_ = _tmp13_;
+               vala_code_writer_write_comment (self, _tmp14_);
+       }
+       _tmp15_ = cl;
+       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp15_);
        vala_code_writer_write_indent (self);
-       _tmp6_ = cl;
-       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp6_);
-       _tmp7_ = cl;
-       _tmp8_ = vala_class_get_is_abstract (_tmp7_);
-       _tmp9_ = _tmp8_;
-       if (_tmp9_) {
+       _tmp16_ = cl;
+       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp16_);
+       _tmp17_ = cl;
+       _tmp18_ = vala_class_get_is_abstract (_tmp17_);
+       _tmp19_ = _tmp18_;
+       if (_tmp19_) {
                vala_code_writer_write_string (self, "abstract ");
        }
        vala_code_writer_write_string (self, "class ");
-       _tmp10_ = cl;
-       _tmp11_ = vala_symbol_get_name ((ValaSymbol*) _tmp10_);
-       _tmp12_ = _tmp11_;
-       vala_code_writer_write_identifier (self, _tmp12_);
-       _tmp13_ = cl;
-       _tmp14_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp13_);
-       _tmp15_ = _tmp14_;
-       vala_code_writer_write_type_parameters (self, _tmp15_);
-       _vala_iterable_unref0 (_tmp15_);
-       _tmp16_ = cl;
-       _tmp17_ = vala_class_get_base_types (_tmp16_);
-       base_types = _tmp17_;
-       _tmp18_ = base_types;
-       _tmp19_ = vala_collection_get_size ((ValaCollection*) _tmp18_);
-       _tmp20_ = _tmp19_;
-       if (_tmp20_ > 0) {
+       _tmp20_ = cl;
+       _tmp21_ = vala_symbol_get_name ((ValaSymbol*) _tmp20_);
+       _tmp22_ = _tmp21_;
+       vala_code_writer_write_identifier (self, _tmp22_);
+       _tmp23_ = cl;
+       _tmp24_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp23_);
+       _tmp25_ = _tmp24_;
+       vala_code_writer_write_type_parameters (self, _tmp25_);
+       _vala_iterable_unref0 (_tmp25_);
+       _tmp26_ = cl;
+       _tmp27_ = vala_class_get_base_types (_tmp26_);
+       base_types = _tmp27_;
+       _tmp28_ = base_types;
+       _tmp29_ = vala_collection_get_size ((ValaCollection*) _tmp28_);
+       _tmp30_ = _tmp29_;
+       if (_tmp30_ > 0) {
                gboolean first = FALSE;
                vala_code_writer_write_string (self, " : ");
                first = TRUE;
                {
                        ValaList* _base_type_list = NULL;
-                       ValaList* _tmp21_ = NULL;
-                       ValaList* _tmp22_ = NULL;
+                       ValaList* _tmp31_ = NULL;
+                       ValaList* _tmp32_ = NULL;
                        gint _base_type_size = 0;
-                       ValaList* _tmp23_ = NULL;
-                       gint _tmp24_ = 0;
-                       gint _tmp25_ = 0;
+                       ValaList* _tmp33_ = NULL;
+                       gint _tmp34_ = 0;
+                       gint _tmp35_ = 0;
                        gint _base_type_index = 0;
-                       _tmp21_ = base_types;
-                       _tmp22_ = _vala_iterable_ref0 (_tmp21_);
-                       _base_type_list = _tmp22_;
-                       _tmp23_ = _base_type_list;
-                       _tmp24_ = vala_collection_get_size ((ValaCollection*) _tmp23_);
-                       _tmp25_ = _tmp24_;
-                       _base_type_size = _tmp25_;
+                       _tmp31_ = base_types;
+                       _tmp32_ = _vala_iterable_ref0 (_tmp31_);
+                       _base_type_list = _tmp32_;
+                       _tmp33_ = _base_type_list;
+                       _tmp34_ = vala_collection_get_size ((ValaCollection*) _tmp33_);
+                       _tmp35_ = _tmp34_;
+                       _base_type_size = _tmp35_;
                        _base_type_index = -1;
                        while (TRUE) {
-                               gint _tmp26_ = 0;
-                               gint _tmp27_ = 0;
-                               gint _tmp28_ = 0;
+                               gint _tmp36_ = 0;
+                               gint _tmp37_ = 0;
+                               gint _tmp38_ = 0;
                                ValaDataType* base_type = NULL;
-                               ValaList* _tmp29_ = NULL;
-                               gint _tmp30_ = 0;
-                               gpointer _tmp31_ = NULL;
-                               gboolean _tmp32_ = FALSE;
-                               ValaDataType* _tmp33_ = NULL;
-                               _tmp26_ = _base_type_index;
-                               _base_type_index = _tmp26_ + 1;
-                               _tmp27_ = _base_type_index;
-                               _tmp28_ = _base_type_size;
-                               if (!(_tmp27_ < _tmp28_)) {
+                               ValaList* _tmp39_ = NULL;
+                               gint _tmp40_ = 0;
+                               gpointer _tmp41_ = NULL;
+                               gboolean _tmp42_ = FALSE;
+                               ValaDataType* _tmp43_ = NULL;
+                               _tmp36_ = _base_type_index;
+                               _base_type_index = _tmp36_ + 1;
+                               _tmp37_ = _base_type_index;
+                               _tmp38_ = _base_type_size;
+                               if (!(_tmp37_ < _tmp38_)) {
                                        break;
                                }
-                               _tmp29_ = _base_type_list;
-                               _tmp30_ = _base_type_index;
-                               _tmp31_ = vala_list_get (_tmp29_, _tmp30_);
-                               base_type = (ValaDataType*) _tmp31_;
-                               _tmp32_ = first;
-                               if (!_tmp32_) {
+                               _tmp39_ = _base_type_list;
+                               _tmp40_ = _base_type_index;
+                               _tmp41_ = vala_list_get (_tmp39_, _tmp40_);
+                               base_type = (ValaDataType*) _tmp41_;
+                               _tmp42_ = first;
+                               if (!_tmp42_) {
                                        vala_code_writer_write_string (self, ", ");
                                } else {
                                        first = FALSE;
                                }
-                               _tmp33_ = base_type;
-                               vala_code_writer_write_type (self, _tmp33_);
+                               _tmp43_ = base_type;
+                               vala_code_writer_write_type (self, _tmp43_);
                                _vala_code_node_unref0 (base_type);
                        }
                        _vala_iterable_unref0 (_base_type_list);
                }
        }
        vala_code_writer_write_begin_block (self);
-       _tmp34_ = cl;
-       _tmp35_ = vala_symbol_get_scope ((ValaSymbol*) _tmp34_);
-       _tmp36_ = _tmp35_;
-       _tmp37_ = _vala_scope_ref0 (_tmp36_);
-       _vala_scope_unref0 (self->priv->current_scope);
-       self->priv->current_scope = _tmp37_;
-       _tmp38_ = cl;
-       _tmp39_ = vala_class_get_classes (_tmp38_);
-       _tmp40_ = _tmp39_;
-       vala_code_writer_visit_sorted (self, _tmp40_);
-       _vala_iterable_unref0 (_tmp40_);
-       _tmp41_ = cl;
-       _tmp42_ = vala_class_get_structs (_tmp41_);
-       _tmp43_ = _tmp42_;
-       vala_code_writer_visit_sorted (self, _tmp43_);
-       _vala_iterable_unref0 (_tmp43_);
        _tmp44_ = cl;
-       _tmp45_ = vala_class_get_enums (_tmp44_);
+       _tmp45_ = vala_symbol_get_scope ((ValaSymbol*) _tmp44_);
        _tmp46_ = _tmp45_;
-       vala_code_writer_visit_sorted (self, _tmp46_);
-       _vala_iterable_unref0 (_tmp46_);
-       _tmp47_ = cl;
-       _tmp48_ = vala_class_get_delegates (_tmp47_);
-       _tmp49_ = _tmp48_;
-       vala_code_writer_visit_sorted (self, _tmp49_);
-       _vala_iterable_unref0 (_tmp49_);
-       _tmp50_ = cl;
-       _tmp51_ = vala_class_get_fields (_tmp50_);
-       _tmp52_ = _tmp51_;
-       vala_code_writer_visit_sorted (self, _tmp52_);
-       _vala_iterable_unref0 (_tmp52_);
-       _tmp53_ = cl;
-       _tmp54_ = vala_class_get_constants (_tmp53_);
-       _tmp55_ = _tmp54_;
-       vala_code_writer_visit_sorted (self, _tmp55_);
-       _vala_iterable_unref0 (_tmp55_);
-       _tmp56_ = cl;
-       _tmp57_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp56_);
-       _tmp58_ = _tmp57_;
-       vala_code_writer_visit_sorted (self, _tmp58_);
-       _vala_iterable_unref0 (_tmp58_);
-       _tmp59_ = cl;
-       _tmp60_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp59_);
-       _tmp61_ = _tmp60_;
-       vala_code_writer_visit_sorted (self, _tmp61_);
-       _vala_iterable_unref0 (_tmp61_);
-       _tmp62_ = cl;
-       _tmp63_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp62_);
-       _tmp64_ = _tmp63_;
-       vala_code_writer_visit_sorted (self, _tmp64_);
-       _vala_iterable_unref0 (_tmp64_);
-       _tmp65_ = cl;
-       _tmp66_ = vala_class_get_constructor (_tmp65_);
-       _tmp67_ = _tmp66_;
-       if (_tmp67_ != NULL) {
-               ValaClass* _tmp68_ = NULL;
-               ValaConstructor* _tmp69_ = NULL;
-               ValaConstructor* _tmp70_ = NULL;
-               _tmp68_ = cl;
-               _tmp69_ = vala_class_get_constructor (_tmp68_);
-               _tmp70_ = _tmp69_;
-               vala_code_node_accept ((ValaCodeNode*) _tmp70_, (ValaCodeVisitor*) self);
+       _tmp47_ = _vala_scope_ref0 (_tmp46_);
+       _vala_scope_unref0 (self->priv->current_scope);
+       self->priv->current_scope = _tmp47_;
+       _tmp48_ = cl;
+       _tmp49_ = vala_class_get_classes (_tmp48_);
+       _tmp50_ = _tmp49_;
+       vala_code_writer_visit_sorted (self, _tmp50_);
+       _vala_iterable_unref0 (_tmp50_);
+       _tmp51_ = cl;
+       _tmp52_ = vala_class_get_structs (_tmp51_);
+       _tmp53_ = _tmp52_;
+       vala_code_writer_visit_sorted (self, _tmp53_);
+       _vala_iterable_unref0 (_tmp53_);
+       _tmp54_ = cl;
+       _tmp55_ = vala_class_get_enums (_tmp54_);
+       _tmp56_ = _tmp55_;
+       vala_code_writer_visit_sorted (self, _tmp56_);
+       _vala_iterable_unref0 (_tmp56_);
+       _tmp57_ = cl;
+       _tmp58_ = vala_class_get_delegates (_tmp57_);
+       _tmp59_ = _tmp58_;
+       vala_code_writer_visit_sorted (self, _tmp59_);
+       _vala_iterable_unref0 (_tmp59_);
+       _tmp60_ = cl;
+       _tmp61_ = vala_class_get_fields (_tmp60_);
+       _tmp62_ = _tmp61_;
+       vala_code_writer_visit_sorted (self, _tmp62_);
+       _vala_iterable_unref0 (_tmp62_);
+       _tmp63_ = cl;
+       _tmp64_ = vala_class_get_constants (_tmp63_);
+       _tmp65_ = _tmp64_;
+       vala_code_writer_visit_sorted (self, _tmp65_);
+       _vala_iterable_unref0 (_tmp65_);
+       _tmp66_ = cl;
+       _tmp67_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp66_);
+       _tmp68_ = _tmp67_;
+       vala_code_writer_visit_sorted (self, _tmp68_);
+       _vala_iterable_unref0 (_tmp68_);
+       _tmp69_ = cl;
+       _tmp70_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp69_);
+       _tmp71_ = _tmp70_;
+       vala_code_writer_visit_sorted (self, _tmp71_);
+       _vala_iterable_unref0 (_tmp71_);
+       _tmp72_ = cl;
+       _tmp73_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp72_);
+       _tmp74_ = _tmp73_;
+       vala_code_writer_visit_sorted (self, _tmp74_);
+       _vala_iterable_unref0 (_tmp74_);
+       _tmp75_ = cl;
+       _tmp76_ = vala_class_get_constructor (_tmp75_);
+       _tmp77_ = _tmp76_;
+       if (_tmp77_ != NULL) {
+               ValaClass* _tmp78_ = NULL;
+               ValaConstructor* _tmp79_ = NULL;
+               ValaConstructor* _tmp80_ = NULL;
+               _tmp78_ = cl;
+               _tmp79_ = vala_class_get_constructor (_tmp78_);
+               _tmp80_ = _tmp79_;
+               vala_code_node_accept ((ValaCodeNode*) _tmp80_, (ValaCodeVisitor*) self);
        }
-       _tmp71_ = self->priv->current_scope;
-       _tmp72_ = vala_scope_get_parent_scope (_tmp71_);
-       _tmp73_ = _tmp72_;
-       _tmp74_ = _vala_scope_ref0 (_tmp73_);
+       _tmp81_ = self->priv->current_scope;
+       _tmp82_ = vala_scope_get_parent_scope (_tmp81_);
+       _tmp83_ = _tmp82_;
+       _tmp84_ = _vala_scope_ref0 (_tmp83_);
        _vala_scope_unref0 (self->priv->current_scope);
-       self->priv->current_scope = _tmp74_;
+       self->priv->current_scope = _tmp84_;
        vala_code_writer_write_end_block (self);
        vala_code_writer_write_newline (self);
        _vala_iterable_unref0 (base_types);
@@ -3102,34 +3291,38 @@ static void vala_code_writer_real_visit_struct (ValaCodeVisitor* base, ValaStruc
        gboolean _tmp2_ = FALSE;
        ValaStruct* _tmp3_ = NULL;
        gboolean _tmp4_ = FALSE;
-       ValaStruct* _tmp5_ = NULL;
-       ValaStruct* _tmp6_ = NULL;
-       ValaStruct* _tmp7_ = NULL;
-       const gchar* _tmp8_ = NULL;
-       const gchar* _tmp9_ = NULL;
-       ValaStruct* _tmp10_ = NULL;
-       ValaList* _tmp11_ = NULL;
-       ValaList* _tmp12_ = NULL;
-       ValaStruct* _tmp13_ = NULL;
-       ValaDataType* _tmp14_ = NULL;
-       ValaDataType* _tmp15_ = NULL;
-       ValaStruct* _tmp19_ = NULL;
-       ValaScope* _tmp20_ = NULL;
-       ValaScope* _tmp21_ = NULL;
-       ValaScope* _tmp22_ = NULL;
-       ValaStruct* _tmp35_ = NULL;
-       ValaList* _tmp36_ = NULL;
-       ValaList* _tmp37_ = NULL;
-       ValaStruct* _tmp38_ = NULL;
-       ValaList* _tmp39_ = NULL;
-       ValaList* _tmp40_ = NULL;
-       ValaStruct* _tmp41_ = NULL;
-       ValaList* _tmp42_ = NULL;
-       ValaList* _tmp43_ = NULL;
-       ValaScope* _tmp44_ = NULL;
-       ValaScope* _tmp45_ = NULL;
-       ValaScope* _tmp46_ = NULL;
-       ValaScope* _tmp47_ = NULL;
+       gboolean _tmp5_ = FALSE;
+       ValaCodeContext* _tmp6_ = NULL;
+       gboolean _tmp7_ = FALSE;
+       gboolean _tmp8_ = FALSE;
+       ValaStruct* _tmp15_ = NULL;
+       ValaStruct* _tmp16_ = NULL;
+       ValaStruct* _tmp17_ = NULL;
+       const gchar* _tmp18_ = NULL;
+       const gchar* _tmp19_ = NULL;
+       ValaStruct* _tmp20_ = NULL;
+       ValaList* _tmp21_ = NULL;
+       ValaList* _tmp22_ = NULL;
+       ValaStruct* _tmp23_ = NULL;
+       ValaDataType* _tmp24_ = NULL;
+       ValaDataType* _tmp25_ = NULL;
+       ValaStruct* _tmp29_ = NULL;
+       ValaScope* _tmp30_ = NULL;
+       ValaScope* _tmp31_ = NULL;
+       ValaScope* _tmp32_ = NULL;
+       ValaStruct* _tmp45_ = NULL;
+       ValaList* _tmp46_ = NULL;
+       ValaList* _tmp47_ = NULL;
+       ValaStruct* _tmp48_ = NULL;
+       ValaList* _tmp49_ = NULL;
+       ValaList* _tmp50_ = NULL;
+       ValaStruct* _tmp51_ = NULL;
+       ValaList* _tmp52_ = NULL;
+       ValaList* _tmp53_ = NULL;
+       ValaScope* _tmp54_ = NULL;
+       ValaScope* _tmp55_ = NULL;
+       ValaScope* _tmp56_ = NULL;
+       ValaScope* _tmp57_ = NULL;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (st != NULL);
        _tmp0_ = st;
@@ -3143,105 +3336,128 @@ static void vala_code_writer_real_visit_struct (ValaCodeVisitor* base, ValaStruc
        if (!_tmp4_) {
                return;
        }
-       _tmp5_ = st;
-       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp5_);
+       _tmp6_ = self->priv->context;
+       _tmp7_ = vala_code_context_get_vapi_comments (_tmp6_);
+       _tmp8_ = _tmp7_;
+       if (_tmp8_) {
+               ValaStruct* _tmp9_ = NULL;
+               ValaComment* _tmp10_ = NULL;
+               ValaComment* _tmp11_ = NULL;
+               _tmp9_ = st;
+               _tmp10_ = vala_symbol_get_comment ((ValaSymbol*) _tmp9_);
+               _tmp11_ = _tmp10_;
+               _tmp5_ = _tmp11_ != NULL;
+       } else {
+               _tmp5_ = FALSE;
+       }
+       if (_tmp5_) {
+               ValaStruct* _tmp12_ = NULL;
+               ValaComment* _tmp13_ = NULL;
+               ValaComment* _tmp14_ = NULL;
+               _tmp12_ = st;
+               _tmp13_ = vala_symbol_get_comment ((ValaSymbol*) _tmp12_);
+               _tmp14_ = _tmp13_;
+               vala_code_writer_write_comment (self, _tmp14_);
+       }
+       _tmp15_ = st;
+       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp15_);
        vala_code_writer_write_indent (self);
-       _tmp6_ = st;
-       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp6_);
+       _tmp16_ = st;
+       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp16_);
        vala_code_writer_write_string (self, "struct ");
-       _tmp7_ = st;
-       _tmp8_ = vala_symbol_get_name ((ValaSymbol*) _tmp7_);
-       _tmp9_ = _tmp8_;
-       vala_code_writer_write_identifier (self, _tmp9_);
-       _tmp10_ = st;
-       _tmp11_ = vala_struct_get_type_parameters (_tmp10_);
-       _tmp12_ = _tmp11_;
-       vala_code_writer_write_type_parameters (self, _tmp12_);
-       _vala_iterable_unref0 (_tmp12_);
-       _tmp13_ = st;
-       _tmp14_ = vala_struct_get_base_type (_tmp13_);
-       _tmp15_ = _tmp14_;
-       if (_tmp15_ != NULL) {
-               ValaStruct* _tmp16_ = NULL;
-               ValaDataType* _tmp17_ = NULL;
-               ValaDataType* _tmp18_ = NULL;
+       _tmp17_ = st;
+       _tmp18_ = vala_symbol_get_name ((ValaSymbol*) _tmp17_);
+       _tmp19_ = _tmp18_;
+       vala_code_writer_write_identifier (self, _tmp19_);
+       _tmp20_ = st;
+       _tmp21_ = vala_struct_get_type_parameters (_tmp20_);
+       _tmp22_ = _tmp21_;
+       vala_code_writer_write_type_parameters (self, _tmp22_);
+       _vala_iterable_unref0 (_tmp22_);
+       _tmp23_ = st;
+       _tmp24_ = vala_struct_get_base_type (_tmp23_);
+       _tmp25_ = _tmp24_;
+       if (_tmp25_ != NULL) {
+               ValaStruct* _tmp26_ = NULL;
+               ValaDataType* _tmp27_ = NULL;
+               ValaDataType* _tmp28_ = NULL;
                vala_code_writer_write_string (self, " : ");
-               _tmp16_ = st;
-               _tmp17_ = vala_struct_get_base_type (_tmp16_);
-               _tmp18_ = _tmp17_;
-               vala_code_writer_write_type (self, _tmp18_);
+               _tmp26_ = st;
+               _tmp27_ = vala_struct_get_base_type (_tmp26_);
+               _tmp28_ = _tmp27_;
+               vala_code_writer_write_type (self, _tmp28_);
        }
        vala_code_writer_write_begin_block (self);
-       _tmp19_ = st;
-       _tmp20_ = vala_symbol_get_scope ((ValaSymbol*) _tmp19_);
-       _tmp21_ = _tmp20_;
-       _tmp22_ = _vala_scope_ref0 (_tmp21_);
+       _tmp29_ = st;
+       _tmp30_ = vala_symbol_get_scope ((ValaSymbol*) _tmp29_);
+       _tmp31_ = _tmp30_;
+       _tmp32_ = _vala_scope_ref0 (_tmp31_);
        _vala_scope_unref0 (self->priv->current_scope);
-       self->priv->current_scope = _tmp22_;
+       self->priv->current_scope = _tmp32_;
        {
                ValaList* _field_list = NULL;
-               ValaStruct* _tmp23_ = NULL;
-               ValaList* _tmp24_ = NULL;
+               ValaStruct* _tmp33_ = NULL;
+               ValaList* _tmp34_ = NULL;
                gint _field_size = 0;
-               ValaList* _tmp25_ = NULL;
-               gint _tmp26_ = 0;
-               gint _tmp27_ = 0;
+               ValaList* _tmp35_ = NULL;
+               gint _tmp36_ = 0;
+               gint _tmp37_ = 0;
                gint _field_index = 0;
-               _tmp23_ = st;
-               _tmp24_ = vala_struct_get_fields (_tmp23_);
-               _field_list = _tmp24_;
-               _tmp25_ = _field_list;
-               _tmp26_ = vala_collection_get_size ((ValaCollection*) _tmp25_);
-               _tmp27_ = _tmp26_;
-               _field_size = _tmp27_;
+               _tmp33_ = st;
+               _tmp34_ = vala_struct_get_fields (_tmp33_);
+               _field_list = _tmp34_;
+               _tmp35_ = _field_list;
+               _tmp36_ = vala_collection_get_size ((ValaCollection*) _tmp35_);
+               _tmp37_ = _tmp36_;
+               _field_size = _tmp37_;
                _field_index = -1;
                while (TRUE) {
-                       gint _tmp28_ = 0;
-                       gint _tmp29_ = 0;
-                       gint _tmp30_ = 0;
+                       gint _tmp38_ = 0;
+                       gint _tmp39_ = 0;
+                       gint _tmp40_ = 0;
                        ValaField* field = NULL;
-                       ValaList* _tmp31_ = NULL;
-                       gint _tmp32_ = 0;
-                       gpointer _tmp33_ = NULL;
-                       ValaField* _tmp34_ = NULL;
-                       _tmp28_ = _field_index;
-                       _field_index = _tmp28_ + 1;
-                       _tmp29_ = _field_index;
-                       _tmp30_ = _field_size;
-                       if (!(_tmp29_ < _tmp30_)) {
+                       ValaList* _tmp41_ = NULL;
+                       gint _tmp42_ = 0;
+                       gpointer _tmp43_ = NULL;
+                       ValaField* _tmp44_ = NULL;
+                       _tmp38_ = _field_index;
+                       _field_index = _tmp38_ + 1;
+                       _tmp39_ = _field_index;
+                       _tmp40_ = _field_size;
+                       if (!(_tmp39_ < _tmp40_)) {
                                break;
                        }
-                       _tmp31_ = _field_list;
-                       _tmp32_ = _field_index;
-                       _tmp33_ = vala_list_get (_tmp31_, _tmp32_);
-                       field = (ValaField*) _tmp33_;
-                       _tmp34_ = field;
-                       vala_code_node_accept ((ValaCodeNode*) _tmp34_, (ValaCodeVisitor*) self);
+                       _tmp41_ = _field_list;
+                       _tmp42_ = _field_index;
+                       _tmp43_ = vala_list_get (_tmp41_, _tmp42_);
+                       field = (ValaField*) _tmp43_;
+                       _tmp44_ = field;
+                       vala_code_node_accept ((ValaCodeNode*) _tmp44_, (ValaCodeVisitor*) self);
                        _vala_code_node_unref0 (field);
                }
                _vala_iterable_unref0 (_field_list);
        }
-       _tmp35_ = st;
-       _tmp36_ = vala_struct_get_constants (_tmp35_);
-       _tmp37_ = _tmp36_;
-       vala_code_writer_visit_sorted (self, _tmp37_);
-       _vala_iterable_unref0 (_tmp37_);
-       _tmp38_ = st;
-       _tmp39_ = vala_struct_get_methods (_tmp38_);
-       _tmp40_ = _tmp39_;
-       vala_code_writer_visit_sorted (self, _tmp40_);
-       _vala_iterable_unref0 (_tmp40_);
-       _tmp41_ = st;
-       _tmp42_ = vala_struct_get_properties (_tmp41_);
-       _tmp43_ = _tmp42_;
-       vala_code_writer_visit_sorted (self, _tmp43_);
-       _vala_iterable_unref0 (_tmp43_);
-       _tmp44_ = self->priv->current_scope;
-       _tmp45_ = vala_scope_get_parent_scope (_tmp44_);
-       _tmp46_ = _tmp45_;
-       _tmp47_ = _vala_scope_ref0 (_tmp46_);
+       _tmp45_ = st;
+       _tmp46_ = vala_struct_get_constants (_tmp45_);
+       _tmp47_ = _tmp46_;
+       vala_code_writer_visit_sorted (self, _tmp47_);
+       _vala_iterable_unref0 (_tmp47_);
+       _tmp48_ = st;
+       _tmp49_ = vala_struct_get_methods (_tmp48_);
+       _tmp50_ = _tmp49_;
+       vala_code_writer_visit_sorted (self, _tmp50_);
+       _vala_iterable_unref0 (_tmp50_);
+       _tmp51_ = st;
+       _tmp52_ = vala_struct_get_properties (_tmp51_);
+       _tmp53_ = _tmp52_;
+       vala_code_writer_visit_sorted (self, _tmp53_);
+       _vala_iterable_unref0 (_tmp53_);
+       _tmp54_ = self->priv->current_scope;
+       _tmp55_ = vala_scope_get_parent_scope (_tmp54_);
+       _tmp56_ = _tmp55_;
+       _tmp57_ = _vala_scope_ref0 (_tmp56_);
        _vala_scope_unref0 (self->priv->current_scope);
-       self->priv->current_scope = _tmp47_;
+       self->priv->current_scope = _tmp57_;
        vala_code_writer_write_end_block (self);
        vala_code_writer_write_newline (self);
 }
@@ -3254,55 +3470,59 @@ static void vala_code_writer_real_visit_interface (ValaCodeVisitor* base, ValaIn
        gboolean _tmp2_ = FALSE;
        ValaInterface* _tmp3_ = NULL;
        gboolean _tmp4_ = FALSE;
-       ValaInterface* _tmp5_ = NULL;
-       ValaInterface* _tmp6_ = NULL;
-       ValaInterface* _tmp7_ = NULL;
-       const gchar* _tmp8_ = NULL;
-       const gchar* _tmp9_ = NULL;
-       ValaInterface* _tmp10_ = NULL;
-       ValaList* _tmp11_ = NULL;
-       ValaList* _tmp12_ = NULL;
+       gboolean _tmp5_ = FALSE;
+       ValaCodeContext* _tmp6_ = NULL;
+       gboolean _tmp7_ = FALSE;
+       gboolean _tmp8_ = FALSE;
+       ValaInterface* _tmp15_ = NULL;
+       ValaInterface* _tmp16_ = NULL;
+       ValaInterface* _tmp17_ = NULL;
+       const gchar* _tmp18_ = NULL;
+       const gchar* _tmp19_ = NULL;
+       ValaInterface* _tmp20_ = NULL;
+       ValaList* _tmp21_ = NULL;
+       ValaList* _tmp22_ = NULL;
        ValaList* prerequisites = NULL;
-       ValaInterface* _tmp13_ = NULL;
-       ValaList* _tmp14_ = NULL;
-       ValaList* _tmp15_ = NULL;
-       gint _tmp16_ = 0;
-       gint _tmp17_ = 0;
-       ValaInterface* _tmp31_ = NULL;
-       ValaScope* _tmp32_ = NULL;
-       ValaScope* _tmp33_ = NULL;
-       ValaScope* _tmp34_ = NULL;
-       ValaInterface* _tmp35_ = NULL;
-       ValaList* _tmp36_ = NULL;
-       ValaList* _tmp37_ = NULL;
-       ValaInterface* _tmp38_ = NULL;
-       ValaList* _tmp39_ = NULL;
-       ValaList* _tmp40_ = NULL;
+       ValaInterface* _tmp23_ = NULL;
+       ValaList* _tmp24_ = NULL;
+       ValaList* _tmp25_ = NULL;
+       gint _tmp26_ = 0;
+       gint _tmp27_ = 0;
        ValaInterface* _tmp41_ = NULL;
-       ValaList* _tmp42_ = NULL;
-       ValaList* _tmp43_ = NULL;
-       ValaInterface* _tmp44_ = NULL;
-       ValaList* _tmp45_ = NULL;
+       ValaScope* _tmp42_ = NULL;
+       ValaScope* _tmp43_ = NULL;
+       ValaScope* _tmp44_ = NULL;
+       ValaInterface* _tmp45_ = NULL;
        ValaList* _tmp46_ = NULL;
-       ValaInterface* _tmp47_ = NULL;
-       ValaList* _tmp48_ = NULL;
+       ValaList* _tmp47_ = NULL;
+       ValaInterface* _tmp48_ = NULL;
        ValaList* _tmp49_ = NULL;
-       ValaInterface* _tmp50_ = NULL;
-       ValaList* _tmp51_ = NULL;
+       ValaList* _tmp50_ = NULL;
+       ValaInterface* _tmp51_ = NULL;
        ValaList* _tmp52_ = NULL;
-       ValaInterface* _tmp53_ = NULL;
-       ValaList* _tmp54_ = NULL;
+       ValaList* _tmp53_ = NULL;
+       ValaInterface* _tmp54_ = NULL;
        ValaList* _tmp55_ = NULL;
-       ValaInterface* _tmp56_ = NULL;
-       ValaList* _tmp57_ = NULL;
+       ValaList* _tmp56_ = NULL;
+       ValaInterface* _tmp57_ = NULL;
        ValaList* _tmp58_ = NULL;
-       ValaInterface* _tmp59_ = NULL;
-       ValaList* _tmp60_ = NULL;
+       ValaList* _tmp59_ = NULL;
+       ValaInterface* _tmp60_ = NULL;
        ValaList* _tmp61_ = NULL;
-       ValaScope* _tmp62_ = NULL;
-       ValaScope* _tmp63_ = NULL;
-       ValaScope* _tmp64_ = NULL;
-       ValaScope* _tmp65_ = NULL;
+       ValaList* _tmp62_ = NULL;
+       ValaInterface* _tmp63_ = NULL;
+       ValaList* _tmp64_ = NULL;
+       ValaList* _tmp65_ = NULL;
+       ValaInterface* _tmp66_ = NULL;
+       ValaList* _tmp67_ = NULL;
+       ValaList* _tmp68_ = NULL;
+       ValaInterface* _tmp69_ = NULL;
+       ValaList* _tmp70_ = NULL;
+       ValaList* _tmp71_ = NULL;
+       ValaScope* _tmp72_ = NULL;
+       ValaScope* _tmp73_ = NULL;
+       ValaScope* _tmp74_ = NULL;
+       ValaScope* _tmp75_ = NULL;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (iface != NULL);
        _tmp0_ = iface;
@@ -3316,140 +3536,163 @@ static void vala_code_writer_real_visit_interface (ValaCodeVisitor* base, ValaIn
        if (!_tmp4_) {
                return;
        }
-       _tmp5_ = iface;
-       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp5_);
+       _tmp6_ = self->priv->context;
+       _tmp7_ = vala_code_context_get_vapi_comments (_tmp6_);
+       _tmp8_ = _tmp7_;
+       if (_tmp8_) {
+               ValaInterface* _tmp9_ = NULL;
+               ValaComment* _tmp10_ = NULL;
+               ValaComment* _tmp11_ = NULL;
+               _tmp9_ = iface;
+               _tmp10_ = vala_symbol_get_comment ((ValaSymbol*) _tmp9_);
+               _tmp11_ = _tmp10_;
+               _tmp5_ = _tmp11_ != NULL;
+       } else {
+               _tmp5_ = FALSE;
+       }
+       if (_tmp5_) {
+               ValaInterface* _tmp12_ = NULL;
+               ValaComment* _tmp13_ = NULL;
+               ValaComment* _tmp14_ = NULL;
+               _tmp12_ = iface;
+               _tmp13_ = vala_symbol_get_comment ((ValaSymbol*) _tmp12_);
+               _tmp14_ = _tmp13_;
+               vala_code_writer_write_comment (self, _tmp14_);
+       }
+       _tmp15_ = iface;
+       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp15_);
        vala_code_writer_write_indent (self);
-       _tmp6_ = iface;
-       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp6_);
+       _tmp16_ = iface;
+       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp16_);
        vala_code_writer_write_string (self, "interface ");
-       _tmp7_ = iface;
-       _tmp8_ = vala_symbol_get_name ((ValaSymbol*) _tmp7_);
-       _tmp9_ = _tmp8_;
-       vala_code_writer_write_identifier (self, _tmp9_);
-       _tmp10_ = iface;
-       _tmp11_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp10_);
-       _tmp12_ = _tmp11_;
-       vala_code_writer_write_type_parameters (self, _tmp12_);
-       _vala_iterable_unref0 (_tmp12_);
-       _tmp13_ = iface;
-       _tmp14_ = vala_interface_get_prerequisites (_tmp13_);
-       prerequisites = _tmp14_;
-       _tmp15_ = prerequisites;
-       _tmp16_ = vala_collection_get_size ((ValaCollection*) _tmp15_);
-       _tmp17_ = _tmp16_;
-       if (_tmp17_ > 0) {
+       _tmp17_ = iface;
+       _tmp18_ = vala_symbol_get_name ((ValaSymbol*) _tmp17_);
+       _tmp19_ = _tmp18_;
+       vala_code_writer_write_identifier (self, _tmp19_);
+       _tmp20_ = iface;
+       _tmp21_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp20_);
+       _tmp22_ = _tmp21_;
+       vala_code_writer_write_type_parameters (self, _tmp22_);
+       _vala_iterable_unref0 (_tmp22_);
+       _tmp23_ = iface;
+       _tmp24_ = vala_interface_get_prerequisites (_tmp23_);
+       prerequisites = _tmp24_;
+       _tmp25_ = prerequisites;
+       _tmp26_ = vala_collection_get_size ((ValaCollection*) _tmp25_);
+       _tmp27_ = _tmp26_;
+       if (_tmp27_ > 0) {
                gboolean first = FALSE;
                vala_code_writer_write_string (self, " : ");
                first = TRUE;
                {
                        ValaList* _prerequisite_list = NULL;
-                       ValaList* _tmp18_ = NULL;
-                       ValaList* _tmp19_ = NULL;
+                       ValaList* _tmp28_ = NULL;
+                       ValaList* _tmp29_ = NULL;
                        gint _prerequisite_size = 0;
-                       ValaList* _tmp20_ = NULL;
-                       gint _tmp21_ = 0;
-                       gint _tmp22_ = 0;
+                       ValaList* _tmp30_ = NULL;
+                       gint _tmp31_ = 0;
+                       gint _tmp32_ = 0;
                        gint _prerequisite_index = 0;
-                       _tmp18_ = prerequisites;
-                       _tmp19_ = _vala_iterable_ref0 (_tmp18_);
-                       _prerequisite_list = _tmp19_;
-                       _tmp20_ = _prerequisite_list;
-                       _tmp21_ = vala_collection_get_size ((ValaCollection*) _tmp20_);
-                       _tmp22_ = _tmp21_;
-                       _prerequisite_size = _tmp22_;
+                       _tmp28_ = prerequisites;
+                       _tmp29_ = _vala_iterable_ref0 (_tmp28_);
+                       _prerequisite_list = _tmp29_;
+                       _tmp30_ = _prerequisite_list;
+                       _tmp31_ = vala_collection_get_size ((ValaCollection*) _tmp30_);
+                       _tmp32_ = _tmp31_;
+                       _prerequisite_size = _tmp32_;
                        _prerequisite_index = -1;
                        while (TRUE) {
-                               gint _tmp23_ = 0;
-                               gint _tmp24_ = 0;
-                               gint _tmp25_ = 0;
+                               gint _tmp33_ = 0;
+                               gint _tmp34_ = 0;
+                               gint _tmp35_ = 0;
                                ValaDataType* prerequisite = NULL;
-                               ValaList* _tmp26_ = NULL;
-                               gint _tmp27_ = 0;
-                               gpointer _tmp28_ = NULL;
-                               gboolean _tmp29_ = FALSE;
-                               ValaDataType* _tmp30_ = NULL;
-                               _tmp23_ = _prerequisite_index;
-                               _prerequisite_index = _tmp23_ + 1;
-                               _tmp24_ = _prerequisite_index;
-                               _tmp25_ = _prerequisite_size;
-                               if (!(_tmp24_ < _tmp25_)) {
+                               ValaList* _tmp36_ = NULL;
+                               gint _tmp37_ = 0;
+                               gpointer _tmp38_ = NULL;
+                               gboolean _tmp39_ = FALSE;
+                               ValaDataType* _tmp40_ = NULL;
+                               _tmp33_ = _prerequisite_index;
+                               _prerequisite_index = _tmp33_ + 1;
+                               _tmp34_ = _prerequisite_index;
+                               _tmp35_ = _prerequisite_size;
+                               if (!(_tmp34_ < _tmp35_)) {
                                        break;
                                }
-                               _tmp26_ = _prerequisite_list;
-                               _tmp27_ = _prerequisite_index;
-                               _tmp28_ = vala_list_get (_tmp26_, _tmp27_);
-                               prerequisite = (ValaDataType*) _tmp28_;
-                               _tmp29_ = first;
-                               if (!_tmp29_) {
+                               _tmp36_ = _prerequisite_list;
+                               _tmp37_ = _prerequisite_index;
+                               _tmp38_ = vala_list_get (_tmp36_, _tmp37_);
+                               prerequisite = (ValaDataType*) _tmp38_;
+                               _tmp39_ = first;
+                               if (!_tmp39_) {
                                        vala_code_writer_write_string (self, ", ");
                                } else {
                                        first = FALSE;
                                }
-                               _tmp30_ = prerequisite;
-                               vala_code_writer_write_type (self, _tmp30_);
+                               _tmp40_ = prerequisite;
+                               vala_code_writer_write_type (self, _tmp40_);
                                _vala_code_node_unref0 (prerequisite);
                        }
                        _vala_iterable_unref0 (_prerequisite_list);
                }
        }
        vala_code_writer_write_begin_block (self);
-       _tmp31_ = iface;
-       _tmp32_ = vala_symbol_get_scope ((ValaSymbol*) _tmp31_);
-       _tmp33_ = _tmp32_;
-       _tmp34_ = _vala_scope_ref0 (_tmp33_);
-       _vala_scope_unref0 (self->priv->current_scope);
-       self->priv->current_scope = _tmp34_;
-       _tmp35_ = iface;
-       _tmp36_ = vala_interface_get_classes (_tmp35_);
-       _tmp37_ = _tmp36_;
-       vala_code_writer_visit_sorted (self, _tmp37_);
-       _vala_iterable_unref0 (_tmp37_);
-       _tmp38_ = iface;
-       _tmp39_ = vala_interface_get_structs (_tmp38_);
-       _tmp40_ = _tmp39_;
-       vala_code_writer_visit_sorted (self, _tmp40_);
-       _vala_iterable_unref0 (_tmp40_);
        _tmp41_ = iface;
-       _tmp42_ = vala_interface_get_enums (_tmp41_);
+       _tmp42_ = vala_symbol_get_scope ((ValaSymbol*) _tmp41_);
        _tmp43_ = _tmp42_;
-       vala_code_writer_visit_sorted (self, _tmp43_);
-       _vala_iterable_unref0 (_tmp43_);
-       _tmp44_ = iface;
-       _tmp45_ = vala_interface_get_delegates (_tmp44_);
-       _tmp46_ = _tmp45_;
-       vala_code_writer_visit_sorted (self, _tmp46_);
-       _vala_iterable_unref0 (_tmp46_);
-       _tmp47_ = iface;
-       _tmp48_ = vala_interface_get_fields (_tmp47_);
-       _tmp49_ = _tmp48_;
-       vala_code_writer_visit_sorted (self, _tmp49_);
-       _vala_iterable_unref0 (_tmp49_);
-       _tmp50_ = iface;
-       _tmp51_ = vala_interface_get_constants (_tmp50_);
-       _tmp52_ = _tmp51_;
-       vala_code_writer_visit_sorted (self, _tmp52_);
-       _vala_iterable_unref0 (_tmp52_);
-       _tmp53_ = iface;
-       _tmp54_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp53_);
-       _tmp55_ = _tmp54_;
-       vala_code_writer_visit_sorted (self, _tmp55_);
-       _vala_iterable_unref0 (_tmp55_);
-       _tmp56_ = iface;
-       _tmp57_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp56_);
-       _tmp58_ = _tmp57_;
-       vala_code_writer_visit_sorted (self, _tmp58_);
-       _vala_iterable_unref0 (_tmp58_);
-       _tmp59_ = iface;
-       _tmp60_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp59_);
-       _tmp61_ = _tmp60_;
-       vala_code_writer_visit_sorted (self, _tmp61_);
-       _vala_iterable_unref0 (_tmp61_);
-       _tmp62_ = self->priv->current_scope;
-       _tmp63_ = vala_scope_get_parent_scope (_tmp62_);
-       _tmp64_ = _tmp63_;
-       _tmp65_ = _vala_scope_ref0 (_tmp64_);
+       _tmp44_ = _vala_scope_ref0 (_tmp43_);
+       _vala_scope_unref0 (self->priv->current_scope);
+       self->priv->current_scope = _tmp44_;
+       _tmp45_ = iface;
+       _tmp46_ = vala_interface_get_classes (_tmp45_);
+       _tmp47_ = _tmp46_;
+       vala_code_writer_visit_sorted (self, _tmp47_);
+       _vala_iterable_unref0 (_tmp47_);
+       _tmp48_ = iface;
+       _tmp49_ = vala_interface_get_structs (_tmp48_);
+       _tmp50_ = _tmp49_;
+       vala_code_writer_visit_sorted (self, _tmp50_);
+       _vala_iterable_unref0 (_tmp50_);
+       _tmp51_ = iface;
+       _tmp52_ = vala_interface_get_enums (_tmp51_);
+       _tmp53_ = _tmp52_;
+       vala_code_writer_visit_sorted (self, _tmp53_);
+       _vala_iterable_unref0 (_tmp53_);
+       _tmp54_ = iface;
+       _tmp55_ = vala_interface_get_delegates (_tmp54_);
+       _tmp56_ = _tmp55_;
+       vala_code_writer_visit_sorted (self, _tmp56_);
+       _vala_iterable_unref0 (_tmp56_);
+       _tmp57_ = iface;
+       _tmp58_ = vala_interface_get_fields (_tmp57_);
+       _tmp59_ = _tmp58_;
+       vala_code_writer_visit_sorted (self, _tmp59_);
+       _vala_iterable_unref0 (_tmp59_);
+       _tmp60_ = iface;
+       _tmp61_ = vala_interface_get_constants (_tmp60_);
+       _tmp62_ = _tmp61_;
+       vala_code_writer_visit_sorted (self, _tmp62_);
+       _vala_iterable_unref0 (_tmp62_);
+       _tmp63_ = iface;
+       _tmp64_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp63_);
+       _tmp65_ = _tmp64_;
+       vala_code_writer_visit_sorted (self, _tmp65_);
+       _vala_iterable_unref0 (_tmp65_);
+       _tmp66_ = iface;
+       _tmp67_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp66_);
+       _tmp68_ = _tmp67_;
+       vala_code_writer_visit_sorted (self, _tmp68_);
+       _vala_iterable_unref0 (_tmp68_);
+       _tmp69_ = iface;
+       _tmp70_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp69_);
+       _tmp71_ = _tmp70_;
+       vala_code_writer_visit_sorted (self, _tmp71_);
+       _vala_iterable_unref0 (_tmp71_);
+       _tmp72_ = self->priv->current_scope;
+       _tmp73_ = vala_scope_get_parent_scope (_tmp72_);
+       _tmp74_ = _tmp73_;
+       _tmp75_ = _vala_scope_ref0 (_tmp74_);
        _vala_scope_unref0 (self->priv->current_scope);
-       self->priv->current_scope = _tmp65_;
+       self->priv->current_scope = _tmp75_;
        vala_code_writer_write_end_block (self);
        vala_code_writer_write_newline (self);
        _vala_iterable_unref0 (prerequisites);
@@ -3463,21 +3706,25 @@ static void vala_code_writer_real_visit_enum (ValaCodeVisitor* base, ValaEnum* e
        gboolean _tmp2_ = FALSE;
        ValaEnum* _tmp3_ = NULL;
        gboolean _tmp4_ = FALSE;
-       ValaEnum* _tmp5_ = NULL;
-       ValaEnum* _tmp6_ = NULL;
-       ValaEnum* _tmp7_ = NULL;
-       const gchar* _tmp8_ = NULL;
-       const gchar* _tmp9_ = NULL;
+       gboolean _tmp5_ = FALSE;
+       ValaCodeContext* _tmp6_ = NULL;
+       gboolean _tmp7_ = FALSE;
+       gboolean _tmp8_ = FALSE;
+       ValaEnum* _tmp15_ = NULL;
+       ValaEnum* _tmp16_ = NULL;
+       ValaEnum* _tmp17_ = NULL;
+       const gchar* _tmp18_ = NULL;
+       const gchar* _tmp19_ = NULL;
        gboolean first = FALSE;
-       gboolean _tmp34_ = FALSE;
-       ValaEnum* _tmp47_ = NULL;
-       ValaScope* _tmp48_ = NULL;
-       ValaScope* _tmp49_ = NULL;
-       ValaScope* _tmp50_ = NULL;
-       ValaScope* _tmp75_ = NULL;
-       ValaScope* _tmp76_ = NULL;
-       ValaScope* _tmp77_ = NULL;
-       ValaScope* _tmp78_ = NULL;
+       gboolean _tmp54_ = FALSE;
+       ValaEnum* _tmp67_ = NULL;
+       ValaScope* _tmp68_ = NULL;
+       ValaScope* _tmp69_ = NULL;
+       ValaScope* _tmp70_ = NULL;
+       ValaScope* _tmp95_ = NULL;
+       ValaScope* _tmp96_ = NULL;
+       ValaScope* _tmp97_ = NULL;
+       ValaScope* _tmp98_ = NULL;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (en != NULL);
        _tmp0_ = en;
@@ -3491,236 +3738,286 @@ static void vala_code_writer_real_visit_enum (ValaCodeVisitor* base, ValaEnum* e
        if (!_tmp4_) {
                return;
        }
-       _tmp5_ = en;
-       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp5_);
+       _tmp6_ = self->priv->context;
+       _tmp7_ = vala_code_context_get_vapi_comments (_tmp6_);
+       _tmp8_ = _tmp7_;
+       if (_tmp8_) {
+               ValaEnum* _tmp9_ = NULL;
+               ValaComment* _tmp10_ = NULL;
+               ValaComment* _tmp11_ = NULL;
+               _tmp9_ = en;
+               _tmp10_ = vala_symbol_get_comment ((ValaSymbol*) _tmp9_);
+               _tmp11_ = _tmp10_;
+               _tmp5_ = _tmp11_ != NULL;
+       } else {
+               _tmp5_ = FALSE;
+       }
+       if (_tmp5_) {
+               ValaEnum* _tmp12_ = NULL;
+               ValaComment* _tmp13_ = NULL;
+               ValaComment* _tmp14_ = NULL;
+               _tmp12_ = en;
+               _tmp13_ = vala_symbol_get_comment ((ValaSymbol*) _tmp12_);
+               _tmp14_ = _tmp13_;
+               vala_code_writer_write_comment (self, _tmp14_);
+       }
+       _tmp15_ = en;
+       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp15_);
        vala_code_writer_write_indent (self);
-       _tmp6_ = en;
-       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp6_);
+       _tmp16_ = en;
+       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp16_);
        vala_code_writer_write_string (self, "enum ");
-       _tmp7_ = en;
-       _tmp8_ = vala_symbol_get_name ((ValaSymbol*) _tmp7_);
-       _tmp9_ = _tmp8_;
-       vala_code_writer_write_identifier (self, _tmp9_);
+       _tmp17_ = en;
+       _tmp18_ = vala_symbol_get_name ((ValaSymbol*) _tmp17_);
+       _tmp19_ = _tmp18_;
+       vala_code_writer_write_identifier (self, _tmp19_);
        vala_code_writer_write_begin_block (self);
        first = TRUE;
        {
                ValaList* _ev_list = NULL;
-               ValaEnum* _tmp10_ = NULL;
-               ValaList* _tmp11_ = NULL;
+               ValaEnum* _tmp20_ = NULL;
+               ValaList* _tmp21_ = NULL;
                gint _ev_size = 0;
-               ValaList* _tmp12_ = NULL;
-               gint _tmp13_ = 0;
-               gint _tmp14_ = 0;
+               ValaList* _tmp22_ = NULL;
+               gint _tmp23_ = 0;
+               gint _tmp24_ = 0;
                gint _ev_index = 0;
-               _tmp10_ = en;
-               _tmp11_ = vala_enum_get_values (_tmp10_);
-               _ev_list = _tmp11_;
-               _tmp12_ = _ev_list;
-               _tmp13_ = vala_collection_get_size ((ValaCollection*) _tmp12_);
-               _tmp14_ = _tmp13_;
-               _ev_size = _tmp14_;
+               _tmp20_ = en;
+               _tmp21_ = vala_enum_get_values (_tmp20_);
+               _ev_list = _tmp21_;
+               _tmp22_ = _ev_list;
+               _tmp23_ = vala_collection_get_size ((ValaCollection*) _tmp22_);
+               _tmp24_ = _tmp23_;
+               _ev_size = _tmp24_;
                _ev_index = -1;
                while (TRUE) {
-                       gint _tmp15_ = 0;
-                       gint _tmp16_ = 0;
-                       gint _tmp17_ = 0;
+                       gint _tmp25_ = 0;
+                       gint _tmp26_ = 0;
+                       gint _tmp27_ = 0;
                        ValaEnumValue* ev = NULL;
-                       ValaList* _tmp18_ = NULL;
-                       gint _tmp19_ = 0;
-                       gpointer _tmp20_ = NULL;
-                       gboolean _tmp21_ = FALSE;
-                       ValaEnumValue* _tmp22_ = NULL;
-                       ValaEnumValue* _tmp23_ = NULL;
-                       const gchar* _tmp24_ = NULL;
-                       const gchar* _tmp25_ = NULL;
-                       gboolean _tmp26_ = FALSE;
-                       ValaCodeWriterType _tmp27_ = 0;
-                       _tmp15_ = _ev_index;
-                       _ev_index = _tmp15_ + 1;
-                       _tmp16_ = _ev_index;
-                       _tmp17_ = _ev_size;
-                       if (!(_tmp16_ < _tmp17_)) {
+                       ValaList* _tmp28_ = NULL;
+                       gint _tmp29_ = 0;
+                       gpointer _tmp30_ = NULL;
+                       gboolean _tmp31_ = FALSE;
+                       gboolean _tmp32_ = FALSE;
+                       ValaCodeContext* _tmp33_ = NULL;
+                       gboolean _tmp34_ = FALSE;
+                       gboolean _tmp35_ = FALSE;
+                       ValaEnumValue* _tmp42_ = NULL;
+                       ValaEnumValue* _tmp43_ = NULL;
+                       const gchar* _tmp44_ = NULL;
+                       const gchar* _tmp45_ = NULL;
+                       gboolean _tmp46_ = FALSE;
+                       ValaCodeWriterType _tmp47_ = 0;
+                       _tmp25_ = _ev_index;
+                       _ev_index = _tmp25_ + 1;
+                       _tmp26_ = _ev_index;
+                       _tmp27_ = _ev_size;
+                       if (!(_tmp26_ < _tmp27_)) {
                                break;
                        }
-                       _tmp18_ = _ev_list;
-                       _tmp19_ = _ev_index;
-                       _tmp20_ = vala_list_get (_tmp18_, _tmp19_);
-                       ev = (ValaEnumValue*) _tmp20_;
-                       _tmp21_ = first;
-                       if (_tmp21_) {
+                       _tmp28_ = _ev_list;
+                       _tmp29_ = _ev_index;
+                       _tmp30_ = vala_list_get (_tmp28_, _tmp29_);
+                       ev = (ValaEnumValue*) _tmp30_;
+                       _tmp31_ = first;
+                       if (_tmp31_) {
                                first = FALSE;
                        } else {
                                vala_code_writer_write_string (self, ",");
                                vala_code_writer_write_newline (self);
                        }
-                       _tmp22_ = ev;
-                       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp22_);
+                       _tmp33_ = self->priv->context;
+                       _tmp34_ = vala_code_context_get_vapi_comments (_tmp33_);
+                       _tmp35_ = _tmp34_;
+                       if (_tmp35_) {
+                               ValaEnumValue* _tmp36_ = NULL;
+                               ValaComment* _tmp37_ = NULL;
+                               ValaComment* _tmp38_ = NULL;
+                               _tmp36_ = ev;
+                               _tmp37_ = vala_symbol_get_comment ((ValaSymbol*) _tmp36_);
+                               _tmp38_ = _tmp37_;
+                               _tmp32_ = _tmp38_ != NULL;
+                       } else {
+                               _tmp32_ = FALSE;
+                       }
+                       if (_tmp32_) {
+                               ValaEnumValue* _tmp39_ = NULL;
+                               ValaComment* _tmp40_ = NULL;
+                               ValaComment* _tmp41_ = NULL;
+                               _tmp39_ = ev;
+                               _tmp40_ = vala_symbol_get_comment ((ValaSymbol*) _tmp39_);
+                               _tmp41_ = _tmp40_;
+                               vala_code_writer_write_comment (self, _tmp41_);
+                       }
+                       _tmp42_ = ev;
+                       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp42_);
                        vala_code_writer_write_indent (self);
-                       _tmp23_ = ev;
-                       _tmp24_ = vala_symbol_get_name ((ValaSymbol*) _tmp23_);
-                       _tmp25_ = _tmp24_;
-                       vala_code_writer_write_identifier (self, _tmp25_);
-                       _tmp27_ = self->priv->type;
-                       if (_tmp27_ == VALA_CODE_WRITER_TYPE_FAST) {
-                               ValaEnumValue* _tmp28_ = NULL;
-                               ValaExpression* _tmp29_ = NULL;
-                               ValaExpression* _tmp30_ = NULL;
-                               _tmp28_ = ev;
-                               _tmp29_ = vala_constant_get_value ((ValaConstant*) _tmp28_);
-                               _tmp30_ = _tmp29_;
-                               _tmp26_ = _tmp30_ != NULL;
+                       _tmp43_ = ev;
+                       _tmp44_ = vala_symbol_get_name ((ValaSymbol*) _tmp43_);
+                       _tmp45_ = _tmp44_;
+                       vala_code_writer_write_identifier (self, _tmp45_);
+                       _tmp47_ = self->priv->type;
+                       if (_tmp47_ == VALA_CODE_WRITER_TYPE_FAST) {
+                               ValaEnumValue* _tmp48_ = NULL;
+                               ValaExpression* _tmp49_ = NULL;
+                               ValaExpression* _tmp50_ = NULL;
+                               _tmp48_ = ev;
+                               _tmp49_ = vala_constant_get_value ((ValaConstant*) _tmp48_);
+                               _tmp50_ = _tmp49_;
+                               _tmp46_ = _tmp50_ != NULL;
                        } else {
-                               _tmp26_ = FALSE;
+                               _tmp46_ = FALSE;
                        }
-                       if (_tmp26_) {
-                               ValaEnumValue* _tmp31_ = NULL;
-                               ValaExpression* _tmp32_ = NULL;
-                               ValaExpression* _tmp33_ = NULL;
+                       if (_tmp46_) {
+                               ValaEnumValue* _tmp51_ = NULL;
+                               ValaExpression* _tmp52_ = NULL;
+                               ValaExpression* _tmp53_ = NULL;
                                vala_code_writer_write_string (self, " = ");
-                               _tmp31_ = ev;
-                               _tmp32_ = vala_constant_get_value ((ValaConstant*) _tmp31_);
-                               _tmp33_ = _tmp32_;
-                               vala_code_node_accept ((ValaCodeNode*) _tmp33_, (ValaCodeVisitor*) self);
+                               _tmp51_ = ev;
+                               _tmp52_ = vala_constant_get_value ((ValaConstant*) _tmp51_);
+                               _tmp53_ = _tmp52_;
+                               vala_code_node_accept ((ValaCodeNode*) _tmp53_, (ValaCodeVisitor*) self);
                        }
                        _vala_code_node_unref0 (ev);
                }
                _vala_iterable_unref0 (_ev_list);
        }
-       _tmp34_ = first;
-       if (!_tmp34_) {
-               gboolean _tmp35_ = FALSE;
-               ValaEnum* _tmp36_ = NULL;
-               ValaList* _tmp37_ = NULL;
-               ValaList* _tmp38_ = NULL;
-               gint _tmp39_ = 0;
-               gint _tmp40_ = 0;
-               gboolean _tmp41_ = FALSE;
-               _tmp36_ = en;
-               _tmp37_ = vala_enum_get_methods (_tmp36_);
-               _tmp38_ = _tmp37_;
-               _tmp39_ = vala_collection_get_size ((ValaCollection*) _tmp38_);
-               _tmp40_ = _tmp39_;
-               _tmp41_ = _tmp40_ > 0;
-               _vala_iterable_unref0 (_tmp38_);
-               if (_tmp41_) {
-                       _tmp35_ = TRUE;
+       _tmp54_ = first;
+       if (!_tmp54_) {
+               gboolean _tmp55_ = FALSE;
+               ValaEnum* _tmp56_ = NULL;
+               ValaList* _tmp57_ = NULL;
+               ValaList* _tmp58_ = NULL;
+               gint _tmp59_ = 0;
+               gint _tmp60_ = 0;
+               gboolean _tmp61_ = FALSE;
+               _tmp56_ = en;
+               _tmp57_ = vala_enum_get_methods (_tmp56_);
+               _tmp58_ = _tmp57_;
+               _tmp59_ = vala_collection_get_size ((ValaCollection*) _tmp58_);
+               _tmp60_ = _tmp59_;
+               _tmp61_ = _tmp60_ > 0;
+               _vala_iterable_unref0 (_tmp58_);
+               if (_tmp61_) {
+                       _tmp55_ = TRUE;
                } else {
-                       ValaEnum* _tmp42_ = NULL;
-                       ValaList* _tmp43_ = NULL;
-                       ValaList* _tmp44_ = NULL;
-                       gint _tmp45_ = 0;
-                       gint _tmp46_ = 0;
-                       _tmp42_ = en;
-                       _tmp43_ = vala_enum_get_constants (_tmp42_);
-                       _tmp44_ = _tmp43_;
-                       _tmp45_ = vala_collection_get_size ((ValaCollection*) _tmp44_);
-                       _tmp46_ = _tmp45_;
-                       _tmp35_ = _tmp46_ > 0;
-                       _vala_iterable_unref0 (_tmp44_);
+                       ValaEnum* _tmp62_ = NULL;
+                       ValaList* _tmp63_ = NULL;
+                       ValaList* _tmp64_ = NULL;
+                       gint _tmp65_ = 0;
+                       gint _tmp66_ = 0;
+                       _tmp62_ = en;
+                       _tmp63_ = vala_enum_get_constants (_tmp62_);
+                       _tmp64_ = _tmp63_;
+                       _tmp65_ = vala_collection_get_size ((ValaCollection*) _tmp64_);
+                       _tmp66_ = _tmp65_;
+                       _tmp55_ = _tmp66_ > 0;
+                       _vala_iterable_unref0 (_tmp64_);
                }
-               if (_tmp35_) {
+               if (_tmp55_) {
                        vala_code_writer_write_string (self, ";");
                }
                vala_code_writer_write_newline (self);
        }
-       _tmp47_ = en;
-       _tmp48_ = vala_symbol_get_scope ((ValaSymbol*) _tmp47_);
-       _tmp49_ = _tmp48_;
-       _tmp50_ = _vala_scope_ref0 (_tmp49_);
+       _tmp67_ = en;
+       _tmp68_ = vala_symbol_get_scope ((ValaSymbol*) _tmp67_);
+       _tmp69_ = _tmp68_;
+       _tmp70_ = _vala_scope_ref0 (_tmp69_);
        _vala_scope_unref0 (self->priv->current_scope);
-       self->priv->current_scope = _tmp50_;
+       self->priv->current_scope = _tmp70_;
        {
                ValaList* _m_list = NULL;
-               ValaEnum* _tmp51_ = NULL;
-               ValaList* _tmp52_ = NULL;
+               ValaEnum* _tmp71_ = NULL;
+               ValaList* _tmp72_ = NULL;
                gint _m_size = 0;
-               ValaList* _tmp53_ = NULL;
-               gint _tmp54_ = 0;
-               gint _tmp55_ = 0;
+               ValaList* _tmp73_ = NULL;
+               gint _tmp74_ = 0;
+               gint _tmp75_ = 0;
                gint _m_index = 0;
-               _tmp51_ = en;
-               _tmp52_ = vala_enum_get_methods (_tmp51_);
-               _m_list = _tmp52_;
-               _tmp53_ = _m_list;
-               _tmp54_ = vala_collection_get_size ((ValaCollection*) _tmp53_);
-               _tmp55_ = _tmp54_;
-               _m_size = _tmp55_;
+               _tmp71_ = en;
+               _tmp72_ = vala_enum_get_methods (_tmp71_);
+               _m_list = _tmp72_;
+               _tmp73_ = _m_list;
+               _tmp74_ = vala_collection_get_size ((ValaCollection*) _tmp73_);
+               _tmp75_ = _tmp74_;
+               _m_size = _tmp75_;
                _m_index = -1;
                while (TRUE) {
-                       gint _tmp56_ = 0;
-                       gint _tmp57_ = 0;
-                       gint _tmp58_ = 0;
+                       gint _tmp76_ = 0;
+                       gint _tmp77_ = 0;
+                       gint _tmp78_ = 0;
                        ValaMethod* m = NULL;
-                       ValaList* _tmp59_ = NULL;
-                       gint _tmp60_ = 0;
-                       gpointer _tmp61_ = NULL;
-                       ValaMethod* _tmp62_ = NULL;
-                       _tmp56_ = _m_index;
-                       _m_index = _tmp56_ + 1;
-                       _tmp57_ = _m_index;
-                       _tmp58_ = _m_size;
-                       if (!(_tmp57_ < _tmp58_)) {
+                       ValaList* _tmp79_ = NULL;
+                       gint _tmp80_ = 0;
+                       gpointer _tmp81_ = NULL;
+                       ValaMethod* _tmp82_ = NULL;
+                       _tmp76_ = _m_index;
+                       _m_index = _tmp76_ + 1;
+                       _tmp77_ = _m_index;
+                       _tmp78_ = _m_size;
+                       if (!(_tmp77_ < _tmp78_)) {
                                break;
                        }
-                       _tmp59_ = _m_list;
-                       _tmp60_ = _m_index;
-                       _tmp61_ = vala_list_get (_tmp59_, _tmp60_);
-                       m = (ValaMethod*) _tmp61_;
-                       _tmp62_ = m;
-                       vala_code_node_accept ((ValaCodeNode*) _tmp62_, (ValaCodeVisitor*) self);
+                       _tmp79_ = _m_list;
+                       _tmp80_ = _m_index;
+                       _tmp81_ = vala_list_get (_tmp79_, _tmp80_);
+                       m = (ValaMethod*) _tmp81_;
+                       _tmp82_ = m;
+                       vala_code_node_accept ((ValaCodeNode*) _tmp82_, (ValaCodeVisitor*) self);
                        _vala_code_node_unref0 (m);
                }
                _vala_iterable_unref0 (_m_list);
        }
        {
                ValaList* _c_list = NULL;
-               ValaEnum* _tmp63_ = NULL;
-               ValaList* _tmp64_ = NULL;
+               ValaEnum* _tmp83_ = NULL;
+               ValaList* _tmp84_ = NULL;
                gint _c_size = 0;
-               ValaList* _tmp65_ = NULL;
-               gint _tmp66_ = 0;
-               gint _tmp67_ = 0;
+               ValaList* _tmp85_ = NULL;
+               gint _tmp86_ = 0;
+               gint _tmp87_ = 0;
                gint _c_index = 0;
-               _tmp63_ = en;
-               _tmp64_ = vala_enum_get_constants (_tmp63_);
-               _c_list = _tmp64_;
-               _tmp65_ = _c_list;
-               _tmp66_ = vala_collection_get_size ((ValaCollection*) _tmp65_);
-               _tmp67_ = _tmp66_;
-               _c_size = _tmp67_;
+               _tmp83_ = en;
+               _tmp84_ = vala_enum_get_constants (_tmp83_);
+               _c_list = _tmp84_;
+               _tmp85_ = _c_list;
+               _tmp86_ = vala_collection_get_size ((ValaCollection*) _tmp85_);
+               _tmp87_ = _tmp86_;
+               _c_size = _tmp87_;
                _c_index = -1;
                while (TRUE) {
-                       gint _tmp68_ = 0;
-                       gint _tmp69_ = 0;
-                       gint _tmp70_ = 0;
+                       gint _tmp88_ = 0;
+                       gint _tmp89_ = 0;
+                       gint _tmp90_ = 0;
                        ValaConstant* c = NULL;
-                       ValaList* _tmp71_ = NULL;
-                       gint _tmp72_ = 0;
-                       gpointer _tmp73_ = NULL;
-                       ValaConstant* _tmp74_ = NULL;
-                       _tmp68_ = _c_index;
-                       _c_index = _tmp68_ + 1;
-                       _tmp69_ = _c_index;
-                       _tmp70_ = _c_size;
-                       if (!(_tmp69_ < _tmp70_)) {
+                       ValaList* _tmp91_ = NULL;
+                       gint _tmp92_ = 0;
+                       gpointer _tmp93_ = NULL;
+                       ValaConstant* _tmp94_ = NULL;
+                       _tmp88_ = _c_index;
+                       _c_index = _tmp88_ + 1;
+                       _tmp89_ = _c_index;
+                       _tmp90_ = _c_size;
+                       if (!(_tmp89_ < _tmp90_)) {
                                break;
                        }
-                       _tmp71_ = _c_list;
-                       _tmp72_ = _c_index;
-                       _tmp73_ = vala_list_get (_tmp71_, _tmp72_);
-                       c = (ValaConstant*) _tmp73_;
-                       _tmp74_ = c;
-                       vala_code_node_accept ((ValaCodeNode*) _tmp74_, (ValaCodeVisitor*) self);
+                       _tmp91_ = _c_list;
+                       _tmp92_ = _c_index;
+                       _tmp93_ = vala_list_get (_tmp91_, _tmp92_);
+                       c = (ValaConstant*) _tmp93_;
+                       _tmp94_ = c;
+                       vala_code_node_accept ((ValaCodeNode*) _tmp94_, (ValaCodeVisitor*) self);
                        _vala_code_node_unref0 (c);
                }
                _vala_iterable_unref0 (_c_list);
        }
-       _tmp75_ = self->priv->current_scope;
-       _tmp76_ = vala_scope_get_parent_scope (_tmp75_);
-       _tmp77_ = _tmp76_;
-       _tmp78_ = _vala_scope_ref0 (_tmp77_);
+       _tmp95_ = self->priv->current_scope;
+       _tmp96_ = vala_scope_get_parent_scope (_tmp95_);
+       _tmp97_ = _tmp96_;
+       _tmp98_ = _vala_scope_ref0 (_tmp97_);
        _vala_scope_unref0 (self->priv->current_scope);
-       self->priv->current_scope = _tmp78_;
+       self->priv->current_scope = _tmp98_;
        vala_code_writer_write_end_block (self);
        vala_code_writer_write_newline (self);
 }
@@ -3733,21 +4030,25 @@ static void vala_code_writer_real_visit_error_domain (ValaCodeVisitor* base, Val
        gboolean _tmp2_ = FALSE;
        ValaErrorDomain* _tmp3_ = NULL;
        gboolean _tmp4_ = FALSE;
-       ValaErrorDomain* _tmp5_ = NULL;
-       ValaErrorDomain* _tmp6_ = NULL;
-       ValaErrorDomain* _tmp7_ = NULL;
-       const gchar* _tmp8_ = NULL;
-       const gchar* _tmp9_ = NULL;
+       gboolean _tmp5_ = FALSE;
+       ValaCodeContext* _tmp6_ = NULL;
+       gboolean _tmp7_ = FALSE;
+       gboolean _tmp8_ = FALSE;
+       ValaErrorDomain* _tmp15_ = NULL;
+       ValaErrorDomain* _tmp16_ = NULL;
+       ValaErrorDomain* _tmp17_ = NULL;
+       const gchar* _tmp18_ = NULL;
+       const gchar* _tmp19_ = NULL;
        gboolean first = FALSE;
-       gboolean _tmp26_ = FALSE;
-       ValaErrorDomain* _tmp33_ = NULL;
-       ValaScope* _tmp34_ = NULL;
-       ValaScope* _tmp35_ = NULL;
-       ValaScope* _tmp36_ = NULL;
-       ValaScope* _tmp49_ = NULL;
-       ValaScope* _tmp50_ = NULL;
-       ValaScope* _tmp51_ = NULL;
-       ValaScope* _tmp52_ = NULL;
+       gboolean _tmp46_ = FALSE;
+       ValaErrorDomain* _tmp53_ = NULL;
+       ValaScope* _tmp54_ = NULL;
+       ValaScope* _tmp55_ = NULL;
+       ValaScope* _tmp56_ = NULL;
+       ValaScope* _tmp69_ = NULL;
+       ValaScope* _tmp70_ = NULL;
+       ValaScope* _tmp71_ = NULL;
+       ValaScope* _tmp72_ = NULL;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (edomain != NULL);
        _tmp0_ = edomain;
@@ -3761,152 +4062,202 @@ static void vala_code_writer_real_visit_error_domain (ValaCodeVisitor* base, Val
        if (!_tmp4_) {
                return;
        }
-       _tmp5_ = edomain;
-       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp5_);
+       _tmp6_ = self->priv->context;
+       _tmp7_ = vala_code_context_get_vapi_comments (_tmp6_);
+       _tmp8_ = _tmp7_;
+       if (_tmp8_) {
+               ValaErrorDomain* _tmp9_ = NULL;
+               ValaComment* _tmp10_ = NULL;
+               ValaComment* _tmp11_ = NULL;
+               _tmp9_ = edomain;
+               _tmp10_ = vala_symbol_get_comment ((ValaSymbol*) _tmp9_);
+               _tmp11_ = _tmp10_;
+               _tmp5_ = _tmp11_ != NULL;
+       } else {
+               _tmp5_ = FALSE;
+       }
+       if (_tmp5_) {
+               ValaErrorDomain* _tmp12_ = NULL;
+               ValaComment* _tmp13_ = NULL;
+               ValaComment* _tmp14_ = NULL;
+               _tmp12_ = edomain;
+               _tmp13_ = vala_symbol_get_comment ((ValaSymbol*) _tmp12_);
+               _tmp14_ = _tmp13_;
+               vala_code_writer_write_comment (self, _tmp14_);
+       }
+       _tmp15_ = edomain;
+       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp15_);
        vala_code_writer_write_indent (self);
-       _tmp6_ = edomain;
-       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp6_);
+       _tmp16_ = edomain;
+       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp16_);
        vala_code_writer_write_string (self, "errordomain ");
-       _tmp7_ = edomain;
-       _tmp8_ = vala_symbol_get_name ((ValaSymbol*) _tmp7_);
-       _tmp9_ = _tmp8_;
-       vala_code_writer_write_identifier (self, _tmp9_);
+       _tmp17_ = edomain;
+       _tmp18_ = vala_symbol_get_name ((ValaSymbol*) _tmp17_);
+       _tmp19_ = _tmp18_;
+       vala_code_writer_write_identifier (self, _tmp19_);
        vala_code_writer_write_begin_block (self);
        first = TRUE;
        {
                ValaList* _ecode_list = NULL;
-               ValaErrorDomain* _tmp10_ = NULL;
-               ValaList* _tmp11_ = NULL;
+               ValaErrorDomain* _tmp20_ = NULL;
+               ValaList* _tmp21_ = NULL;
                gint _ecode_size = 0;
-               ValaList* _tmp12_ = NULL;
-               gint _tmp13_ = 0;
-               gint _tmp14_ = 0;
+               ValaList* _tmp22_ = NULL;
+               gint _tmp23_ = 0;
+               gint _tmp24_ = 0;
                gint _ecode_index = 0;
-               _tmp10_ = edomain;
-               _tmp11_ = vala_error_domain_get_codes (_tmp10_);
-               _ecode_list = _tmp11_;
-               _tmp12_ = _ecode_list;
-               _tmp13_ = vala_collection_get_size ((ValaCollection*) _tmp12_);
-               _tmp14_ = _tmp13_;
-               _ecode_size = _tmp14_;
+               _tmp20_ = edomain;
+               _tmp21_ = vala_error_domain_get_codes (_tmp20_);
+               _ecode_list = _tmp21_;
+               _tmp22_ = _ecode_list;
+               _tmp23_ = vala_collection_get_size ((ValaCollection*) _tmp22_);
+               _tmp24_ = _tmp23_;
+               _ecode_size = _tmp24_;
                _ecode_index = -1;
                while (TRUE) {
-                       gint _tmp15_ = 0;
-                       gint _tmp16_ = 0;
-                       gint _tmp17_ = 0;
+                       gint _tmp25_ = 0;
+                       gint _tmp26_ = 0;
+                       gint _tmp27_ = 0;
                        ValaErrorCode* ecode = NULL;
-                       ValaList* _tmp18_ = NULL;
-                       gint _tmp19_ = 0;
-                       gpointer _tmp20_ = NULL;
-                       gboolean _tmp21_ = FALSE;
-                       ValaErrorCode* _tmp22_ = NULL;
-                       ValaErrorCode* _tmp23_ = NULL;
-                       const gchar* _tmp24_ = NULL;
-                       const gchar* _tmp25_ = NULL;
-                       _tmp15_ = _ecode_index;
-                       _ecode_index = _tmp15_ + 1;
-                       _tmp16_ = _ecode_index;
-                       _tmp17_ = _ecode_size;
-                       if (!(_tmp16_ < _tmp17_)) {
+                       ValaList* _tmp28_ = NULL;
+                       gint _tmp29_ = 0;
+                       gpointer _tmp30_ = NULL;
+                       gboolean _tmp31_ = FALSE;
+                       gboolean _tmp32_ = FALSE;
+                       ValaCodeContext* _tmp33_ = NULL;
+                       gboolean _tmp34_ = FALSE;
+                       gboolean _tmp35_ = FALSE;
+                       ValaErrorCode* _tmp42_ = NULL;
+                       ValaErrorCode* _tmp43_ = NULL;
+                       const gchar* _tmp44_ = NULL;
+                       const gchar* _tmp45_ = NULL;
+                       _tmp25_ = _ecode_index;
+                       _ecode_index = _tmp25_ + 1;
+                       _tmp26_ = _ecode_index;
+                       _tmp27_ = _ecode_size;
+                       if (!(_tmp26_ < _tmp27_)) {
                                break;
                        }
-                       _tmp18_ = _ecode_list;
-                       _tmp19_ = _ecode_index;
-                       _tmp20_ = vala_list_get (_tmp18_, _tmp19_);
-                       ecode = (ValaErrorCode*) _tmp20_;
-                       _tmp21_ = first;
-                       if (_tmp21_) {
+                       _tmp28_ = _ecode_list;
+                       _tmp29_ = _ecode_index;
+                       _tmp30_ = vala_list_get (_tmp28_, _tmp29_);
+                       ecode = (ValaErrorCode*) _tmp30_;
+                       _tmp31_ = first;
+                       if (_tmp31_) {
                                first = FALSE;
                        } else {
                                vala_code_writer_write_string (self, ",");
                                vala_code_writer_write_newline (self);
                        }
-                       _tmp22_ = ecode;
-                       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp22_);
+                       _tmp33_ = self->priv->context;
+                       _tmp34_ = vala_code_context_get_vapi_comments (_tmp33_);
+                       _tmp35_ = _tmp34_;
+                       if (_tmp35_) {
+                               ValaErrorCode* _tmp36_ = NULL;
+                               ValaComment* _tmp37_ = NULL;
+                               ValaComment* _tmp38_ = NULL;
+                               _tmp36_ = ecode;
+                               _tmp37_ = vala_symbol_get_comment ((ValaSymbol*) _tmp36_);
+                               _tmp38_ = _tmp37_;
+                               _tmp32_ = _tmp38_ != NULL;
+                       } else {
+                               _tmp32_ = FALSE;
+                       }
+                       if (_tmp32_) {
+                               ValaErrorCode* _tmp39_ = NULL;
+                               ValaComment* _tmp40_ = NULL;
+                               ValaComment* _tmp41_ = NULL;
+                               _tmp39_ = ecode;
+                               _tmp40_ = vala_symbol_get_comment ((ValaSymbol*) _tmp39_);
+                               _tmp41_ = _tmp40_;
+                               vala_code_writer_write_comment (self, _tmp41_);
+                       }
+                       _tmp42_ = ecode;
+                       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp42_);
                        vala_code_writer_write_indent (self);
-                       _tmp23_ = ecode;
-                       _tmp24_ = vala_symbol_get_name ((ValaSymbol*) _tmp23_);
-                       _tmp25_ = _tmp24_;
-                       vala_code_writer_write_identifier (self, _tmp25_);
+                       _tmp43_ = ecode;
+                       _tmp44_ = vala_symbol_get_name ((ValaSymbol*) _tmp43_);
+                       _tmp45_ = _tmp44_;
+                       vala_code_writer_write_identifier (self, _tmp45_);
                        _vala_code_node_unref0 (ecode);
                }
                _vala_iterable_unref0 (_ecode_list);
        }
-       _tmp26_ = first;
-       if (!_tmp26_) {
-               ValaErrorDomain* _tmp27_ = NULL;
-               ValaList* _tmp28_ = NULL;
-               ValaList* _tmp29_ = NULL;
-               gint _tmp30_ = 0;
-               gint _tmp31_ = 0;
-               gboolean _tmp32_ = FALSE;
-               _tmp27_ = edomain;
-               _tmp28_ = vala_error_domain_get_methods (_tmp27_);
-               _tmp29_ = _tmp28_;
-               _tmp30_ = vala_collection_get_size ((ValaCollection*) _tmp29_);
-               _tmp31_ = _tmp30_;
-               _tmp32_ = _tmp31_ > 0;
-               _vala_iterable_unref0 (_tmp29_);
-               if (_tmp32_) {
+       _tmp46_ = first;
+       if (!_tmp46_) {
+               ValaErrorDomain* _tmp47_ = NULL;
+               ValaList* _tmp48_ = NULL;
+               ValaList* _tmp49_ = NULL;
+               gint _tmp50_ = 0;
+               gint _tmp51_ = 0;
+               gboolean _tmp52_ = FALSE;
+               _tmp47_ = edomain;
+               _tmp48_ = vala_error_domain_get_methods (_tmp47_);
+               _tmp49_ = _tmp48_;
+               _tmp50_ = vala_collection_get_size ((ValaCollection*) _tmp49_);
+               _tmp51_ = _tmp50_;
+               _tmp52_ = _tmp51_ > 0;
+               _vala_iterable_unref0 (_tmp49_);
+               if (_tmp52_) {
                        vala_code_writer_write_string (self, ";");
                }
                vala_code_writer_write_newline (self);
        }
-       _tmp33_ = edomain;
-       _tmp34_ = vala_symbol_get_scope ((ValaSymbol*) _tmp33_);
-       _tmp35_ = _tmp34_;
-       _tmp36_ = _vala_scope_ref0 (_tmp35_);
+       _tmp53_ = edomain;
+       _tmp54_ = vala_symbol_get_scope ((ValaSymbol*) _tmp53_);
+       _tmp55_ = _tmp54_;
+       _tmp56_ = _vala_scope_ref0 (_tmp55_);
        _vala_scope_unref0 (self->priv->current_scope);
-       self->priv->current_scope = _tmp36_;
+       self->priv->current_scope = _tmp56_;
        {
                ValaList* _m_list = NULL;
-               ValaErrorDomain* _tmp37_ = NULL;
-               ValaList* _tmp38_ = NULL;
+               ValaErrorDomain* _tmp57_ = NULL;
+               ValaList* _tmp58_ = NULL;
                gint _m_size = 0;
-               ValaList* _tmp39_ = NULL;
-               gint _tmp40_ = 0;
-               gint _tmp41_ = 0;
+               ValaList* _tmp59_ = NULL;
+               gint _tmp60_ = 0;
+               gint _tmp61_ = 0;
                gint _m_index = 0;
-               _tmp37_ = edomain;
-               _tmp38_ = vala_error_domain_get_methods (_tmp37_);
-               _m_list = _tmp38_;
-               _tmp39_ = _m_list;
-               _tmp40_ = vala_collection_get_size ((ValaCollection*) _tmp39_);
-               _tmp41_ = _tmp40_;
-               _m_size = _tmp41_;
+               _tmp57_ = edomain;
+               _tmp58_ = vala_error_domain_get_methods (_tmp57_);
+               _m_list = _tmp58_;
+               _tmp59_ = _m_list;
+               _tmp60_ = vala_collection_get_size ((ValaCollection*) _tmp59_);
+               _tmp61_ = _tmp60_;
+               _m_size = _tmp61_;
                _m_index = -1;
                while (TRUE) {
-                       gint _tmp42_ = 0;
-                       gint _tmp43_ = 0;
-                       gint _tmp44_ = 0;
+                       gint _tmp62_ = 0;
+                       gint _tmp63_ = 0;
+                       gint _tmp64_ = 0;
                        ValaMethod* m = NULL;
-                       ValaList* _tmp45_ = NULL;
-                       gint _tmp46_ = 0;
-                       gpointer _tmp47_ = NULL;
-                       ValaMethod* _tmp48_ = NULL;
-                       _tmp42_ = _m_index;
-                       _m_index = _tmp42_ + 1;
-                       _tmp43_ = _m_index;
-                       _tmp44_ = _m_size;
-                       if (!(_tmp43_ < _tmp44_)) {
+                       ValaList* _tmp65_ = NULL;
+                       gint _tmp66_ = 0;
+                       gpointer _tmp67_ = NULL;
+                       ValaMethod* _tmp68_ = NULL;
+                       _tmp62_ = _m_index;
+                       _m_index = _tmp62_ + 1;
+                       _tmp63_ = _m_index;
+                       _tmp64_ = _m_size;
+                       if (!(_tmp63_ < _tmp64_)) {
                                break;
                        }
-                       _tmp45_ = _m_list;
-                       _tmp46_ = _m_index;
-                       _tmp47_ = vala_list_get (_tmp45_, _tmp46_);
-                       m = (ValaMethod*) _tmp47_;
-                       _tmp48_ = m;
-                       vala_code_node_accept ((ValaCodeNode*) _tmp48_, (ValaCodeVisitor*) self);
+                       _tmp65_ = _m_list;
+                       _tmp66_ = _m_index;
+                       _tmp67_ = vala_list_get (_tmp65_, _tmp66_);
+                       m = (ValaMethod*) _tmp67_;
+                       _tmp68_ = m;
+                       vala_code_node_accept ((ValaCodeNode*) _tmp68_, (ValaCodeVisitor*) self);
                        _vala_code_node_unref0 (m);
                }
                _vala_iterable_unref0 (_m_list);
        }
-       _tmp49_ = self->priv->current_scope;
-       _tmp50_ = vala_scope_get_parent_scope (_tmp49_);
-       _tmp51_ = _tmp50_;
-       _tmp52_ = _vala_scope_ref0 (_tmp51_);
+       _tmp69_ = self->priv->current_scope;
+       _tmp70_ = vala_scope_get_parent_scope (_tmp69_);
+       _tmp71_ = _tmp70_;
+       _tmp72_ = _vala_scope_ref0 (_tmp71_);
        _vala_scope_unref0 (self->priv->current_scope);
-       self->priv->current_scope = _tmp52_;
+       self->priv->current_scope = _tmp72_;
        vala_code_writer_write_end_block (self);
        vala_code_writer_write_newline (self);
 }
@@ -3919,19 +4270,23 @@ static void vala_code_writer_real_visit_constant (ValaCodeVisitor* base, ValaCon
        gboolean _tmp2_ = FALSE;
        ValaConstant* _tmp3_ = NULL;
        gboolean _tmp4_ = FALSE;
-       ValaConstant* _tmp5_ = NULL;
-       ValaConstant* _tmp6_ = NULL;
-       ValaConstant* _tmp7_ = NULL;
-       ValaDataType* _tmp8_ = NULL;
-       ValaDataType* _tmp9_ = NULL;
-       ValaConstant* _tmp10_ = NULL;
-       const gchar* _tmp11_ = NULL;
-       const gchar* _tmp12_ = NULL;
-       ValaConstant* _tmp13_ = NULL;
-       ValaDataType* _tmp14_ = NULL;
-       ValaDataType* _tmp15_ = NULL;
-       gboolean _tmp16_ = FALSE;
-       ValaCodeWriterType _tmp17_ = 0;
+       gboolean _tmp5_ = FALSE;
+       ValaCodeContext* _tmp6_ = NULL;
+       gboolean _tmp7_ = FALSE;
+       gboolean _tmp8_ = FALSE;
+       ValaConstant* _tmp15_ = NULL;
+       ValaConstant* _tmp16_ = NULL;
+       ValaConstant* _tmp17_ = NULL;
+       ValaDataType* _tmp18_ = NULL;
+       ValaDataType* _tmp19_ = NULL;
+       ValaConstant* _tmp20_ = NULL;
+       const gchar* _tmp21_ = NULL;
+       const gchar* _tmp22_ = NULL;
+       ValaConstant* _tmp23_ = NULL;
+       ValaDataType* _tmp24_ = NULL;
+       ValaDataType* _tmp25_ = NULL;
+       gboolean _tmp26_ = FALSE;
+       ValaCodeWriterType _tmp27_ = 0;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (c != NULL);
        _tmp0_ = c;
@@ -3945,46 +4300,69 @@ static void vala_code_writer_real_visit_constant (ValaCodeVisitor* base, ValaCon
        if (!_tmp4_) {
                return;
        }
-       _tmp5_ = c;
-       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp5_);
+       _tmp6_ = self->priv->context;
+       _tmp7_ = vala_code_context_get_vapi_comments (_tmp6_);
+       _tmp8_ = _tmp7_;
+       if (_tmp8_) {
+               ValaConstant* _tmp9_ = NULL;
+               ValaComment* _tmp10_ = NULL;
+               ValaComment* _tmp11_ = NULL;
+               _tmp9_ = c;
+               _tmp10_ = vala_symbol_get_comment ((ValaSymbol*) _tmp9_);
+               _tmp11_ = _tmp10_;
+               _tmp5_ = _tmp11_ != NULL;
+       } else {
+               _tmp5_ = FALSE;
+       }
+       if (_tmp5_) {
+               ValaConstant* _tmp12_ = NULL;
+               ValaComment* _tmp13_ = NULL;
+               ValaComment* _tmp14_ = NULL;
+               _tmp12_ = c;
+               _tmp13_ = vala_symbol_get_comment ((ValaSymbol*) _tmp12_);
+               _tmp14_ = _tmp13_;
+               vala_code_writer_write_comment (self, _tmp14_);
+       }
+       _tmp15_ = c;
+       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp15_);
        vala_code_writer_write_indent (self);
-       _tmp6_ = c;
-       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp6_);
+       _tmp16_ = c;
+       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp16_);
        vala_code_writer_write_string (self, "const ");
-       _tmp7_ = c;
-       _tmp8_ = vala_constant_get_type_reference (_tmp7_);
-       _tmp9_ = _tmp8_;
-       vala_code_writer_write_type (self, _tmp9_);
+       _tmp17_ = c;
+       _tmp18_ = vala_constant_get_type_reference (_tmp17_);
+       _tmp19_ = _tmp18_;
+       vala_code_writer_write_type (self, _tmp19_);
        vala_code_writer_write_string (self, " ");
-       _tmp10_ = c;
-       _tmp11_ = vala_symbol_get_name ((ValaSymbol*) _tmp10_);
-       _tmp12_ = _tmp11_;
-       vala_code_writer_write_identifier (self, _tmp12_);
-       _tmp13_ = c;
-       _tmp14_ = vala_constant_get_type_reference (_tmp13_);
-       _tmp15_ = _tmp14_;
-       vala_code_writer_write_type_suffix (self, _tmp15_);
-       _tmp17_ = self->priv->type;
-       if (_tmp17_ == VALA_CODE_WRITER_TYPE_FAST) {
-               ValaConstant* _tmp18_ = NULL;
-               ValaExpression* _tmp19_ = NULL;
-               ValaExpression* _tmp20_ = NULL;
-               _tmp18_ = c;
-               _tmp19_ = vala_constant_get_value (_tmp18_);
-               _tmp20_ = _tmp19_;
-               _tmp16_ = _tmp20_ != NULL;
+       _tmp20_ = c;
+       _tmp21_ = vala_symbol_get_name ((ValaSymbol*) _tmp20_);
+       _tmp22_ = _tmp21_;
+       vala_code_writer_write_identifier (self, _tmp22_);
+       _tmp23_ = c;
+       _tmp24_ = vala_constant_get_type_reference (_tmp23_);
+       _tmp25_ = _tmp24_;
+       vala_code_writer_write_type_suffix (self, _tmp25_);
+       _tmp27_ = self->priv->type;
+       if (_tmp27_ == VALA_CODE_WRITER_TYPE_FAST) {
+               ValaConstant* _tmp28_ = NULL;
+               ValaExpression* _tmp29_ = NULL;
+               ValaExpression* _tmp30_ = NULL;
+               _tmp28_ = c;
+               _tmp29_ = vala_constant_get_value (_tmp28_);
+               _tmp30_ = _tmp29_;
+               _tmp26_ = _tmp30_ != NULL;
        } else {
-               _tmp16_ = FALSE;
+               _tmp26_ = FALSE;
        }
-       if (_tmp16_) {
-               ValaConstant* _tmp21_ = NULL;
-               ValaExpression* _tmp22_ = NULL;
-               ValaExpression* _tmp23_ = NULL;
+       if (_tmp26_) {
+               ValaConstant* _tmp31_ = NULL;
+               ValaExpression* _tmp32_ = NULL;
+               ValaExpression* _tmp33_ = NULL;
                vala_code_writer_write_string (self, " = ");
-               _tmp21_ = c;
-               _tmp22_ = vala_constant_get_value (_tmp21_);
-               _tmp23_ = _tmp22_;
-               vala_code_node_accept ((ValaCodeNode*) _tmp23_, (ValaCodeVisitor*) self);
+               _tmp31_ = c;
+               _tmp32_ = vala_constant_get_value (_tmp31_);
+               _tmp33_ = _tmp32_;
+               vala_code_node_accept ((ValaCodeNode*) _tmp33_, (ValaCodeVisitor*) self);
        }
        vala_code_writer_write_string (self, ";");
        vala_code_writer_write_newline (self);
@@ -3998,24 +4376,28 @@ static void vala_code_writer_real_visit_field (ValaCodeVisitor* base, ValaField*
        gboolean _tmp2_ = FALSE;
        ValaField* _tmp3_ = NULL;
        gboolean _tmp4_ = FALSE;
-       ValaField* _tmp5_ = NULL;
-       ValaField* _tmp6_ = NULL;
-       ValaField* _tmp7_ = NULL;
-       ValaMemberBinding _tmp8_ = 0;
-       ValaMemberBinding _tmp9_ = 0;
-       ValaField* _tmp13_ = NULL;
-       ValaDataType* _tmp14_ = NULL;
-       ValaDataType* _tmp15_ = NULL;
-       gboolean _tmp16_ = FALSE;
+       gboolean _tmp5_ = FALSE;
+       ValaCodeContext* _tmp6_ = NULL;
+       gboolean _tmp7_ = FALSE;
+       gboolean _tmp8_ = FALSE;
+       ValaField* _tmp15_ = NULL;
+       ValaField* _tmp16_ = NULL;
        ValaField* _tmp17_ = NULL;
-       ValaDataType* _tmp18_ = NULL;
-       ValaDataType* _tmp19_ = NULL;
-       ValaField* _tmp20_ = NULL;
-       const gchar* _tmp21_ = NULL;
-       const gchar* _tmp22_ = NULL;
+       ValaMemberBinding _tmp18_ = 0;
+       ValaMemberBinding _tmp19_ = 0;
        ValaField* _tmp23_ = NULL;
        ValaDataType* _tmp24_ = NULL;
        ValaDataType* _tmp25_ = NULL;
+       gboolean _tmp26_ = FALSE;
+       ValaField* _tmp27_ = NULL;
+       ValaDataType* _tmp28_ = NULL;
+       ValaDataType* _tmp29_ = NULL;
+       ValaField* _tmp30_ = NULL;
+       const gchar* _tmp31_ = NULL;
+       const gchar* _tmp32_ = NULL;
+       ValaField* _tmp33_ = NULL;
+       ValaDataType* _tmp34_ = NULL;
+       ValaDataType* _tmp35_ = NULL;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (f != NULL);
        _tmp0_ = f;
@@ -4029,47 +4411,70 @@ static void vala_code_writer_real_visit_field (ValaCodeVisitor* base, ValaField*
        if (!_tmp4_) {
                return;
        }
-       _tmp5_ = f;
-       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp5_);
+       _tmp6_ = self->priv->context;
+       _tmp7_ = vala_code_context_get_vapi_comments (_tmp6_);
+       _tmp8_ = _tmp7_;
+       if (_tmp8_) {
+               ValaField* _tmp9_ = NULL;
+               ValaComment* _tmp10_ = NULL;
+               ValaComment* _tmp11_ = NULL;
+               _tmp9_ = f;
+               _tmp10_ = vala_symbol_get_comment ((ValaSymbol*) _tmp9_);
+               _tmp11_ = _tmp10_;
+               _tmp5_ = _tmp11_ != NULL;
+       } else {
+               _tmp5_ = FALSE;
+       }
+       if (_tmp5_) {
+               ValaField* _tmp12_ = NULL;
+               ValaComment* _tmp13_ = NULL;
+               ValaComment* _tmp14_ = NULL;
+               _tmp12_ = f;
+               _tmp13_ = vala_symbol_get_comment ((ValaSymbol*) _tmp12_);
+               _tmp14_ = _tmp13_;
+               vala_code_writer_write_comment (self, _tmp14_);
+       }
+       _tmp15_ = f;
+       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp15_);
        vala_code_writer_write_indent (self);
-       _tmp6_ = f;
-       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp6_);
-       _tmp7_ = f;
-       _tmp8_ = vala_field_get_binding (_tmp7_);
-       _tmp9_ = _tmp8_;
-       if (_tmp9_ == VALA_MEMBER_BINDING_STATIC) {
+       _tmp16_ = f;
+       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp16_);
+       _tmp17_ = f;
+       _tmp18_ = vala_field_get_binding (_tmp17_);
+       _tmp19_ = _tmp18_;
+       if (_tmp19_ == VALA_MEMBER_BINDING_STATIC) {
                vala_code_writer_write_string (self, "static ");
        } else {
-               ValaField* _tmp10_ = NULL;
-               ValaMemberBinding _tmp11_ = 0;
-               ValaMemberBinding _tmp12_ = 0;
-               _tmp10_ = f;
-               _tmp11_ = vala_field_get_binding (_tmp10_);
-               _tmp12_ = _tmp11_;
-               if (_tmp12_ == VALA_MEMBER_BINDING_CLASS) {
+               ValaField* _tmp20_ = NULL;
+               ValaMemberBinding _tmp21_ = 0;
+               ValaMemberBinding _tmp22_ = 0;
+               _tmp20_ = f;
+               _tmp21_ = vala_field_get_binding (_tmp20_);
+               _tmp22_ = _tmp21_;
+               if (_tmp22_ == VALA_MEMBER_BINDING_CLASS) {
                        vala_code_writer_write_string (self, "class ");
                }
        }
-       _tmp13_ = f;
-       _tmp14_ = vala_variable_get_variable_type ((ValaVariable*) _tmp13_);
-       _tmp15_ = _tmp14_;
-       _tmp16_ = vala_data_type_is_weak (_tmp15_);
-       if (_tmp16_) {
-               vala_code_writer_write_string (self, "weak ");
-       }
-       _tmp17_ = f;
-       _tmp18_ = vala_variable_get_variable_type ((ValaVariable*) _tmp17_);
-       _tmp19_ = _tmp18_;
-       vala_code_writer_write_type (self, _tmp19_);
-       vala_code_writer_write_string (self, " ");
-       _tmp20_ = f;
-       _tmp21_ = vala_symbol_get_name ((ValaSymbol*) _tmp20_);
-       _tmp22_ = _tmp21_;
-       vala_code_writer_write_identifier (self, _tmp22_);
        _tmp23_ = f;
        _tmp24_ = vala_variable_get_variable_type ((ValaVariable*) _tmp23_);
        _tmp25_ = _tmp24_;
-       vala_code_writer_write_type_suffix (self, _tmp25_);
+       _tmp26_ = vala_data_type_is_weak (_tmp25_);
+       if (_tmp26_) {
+               vala_code_writer_write_string (self, "weak ");
+       }
+       _tmp27_ = f;
+       _tmp28_ = vala_variable_get_variable_type ((ValaVariable*) _tmp27_);
+       _tmp29_ = _tmp28_;
+       vala_code_writer_write_type (self, _tmp29_);
+       vala_code_writer_write_string (self, " ");
+       _tmp30_ = f;
+       _tmp31_ = vala_symbol_get_name ((ValaSymbol*) _tmp30_);
+       _tmp32_ = _tmp31_;
+       vala_code_writer_write_identifier (self, _tmp32_);
+       _tmp33_ = f;
+       _tmp34_ = vala_variable_get_variable_type ((ValaVariable*) _tmp33_);
+       _tmp35_ = _tmp34_;
+       vala_code_writer_write_type_suffix (self, _tmp35_);
        vala_code_writer_write_string (self, ";");
        vala_code_writer_write_newline (self);
 }
@@ -4320,23 +4725,27 @@ static void vala_code_writer_real_visit_delegate (ValaCodeVisitor* base, ValaDel
        gboolean _tmp2_ = FALSE;
        ValaDelegate* _tmp3_ = NULL;
        gboolean _tmp4_ = FALSE;
-       ValaDelegate* _tmp5_ = NULL;
-       ValaDelegate* _tmp6_ = NULL;
-       ValaDelegate* _tmp7_ = NULL;
-       ValaDataType* _tmp8_ = NULL;
-       ValaDataType* _tmp9_ = NULL;
-       ValaDelegate* _tmp10_ = NULL;
-       const gchar* _tmp11_ = NULL;
-       const gchar* _tmp12_ = NULL;
-       ValaDelegate* _tmp13_ = NULL;
-       ValaList* _tmp14_ = NULL;
-       ValaList* _tmp15_ = NULL;
+       gboolean _tmp5_ = FALSE;
+       ValaCodeContext* _tmp6_ = NULL;
+       gboolean _tmp7_ = FALSE;
+       gboolean _tmp8_ = FALSE;
+       ValaDelegate* _tmp15_ = NULL;
        ValaDelegate* _tmp16_ = NULL;
-       ValaList* _tmp17_ = NULL;
-       ValaList* _tmp18_ = NULL;
-       ValaDelegate* _tmp19_ = NULL;
-       ValaList* _tmp20_ = NULL;
-       ValaList* _tmp21_ = NULL;
+       ValaDelegate* _tmp17_ = NULL;
+       ValaDataType* _tmp18_ = NULL;
+       ValaDataType* _tmp19_ = NULL;
+       ValaDelegate* _tmp20_ = NULL;
+       const gchar* _tmp21_ = NULL;
+       const gchar* _tmp22_ = NULL;
+       ValaDelegate* _tmp23_ = NULL;
+       ValaList* _tmp24_ = NULL;
+       ValaList* _tmp25_ = NULL;
+       ValaDelegate* _tmp26_ = NULL;
+       ValaList* _tmp27_ = NULL;
+       ValaList* _tmp28_ = NULL;
+       ValaDelegate* _tmp29_ = NULL;
+       ValaList* _tmp30_ = NULL;
+       ValaList* _tmp31_ = NULL;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (cb != NULL);
        _tmp0_ = cb;
@@ -4350,37 +4759,60 @@ static void vala_code_writer_real_visit_delegate (ValaCodeVisitor* base, ValaDel
        if (!_tmp4_) {
                return;
        }
-       _tmp5_ = cb;
-       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp5_);
+       _tmp6_ = self->priv->context;
+       _tmp7_ = vala_code_context_get_vapi_comments (_tmp6_);
+       _tmp8_ = _tmp7_;
+       if (_tmp8_) {
+               ValaDelegate* _tmp9_ = NULL;
+               ValaComment* _tmp10_ = NULL;
+               ValaComment* _tmp11_ = NULL;
+               _tmp9_ = cb;
+               _tmp10_ = vala_symbol_get_comment ((ValaSymbol*) _tmp9_);
+               _tmp11_ = _tmp10_;
+               _tmp5_ = _tmp11_ != NULL;
+       } else {
+               _tmp5_ = FALSE;
+       }
+       if (_tmp5_) {
+               ValaDelegate* _tmp12_ = NULL;
+               ValaComment* _tmp13_ = NULL;
+               ValaComment* _tmp14_ = NULL;
+               _tmp12_ = cb;
+               _tmp13_ = vala_symbol_get_comment ((ValaSymbol*) _tmp12_);
+               _tmp14_ = _tmp13_;
+               vala_code_writer_write_comment (self, _tmp14_);
+       }
+       _tmp15_ = cb;
+       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp15_);
        vala_code_writer_write_indent (self);
-       _tmp6_ = cb;
-       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp6_);
+       _tmp16_ = cb;
+       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp16_);
        vala_code_writer_write_string (self, "delegate ");
-       _tmp7_ = cb;
-       _tmp8_ = vala_delegate_get_return_type (_tmp7_);
-       _tmp9_ = _tmp8_;
-       vala_code_writer_write_return_type (self, _tmp9_);
+       _tmp17_ = cb;
+       _tmp18_ = vala_delegate_get_return_type (_tmp17_);
+       _tmp19_ = _tmp18_;
+       vala_code_writer_write_return_type (self, _tmp19_);
        vala_code_writer_write_string (self, " ");
-       _tmp10_ = cb;
-       _tmp11_ = vala_symbol_get_name ((ValaSymbol*) _tmp10_);
-       _tmp12_ = _tmp11_;
-       vala_code_writer_write_identifier (self, _tmp12_);
-       _tmp13_ = cb;
-       _tmp14_ = vala_delegate_get_type_parameters (_tmp13_);
-       _tmp15_ = _tmp14_;
-       vala_code_writer_write_type_parameters (self, _tmp15_);
-       _vala_iterable_unref0 (_tmp15_);
+       _tmp20_ = cb;
+       _tmp21_ = vala_symbol_get_name ((ValaSymbol*) _tmp20_);
+       _tmp22_ = _tmp21_;
+       vala_code_writer_write_identifier (self, _tmp22_);
+       _tmp23_ = cb;
+       _tmp24_ = vala_delegate_get_type_parameters (_tmp23_);
+       _tmp25_ = _tmp24_;
+       vala_code_writer_write_type_parameters (self, _tmp25_);
+       _vala_iterable_unref0 (_tmp25_);
        vala_code_writer_write_string (self, " ");
-       _tmp16_ = cb;
-       _tmp17_ = vala_delegate_get_parameters (_tmp16_);
-       _tmp18_ = _tmp17_;
-       vala_code_writer_write_params (self, _tmp18_);
-       _vala_iterable_unref0 (_tmp18_);
-       _tmp19_ = cb;
-       _tmp20_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp19_);
-       _tmp21_ = _tmp20_;
-       vala_code_writer_write_error_domains (self, _tmp21_);
-       _vala_iterable_unref0 (_tmp21_);
+       _tmp26_ = cb;
+       _tmp27_ = vala_delegate_get_parameters (_tmp26_);
+       _tmp28_ = _tmp27_;
+       vala_code_writer_write_params (self, _tmp28_);
+       _vala_iterable_unref0 (_tmp28_);
+       _tmp29_ = cb;
+       _tmp30_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp29_);
+       _tmp31_ = _tmp30_;
+       vala_code_writer_write_error_domains (self, _tmp31_);
+       _vala_iterable_unref0 (_tmp31_);
        vala_code_writer_write_string (self, ";");
        vala_code_writer_write_newline (self);
 }
@@ -4389,21 +4821,48 @@ static void vala_code_writer_real_visit_delegate (ValaCodeVisitor* base, ValaDel
 static void vala_code_writer_real_visit_constructor (ValaCodeVisitor* base, ValaConstructor* c) {
        ValaCodeWriter * self;
        ValaCodeWriterType _tmp0_ = 0;
-       ValaConstructor* _tmp1_ = NULL;
-       ValaBlock* _tmp2_ = NULL;
-       ValaBlock* _tmp3_ = NULL;
+       gboolean _tmp1_ = FALSE;
+       ValaCodeContext* _tmp2_ = NULL;
+       gboolean _tmp3_ = FALSE;
+       gboolean _tmp4_ = FALSE;
+       ValaConstructor* _tmp11_ = NULL;
+       ValaBlock* _tmp12_ = NULL;
+       ValaBlock* _tmp13_ = NULL;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (c != NULL);
        _tmp0_ = self->priv->type;
        if (_tmp0_ != VALA_CODE_WRITER_TYPE_DUMP) {
                return;
        }
+       _tmp2_ = self->priv->context;
+       _tmp3_ = vala_code_context_get_vapi_comments (_tmp2_);
+       _tmp4_ = _tmp3_;
+       if (_tmp4_) {
+               ValaConstructor* _tmp5_ = NULL;
+               ValaComment* _tmp6_ = NULL;
+               ValaComment* _tmp7_ = NULL;
+               _tmp5_ = c;
+               _tmp6_ = vala_symbol_get_comment ((ValaSymbol*) _tmp5_);
+               _tmp7_ = _tmp6_;
+               _tmp1_ = _tmp7_ != NULL;
+       } else {
+               _tmp1_ = FALSE;
+       }
+       if (_tmp1_) {
+               ValaConstructor* _tmp8_ = NULL;
+               ValaComment* _tmp9_ = NULL;
+               ValaComment* _tmp10_ = NULL;
+               _tmp8_ = c;
+               _tmp9_ = vala_symbol_get_comment ((ValaSymbol*) _tmp8_);
+               _tmp10_ = _tmp9_;
+               vala_code_writer_write_comment (self, _tmp10_);
+       }
        vala_code_writer_write_indent (self);
        vala_code_writer_write_string (self, "construct");
-       _tmp1_ = c;
-       _tmp2_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp1_);
-       _tmp3_ = _tmp2_;
-       vala_code_writer_write_code_block (self, _tmp3_);
+       _tmp11_ = c;
+       _tmp12_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp11_);
+       _tmp13_ = _tmp12_;
+       vala_code_writer_write_code_block (self, _tmp13_);
        vala_code_writer_write_newline (self);
 }
 
@@ -4416,18 +4875,22 @@ static void vala_code_writer_real_visit_method (ValaCodeVisitor* base, ValaMetho
        gboolean _tmp3_ = FALSE;
        ValaMethod* _tmp4_ = NULL;
        gboolean _tmp5_ = FALSE;
-       ValaMethod* _tmp18_ = NULL;
-       ValaMethod* _tmp19_ = NULL;
-       ValaMethod* _tmp20_ = NULL;
-       ValaMethod* _tmp67_ = NULL;
-       ValaList* _tmp68_ = NULL;
-       ValaList* _tmp69_ = NULL;
-       ValaMethod* _tmp70_ = NULL;
-       ValaList* _tmp71_ = NULL;
-       ValaList* _tmp72_ = NULL;
-       ValaMethod* _tmp73_ = NULL;
-       ValaBlock* _tmp74_ = NULL;
-       ValaBlock* _tmp75_ = NULL;
+       gboolean _tmp18_ = FALSE;
+       ValaCodeContext* _tmp19_ = NULL;
+       gboolean _tmp20_ = FALSE;
+       gboolean _tmp21_ = FALSE;
+       ValaMethod* _tmp28_ = NULL;
+       ValaMethod* _tmp29_ = NULL;
+       ValaMethod* _tmp30_ = NULL;
+       ValaMethod* _tmp77_ = NULL;
+       ValaList* _tmp78_ = NULL;
+       ValaList* _tmp79_ = NULL;
+       ValaMethod* _tmp80_ = NULL;
+       ValaList* _tmp81_ = NULL;
+       ValaList* _tmp82_ = NULL;
+       ValaMethod* _tmp83_ = NULL;
+       ValaBlock* _tmp84_ = NULL;
+       ValaBlock* _tmp85_ = NULL;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (m != NULL);
        _tmp0_ = m;
@@ -4480,164 +4943,187 @@ static void vala_code_writer_real_visit_method (ValaCodeVisitor* base, ValaMetho
                        return;
                }
        }
-       _tmp18_ = m;
-       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp18_);
+       _tmp19_ = self->priv->context;
+       _tmp20_ = vala_code_context_get_vapi_comments (_tmp19_);
+       _tmp21_ = _tmp20_;
+       if (_tmp21_) {
+               ValaMethod* _tmp22_ = NULL;
+               ValaComment* _tmp23_ = NULL;
+               ValaComment* _tmp24_ = NULL;
+               _tmp22_ = m;
+               _tmp23_ = vala_symbol_get_comment ((ValaSymbol*) _tmp22_);
+               _tmp24_ = _tmp23_;
+               _tmp18_ = _tmp24_ != NULL;
+       } else {
+               _tmp18_ = FALSE;
+       }
+       if (_tmp18_) {
+               ValaMethod* _tmp25_ = NULL;
+               ValaComment* _tmp26_ = NULL;
+               ValaComment* _tmp27_ = NULL;
+               _tmp25_ = m;
+               _tmp26_ = vala_symbol_get_comment ((ValaSymbol*) _tmp25_);
+               _tmp27_ = _tmp26_;
+               vala_code_writer_write_comment (self, _tmp27_);
+       }
+       _tmp28_ = m;
+       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp28_);
        vala_code_writer_write_indent (self);
-       _tmp19_ = m;
-       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp19_);
-       _tmp20_ = m;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp20_, VALA_TYPE_CREATION_METHOD)) {
-               ValaMethod* _tmp21_ = NULL;
-               gboolean _tmp22_ = FALSE;
-               gboolean _tmp23_ = FALSE;
-               ValaTypeSymbol* datatype = NULL;
-               ValaMethod* _tmp24_ = NULL;
-               ValaSymbol* _tmp25_ = NULL;
-               ValaSymbol* _tmp26_ = NULL;
-               ValaTypeSymbol* _tmp27_ = NULL;
-               ValaTypeSymbol* _tmp28_ = NULL;
-               const gchar* _tmp29_ = NULL;
-               const gchar* _tmp30_ = NULL;
+       _tmp29_ = m;
+       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp29_);
+       _tmp30_ = m;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp30_, VALA_TYPE_CREATION_METHOD)) {
                ValaMethod* _tmp31_ = NULL;
-               const gchar* _tmp32_ = NULL;
-               const gchar* _tmp33_ = NULL;
-               _tmp21_ = m;
-               _tmp22_ = vala_method_get_coroutine (_tmp21_);
-               _tmp23_ = _tmp22_;
-               if (_tmp23_) {
-                       vala_code_writer_write_string (self, "async ");
-               }
-               _tmp24_ = m;
-               _tmp25_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp24_);
-               _tmp26_ = _tmp25_;
-               _tmp27_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
-               datatype = _tmp27_;
-               _tmp28_ = datatype;
-               _tmp29_ = vala_symbol_get_name ((ValaSymbol*) _tmp28_);
-               _tmp30_ = _tmp29_;
-               vala_code_writer_write_identifier (self, _tmp30_);
+               gboolean _tmp32_ = FALSE;
+               gboolean _tmp33_ = FALSE;
+               ValaTypeSymbol* datatype = NULL;
+               ValaMethod* _tmp34_ = NULL;
+               ValaSymbol* _tmp35_ = NULL;
+               ValaSymbol* _tmp36_ = NULL;
+               ValaTypeSymbol* _tmp37_ = NULL;
+               ValaTypeSymbol* _tmp38_ = NULL;
+               const gchar* _tmp39_ = NULL;
+               const gchar* _tmp40_ = NULL;
+               ValaMethod* _tmp41_ = NULL;
+               const gchar* _tmp42_ = NULL;
+               const gchar* _tmp43_ = NULL;
                _tmp31_ = m;
-               _tmp32_ = vala_symbol_get_name ((ValaSymbol*) _tmp31_);
+               _tmp32_ = vala_method_get_coroutine (_tmp31_);
                _tmp33_ = _tmp32_;
-               if (g_strcmp0 (_tmp33_, ".new") != 0) {
-                       ValaMethod* _tmp34_ = NULL;
-                       const gchar* _tmp35_ = NULL;
-                       const gchar* _tmp36_ = NULL;
+               if (_tmp33_) {
+                       vala_code_writer_write_string (self, "async ");
+               }
+               _tmp34_ = m;
+               _tmp35_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp34_);
+               _tmp36_ = _tmp35_;
+               _tmp37_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+               datatype = _tmp37_;
+               _tmp38_ = datatype;
+               _tmp39_ = vala_symbol_get_name ((ValaSymbol*) _tmp38_);
+               _tmp40_ = _tmp39_;
+               vala_code_writer_write_identifier (self, _tmp40_);
+               _tmp41_ = m;
+               _tmp42_ = vala_symbol_get_name ((ValaSymbol*) _tmp41_);
+               _tmp43_ = _tmp42_;
+               if (g_strcmp0 (_tmp43_, ".new") != 0) {
+                       ValaMethod* _tmp44_ = NULL;
+                       const gchar* _tmp45_ = NULL;
+                       const gchar* _tmp46_ = NULL;
                        vala_code_writer_write_string (self, ".");
-                       _tmp34_ = m;
-                       _tmp35_ = vala_symbol_get_name ((ValaSymbol*) _tmp34_);
-                       _tmp36_ = _tmp35_;
-                       vala_code_writer_write_identifier (self, _tmp36_);
+                       _tmp44_ = m;
+                       _tmp45_ = vala_symbol_get_name ((ValaSymbol*) _tmp44_);
+                       _tmp46_ = _tmp45_;
+                       vala_code_writer_write_identifier (self, _tmp46_);
                }
                vala_code_writer_write_string (self, " ");
                _vala_code_node_unref0 (datatype);
        } else {
-               ValaMethod* _tmp37_ = NULL;
-               ValaMemberBinding _tmp38_ = 0;
-               ValaMemberBinding _tmp39_ = 0;
-               ValaMethod* _tmp52_ = NULL;
-               gboolean _tmp53_ = FALSE;
-               gboolean _tmp54_ = FALSE;
-               ValaMethod* _tmp55_ = NULL;
-               gboolean _tmp56_ = FALSE;
-               gboolean _tmp57_ = FALSE;
-               ValaMethod* _tmp58_ = NULL;
-               ValaDataType* _tmp59_ = NULL;
-               ValaDataType* _tmp60_ = NULL;
-               ValaMethod* _tmp61_ = NULL;
-               const gchar* _tmp62_ = NULL;
-               const gchar* _tmp63_ = NULL;
-               ValaMethod* _tmp64_ = NULL;
-               ValaList* _tmp65_ = NULL;
-               ValaList* _tmp66_ = NULL;
-               _tmp37_ = m;
-               _tmp38_ = vala_method_get_binding (_tmp37_);
-               _tmp39_ = _tmp38_;
-               if (_tmp39_ == VALA_MEMBER_BINDING_STATIC) {
+               ValaMethod* _tmp47_ = NULL;
+               ValaMemberBinding _tmp48_ = 0;
+               ValaMemberBinding _tmp49_ = 0;
+               ValaMethod* _tmp62_ = NULL;
+               gboolean _tmp63_ = FALSE;
+               gboolean _tmp64_ = FALSE;
+               ValaMethod* _tmp65_ = NULL;
+               gboolean _tmp66_ = FALSE;
+               gboolean _tmp67_ = FALSE;
+               ValaMethod* _tmp68_ = NULL;
+               ValaDataType* _tmp69_ = NULL;
+               ValaDataType* _tmp70_ = NULL;
+               ValaMethod* _tmp71_ = NULL;
+               const gchar* _tmp72_ = NULL;
+               const gchar* _tmp73_ = NULL;
+               ValaMethod* _tmp74_ = NULL;
+               ValaList* _tmp75_ = NULL;
+               ValaList* _tmp76_ = NULL;
+               _tmp47_ = m;
+               _tmp48_ = vala_method_get_binding (_tmp47_);
+               _tmp49_ = _tmp48_;
+               if (_tmp49_ == VALA_MEMBER_BINDING_STATIC) {
                        vala_code_writer_write_string (self, "static ");
                } else {
-                       ValaMethod* _tmp40_ = NULL;
-                       ValaMemberBinding _tmp41_ = 0;
-                       ValaMemberBinding _tmp42_ = 0;
-                       _tmp40_ = m;
-                       _tmp41_ = vala_method_get_binding (_tmp40_);
-                       _tmp42_ = _tmp41_;
-                       if (_tmp42_ == VALA_MEMBER_BINDING_CLASS) {
+                       ValaMethod* _tmp50_ = NULL;
+                       ValaMemberBinding _tmp51_ = 0;
+                       ValaMemberBinding _tmp52_ = 0;
+                       _tmp50_ = m;
+                       _tmp51_ = vala_method_get_binding (_tmp50_);
+                       _tmp52_ = _tmp51_;
+                       if (_tmp52_ == VALA_MEMBER_BINDING_CLASS) {
                                vala_code_writer_write_string (self, "class ");
                        } else {
-                               ValaMethod* _tmp43_ = NULL;
-                               gboolean _tmp44_ = FALSE;
-                               gboolean _tmp45_ = FALSE;
-                               _tmp43_ = m;
-                               _tmp44_ = vala_method_get_is_abstract (_tmp43_);
-                               _tmp45_ = _tmp44_;
-                               if (_tmp45_) {
+                               ValaMethod* _tmp53_ = NULL;
+                               gboolean _tmp54_ = FALSE;
+                               gboolean _tmp55_ = FALSE;
+                               _tmp53_ = m;
+                               _tmp54_ = vala_method_get_is_abstract (_tmp53_);
+                               _tmp55_ = _tmp54_;
+                               if (_tmp55_) {
                                        vala_code_writer_write_string (self, "abstract ");
                                } else {
-                                       ValaMethod* _tmp46_ = NULL;
-                                       gboolean _tmp47_ = FALSE;
-                                       gboolean _tmp48_ = FALSE;
-                                       _tmp46_ = m;
-                                       _tmp47_ = vala_method_get_is_virtual (_tmp46_);
-                                       _tmp48_ = _tmp47_;
-                                       if (_tmp48_) {
+                                       ValaMethod* _tmp56_ = NULL;
+                                       gboolean _tmp57_ = FALSE;
+                                       gboolean _tmp58_ = FALSE;
+                                       _tmp56_ = m;
+                                       _tmp57_ = vala_method_get_is_virtual (_tmp56_);
+                                       _tmp58_ = _tmp57_;
+                                       if (_tmp58_) {
                                                vala_code_writer_write_string (self, "virtual ");
                                        } else {
-                                               ValaMethod* _tmp49_ = NULL;
-                                               gboolean _tmp50_ = FALSE;
-                                               gboolean _tmp51_ = FALSE;
-                                               _tmp49_ = m;
-                                               _tmp50_ = vala_method_get_overrides (_tmp49_);
-                                               _tmp51_ = _tmp50_;
-                                               if (_tmp51_) {
+                                               ValaMethod* _tmp59_ = NULL;
+                                               gboolean _tmp60_ = FALSE;
+                                               gboolean _tmp61_ = FALSE;
+                                               _tmp59_ = m;
+                                               _tmp60_ = vala_method_get_overrides (_tmp59_);
+                                               _tmp61_ = _tmp60_;
+                                               if (_tmp61_) {
                                                        vala_code_writer_write_string (self, "override ");
                                                }
                                        }
                                }
                        }
                }
-               _tmp52_ = m;
-               _tmp53_ = vala_symbol_get_hides ((ValaSymbol*) _tmp52_);
-               _tmp54_ = _tmp53_;
-               if (_tmp54_) {
+               _tmp62_ = m;
+               _tmp63_ = vala_symbol_get_hides ((ValaSymbol*) _tmp62_);
+               _tmp64_ = _tmp63_;
+               if (_tmp64_) {
                        vala_code_writer_write_string (self, "new ");
                }
-               _tmp55_ = m;
-               _tmp56_ = vala_method_get_coroutine (_tmp55_);
-               _tmp57_ = _tmp56_;
-               if (_tmp57_) {
+               _tmp65_ = m;
+               _tmp66_ = vala_method_get_coroutine (_tmp65_);
+               _tmp67_ = _tmp66_;
+               if (_tmp67_) {
                        vala_code_writer_write_string (self, "async ");
                }
-               _tmp58_ = m;
-               _tmp59_ = vala_method_get_return_type (_tmp58_);
-               _tmp60_ = _tmp59_;
-               vala_code_writer_write_return_type (self, _tmp60_);
+               _tmp68_ = m;
+               _tmp69_ = vala_method_get_return_type (_tmp68_);
+               _tmp70_ = _tmp69_;
+               vala_code_writer_write_return_type (self, _tmp70_);
                vala_code_writer_write_string (self, " ");
-               _tmp61_ = m;
-               _tmp62_ = vala_symbol_get_name ((ValaSymbol*) _tmp61_);
-               _tmp63_ = _tmp62_;
-               vala_code_writer_write_identifier (self, _tmp63_);
-               _tmp64_ = m;
-               _tmp65_ = vala_method_get_type_parameters (_tmp64_);
-               _tmp66_ = _tmp65_;
-               vala_code_writer_write_type_parameters (self, _tmp66_);
-               _vala_iterable_unref0 (_tmp66_);
+               _tmp71_ = m;
+               _tmp72_ = vala_symbol_get_name ((ValaSymbol*) _tmp71_);
+               _tmp73_ = _tmp72_;
+               vala_code_writer_write_identifier (self, _tmp73_);
+               _tmp74_ = m;
+               _tmp75_ = vala_method_get_type_parameters (_tmp74_);
+               _tmp76_ = _tmp75_;
+               vala_code_writer_write_type_parameters (self, _tmp76_);
+               _vala_iterable_unref0 (_tmp76_);
                vala_code_writer_write_string (self, " ");
        }
-       _tmp67_ = m;
-       _tmp68_ = vala_method_get_parameters (_tmp67_);
-       _tmp69_ = _tmp68_;
-       vala_code_writer_write_params (self, _tmp69_);
-       _vala_iterable_unref0 (_tmp69_);
-       _tmp70_ = m;
-       _tmp71_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp70_);
-       _tmp72_ = _tmp71_;
-       vala_code_writer_write_error_domains (self, _tmp72_);
-       _vala_iterable_unref0 (_tmp72_);
-       _tmp73_ = m;
-       _tmp74_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp73_);
-       _tmp75_ = _tmp74_;
-       vala_code_writer_write_code_block (self, _tmp75_);
+       _tmp77_ = m;
+       _tmp78_ = vala_method_get_parameters (_tmp77_);
+       _tmp79_ = _tmp78_;
+       vala_code_writer_write_params (self, _tmp79_);
+       _vala_iterable_unref0 (_tmp79_);
+       _tmp80_ = m;
+       _tmp81_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp80_);
+       _tmp82_ = _tmp81_;
+       vala_code_writer_write_error_domains (self, _tmp82_);
+       _vala_iterable_unref0 (_tmp82_);
+       _tmp83_ = m;
+       _tmp84_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp83_);
+       _tmp85_ = _tmp84_;
+       vala_code_writer_write_code_block (self, _tmp85_);
        vala_code_writer_write_newline (self);
 }
 
@@ -4657,23 +5143,27 @@ static void vala_code_writer_real_visit_property (ValaCodeVisitor* base, ValaPro
        gboolean _tmp0_ = FALSE;
        ValaProperty* _tmp1_ = NULL;
        gboolean _tmp2_ = FALSE;
-       ValaProperty* _tmp14_ = NULL;
-       ValaProperty* _tmp15_ = NULL;
-       ValaProperty* _tmp16_ = NULL;
-       ValaMemberBinding _tmp17_ = 0;
-       ValaMemberBinding _tmp18_ = 0;
-       ValaProperty* _tmp28_ = NULL;
-       ValaDataType* _tmp29_ = NULL;
-       ValaDataType* _tmp30_ = NULL;
-       ValaProperty* _tmp31_ = NULL;
-       const gchar* _tmp32_ = NULL;
-       const gchar* _tmp33_ = NULL;
-       ValaProperty* _tmp34_ = NULL;
-       ValaPropertyAccessor* _tmp35_ = NULL;
-       ValaPropertyAccessor* _tmp36_ = NULL;
-       ValaProperty* _tmp54_ = NULL;
-       ValaPropertyAccessor* _tmp55_ = NULL;
-       ValaPropertyAccessor* _tmp56_ = NULL;
+       gboolean _tmp14_ = FALSE;
+       ValaCodeContext* _tmp15_ = NULL;
+       gboolean _tmp16_ = FALSE;
+       gboolean _tmp17_ = FALSE;
+       ValaProperty* _tmp24_ = NULL;
+       ValaProperty* _tmp25_ = NULL;
+       ValaProperty* _tmp26_ = NULL;
+       ValaMemberBinding _tmp27_ = 0;
+       ValaMemberBinding _tmp28_ = 0;
+       ValaProperty* _tmp38_ = NULL;
+       ValaDataType* _tmp39_ = NULL;
+       ValaDataType* _tmp40_ = NULL;
+       ValaProperty* _tmp41_ = NULL;
+       const gchar* _tmp42_ = NULL;
+       const gchar* _tmp43_ = NULL;
+       ValaProperty* _tmp44_ = NULL;
+       ValaPropertyAccessor* _tmp45_ = NULL;
+       ValaPropertyAccessor* _tmp46_ = NULL;
+       ValaProperty* _tmp64_ = NULL;
+       ValaPropertyAccessor* _tmp65_ = NULL;
+       ValaPropertyAccessor* _tmp66_ = NULL;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (prop != NULL);
        _tmp1_ = prop;
@@ -4716,175 +5206,198 @@ static void vala_code_writer_real_visit_property (ValaCodeVisitor* base, ValaPro
        if (_tmp0_) {
                return;
        }
-       _tmp14_ = prop;
-       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp14_);
+       _tmp15_ = self->priv->context;
+       _tmp16_ = vala_code_context_get_vapi_comments (_tmp15_);
+       _tmp17_ = _tmp16_;
+       if (_tmp17_) {
+               ValaProperty* _tmp18_ = NULL;
+               ValaComment* _tmp19_ = NULL;
+               ValaComment* _tmp20_ = NULL;
+               _tmp18_ = prop;
+               _tmp19_ = vala_symbol_get_comment ((ValaSymbol*) _tmp18_);
+               _tmp20_ = _tmp19_;
+               _tmp14_ = _tmp20_ != NULL;
+       } else {
+               _tmp14_ = FALSE;
+       }
+       if (_tmp14_) {
+               ValaProperty* _tmp21_ = NULL;
+               ValaComment* _tmp22_ = NULL;
+               ValaComment* _tmp23_ = NULL;
+               _tmp21_ = prop;
+               _tmp22_ = vala_symbol_get_comment ((ValaSymbol*) _tmp21_);
+               _tmp23_ = _tmp22_;
+               vala_code_writer_write_comment (self, _tmp23_);
+       }
+       _tmp24_ = prop;
+       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp24_);
        vala_code_writer_write_indent (self);
-       _tmp15_ = prop;
-       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp15_);
-       _tmp16_ = prop;
-       _tmp17_ = vala_property_get_binding (_tmp16_);
-       _tmp18_ = _tmp17_;
-       if (_tmp18_ == VALA_MEMBER_BINDING_STATIC) {
+       _tmp25_ = prop;
+       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp25_);
+       _tmp26_ = prop;
+       _tmp27_ = vala_property_get_binding (_tmp26_);
+       _tmp28_ = _tmp27_;
+       if (_tmp28_ == VALA_MEMBER_BINDING_STATIC) {
                vala_code_writer_write_string (self, "static ");
        } else {
-               ValaProperty* _tmp19_ = NULL;
-               gboolean _tmp20_ = FALSE;
-               gboolean _tmp21_ = FALSE;
-               _tmp19_ = prop;
-               _tmp20_ = vala_property_get_is_abstract (_tmp19_);
-               _tmp21_ = _tmp20_;
-               if (_tmp21_) {
+               ValaProperty* _tmp29_ = NULL;
+               gboolean _tmp30_ = FALSE;
+               gboolean _tmp31_ = FALSE;
+               _tmp29_ = prop;
+               _tmp30_ = vala_property_get_is_abstract (_tmp29_);
+               _tmp31_ = _tmp30_;
+               if (_tmp31_) {
                        vala_code_writer_write_string (self, "abstract ");
                } else {
-                       ValaProperty* _tmp22_ = NULL;
-                       gboolean _tmp23_ = FALSE;
-                       gboolean _tmp24_ = FALSE;
-                       _tmp22_ = prop;
-                       _tmp23_ = vala_property_get_is_virtual (_tmp22_);
-                       _tmp24_ = _tmp23_;
-                       if (_tmp24_) {
+                       ValaProperty* _tmp32_ = NULL;
+                       gboolean _tmp33_ = FALSE;
+                       gboolean _tmp34_ = FALSE;
+                       _tmp32_ = prop;
+                       _tmp33_ = vala_property_get_is_virtual (_tmp32_);
+                       _tmp34_ = _tmp33_;
+                       if (_tmp34_) {
                                vala_code_writer_write_string (self, "virtual ");
                        } else {
-                               ValaProperty* _tmp25_ = NULL;
-                               gboolean _tmp26_ = FALSE;
-                               gboolean _tmp27_ = FALSE;
-                               _tmp25_ = prop;
-                               _tmp26_ = vala_property_get_overrides (_tmp25_);
-                               _tmp27_ = _tmp26_;
-                               if (_tmp27_) {
+                               ValaProperty* _tmp35_ = NULL;
+                               gboolean _tmp36_ = FALSE;
+                               gboolean _tmp37_ = FALSE;
+                               _tmp35_ = prop;
+                               _tmp36_ = vala_property_get_overrides (_tmp35_);
+                               _tmp37_ = _tmp36_;
+                               if (_tmp37_) {
                                        vala_code_writer_write_string (self, "override ");
                                }
                        }
                }
        }
-       _tmp28_ = prop;
-       _tmp29_ = vala_property_get_property_type (_tmp28_);
-       _tmp30_ = _tmp29_;
-       vala_code_writer_write_type (self, _tmp30_);
+       _tmp38_ = prop;
+       _tmp39_ = vala_property_get_property_type (_tmp38_);
+       _tmp40_ = _tmp39_;
+       vala_code_writer_write_type (self, _tmp40_);
        vala_code_writer_write_string (self, " ");
-       _tmp31_ = prop;
-       _tmp32_ = vala_symbol_get_name ((ValaSymbol*) _tmp31_);
-       _tmp33_ = _tmp32_;
-       vala_code_writer_write_identifier (self, _tmp33_);
+       _tmp41_ = prop;
+       _tmp42_ = vala_symbol_get_name ((ValaSymbol*) _tmp41_);
+       _tmp43_ = _tmp42_;
+       vala_code_writer_write_identifier (self, _tmp43_);
        vala_code_writer_write_string (self, " {");
-       _tmp34_ = prop;
-       _tmp35_ = vala_property_get_get_accessor (_tmp34_);
-       _tmp36_ = _tmp35_;
-       if (_tmp36_ != NULL) {
-               ValaProperty* _tmp37_ = NULL;
-               ValaPropertyAccessor* _tmp38_ = NULL;
-               ValaPropertyAccessor* _tmp39_ = NULL;
-               ValaProperty* _tmp40_ = NULL;
-               ValaPropertyAccessor* _tmp41_ = NULL;
-               ValaPropertyAccessor* _tmp42_ = NULL;
-               ValaProperty* _tmp43_ = NULL;
-               ValaPropertyAccessor* _tmp44_ = NULL;
-               ValaPropertyAccessor* _tmp45_ = NULL;
-               ValaDataType* _tmp46_ = NULL;
-               ValaDataType* _tmp47_ = NULL;
-               gboolean _tmp48_ = FALSE;
-               ValaProperty* _tmp49_ = NULL;
-               ValaPropertyAccessor* _tmp50_ = NULL;
+       _tmp44_ = prop;
+       _tmp45_ = vala_property_get_get_accessor (_tmp44_);
+       _tmp46_ = _tmp45_;
+       if (_tmp46_ != NULL) {
+               ValaProperty* _tmp47_ = NULL;
+               ValaPropertyAccessor* _tmp48_ = NULL;
+               ValaPropertyAccessor* _tmp49_ = NULL;
+               ValaProperty* _tmp50_ = NULL;
                ValaPropertyAccessor* _tmp51_ = NULL;
-               ValaBlock* _tmp52_ = NULL;
-               ValaBlock* _tmp53_ = NULL;
-               _tmp37_ = prop;
-               _tmp38_ = vala_property_get_get_accessor (_tmp37_);
-               _tmp39_ = _tmp38_;
-               vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp39_);
-               _tmp40_ = prop;
-               _tmp41_ = vala_property_get_get_accessor (_tmp40_);
-               _tmp42_ = _tmp41_;
-               vala_code_writer_write_property_accessor_accessibility (self, (ValaSymbol*) _tmp42_);
-               _tmp43_ = prop;
-               _tmp44_ = vala_property_get_get_accessor (_tmp43_);
-               _tmp45_ = _tmp44_;
-               _tmp46_ = vala_property_accessor_get_value_type (_tmp45_);
-               _tmp47_ = _tmp46_;
-               _tmp48_ = vala_data_type_is_disposable (_tmp47_);
-               if (_tmp48_) {
+               ValaPropertyAccessor* _tmp52_ = NULL;
+               ValaProperty* _tmp53_ = NULL;
+               ValaPropertyAccessor* _tmp54_ = NULL;
+               ValaPropertyAccessor* _tmp55_ = NULL;
+               ValaDataType* _tmp56_ = NULL;
+               ValaDataType* _tmp57_ = NULL;
+               gboolean _tmp58_ = FALSE;
+               ValaProperty* _tmp59_ = NULL;
+               ValaPropertyAccessor* _tmp60_ = NULL;
+               ValaPropertyAccessor* _tmp61_ = NULL;
+               ValaBlock* _tmp62_ = NULL;
+               ValaBlock* _tmp63_ = NULL;
+               _tmp47_ = prop;
+               _tmp48_ = vala_property_get_get_accessor (_tmp47_);
+               _tmp49_ = _tmp48_;
+               vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp49_);
+               _tmp50_ = prop;
+               _tmp51_ = vala_property_get_get_accessor (_tmp50_);
+               _tmp52_ = _tmp51_;
+               vala_code_writer_write_property_accessor_accessibility (self, (ValaSymbol*) _tmp52_);
+               _tmp53_ = prop;
+               _tmp54_ = vala_property_get_get_accessor (_tmp53_);
+               _tmp55_ = _tmp54_;
+               _tmp56_ = vala_property_accessor_get_value_type (_tmp55_);
+               _tmp57_ = _tmp56_;
+               _tmp58_ = vala_data_type_is_disposable (_tmp57_);
+               if (_tmp58_) {
                        vala_code_writer_write_string (self, " owned");
                }
                vala_code_writer_write_string (self, " get");
-               _tmp49_ = prop;
-               _tmp50_ = vala_property_get_get_accessor (_tmp49_);
-               _tmp51_ = _tmp50_;
-               _tmp52_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp51_);
-               _tmp53_ = _tmp52_;
-               vala_code_writer_write_code_block (self, _tmp53_);
+               _tmp59_ = prop;
+               _tmp60_ = vala_property_get_get_accessor (_tmp59_);
+               _tmp61_ = _tmp60_;
+               _tmp62_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp61_);
+               _tmp63_ = _tmp62_;
+               vala_code_writer_write_code_block (self, _tmp63_);
        }
-       _tmp54_ = prop;
-       _tmp55_ = vala_property_get_set_accessor (_tmp54_);
-       _tmp56_ = _tmp55_;
-       if (_tmp56_ != NULL) {
-               ValaProperty* _tmp57_ = NULL;
-               ValaPropertyAccessor* _tmp58_ = NULL;
-               ValaPropertyAccessor* _tmp59_ = NULL;
-               ValaProperty* _tmp60_ = NULL;
-               ValaPropertyAccessor* _tmp61_ = NULL;
-               ValaPropertyAccessor* _tmp62_ = NULL;
-               ValaProperty* _tmp63_ = NULL;
-               ValaPropertyAccessor* _tmp64_ = NULL;
-               ValaPropertyAccessor* _tmp65_ = NULL;
-               ValaDataType* _tmp66_ = NULL;
-               ValaDataType* _tmp67_ = NULL;
-               gboolean _tmp68_ = FALSE;
-               gboolean _tmp69_ = FALSE;
+       _tmp64_ = prop;
+       _tmp65_ = vala_property_get_set_accessor (_tmp64_);
+       _tmp66_ = _tmp65_;
+       if (_tmp66_ != NULL) {
+               ValaProperty* _tmp67_ = NULL;
+               ValaPropertyAccessor* _tmp68_ = NULL;
+               ValaPropertyAccessor* _tmp69_ = NULL;
                ValaProperty* _tmp70_ = NULL;
                ValaPropertyAccessor* _tmp71_ = NULL;
                ValaPropertyAccessor* _tmp72_ = NULL;
-               gboolean _tmp73_ = FALSE;
-               gboolean _tmp74_ = FALSE;
-               ValaProperty* _tmp75_ = NULL;
-               ValaPropertyAccessor* _tmp76_ = NULL;
-               ValaPropertyAccessor* _tmp77_ = NULL;
+               ValaProperty* _tmp73_ = NULL;
+               ValaPropertyAccessor* _tmp74_ = NULL;
+               ValaPropertyAccessor* _tmp75_ = NULL;
+               ValaDataType* _tmp76_ = NULL;
+               ValaDataType* _tmp77_ = NULL;
                gboolean _tmp78_ = FALSE;
                gboolean _tmp79_ = FALSE;
                ValaProperty* _tmp80_ = NULL;
                ValaPropertyAccessor* _tmp81_ = NULL;
                ValaPropertyAccessor* _tmp82_ = NULL;
-               ValaBlock* _tmp83_ = NULL;
-               ValaBlock* _tmp84_ = NULL;
-               _tmp57_ = prop;
-               _tmp58_ = vala_property_get_set_accessor (_tmp57_);
-               _tmp59_ = _tmp58_;
-               vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp59_);
-               _tmp60_ = prop;
-               _tmp61_ = vala_property_get_set_accessor (_tmp60_);
-               _tmp62_ = _tmp61_;
-               vala_code_writer_write_property_accessor_accessibility (self, (ValaSymbol*) _tmp62_);
-               _tmp63_ = prop;
-               _tmp64_ = vala_property_get_set_accessor (_tmp63_);
-               _tmp65_ = _tmp64_;
-               _tmp66_ = vala_property_accessor_get_value_type (_tmp65_);
-               _tmp67_ = _tmp66_;
-               _tmp68_ = vala_data_type_get_value_owned (_tmp67_);
+               gboolean _tmp83_ = FALSE;
+               gboolean _tmp84_ = FALSE;
+               ValaProperty* _tmp85_ = NULL;
+               ValaPropertyAccessor* _tmp86_ = NULL;
+               ValaPropertyAccessor* _tmp87_ = NULL;
+               gboolean _tmp88_ = FALSE;
+               gboolean _tmp89_ = FALSE;
+               ValaProperty* _tmp90_ = NULL;
+               ValaPropertyAccessor* _tmp91_ = NULL;
+               ValaPropertyAccessor* _tmp92_ = NULL;
+               ValaBlock* _tmp93_ = NULL;
+               ValaBlock* _tmp94_ = NULL;
+               _tmp67_ = prop;
+               _tmp68_ = vala_property_get_set_accessor (_tmp67_);
                _tmp69_ = _tmp68_;
-               if (_tmp69_) {
-                       vala_code_writer_write_string (self, " owned");
-               }
+               vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp69_);
                _tmp70_ = prop;
                _tmp71_ = vala_property_get_set_accessor (_tmp70_);
                _tmp72_ = _tmp71_;
-               _tmp73_ = vala_property_accessor_get_writable (_tmp72_);
-               _tmp74_ = _tmp73_;
-               if (_tmp74_) {
-                       vala_code_writer_write_string (self, " set");
-               }
-               _tmp75_ = prop;
-               _tmp76_ = vala_property_get_set_accessor (_tmp75_);
+               vala_code_writer_write_property_accessor_accessibility (self, (ValaSymbol*) _tmp72_);
+               _tmp73_ = prop;
+               _tmp74_ = vala_property_get_set_accessor (_tmp73_);
+               _tmp75_ = _tmp74_;
+               _tmp76_ = vala_property_accessor_get_value_type (_tmp75_);
                _tmp77_ = _tmp76_;
-               _tmp78_ = vala_property_accessor_get_construction (_tmp77_);
+               _tmp78_ = vala_data_type_get_value_owned (_tmp77_);
                _tmp79_ = _tmp78_;
                if (_tmp79_) {
-                       vala_code_writer_write_string (self, " construct");
+                       vala_code_writer_write_string (self, " owned");
                }
                _tmp80_ = prop;
                _tmp81_ = vala_property_get_set_accessor (_tmp80_);
                _tmp82_ = _tmp81_;
-               _tmp83_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp82_);
+               _tmp83_ = vala_property_accessor_get_writable (_tmp82_);
                _tmp84_ = _tmp83_;
-               vala_code_writer_write_code_block (self, _tmp84_);
+               if (_tmp84_) {
+                       vala_code_writer_write_string (self, " set");
+               }
+               _tmp85_ = prop;
+               _tmp86_ = vala_property_get_set_accessor (_tmp85_);
+               _tmp87_ = _tmp86_;
+               _tmp88_ = vala_property_accessor_get_construction (_tmp87_);
+               _tmp89_ = _tmp88_;
+               if (_tmp89_) {
+                       vala_code_writer_write_string (self, " construct");
+               }
+               _tmp90_ = prop;
+               _tmp91_ = vala_property_get_set_accessor (_tmp90_);
+               _tmp92_ = _tmp91_;
+               _tmp93_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp92_);
+               _tmp94_ = _tmp93_;
+               vala_code_writer_write_code_block (self, _tmp94_);
        }
        vala_code_writer_write_string (self, " }");
        vala_code_writer_write_newline (self);
@@ -4895,20 +5408,24 @@ static void vala_code_writer_real_visit_signal (ValaCodeVisitor* base, ValaSigna
        ValaCodeWriter * self;
        ValaSignal* _tmp0_ = NULL;
        gboolean _tmp1_ = FALSE;
-       ValaSignal* _tmp2_ = NULL;
-       ValaSignal* _tmp3_ = NULL;
-       ValaSignal* _tmp4_ = NULL;
+       gboolean _tmp2_ = FALSE;
+       ValaCodeContext* _tmp3_ = NULL;
+       gboolean _tmp4_ = FALSE;
        gboolean _tmp5_ = FALSE;
-       gboolean _tmp6_ = FALSE;
-       ValaSignal* _tmp7_ = NULL;
-       ValaDataType* _tmp8_ = NULL;
-       ValaDataType* _tmp9_ = NULL;
-       ValaSignal* _tmp10_ = NULL;
-       const gchar* _tmp11_ = NULL;
-       const gchar* _tmp12_ = NULL;
+       ValaSignal* _tmp12_ = NULL;
        ValaSignal* _tmp13_ = NULL;
-       ValaList* _tmp14_ = NULL;
-       ValaList* _tmp15_ = NULL;
+       ValaSignal* _tmp14_ = NULL;
+       gboolean _tmp15_ = FALSE;
+       gboolean _tmp16_ = FALSE;
+       ValaSignal* _tmp17_ = NULL;
+       ValaDataType* _tmp18_ = NULL;
+       ValaDataType* _tmp19_ = NULL;
+       ValaSignal* _tmp20_ = NULL;
+       const gchar* _tmp21_ = NULL;
+       const gchar* _tmp22_ = NULL;
+       ValaSignal* _tmp23_ = NULL;
+       ValaList* _tmp24_ = NULL;
+       ValaList* _tmp25_ = NULL;
        self = (ValaCodeWriter*) base;
        g_return_if_fail (sig != NULL);
        _tmp0_ = sig;
@@ -4916,33 +5433,56 @@ static void vala_code_writer_real_visit_signal (ValaCodeVisitor* base, ValaSigna
        if (!_tmp1_) {
                return;
        }
-       _tmp2_ = sig;
-       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp2_);
+       _tmp3_ = self->priv->context;
+       _tmp4_ = vala_code_context_get_vapi_comments (_tmp3_);
+       _tmp5_ = _tmp4_;
+       if (_tmp5_) {
+               ValaSignal* _tmp6_ = NULL;
+               ValaComment* _tmp7_ = NULL;
+               ValaComment* _tmp8_ = NULL;
+               _tmp6_ = sig;
+               _tmp7_ = vala_symbol_get_comment ((ValaSymbol*) _tmp6_);
+               _tmp8_ = _tmp7_;
+               _tmp2_ = _tmp8_ != NULL;
+       } else {
+               _tmp2_ = FALSE;
+       }
+       if (_tmp2_) {
+               ValaSignal* _tmp9_ = NULL;
+               ValaComment* _tmp10_ = NULL;
+               ValaComment* _tmp11_ = NULL;
+               _tmp9_ = sig;
+               _tmp10_ = vala_symbol_get_comment ((ValaSymbol*) _tmp9_);
+               _tmp11_ = _tmp10_;
+               vala_code_writer_write_comment (self, _tmp11_);
+       }
+       _tmp12_ = sig;
+       vala_code_writer_write_attributes (self, (ValaCodeNode*) _tmp12_);
        vala_code_writer_write_indent (self);
-       _tmp3_ = sig;
-       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp3_);
-       _tmp4_ = sig;
-       _tmp5_ = vala_signal_get_is_virtual (_tmp4_);
-       _tmp6_ = _tmp5_;
-       if (_tmp6_) {
+       _tmp13_ = sig;
+       vala_code_writer_write_accessibility (self, (ValaSymbol*) _tmp13_);
+       _tmp14_ = sig;
+       _tmp15_ = vala_signal_get_is_virtual (_tmp14_);
+       _tmp16_ = _tmp15_;
+       if (_tmp16_) {
                vala_code_writer_write_string (self, "virtual ");
        }
        vala_code_writer_write_string (self, "signal ");
-       _tmp7_ = sig;
-       _tmp8_ = vala_signal_get_return_type (_tmp7_);
-       _tmp9_ = _tmp8_;
-       vala_code_writer_write_return_type (self, _tmp9_);
+       _tmp17_ = sig;
+       _tmp18_ = vala_signal_get_return_type (_tmp17_);
+       _tmp19_ = _tmp18_;
+       vala_code_writer_write_return_type (self, _tmp19_);
        vala_code_writer_write_string (self, " ");
-       _tmp10_ = sig;
-       _tmp11_ = vala_symbol_get_name ((ValaSymbol*) _tmp10_);
-       _tmp12_ = _tmp11_;
-       vala_code_writer_write_identifier (self, _tmp12_);
+       _tmp20_ = sig;
+       _tmp21_ = vala_symbol_get_name ((ValaSymbol*) _tmp20_);
+       _tmp22_ = _tmp21_;
+       vala_code_writer_write_identifier (self, _tmp22_);
        vala_code_writer_write_string (self, " ");
-       _tmp13_ = sig;
-       _tmp14_ = vala_signal_get_parameters (_tmp13_);
-       _tmp15_ = _tmp14_;
-       vala_code_writer_write_params (self, _tmp15_);
-       _vala_iterable_unref0 (_tmp15_);
+       _tmp23_ = sig;
+       _tmp24_ = vala_signal_get_parameters (_tmp23_);
+       _tmp25_ = _tmp24_;
+       vala_code_writer_write_params (self, _tmp25_);
+       _vala_iterable_unref0 (_tmp25_);
        vala_code_writer_write_string (self, ";");
        vala_code_writer_write_newline (self);
 }
@@ -6940,6 +7480,120 @@ static void vala_code_writer_write_indent (ValaCodeWriter* self) {
 }
 
 
+static void vala_code_writer_write_comment (ValaCodeWriter* self, ValaComment* comment) {
+       GRegex* fix_indent_regex = NULL;
+       gchar* replacement = NULL;
+       gint _tmp3_ = 0;
+       gchar* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       gchar* _tmp6_ = NULL;
+       gchar* _tmp7_ = NULL;
+       gchar* _tmp8_ = NULL;
+       gchar* _tmp9_ = NULL;
+       gchar* fixed_content = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_if_fail (self != NULL);
+       g_return_if_fail (comment != NULL);
+       {
+               GRegex* _tmp0_ = NULL;
+               GRegex* _tmp1_ = NULL;
+               GRegex* _tmp2_ = NULL;
+               _tmp1_ = g_regex_new ("\\n[\\t ]*", 0, 0, &_inner_error_);
+               _tmp0_ = _tmp1_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
+                       goto __catch3_g_error;
+               }
+               _tmp2_ = _tmp0_;
+               _tmp0_ = NULL;
+               _g_regex_unref0 (fix_indent_regex);
+               fix_indent_regex = _tmp2_;
+               _g_regex_unref0 (_tmp0_);
+       }
+       goto __finally3;
+       __catch3_g_error:
+       {
+               GError* e = NULL;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               g_assert_not_reached ();
+               _g_error_free0 (e);
+       }
+       __finally3:
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
+               _g_regex_unref0 (fix_indent_regex);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return;
+       }
+       _tmp3_ = self->priv->indent;
+       _tmp4_ = g_strnfill ((gsize) _tmp3_, '\t');
+       _tmp5_ = _tmp4_;
+       _tmp6_ = g_strconcat ("\n", _tmp5_, NULL);
+       _tmp7_ = _tmp6_;
+       _tmp8_ = g_strconcat (_tmp7_, " ", NULL);
+       _tmp9_ = _tmp8_;
+       _g_free0 (_tmp7_);
+       _g_free0 (_tmp5_);
+       replacement = _tmp9_;
+       {
+               gchar* _tmp10_ = NULL;
+               ValaComment* _tmp11_ = NULL;
+               const gchar* _tmp12_ = NULL;
+               const gchar* _tmp13_ = NULL;
+               ValaComment* _tmp14_ = NULL;
+               const gchar* _tmp15_ = NULL;
+               const gchar* _tmp16_ = NULL;
+               gint _tmp17_ = 0;
+               gint _tmp18_ = 0;
+               gchar* _tmp19_ = NULL;
+               gchar* _tmp20_ = NULL;
+               _tmp11_ = comment;
+               _tmp12_ = vala_comment_get_content (_tmp11_);
+               _tmp13_ = _tmp12_;
+               _tmp14_ = comment;
+               _tmp15_ = vala_comment_get_content (_tmp14_);
+               _tmp16_ = _tmp15_;
+               _tmp17_ = strlen (_tmp16_);
+               _tmp18_ = _tmp17_;
+               _tmp19_ = g_regex_replace (fix_indent_regex, _tmp13_, (gssize) _tmp18_, 0, replacement, 0, &_inner_error_);
+               _tmp10_ = _tmp19_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
+                       goto __catch4_g_error;
+               }
+               _tmp20_ = _tmp10_;
+               _tmp10_ = NULL;
+               _g_free0 (fixed_content);
+               fixed_content = _tmp20_;
+               _g_free0 (_tmp10_);
+       }
+       goto __finally4;
+       __catch4_g_error:
+       {
+               GError* e = NULL;
+               e = _inner_error_;
+               _inner_error_ = NULL;
+               g_assert_not_reached ();
+               _g_error_free0 (e);
+       }
+       __finally4:
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
+               _g_free0 (fixed_content);
+               _g_free0 (replacement);
+               _g_regex_unref0 (fix_indent_regex);
+               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+               g_clear_error (&_inner_error_);
+               return;
+       }
+       vala_code_writer_write_indent (self);
+       vala_code_writer_write_string (self, "/*");
+       vala_code_writer_write_string (self, fixed_content);
+       vala_code_writer_write_string (self, "*/");
+       _g_free0 (fixed_content);
+       _g_free0 (replacement);
+       _g_regex_unref0 (fix_indent_regex);
+}
+
+
 static gunichar string_get_char (const gchar* self, glong index) {
        gunichar result = 0U;
        glong _tmp0_ = 0L;
@@ -7053,17 +7707,14 @@ static void vala_code_writer_write_type_suffix (ValaCodeWriter* self, ValaDataTy
        }
        if (_tmp2_) {
                ValaArrayType* _tmp7_ = NULL;
-               gint _tmp8_ = 0;
-               gint _tmp9_ = 0;
-               gchar* _tmp10_ = NULL;
-               gchar* _tmp11_ = NULL;
+               ValaExpression* _tmp8_ = NULL;
+               ValaExpression* _tmp9_ = NULL;
+               vala_code_writer_write_string (self, "[");
                _tmp7_ = array_type;
                _tmp8_ = vala_array_type_get_length (_tmp7_);
                _tmp9_ = _tmp8_;
-               _tmp10_ = g_strdup_printf ("[%d]", _tmp9_);
-               _tmp11_ = _tmp10_;
-               vala_code_writer_write_string (self, _tmp11_);
-               _g_free0 (_tmp11_);
+               vala_code_node_accept ((ValaCodeNode*) _tmp9_, (ValaCodeVisitor*) self);
+               vala_code_writer_write_string (self, "]");
        }
        _vala_code_node_unref0 (array_type);
 }
@@ -7224,7 +7875,7 @@ static gboolean vala_code_writer_check_accessibility (ValaCodeWriter* self, Vala
 }
 
 
-static gint ____lambda3_ (ValaCodeWriter* self, ValaAttribute* a, ValaAttribute* b) {
+static gint ____lambda4_ (ValaCodeWriter* self, ValaAttribute* a, ValaAttribute* b) {
        gint result = 0;
        GCompareFunc _tmp0_ = NULL;
        ValaAttribute* _tmp1_ = NULL;
@@ -7249,14 +7900,14 @@ static gint ____lambda3_ (ValaCodeWriter* self, ValaAttribute* a, ValaAttribute*
 }
 
 
-static gint _____lambda3__gcompare_data_func (gconstpointer a, gconstpointer b, gpointer self) {
+static gint _____lambda4__gcompare_data_func (gconstpointer a, gconstpointer b, gpointer self) {
        gint result;
-       result = ____lambda3_ ((ValaCodeWriter*) self, (ValaAttribute*) a, (ValaAttribute*) b);
+       result = ____lambda4_ ((ValaCodeWriter*) self, (ValaAttribute*) a, (ValaAttribute*) b);
        return result;
 }
 
 
-static gint ___lambda4_ (ValaCodeWriter* self, ValaAttribute* a, ValaAttribute* b) {
+static gint ___lambda5_ (ValaCodeWriter* self, ValaAttribute* a, ValaAttribute* b) {
        gint result = 0;
        GCompareFunc _tmp0_ = NULL;
        ValaAttribute* _tmp1_ = NULL;
@@ -7281,9 +7932,9 @@ static gint ___lambda4_ (ValaCodeWriter* self, ValaAttribute* a, ValaAttribute*
 }
 
 
-static gint ____lambda4__gcompare_data_func (gconstpointer a, gconstpointer b, gpointer self) {
+static gint ____lambda5__gcompare_data_func (gconstpointer a, gconstpointer b, gpointer self) {
        gint result;
-       result = ___lambda4_ ((ValaCodeWriter*) self, (ValaAttribute*) a, (ValaAttribute*) b);
+       result = ___lambda5_ ((ValaCodeWriter*) self, (ValaAttribute*) a, (ValaAttribute*) b);
        return result;
 }
 
@@ -7364,7 +8015,7 @@ static void vala_code_writer_write_attributes (ValaCodeWriter* self, ValaCodeNod
                                _tmp15_ = attributes;
                                _tmp16_ = attr;
                                _tmp17_ = _vala_code_node_ref0 (_tmp16_);
-                               _tmp18_ = g_sequence_insert_sorted (_tmp15_, _tmp17_, _____lambda3__gcompare_data_func, self);
+                               _tmp18_ = g_sequence_insert_sorted (_tmp15_, _tmp17_, _____lambda4__gcompare_data_func, self);
                                _vala_code_node_unref0 (attr);
                        }
                }
@@ -7388,7 +8039,7 @@ static void vala_code_writer_write_attributes (ValaCodeWriter* self, ValaCodeNod
                GSequenceIter* _tmp26_ = NULL;
                _tmp24_ = attributes;
                _tmp25_ = vala_attribute_new ("CCode", NULL);
-               _tmp26_ = g_sequence_insert_sorted (_tmp24_, _tmp25_, ____lambda4__gcompare_data_func, self);
+               _tmp26_ = g_sequence_insert_sorted (_tmp24_, _tmp25_, ____lambda5__gcompare_data_func, self);
        }
        _tmp27_ = attributes;
        _tmp28_ = g_sequence_get_begin_iter (_tmp27_);
@@ -7840,73 +8491,73 @@ static void vala_code_writer_write_type_parameters (ValaCodeWriter* self, ValaLi
 
 static void vala_code_writer_class_init (ValaCodeWriterClass * klass) {
        vala_code_writer_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_code_writer_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_code_writer_finalize;
        g_type_class_add_private (klass, sizeof (ValaCodeWriterPrivate));
-       VALA_CODE_VISITOR_CLASS (klass)->visit_using_directive = vala_code_writer_real_visit_using_directive;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_namespace = vala_code_writer_real_visit_namespace;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_code_writer_real_visit_class;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_struct = vala_code_writer_real_visit_struct;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_interface = vala_code_writer_real_visit_interface;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_code_writer_real_visit_enum;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_error_domain = vala_code_writer_real_visit_error_domain;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_constant = vala_code_writer_real_visit_constant;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_field = vala_code_writer_real_visit_field;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_delegate = vala_code_writer_real_visit_delegate;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_constructor = vala_code_writer_real_visit_constructor;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method = vala_code_writer_real_visit_method;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_creation_method = vala_code_writer_real_visit_creation_method;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_property = vala_code_writer_real_visit_property;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_signal = vala_code_writer_real_visit_signal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_block = vala_code_writer_real_visit_block;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_empty_statement = vala_code_writer_real_visit_empty_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_declaration_statement = vala_code_writer_real_visit_declaration_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_local_variable = vala_code_writer_real_visit_local_variable;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_initializer_list = vala_code_writer_real_visit_initializer_list;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_expression_statement = vala_code_writer_real_visit_expression_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_if_statement = vala_code_writer_real_visit_if_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_switch_statement = vala_code_writer_real_visit_switch_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_switch_section = vala_code_writer_real_visit_switch_section;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_switch_label = vala_code_writer_real_visit_switch_label;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_loop = vala_code_writer_real_visit_loop;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_while_statement = vala_code_writer_real_visit_while_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_do_statement = vala_code_writer_real_visit_do_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_for_statement = vala_code_writer_real_visit_for_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_foreach_statement = vala_code_writer_real_visit_foreach_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_break_statement = vala_code_writer_real_visit_break_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_continue_statement = vala_code_writer_real_visit_continue_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_return_statement = vala_code_writer_real_visit_return_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_yield_statement = vala_code_writer_real_visit_yield_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_throw_statement = vala_code_writer_real_visit_throw_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_try_statement = vala_code_writer_real_visit_try_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_catch_clause = vala_code_writer_real_visit_catch_clause;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_lock_statement = vala_code_writer_real_visit_lock_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_delete_statement = vala_code_writer_real_visit_delete_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_array_creation_expression = vala_code_writer_real_visit_array_creation_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_boolean_literal = vala_code_writer_real_visit_boolean_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_character_literal = vala_code_writer_real_visit_character_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_integer_literal = vala_code_writer_real_visit_integer_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_real_literal = vala_code_writer_real_visit_real_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_string_literal = vala_code_writer_real_visit_string_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_null_literal = vala_code_writer_real_visit_null_literal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_member_access = vala_code_writer_real_visit_member_access;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method_call = vala_code_writer_real_visit_method_call;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_element_access = vala_code_writer_real_visit_element_access;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_slice_expression = vala_code_writer_real_visit_slice_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_base_access = vala_code_writer_real_visit_base_access;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_postfix_expression = vala_code_writer_real_visit_postfix_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_object_creation_expression = vala_code_writer_real_visit_object_creation_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_sizeof_expression = vala_code_writer_real_visit_sizeof_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_typeof_expression = vala_code_writer_real_visit_typeof_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_unary_expression = vala_code_writer_real_visit_unary_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_cast_expression = vala_code_writer_real_visit_cast_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_pointer_indirection = vala_code_writer_real_visit_pointer_indirection;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_addressof_expression = vala_code_writer_real_visit_addressof_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_reference_transfer_expression = vala_code_writer_real_visit_reference_transfer_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_binary_expression = vala_code_writer_real_visit_binary_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_type_check = vala_code_writer_real_visit_type_check;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_conditional_expression = vala_code_writer_real_visit_conditional_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_lambda_expression = vala_code_writer_real_visit_lambda_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_assignment = vala_code_writer_real_visit_assignment;
+       ((ValaCodeVisitorClass *) klass)->visit_using_directive = vala_code_writer_real_visit_using_directive;
+       ((ValaCodeVisitorClass *) klass)->visit_namespace = vala_code_writer_real_visit_namespace;
+       ((ValaCodeVisitorClass *) klass)->visit_class = vala_code_writer_real_visit_class;
+       ((ValaCodeVisitorClass *) klass)->visit_struct = vala_code_writer_real_visit_struct;
+       ((ValaCodeVisitorClass *) klass)->visit_interface = vala_code_writer_real_visit_interface;
+       ((ValaCodeVisitorClass *) klass)->visit_enum = vala_code_writer_real_visit_enum;
+       ((ValaCodeVisitorClass *) klass)->visit_error_domain = vala_code_writer_real_visit_error_domain;
+       ((ValaCodeVisitorClass *) klass)->visit_constant = vala_code_writer_real_visit_constant;
+       ((ValaCodeVisitorClass *) klass)->visit_field = vala_code_writer_real_visit_field;
+       ((ValaCodeVisitorClass *) klass)->visit_delegate = vala_code_writer_real_visit_delegate;
+       ((ValaCodeVisitorClass *) klass)->visit_constructor = vala_code_writer_real_visit_constructor;
+       ((ValaCodeVisitorClass *) klass)->visit_method = vala_code_writer_real_visit_method;
+       ((ValaCodeVisitorClass *) klass)->visit_creation_method = vala_code_writer_real_visit_creation_method;
+       ((ValaCodeVisitorClass *) klass)->visit_property = vala_code_writer_real_visit_property;
+       ((ValaCodeVisitorClass *) klass)->visit_signal = vala_code_writer_real_visit_signal;
+       ((ValaCodeVisitorClass *) klass)->visit_block = vala_code_writer_real_visit_block;
+       ((ValaCodeVisitorClass *) klass)->visit_empty_statement = vala_code_writer_real_visit_empty_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_declaration_statement = vala_code_writer_real_visit_declaration_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_local_variable = vala_code_writer_real_visit_local_variable;
+       ((ValaCodeVisitorClass *) klass)->visit_initializer_list = vala_code_writer_real_visit_initializer_list;
+       ((ValaCodeVisitorClass *) klass)->visit_expression_statement = vala_code_writer_real_visit_expression_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_if_statement = vala_code_writer_real_visit_if_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_switch_statement = vala_code_writer_real_visit_switch_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_switch_section = vala_code_writer_real_visit_switch_section;
+       ((ValaCodeVisitorClass *) klass)->visit_switch_label = vala_code_writer_real_visit_switch_label;
+       ((ValaCodeVisitorClass *) klass)->visit_loop = vala_code_writer_real_visit_loop;
+       ((ValaCodeVisitorClass *) klass)->visit_while_statement = vala_code_writer_real_visit_while_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_do_statement = vala_code_writer_real_visit_do_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_for_statement = vala_code_writer_real_visit_for_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_foreach_statement = vala_code_writer_real_visit_foreach_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_break_statement = vala_code_writer_real_visit_break_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_continue_statement = vala_code_writer_real_visit_continue_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_return_statement = vala_code_writer_real_visit_return_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_yield_statement = vala_code_writer_real_visit_yield_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_throw_statement = vala_code_writer_real_visit_throw_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_try_statement = vala_code_writer_real_visit_try_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_catch_clause = vala_code_writer_real_visit_catch_clause;
+       ((ValaCodeVisitorClass *) klass)->visit_lock_statement = vala_code_writer_real_visit_lock_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_delete_statement = vala_code_writer_real_visit_delete_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_array_creation_expression = vala_code_writer_real_visit_array_creation_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_boolean_literal = vala_code_writer_real_visit_boolean_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_character_literal = vala_code_writer_real_visit_character_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_integer_literal = vala_code_writer_real_visit_integer_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_real_literal = vala_code_writer_real_visit_real_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_string_literal = vala_code_writer_real_visit_string_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_null_literal = vala_code_writer_real_visit_null_literal;
+       ((ValaCodeVisitorClass *) klass)->visit_member_access = vala_code_writer_real_visit_member_access;
+       ((ValaCodeVisitorClass *) klass)->visit_method_call = vala_code_writer_real_visit_method_call;
+       ((ValaCodeVisitorClass *) klass)->visit_element_access = vala_code_writer_real_visit_element_access;
+       ((ValaCodeVisitorClass *) klass)->visit_slice_expression = vala_code_writer_real_visit_slice_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_base_access = vala_code_writer_real_visit_base_access;
+       ((ValaCodeVisitorClass *) klass)->visit_postfix_expression = vala_code_writer_real_visit_postfix_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_object_creation_expression = vala_code_writer_real_visit_object_creation_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_sizeof_expression = vala_code_writer_real_visit_sizeof_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_typeof_expression = vala_code_writer_real_visit_typeof_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_unary_expression = vala_code_writer_real_visit_unary_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_cast_expression = vala_code_writer_real_visit_cast_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_pointer_indirection = vala_code_writer_real_visit_pointer_indirection;
+       ((ValaCodeVisitorClass *) klass)->visit_addressof_expression = vala_code_writer_real_visit_addressof_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_reference_transfer_expression = vala_code_writer_real_visit_reference_transfer_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_binary_expression = vala_code_writer_real_visit_binary_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_type_check = vala_code_writer_real_visit_type_check;
+       ((ValaCodeVisitorClass *) klass)->visit_conditional_expression = vala_code_writer_real_visit_conditional_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_lambda_expression = vala_code_writer_real_visit_lambda_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_assignment = vala_code_writer_real_visit_assignment;
 }
 
 
index 7f64fa2..2fce86f 100644 (file)
@@ -2,6 +2,7 @@
  *
  * Copyright (C) 2006-2014  Jürg Billeter
  * Copyright (C) 2006-2008  Raffaele Sandrini
+ * Copyright (C) 2014       Richard Wiedenhöft
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -155,6 +156,24 @@ public class Vala.CodeWriter : CodeVisitor {
                        return;
                }
 
+               var comments = ns.get_comments ();
+               if (context.vapi_comments && comments.size > 0) {
+                       bool first = true;
+                       SourceReference? first_reference = null;
+                       foreach (Comment comment in comments) {
+                               if (comment.source_reference.file.file_type == SourceFileType.SOURCE) {
+                                       if (first) {
+                                               write_comment (comment);
+                                               first = false;
+                                               first_reference = comment.source_reference;
+                                       } else {
+                                               Report.warning (comment.source_reference, "Comment describes namespace, that was already described by another comment.");
+                                               Report.notice (first_reference, "Previous comment was here.");
+                                       }
+                               }
+                       }
+               }
+
                write_attributes (ns);
 
                write_indent ();
@@ -208,6 +227,10 @@ public class Vala.CodeWriter : CodeVisitor {
                        return;
                }
 
+               if (context.vapi_comments && cl.comment != null) {
+                       write_comment (cl.comment);
+               }
+
                write_attributes (cl);
                
                write_indent ();
@@ -301,6 +324,10 @@ public class Vala.CodeWriter : CodeVisitor {
                        return;
                }
 
+               if (context.vapi_comments && st.comment != null) {
+                       write_comment (st.comment);
+               }
+
                write_attributes (st);
 
                write_indent ();
@@ -341,6 +368,10 @@ public class Vala.CodeWriter : CodeVisitor {
                        return;
                }
 
+               if (context.vapi_comments && iface.comment != null) {
+                       write_comment (iface.comment);
+               }
+
                write_attributes (iface);
 
                write_indent ();
@@ -393,6 +424,10 @@ public class Vala.CodeWriter : CodeVisitor {
                        return;
                }
 
+               if (context.vapi_comments && en.comment != null) {
+                       write_comment (en.comment);
+               }
+
                write_attributes (en);
 
                write_indent ();
@@ -410,6 +445,10 @@ public class Vala.CodeWriter : CodeVisitor {
                                write_newline ();
                        }
 
+                       if (context.vapi_comments && ev.comment != null) {
+                               write_comment (ev.comment);
+                       }
+
                        write_attributes (ev);
 
                        write_indent ();
@@ -450,6 +489,10 @@ public class Vala.CodeWriter : CodeVisitor {
                        return;
                }
 
+               if (context.vapi_comments && edomain.comment != null) {
+                       write_comment (edomain.comment);
+               }
+
                write_attributes (edomain);
 
                write_indent ();
@@ -467,6 +510,10 @@ public class Vala.CodeWriter : CodeVisitor {
                                write_newline ();
                        }
 
+                       if (context.vapi_comments && ecode.comment != null) {
+                               write_comment (ecode.comment);
+                       }
+
                        write_attributes (ecode);
 
                        write_indent ();
@@ -499,6 +546,10 @@ public class Vala.CodeWriter : CodeVisitor {
                        return;
                }
 
+               if (context.vapi_comments && c.comment != null) {
+                       write_comment (c.comment);
+               }
+
                write_attributes (c);
 
                write_indent ();
@@ -527,6 +578,10 @@ public class Vala.CodeWriter : CodeVisitor {
                        return;
                }
 
+               if (context.vapi_comments && f.comment != null) {
+                       write_comment (f.comment);
+               }
+
                write_attributes (f);
 
                write_indent ();
@@ -629,6 +684,10 @@ public class Vala.CodeWriter : CodeVisitor {
                        return;
                }
 
+               if (context.vapi_comments && cb.comment != null) {
+                       write_comment (cb.comment);
+               }
+
                write_attributes (cb);
 
                write_indent ();
@@ -659,6 +718,10 @@ public class Vala.CodeWriter : CodeVisitor {
                        return;
                }
 
+               if (context.vapi_comments && c.comment != null) {
+                       write_comment (c.comment);
+               }
+
                write_indent ();
                write_string ("construct");
                write_code_block (c.body);
@@ -677,6 +740,10 @@ public class Vala.CodeWriter : CodeVisitor {
                        }
                }
 
+               if (context.vapi_comments && m.comment != null) {
+                       write_comment (m.comment);
+               }
+
                write_attributes (m);
 
                write_indent ();
@@ -743,6 +810,10 @@ public class Vala.CodeWriter : CodeVisitor {
                        return;
                }
 
+               if (context.vapi_comments && prop.comment != null) {
+                       write_comment (prop.comment);
+               }
+
                write_attributes (prop);
 
                write_indent ();
@@ -801,6 +872,10 @@ public class Vala.CodeWriter : CodeVisitor {
                        return;
                }
                
+               if (context.vapi_comments && sig.comment != null) {
+                       write_comment (sig.comment);
+               }
+
                write_attributes (sig);
                
                write_indent ();
@@ -1430,6 +1505,28 @@ public class Vala.CodeWriter : CodeVisitor {
                
                bol = false;
        }
+
+       private void write_comment (Comment comment) {
+               Regex fix_indent_regex;
+               try {
+                       fix_indent_regex = new Regex ("\\n[\\t ]*");
+               } catch (Error e) {
+                       assert_not_reached ();
+               }
+
+               string replacement = "\n" + string.nfill (indent, '\t') + " ";
+               string fixed_content;
+               try {
+                       fixed_content = fix_indent_regex.replace (comment.content, comment.content.length, 0, replacement);
+               } catch (Error e) {
+                       assert_not_reached();
+               }
+
+               write_indent ();
+               write_string ("/*");
+               write_string (fixed_content);
+               write_string ("*/");
+       }
        
        private void write_identifier (string s) {
                char* id = (char*)s;
@@ -1456,7 +1553,9 @@ public class Vala.CodeWriter : CodeVisitor {
        private void write_type_suffix (DataType type) {
                var array_type = type as ArrayType;
                if (array_type != null && array_type.fixed_length) {
-                       write_string ("[%d]".printf (array_type.length));
+                       write_string ("[");
+                       array_type.length.accept (this);
+                       write_string ("]");
                }
        }
 
index e7b42bb..597b19e 100644 (file)
@@ -283,7 +283,7 @@ void vala_value_take_comment (GValue* value, gpointer v_object) {
 
 static void vala_comment_class_init (ValaCommentClass * klass) {
        vala_comment_parent_class = g_type_class_peek_parent (klass);
-       VALA_COMMENT_CLASS (klass)->finalize = vala_comment_finalize;
+       ((ValaCommentClass *) klass)->finalize = vala_comment_finalize;
        g_type_class_add_private (klass, sizeof (ValaCommentPrivate));
 }
 
@@ -297,6 +297,7 @@ static void vala_comment_instance_init (ValaComment * self) {
 static void vala_comment_finalize (ValaComment* obj) {
        ValaComment * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_COMMENT, ValaComment);
+       g_signal_handlers_destroy (self);
        _g_free0 (self->priv->_content);
        _vala_source_reference_unref0 (self->priv->_source_reference);
 }
index ffc7ec0..120bf3a 100644 (file)
@@ -2231,12 +2231,12 @@ void vala_conditional_expression_set_false_expression (ValaConditionalExpression
 
 static void vala_conditional_expression_class_init (ValaConditionalExpressionClass * klass) {
        vala_conditional_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_conditional_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_conditional_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaConditionalExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_conditional_expression_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_conditional_expression_real_accept_children;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_conditional_expression_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_conditional_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_conditional_expression_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_conditional_expression_real_accept_children;
+       ((ValaExpressionClass *) klass)->is_pure = vala_conditional_expression_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_conditional_expression_real_check;
 }
 
 
index bf0f3e8..b0af239 100644 (file)
@@ -2112,13 +2112,13 @@ void vala_constant_set_value (ValaConstant* self, ValaExpression* value) {
 
 static void vala_constant_class_init (ValaConstantClass * klass) {
        vala_constant_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_constant_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_constant_finalize;
        g_type_class_add_private (klass, sizeof (ValaConstantPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_constant_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_constant_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_constant_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_constant_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_constant_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_constant_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_constant_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_constant_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_constant_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_constant_real_check;
 }
 
 
index dd5299b..9b6f259 100644 (file)
@@ -873,11 +873,11 @@ static gboolean vala_constructor_real_get_has_result (ValaSubroutine* base) {
 
 static void vala_constructor_class_init (ValaConstructorClass * klass) {
        vala_constructor_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_constructor_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_constructor_finalize;
        g_type_class_add_private (klass, sizeof (ValaConstructorPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_constructor_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_constructor_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_constructor_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_constructor_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_constructor_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_constructor_real_check;
        VALA_SUBROUTINE_CLASS (klass)->get_has_result = vala_constructor_real_get_has_result;
 }
 
index 453d07b..21d0d2c 100644 (file)
@@ -280,8 +280,8 @@ static void vala_continue_statement_real_emit (ValaCodeNode* base, ValaCodeGener
 
 static void vala_continue_statement_class_init (ValaContinueStatementClass * klass) {
        vala_continue_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_continue_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_continue_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_continue_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->emit = vala_continue_statement_real_emit;
 }
 
 
index d8512ac..274cc0a 100644 (file)
@@ -2604,11 +2604,11 @@ void vala_creation_method_set_chain_up (ValaCreationMethod* self, gboolean value
 
 static void vala_creation_method_class_init (ValaCreationMethodClass * klass) {
        vala_creation_method_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_creation_method_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_creation_method_finalize;
        g_type_class_add_private (klass, sizeof (ValaCreationMethodPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_creation_method_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_creation_method_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_creation_method_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_creation_method_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_creation_method_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_creation_method_real_check;
 }
 
 
index a753404..1d640ed 100644 (file)
@@ -3198,28 +3198,28 @@ void vala_data_type_set_is_dynamic (ValaDataType* self, gboolean value) {
 
 static void vala_data_type_class_init (ValaDataTypeClass * klass) {
        vala_data_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_data_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_data_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaDataTypePrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_data_type_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_data_type_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_data_type_real_to_string;
-       VALA_DATA_TYPE_CLASS (klass)->to_qualified_string = vala_data_type_real_to_qualified_string;
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_data_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->equals = vala_data_type_real_equals;
-       VALA_DATA_TYPE_CLASS (klass)->stricter = vala_data_type_real_stricter;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_data_type_real_replace_type;
-       VALA_DATA_TYPE_CLASS (klass)->compatible = vala_data_type_real_compatible;
-       VALA_DATA_TYPE_CLASS (klass)->is_invokable = vala_data_type_real_is_invokable;
-       VALA_DATA_TYPE_CLASS (klass)->get_return_type = vala_data_type_real_get_return_type;
-       VALA_DATA_TYPE_CLASS (klass)->get_parameters = vala_data_type_real_get_parameters;
-       VALA_DATA_TYPE_CLASS (klass)->is_reference_type_or_type_parameter = vala_data_type_real_is_reference_type_or_type_parameter;
-       VALA_DATA_TYPE_CLASS (klass)->is_array = vala_data_type_real_is_array;
-       VALA_DATA_TYPE_CLASS (klass)->is_accessible = vala_data_type_real_is_accessible;
-       VALA_DATA_TYPE_CLASS (klass)->get_member = vala_data_type_real_get_member;
-       VALA_DATA_TYPE_CLASS (klass)->get_pointer_member = vala_data_type_real_get_pointer_member;
-       VALA_DATA_TYPE_CLASS (klass)->is_real_struct_type = vala_data_type_real_is_real_struct_type;
-       VALA_DATA_TYPE_CLASS (klass)->is_disposable = vala_data_type_real_is_disposable;
-       VALA_DATA_TYPE_CLASS (klass)->get_actual_type = vala_data_type_real_get_actual_type;
+       ((ValaCodeNodeClass *) klass)->accept = vala_data_type_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_data_type_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_data_type_real_to_string;
+       ((ValaDataTypeClass *) klass)->to_qualified_string = vala_data_type_real_to_qualified_string;
+       ((ValaDataTypeClass *) klass)->copy = vala_data_type_real_copy;
+       ((ValaDataTypeClass *) klass)->equals = vala_data_type_real_equals;
+       ((ValaDataTypeClass *) klass)->stricter = vala_data_type_real_stricter;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_data_type_real_replace_type;
+       ((ValaDataTypeClass *) klass)->compatible = vala_data_type_real_compatible;
+       ((ValaDataTypeClass *) klass)->is_invokable = vala_data_type_real_is_invokable;
+       ((ValaDataTypeClass *) klass)->get_return_type = vala_data_type_real_get_return_type;
+       ((ValaDataTypeClass *) klass)->get_parameters = vala_data_type_real_get_parameters;
+       ((ValaDataTypeClass *) klass)->is_reference_type_or_type_parameter = vala_data_type_real_is_reference_type_or_type_parameter;
+       ((ValaDataTypeClass *) klass)->is_array = vala_data_type_real_is_array;
+       ((ValaDataTypeClass *) klass)->is_accessible = vala_data_type_real_is_accessible;
+       ((ValaDataTypeClass *) klass)->get_member = vala_data_type_real_get_member;
+       ((ValaDataTypeClass *) klass)->get_pointer_member = vala_data_type_real_get_pointer_member;
+       ((ValaDataTypeClass *) klass)->is_real_struct_type = vala_data_type_real_is_real_struct_type;
+       ((ValaDataTypeClass *) klass)->is_disposable = vala_data_type_real_is_disposable;
+       ((ValaDataTypeClass *) klass)->get_actual_type = vala_data_type_real_get_actual_type;
 }
 
 
index cdd6474..b839d4b 100644 (file)
@@ -635,14 +635,14 @@ void vala_declaration_statement_set_declaration (ValaDeclarationStatement* self,
 
 static void vala_declaration_statement_class_init (ValaDeclarationStatementClass * klass) {
        vala_declaration_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_declaration_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_declaration_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaDeclarationStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_declaration_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_declaration_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_declaration_statement_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_declaration_statement_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_declaration_statement_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_declaration_statement_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_declaration_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_declaration_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_declaration_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_declaration_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_declaration_statement_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_declaration_statement_real_get_used_variables;
 }
 
 
index 12f63bc..01f57f8 100644 (file)
@@ -1983,14 +1983,14 @@ void vala_delegate_set_sender_type (ValaDelegate* self, ValaDataType* value) {
 
 static void vala_delegate_class_init (ValaDelegateClass * klass) {
        vala_delegate_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_delegate_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_delegate_finalize;
        g_type_class_add_private (klass, sizeof (ValaDelegatePrivate));
-       VALA_TYPESYMBOL_CLASS (klass)->get_type_parameter_index = vala_delegate_real_get_type_parameter_index;
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_delegate_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_delegate_real_accept_children;
-       VALA_TYPESYMBOL_CLASS (klass)->is_reference_type = vala_delegate_real_is_reference_type;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_delegate_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_delegate_real_check;
+       ((ValaTypeSymbolClass *) klass)->get_type_parameter_index = vala_delegate_real_get_type_parameter_index;
+       ((ValaCodeNodeClass *) klass)->accept = vala_delegate_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_delegate_real_accept_children;
+       ((ValaTypeSymbolClass *) klass)->is_reference_type = vala_delegate_real_is_reference_type;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_delegate_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_delegate_real_check;
 }
 
 
index 88f43f6..c1a214c 100644 (file)
@@ -883,16 +883,16 @@ void vala_delegate_type_set_is_called_once (ValaDelegateType* self, gboolean val
 
 static void vala_delegate_type_class_init (ValaDelegateTypeClass * klass) {
        vala_delegate_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_delegate_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_delegate_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaDelegateTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->is_invokable = vala_delegate_type_real_is_invokable;
-       VALA_DATA_TYPE_CLASS (klass)->get_return_type = vala_delegate_type_real_get_return_type;
-       VALA_DATA_TYPE_CLASS (klass)->get_parameters = vala_delegate_type_real_get_parameters;
-       VALA_DATA_TYPE_CLASS (klass)->to_qualified_string = vala_delegate_type_real_to_qualified_string;
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_delegate_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->is_accessible = vala_delegate_type_real_is_accessible;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_delegate_type_real_check;
-       VALA_DATA_TYPE_CLASS (klass)->is_disposable = vala_delegate_type_real_is_disposable;
+       ((ValaDataTypeClass *) klass)->is_invokable = vala_delegate_type_real_is_invokable;
+       ((ValaDataTypeClass *) klass)->get_return_type = vala_delegate_type_real_get_return_type;
+       ((ValaDataTypeClass *) klass)->get_parameters = vala_delegate_type_real_get_parameters;
+       ((ValaDataTypeClass *) klass)->to_qualified_string = vala_delegate_type_real_to_qualified_string;
+       ((ValaDataTypeClass *) klass)->copy = vala_delegate_type_real_copy;
+       ((ValaDataTypeClass *) klass)->is_accessible = vala_delegate_type_real_is_accessible;
+       ((ValaCodeNodeClass *) klass)->check = vala_delegate_type_real_check;
+       ((ValaDataTypeClass *) klass)->is_disposable = vala_delegate_type_real_is_disposable;
 }
 
 
index a163c80..629fc85 100644 (file)
@@ -471,12 +471,12 @@ void vala_delete_statement_set_expression (ValaDeleteStatement* self, ValaExpres
 
 static void vala_delete_statement_class_init (ValaDeleteStatementClass * klass) {
        vala_delete_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_delete_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_delete_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaDeleteStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_delete_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_delete_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_delete_statement_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_delete_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_delete_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_delete_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_delete_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_delete_statement_real_emit;
 }
 
 
index 659afe0..bfb2bfa 100644 (file)
@@ -723,11 +723,11 @@ static gboolean vala_destructor_real_get_has_result (ValaSubroutine* base) {
 
 static void vala_destructor_class_init (ValaDestructorClass * klass) {
        vala_destructor_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_destructor_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_destructor_finalize;
        g_type_class_add_private (klass, sizeof (ValaDestructorPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_destructor_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_destructor_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_destructor_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_destructor_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_destructor_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_destructor_real_check;
        VALA_SUBROUTINE_CLASS (klass)->get_has_result = vala_destructor_real_get_has_result;
 }
 
index 1b5ca36..4b0c499 100644 (file)
@@ -1873,11 +1873,11 @@ void vala_do_statement_set_condition (ValaDoStatement* self, ValaExpression* val
 
 static void vala_do_statement_class_init (ValaDoStatementClass * klass) {
        vala_do_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_do_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_do_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaDoStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_do_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_do_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_do_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_do_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_do_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_do_statement_real_check;
 }
 
 
index 7853881..09d0769 100644 (file)
@@ -579,9 +579,9 @@ void vala_dynamic_method_set_invocation (ValaDynamicMethod* self, ValaMethodCall
 
 static void vala_dynamic_method_class_init (ValaDynamicMethodClass * klass) {
        vala_dynamic_method_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_dynamic_method_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_dynamic_method_finalize;
        g_type_class_add_private (klass, sizeof (ValaDynamicMethodPrivate));
-       VALA_CODE_NODE_CLASS (klass)->check = vala_dynamic_method_real_check;
+       ((ValaCodeNodeClass *) klass)->check = vala_dynamic_method_real_check;
 }
 
 
index d6c1804..292b125 100644 (file)
@@ -556,9 +556,9 @@ void vala_dynamic_property_set_dynamic_type (ValaDynamicProperty* self, ValaData
 
 static void vala_dynamic_property_class_init (ValaDynamicPropertyClass * klass) {
        vala_dynamic_property_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_dynamic_property_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_dynamic_property_finalize;
        g_type_class_add_private (klass, sizeof (ValaDynamicPropertyPrivate));
-       VALA_CODE_NODE_CLASS (klass)->check = vala_dynamic_property_real_check;
+       ((ValaCodeNodeClass *) klass)->check = vala_dynamic_property_real_check;
 }
 
 
index 6ad7918..02a2fd6 100644 (file)
@@ -572,9 +572,9 @@ void vala_dynamic_signal_set_handler (ValaDynamicSignal* self, ValaExpression* v
 
 static void vala_dynamic_signal_class_init (ValaDynamicSignalClass * klass) {
        vala_dynamic_signal_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_dynamic_signal_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_dynamic_signal_finalize;
        g_type_class_add_private (klass, sizeof (ValaDynamicSignalPrivate));
-       VALA_CODE_NODE_CLASS (klass)->check = vala_dynamic_signal_real_check;
+       ((ValaCodeNodeClass *) klass)->check = vala_dynamic_signal_real_check;
 }
 
 
index e41d954..e1ffc0e 100644 (file)
@@ -2713,16 +2713,16 @@ void vala_element_access_set_container (ValaElementAccess* self, ValaExpression*
 
 static void vala_element_access_class_init (ValaElementAccessClass * klass) {
        vala_element_access_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_element_access_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_element_access_finalize;
        g_type_class_add_private (klass, sizeof (ValaElementAccessPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_element_access_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_element_access_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_element_access_real_replace_expression;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_element_access_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_element_access_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_element_access_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_element_access_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_element_access_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_element_access_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_element_access_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_element_access_real_replace_expression;
+       ((ValaExpressionClass *) klass)->is_pure = vala_element_access_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_element_access_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_element_access_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_element_access_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_element_access_real_get_used_variables;
 }
 
 
index 38c2554..1240632 100644 (file)
@@ -280,8 +280,8 @@ static void vala_empty_statement_real_emit (ValaCodeNode* base, ValaCodeGenerato
 
 static void vala_empty_statement_class_init (ValaEmptyStatementClass * klass) {
        vala_empty_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_empty_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_empty_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_empty_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->emit = vala_empty_statement_real_emit;
 }
 
 
index 96ecddb..95f39a4 100644 (file)
@@ -1397,14 +1397,14 @@ gboolean vala_enum_get_is_flags (ValaEnum* self) {
 
 static void vala_enum_class_init (ValaEnumClass * klass) {
        vala_enum_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_enum_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_enum_finalize;
        g_type_class_add_private (klass, sizeof (ValaEnumPrivate));
-       VALA_SYMBOL_CLASS (klass)->add_method = vala_enum_real_add_method;
-       VALA_SYMBOL_CLASS (klass)->add_constant = vala_enum_real_add_constant;
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_enum_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_enum_real_accept_children;
-       VALA_TYPESYMBOL_CLASS (klass)->is_reference_type = vala_enum_real_is_reference_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_enum_real_check;
+       ((ValaSymbolClass *) klass)->add_method = vala_enum_real_add_method;
+       ((ValaSymbolClass *) klass)->add_constant = vala_enum_real_add_constant;
+       ((ValaCodeNodeClass *) klass)->accept = vala_enum_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_enum_real_accept_children;
+       ((ValaTypeSymbolClass *) klass)->is_reference_type = vala_enum_real_is_reference_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_enum_real_check;
 }
 
 
index 680100a..2a47ec2 100644 (file)
@@ -584,9 +584,9 @@ static gboolean vala_enum_value_real_check (ValaCodeNode* base, ValaCodeContext*
 
 static void vala_enum_value_class_init (ValaEnumValueClass * klass) {
        vala_enum_value_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_enum_value_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_enum_value_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_enum_value_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_enum_value_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_enum_value_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_enum_value_real_check;
 }
 
 
index 06e58e5..b62bf46 100644 (file)
@@ -651,10 +651,10 @@ static ValaSymbol* vala_enum_value_type_real_get_member (ValaDataType* base, con
 
 static void vala_enum_value_type_class_init (ValaEnumValueTypeClass * klass) {
        vala_enum_value_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_enum_value_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_enum_value_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaEnumValueTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_enum_value_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->get_member = vala_enum_value_type_real_get_member;
+       ((ValaDataTypeClass *) klass)->copy = vala_enum_value_type_real_copy;
+       ((ValaDataTypeClass *) klass)->get_member = vala_enum_value_type_real_get_member;
 }
 
 
index dca8034..39ceb75 100644 (file)
@@ -624,11 +624,11 @@ void vala_error_code_set_value (ValaErrorCode* self, ValaExpression* value) {
 
 static void vala_error_code_class_init (ValaErrorCodeClass * klass) {
        vala_error_code_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_error_code_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_error_code_finalize;
        g_type_class_add_private (klass, sizeof (ValaErrorCodePrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_error_code_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_error_code_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_error_code_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_error_code_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_error_code_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_error_code_real_check;
 }
 
 
index 9b50687..2f0659c 100644 (file)
@@ -985,13 +985,13 @@ static gboolean vala_error_domain_real_check (ValaCodeNode* base, ValaCodeContex
 
 static void vala_error_domain_class_init (ValaErrorDomainClass * klass) {
        vala_error_domain_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_error_domain_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_error_domain_finalize;
        g_type_class_add_private (klass, sizeof (ValaErrorDomainPrivate));
-       VALA_SYMBOL_CLASS (klass)->add_method = vala_error_domain_real_add_method;
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_error_domain_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_error_domain_real_accept_children;
-       VALA_TYPESYMBOL_CLASS (klass)->is_reference_type = vala_error_domain_real_is_reference_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_error_domain_real_check;
+       ((ValaSymbolClass *) klass)->add_method = vala_error_domain_real_add_method;
+       ((ValaCodeNodeClass *) klass)->accept = vala_error_domain_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_error_domain_real_accept_children;
+       ((ValaTypeSymbolClass *) klass)->is_reference_type = vala_error_domain_real_is_reference_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_error_domain_real_check;
 }
 
 
index dad6e85..3c4a772 100644 (file)
@@ -760,15 +760,15 @@ void vala_error_type_set_dynamic_error (ValaErrorType* self, gboolean value) {
 
 static void vala_error_type_class_init (ValaErrorTypeClass * klass) {
        vala_error_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_error_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_error_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaErrorTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->compatible = vala_error_type_real_compatible;
-       VALA_DATA_TYPE_CLASS (klass)->to_qualified_string = vala_error_type_real_to_qualified_string;
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_error_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->equals = vala_error_type_real_equals;
-       VALA_DATA_TYPE_CLASS (klass)->get_member = vala_error_type_real_get_member;
-       VALA_DATA_TYPE_CLASS (klass)->is_reference_type_or_type_parameter = vala_error_type_real_is_reference_type_or_type_parameter;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_error_type_real_check;
+       ((ValaDataTypeClass *) klass)->compatible = vala_error_type_real_compatible;
+       ((ValaDataTypeClass *) klass)->to_qualified_string = vala_error_type_real_to_qualified_string;
+       ((ValaDataTypeClass *) klass)->copy = vala_error_type_real_copy;
+       ((ValaDataTypeClass *) klass)->equals = vala_error_type_real_equals;
+       ((ValaDataTypeClass *) klass)->get_member = vala_error_type_real_get_member;
+       ((ValaDataTypeClass *) klass)->is_reference_type_or_type_parameter = vala_error_type_real_is_reference_type_or_type_parameter;
+       ((ValaCodeNodeClass *) klass)->check = vala_error_type_real_check;
 }
 
 
index 18933e7..f2afe4c 100644 (file)
@@ -636,11 +636,11 @@ ValaStatement* vala_expression_get_parent_statement (ValaExpression* self) {
 
 static void vala_expression_class_init (ValaExpressionClass * klass) {
        vala_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaExpressionPrivate));
-       VALA_EXPRESSION_CLASS (klass)->is_constant = vala_expression_real_is_constant;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_expression_real_is_pure;
-       VALA_EXPRESSION_CLASS (klass)->is_non_null = vala_expression_real_is_non_null;
+       ((ValaExpressionClass *) klass)->is_constant = vala_expression_real_is_constant;
+       ((ValaExpressionClass *) klass)->is_pure = vala_expression_real_is_pure;
+       ((ValaExpressionClass *) klass)->is_non_null = vala_expression_real_is_non_null;
 }
 
 
index 90dd9a8..08dbf33 100644 (file)
@@ -458,15 +458,15 @@ void vala_expression_statement_set_expression (ValaExpressionStatement* self, Va
 
 static void vala_expression_statement_class_init (ValaExpressionStatementClass * klass) {
        vala_expression_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_expression_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_expression_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaExpressionStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_expression_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_expression_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_expression_statement_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_expression_statement_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_expression_statement_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_expression_statement_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_expression_statement_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_expression_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_expression_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_expression_statement_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->check = vala_expression_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_expression_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_expression_statement_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_expression_statement_real_get_used_variables;
 }
 
 
index 6ff4974..fd6fe15 100644 (file)
@@ -556,11 +556,12 @@ gchar* vala_symbol_get_full_name (ValaSymbol* self);
 void vala_expression_set_target_type (ValaExpression* self, ValaDataType* value);
 ValaDataType* vala_expression_get_value_type (ValaExpression* self);
 gboolean vala_data_type_compatible (ValaDataType* self, ValaDataType* target_type);
-gboolean vala_symbol_get_external (ValaSymbol* self);
-ValaMemberBinding vala_field_get_binding (ValaField* self);
 ValaSymbol* vala_symbol_get_parent_symbol (ValaSymbol* self);
-gboolean vala_symbol_is_internal_symbol (ValaSymbol* self);
+gboolean vala_expression_is_constant (ValaExpression* self);
+ValaMemberBinding vala_field_get_binding (ValaField* self);
 gboolean vala_class_get_is_compact (ValaClass* self);
+gboolean vala_symbol_get_external (ValaSymbol* self);
+gboolean vala_symbol_is_internal_symbol (ValaSymbol* self);
 gboolean vala_symbol_get_external_package (ValaSymbol* self);
 gboolean vala_symbol_get_hides (ValaSymbol* self);
 ValaSymbol* vala_symbol_get_hidden_member (ValaSymbol* self);
@@ -765,26 +766,26 @@ static gboolean vala_field_real_check (ValaCodeNode* base, ValaCodeContext* cont
        gboolean _tmp40_ = FALSE;
        ValaExpression* _tmp51_ = NULL;
        ValaExpression* _tmp52_ = NULL;
-       gboolean _tmp92_ = FALSE;
-       ValaMemberBinding _tmp93_ = 0;
+       gboolean _tmp115_ = FALSE;
+       ValaMemberBinding _tmp116_ = 0;
        gboolean field_in_header = FALSE;
-       gboolean _tmp98_ = FALSE;
-       ValaSymbol* _tmp99_ = NULL;
-       ValaSymbol* _tmp100_ = NULL;
-       gboolean _tmp110_ = FALSE;
-       gboolean _tmp111_ = FALSE;
-       gboolean _tmp112_ = FALSE;
-       gboolean _tmp113_ = FALSE;
-       ValaCodeContext* _tmp128_ = NULL;
-       ValaSemanticAnalyzer* _tmp129_ = NULL;
-       ValaSemanticAnalyzer* _tmp130_ = NULL;
-       ValaSourceFile* _tmp131_ = NULL;
-       ValaCodeContext* _tmp132_ = NULL;
-       ValaSemanticAnalyzer* _tmp133_ = NULL;
-       ValaSemanticAnalyzer* _tmp134_ = NULL;
-       ValaSymbol* _tmp135_ = NULL;
+       gboolean _tmp121_ = FALSE;
+       ValaSymbol* _tmp122_ = NULL;
+       ValaSymbol* _tmp123_ = NULL;
+       gboolean _tmp133_ = FALSE;
+       gboolean _tmp134_ = FALSE;
+       gboolean _tmp135_ = FALSE;
        gboolean _tmp136_ = FALSE;
-       gboolean _tmp137_ = FALSE;
+       ValaCodeContext* _tmp151_ = NULL;
+       ValaSemanticAnalyzer* _tmp152_ = NULL;
+       ValaSemanticAnalyzer* _tmp153_ = NULL;
+       ValaSourceFile* _tmp154_ = NULL;
+       ValaCodeContext* _tmp155_ = NULL;
+       ValaSemanticAnalyzer* _tmp156_ = NULL;
+       ValaSemanticAnalyzer* _tmp157_ = NULL;
+       ValaSymbol* _tmp158_ = NULL;
+       gboolean _tmp159_ = FALSE;
+       gboolean _tmp160_ = FALSE;
        self = (ValaField*) base;
        g_return_val_if_fail (context != NULL, FALSE);
        _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
@@ -913,7 +914,14 @@ static gboolean vala_field_real_check (ValaCodeNode* base, ValaCodeContext* cont
                ValaDataType* _tmp72_ = NULL;
                gboolean _tmp73_ = FALSE;
                gboolean _tmp88_ = FALSE;
-               gboolean _tmp89_ = FALSE;
+               ValaSymbol* _tmp89_ = NULL;
+               ValaSymbol* _tmp90_ = NULL;
+               gboolean _tmp96_ = FALSE;
+               gboolean _tmp97_ = FALSE;
+               gboolean _tmp98_ = FALSE;
+               ValaMemberBinding _tmp99_ = 0;
+               gboolean _tmp111_ = FALSE;
+               gboolean _tmp112_ = FALSE;
                _tmp53_ = vala_variable_get_initializer ((ValaVariable*) self);
                _tmp54_ = _tmp53_;
                _tmp55_ = vala_variable_get_variable_type ((ValaVariable*) self);
@@ -992,135 +1000,206 @@ static gboolean vala_field_real_check (ValaCodeNode* base, ValaCodeContext* cont
                        _vala_source_file_unref0 (old_source_file);
                        return result;
                }
-               _tmp88_ = vala_symbol_get_external ((ValaSymbol*) self);
-               _tmp89_ = _tmp88_;
-               if (_tmp89_) {
-                       ValaSourceReference* _tmp90_ = NULL;
-                       ValaSourceReference* _tmp91_ = NULL;
+               _tmp89_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
+               _tmp90_ = _tmp89_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp90_, VALA_TYPE_NAMESPACE)) {
+                       ValaExpression* _tmp91_ = NULL;
+                       ValaExpression* _tmp92_ = NULL;
+                       gboolean _tmp93_ = FALSE;
+                       _tmp91_ = vala_variable_get_initializer ((ValaVariable*) self);
+                       _tmp92_ = _tmp91_;
+                       _tmp93_ = vala_expression_is_constant (_tmp92_);
+                       _tmp88_ = !_tmp93_;
+               } else {
+                       _tmp88_ = FALSE;
+               }
+               if (_tmp88_) {
+                       ValaSourceReference* _tmp94_ = NULL;
+                       ValaSourceReference* _tmp95_ = NULL;
+                       vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
+                       _tmp94_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                       _tmp95_ = _tmp94_;
+                       vala_report_error (_tmp95_, "Non-constant field initializerS not supported in this context");
+                       result = FALSE;
+                       _vala_code_node_unref0 (old_symbol);
+                       _vala_source_file_unref0 (old_source_file);
+                       return result;
+               }
+               _tmp99_ = self->priv->_binding;
+               if (_tmp99_ == VALA_MEMBER_BINDING_STATIC) {
+                       ValaSymbol* _tmp100_ = NULL;
+                       ValaSymbol* _tmp101_ = NULL;
+                       _tmp100_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
+                       _tmp101_ = _tmp100_;
+                       _tmp98_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp101_, VALA_TYPE_CLASS);
+               } else {
+                       _tmp98_ = FALSE;
+               }
+               if (_tmp98_) {
+                       ValaSymbol* _tmp102_ = NULL;
+                       ValaSymbol* _tmp103_ = NULL;
+                       gboolean _tmp104_ = FALSE;
+                       gboolean _tmp105_ = FALSE;
+                       _tmp102_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
+                       _tmp103_ = _tmp102_;
+                       _tmp104_ = vala_class_get_is_compact (G_TYPE_CHECK_INSTANCE_CAST (_tmp103_, VALA_TYPE_CLASS, ValaClass));
+                       _tmp105_ = _tmp104_;
+                       _tmp97_ = _tmp105_;
+               } else {
+                       _tmp97_ = FALSE;
+               }
+               if (_tmp97_) {
+                       ValaExpression* _tmp106_ = NULL;
+                       ValaExpression* _tmp107_ = NULL;
+                       gboolean _tmp108_ = FALSE;
+                       _tmp106_ = vala_variable_get_initializer ((ValaVariable*) self);
+                       _tmp107_ = _tmp106_;
+                       _tmp108_ = vala_expression_is_constant (_tmp107_);
+                       _tmp96_ = !_tmp108_;
+               } else {
+                       _tmp96_ = FALSE;
+               }
+               if (_tmp96_) {
+                       ValaSourceReference* _tmp109_ = NULL;
+                       ValaSourceReference* _tmp110_ = NULL;
+                       vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
+                       _tmp109_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                       _tmp110_ = _tmp109_;
+                       vala_report_error (_tmp110_, "Static fields in compact classes cannot have non-constant initializers");
+                       result = FALSE;
+                       _vala_code_node_unref0 (old_symbol);
+                       _vala_source_file_unref0 (old_source_file);
+                       return result;
+               }
+               _tmp111_ = vala_symbol_get_external ((ValaSymbol*) self);
+               _tmp112_ = _tmp111_;
+               if (_tmp112_) {
+                       ValaSourceReference* _tmp113_ = NULL;
+                       ValaSourceReference* _tmp114_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                       _tmp90_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                       _tmp91_ = _tmp90_;
-                       vala_report_error (_tmp91_, "External fields cannot use initializers");
+                       _tmp113_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                       _tmp114_ = _tmp113_;
+                       vala_report_error (_tmp114_, "External fields cannot use initializers");
                }
        }
-       _tmp93_ = self->priv->_binding;
-       if (_tmp93_ == VALA_MEMBER_BINDING_INSTANCE) {
-               ValaSymbol* _tmp94_ = NULL;
-               ValaSymbol* _tmp95_ = NULL;
-               _tmp94_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
-               _tmp95_ = _tmp94_;
-               _tmp92_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp95_, VALA_TYPE_INTERFACE);
+       _tmp116_ = self->priv->_binding;
+       if (_tmp116_ == VALA_MEMBER_BINDING_INSTANCE) {
+               ValaSymbol* _tmp117_ = NULL;
+               ValaSymbol* _tmp118_ = NULL;
+               _tmp117_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
+               _tmp118_ = _tmp117_;
+               _tmp115_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp118_, VALA_TYPE_INTERFACE);
        } else {
-               _tmp92_ = FALSE;
+               _tmp115_ = FALSE;
        }
-       if (_tmp92_) {
-               ValaSourceReference* _tmp96_ = NULL;
-               ValaSourceReference* _tmp97_ = NULL;
+       if (_tmp115_) {
+               ValaSourceReference* _tmp119_ = NULL;
+               ValaSourceReference* _tmp120_ = NULL;
                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-               _tmp96_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-               _tmp97_ = _tmp96_;
-               vala_report_error (_tmp97_, "Interfaces may not have instance fields");
+               _tmp119_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp120_ = _tmp119_;
+               vala_report_error (_tmp120_, "Interfaces may not have instance fields");
                result = FALSE;
                _vala_code_node_unref0 (old_symbol);
                _vala_source_file_unref0 (old_source_file);
                return result;
        }
-       _tmp98_ = vala_symbol_is_internal_symbol ((ValaSymbol*) self);
-       field_in_header = !_tmp98_;
-       _tmp99_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
-       _tmp100_ = _tmp99_;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp100_, VALA_TYPE_CLASS)) {
+       _tmp121_ = vala_symbol_is_internal_symbol ((ValaSymbol*) self);
+       field_in_header = !_tmp121_;
+       _tmp122_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
+       _tmp123_ = _tmp122_;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp123_, VALA_TYPE_CLASS)) {
                ValaClass* cl = NULL;
-               ValaSymbol* _tmp101_ = NULL;
-               ValaSymbol* _tmp102_ = NULL;
-               ValaClass* _tmp103_ = NULL;
-               gboolean _tmp104_ = FALSE;
-               ValaClass* _tmp105_ = NULL;
-               gboolean _tmp106_ = FALSE;
-               gboolean _tmp107_ = FALSE;
-               _tmp101_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
-               _tmp102_ = _tmp101_;
-               _tmp103_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp102_, VALA_TYPE_CLASS, ValaClass));
-               cl = _tmp103_;
-               _tmp105_ = cl;
-               _tmp106_ = vala_class_get_is_compact (_tmp105_);
-               _tmp107_ = _tmp106_;
-               if (_tmp107_) {
-                       ValaClass* _tmp108_ = NULL;
-                       gboolean _tmp109_ = FALSE;
-                       _tmp108_ = cl;
-                       _tmp109_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp108_);
-                       _tmp104_ = !_tmp109_;
+               ValaSymbol* _tmp124_ = NULL;
+               ValaSymbol* _tmp125_ = NULL;
+               ValaClass* _tmp126_ = NULL;
+               gboolean _tmp127_ = FALSE;
+               ValaClass* _tmp128_ = NULL;
+               gboolean _tmp129_ = FALSE;
+               gboolean _tmp130_ = FALSE;
+               _tmp124_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
+               _tmp125_ = _tmp124_;
+               _tmp126_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp125_, VALA_TYPE_CLASS, ValaClass));
+               cl = _tmp126_;
+               _tmp128_ = cl;
+               _tmp129_ = vala_class_get_is_compact (_tmp128_);
+               _tmp130_ = _tmp129_;
+               if (_tmp130_) {
+                       ValaClass* _tmp131_ = NULL;
+                       gboolean _tmp132_ = FALSE;
+                       _tmp131_ = cl;
+                       _tmp132_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp131_);
+                       _tmp127_ = !_tmp132_;
                } else {
-                       _tmp104_ = FALSE;
+                       _tmp127_ = FALSE;
                }
-               if (_tmp104_) {
+               if (_tmp127_) {
                        field_in_header = TRUE;
                }
                _vala_code_node_unref0 (cl);
        }
-       _tmp112_ = vala_symbol_get_external_package ((ValaSymbol*) self);
-       _tmp113_ = _tmp112_;
-       if (!_tmp113_) {
-               gboolean _tmp114_ = FALSE;
-               gboolean _tmp115_ = FALSE;
-               _tmp114_ = vala_symbol_get_hides ((ValaSymbol*) self);
-               _tmp115_ = _tmp114_;
-               _tmp111_ = !_tmp115_;
+       _tmp135_ = vala_symbol_get_external_package ((ValaSymbol*) self);
+       _tmp136_ = _tmp135_;
+       if (!_tmp136_) {
+               gboolean _tmp137_ = FALSE;
+               gboolean _tmp138_ = FALSE;
+               _tmp137_ = vala_symbol_get_hides ((ValaSymbol*) self);
+               _tmp138_ = _tmp137_;
+               _tmp134_ = !_tmp138_;
        } else {
-               _tmp111_ = FALSE;
+               _tmp134_ = FALSE;
        }
-       if (_tmp111_) {
-               ValaSymbol* _tmp116_ = NULL;
-               ValaSymbol* _tmp117_ = NULL;
-               _tmp116_ = vala_symbol_get_hidden_member ((ValaSymbol*) self);
-               _tmp117_ = _tmp116_;
-               _tmp110_ = _tmp117_ != NULL;
-               _vala_code_node_unref0 (_tmp117_);
+       if (_tmp134_) {
+               ValaSymbol* _tmp139_ = NULL;
+               ValaSymbol* _tmp140_ = NULL;
+               _tmp139_ = vala_symbol_get_hidden_member ((ValaSymbol*) self);
+               _tmp140_ = _tmp139_;
+               _tmp133_ = _tmp140_ != NULL;
+               _vala_code_node_unref0 (_tmp140_);
        } else {
-               _tmp110_ = FALSE;
+               _tmp133_ = FALSE;
        }
-       if (_tmp110_) {
-               ValaSourceReference* _tmp118_ = NULL;
-               ValaSourceReference* _tmp119_ = NULL;
-               gchar* _tmp120_ = NULL;
-               gchar* _tmp121_ = NULL;
-               ValaSymbol* _tmp122_ = NULL;
-               ValaSymbol* _tmp123_ = NULL;
-               gchar* _tmp124_ = NULL;
-               gchar* _tmp125_ = NULL;
-               gchar* _tmp126_ = NULL;
-               gchar* _tmp127_ = NULL;
-               _tmp118_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-               _tmp119_ = _tmp118_;
-               _tmp120_ = vala_symbol_get_full_name ((ValaSymbol*) self);
-               _tmp121_ = _tmp120_;
-               _tmp122_ = vala_symbol_get_hidden_member ((ValaSymbol*) self);
-               _tmp123_ = _tmp122_;
-               _tmp124_ = vala_symbol_get_full_name (_tmp123_);
-               _tmp125_ = _tmp124_;
-               _tmp126_ = g_strdup_printf ("%s hides inherited field `%s'. Use the `new' keyword if hiding was int" \
-"entional", _tmp121_, _tmp125_);
-               _tmp127_ = _tmp126_;
-               vala_report_warning (_tmp119_, _tmp127_);
-               _g_free0 (_tmp127_);
-               _g_free0 (_tmp125_);
-               _vala_code_node_unref0 (_tmp123_);
-               _g_free0 (_tmp121_);
+       if (_tmp133_) {
+               ValaSourceReference* _tmp141_ = NULL;
+               ValaSourceReference* _tmp142_ = NULL;
+               gchar* _tmp143_ = NULL;
+               gchar* _tmp144_ = NULL;
+               ValaSymbol* _tmp145_ = NULL;
+               ValaSymbol* _tmp146_ = NULL;
+               gchar* _tmp147_ = NULL;
+               gchar* _tmp148_ = NULL;
+               gchar* _tmp149_ = NULL;
+               gchar* _tmp150_ = NULL;
+               _tmp141_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp142_ = _tmp141_;
+               _tmp143_ = vala_symbol_get_full_name ((ValaSymbol*) self);
+               _tmp144_ = _tmp143_;
+               _tmp145_ = vala_symbol_get_hidden_member ((ValaSymbol*) self);
+               _tmp146_ = _tmp145_;
+               _tmp147_ = vala_symbol_get_full_name (_tmp146_);
+               _tmp148_ = _tmp147_;
+               _tmp149_ = g_strdup_printf ("%s hides inherited field `%s'. Use the `new' keyword if hiding was int" \
+"entional", _tmp144_, _tmp148_);
+               _tmp150_ = _tmp149_;
+               vala_report_warning (_tmp142_, _tmp150_);
+               _g_free0 (_tmp150_);
+               _g_free0 (_tmp148_);
+               _vala_code_node_unref0 (_tmp146_);
+               _g_free0 (_tmp144_);
        }
-       _tmp128_ = context;
-       _tmp129_ = vala_code_context_get_analyzer (_tmp128_);
-       _tmp130_ = _tmp129_;
-       _tmp131_ = old_source_file;
-       vala_semantic_analyzer_set_current_source_file (_tmp130_, _tmp131_);
-       _tmp132_ = context;
-       _tmp133_ = vala_code_context_get_analyzer (_tmp132_);
-       _tmp134_ = _tmp133_;
-       _tmp135_ = old_symbol;
-       vala_semantic_analyzer_set_current_symbol (_tmp134_, _tmp135_);
-       _tmp136_ = vala_code_node_get_error ((ValaCodeNode*) self);
-       _tmp137_ = _tmp136_;
-       result = !_tmp137_;
+       _tmp151_ = context;
+       _tmp152_ = vala_code_context_get_analyzer (_tmp151_);
+       _tmp153_ = _tmp152_;
+       _tmp154_ = old_source_file;
+       vala_semantic_analyzer_set_current_source_file (_tmp153_, _tmp154_);
+       _tmp155_ = context;
+       _tmp156_ = vala_code_context_get_analyzer (_tmp155_);
+       _tmp157_ = _tmp156_;
+       _tmp158_ = old_symbol;
+       vala_semantic_analyzer_set_current_symbol (_tmp157_, _tmp158_);
+       _tmp159_ = vala_code_node_get_error ((ValaCodeNode*) self);
+       _tmp160_ = _tmp159_;
+       result = !_tmp160_;
        _vala_code_node_unref0 (old_symbol);
        _vala_source_file_unref0 (old_source_file);
        return result;
@@ -1165,13 +1244,13 @@ void vala_field_set_is_volatile (ValaField* self, gboolean value) {
 
 static void vala_field_class_init (ValaFieldClass * klass) {
        vala_field_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_field_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_field_finalize;
        g_type_class_add_private (klass, sizeof (ValaFieldPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_field_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_field_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_field_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_field_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_field_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_field_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_field_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_field_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_field_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_field_real_check;
 }
 
 
index 8b932a5..e6429a1 100644 (file)
@@ -143,6 +143,18 @@ public class Vala.Field : Variable, Lockable {
                                return false;
                        }
 
+                       if (parent_symbol is Namespace && !initializer.is_constant ()) {
+                               error = true;
+                               Report.error (source_reference, "Non-constant field initializerS not supported in this context");
+                               return false;
+                       }
+
+                       if (binding == MemberBinding.STATIC && parent_symbol is Class && ((Class)parent_symbol).is_compact && !initializer.is_constant ()) {
+                               error = true;
+                               Report.error (source_reference, "Static fields in compact classes cannot have non-constant initializers");
+                               return false;
+                       }
+
                        if (external) {
                                error = true;
                                Report.error (source_reference, "External fields cannot use initializers");
index 087c097..1ecf538 100644 (file)
@@ -361,10 +361,10 @@ void vala_field_prototype_set_field_symbol (ValaFieldPrototype* self, ValaField*
 
 static void vala_field_prototype_class_init (ValaFieldPrototypeClass * klass) {
        vala_field_prototype_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_field_prototype_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_field_prototype_finalize;
        g_type_class_add_private (klass, sizeof (ValaFieldPrototypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_field_prototype_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->to_qualified_string = vala_field_prototype_real_to_qualified_string;
+       ((ValaDataTypeClass *) klass)->copy = vala_field_prototype_real_copy;
+       ((ValaDataTypeClass *) klass)->to_qualified_string = vala_field_prototype_real_to_qualified_string;
 }
 
 
index 1a8281f..64093c1 100644 (file)
@@ -384,7 +384,7 @@ static ValaDataType* vala_floating_type_real_copy (ValaDataType* base) {
 
 static void vala_floating_type_class_init (ValaFloatingTypeClass * klass) {
        vala_floating_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_floating_type_real_copy;
+       ((ValaDataTypeClass *) klass)->copy = vala_floating_type_real_copy;
 }
 
 
index c638403..d0ed0f9 100644 (file)
@@ -7215,7 +7215,7 @@ static void vala_flow_analyzer_value_take_jump_target (GValue* value, gpointer v
 
 static void vala_flow_analyzer_jump_target_class_init (ValaFlowAnalyzerJumpTargetClass * klass) {
        vala_flow_analyzer_jump_target_parent_class = g_type_class_peek_parent (klass);
-       VALA_FLOW_ANALYZER_JUMP_TARGET_CLASS (klass)->finalize = vala_flow_analyzer_jump_target_finalize;
+       ((ValaFlowAnalyzerJumpTargetClass *) klass)->finalize = vala_flow_analyzer_jump_target_finalize;
        g_type_class_add_private (klass, sizeof (ValaFlowAnalyzerJumpTargetPrivate));
 }
 
@@ -7229,6 +7229,7 @@ static void vala_flow_analyzer_jump_target_instance_init (ValaFlowAnalyzerJumpTa
 static void vala_flow_analyzer_jump_target_finalize (ValaFlowAnalyzerJumpTarget* obj) {
        ValaFlowAnalyzerJumpTarget * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_FLOW_ANALYZER_TYPE_JUMP_TARGET, ValaFlowAnalyzerJumpTarget);
+       g_signal_handlers_destroy (self);
        _vala_code_node_unref0 (self->priv->_error_domain);
        _vala_code_node_unref0 (self->priv->_error_code);
        _vala_code_node_unref0 (self->priv->_error_class);
@@ -7272,38 +7273,38 @@ static void vala_flow_analyzer_jump_target_unref (gpointer instance) {
 
 static void vala_flow_analyzer_class_init (ValaFlowAnalyzerClass * klass) {
        vala_flow_analyzer_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_flow_analyzer_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_flow_analyzer_finalize;
        g_type_class_add_private (klass, sizeof (ValaFlowAnalyzerPrivate));
-       VALA_CODE_VISITOR_CLASS (klass)->visit_source_file = vala_flow_analyzer_real_visit_source_file;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_flow_analyzer_real_visit_class;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_struct = vala_flow_analyzer_real_visit_struct;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_interface = vala_flow_analyzer_real_visit_interface;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_flow_analyzer_real_visit_enum;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_error_domain = vala_flow_analyzer_real_visit_error_domain;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_field = vala_flow_analyzer_real_visit_field;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_lambda_expression = vala_flow_analyzer_real_visit_lambda_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method = vala_flow_analyzer_real_visit_method;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_signal = vala_flow_analyzer_real_visit_signal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_creation_method = vala_flow_analyzer_real_visit_creation_method;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_property = vala_flow_analyzer_real_visit_property;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_property_accessor = vala_flow_analyzer_real_visit_property_accessor;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_block = vala_flow_analyzer_real_visit_block;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_declaration_statement = vala_flow_analyzer_real_visit_declaration_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_local_variable = vala_flow_analyzer_real_visit_local_variable;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_expression_statement = vala_flow_analyzer_real_visit_expression_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_if_statement = vala_flow_analyzer_real_visit_if_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_switch_statement = vala_flow_analyzer_real_visit_switch_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_loop = vala_flow_analyzer_real_visit_loop;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_foreach_statement = vala_flow_analyzer_real_visit_foreach_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_break_statement = vala_flow_analyzer_real_visit_break_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_continue_statement = vala_flow_analyzer_real_visit_continue_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_return_statement = vala_flow_analyzer_real_visit_return_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_yield_statement = vala_flow_analyzer_real_visit_yield_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_throw_statement = vala_flow_analyzer_real_visit_throw_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_try_statement = vala_flow_analyzer_real_visit_try_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_lock_statement = vala_flow_analyzer_real_visit_lock_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_unlock_statement = vala_flow_analyzer_real_visit_unlock_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_expression = vala_flow_analyzer_real_visit_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_source_file = vala_flow_analyzer_real_visit_source_file;
+       ((ValaCodeVisitorClass *) klass)->visit_class = vala_flow_analyzer_real_visit_class;
+       ((ValaCodeVisitorClass *) klass)->visit_struct = vala_flow_analyzer_real_visit_struct;
+       ((ValaCodeVisitorClass *) klass)->visit_interface = vala_flow_analyzer_real_visit_interface;
+       ((ValaCodeVisitorClass *) klass)->visit_enum = vala_flow_analyzer_real_visit_enum;
+       ((ValaCodeVisitorClass *) klass)->visit_error_domain = vala_flow_analyzer_real_visit_error_domain;
+       ((ValaCodeVisitorClass *) klass)->visit_field = vala_flow_analyzer_real_visit_field;
+       ((ValaCodeVisitorClass *) klass)->visit_lambda_expression = vala_flow_analyzer_real_visit_lambda_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_method = vala_flow_analyzer_real_visit_method;
+       ((ValaCodeVisitorClass *) klass)->visit_signal = vala_flow_analyzer_real_visit_signal;
+       ((ValaCodeVisitorClass *) klass)->visit_creation_method = vala_flow_analyzer_real_visit_creation_method;
+       ((ValaCodeVisitorClass *) klass)->visit_property = vala_flow_analyzer_real_visit_property;
+       ((ValaCodeVisitorClass *) klass)->visit_property_accessor = vala_flow_analyzer_real_visit_property_accessor;
+       ((ValaCodeVisitorClass *) klass)->visit_block = vala_flow_analyzer_real_visit_block;
+       ((ValaCodeVisitorClass *) klass)->visit_declaration_statement = vala_flow_analyzer_real_visit_declaration_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_local_variable = vala_flow_analyzer_real_visit_local_variable;
+       ((ValaCodeVisitorClass *) klass)->visit_expression_statement = vala_flow_analyzer_real_visit_expression_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_if_statement = vala_flow_analyzer_real_visit_if_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_switch_statement = vala_flow_analyzer_real_visit_switch_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_loop = vala_flow_analyzer_real_visit_loop;
+       ((ValaCodeVisitorClass *) klass)->visit_foreach_statement = vala_flow_analyzer_real_visit_foreach_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_break_statement = vala_flow_analyzer_real_visit_break_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_continue_statement = vala_flow_analyzer_real_visit_continue_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_return_statement = vala_flow_analyzer_real_visit_return_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_yield_statement = vala_flow_analyzer_real_visit_yield_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_throw_statement = vala_flow_analyzer_real_visit_throw_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_try_statement = vala_flow_analyzer_real_visit_try_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_lock_statement = vala_flow_analyzer_real_visit_lock_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_unlock_statement = vala_flow_analyzer_real_visit_unlock_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_expression = vala_flow_analyzer_real_visit_expression;
 }
 
 
index e33e196..264130e 100644 (file)
@@ -3762,15 +3762,15 @@ void vala_foreach_statement_set_iterator_variable (ValaForeachStatement* self, V
 
 static void vala_foreach_statement_class_init (ValaForeachStatementClass * klass) {
        vala_foreach_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_foreach_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_foreach_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaForeachStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_foreach_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_foreach_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_foreach_statement_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_foreach_statement_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_foreach_statement_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_foreach_statement_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_foreach_statement_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_foreach_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_foreach_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_foreach_statement_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_foreach_statement_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_foreach_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_foreach_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_foreach_statement_real_get_defined_variables;
 }
 
 
index e2ce94d..f8782e2 100644 (file)
@@ -2206,11 +2206,11 @@ void vala_for_statement_set_body (ValaForStatement* self, ValaBlock* value) {
 
 static void vala_for_statement_class_init (ValaForStatementClass * klass) {
        vala_for_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_for_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_for_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaForStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_for_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_for_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_for_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_for_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_for_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_for_statement_real_check;
 }
 
 
index 9dba138..5e7bf17 100644 (file)
@@ -394,9 +394,9 @@ static ValaSymbol* vala_generic_type_real_get_member (ValaDataType* base, const
 
 static void vala_generic_type_class_init (ValaGenericTypeClass * klass) {
        vala_generic_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_generic_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->to_qualified_string = vala_generic_type_real_to_qualified_string;
-       VALA_DATA_TYPE_CLASS (klass)->get_member = vala_generic_type_real_get_member;
+       ((ValaDataTypeClass *) klass)->copy = vala_generic_type_real_copy;
+       ((ValaDataTypeClass *) klass)->to_qualified_string = vala_generic_type_real_to_qualified_string;
+       ((ValaDataTypeClass *) klass)->get_member = vala_generic_type_real_get_member;
 }
 
 
index 2c677f7..67bc30b 100644 (file)
@@ -1643,8 +1643,8 @@ GType vala_comment_get_type (void) G_GNUC_CONST;
 enum  {
        VALA_GENIE_PARSER_DUMMY_PROPERTY
 };
-static GType vala_genie_parser_modifier_flags_get_type (void) G_GNUC_UNUSED;
-static GType vala_genie_parser_recovery_state_get_type (void) G_GNUC_UNUSED;
+static GType vala_genie_parser_modifier_flags_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
+static GType vala_genie_parser_recovery_state_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
 #define VALA_GENIE_PARSER_BUFFER_SIZE 32
 ValaGenieParser* vala_genie_parser_new (void);
 ValaGenieParser* vala_genie_parser_construct (GType object_type);
@@ -1744,10 +1744,9 @@ GType vala_array_type_get_type (void) G_GNUC_CONST;
 void vala_array_type_set_invalid_syntax (ValaArrayType* self, gboolean value);
 void vala_data_type_set_is_dynamic (ValaDataType* self, gboolean value);
 static ValaDataType* vala_genie_parser_parse_inline_array_type (ValaGenieParser* self, ValaDataType* type, GError** error);
-const gchar* vala_integer_literal_get_value (ValaIntegerLiteral* self);
 void vala_array_type_set_inline_allocated (ValaArrayType* self, gboolean value);
 void vala_array_type_set_fixed_length (ValaArrayType* self, gboolean value);
-void vala_array_type_set_length (ValaArrayType* self, gint value);
+void vala_array_type_set_length (ValaArrayType* self, ValaExpression* value);
 gboolean vala_data_type_get_value_owned (ValaDataType* self);
 static ValaList* vala_genie_parser_parse_argument_list (ValaGenieParser* self, GError** error);
 static ValaExpression* vala_genie_parser_parse_argument (ValaGenieParser* self, GError** error);
@@ -3059,7 +3058,7 @@ static gchar* vala_genie_parser_parse_identifier (ValaGenieParser* self, GError*
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_genie_parser_skip_identifier (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -3226,7 +3225,7 @@ static ValaExpression* vala_genie_parser_parse_literal (ValaGenieParser* self, G
                        _tmp41_ = vala_genie_parser_get_src (self, &_tmp40_);
                        src_begin = _tmp41_;
                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_REGEX_LITERAL, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_source_reference_unref0 (src_begin);
@@ -3434,9 +3433,9 @@ void vala_genie_parser_parse_file (ValaGenieParser* self, ValaSourceFile* source
                        const gchar* _tmp7_ = NULL;
                        _tmp6_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                        id = _tmp6_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                       goto __catch6_vala_parse_error;
+                                       goto __catch8_vala_parse_error;
                                }
                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
@@ -3449,10 +3448,10 @@ void vala_genie_parser_parse_file (ValaGenieParser* self, ValaSourceFile* source
                                gchar* _tmp10_ = NULL;
                                gint _tmp11_ = 0;
                                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_ASSIGN, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        _g_free0 (id);
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                               goto __catch6_vala_parse_error;
+                                               goto __catch8_vala_parse_error;
                                        }
                                        _g_free0 (id);
                                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -3460,10 +3459,10 @@ void vala_genie_parser_parse_file (ValaGenieParser* self, ValaSourceFile* source
                                        return;
                                }
                                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_INTEGER_LITERAL, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        _g_free0 (id);
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                               goto __catch6_vala_parse_error;
+                                               goto __catch8_vala_parse_error;
                                        }
                                        _g_free0 (id);
                                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -3477,10 +3476,10 @@ void vala_genie_parser_parse_file (ValaGenieParser* self, ValaSourceFile* source
                                vala_genie_scanner_set_indent_spaces (_tmp8_, _tmp11_);
                                _g_free0 (_tmp10_);
                                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        _g_free0 (id);
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                               goto __catch6_vala_parse_error;
+                                               goto __catch8_vala_parse_error;
                                        }
                                        _g_free0 (id);
                                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -3488,10 +3487,10 @@ void vala_genie_parser_parse_file (ValaGenieParser* self, ValaSourceFile* source
                                        return;
                                }
                                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        _g_free0 (id);
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                               goto __catch6_vala_parse_error;
+                                               goto __catch8_vala_parse_error;
                                        }
                                        _g_free0 (id);
                                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -3509,9 +3508,9 @@ void vala_genie_parser_parse_file (ValaGenieParser* self, ValaSourceFile* source
                _tmp14_ = vala_code_context_get_root (_tmp13_);
                _tmp15_ = _tmp14_;
                vala_genie_parser_parse_using_directives (self, _tmp15_, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                               goto __catch6_vala_parse_error;
+                               goto __catch8_vala_parse_error;
                        }
                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
@@ -3521,25 +3520,25 @@ void vala_genie_parser_parse_file (ValaGenieParser* self, ValaSourceFile* source
                _tmp17_ = vala_code_context_get_root (_tmp16_);
                _tmp18_ = _tmp17_;
                vala_genie_parser_parse_declarations (self, (ValaSymbol*) _tmp18_, TRUE, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                               goto __catch6_vala_parse_error;
+                               goto __catch8_vala_parse_error;
                        }
                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
                        return;
                }
        }
-       goto __finally6;
-       __catch6_vala_parse_error:
+       goto __finally8;
+       __catch8_vala_parse_error:
        {
                GError* e = NULL;
                e = _inner_error_;
                _inner_error_ = NULL;
                _g_error_free0 (e);
        }
-       __finally6:
-       if (_inner_error_ != NULL) {
+       __finally8:
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return;
@@ -3565,7 +3564,7 @@ static void vala_genie_parser_skip_symbol_name (ValaGenieParser* self, GError**
                        }
                        _tmp0_ = FALSE;
                        vala_genie_parser_skip_identifier (self, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return;
@@ -3612,7 +3611,7 @@ static ValaUnresolvedSymbol* vala_genie_parser_parse_symbol_name (ValaGenieParse
                        _tmp1_ = FALSE;
                        _tmp3_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                        name = _tmp3_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (sym);
@@ -3674,7 +3673,7 @@ static void vala_genie_parser_skip_type (ValaGenieParser* self, GError** error)
        if (_tmp5_) {
        } else {
                vala_genie_parser_skip_symbol_name (self, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -3685,7 +3684,7 @@ static void vala_genie_parser_skip_type (ValaGenieParser* self, GError** error)
                        }
                }
                vala_genie_parser_skip_type_argument_list (self, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -3730,7 +3729,7 @@ static void vala_genie_parser_skip_type (ValaGenieParser* self, GError** error)
                                        _tmp12_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                                        _tmp13_ = _tmp12_;
                                        _vala_code_node_unref0 (_tmp13_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        return;
@@ -3744,7 +3743,7 @@ static void vala_genie_parser_skip_type (ValaGenieParser* self, GError** error)
                        }
                }
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -3768,7 +3767,7 @@ static ValaExpression* vala_genie_parser_parse_regex_literal (ValaGenieParser* s
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_REGEX_LITERAL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -3780,7 +3779,7 @@ static ValaExpression* vala_genie_parser_parse_regex_literal (ValaGenieParser* s
        }
        _tmp0_ = vala_genie_parser_parse_literal (self, &_inner_error_);
        expr = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -3890,7 +3889,7 @@ static ValaDataType* vala_genie_parser_parse_type (ValaGenieParser* self, gboole
        _tmp15_ = vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_ARRAY);
        if (_tmp15_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OF, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (sym);
@@ -3910,7 +3909,7 @@ static ValaDataType* vala_genie_parser_parse_type (ValaGenieParser* self, gboole
        _tmp16_ = vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_LIST);
        if (_tmp16_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OF, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (sym);
@@ -3931,7 +3930,7 @@ static ValaDataType* vala_genie_parser_parse_type (ValaGenieParser* self, gboole
        _tmp17_ = vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_DICT);
        if (_tmp17_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OF, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (sym);
@@ -4054,7 +4053,7 @@ static ValaDataType* vala_genie_parser_parse_type (ValaGenieParser* self, gboole
                                ValaUnresolvedSymbol* _tmp52_ = NULL;
                                _tmp51_ = vala_genie_parser_parse_symbol_name (self, &_inner_error_);
                                _tmp50_ = _tmp51_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (type);
@@ -4079,7 +4078,7 @@ static ValaDataType* vala_genie_parser_parse_type (ValaGenieParser* self, gboole
                }
                _tmp54_ = vala_genie_parser_parse_type_argument_list (self, FALSE, &_inner_error_);
                _tmp53_ = _tmp54_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (type);
@@ -4269,7 +4268,7 @@ static ValaDataType* vala_genie_parser_parse_type (ValaGenieParser* self, gboole
                                                        _tmp101_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                                                        _tmp102_ = _tmp101_;
                                                        _vala_code_node_unref0 (_tmp102_);
-                                                       if (_inner_error_ != NULL) {
+                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                        g_propagate_error (error, _inner_error_);
                                                                        _vala_code_node_unref0 (type);
@@ -4290,7 +4289,7 @@ static ValaDataType* vala_genie_parser_parse_type (ValaGenieParser* self, gboole
                                        }
                                }
                                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (type);
@@ -4360,8 +4359,8 @@ static ValaDataType* vala_genie_parser_parse_inline_array_type (ValaGenieParser*
        ValaSourceLocation _tmp0_ = {0};
        gboolean _tmp1_ = FALSE;
        ValaDataType* _tmp2_ = NULL;
-       ValaDataType* _tmp32_ = NULL;
-       ValaDataType* _tmp33_ = NULL;
+       ValaDataType* _tmp23_ = NULL;
+       ValaDataType* _tmp24_ = NULL;
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_genie_parser_get_location (self, &_tmp0_);
@@ -4375,120 +4374,93 @@ static ValaDataType* vala_genie_parser_parse_inline_array_type (ValaGenieParser*
                _tmp1_ = FALSE;
        }
        if (_tmp1_) {
-               gint array_length = 0;
+               ValaExpression* array_length = NULL;
                ValaGenieTokenType _tmp4_ = 0;
                ValaArrayType* array_type = NULL;
-               ValaDataType* _tmp17_ = NULL;
-               ValaSourceLocation _tmp18_ = {0};
-               ValaSourceReference* _tmp19_ = NULL;
-               ValaSourceReference* _tmp20_ = NULL;
-               ValaArrayType* _tmp21_ = NULL;
-               ValaArrayType* _tmp22_ = NULL;
-               ValaArrayType* _tmp23_ = NULL;
-               gint _tmp24_ = 0;
-               ValaArrayType* _tmp28_ = NULL;
-               ValaDataType* _tmp29_ = NULL;
-               gboolean _tmp30_ = FALSE;
-               gboolean _tmp31_ = FALSE;
-               array_length = -1;
+               ValaDataType* _tmp8_ = NULL;
+               ValaSourceLocation _tmp9_ = {0};
+               ValaSourceReference* _tmp10_ = NULL;
+               ValaSourceReference* _tmp11_ = NULL;
+               ValaArrayType* _tmp12_ = NULL;
+               ValaArrayType* _tmp13_ = NULL;
+               ValaArrayType* _tmp14_ = NULL;
+               ValaExpression* _tmp15_ = NULL;
+               ValaArrayType* _tmp19_ = NULL;
+               ValaDataType* _tmp20_ = NULL;
+               gboolean _tmp21_ = FALSE;
+               gboolean _tmp22_ = FALSE;
+               array_length = NULL;
                _tmp4_ = vala_genie_parser_current (self);
                if (_tmp4_ != VALA_GENIE_TOKEN_TYPE_CLOSE_BRACKET) {
-                       ValaGenieTokenType _tmp5_ = 0;
-                       ValaExpression* _tmp10_ = NULL;
-                       ValaExpression* _tmp11_ = NULL;
-                       ValaIntegerLiteral* length_literal = NULL;
-                       ValaExpression* _tmp12_ = NULL;
-                       ValaIntegerLiteral* _tmp13_ = NULL;
-                       const gchar* _tmp14_ = NULL;
-                       const gchar* _tmp15_ = NULL;
-                       gint _tmp16_ = 0;
-                       _tmp5_ = vala_genie_parser_current (self);
-                       if (_tmp5_ != VALA_GENIE_TOKEN_TYPE_INTEGER_LITERAL) {
-                               gchar* _tmp6_ = NULL;
-                               gchar* _tmp7_ = NULL;
-                               GError* _tmp8_ = NULL;
-                               GError* _tmp9_ = NULL;
-                               _tmp6_ = vala_genie_parser_get_error (self, "expected `]' or integer literal");
-                               _tmp7_ = _tmp6_;
-                               _tmp8_ = g_error_new_literal (VALA_PARSE_ERROR, VALA_PARSE_ERROR_SYNTAX, _tmp7_);
-                               _tmp9_ = _tmp8_;
-                               _g_free0 (_tmp7_);
-                               _inner_error_ = _tmp9_;
-                               if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                       g_propagate_error (error, _inner_error_);
-                                       return NULL;
-                               } else {
-                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
-                                       g_clear_error (&_inner_error_);
-                                       return NULL;
-                               }
-                       }
-                       _tmp11_ = vala_genie_parser_parse_literal (self, &_inner_error_);
-                       _tmp10_ = _tmp11_;
-                       if (_inner_error_ != NULL) {
+                       ValaExpression* _tmp5_ = NULL;
+                       ValaExpression* _tmp6_ = NULL;
+                       ValaExpression* _tmp7_ = NULL;
+                       _tmp6_ = vala_genie_parser_parse_expression (self, &_inner_error_);
+                       _tmp5_ = _tmp6_;
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
+                                       _vala_code_node_unref0 (array_length);
                                        return NULL;
                                } else {
+                                       _vala_code_node_unref0 (array_length);
                                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                        g_clear_error (&_inner_error_);
                                        return NULL;
                                }
                        }
-                       _tmp12_ = _tmp10_;
-                       _tmp10_ = NULL;
-                       length_literal = G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, VALA_TYPE_INTEGER_LITERAL, ValaIntegerLiteral);
-                       _tmp13_ = length_literal;
-                       _tmp14_ = vala_integer_literal_get_value (_tmp13_);
-                       _tmp15_ = _tmp14_;
-                       _tmp16_ = atoi (_tmp15_);
-                       array_length = _tmp16_;
-                       _vala_code_node_unref0 (length_literal);
-                       _vala_code_node_unref0 (_tmp10_);
+                       _tmp7_ = _tmp5_;
+                       _tmp5_ = NULL;
+                       _vala_code_node_unref0 (array_length);
+                       array_length = _tmp7_;
+                       _vala_code_node_unref0 (_tmp5_);
                }
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
+                               _vala_code_node_unref0 (array_length);
                                return NULL;
                        } else {
+                               _vala_code_node_unref0 (array_length);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return NULL;
                        }
                }
-               _tmp17_ = type;
-               _tmp18_ = begin;
-               _tmp19_ = vala_genie_parser_get_src (self, &_tmp18_);
-               _tmp20_ = _tmp19_;
-               _tmp21_ = vala_array_type_new (_tmp17_, 1, _tmp20_);
+               _tmp8_ = type;
+               _tmp9_ = begin;
+               _tmp10_ = vala_genie_parser_get_src (self, &_tmp9_);
+               _tmp11_ = _tmp10_;
+               _tmp12_ = vala_array_type_new (_tmp8_, 1, _tmp11_);
+               _tmp13_ = _tmp12_;
+               _vala_source_reference_unref0 (_tmp11_);
+               array_type = _tmp13_;
+               _tmp14_ = array_type;
+               vala_array_type_set_inline_allocated (_tmp14_, TRUE);
+               _tmp15_ = array_length;
+               if (_tmp15_ != NULL) {
+                       ValaArrayType* _tmp16_ = NULL;
+                       ValaArrayType* _tmp17_ = NULL;
+                       ValaExpression* _tmp18_ = NULL;
+                       _tmp16_ = array_type;
+                       vala_array_type_set_fixed_length (_tmp16_, TRUE);
+                       _tmp17_ = array_type;
+                       _tmp18_ = array_length;
+                       vala_array_type_set_length (_tmp17_, _tmp18_);
+               }
+               _tmp19_ = array_type;
+               _tmp20_ = type;
+               _tmp21_ = vala_data_type_get_value_owned (_tmp20_);
                _tmp22_ = _tmp21_;
-               _vala_source_reference_unref0 (_tmp20_);
-               array_type = _tmp22_;
-               _tmp23_ = array_type;
-               vala_array_type_set_inline_allocated (_tmp23_, TRUE);
-               _tmp24_ = array_length;
-               if (_tmp24_ > 0) {
-                       ValaArrayType* _tmp25_ = NULL;
-                       ValaArrayType* _tmp26_ = NULL;
-                       gint _tmp27_ = 0;
-                       _tmp25_ = array_type;
-                       vala_array_type_set_fixed_length (_tmp25_, TRUE);
-                       _tmp26_ = array_type;
-                       _tmp27_ = array_length;
-                       vala_array_type_set_length (_tmp26_, _tmp27_);
-               }
-               _tmp28_ = array_type;
-               _tmp29_ = type;
-               _tmp30_ = vala_data_type_get_value_owned (_tmp29_);
-               _tmp31_ = _tmp30_;
-               vala_data_type_set_value_owned ((ValaDataType*) _tmp28_, _tmp31_);
+               vala_data_type_set_value_owned ((ValaDataType*) _tmp19_, _tmp22_);
                result = (ValaDataType*) array_type;
+               _vala_code_node_unref0 (array_length);
                return result;
        }
-       _tmp32_ = type;
-       _tmp33_ = _vala_code_node_ref0 (_tmp32_);
-       result = _tmp33_;
+       _tmp23_ = type;
+       _tmp24_ = _vala_code_node_ref0 (_tmp23_);
+       result = _tmp24_;
        return result;
 }
 
@@ -4523,7 +4495,7 @@ static ValaList* vala_genie_parser_parse_argument_list (ValaGenieParser* self, G
                                _tmp3_ = FALSE;
                                _tmp6_ = vala_genie_parser_parse_argument (self, &_inner_error_);
                                _tmp5_ = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (list);
@@ -4567,7 +4539,7 @@ static ValaExpression* vala_genie_parser_parse_argument (ValaGenieParser* self,
                ValaExpression* _tmp8_ = NULL;
                _tmp2_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                inner = _tmp2_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -4601,7 +4573,7 @@ static ValaExpression* vala_genie_parser_parse_argument (ValaGenieParser* self,
                        ValaExpression* _tmp16_ = NULL;
                        _tmp10_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                        inner = _tmp10_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -4632,7 +4604,7 @@ static ValaExpression* vala_genie_parser_parse_argument (ValaGenieParser* self,
                        ValaMemberAccess* _tmp22_ = NULL;
                        _tmp17_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                        expr = _tmp17_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -4679,7 +4651,7 @@ static ValaExpression* vala_genie_parser_parse_argument (ValaGenieParser* self,
                                ValaExpression* _tmp38_ = NULL;
                                _tmp28_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                                _tmp27_ = _tmp28_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (ma);
@@ -4753,7 +4725,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp4_ = NULL;
                        _tmp3_ = vala_genie_parser_parse_literal (self, &_inner_error_);
                        _tmp2_ = _tmp3_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4779,7 +4751,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp7_ = NULL;
                        _tmp6_ = vala_genie_parser_parse_assert_expression (self, &_inner_error_);
                        _tmp5_ = _tmp6_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4805,7 +4777,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaInitializerList* _tmp10_ = NULL;
                        _tmp9_ = vala_genie_parser_parse_initializer (self, &_inner_error_);
                        _tmp8_ = _tmp9_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4831,7 +4803,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp13_ = NULL;
                        _tmp12_ = vala_genie_parser_parse_tuple (self, &_inner_error_);
                        _tmp11_ = _tmp12_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4857,7 +4829,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp16_ = NULL;
                        _tmp15_ = vala_genie_parser_parse_regex_literal (self, &_inner_error_);
                        _tmp14_ = _tmp15_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4883,7 +4855,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp19_ = NULL;
                        _tmp18_ = vala_genie_parser_parse_template (self, &_inner_error_);
                        _tmp17_ = _tmp18_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4909,7 +4881,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp22_ = NULL;
                        _tmp21_ = vala_genie_parser_parse_this_access (self, &_inner_error_);
                        _tmp20_ = _tmp21_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4935,7 +4907,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp25_ = NULL;
                        _tmp24_ = vala_genie_parser_parse_base_access (self, &_inner_error_);
                        _tmp23_ = _tmp24_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4961,7 +4933,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp28_ = NULL;
                        _tmp27_ = vala_genie_parser_parse_object_or_array_creation_expression (self, &_inner_error_);
                        _tmp26_ = _tmp27_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4987,7 +4959,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp31_ = NULL;
                        _tmp30_ = vala_genie_parser_parse_print_expression (self, &_inner_error_);
                        _tmp29_ = _tmp30_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -5013,7 +4985,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp34_ = NULL;
                        _tmp33_ = vala_genie_parser_parse_sizeof_expression (self, &_inner_error_);
                        _tmp32_ = _tmp33_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -5039,7 +5011,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp37_ = NULL;
                        _tmp36_ = vala_genie_parser_parse_typeof_expression (self, &_inner_error_);
                        _tmp35_ = _tmp36_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -5065,7 +5037,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp40_ = NULL;
                        _tmp39_ = vala_genie_parser_parse_yield_expression (self, &_inner_error_);
                        _tmp38_ = _tmp39_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -5091,7 +5063,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                        ValaExpression* _tmp43_ = NULL;
                        _tmp42_ = vala_genie_parser_parse_simple_name (self, &_inner_error_);
                        _tmp41_ = _tmp42_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -5132,7 +5104,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                                _tmp48_ = expr;
                                _tmp49_ = vala_genie_parser_parse_member_access (self, &_tmp47_, _tmp48_, &_inner_error_);
                                _tmp46_ = _tmp49_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (expr);
@@ -5162,7 +5134,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                                _tmp53_ = expr;
                                _tmp54_ = vala_genie_parser_parse_pointer_member_access (self, &_tmp52_, _tmp53_, &_inner_error_);
                                _tmp51_ = _tmp54_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (expr);
@@ -5192,7 +5164,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                                _tmp58_ = expr;
                                _tmp59_ = vala_genie_parser_parse_method_call (self, &_tmp57_, _tmp58_, &_inner_error_);
                                _tmp56_ = _tmp59_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (expr);
@@ -5222,7 +5194,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                                _tmp63_ = expr;
                                _tmp64_ = vala_genie_parser_parse_element_access (self, &_tmp62_, _tmp63_, &_inner_error_);
                                _tmp61_ = _tmp64_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (expr);
@@ -5252,7 +5224,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                                _tmp68_ = expr;
                                _tmp69_ = vala_genie_parser_parse_post_increment_expression (self, &_tmp67_, _tmp68_, &_inner_error_);
                                _tmp66_ = _tmp69_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (expr);
@@ -5282,7 +5254,7 @@ static ValaExpression* vala_genie_parser_parse_primary_expression (ValaGeniePars
                                _tmp73_ = expr;
                                _tmp74_ = vala_genie_parser_parse_post_decrement_expression (self, &_tmp72_, _tmp73_, &_inner_error_);
                                _tmp71_ = _tmp74_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (expr);
@@ -5335,7 +5307,7 @@ static ValaExpression* vala_genie_parser_parse_simple_name (ValaGenieParser* sel
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
        id = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5347,7 +5319,7 @@ static ValaExpression* vala_genie_parser_parse_simple_name (ValaGenieParser* sel
        }
        _tmp2_ = vala_genie_parser_parse_type_argument_list (self, TRUE, &_inner_error_);
        type_arg_list = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -5439,7 +5411,7 @@ static ValaExpression* vala_genie_parser_parse_template (ValaGenieParser* self,
        _tmp1_ = vala_template_new (NULL);
        template = _tmp1_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_TEMPLATE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (template);
@@ -5462,7 +5434,7 @@ static ValaExpression* vala_genie_parser_parse_template (ValaGenieParser* self,
                }
                _tmp4_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                _tmp3_ = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (template);
@@ -5477,7 +5449,7 @@ static ValaExpression* vala_genie_parser_parse_template (ValaGenieParser* self,
                _tmp5_ = template;
                vala_template_add_expression (_tmp5_, _tmp3_);
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_COMMA, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (_tmp3_);
@@ -5494,7 +5466,7 @@ static ValaExpression* vala_genie_parser_parse_template (ValaGenieParser* self,
                _vala_code_node_unref0 (_tmp3_);
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_TEMPLATE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (template);
@@ -5531,7 +5503,7 @@ static ValaExpression* vala_genie_parser_parse_tuple (ValaGenieParser* self, GEr
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5563,7 +5535,7 @@ static ValaExpression* vala_genie_parser_parse_tuple (ValaGenieParser* self, GEr
                                _tmp3_ = FALSE;
                                _tmp6_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                                _tmp5_ = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (expr_list);
@@ -5582,7 +5554,7 @@ static ValaExpression* vala_genie_parser_parse_tuple (ValaGenieParser* self, GEr
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (expr_list);
@@ -5679,7 +5651,7 @@ static ValaExpression* vala_genie_parser_parse_member_access (ValaGenieParser* s
        g_return_val_if_fail (begin != NULL, NULL);
        g_return_val_if_fail (inner != NULL, NULL);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DOT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5691,7 +5663,7 @@ static ValaExpression* vala_genie_parser_parse_member_access (ValaGenieParser* s
        }
        _tmp0_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
        id = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5703,7 +5675,7 @@ static ValaExpression* vala_genie_parser_parse_member_access (ValaGenieParser* s
        }
        _tmp1_ = vala_genie_parser_parse_type_argument_list (self, TRUE, &_inner_error_);
        type_arg_list = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -5799,7 +5771,7 @@ static ValaExpression* vala_genie_parser_parse_pointer_member_access (ValaGenieP
        g_return_val_if_fail (begin != NULL, NULL);
        g_return_val_if_fail (inner != NULL, NULL);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OP_PTR, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5811,7 +5783,7 @@ static ValaExpression* vala_genie_parser_parse_pointer_member_access (ValaGenieP
        }
        _tmp0_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
        id = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5823,7 +5795,7 @@ static ValaExpression* vala_genie_parser_parse_pointer_member_access (ValaGenieP
        }
        _tmp1_ = vala_genie_parser_parse_type_argument_list (self, TRUE, &_inner_error_);
        type_arg_list = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -5937,7 +5909,7 @@ static ValaList* vala_genie_parser_parse_print_argument_list (ValaGenieParser* s
                                _tmp4_ = FALSE;
                                _tmp6_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                                p_expr = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (list);
@@ -6102,7 +6074,7 @@ static ValaExpression* vala_genie_parser_parse_print_expression (ValaGenieParser
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_PRINT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6123,7 +6095,7 @@ static ValaExpression* vala_genie_parser_parse_print_expression (ValaGenieParser
        expr = _tmp6_;
        _tmp7_ = vala_genie_parser_parse_print_argument_list (self, &_inner_error_);
        arg_list = _tmp7_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -6138,7 +6110,7 @@ static ValaExpression* vala_genie_parser_parse_print_expression (ValaGenieParser
        _tmp8_ = parens;
        if (_tmp8_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (arg_list);
@@ -6240,7 +6212,7 @@ static ValaExpression* vala_genie_parser_parse_assert_expression (ValaGenieParse
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_ASSERT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6261,7 +6233,7 @@ static ValaExpression* vala_genie_parser_parse_assert_expression (ValaGenieParse
        expr = _tmp6_;
        _tmp7_ = vala_genie_parser_parse_argument_list (self, &_inner_error_);
        arg_list = _tmp7_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -6276,7 +6248,7 @@ static ValaExpression* vala_genie_parser_parse_assert_expression (ValaGenieParse
        _tmp8_ = parens;
        if (_tmp8_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (arg_list);
@@ -6366,7 +6338,7 @@ static ValaExpression* vala_genie_parser_parse_method_call (ValaGenieParser* sel
        g_return_val_if_fail (begin != NULL, NULL);
        g_return_val_if_fail (inner != NULL, NULL);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6378,7 +6350,7 @@ static ValaExpression* vala_genie_parser_parse_method_call (ValaGenieParser* sel
        }
        _tmp0_ = vala_genie_parser_parse_argument_list (self, &_inner_error_);
        arg_list = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6389,7 +6361,7 @@ static ValaExpression* vala_genie_parser_parse_method_call (ValaGenieParser* sel
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (arg_list);
@@ -6403,7 +6375,7 @@ static ValaExpression* vala_genie_parser_parse_method_call (ValaGenieParser* sel
        }
        _tmp1_ = vala_genie_parser_parse_object_initializer (self, &_inner_error_);
        init_list = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (arg_list);
@@ -6634,7 +6606,7 @@ static ValaExpression* vala_genie_parser_parse_element_access (ValaGenieParser*
        g_return_val_if_fail (begin != NULL, NULL);
        g_return_val_if_fail (inner != NULL, NULL);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_BRACKET, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6646,7 +6618,7 @@ static ValaExpression* vala_genie_parser_parse_element_access (ValaGenieParser*
        }
        _tmp0_ = vala_genie_parser_parse_expression_list (self, &_inner_error_);
        index_list = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6673,7 +6645,7 @@ static ValaExpression* vala_genie_parser_parse_element_access (ValaGenieParser*
                ValaExpression* _tmp8_ = NULL;
                _tmp7_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                _tmp6_ = _tmp7_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (stop);
@@ -6694,7 +6666,7 @@ static ValaExpression* vala_genie_parser_parse_element_access (ValaGenieParser*
                _vala_code_node_unref0 (_tmp6_);
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (stop);
@@ -6834,7 +6806,7 @@ static ValaList* vala_genie_parser_parse_expression_list (ValaGenieParser* self,
                        _tmp2_ = FALSE;
                        _tmp5_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                        _tmp4_ = _tmp5_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (list);
@@ -6870,7 +6842,7 @@ static ValaExpression* vala_genie_parser_parse_this_access (ValaGenieParser* sel
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_THIS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6905,7 +6877,7 @@ static ValaExpression* vala_genie_parser_parse_base_access (ValaGenieParser* sel
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_SUPER, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6939,7 +6911,7 @@ static ValaExpression* vala_genie_parser_parse_post_increment_expression (ValaGe
        g_return_val_if_fail (begin != NULL, NULL);
        g_return_val_if_fail (inner != NULL, NULL);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OP_INC, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6974,7 +6946,7 @@ static ValaExpression* vala_genie_parser_parse_post_decrement_expression (ValaGe
        g_return_val_if_fail (begin != NULL, NULL);
        g_return_val_if_fail (inner != NULL, NULL);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OP_DEC, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7014,7 +6986,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_NEW, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7033,7 +7005,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
                ValaDataType* _tmp4_ = NULL;
                ValaExpression* _tmp5_ = NULL;
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OF, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -7045,7 +7017,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
                }
                _tmp2_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                mtype = _tmp2_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -7059,7 +7031,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
                _tmp4_ = mtype;
                _tmp5_ = vala_genie_parser_parse_array_creation_expression (self, &_tmp3_, _tmp4_, &_inner_error_);
                expr = _tmp5_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (mtype);
@@ -7084,7 +7056,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
                ValaDataType* _tmp9_ = NULL;
                ValaExpression* _tmp10_ = NULL;
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OF, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -7096,7 +7068,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
                }
                _tmp7_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                mtype = _tmp7_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -7110,7 +7082,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
                _tmp9_ = mtype;
                _tmp10_ = vala_genie_parser_parse_list_creation_expression (self, &_tmp8_, _tmp9_, &_inner_error_);
                expr = _tmp10_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (mtype);
@@ -7138,7 +7110,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
                ValaDataType* _tmp16_ = NULL;
                ValaExpression* _tmp17_ = NULL;
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OF, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -7150,7 +7122,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
                }
                _tmp12_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                mtype1 = _tmp12_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -7161,7 +7133,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
                        }
                }
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_COMMA, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (mtype1);
@@ -7175,7 +7147,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
                }
                _tmp13_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                mtype2 = _tmp13_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (mtype1);
@@ -7192,7 +7164,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
                _tmp16_ = mtype2;
                _tmp17_ = vala_genie_parser_parse_dict_creation_expression (self, &_tmp14_, _tmp15_, _tmp16_, &_inner_error_);
                expr = _tmp17_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (mtype2);
@@ -7213,7 +7185,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
        }
        _tmp18_ = vala_genie_parser_parse_member_name (self, NULL, &_inner_error_);
        member = _tmp18_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7227,7 +7199,7 @@ static ValaExpression* vala_genie_parser_parse_object_or_array_creation_expressi
        _tmp20_ = member;
        _tmp21_ = vala_genie_parser_parse_object_creation_expression (self, &_tmp19_, _tmp20_, &_inner_error_);
        expr = _tmp21_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (member);
@@ -7272,7 +7244,7 @@ static ValaExpression* vala_genie_parser_parse_object_creation_expression (ValaG
                ValaList* _tmp4_ = NULL;
                _tmp3_ = vala_genie_parser_parse_argument_list (self, &_inner_error_);
                _tmp2_ = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (arg_list);
@@ -7289,7 +7261,7 @@ static ValaExpression* vala_genie_parser_parse_object_creation_expression (ValaG
                _vala_iterable_unref0 (arg_list);
                arg_list = _tmp4_;
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (_tmp2_);
@@ -7314,7 +7286,7 @@ static ValaExpression* vala_genie_parser_parse_object_creation_expression (ValaG
        }
        _tmp7_ = vala_genie_parser_parse_object_initializer (self, &_inner_error_);
        init_list = _tmp7_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (arg_list);
@@ -7577,7 +7549,7 @@ static ValaExpression* vala_genie_parser_parse_array_creation_expression (ValaGe
                                                ValaExpression* _tmp30_ = NULL;
                                                _tmp29_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                                                _tmp28_ = _tmp29_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                _vala_code_node_unref0 (size);
@@ -7609,7 +7581,7 @@ static ValaExpression* vala_genie_parser_parse_array_creation_expression (ValaGe
                        _tmp33_ = has_bracket;
                        if (_tmp33_) {
                                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (etype);
@@ -7634,7 +7606,7 @@ static ValaExpression* vala_genie_parser_parse_array_creation_expression (ValaGe
                ValaInitializerList* _tmp37_ = NULL;
                _tmp36_ = vala_genie_parser_parse_initializer (self, &_inner_error_);
                _tmp35_ = _tmp36_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (initializer);
@@ -7886,7 +7858,7 @@ static ValaList* vala_genie_parser_parse_object_initializer (ValaGenieParser* se
                                _tmp3_ = FALSE;
                                _tmp6_ = vala_genie_parser_parse_member_initializer (self, &_inner_error_);
                                _tmp5_ = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (list);
@@ -7904,7 +7876,7 @@ static ValaList* vala_genie_parser_parse_object_initializer (ValaGenieParser* se
                        }
                }
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_BRACE, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (list);
@@ -7943,7 +7915,7 @@ static ValaMemberInitializer* vala_genie_parser_parse_member_initializer (ValaGe
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
        id = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7954,7 +7926,7 @@ static ValaMemberInitializer* vala_genie_parser_parse_member_initializer (ValaGe
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_ASSIGN, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -7968,7 +7940,7 @@ static ValaMemberInitializer* vala_genie_parser_parse_member_initializer (ValaGe
        }
        _tmp2_ = vala_genie_parser_parse_expression (self, &_inner_error_);
        expr = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -8011,7 +7983,7 @@ static ValaExpression* vala_genie_parser_parse_yield_expression (ValaGenieParser
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_YIELD, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8023,7 +7995,7 @@ static ValaExpression* vala_genie_parser_parse_yield_expression (ValaGenieParser
        }
        _tmp0_ = vala_genie_parser_parse_expression (self, &_inner_error_);
        expr = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8111,7 +8083,7 @@ static ValaExpression* vala_genie_parser_parse_sizeof_expression (ValaGenieParse
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_SIZEOF, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8122,7 +8094,7 @@ static ValaExpression* vala_genie_parser_parse_sizeof_expression (ValaGenieParse
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8134,7 +8106,7 @@ static ValaExpression* vala_genie_parser_parse_sizeof_expression (ValaGenieParse
        }
        _tmp1_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
        type = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8145,7 +8117,7 @@ static ValaExpression* vala_genie_parser_parse_sizeof_expression (ValaGenieParse
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -8187,7 +8159,7 @@ static ValaExpression* vala_genie_parser_parse_typeof_expression (ValaGenieParse
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_TYPEOF, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8198,7 +8170,7 @@ static ValaExpression* vala_genie_parser_parse_typeof_expression (ValaGenieParse
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8210,7 +8182,7 @@ static ValaExpression* vala_genie_parser_parse_typeof_expression (ValaGenieParse
        }
        _tmp1_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
        type = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8221,7 +8193,7 @@ static ValaExpression* vala_genie_parser_parse_typeof_expression (ValaGenieParse
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -8323,7 +8295,7 @@ static ValaExpression* vala_genie_parser_parse_unary_expression (ValaGenieParser
                vala_genie_parser_next (self);
                _tmp4_ = vala_genie_parser_parse_unary_expression (self, &_inner_error_);
                op = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -8376,7 +8348,7 @@ static ValaExpression* vala_genie_parser_parse_unary_expression (ValaGenieParser
                        vala_genie_parser_next (self);
                        _tmp19_ = vala_genie_parser_parse_unary_expression (self, &_inner_error_);
                        op = _tmp19_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -8420,7 +8392,7 @@ static ValaExpression* vala_genie_parser_parse_unary_expression (ValaGenieParser
                                                ValaExpression* _tmp34_ = NULL;
                                                _tmp28_ = vala_genie_parser_parse_unary_expression (self, &_inner_error_);
                                                op = _tmp28_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                return NULL;
@@ -8455,7 +8427,7 @@ static ValaExpression* vala_genie_parser_parse_unary_expression (ValaGenieParser
                                        gboolean _tmp36_ = FALSE;
                                        _tmp35_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                                        type = _tmp35_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        return NULL;
@@ -8503,7 +8475,7 @@ static ValaExpression* vala_genie_parser_parse_unary_expression (ValaGenieParser
                                                                ValaExpression* _tmp45_ = NULL;
                                                                _tmp38_ = vala_genie_parser_parse_unary_expression (self, &_inner_error_);
                                                                inner = _tmp38_;
-                                                               if (_inner_error_ != NULL) {
+                                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                                g_propagate_error (error, _inner_error_);
                                                                                _vala_code_node_unref0 (type);
@@ -8553,7 +8525,7 @@ static ValaExpression* vala_genie_parser_parse_unary_expression (ValaGenieParser
                                                ValaExpression* _tmp53_ = NULL;
                                                _tmp47_ = vala_genie_parser_parse_unary_expression (self, &_inner_error_);
                                                inner = _tmp47_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                return NULL;
@@ -8598,7 +8570,7 @@ static ValaExpression* vala_genie_parser_parse_unary_expression (ValaGenieParser
                        vala_genie_parser_next (self);
                        _tmp55_ = vala_genie_parser_parse_unary_expression (self, &_inner_error_);
                        op = _tmp55_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -8632,7 +8604,7 @@ static ValaExpression* vala_genie_parser_parse_unary_expression (ValaGenieParser
                        vala_genie_parser_next (self);
                        _tmp62_ = vala_genie_parser_parse_unary_expression (self, &_inner_error_);
                        op = _tmp62_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -8660,7 +8632,7 @@ static ValaExpression* vala_genie_parser_parse_unary_expression (ValaGenieParser
        }
        _tmp69_ = vala_genie_parser_parse_primary_expression (self, &_inner_error_);
        expr = _tmp69_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8772,7 +8744,7 @@ static ValaExpression* vala_genie_parser_parse_multiplicative_expression (ValaGe
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_unary_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8814,7 +8786,7 @@ static ValaExpression* vala_genie_parser_parse_multiplicative_expression (ValaGe
                                vala_genie_parser_next (self);
                                _tmp6_ = vala_genie_parser_parse_unary_expression (self, &_inner_error_);
                                right = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (left);
@@ -8864,7 +8836,7 @@ static ValaExpression* vala_genie_parser_parse_additive_expression (ValaGeniePar
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_multiplicative_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8905,7 +8877,7 @@ static ValaExpression* vala_genie_parser_parse_additive_expression (ValaGeniePar
                                vala_genie_parser_next (self);
                                _tmp6_ = vala_genie_parser_parse_multiplicative_expression (self, &_inner_error_);
                                right = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (left);
@@ -8955,7 +8927,7 @@ static ValaExpression* vala_genie_parser_parse_shift_expression (ValaGenieParser
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_additive_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8988,7 +8960,7 @@ static ValaExpression* vala_genie_parser_parse_shift_expression (ValaGenieParser
                                vala_genie_parser_next (self);
                                _tmp4_ = vala_genie_parser_parse_additive_expression (self, &_inner_error_);
                                right = _tmp4_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (left);
@@ -9063,7 +9035,7 @@ static ValaExpression* vala_genie_parser_parse_shift_expression (ValaGenieParser
                                        vala_genie_parser_next (self);
                                        _tmp24_ = vala_genie_parser_parse_additive_expression (self, &_inner_error_);
                                        right = _tmp24_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (left);
@@ -9116,7 +9088,7 @@ static ValaExpression* vala_genie_parser_parse_relational_expression (ValaGenieP
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_shift_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9158,7 +9130,7 @@ static ValaExpression* vala_genie_parser_parse_relational_expression (ValaGenieP
                                vala_genie_parser_next (self);
                                _tmp6_ = vala_genie_parser_parse_shift_expression (self, &_inner_error_);
                                right = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (left);
@@ -9208,7 +9180,7 @@ static ValaExpression* vala_genie_parser_parse_relational_expression (ValaGenieP
                                        ValaBinaryExpression* _tmp24_ = NULL;
                                        _tmp17_ = vala_genie_parser_parse_shift_expression (self, &_inner_error_);
                                        right = _tmp17_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (left);
@@ -9255,7 +9227,7 @@ static ValaExpression* vala_genie_parser_parse_relational_expression (ValaGenieP
                                                vala_genie_parser_next (self);
                                                _tmp26_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                                                type = _tmp26_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                _vala_code_node_unref0 (left);
@@ -9292,7 +9264,7 @@ static ValaExpression* vala_genie_parser_parse_relational_expression (ValaGenieP
                                                vala_genie_parser_next (self);
                                                _tmp33_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                                                type = _tmp33_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                _vala_code_node_unref0 (left);
@@ -9344,7 +9316,7 @@ static ValaExpression* vala_genie_parser_parse_equality_expression (ValaGeniePar
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_relational_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9398,7 +9370,7 @@ static ValaExpression* vala_genie_parser_parse_equality_expression (ValaGeniePar
                                vala_genie_parser_next (self);
                                _tmp9_ = vala_genie_parser_parse_relational_expression (self, &_inner_error_);
                                right = _tmp9_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (left);
@@ -9447,7 +9419,7 @@ static ValaExpression* vala_genie_parser_parse_and_expression (ValaGenieParser*
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_equality_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9473,7 +9445,7 @@ static ValaExpression* vala_genie_parser_parse_and_expression (ValaGenieParser*
                }
                _tmp3_ = vala_genie_parser_parse_equality_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -9513,7 +9485,7 @@ static ValaExpression* vala_genie_parser_parse_exclusive_or_expression (ValaGeni
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_and_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9539,7 +9511,7 @@ static ValaExpression* vala_genie_parser_parse_exclusive_or_expression (ValaGeni
                }
                _tmp3_ = vala_genie_parser_parse_and_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -9579,7 +9551,7 @@ static ValaExpression* vala_genie_parser_parse_inclusive_or_expression (ValaGeni
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_exclusive_or_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9605,7 +9577,7 @@ static ValaExpression* vala_genie_parser_parse_inclusive_or_expression (ValaGeni
                }
                _tmp3_ = vala_genie_parser_parse_exclusive_or_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -9645,7 +9617,7 @@ static ValaExpression* vala_genie_parser_parse_in_expression (ValaGenieParser* s
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_inclusive_or_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9671,7 +9643,7 @@ static ValaExpression* vala_genie_parser_parse_in_expression (ValaGenieParser* s
                }
                _tmp3_ = vala_genie_parser_parse_inclusive_or_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -9711,7 +9683,7 @@ static ValaExpression* vala_genie_parser_parse_conditional_and_expression (ValaG
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_in_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9737,7 +9709,7 @@ static ValaExpression* vala_genie_parser_parse_conditional_and_expression (ValaG
                }
                _tmp3_ = vala_genie_parser_parse_in_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -9777,7 +9749,7 @@ static ValaExpression* vala_genie_parser_parse_conditional_or_expression (ValaGe
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_conditional_and_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9803,7 +9775,7 @@ static ValaExpression* vala_genie_parser_parse_conditional_or_expression (ValaGe
                }
                _tmp3_ = vala_genie_parser_parse_conditional_and_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -9844,7 +9816,7 @@ static ValaExpression* vala_genie_parser_parse_conditional_expression (ValaGenie
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_conditional_or_expression (self, &_inner_error_);
        condition = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9870,7 +9842,7 @@ static ValaExpression* vala_genie_parser_parse_conditional_expression (ValaGenie
                ValaExpression* _tmp12_ = NULL;
                _tmp3_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                true_expr = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (condition);
@@ -9883,7 +9855,7 @@ static ValaExpression* vala_genie_parser_parse_conditional_expression (ValaGenie
                        }
                }
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_COLON, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (true_expr);
@@ -9899,7 +9871,7 @@ static ValaExpression* vala_genie_parser_parse_conditional_expression (ValaGenie
                }
                _tmp4_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                false_expr = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (true_expr);
@@ -9968,7 +9940,7 @@ static ValaParameter* vala_genie_parser_parse_lambda_parameter (ValaGenieParser*
        }
        _tmp3_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
        id = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -10012,7 +9984,7 @@ static ValaExpression* vala_genie_parser_parse_lambda_expression (ValaGenieParse
        _tmp2_ = vala_array_list_new (VALA_TYPE_PARAMETER, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp1_);
        params = (ValaList*) _tmp2_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DEF, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (params);
@@ -10046,7 +10018,7 @@ static ValaExpression* vala_genie_parser_parse_lambda_expression (ValaGenieParse
                                        _tmp5_ = FALSE;
                                        _tmp8_ = vala_genie_parser_parse_lambda_parameter (self, &_inner_error_);
                                        _tmp7_ = _tmp8_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_iterable_unref0 (params);
@@ -10065,7 +10037,7 @@ static ValaExpression* vala_genie_parser_parse_lambda_expression (ValaGenieParse
                        }
                }
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (params);
@@ -10083,7 +10055,7 @@ static ValaExpression* vala_genie_parser_parse_lambda_expression (ValaGenieParse
                ValaList* _tmp12_ = NULL;
                _tmp11_ = vala_genie_parser_parse_lambda_parameter (self, &_inner_error_);
                _tmp10_ = _tmp11_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (params);
@@ -10110,7 +10082,7 @@ static ValaExpression* vala_genie_parser_parse_lambda_expression (ValaGenieParse
                ValaLambdaExpression* _tmp19_ = NULL;
                _tmp14_ = vala_genie_parser_parse_block (self, &_inner_error_);
                block = _tmp14_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (lambda);
@@ -10143,7 +10115,7 @@ static ValaExpression* vala_genie_parser_parse_lambda_expression (ValaGenieParse
                ValaLambdaExpression* _tmp25_ = NULL;
                _tmp20_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                expr = _tmp20_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (lambda);
@@ -10166,7 +10138,7 @@ static ValaExpression* vala_genie_parser_parse_lambda_expression (ValaGenieParse
                lambda = _tmp25_;
                _vala_source_reference_unref0 (_tmp24_);
                vala_genie_parser_expect_terminator (self, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (expr);
@@ -10315,7 +10287,7 @@ static ValaExpression* vala_genie_parser_parse_expression (ValaGenieParser* self
                ValaExpression* _tmp1_ = NULL;
                _tmp1_ = vala_genie_parser_parse_lambda_expression (self, &_inner_error_);
                lambda = _tmp1_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -10335,7 +10307,7 @@ static ValaExpression* vala_genie_parser_parse_expression (ValaGenieParser* self
        begin = _tmp2_;
        _tmp3_ = vala_genie_parser_parse_conditional_expression (self, &_inner_error_);
        expr = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -10367,7 +10339,7 @@ static ValaExpression* vala_genie_parser_parse_expression (ValaGenieParser* self
                        vala_genie_parser_next (self);
                        _tmp7_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                        rhs = _tmp7_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -10443,7 +10415,7 @@ static ValaExpression* vala_genie_parser_parse_expression (ValaGenieParser* self
                                        vala_genie_parser_next (self);
                                        _tmp29_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                                        rhs = _tmp29_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (expr);
@@ -10522,7 +10494,7 @@ static ValaStatement* vala_genie_parser_get_for_statement_type (ValaGenieParser*
                ValaStatement* _tmp9_ = NULL;
                _tmp8_ = vala_genie_parser_parse_foreach_statement (self, &_inner_error_);
                _tmp7_ = _tmp8_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -10543,7 +10515,7 @@ static ValaStatement* vala_genie_parser_get_for_statement_type (ValaGenieParser*
                ValaStatement* _tmp12_ = NULL;
                _tmp11_ = vala_genie_parser_parse_for_statement (self, &_inner_error_);
                _tmp10_ = _tmp11_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -10635,10 +10607,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                                        vala_genie_parser_next (self);
                                                }
                                                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DEDENT, &_inner_error_);
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        _vala_code_node_unref0 (stmt);
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                               goto __catch7_vala_parse_error;
+                                                               goto __catch9_vala_parse_error;
                                                        }
                                                        _vala_code_node_unref0 (stmt);
                                                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10655,10 +10627,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                                        vala_genie_parser_next (self);
                                                }
                                                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        _vala_code_node_unref0 (stmt);
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                               goto __catch7_vala_parse_error;
+                                                               goto __catch9_vala_parse_error;
                                                        }
                                                        _vala_code_node_unref0 (stmt);
                                                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10682,10 +10654,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaBlock* _tmp20_ = NULL;
                                        _tmp19_ = vala_genie_parser_parse_block (self, &_inner_error_);
                                        _tmp18_ = _tmp19_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10707,10 +10679,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp23_ = NULL;
                                        _tmp22_ = vala_genie_parser_parse_empty_statement (self, &_inner_error_);
                                        _tmp21_ = _tmp22_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10732,10 +10704,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp26_ = NULL;
                                        _tmp25_ = vala_genie_parser_parse_expression_statement (self, &_inner_error_);
                                        _tmp24_ = _tmp25_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10756,10 +10728,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp29_ = NULL;
                                        _tmp28_ = vala_genie_parser_parse_if_statement (self, &_inner_error_);
                                        _tmp27_ = _tmp28_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10780,10 +10752,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp32_ = NULL;
                                        _tmp31_ = vala_genie_parser_parse_switch_statement (self, &_inner_error_);
                                        _tmp30_ = _tmp31_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10804,10 +10776,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp35_ = NULL;
                                        _tmp34_ = vala_genie_parser_parse_while_statement (self, &_inner_error_);
                                        _tmp33_ = _tmp34_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10828,10 +10800,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp38_ = NULL;
                                        _tmp37_ = vala_genie_parser_parse_do_statement (self, &_inner_error_);
                                        _tmp36_ = _tmp37_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10852,10 +10824,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp41_ = NULL;
                                        _tmp40_ = vala_genie_parser_get_for_statement_type (self, &_inner_error_);
                                        _tmp39_ = _tmp40_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10876,10 +10848,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp44_ = NULL;
                                        _tmp43_ = vala_genie_parser_parse_break_statement (self, &_inner_error_);
                                        _tmp42_ = _tmp43_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10900,10 +10872,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp47_ = NULL;
                                        _tmp46_ = vala_genie_parser_parse_continue_statement (self, &_inner_error_);
                                        _tmp45_ = _tmp46_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10924,10 +10896,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp50_ = NULL;
                                        _tmp49_ = vala_genie_parser_parse_return_statement (self, &_inner_error_);
                                        _tmp48_ = _tmp49_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10948,10 +10920,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp53_ = NULL;
                                        _tmp52_ = vala_genie_parser_parse_throw_statement (self, &_inner_error_);
                                        _tmp51_ = _tmp52_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10972,10 +10944,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp56_ = NULL;
                                        _tmp55_ = vala_genie_parser_parse_try_statement (self, &_inner_error_);
                                        _tmp54_ = _tmp55_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10996,10 +10968,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp59_ = NULL;
                                        _tmp58_ = vala_genie_parser_parse_lock_statement (self, &_inner_error_);
                                        _tmp57_ = _tmp58_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -11020,10 +10992,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp62_ = NULL;
                                        _tmp61_ = vala_genie_parser_parse_delete_statement (self, &_inner_error_);
                                        _tmp60_ = _tmp61_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -11043,10 +11015,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        is_decl = TRUE;
                                        _tmp63_ = block;
                                        vala_genie_parser_parse_local_variable_declarations (self, _tmp63_, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -11062,10 +11034,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp66_ = NULL;
                                        _tmp65_ = vala_genie_parser_parse_yield_statement (self, &_inner_error_);
                                        _tmp64_ = _tmp65_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -11092,10 +11064,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        ValaStatement* _tmp69_ = NULL;
                                        _tmp68_ = vala_genie_parser_parse_expression_statement (self, &_inner_error_);
                                        _tmp67_ = _tmp68_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -11116,10 +11088,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                        gboolean _tmp71_ = FALSE;
                                        _tmp70_ = vala_genie_parser_is_expression (self, &_inner_error_);
                                        is_expr = _tmp70_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch7_vala_parse_error;
+                                                       goto __catch9_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -11133,10 +11105,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                                ValaStatement* _tmp74_ = NULL;
                                                _tmp73_ = vala_genie_parser_parse_expression_statement (self, &_inner_error_);
                                                _tmp72_ = _tmp73_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        _vala_code_node_unref0 (stmt);
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                               goto __catch7_vala_parse_error;
+                                                               goto __catch9_vala_parse_error;
                                                        }
                                                        _vala_code_node_unref0 (stmt);
                                                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -11153,10 +11125,10 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                                                is_decl = TRUE;
                                                _tmp75_ = block;
                                                vala_genie_parser_parse_local_variable_declarations (self, _tmp75_, &_inner_error_);
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        _vala_code_node_unref0 (stmt);
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                               goto __catch7_vala_parse_error;
+                                                               goto __catch9_vala_parse_error;
                                                        }
                                                        _vala_code_node_unref0 (stmt);
                                                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -11177,8 +11149,8 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                        }
                        _vala_code_node_unref0 (stmt);
                }
-               goto __finally7;
-               __catch7_vala_parse_error:
+               goto __finally9;
+               __catch9_vala_parse_error:
                {
                        GError* e = NULL;
                        ValaGenieParserRecoveryState _tmp79_ = 0;
@@ -11191,8 +11163,8 @@ static void vala_genie_parser_parse_statements (ValaGenieParser* self, ValaBlock
                        }
                        _g_error_free0 (e);
                }
-               __finally7:
-               if (_inner_error_ != NULL) {
+               __finally9:
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -11216,7 +11188,7 @@ static gboolean vala_genie_parser_is_expression (ValaGenieParser* self, GError**
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_skip_type (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return FALSE;
@@ -11285,7 +11257,7 @@ static ValaBlock* vala_genie_parser_parse_embedded_statement (ValaGenieParser* s
                ValaBlock* _tmp1_ = NULL;
                _tmp1_ = vala_genie_parser_parse_block (self, &_inner_error_);
                block = _tmp1_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -11311,7 +11283,7 @@ static ValaBlock* vala_genie_parser_parse_embedded_statement (ValaGenieParser* s
        block = _tmp8_;
        _tmp10_ = vala_genie_parser_parse_embedded_statement_without_block (self, &_inner_error_);
        _tmp9_ = _tmp10_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (block);
@@ -11346,7 +11318,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp3_ = NULL;
                        _tmp2_ = vala_genie_parser_parse_empty_statement (self, &_inner_error_);
                        _tmp1_ = _tmp2_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11369,7 +11341,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp6_ = NULL;
                        _tmp5_ = vala_genie_parser_parse_if_statement (self, &_inner_error_);
                        _tmp4_ = _tmp5_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11392,7 +11364,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp9_ = NULL;
                        _tmp8_ = vala_genie_parser_parse_switch_statement (self, &_inner_error_);
                        _tmp7_ = _tmp8_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11415,7 +11387,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp12_ = NULL;
                        _tmp11_ = vala_genie_parser_parse_while_statement (self, &_inner_error_);
                        _tmp10_ = _tmp11_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11438,7 +11410,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp15_ = NULL;
                        _tmp14_ = vala_genie_parser_parse_do_statement (self, &_inner_error_);
                        _tmp13_ = _tmp14_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11461,7 +11433,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp18_ = NULL;
                        _tmp17_ = vala_genie_parser_get_for_statement_type (self, &_inner_error_);
                        _tmp16_ = _tmp17_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11484,7 +11456,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp21_ = NULL;
                        _tmp20_ = vala_genie_parser_parse_break_statement (self, &_inner_error_);
                        _tmp19_ = _tmp20_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11507,7 +11479,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp24_ = NULL;
                        _tmp23_ = vala_genie_parser_parse_continue_statement (self, &_inner_error_);
                        _tmp22_ = _tmp23_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11530,7 +11502,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp27_ = NULL;
                        _tmp26_ = vala_genie_parser_parse_return_statement (self, &_inner_error_);
                        _tmp25_ = _tmp26_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11553,7 +11525,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp30_ = NULL;
                        _tmp29_ = vala_genie_parser_parse_yield_statement (self, &_inner_error_);
                        _tmp28_ = _tmp29_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11576,7 +11548,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp33_ = NULL;
                        _tmp32_ = vala_genie_parser_parse_throw_statement (self, &_inner_error_);
                        _tmp31_ = _tmp32_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11599,7 +11571,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp36_ = NULL;
                        _tmp35_ = vala_genie_parser_parse_try_statement (self, &_inner_error_);
                        _tmp34_ = _tmp35_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11622,7 +11594,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp39_ = NULL;
                        _tmp38_ = vala_genie_parser_parse_lock_statement (self, &_inner_error_);
                        _tmp37_ = _tmp38_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11645,7 +11617,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp42_ = NULL;
                        _tmp41_ = vala_genie_parser_parse_delete_statement (self, &_inner_error_);
                        _tmp40_ = _tmp41_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11696,7 +11668,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        ValaStatement* _tmp49_ = NULL;
                        _tmp48_ = vala_genie_parser_parse_expression_statement (self, &_inner_error_);
                        _tmp47_ = _tmp48_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11718,7 +11690,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                        gboolean _tmp51_ = FALSE;
                        _tmp51_ = vala_genie_parser_is_expression (self, &_inner_error_);
                        _tmp50_ = _tmp51_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -11734,7 +11706,7 @@ static ValaStatement* vala_genie_parser_parse_embedded_statement_without_block (
                                ValaStatement* _tmp54_ = NULL;
                                _tmp53_ = vala_genie_parser_parse_expression_statement (self, &_inner_error_);
                                _tmp52_ = _tmp53_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                return NULL;
@@ -11798,7 +11770,7 @@ static ValaBlock* vala_genie_parser_parse_block (ValaGenieParser* self, GError**
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_INDENT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -11817,7 +11789,7 @@ static ValaBlock* vala_genie_parser_parse_block (ValaGenieParser* self, GError**
        block = _tmp5_;
        _tmp6_ = block;
        vala_genie_parser_parse_statements (self, _tmp6_, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (block);
@@ -11878,7 +11850,7 @@ static ValaStatement* vala_genie_parser_parse_empty_statement (ValaGenieParser*
        vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_PASS);
        vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_SEMICOLON);
        vala_genie_parser_expect_terminator (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -11917,7 +11889,7 @@ static void vala_genie_parser_add_local_var_variable (ValaGenieParser* self, Val
        _tmp0_ = id;
        _tmp1_ = vala_genie_parser_parse_local_variable (self, type_copy, _tmp0_, &_inner_error_);
        local = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type_copy);
@@ -11981,7 +11953,7 @@ static void vala_genie_parser_parse_local_variable_declarations (ValaGenieParser
                                }
                                _tmp5_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                                s = _tmp5_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                return;
@@ -11994,7 +11966,7 @@ static void vala_genie_parser_parse_local_variable_declarations (ValaGenieParser
                                _tmp6_ = block;
                                _tmp7_ = s;
                                vala_genie_parser_add_local_var_variable (self, _tmp6_, _tmp7_, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _g_free0 (s);
@@ -12011,7 +11983,7 @@ static void vala_genie_parser_parse_local_variable_declarations (ValaGenieParser
                                _g_free0 (s);
                        }
                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DEDENT, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return;
@@ -12028,7 +12000,7 @@ static void vala_genie_parser_parse_local_variable_declarations (ValaGenieParser
                        const gchar* _tmp10_ = NULL;
                        _tmp8_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                        s = _tmp8_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return;
@@ -12041,7 +12013,7 @@ static void vala_genie_parser_parse_local_variable_declarations (ValaGenieParser
                        _tmp9_ = block;
                        _tmp10_ = s;
                        vala_genie_parser_add_local_var_variable (self, _tmp9_, _tmp10_, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (s);
@@ -12054,7 +12026,7 @@ static void vala_genie_parser_parse_local_variable_declarations (ValaGenieParser
                                }
                        }
                        vala_genie_parser_expect_terminator (self, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (s);
@@ -12091,7 +12063,7 @@ static void vala_genie_parser_parse_local_variable_declarations (ValaGenieParser
                        _tmp13_ = FALSE;
                        _tmp16_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                        _tmp15_ = _tmp16_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (variable_type);
@@ -12111,7 +12083,7 @@ static void vala_genie_parser_parse_local_variable_declarations (ValaGenieParser
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_COLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (variable_type);
@@ -12127,7 +12099,7 @@ static void vala_genie_parser_parse_local_variable_declarations (ValaGenieParser
        }
        _tmp19_ = vala_genie_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
        _tmp18_ = _tmp19_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (variable_type);
@@ -12148,7 +12120,7 @@ static void vala_genie_parser_parse_local_variable_declarations (ValaGenieParser
        _tmp21_ = variable_type;
        _tmp22_ = vala_genie_parser_parse_inline_array_type (self, _tmp21_, &_inner_error_);
        type = _tmp22_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (_tmp18_);
@@ -12227,7 +12199,7 @@ static void vala_genie_parser_parse_local_variable_declarations (ValaGenieParser
                        _tmp38_ = id;
                        _tmp39_ = vala_genie_parser_parse_local_variable (self, _tmp37_, _tmp38_, &_inner_error_);
                        local = _tmp39_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (type_copy);
@@ -12267,7 +12239,7 @@ static void vala_genie_parser_parse_local_variable_declarations (ValaGenieParser
                _vala_iterable_unref0 (_id_list);
        }
        vala_genie_parser_expect_terminator (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -12319,7 +12291,7 @@ static ValaLocalVariable* vala_genie_parser_parse_local_variable (ValaGenieParse
                ValaExpression* _tmp4_ = NULL;
                _tmp3_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                _tmp2_ = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (initializer);
@@ -12371,7 +12343,7 @@ static ValaStatement* vala_genie_parser_parse_expression_statement (ValaGeniePar
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_statement_expression (self, &_inner_error_);
        expr = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12386,7 +12358,7 @@ static ValaStatement* vala_genie_parser_parse_expression_statement (ValaGeniePar
                self->priv->current_expr_is_lambda = FALSE;
        } else {
                vala_genie_parser_expect_terminator (self, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (expr);
@@ -12420,7 +12392,7 @@ static ValaExpression* vala_genie_parser_parse_statement_expression (ValaGeniePa
        g_return_val_if_fail (self != NULL, NULL);
        _tmp0_ = vala_genie_parser_parse_expression (self, &_inner_error_);
        expr = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12459,7 +12431,7 @@ static ValaStatement* vala_genie_parser_parse_if_statement (ValaGenieParser* sel
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_IF, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12471,7 +12443,7 @@ static ValaStatement* vala_genie_parser_parse_if_statement (ValaGenieParser* sel
        }
        _tmp1_ = vala_genie_parser_parse_expression (self, &_inner_error_);
        condition = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12484,7 +12456,7 @@ static ValaStatement* vala_genie_parser_parse_if_statement (ValaGenieParser* sel
        _tmp2_ = vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_DO);
        if (!_tmp2_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (condition);
@@ -12504,7 +12476,7 @@ static ValaStatement* vala_genie_parser_parse_if_statement (ValaGenieParser* sel
        src = _tmp4_;
        _tmp5_ = vala_genie_parser_parse_embedded_statement (self, &_inner_error_);
        true_stmt = _tmp5_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_source_reference_unref0 (src);
@@ -12536,7 +12508,7 @@ static ValaStatement* vala_genie_parser_parse_if_statement (ValaGenieParser* sel
                }
                if (_tmp7_) {
                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (false_stmt);
@@ -12559,7 +12531,7 @@ static ValaStatement* vala_genie_parser_parse_if_statement (ValaGenieParser* sel
                }
                _tmp11_ = vala_genie_parser_parse_embedded_statement (self, &_inner_error_);
                _tmp10_ = _tmp11_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (false_stmt);
@@ -12615,7 +12587,7 @@ static ValaStatement* vala_genie_parser_parse_switch_statement (ValaGenieParser*
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CASE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12627,7 +12599,7 @@ static ValaStatement* vala_genie_parser_parse_switch_statement (ValaGenieParser*
        }
        _tmp1_ = vala_genie_parser_parse_expression (self, &_inner_error_);
        condition = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12638,7 +12610,7 @@ static ValaStatement* vala_genie_parser_parse_switch_statement (ValaGenieParser*
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (condition);
@@ -12659,7 +12631,7 @@ static ValaStatement* vala_genie_parser_parse_switch_statement (ValaGenieParser*
        _vala_source_reference_unref0 (_tmp5_);
        stmt = _tmp7_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_INDENT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (stmt);
@@ -12729,7 +12701,7 @@ static ValaStatement* vala_genie_parser_parse_switch_statement (ValaGenieParser*
                                        _tmp15_ = FALSE;
                                        _tmp18_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                                        _tmp17_ = _tmp18_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (section);
@@ -12765,7 +12737,7 @@ static ValaStatement* vala_genie_parser_parse_switch_statement (ValaGenieParser*
                        ValaSwitchLabel* _tmp29_ = NULL;
                        ValaSwitchLabel* _tmp30_ = NULL;
                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DEFAULT, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (section);
@@ -12794,7 +12766,7 @@ static ValaStatement* vala_genie_parser_parse_switch_statement (ValaGenieParser*
                _tmp31_ = vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_EOL);
                if (!_tmp31_) {
                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DO, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (section);
@@ -12813,7 +12785,7 @@ static ValaStatement* vala_genie_parser_parse_switch_statement (ValaGenieParser*
                }
                _tmp32_ = section;
                vala_genie_parser_parse_statements (self, (ValaBlock*) _tmp32_, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (section);
@@ -12846,7 +12818,7 @@ static ValaStatement* vala_genie_parser_parse_switch_statement (ValaGenieParser*
                _vala_code_node_unref0 (section);
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DEDENT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (stmt);
@@ -12887,7 +12859,7 @@ static ValaStatement* vala_genie_parser_parse_while_statement (ValaGenieParser*
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_WHILE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12899,7 +12871,7 @@ static ValaStatement* vala_genie_parser_parse_while_statement (ValaGenieParser*
        }
        _tmp1_ = vala_genie_parser_parse_expression (self, &_inner_error_);
        condition = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12912,7 +12884,7 @@ static ValaStatement* vala_genie_parser_parse_while_statement (ValaGenieParser*
        _tmp2_ = vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_DO);
        if (!_tmp2_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (condition);
@@ -12929,7 +12901,7 @@ static ValaStatement* vala_genie_parser_parse_while_statement (ValaGenieParser*
        }
        _tmp3_ = vala_genie_parser_parse_embedded_statement (self, &_inner_error_);
        body = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (condition);
@@ -12976,7 +12948,7 @@ static ValaStatement* vala_genie_parser_parse_do_statement (ValaGenieParser* sel
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DO, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12987,7 +12959,7 @@ static ValaStatement* vala_genie_parser_parse_do_statement (ValaGenieParser* sel
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12999,7 +12971,7 @@ static ValaStatement* vala_genie_parser_parse_do_statement (ValaGenieParser* sel
        }
        _tmp1_ = vala_genie_parser_parse_embedded_statement (self, &_inner_error_);
        body = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13010,7 +12982,7 @@ static ValaStatement* vala_genie_parser_parse_do_statement (ValaGenieParser* sel
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_WHILE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (body);
@@ -13024,7 +12996,7 @@ static ValaStatement* vala_genie_parser_parse_do_statement (ValaGenieParser* sel
        }
        _tmp2_ = vala_genie_parser_parse_expression (self, &_inner_error_);
        condition = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (body);
@@ -13037,7 +13009,7 @@ static ValaStatement* vala_genie_parser_parse_do_statement (ValaGenieParser* sel
                }
        }
        vala_genie_parser_expect_terminator (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (condition);
@@ -13103,7 +13075,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
        condition = NULL;
        iterator = NULL;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_FOR, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -13137,7 +13109,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
                        gboolean _tmp3_ = FALSE;
                        _tmp2_ = vala_genie_parser_is_expression (self, &_inner_error_);
                        local_is_expr = _tmp2_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (id);
@@ -13177,7 +13149,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
                expr_begin = _tmp5_;
                _tmp7_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                _tmp6_ = _tmp7_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _g_free0 (id);
@@ -13205,7 +13177,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
                vala_genie_parser_rollback (self, &_tmp9_);
                _tmp11_ = vala_genie_parser_parse_statement_expression (self, &_inner_error_);
                _tmp10_ = _tmp11_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _g_free0 (_tmp6_);
@@ -13269,7 +13241,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
                        variable_type = NULL;
                        _tmp19_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                        _tmp18_ = _tmp19_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (variable_type);
@@ -13305,7 +13277,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
                        ValaDataType* _tmp26_ = NULL;
                        _tmp22_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                        _tmp21_ = _tmp22_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (variable_type);
@@ -13332,7 +13304,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
                        _g_free0 (id);
                        id = _tmp23_;
                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_COLON, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (_tmp21_);
@@ -13358,7 +13330,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
                        }
                        _tmp25_ = vala_genie_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
                        _tmp24_ = _tmp25_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (_tmp21_);
@@ -13403,7 +13375,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
                _tmp31_ = id;
                _tmp32_ = vala_genie_parser_parse_local_variable (self, _tmp30_, _tmp31_, &_inner_error_);
                local = _tmp32_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (type_copy);
@@ -13471,7 +13443,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
                left = _tmp46_;
                _tmp47_ = vala_genie_parser_parse_primary_expression (self, &_inner_error_);
                right = _tmp47_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -13529,7 +13501,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
                ValaSourceReference* _tmp67_ = NULL;
                ValaPostfixExpression* _tmp68_ = NULL;
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DOWNTO, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _g_free0 (id);
@@ -13560,7 +13532,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
                left = _tmp60_;
                _tmp61_ = vala_genie_parser_parse_primary_expression (self, &_inner_error_);
                right = _tmp61_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -13602,7 +13574,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
        _tmp69_ = vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_EOL);
        if (!_tmp69_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DO, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _g_free0 (id);
@@ -13628,7 +13600,7 @@ static ValaStatement* vala_genie_parser_parse_for_statement (ValaGenieParser* se
        src = _tmp71_;
        _tmp72_ = vala_genie_parser_parse_embedded_statement (self, &_inner_error_);
        body = _tmp72_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_source_reference_unref0 (src);
@@ -13732,7 +13704,7 @@ static ValaStatement* vala_genie_parser_parse_foreach_statement (ValaGenieParser
        type = NULL;
        id = NULL;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_FOR, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -13753,7 +13725,7 @@ static ValaStatement* vala_genie_parser_parse_foreach_statement (ValaGenieParser
                gchar* _tmp4_ = NULL;
                _tmp3_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                _tmp2_ = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _g_free0 (id);
@@ -13779,7 +13751,7 @@ static ValaStatement* vala_genie_parser_parse_foreach_statement (ValaGenieParser
                gboolean _tmp8_ = FALSE;
                _tmp6_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                _tmp5_ = _tmp6_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _g_free0 (id);
@@ -13804,7 +13776,7 @@ static ValaStatement* vala_genie_parser_parse_foreach_statement (ValaGenieParser
                        ValaDataType* _tmp11_ = NULL;
                        _tmp10_ = vala_genie_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
                        _tmp9_ = _tmp10_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (_tmp5_);
@@ -13829,7 +13801,7 @@ static ValaStatement* vala_genie_parser_parse_foreach_statement (ValaGenieParser
                _g_free0 (_tmp5_);
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_IN, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -13845,7 +13817,7 @@ static ValaStatement* vala_genie_parser_parse_foreach_statement (ValaGenieParser
        }
        _tmp12_ = vala_genie_parser_parse_expression (self, &_inner_error_);
        collection = _tmp12_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -13862,7 +13834,7 @@ static ValaStatement* vala_genie_parser_parse_foreach_statement (ValaGenieParser
        _tmp13_ = vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_EOL);
        if (!_tmp13_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DO, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (collection);
@@ -13884,7 +13856,7 @@ static ValaStatement* vala_genie_parser_parse_foreach_statement (ValaGenieParser
        src = _tmp15_;
        _tmp16_ = vala_genie_parser_parse_embedded_statement (self, &_inner_error_);
        body = _tmp16_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_source_reference_unref0 (src);
@@ -13932,7 +13904,7 @@ static ValaStatement* vala_genie_parser_parse_break_statement (ValaGenieParser*
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_BREAK, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13943,7 +13915,7 @@ static ValaStatement* vala_genie_parser_parse_break_statement (ValaGenieParser*
                }
        }
        vala_genie_parser_expect_terminator (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13978,7 +13950,7 @@ static ValaStatement* vala_genie_parser_parse_continue_statement (ValaGenieParse
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CONTINUE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13989,7 +13961,7 @@ static ValaStatement* vala_genie_parser_parse_continue_statement (ValaGenieParse
                }
        }
        vala_genie_parser_expect_terminator (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14028,7 +14000,7 @@ static ValaStatement* vala_genie_parser_parse_return_statement (ValaGenieParser*
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_RETURN, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14053,7 +14025,7 @@ static ValaStatement* vala_genie_parser_parse_return_statement (ValaGenieParser*
                ValaExpression* _tmp6_ = NULL;
                _tmp5_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                _tmp4_ = _tmp5_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (expr);
@@ -14072,7 +14044,7 @@ static ValaStatement* vala_genie_parser_parse_return_statement (ValaGenieParser*
                _vala_code_node_unref0 (_tmp4_);
        }
        vala_genie_parser_expect_terminator (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -14117,7 +14089,7 @@ static ValaStatement* vala_genie_parser_parse_yield_statement (ValaGenieParser*
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_YIELD, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14149,7 +14121,7 @@ static ValaStatement* vala_genie_parser_parse_yield_statement (ValaGenieParser*
                vala_genie_parser_prev (self);
                _tmp7_ = vala_genie_parser_parse_expression_statement (self, &_inner_error_);
                _tmp6_ = _tmp7_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -14173,7 +14145,7 @@ static ValaStatement* vala_genie_parser_parse_yield_statement (ValaGenieParser*
                ValaExpression* _tmp12_ = NULL;
                _tmp11_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                _tmp10_ = _tmp11_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (expr);
@@ -14192,7 +14164,7 @@ static ValaStatement* vala_genie_parser_parse_yield_statement (ValaGenieParser*
                _vala_code_node_unref0 (_tmp10_);
        }
        vala_genie_parser_expect_terminator (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -14234,7 +14206,7 @@ static ValaStatement* vala_genie_parser_parse_throw_statement (ValaGenieParser*
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_RAISE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14246,7 +14218,7 @@ static ValaStatement* vala_genie_parser_parse_throw_statement (ValaGenieParser*
        }
        _tmp1_ = vala_genie_parser_parse_expression (self, &_inner_error_);
        expr = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14257,7 +14229,7 @@ static ValaStatement* vala_genie_parser_parse_throw_statement (ValaGenieParser*
                }
        }
        vala_genie_parser_expect_terminator (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -14306,7 +14278,7 @@ static ValaStatement* vala_genie_parser_parse_try_statement (ValaGenieParser* se
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_TRY, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14317,7 +14289,7 @@ static ValaStatement* vala_genie_parser_parse_try_statement (ValaGenieParser* se
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14329,7 +14301,7 @@ static ValaStatement* vala_genie_parser_parse_try_statement (ValaGenieParser* se
        }
        _tmp1_ = vala_genie_parser_parse_block (self, &_inner_error_);
        try_block = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14349,7 +14321,7 @@ static ValaStatement* vala_genie_parser_parse_try_statement (ValaGenieParser* se
                ValaGenieTokenType _tmp6_ = 0;
                _tmp5_ = catch_clauses;
                vala_genie_parser_parse_catch_clauses (self, (ValaList*) _tmp5_, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (catch_clauses);
@@ -14372,7 +14344,7 @@ static ValaStatement* vala_genie_parser_parse_try_statement (ValaGenieParser* se
                        ValaBlock* _tmp9_ = NULL;
                        _tmp8_ = vala_genie_parser_parse_finally_clause (self, &_inner_error_);
                        _tmp7_ = _tmp8_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (catch_clauses);
@@ -14400,7 +14372,7 @@ static ValaStatement* vala_genie_parser_parse_try_statement (ValaGenieParser* se
                ValaBlock* _tmp12_ = NULL;
                _tmp11_ = vala_genie_parser_parse_finally_clause (self, &_inner_error_);
                _tmp10_ = _tmp11_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (catch_clauses);
@@ -14524,7 +14496,7 @@ static void vala_genie_parser_parse_catch_clauses (ValaGenieParser* self, ValaLi
                        ValaDataType* _tmp8_ = NULL;
                        _tmp4_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                        _tmp3_ = _tmp4_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (id);
@@ -14543,7 +14515,7 @@ static void vala_genie_parser_parse_catch_clauses (ValaGenieParser* self, ValaLi
                        _g_free0 (id);
                        id = _tmp5_;
                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_COLON, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (_tmp3_);
@@ -14561,7 +14533,7 @@ static void vala_genie_parser_parse_catch_clauses (ValaGenieParser* self, ValaLi
                        }
                        _tmp7_ = vala_genie_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
                        _tmp6_ = _tmp7_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (_tmp3_);
@@ -14582,7 +14554,7 @@ static void vala_genie_parser_parse_catch_clauses (ValaGenieParser* self, ValaLi
                        _vala_code_node_unref0 (type);
                        type = _tmp8_;
                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (_tmp6_);
@@ -14605,7 +14577,7 @@ static void vala_genie_parser_parse_catch_clauses (ValaGenieParser* self, ValaLi
                }
                _tmp9_ = vala_genie_parser_parse_block (self, &_inner_error_);
                block = _tmp9_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _g_free0 (id);
@@ -14645,7 +14617,7 @@ static ValaBlock* vala_genie_parser_parse_finally_clause (ValaGenieParser* self,
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_FINALLY, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14658,7 +14630,7 @@ static ValaBlock* vala_genie_parser_parse_finally_clause (ValaGenieParser* self,
        vala_genie_parser_accept_block (self);
        _tmp0_ = vala_genie_parser_parse_block (self, &_inner_error_);
        block = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14693,7 +14665,7 @@ static ValaStatement* vala_genie_parser_parse_lock_statement (ValaGenieParser* s
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_LOCK, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14704,7 +14676,7 @@ static ValaStatement* vala_genie_parser_parse_lock_statement (ValaGenieParser* s
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14716,7 +14688,7 @@ static ValaStatement* vala_genie_parser_parse_lock_statement (ValaGenieParser* s
        }
        _tmp1_ = vala_genie_parser_parse_expression (self, &_inner_error_);
        expr = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14727,7 +14699,7 @@ static ValaStatement* vala_genie_parser_parse_lock_statement (ValaGenieParser* s
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -14741,7 +14713,7 @@ static ValaStatement* vala_genie_parser_parse_lock_statement (ValaGenieParser* s
        }
        _tmp2_ = vala_genie_parser_parse_embedded_statement (self, &_inner_error_);
        stmt = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -14785,7 +14757,7 @@ static ValaStatement* vala_genie_parser_parse_delete_statement (ValaGenieParser*
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DELETE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14797,7 +14769,7 @@ static ValaStatement* vala_genie_parser_parse_delete_statement (ValaGenieParser*
        }
        _tmp1_ = vala_genie_parser_parse_expression (self, &_inner_error_);
        expr = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14808,7 +14780,7 @@ static ValaStatement* vala_genie_parser_parse_delete_statement (ValaGenieParser*
                }
        }
        vala_genie_parser_expect_terminator (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -14976,7 +14948,7 @@ static ValaList* vala_genie_parser_parse_attributes (ValaGenieParser* self, gboo
                                begin = _tmp6_;
                                _tmp7_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                                id = _tmp7_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (attrs);
@@ -15022,7 +14994,7 @@ static ValaList* vala_genie_parser_parse_attributes (ValaGenieParser* self, gboo
                                                                _tmp16_ = FALSE;
                                                                _tmp19_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                                                                _tmp18_ = _tmp19_;
-                                                               if (_inner_error_ != NULL) {
+                                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                                g_propagate_error (error, _inner_error_);
                                                                                _vala_code_node_unref0 (attr);
@@ -15043,7 +15015,7 @@ static ValaList* vala_genie_parser_parse_attributes (ValaGenieParser* self, gboo
                                                                _g_free0 (id);
                                                                id = _tmp20_;
                                                                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_ASSIGN, &_inner_error_);
-                                                               if (_inner_error_ != NULL) {
+                                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                                g_propagate_error (error, _inner_error_);
                                                                                _g_free0 (_tmp18_);
@@ -15063,7 +15035,7 @@ static ValaList* vala_genie_parser_parse_attributes (ValaGenieParser* self, gboo
                                                                }
                                                                _tmp22_ = vala_genie_parser_parse_attribute_value (self, &_inner_error_);
                                                                _tmp21_ = _tmp22_;
-                                                               if (_inner_error_ != NULL) {
+                                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                                g_propagate_error (error, _inner_error_);
                                                                                _g_free0 (_tmp18_);
@@ -15090,7 +15062,7 @@ static ValaList* vala_genie_parser_parse_attributes (ValaGenieParser* self, gboo
                                                }
                                        }
                                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (attr);
@@ -15115,7 +15087,7 @@ static ValaList* vala_genie_parser_parse_attributes (ValaGenieParser* self, gboo
                        }
                }
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (attrs);
@@ -15131,7 +15103,7 @@ static ValaList* vala_genie_parser_parse_attributes (ValaGenieParser* self, gboo
        _tmp27_ = parameter;
        if (!_tmp27_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (attrs);
@@ -15276,7 +15248,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
        self->priv->comment = _tmp1_;
        _tmp2_ = vala_genie_parser_parse_attributes (self, FALSE, &_inner_error_);
        attrs = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -15299,7 +15271,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp6_ = attrs;
                        _tmp7_ = vala_genie_parser_parse_constant_declaration (self, _tmp6_, &_inner_error_);
                        _tmp5_ = _tmp7_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15327,7 +15299,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp10_ = attrs;
                        _tmp11_ = vala_genie_parser_parse_creation_method_declaration (self, _tmp10_, &_inner_error_);
                        _tmp9_ = _tmp11_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15355,7 +15327,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp14_ = attrs;
                        _tmp15_ = vala_genie_parser_parse_class_declaration (self, _tmp14_, &_inner_error_);
                        _tmp13_ = _tmp15_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15391,7 +15363,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                                _tmp19_ = attrs;
                                _tmp20_ = vala_genie_parser_parse_main_method_declaration (self, _tmp19_, &_inner_error_);
                                _tmp18_ = _tmp20_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (attrs);
@@ -15415,7 +15387,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp24_ = attrs;
                        _tmp25_ = vala_genie_parser_parse_constructor_declaration (self, _tmp24_, &_inner_error_);
                        _tmp23_ = _tmp25_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15443,7 +15415,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp28_ = attrs;
                        _tmp29_ = vala_genie_parser_parse_delegate_declaration (self, _tmp28_, &_inner_error_);
                        _tmp27_ = _tmp29_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15471,7 +15443,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp32_ = attrs;
                        _tmp33_ = vala_genie_parser_parse_method_declaration (self, _tmp32_, &_inner_error_);
                        _tmp31_ = _tmp33_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15499,7 +15471,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp36_ = attrs;
                        _tmp37_ = vala_genie_parser_parse_enum_declaration (self, _tmp36_, &_inner_error_);
                        _tmp35_ = _tmp37_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15527,7 +15499,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp40_ = attrs;
                        _tmp41_ = vala_genie_parser_parse_errordomain_declaration (self, _tmp40_, &_inner_error_);
                        _tmp39_ = _tmp41_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15555,7 +15527,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp44_ = attrs;
                        _tmp45_ = vala_genie_parser_parse_destructor_declaration (self, _tmp44_, &_inner_error_);
                        _tmp43_ = _tmp45_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15583,7 +15555,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp48_ = attrs;
                        _tmp49_ = vala_genie_parser_parse_interface_declaration (self, _tmp48_, &_inner_error_);
                        _tmp47_ = _tmp49_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15611,7 +15583,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp52_ = attrs;
                        _tmp53_ = vala_genie_parser_parse_namespace_declaration (self, _tmp52_, &_inner_error_);
                        _tmp51_ = _tmp53_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15639,7 +15611,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp56_ = attrs;
                        _tmp57_ = vala_genie_parser_parse_property_declaration (self, _tmp56_, &_inner_error_);
                        _tmp55_ = _tmp57_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15667,7 +15639,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp60_ = attrs;
                        _tmp61_ = vala_genie_parser_parse_signal_declaration (self, _tmp60_, &_inner_error_);
                        _tmp59_ = _tmp61_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15695,7 +15667,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                        _tmp64_ = attrs;
                        _tmp65_ = vala_genie_parser_parse_struct_declaration (self, _tmp64_, &_inner_error_);
                        _tmp63_ = _tmp65_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -15752,7 +15724,7 @@ static ValaSymbol* vala_genie_parser_parse_declaration (ValaGenieParser* self, g
                                        _tmp75_ = attrs;
                                        _tmp76_ = vala_genie_parser_parse_field_declaration (self, _tmp75_, &_inner_error_);
                                        _tmp74_ = _tmp76_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_iterable_unref0 (attrs);
@@ -15823,7 +15795,7 @@ static void vala_genie_parser_parse_declarations (ValaGenieParser* self, ValaSym
        _tmp0_ = root;
        if (!_tmp0_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_INDENT, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -15855,9 +15827,9 @@ static void vala_genie_parser_parse_declarations (ValaGenieParser* self, ValaSym
                                ValaSymbol* _tmp5_ = NULL;
                                _tmp5_ = parent;
                                vala_genie_parser_parse_namespace_member (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, VALA_TYPE_NAMESPACE, ValaNamespace), &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                               goto __catch8_vala_parse_error;
+                                               goto __catch10_vala_parse_error;
                                        }
                                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                        g_clear_error (&_inner_error_);
@@ -15870,9 +15842,9 @@ static void vala_genie_parser_parse_declarations (ValaGenieParser* self, ValaSym
                                        ValaSymbol* _tmp7_ = NULL;
                                        _tmp7_ = parent;
                                        vala_genie_parser_parse_class_member (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, VALA_TYPE_CLASS, ValaClass), &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch8_vala_parse_error;
+                                                       goto __catch10_vala_parse_error;
                                                }
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                                g_clear_error (&_inner_error_);
@@ -15885,9 +15857,9 @@ static void vala_genie_parser_parse_declarations (ValaGenieParser* self, ValaSym
                                                ValaSymbol* _tmp9_ = NULL;
                                                _tmp9_ = parent;
                                                vala_genie_parser_parse_struct_member (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, VALA_TYPE_STRUCT, ValaStruct), &_inner_error_);
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                               goto __catch8_vala_parse_error;
+                                                               goto __catch10_vala_parse_error;
                                                        }
                                                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                                        g_clear_error (&_inner_error_);
@@ -15900,9 +15872,9 @@ static void vala_genie_parser_parse_declarations (ValaGenieParser* self, ValaSym
                                                        ValaSymbol* _tmp11_ = NULL;
                                                        _tmp11_ = parent;
                                                        vala_genie_parser_parse_interface_member (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, VALA_TYPE_INTERFACE, ValaInterface), &_inner_error_);
-                                                       if (_inner_error_ != NULL) {
+                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                                       goto __catch8_vala_parse_error;
+                                                                       goto __catch10_vala_parse_error;
                                                                }
                                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                                                g_clear_error (&_inner_error_);
@@ -15913,8 +15885,8 @@ static void vala_genie_parser_parse_declarations (ValaGenieParser* self, ValaSym
                                }
                        }
                }
-               goto __finally8;
-               __catch8_vala_parse_error:
+               goto __finally10;
+               __catch10_vala_parse_error:
                {
                        GError* e = NULL;
                        gint r = 0;
@@ -15940,8 +15912,8 @@ static void vala_genie_parser_parse_declarations (ValaGenieParser* self, ValaSym
                        }
                        _g_error_free0 (e);
                }
-               __finally8:
-               if (_inner_error_ != NULL) {
+               __finally10:
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -16065,7 +16037,7 @@ static ValaNamespace* vala_genie_parser_parse_namespace_declaration (ValaGeniePa
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_NAMESPACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -16077,7 +16049,7 @@ static ValaNamespace* vala_genie_parser_parse_namespace_declaration (ValaGeniePa
        }
        _tmp1_ = vala_genie_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -16111,7 +16083,7 @@ static ValaNamespace* vala_genie_parser_parse_namespace_declaration (ValaGeniePa
        _tmp14_ = attrs;
        vala_genie_parser_set_attributes (self, (ValaCodeNode*) _tmp13_, _tmp14_);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (ns);
@@ -16127,7 +16099,7 @@ static ValaNamespace* vala_genie_parser_parse_namespace_declaration (ValaGeniePa
        }
        _tmp15_ = ns;
        vala_genie_parser_parse_declarations (self, (ValaSymbol*) _tmp15_, FALSE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (ns);
@@ -16215,7 +16187,7 @@ static void vala_genie_parser_parse_namespace_member (ValaGenieParser* self, Val
        _tmp3_ = _tmp2_;
        _tmp4_ = vala_genie_parser_parse_declaration (self, _tmp0_ == _tmp3_, &_inner_error_);
        sym = _tmp4_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -16354,7 +16326,7 @@ static void vala_genie_parser_add_uses_clause (ValaGenieParser* self, ValaNamesp
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -16398,7 +16370,7 @@ static void vala_genie_parser_parse_using_directives (ValaGenieParser* self, Val
                _tmp1_ = vala_genie_parser_accept_block (self);
                if (_tmp1_) {
                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_INDENT, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return;
@@ -16425,7 +16397,7 @@ static void vala_genie_parser_parse_using_directives (ValaGenieParser* self, Val
                                }
                                _tmp5_ = ns;
                                vala_genie_parser_add_uses_clause (self, _tmp5_, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                return;
@@ -16436,7 +16408,7 @@ static void vala_genie_parser_parse_using_directives (ValaGenieParser* self, Val
                                        }
                                }
                                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                return;
@@ -16448,7 +16420,7 @@ static void vala_genie_parser_parse_using_directives (ValaGenieParser* self, Val
                                }
                        }
                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DEDENT, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return;
@@ -16474,7 +16446,7 @@ static void vala_genie_parser_parse_using_directives (ValaGenieParser* self, Val
                                        _tmp6_ = FALSE;
                                        _tmp8_ = ns;
                                        vala_genie_parser_add_uses_clause (self, _tmp8_, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        return;
@@ -16487,7 +16459,7 @@ static void vala_genie_parser_parse_using_directives (ValaGenieParser* self, Val
                                }
                        }
                        vala_genie_parser_expect_terminator (self, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return;
@@ -16549,7 +16521,7 @@ static ValaSymbol* vala_genie_parser_parse_class_declaration (ValaGenieParser* s
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLASS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -16563,7 +16535,7 @@ static ValaSymbol* vala_genie_parser_parse_class_declaration (ValaGenieParser* s
        flags = _tmp1_;
        _tmp2_ = vala_genie_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -16575,7 +16547,7 @@ static ValaSymbol* vala_genie_parser_parse_class_declaration (ValaGenieParser* s
        }
        _tmp3_ = vala_genie_parser_parse_type_parameter_list (self, &_inner_error_);
        type_param_list = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (sym);
@@ -16599,7 +16571,7 @@ static ValaSymbol* vala_genie_parser_parse_class_declaration (ValaGenieParser* s
                gboolean _tmp10_ = FALSE;
                _tmp7_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                type1 = _tmp7_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (base_types);
@@ -16638,7 +16610,7 @@ static ValaSymbol* vala_genie_parser_parse_class_declaration (ValaGenieParser* s
                                        _tmp11_ = FALSE;
                                        _tmp13_ = vala_genie_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
                                        type2 = _tmp13_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (type1);
@@ -16808,7 +16780,7 @@ static ValaSymbol* vala_genie_parser_parse_class_declaration (ValaGenieParser* s
        self->priv->class_name = _tmp66_;
        _tmp67_ = cl;
        vala_genie_parser_parse_declarations (self, (ValaSymbol*) _tmp67_, FALSE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (cl);
@@ -16962,7 +16934,7 @@ static void vala_genie_parser_parse_class_member (ValaGenieParser* self, ValaCla
        g_return_if_fail (cl != NULL);
        _tmp0_ = vala_genie_parser_parse_declaration (self, FALSE, &_inner_error_);
        sym = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -17250,7 +17222,7 @@ static ValaConstant* vala_genie_parser_parse_constant_declaration (ValaGeniePars
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CONST, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -17264,7 +17236,7 @@ static ValaConstant* vala_genie_parser_parse_constant_declaration (ValaGeniePars
        flags = _tmp1_;
        _tmp2_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
        id = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -17275,7 +17247,7 @@ static ValaConstant* vala_genie_parser_parse_constant_declaration (ValaGeniePars
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_COLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -17289,7 +17261,7 @@ static ValaConstant* vala_genie_parser_parse_constant_declaration (ValaGeniePars
        }
        _tmp3_ = vala_genie_parser_parse_type (self, FALSE, FALSE, &_inner_error_);
        type = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -17304,7 +17276,7 @@ static ValaConstant* vala_genie_parser_parse_constant_declaration (ValaGeniePars
        _tmp5_ = type;
        _tmp6_ = vala_genie_parser_parse_inline_array_type (self, _tmp5_, &_inner_error_);
        _tmp4_ = _tmp6_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -17330,7 +17302,7 @@ static ValaConstant* vala_genie_parser_parse_constant_declaration (ValaGeniePars
                ValaExpression* _tmp11_ = NULL;
                _tmp10_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                _tmp9_ = _tmp10_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (initializer);
@@ -17355,7 +17327,7 @@ static ValaConstant* vala_genie_parser_parse_constant_declaration (ValaGeniePars
                _vala_code_node_unref0 (_tmp9_);
        }
        vala_genie_parser_expect_terminator (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (initializer);
@@ -17481,7 +17453,7 @@ static ValaField* vala_genie_parser_parse_field_declaration (ValaGenieParser* se
        begin = _tmp0_;
        _tmp1_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
        id = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -17492,7 +17464,7 @@ static ValaField* vala_genie_parser_parse_field_declaration (ValaGenieParser* se
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_COLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -17508,7 +17480,7 @@ static ValaField* vala_genie_parser_parse_field_declaration (ValaGenieParser* se
        flags = _tmp2_;
        _tmp3_ = vala_genie_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
        type = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -17523,7 +17495,7 @@ static ValaField* vala_genie_parser_parse_field_declaration (ValaGenieParser* se
        _tmp5_ = type;
        _tmp6_ = vala_genie_parser_parse_inline_array_type (self, _tmp5_, &_inner_error_);
        _tmp4_ = _tmp6_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -17626,7 +17598,7 @@ static ValaField* vala_genie_parser_parse_field_declaration (ValaGenieParser* se
                ValaField* _tmp44_ = NULL;
                _tmp43_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                _tmp42_ = _tmp43_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (f);
@@ -17663,7 +17635,7 @@ static ValaField* vala_genie_parser_parse_field_declaration (ValaGenieParser* se
                }
        }
        vala_genie_parser_expect_terminator (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (f);
@@ -17709,7 +17681,7 @@ static ValaInitializerList* vala_genie_parser_parse_initializer (ValaGenieParser
        _tmp1_ = vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_OPEN_PARENS);
        if (!_tmp1_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_BRACE, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -17747,7 +17719,7 @@ static ValaInitializerList* vala_genie_parser_parse_initializer (ValaGenieParser
                                _tmp8_ = FALSE;
                                _tmp10_ = vala_genie_parser_parse_argument (self, &_inner_error_);
                                init = _tmp10_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (initializer);
@@ -17769,7 +17741,7 @@ static ValaInitializerList* vala_genie_parser_parse_initializer (ValaGenieParser
        _tmp13_ = vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS);
        if (!_tmp13_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_BRACE, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (initializer);
@@ -17845,7 +17817,7 @@ static ValaMethod* vala_genie_parser_parse_main_method_declaration (ValaGeniePar
        _tmp2_ = vala_void_type_new (NULL);
        type = (ValaDataType*) _tmp2_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_INIT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -17915,7 +17887,7 @@ static ValaMethod* vala_genie_parser_parse_main_method_declaration (ValaGeniePar
        _tmp39_ = param;
        vala_method_add_parameter (_tmp38_, _tmp39_);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (param);
@@ -17942,7 +17914,7 @@ static ValaMethod* vala_genie_parser_parse_main_method_declaration (ValaGeniePar
                ValaMethod* _tmp43_ = NULL;
                _tmp42_ = vala_genie_parser_parse_block (self, &_inner_error_);
                _tmp41_ = _tmp42_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (param);
@@ -18026,7 +17998,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
        _tmp1_ = vala_void_type_new (NULL);
        type = (ValaDataType*) _tmp1_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DEF, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -18042,7 +18014,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
        flags = _tmp2_;
        _tmp3_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
        id = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -18058,7 +18030,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
        _tmp5_ = vala_array_list_new (VALA_TYPE_PARAMETER, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp4_);
        params = _tmp5_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (params);
@@ -18094,7 +18066,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                                _tmp7_ = FALSE;
                                _tmp9_ = vala_genie_parser_parse_parameter (self, &_inner_error_);
                                param = _tmp9_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (params);
@@ -18118,7 +18090,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (params);
@@ -18141,7 +18113,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                ValaDataType* _tmp15_ = NULL;
                _tmp14_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                _tmp13_ = _tmp14_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (params);
@@ -18165,7 +18137,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
        }
        _tmp16_ = vala_genie_parser_parse_type_parameter_list (self, &_inner_error_);
        type_param_list = _tmp16_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (params);
@@ -18317,7 +18289,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                                _tmp59_ = FALSE;
                                _tmp62_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                                _tmp61_ = _tmp62_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (method);
@@ -18561,7 +18533,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                vala_symbol_set_external ((ValaSymbol*) _tmp122_, TRUE);
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (method);
@@ -18611,7 +18583,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                                        }
                                        _tmp131_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                                        _tmp130_ = _tmp131_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (method);
@@ -18634,7 +18606,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                                        _tmp132_ = method;
                                        vala_method_add_precondition (_tmp132_, _tmp130_);
                                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (_tmp130_);
@@ -18659,7 +18631,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                                        _vala_code_node_unref0 (_tmp130_);
                                }
                                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DEDENT, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (method);
@@ -18686,7 +18658,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                                ValaMethod* _tmp135_ = NULL;
                                _tmp134_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                                _tmp133_ = _tmp134_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (method);
@@ -18709,7 +18681,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                                _tmp135_ = method;
                                vala_method_add_precondition (_tmp135_, _tmp133_);
                                vala_genie_parser_expect_terminator (self, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (_tmp133_);
@@ -18758,7 +18730,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                                        }
                                        _tmp142_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                                        _tmp141_ = _tmp142_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (method);
@@ -18781,7 +18753,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                                        _tmp143_ = method;
                                        vala_method_add_postcondition (_tmp143_, _tmp141_);
                                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (_tmp141_);
@@ -18806,7 +18778,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                                        _vala_code_node_unref0 (_tmp141_);
                                }
                                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DEDENT, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (method);
@@ -18833,7 +18805,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                                ValaMethod* _tmp146_ = NULL;
                                _tmp145_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                                _tmp144_ = _tmp145_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (method);
@@ -18856,7 +18828,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                                _tmp146_ = method;
                                vala_method_add_postcondition (_tmp146_, _tmp144_);
                                vala_genie_parser_expect_terminator (self, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (_tmp144_);
@@ -18891,7 +18863,7 @@ static ValaMethod* vala_genie_parser_parse_method_declaration (ValaGenieParser*
                ValaMethod* _tmp151_ = NULL;
                _tmp150_ = vala_genie_parser_parse_block (self, &_inner_error_);
                _tmp149_ = _tmp150_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
@@ -18984,7 +18956,7 @@ static ValaProperty* vala_genie_parser_parse_property_declaration (ValaGeniePars
        begin = _tmp0_;
        readonly = FALSE;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_PROP, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -19000,7 +18972,7 @@ static ValaProperty* vala_genie_parser_parse_property_declaration (ValaGeniePars
        readonly = _tmp2_;
        _tmp3_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
        id = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -19011,7 +18983,7 @@ static ValaProperty* vala_genie_parser_parse_property_declaration (ValaGeniePars
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_COLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -19025,7 +18997,7 @@ static ValaProperty* vala_genie_parser_parse_property_declaration (ValaGeniePars
        }
        _tmp4_ = vala_genie_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
        type = _tmp4_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -19140,7 +19112,7 @@ static ValaProperty* vala_genie_parser_parse_property_declaration (ValaGeniePars
                ValaProperty* _tmp47_ = NULL;
                _tmp46_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                _tmp45_ = _tmp46_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (prop);
@@ -19163,7 +19135,7 @@ static ValaProperty* vala_genie_parser_parse_property_declaration (ValaGeniePars
        _tmp48_ = vala_genie_parser_accept_block (self);
        if (_tmp48_) {
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_INDENT, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (prop);
@@ -19199,7 +19171,7 @@ static ValaProperty* vala_genie_parser_parse_property_declaration (ValaGeniePars
                        accessor_begin = _tmp50_;
                        _tmp51_ = vala_genie_parser_parse_attributes (self, FALSE, &_inner_error_);
                        attribs = _tmp51_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (prop);
@@ -19285,7 +19257,7 @@ static ValaProperty* vala_genie_parser_parse_property_declaration (ValaGeniePars
                                        ValaProperty* _tmp68_ = NULL;
                                        _tmp66_ = vala_genie_parser_parse_block (self, &_inner_error_);
                                        _tmp65_ = _tmp66_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (block);
@@ -19481,7 +19453,7 @@ static ValaProperty* vala_genie_parser_parse_property_declaration (ValaGeniePars
                                        ValaProperty* _tmp108_ = NULL;
                                        _tmp106_ = vala_genie_parser_parse_block (self, &_inner_error_);
                                        _tmp105_ = _tmp106_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (block);
@@ -19540,7 +19512,7 @@ static ValaProperty* vala_genie_parser_parse_property_declaration (ValaGeniePars
                }
                vala_genie_parser_accept (self, VALA_GENIE_TOKEN_TYPE_EOL);
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DEDENT, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (prop);
@@ -19628,7 +19600,7 @@ static ValaProperty* vala_genie_parser_parse_property_declaration (ValaGeniePars
                        vala_symbol_set_access ((ValaSymbol*) _tmp152_, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
                }
                vala_genie_parser_expect_terminator (self, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (value_type);
@@ -19865,7 +19837,7 @@ static ValaSignal* vala_genie_parser_parse_signal_declaration (ValaGenieParser*
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EVENT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -19881,7 +19853,7 @@ static ValaSignal* vala_genie_parser_parse_signal_declaration (ValaGenieParser*
        flags = _tmp1_;
        _tmp2_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
        id = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -19897,7 +19869,7 @@ static ValaSignal* vala_genie_parser_parse_signal_declaration (ValaGenieParser*
        _tmp4_ = vala_array_list_new (VALA_TYPE_PARAMETER, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp3_);
        params = _tmp4_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (params);
@@ -19933,7 +19905,7 @@ static ValaSignal* vala_genie_parser_parse_signal_declaration (ValaGenieParser*
                                _tmp6_ = FALSE;
                                _tmp8_ = vala_genie_parser_parse_parameter (self, &_inner_error_);
                                param = _tmp8_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (params);
@@ -19957,7 +19929,7 @@ static ValaSignal* vala_genie_parser_parse_signal_declaration (ValaGenieParser*
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (params);
@@ -19980,7 +19952,7 @@ static ValaSignal* vala_genie_parser_parse_signal_declaration (ValaGenieParser*
                ValaDataType* _tmp14_ = NULL;
                _tmp13_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                _tmp12_ = _tmp13_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (params);
@@ -20158,7 +20130,7 @@ static ValaSignal* vala_genie_parser_parse_signal_declaration (ValaGenieParser*
                ValaSignal* _tmp61_ = NULL;
                _tmp60_ = vala_genie_parser_parse_block (self, &_inner_error_);
                _tmp59_ = _tmp60_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (sig);
@@ -20209,7 +20181,7 @@ static ValaConstructor* vala_genie_parser_parse_constructor_declaration (ValaGen
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_INIT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -20245,7 +20217,7 @@ static ValaConstructor* vala_genie_parser_parse_constructor_declaration (ValaGen
        vala_genie_parser_accept_block (self);
        _tmp12_ = vala_genie_parser_parse_block (self, &_inner_error_);
        _tmp11_ = _tmp12_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (c);
@@ -20283,7 +20255,7 @@ static ValaDestructor* vala_genie_parser_parse_destructor_declaration (ValaGenie
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_FINAL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -20303,7 +20275,7 @@ static ValaDestructor* vala_genie_parser_parse_destructor_declaration (ValaGenie
        vala_genie_parser_accept_block (self);
        _tmp7_ = vala_genie_parser_parse_block (self, &_inner_error_);
        _tmp6_ = _tmp7_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (d);
@@ -20358,7 +20330,7 @@ static ValaSymbol* vala_genie_parser_parse_struct_declaration (ValaGenieParser*
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_STRUCT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -20372,7 +20344,7 @@ static ValaSymbol* vala_genie_parser_parse_struct_declaration (ValaGenieParser*
        flags = _tmp1_;
        _tmp2_ = vala_genie_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -20384,7 +20356,7 @@ static ValaSymbol* vala_genie_parser_parse_struct_declaration (ValaGenieParser*
        }
        _tmp3_ = vala_genie_parser_parse_type_parameter_list (self, &_inner_error_);
        type_param_list = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (sym);
@@ -20404,7 +20376,7 @@ static ValaSymbol* vala_genie_parser_parse_struct_declaration (ValaGenieParser*
                ValaDataType* _tmp7_ = NULL;
                _tmp6_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                _tmp5_ = _tmp6_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (base_type);
@@ -20512,7 +20484,7 @@ static ValaSymbol* vala_genie_parser_parse_struct_declaration (ValaGenieParser*
                vala_struct_set_base_type (_tmp40_, _tmp41_);
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (st);
@@ -20532,7 +20504,7 @@ static ValaSymbol* vala_genie_parser_parse_struct_declaration (ValaGenieParser*
        }
        _tmp42_ = st;
        vala_genie_parser_parse_declarations (self, (ValaSymbol*) _tmp42_, FALSE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (st);
@@ -20629,7 +20601,7 @@ static void vala_genie_parser_parse_struct_member (ValaGenieParser* self, ValaSt
        g_return_if_fail (st != NULL);
        _tmp0_ = vala_genie_parser_parse_declaration (self, FALSE, &_inner_error_);
        sym = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -20710,7 +20682,7 @@ static ValaSymbol* vala_genie_parser_parse_interface_declaration (ValaGenieParse
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_INTERFACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -20724,7 +20696,7 @@ static ValaSymbol* vala_genie_parser_parse_interface_declaration (ValaGenieParse
        flags = _tmp1_;
        _tmp2_ = vala_genie_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -20736,7 +20708,7 @@ static ValaSymbol* vala_genie_parser_parse_interface_declaration (ValaGenieParse
        }
        _tmp3_ = vala_genie_parser_parse_type_parameter_list (self, &_inner_error_);
        type_param_list = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (sym);
@@ -20771,7 +20743,7 @@ static ValaSymbol* vala_genie_parser_parse_interface_declaration (ValaGenieParse
                                _tmp7_ = FALSE;
                                _tmp9_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                                type = _tmp9_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (base_types);
@@ -20938,7 +20910,7 @@ static ValaSymbol* vala_genie_parser_parse_interface_declaration (ValaGenieParse
                _vala_iterable_unref0 (_base_type_list);
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (iface);
@@ -20958,7 +20930,7 @@ static ValaSymbol* vala_genie_parser_parse_interface_declaration (ValaGenieParse
        }
        _tmp64_ = iface;
        vala_genie_parser_parse_declarations (self, (ValaSymbol*) _tmp64_, FALSE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (iface);
@@ -21055,7 +21027,7 @@ static void vala_genie_parser_parse_interface_member (ValaGenieParser* self, Val
        g_return_if_fail (iface != NULL);
        _tmp0_ = vala_genie_parser_parse_declaration (self, FALSE, &_inner_error_);
        sym = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -21159,7 +21131,7 @@ static ValaSymbol* vala_genie_parser_parse_enum_declaration (ValaGenieParser* se
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_ENUM, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -21173,7 +21145,7 @@ static ValaSymbol* vala_genie_parser_parse_enum_declaration (ValaGenieParser* se
        flags = _tmp1_;
        _tmp2_ = vala_genie_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -21237,7 +21209,7 @@ static ValaSymbol* vala_genie_parser_parse_enum_declaration (ValaGenieParser* se
        _tmp28_ = attrs;
        vala_genie_parser_set_attributes (self, (ValaCodeNode*) _tmp27_, _tmp28_);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (en);
@@ -21252,7 +21224,7 @@ static ValaSymbol* vala_genie_parser_parse_enum_declaration (ValaGenieParser* se
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_INDENT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (en);
@@ -21315,7 +21287,7 @@ static ValaSymbol* vala_genie_parser_parse_enum_declaration (ValaGenieParser* se
                }
                _tmp36_ = vala_genie_parser_parse_attributes (self, FALSE, &_inner_error_);
                value_attrs = _tmp36_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (en);
@@ -21333,7 +21305,7 @@ static ValaSymbol* vala_genie_parser_parse_enum_declaration (ValaGenieParser* se
                value_begin = _tmp37_;
                _tmp38_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                id = _tmp38_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (value_attrs);
@@ -21361,7 +21333,7 @@ static ValaSymbol* vala_genie_parser_parse_enum_declaration (ValaGenieParser* se
                        ValaExpression* _tmp44_ = NULL;
                        _tmp43_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                        _tmp42_ = _tmp43_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (value);
@@ -21406,7 +21378,7 @@ static ValaSymbol* vala_genie_parser_parse_enum_declaration (ValaGenieParser* se
                _tmp57_ = ev;
                vala_enum_add_value (_tmp56_, _tmp57_);
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (ev);
@@ -21434,7 +21406,7 @@ static ValaSymbol* vala_genie_parser_parse_enum_declaration (ValaGenieParser* se
                _vala_iterable_unref0 (value_attrs);
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DEDENT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (en);
@@ -21546,7 +21518,7 @@ static ValaSymbol* vala_genie_parser_parse_errordomain_declaration (ValaGeniePar
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_ERRORDOMAIN, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -21560,7 +21532,7 @@ static ValaSymbol* vala_genie_parser_parse_errordomain_declaration (ValaGeniePar
        flags = _tmp1_;
        _tmp2_ = vala_genie_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -21603,7 +21575,7 @@ static ValaSymbol* vala_genie_parser_parse_errordomain_declaration (ValaGeniePar
        _tmp20_ = attrs;
        vala_genie_parser_set_attributes (self, (ValaCodeNode*) _tmp19_, _tmp20_);
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_EOL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (ed);
@@ -21618,7 +21590,7 @@ static ValaSymbol* vala_genie_parser_parse_errordomain_declaration (ValaGeniePar
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_INDENT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (ed);
@@ -21678,7 +21650,7 @@ static ValaSymbol* vala_genie_parser_parse_errordomain_declaration (ValaGeniePar
                }
                _tmp28_ = vala_genie_parser_parse_attributes (self, FALSE, &_inner_error_);
                code_attrs = _tmp28_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (ed);
@@ -21696,7 +21668,7 @@ static ValaSymbol* vala_genie_parser_parse_errordomain_declaration (ValaGeniePar
                code_begin = _tmp29_;
                _tmp30_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                id = _tmp30_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (code_attrs);
@@ -21735,7 +21707,7 @@ static ValaSymbol* vala_genie_parser_parse_errordomain_declaration (ValaGeniePar
                        ValaErrorCode* _tmp45_ = NULL;
                        _tmp44_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                        _tmp43_ = _tmp44_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (ec);
@@ -21768,7 +21740,7 @@ static ValaSymbol* vala_genie_parser_parse_errordomain_declaration (ValaGeniePar
                _vala_iterable_unref0 (code_attrs);
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DEDENT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (ed);
@@ -22043,7 +22015,7 @@ static ValaParameter* vala_genie_parser_parse_parameter (ValaGenieParser* self,
        g_return_val_if_fail (self != NULL, NULL);
        _tmp0_ = vala_genie_parser_parse_attributes (self, TRUE, &_inner_error_);
        attrs = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -22087,7 +22059,7 @@ static ValaParameter* vala_genie_parser_parse_parameter (ValaGenieParser* self,
        }
        _tmp11_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
        id = _tmp11_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (attrs);
@@ -22100,7 +22072,7 @@ static ValaParameter* vala_genie_parser_parse_parameter (ValaGenieParser* self,
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_COLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -22121,7 +22093,7 @@ static ValaParameter* vala_genie_parser_parse_parameter (ValaGenieParser* self,
                ValaDataType* _tmp15_ = NULL;
                _tmp14_ = vala_genie_parser_parse_type (self, FALSE, FALSE, &_inner_error_);
                _tmp13_ = _tmp14_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (type);
@@ -22151,7 +22123,7 @@ static ValaParameter* vala_genie_parser_parse_parameter (ValaGenieParser* self,
                        ValaDataType* _tmp19_ = NULL;
                        _tmp18_ = vala_genie_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
                        _tmp17_ = _tmp18_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (type);
@@ -22178,7 +22150,7 @@ static ValaParameter* vala_genie_parser_parse_parameter (ValaGenieParser* self,
                        ValaDataType* _tmp22_ = NULL;
                        _tmp21_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                        _tmp20_ = _tmp21_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (type);
@@ -22226,7 +22198,7 @@ static ValaParameter* vala_genie_parser_parse_parameter (ValaGenieParser* self,
                ValaParameter* _tmp39_ = NULL;
                _tmp38_ = vala_genie_parser_parse_expression (self, &_inner_error_);
                _tmp37_ = _tmp38_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (param);
@@ -22274,7 +22246,7 @@ static ValaCreationMethod* vala_genie_parser_parse_creation_method_declaration (
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CONSTRUCT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (method);
@@ -22312,7 +22284,7 @@ static ValaCreationMethod* vala_genie_parser_parse_creation_method_declaration (
                ValaUnresolvedSymbol* _tmp11_ = NULL;
                _tmp8_ = vala_genie_parser_parse_symbol_name (self, &_inner_error_);
                sym = _tmp8_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
@@ -22411,7 +22383,7 @@ static ValaCreationMethod* vala_genie_parser_parse_creation_method_declaration (
                        _vala_source_reference_unref0 (_tmp43_);
                }
                vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (sym);
@@ -22447,7 +22419,7 @@ static ValaCreationMethod* vala_genie_parser_parse_creation_method_declaration (
                                _tmp47_ = FALSE;
                                _tmp49_ = vala_genie_parser_parse_parameter (self, &_inner_error_);
                                param = _tmp49_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (method);
@@ -22467,7 +22439,7 @@ static ValaCreationMethod* vala_genie_parser_parse_creation_method_declaration (
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (method);
@@ -22498,7 +22470,7 @@ static ValaCreationMethod* vala_genie_parser_parse_creation_method_declaration (
                                _tmp53_ = FALSE;
                                _tmp56_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                                _tmp55_ = _tmp56_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (method);
@@ -22530,7 +22502,7 @@ static ValaCreationMethod* vala_genie_parser_parse_creation_method_declaration (
                ValaCreationMethod* _tmp65_ = NULL;
                _tmp64_ = vala_genie_parser_parse_block (self, &_inner_error_);
                _tmp63_ = _tmp64_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
@@ -22610,7 +22582,7 @@ static ValaSymbol* vala_genie_parser_parse_delegate_declaration (ValaGenieParser
        vala_genie_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_DELEGATE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -22626,7 +22598,7 @@ static ValaSymbol* vala_genie_parser_parse_delegate_declaration (ValaGenieParser
        flags = _tmp1_;
        _tmp2_ = vala_genie_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -22640,7 +22612,7 @@ static ValaSymbol* vala_genie_parser_parse_delegate_declaration (ValaGenieParser
        }
        _tmp3_ = vala_genie_parser_parse_type_parameter_list (self, &_inner_error_);
        type_param_list = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (sym);
@@ -22685,7 +22657,7 @@ static ValaSymbol* vala_genie_parser_parse_delegate_declaration (ValaGenieParser
        _tmp10_ = vala_array_list_new (VALA_TYPE_PARAMETER, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp9_);
        params = _tmp10_;
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (params);
@@ -22723,7 +22695,7 @@ static ValaSymbol* vala_genie_parser_parse_delegate_declaration (ValaGenieParser
                                _tmp12_ = FALSE;
                                _tmp14_ = vala_genie_parser_parse_parameter (self, &_inner_error_);
                                param = _tmp14_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (params);
@@ -22749,7 +22721,7 @@ static ValaSymbol* vala_genie_parser_parse_delegate_declaration (ValaGenieParser
                }
        }
        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (params);
@@ -22774,7 +22746,7 @@ static ValaSymbol* vala_genie_parser_parse_delegate_declaration (ValaGenieParser
                ValaDataType* _tmp20_ = NULL;
                _tmp19_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                _tmp18_ = _tmp19_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (params);
@@ -22834,7 +22806,7 @@ static ValaSymbol* vala_genie_parser_parse_delegate_declaration (ValaGenieParser
                                _tmp33_ = FALSE;
                                _tmp36_ = vala_genie_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
                                _tmp35_ = _tmp36_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (d);
@@ -22861,7 +22833,7 @@ static ValaSymbol* vala_genie_parser_parse_delegate_declaration (ValaGenieParser
                }
        }
        vala_genie_parser_expect_terminator (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (d);
@@ -23131,7 +23103,7 @@ static ValaList* vala_genie_parser_parse_type_parameter_list (ValaGenieParser* s
                                begin = _tmp5_;
                                _tmp6_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                                id = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (list);
@@ -23201,7 +23173,7 @@ static void vala_genie_parser_skip_type_argument_list (ValaGenieParser* self, GE
                                        }
                                        _tmp2_ = FALSE;
                                        vala_genie_parser_skip_type (self, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        return;
@@ -23214,7 +23186,7 @@ static void vala_genie_parser_skip_type_argument_list (ValaGenieParser* self, GE
                                }
                        }
                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return;
@@ -23238,7 +23210,7 @@ static void vala_genie_parser_skip_type_argument_list (ValaGenieParser* self, GE
                                        }
                                        _tmp4_ = FALSE;
                                        vala_genie_parser_skip_type (self, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        return;
@@ -23307,7 +23279,7 @@ static ValaList* vala_genie_parser_parse_type_argument_list (ValaGenieParser* se
                                                ValaDataType* _tmp10_ = NULL;
                                                _tmp8_ = vala_genie_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
                                                type = _tmp8_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                _vala_iterable_unref0 (list);
@@ -23340,7 +23312,7 @@ static ValaList* vala_genie_parser_parse_type_argument_list (ValaGenieParser* se
                _tmp12_ = inParens;
                if (_tmp12_) {
                        vala_genie_parser_expect (self, VALA_GENIE_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (list);
@@ -23397,7 +23369,7 @@ static ValaMemberAccess* vala_genie_parser_parse_member_name (ValaGenieParser* s
                        _tmp1_ = FALSE;
                        _tmp3_ = vala_genie_parser_parse_identifier (self, &_inner_error_);
                        id = _tmp3_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -23411,7 +23383,7 @@ static ValaMemberAccess* vala_genie_parser_parse_member_name (ValaGenieParser* s
                        }
                        _tmp4_ = vala_genie_parser_parse_type_argument_list (self, FALSE, &_inner_error_);
                        type_arg_list = _tmp4_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (id);
@@ -23526,9 +23498,9 @@ static GType vala_genie_parser_token_info_get_type (void) {
 
 static void vala_genie_parser_class_init (ValaGenieParserClass * klass) {
        vala_genie_parser_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_genie_parser_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_genie_parser_finalize;
        g_type_class_add_private (klass, sizeof (ValaGenieParserPrivate));
-       VALA_CODE_VISITOR_CLASS (klass)->visit_source_file = vala_genie_parser_real_visit_source_file;
+       ((ValaCodeVisitorClass *) klass)->visit_source_file = vala_genie_parser_real_visit_source_file;
 }
 
 
index f479905..7abd943 100644 (file)
@@ -602,21 +602,16 @@ public class Vala.Genie.Parser : CodeVisitor {
 
                // inline-allocated array
                if (type != null && accept (TokenType.OPEN_BRACKET)) {
-                       int array_length = -1;
+                       Expression array_length = null;
 
                        if (current () != TokenType.CLOSE_BRACKET) {
-                               if (current () != TokenType.INTEGER_LITERAL) {
-                                       throw new ParseError.SYNTAX (get_error ("expected `]' or integer literal"));
-                               }
-
-                               var length_literal = (IntegerLiteral) parse_literal ();
-                               array_length = int.parse (length_literal.value);
+                               array_length = parse_expression ();
                        }
                        expect (TokenType.CLOSE_BRACKET);
 
                        var array_type = new ArrayType (type, 1, get_src (begin));
                        array_type.inline_allocated = true;
-                       if (array_length > 0) {
+                       if (array_length != null) {
                                array_type.fixed_length = true;
                                array_type.length = array_length;
                        }
index 5715f23..6da4dda 100644 (file)
@@ -335,7 +335,7 @@ GType vala_comment_get_type (void) G_GNUC_CONST;
 static GType vala_genie_scanner_conditional_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
 static ValaGenieScannerConditional* vala_genie_scanner_conditional_dup (const ValaGenieScannerConditional* self);
 static void vala_genie_scanner_conditional_free (ValaGenieScannerConditional* self);
-static GType vala_genie_scanner_state_get_type (void) G_GNUC_UNUSED;
+static GType vala_genie_scanner_state_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
 #define VALA_GENIE_SCANNER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_GENIE_TYPE_SCANNER, ValaGenieScannerPrivate))
 enum  {
        VALA_GENIE_SCANNER_DUMMY_PROPERTY
@@ -7146,7 +7146,7 @@ void vala_genie_value_take_scanner (GValue* value, gpointer v_object) {
 
 static void vala_genie_scanner_class_init (ValaGenieScannerClass * klass) {
        vala_genie_scanner_parent_class = g_type_class_peek_parent (klass);
-       VALA_GENIE_SCANNER_CLASS (klass)->finalize = vala_genie_scanner_finalize;
+       ((ValaGenieScannerClass *) klass)->finalize = vala_genie_scanner_finalize;
        g_type_class_add_private (klass, sizeof (ValaGenieScannerPrivate));
 }
 
@@ -7160,6 +7160,7 @@ static void vala_genie_scanner_instance_init (ValaGenieScanner * self) {
 static void vala_genie_scanner_finalize (ValaGenieScanner* obj) {
        ValaGenieScanner * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_GENIE_TYPE_SCANNER, ValaGenieScanner);
+       g_signal_handlers_destroy (self);
        _vala_source_file_unref0 (self->priv->_source_file);
        _vala_comment_unref0 (self->priv->_comment);
        self->priv->conditional_stack = (g_free (self->priv->conditional_stack), NULL);
index 30f885d..3828236 100644 (file)
@@ -214,7 +214,7 @@ void vala_gir_comment_set_return_content (ValaGirComment* self, ValaComment* val
 
 static void vala_gir_comment_class_init (ValaGirCommentClass * klass) {
        vala_gir_comment_parent_class = g_type_class_peek_parent (klass);
-       VALA_COMMENT_CLASS (klass)->finalize = vala_gir_comment_finalize;
+       ((ValaCommentClass *) klass)->finalize = vala_gir_comment_finalize;
        g_type_class_add_private (klass, sizeof (ValaGirCommentPrivate));
 }
 
index d64eb62..b49df07 100644 (file)
@@ -1391,7 +1391,8 @@ typedef enum  {
        VALA_GIR_PARSER_ARGUMENT_TYPE_INSTANCE_IDX,
        VALA_GIR_PARSER_ARGUMENT_TYPE_EXPERIMENTAL,
        VALA_GIR_PARSER_ARGUMENT_TYPE_FLOATING,
-       VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE_ID
+       VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE_ID,
+       VALA_GIR_PARSER_ARGUMENT_TYPE_RETURN_VOID
 } ValaGirParserArgumentType;
 
 struct _ValaGirParserNode {
@@ -1418,6 +1419,10 @@ struct _ValaGirParserNode {
        ValaArrayList* destroy_parameters;
        ValaUnresolvedSymbol* gtype_struct_for;
        ValaDataType* base_type;
+       gboolean deprecated;
+       guint64 deprecated_version;
+       gchar* deprecated_since;
+       gchar* deprecated_replacement;
 };
 
 struct _ValaGirParserNodeClass {
@@ -1868,7 +1873,7 @@ GType vala_unresolved_symbol_get_type (void) G_GNUC_CONST;
 enum  {
        VALA_GIR_PARSER_DUMMY_PROPERTY
 };
-static GType vala_gir_parser_argument_type_get_type (void) G_GNUC_UNUSED;
+static GType vala_gir_parser_argument_type_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
 static ValaGirParserArgumentType* vala_gir_parser_argument_type_from_string (const gchar* name);
 static ValaGirParserArgumentType* _vala_gir_parser_argument_type_dup (ValaGirParserArgumentType* self);
 static guint vala_gir_parser_unresolved_symbol_hash (void* ptr);
@@ -1989,12 +1994,12 @@ GType vala_pointer_type_get_type (void) G_GNUC_CONST;
 ValaUnresolvedType* vala_unresolved_type_new_from_symbol (ValaUnresolvedSymbol* symbol, ValaSourceReference* source);
 ValaUnresolvedType* vala_unresolved_type_construct_from_symbol (GType object_type, ValaUnresolvedSymbol* symbol, ValaSourceReference* source);
 GType vala_unresolved_type_get_type (void) G_GNUC_CONST;
+void vala_data_type_set_value_owned (ValaDataType* self, gboolean value);
 ValaArrayType* vala_array_type_new (ValaDataType* element_type, gint rank, ValaSourceReference* source_reference);
 ValaArrayType* vala_array_type_construct (GType object_type, ValaDataType* element_type, gint rank, ValaSourceReference* source_reference);
 GType vala_reference_type_get_type (void) G_GNUC_CONST;
 GType vala_array_type_get_type (void) G_GNUC_CONST;
 void vala_data_type_set_nullable (ValaDataType* self, gboolean value);
-void vala_data_type_set_value_owned (ValaDataType* self, gboolean value);
 static gchar* vala_gir_parser_element_get_string (ValaGirParser* self, const gchar* attribute_name, ValaGirParserArgumentType arg_type);
 static gchar* vala_gir_parser_metadata_get_string (ValaGirParserMetadata* self, ValaGirParserArgumentType arg);
 static ValaDataType* vala_gir_parser_element_get_type (ValaGirParser* self, ValaDataType* orig_type, gboolean owned_by_default, gboolean* no_array_length, gboolean* array_null_terminated, gboolean* changed);
@@ -2308,6 +2313,7 @@ static gchar* vala_gir_parser_node_get_default_cname (ValaGirParserNode* self);
 ValaMemberBinding vala_field_get_binding (ValaField* self);
 static gchar* vala_gir_parser_node_get_cheader_filename (ValaGirParserNode* self);
 gchar* vala_source_file_get_cinclude_filename (ValaSourceFile* self);
+static guint64 vala_gir_parser_node_parse_version_string (const gchar* version);
 gboolean vala_method_get_is_virtual (ValaMethod* self);
 gboolean vala_method_get_is_abstract (ValaMethod* self);
 gboolean vala_method_get_coroutine (ValaMethod* self);
@@ -2360,9 +2366,9 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp4_ = _tmp3_;
                _g_free0 (_tmp2_);
                regex = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_REGEX_ERROR) {
-                               goto __catch3_g_regex_error;
+                               goto __catch5_g_regex_error;
                        }
                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
@@ -2372,10 +2378,10 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _tmp7_ = replacement;
                _tmp8_ = g_regex_replace_literal (_tmp6_, self, (gssize) (-1), 0, _tmp7_, 0, &_inner_error_);
                _tmp5_ = _tmp8_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_regex_unref0 (regex);
                        if (_inner_error_->domain == G_REGEX_ERROR) {
-                               goto __catch3_g_regex_error;
+                               goto __catch5_g_regex_error;
                        }
                        _g_regex_unref0 (regex);
                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -2389,8 +2395,8 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                _g_regex_unref0 (regex);
                return result;
        }
-       goto __finally3;
-       __catch3_g_regex_error:
+       goto __finally5;
+       __catch5_g_regex_error:
        {
                GError* e = NULL;
                e = _inner_error_;
@@ -2398,8 +2404,8 @@ static gchar* string_replace (const gchar* self, const gchar* old, const gchar*
                g_assert_not_reached ();
                _g_error_free0 (e);
        }
-       __finally3:
-       if (_inner_error_ != NULL) {
+       __finally5:
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return NULL;
@@ -2467,7 +2473,7 @@ static ValaGirParserArgumentType* vala_gir_parser_argument_type_from_string (con
 static GType vala_gir_parser_argument_type_get_type (void) {
        static volatile gsize vala_gir_parser_argument_type_type_id__volatile = 0;
        if (g_once_init_enter (&vala_gir_parser_argument_type_type_id__volatile)) {
-               static const GEnumValue values[] = {{VALA_GIR_PARSER_ARGUMENT_TYPE_SKIP, "VALA_GIR_PARSER_ARGUMENT_TYPE_SKIP", "skip"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_HIDDEN, "VALA_GIR_PARSER_ARGUMENT_TYPE_HIDDEN", "hidden"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE, "VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE", "type"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE_ARGUMENTS, "VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE_ARGUMENTS", "type-arguments"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_CHEADER_FILENAME, "VALA_GIR_PARSER_ARGUMENT_TYPE_CHEADER_FILENAME", "cheader-filename"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_NAME, "VALA_GIR_PARSER_ARGUMENT_TYPE_NAME", "name"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_OWNED, "VALA_GIR_PARSER_ARGUMENT_TYPE_OWNED", "owned"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_UNOWNED, "VALA_GIR_PARSER_ARGUMENT_TYPE_UNOWNED", "unowned"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_PARENT, "VALA_GIR_PARSER_ARGUMENT_TYPE_PARENT", "parent"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_NULLABLE, "VALA_GIR_PARSER_ARGUMENT_TYPE_NULLABLE", "nullable"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED, "VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED", "deprecated"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_REPLACEMENT, "VALA_GIR_PARSER_ARGUMENT_TYPE_REPLACEMENT", "replacement"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED_SINCE, "VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED_SINCE", "deprecated-since"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY, "VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY", "array"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_LENGTH_IDX, "VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_LENGTH_IDX", "array-length-idx"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_NULL_TERMINATED, "VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_NULL_TERMINATED", "array-null-terminated"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_DEFAULT, "VALA_GIR_PARSER_ARGUMENT_TYPE_DEFAULT", "default"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_OUT, "VALA_GIR_PARSER_ARGUMENT_TYPE_OUT", "out"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_REF, "VALA_GIR_PARSER_ARGUMENT_TYPE_REF", "ref"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_VFUNC_NAME, "VALA_GIR_PARSER_ARGUMENT_TYPE_VFUNC_NAME", "vfunc-name"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_VIRTUAL, "VALA_GIR_PARSER_ARGUMENT_TYPE_VIRTUAL", "virtual"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_ABSTRACT, "VALA_GIR_PARSER_ARGUMENT_TYPE_ABSTRACT", "abstract"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_SCOPE, "VALA_GIR_PARSER_ARGUMENT_TYPE_SCOPE", "scope"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_STRUCT, "VALA_GIR_PARSER_ARGUMENT_TYPE_STRUCT", "struct"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_THROWS, "VALA_GIR_PARSER_ARGUMENT_TYPE_THROWS", "throws"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_PRINTF_FORMAT, "VALA_GIR_PARSER_ARGUMENT_TYPE_PRINTF_FORMAT", "printf-format"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_LENGTH_FIELD, "VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_LENGTH_FIELD", "array-length-field"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_SENTINEL, "VALA_GIR_PARSER_ARGUMENT_TYPE_SENTINEL", "sentinel"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_CLOSURE, "VALA_GIR_PARSER_ARGUMENT_TYPE_CLOSURE", "closure"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_CPREFIX, "VALA_GIR_PARSER_ARGUMENT_TYPE_CPREFIX", "cprefix"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_LOWER_CASE_CPREFIX, "VALA_GIR_PARSER_ARGUMENT_TYPE_LOWER_CASE_CPREFIX", "lower-case-cprefix"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_ERRORDOMAIN, "VALA_GIR_PARSER_ARGUMENT_TYPE_ERRORDOMAIN", "errordomain"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_DESTROYS_INSTANCE, "VALA_GIR_PARSER_ARGUMENT_TYPE_DESTROYS_INSTANCE", "destroys-instance"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_BASE_TYPE, "VALA_GIR_PARSER_ARGUMENT_TYPE_BASE_TYPE", "base-type"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_FINISH_NAME, "VALA_GIR_PARSER_ARGUMENT_TYPE_FINISH_NAME", "finish-name"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_SYMBOL_TYPE, "VALA_GIR_PARSER_ARGUMENT_TYPE_SYMBOL_TYPE", "symbol-type"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_INSTANCE_IDX, "VALA_GIR_PARSER_ARGUMENT_TYPE_INSTANCE_IDX", "instance-idx"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_EXPERIMENTAL, "VALA_GIR_PARSER_ARGUMENT_TYPE_EXPERIMENTAL", "experimental"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_FLOATING, "VALA_GIR_PARSER_ARGUMENT_TYPE_FLOATING", "floating"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE_ID, "VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE_ID", "type-id"}, {0, NULL, NULL}};
+               static const GEnumValue values[] = {{VALA_GIR_PARSER_ARGUMENT_TYPE_SKIP, "VALA_GIR_PARSER_ARGUMENT_TYPE_SKIP", "skip"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_HIDDEN, "VALA_GIR_PARSER_ARGUMENT_TYPE_HIDDEN", "hidden"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE, "VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE", "type"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE_ARGUMENTS, "VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE_ARGUMENTS", "type-arguments"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_CHEADER_FILENAME, "VALA_GIR_PARSER_ARGUMENT_TYPE_CHEADER_FILENAME", "cheader-filename"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_NAME, "VALA_GIR_PARSER_ARGUMENT_TYPE_NAME", "name"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_OWNED, "VALA_GIR_PARSER_ARGUMENT_TYPE_OWNED", "owned"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_UNOWNED, "VALA_GIR_PARSER_ARGUMENT_TYPE_UNOWNED", "unowned"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_PARENT, "VALA_GIR_PARSER_ARGUMENT_TYPE_PARENT", "parent"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_NULLABLE, "VALA_GIR_PARSER_ARGUMENT_TYPE_NULLABLE", "nullable"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED, "VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED", "deprecated"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_REPLACEMENT, "VALA_GIR_PARSER_ARGUMENT_TYPE_REPLACEMENT", "replacement"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED_SINCE, "VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED_SINCE", "deprecated-since"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY, "VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY", "array"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_LENGTH_IDX, "VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_LENGTH_IDX", "array-length-idx"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_NULL_TERMINATED, "VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_NULL_TERMINATED", "array-null-terminated"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_DEFAULT, "VALA_GIR_PARSER_ARGUMENT_TYPE_DEFAULT", "default"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_OUT, "VALA_GIR_PARSER_ARGUMENT_TYPE_OUT", "out"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_REF, "VALA_GIR_PARSER_ARGUMENT_TYPE_REF", "ref"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_VFUNC_NAME, "VALA_GIR_PARSER_ARGUMENT_TYPE_VFUNC_NAME", "vfunc-name"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_VIRTUAL, "VALA_GIR_PARSER_ARGUMENT_TYPE_VIRTUAL", "virtual"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_ABSTRACT, "VALA_GIR_PARSER_ARGUMENT_TYPE_ABSTRACT", "abstract"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_SCOPE, "VALA_GIR_PARSER_ARGUMENT_TYPE_SCOPE", "scope"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_STRUCT, "VALA_GIR_PARSER_ARGUMENT_TYPE_STRUCT", "struct"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_THROWS, "VALA_GIR_PARSER_ARGUMENT_TYPE_THROWS", "throws"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_PRINTF_FORMAT, "VALA_GIR_PARSER_ARGUMENT_TYPE_PRINTF_FORMAT", "printf-format"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_LENGTH_FIELD, "VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_LENGTH_FIELD", "array-length-field"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_SENTINEL, "VALA_GIR_PARSER_ARGUMENT_TYPE_SENTINEL", "sentinel"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_CLOSURE, "VALA_GIR_PARSER_ARGUMENT_TYPE_CLOSURE", "closure"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_CPREFIX, "VALA_GIR_PARSER_ARGUMENT_TYPE_CPREFIX", "cprefix"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_LOWER_CASE_CPREFIX, "VALA_GIR_PARSER_ARGUMENT_TYPE_LOWER_CASE_CPREFIX", "lower-case-cprefix"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_ERRORDOMAIN, "VALA_GIR_PARSER_ARGUMENT_TYPE_ERRORDOMAIN", "errordomain"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_DESTROYS_INSTANCE, "VALA_GIR_PARSER_ARGUMENT_TYPE_DESTROYS_INSTANCE", "destroys-instance"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_BASE_TYPE, "VALA_GIR_PARSER_ARGUMENT_TYPE_BASE_TYPE", "base-type"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_FINISH_NAME, "VALA_GIR_PARSER_ARGUMENT_TYPE_FINISH_NAME", "finish-name"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_SYMBOL_TYPE, "VALA_GIR_PARSER_ARGUMENT_TYPE_SYMBOL_TYPE", "symbol-type"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_INSTANCE_IDX, "VALA_GIR_PARSER_ARGUMENT_TYPE_INSTANCE_IDX", "instance-idx"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_EXPERIMENTAL, "VALA_GIR_PARSER_ARGUMENT_TYPE_EXPERIMENTAL", "experimental"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_FLOATING, "VALA_GIR_PARSER_ARGUMENT_TYPE_FLOATING", "floating"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE_ID, "VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE_ID", "type-id"}, {VALA_GIR_PARSER_ARGUMENT_TYPE_RETURN_VOID, "VALA_GIR_PARSER_ARGUMENT_TYPE_RETURN_VOID", "return-void"}, {0, NULL, NULL}};
                GType vala_gir_parser_argument_type_type_id;
                vala_gir_parser_argument_type_type_id = g_enum_register_static ("ValaGirParserArgumentType", values);
                g_once_init_leave (&vala_gir_parser_argument_type_type_id__volatile, vala_gir_parser_argument_type_type_id);
@@ -2933,6 +2939,10 @@ void vala_gir_parser_parse_file (ValaGirParser* self, ValaSourceFile* source_fil
        _tmp4_ = _vala_gir_parser_metadata_ref0 (_tmp3_);
        _vala_gir_parser_metadata_unref0 (self->priv->metadata);
        self->priv->metadata = _tmp4_;
+       self->priv->cheader_filenames = (_vala_array_free (self->priv->cheader_filenames, self->priv->cheader_filenames_length1, (GDestroyNotify) g_free), NULL);
+       self->priv->cheader_filenames = NULL;
+       self->priv->cheader_filenames_length1 = 0;
+       self->priv->_cheader_filenames_size_ = self->priv->cheader_filenames_length1;
        _tmp5_ = source_file;
        _tmp6_ = _vala_source_file_ref0 (_tmp5_);
        _vala_source_file_unref0 (self->priv->current_source_file);
@@ -4494,10 +4504,10 @@ static ValaDataType* vala_gir_parser_parse_type_from_string (ValaGirParser* self
        const gchar* _tmp68_ = NULL;
        gboolean _tmp77_ = FALSE;
        const gchar* _tmp78_ = NULL;
-       ValaDataType* _tmp88_ = NULL;
-       gboolean _tmp89_ = FALSE;
-       ValaDataType* _tmp90_ = NULL;
-       gboolean _tmp91_ = FALSE;
+       ValaDataType* _tmp89_ = NULL;
+       gboolean _tmp90_ = FALSE;
+       ValaDataType* _tmp91_ = NULL;
+       gboolean _tmp92_ = FALSE;
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (type_string != NULL, NULL);
@@ -4510,9 +4520,9 @@ static ValaDataType* vala_gir_parser_parse_type_from_string (ValaGirParser* self
                        _tmp2_ = g_regex_new ("^(?:(owned|unowned|weak) +)?([0-9a-zA-Z_\\.]+)(?:<(.+)>)?(\\*+)?(\\[,*" \
 "\\])?(\\?)?$", (G_REGEX_ANCHORED | G_REGEX_DOLLAR_ENDONLY) | G_REGEX_OPTIMIZE, 0, &_inner_error_);
                        _tmp1_ = _tmp2_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == G_REGEX_ERROR) {
-                                       goto __catch4_g_regex_error;
+                                       goto __catch6_g_regex_error;
                                }
                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
@@ -4524,19 +4534,19 @@ static ValaDataType* vala_gir_parser_parse_type_from_string (ValaGirParser* self
                        vala_gir_parser_type_from_string_regex = _tmp3_;
                        _g_regex_unref0 (_tmp1_);
                }
-               goto __finally4;
-               __catch4_g_regex_error:
+               goto __finally6;
+               __catch6_g_regex_error:
                {
                        GError* e = NULL;
                        const gchar* _tmp4_ = NULL;
                        e = _inner_error_;
                        _inner_error_ = NULL;
                        _tmp4_ = e->message;
-                       g_error ("valagirparser.vala:1524: Unable to compile regex: %s", _tmp4_);
+                       g_error ("valagirparser.vala:1605: Unable to compile regex: %s", _tmp4_);
                        _g_error_free0 (e);
                }
-               __finally4:
-               if (_inner_error_ != NULL) {
+               __finally6:
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
                        return NULL;
@@ -4821,26 +4831,29 @@ static ValaDataType* vala_gir_parser_parse_type_from_string (ValaGirParser* self
        }
        if (_tmp77_) {
                ValaDataType* _tmp82_ = NULL;
-               const gchar* _tmp83_ = NULL;
-               gint _tmp84_ = 0;
+               ValaDataType* _tmp83_ = NULL;
+               const gchar* _tmp84_ = NULL;
                gint _tmp85_ = 0;
-               ValaSourceReference* _tmp86_ = NULL;
-               ValaArrayType* _tmp87_ = NULL;
+               gint _tmp86_ = 0;
+               ValaSourceReference* _tmp87_ = NULL;
+               ValaArrayType* _tmp88_ = NULL;
                _tmp82_ = type;
-               _tmp83_ = array_data;
-               _tmp84_ = strlen (_tmp83_);
-               _tmp85_ = _tmp84_;
-               _tmp86_ = source_reference;
-               _tmp87_ = vala_array_type_new (_tmp82_, ((gint) _tmp85_) - 1, _tmp86_);
+               vala_data_type_set_value_owned (_tmp82_, TRUE);
+               _tmp83_ = type;
+               _tmp84_ = array_data;
+               _tmp85_ = strlen (_tmp84_);
+               _tmp86_ = _tmp85_;
+               _tmp87_ = source_reference;
+               _tmp88_ = vala_array_type_new (_tmp83_, ((gint) _tmp86_) - 1, _tmp87_);
                _vala_code_node_unref0 (type);
-               type = (ValaDataType*) _tmp87_;
-       }
-       _tmp88_ = type;
-       _tmp89_ = nullable;
-       vala_data_type_set_nullable (_tmp88_, _tmp89_);
-       _tmp90_ = type;
-       _tmp91_ = value_owned;
-       vala_data_type_set_value_owned (_tmp90_, _tmp91_);
+               type = (ValaDataType*) _tmp88_;
+       }
+       _tmp89_ = type;
+       _tmp90_ = nullable;
+       vala_data_type_set_nullable (_tmp89_, _tmp90_);
+       _tmp91_ = type;
+       _tmp92_ = value_owned;
+       vala_data_type_set_value_owned (_tmp91_, _tmp92_);
        result = type;
        _vala_code_node_unref0 (sym);
        _g_free0 (nullable_data);
@@ -4894,7 +4907,7 @@ static ValaDataType* vala_gir_parser_element_get_type (ValaGirParser* self, Vala
        ValaDataType* _tmp1_ = NULL;
        ValaGirParserMetadata* _tmp2_ = NULL;
        gboolean _tmp3_ = FALSE;
-       ValaDataType* _tmp51_ = NULL;
+       ValaDataType* _tmp52_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (orig_type != NULL, NULL);
        _vala_changed = FALSE;
@@ -4933,13 +4946,13 @@ static ValaDataType* vala_gir_parser_element_get_type (ValaGirParser* self, Vala
                        gboolean _tmp14_ = FALSE;
                        gboolean _tmp23_ = FALSE;
                        ValaDataType* _tmp24_ = NULL;
-                       gboolean _tmp32_ = FALSE;
-                       ValaDataType* _tmp45_ = NULL;
-                       ValaGirParserMetadata* _tmp46_ = NULL;
-                       ValaDataType* _tmp47_ = NULL;
-                       gboolean _tmp48_ = FALSE;
+                       gboolean _tmp33_ = FALSE;
+                       ValaDataType* _tmp46_ = NULL;
+                       ValaGirParserMetadata* _tmp47_ = NULL;
+                       ValaDataType* _tmp48_ = NULL;
                        gboolean _tmp49_ = FALSE;
                        gboolean _tmp50_ = FALSE;
+                       gboolean _tmp51_ = FALSE;
                        _tmp13_ = self->priv->metadata;
                        _tmp14_ = vala_gir_parser_metadata_has_argument (_tmp13_, VALA_GIR_PARSER_ARGUMENT_TYPE_TYPE_ARGUMENTS);
                        if (_tmp14_) {
@@ -4977,71 +4990,74 @@ static ValaDataType* vala_gir_parser_element_get_type (ValaGirParser* self, Vala
                        if (_tmp23_) {
                                ValaDataType* _tmp27_ = NULL;
                                ValaDataType* _tmp28_ = NULL;
-                               ValaSourceReference* _tmp29_ = NULL;
+                               ValaDataType* _tmp29_ = NULL;
                                ValaSourceReference* _tmp30_ = NULL;
-                               ValaArrayType* _tmp31_ = NULL;
+                               ValaSourceReference* _tmp31_ = NULL;
+                               ValaArrayType* _tmp32_ = NULL;
                                _tmp27_ = type;
+                               vala_data_type_set_value_owned (_tmp27_, TRUE);
                                _tmp28_ = type;
-                               _tmp29_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp28_);
-                               _tmp30_ = _tmp29_;
-                               _tmp31_ = vala_array_type_new (_tmp27_, 1, _tmp30_);
+                               _tmp29_ = type;
+                               _tmp30_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp29_);
+                               _tmp31_ = _tmp30_;
+                               _tmp32_ = vala_array_type_new (_tmp28_, 1, _tmp31_);
                                _vala_code_node_unref0 (type);
-                               type = (ValaDataType*) _tmp31_;
+                               type = (ValaDataType*) _tmp32_;
                                _vala_changed = TRUE;
                        }
-                       _tmp32_ = owned_by_default;
-                       if (_tmp32_) {
-                               ValaDataType* _tmp33_ = NULL;
-                               ValaGirParserMetadata* _tmp34_ = NULL;
-                               ValaDataType* _tmp35_ = NULL;
-                               gboolean _tmp36_ = FALSE;
+                       _tmp33_ = owned_by_default;
+                       if (_tmp33_) {
+                               ValaDataType* _tmp34_ = NULL;
+                               ValaGirParserMetadata* _tmp35_ = NULL;
+                               ValaDataType* _tmp36_ = NULL;
                                gboolean _tmp37_ = FALSE;
                                gboolean _tmp38_ = FALSE;
-                               _tmp33_ = type;
-                               _tmp34_ = self->priv->metadata;
-                               _tmp35_ = type;
-                               _tmp36_ = vala_data_type_get_value_owned (_tmp35_);
-                               _tmp37_ = _tmp36_;
-                               _tmp38_ = vala_gir_parser_metadata_get_bool (_tmp34_, VALA_GIR_PARSER_ARGUMENT_TYPE_UNOWNED, !_tmp37_);
-                               vala_data_type_set_value_owned (_tmp33_, !_tmp38_);
+                               gboolean _tmp39_ = FALSE;
+                               _tmp34_ = type;
+                               _tmp35_ = self->priv->metadata;
+                               _tmp36_ = type;
+                               _tmp37_ = vala_data_type_get_value_owned (_tmp36_);
+                               _tmp38_ = _tmp37_;
+                               _tmp39_ = vala_gir_parser_metadata_get_bool (_tmp35_, VALA_GIR_PARSER_ARGUMENT_TYPE_UNOWNED, !_tmp38_);
+                               vala_data_type_set_value_owned (_tmp34_, !_tmp39_);
                        } else {
-                               ValaDataType* _tmp39_ = NULL;
-                               ValaGirParserMetadata* _tmp40_ = NULL;
-                               ValaDataType* _tmp41_ = NULL;
-                               gboolean _tmp42_ = FALSE;
+                               ValaDataType* _tmp40_ = NULL;
+                               ValaGirParserMetadata* _tmp41_ = NULL;
+                               ValaDataType* _tmp42_ = NULL;
                                gboolean _tmp43_ = FALSE;
                                gboolean _tmp44_ = FALSE;
-                               _tmp39_ = type;
-                               _tmp40_ = self->priv->metadata;
-                               _tmp41_ = type;
-                               _tmp42_ = vala_data_type_get_value_owned (_tmp41_);
-                               _tmp43_ = _tmp42_;
-                               _tmp44_ = vala_gir_parser_metadata_get_bool (_tmp40_, VALA_GIR_PARSER_ARGUMENT_TYPE_OWNED, _tmp43_);
-                               vala_data_type_set_value_owned (_tmp39_, _tmp44_);
+                               gboolean _tmp45_ = FALSE;
+                               _tmp40_ = type;
+                               _tmp41_ = self->priv->metadata;
+                               _tmp42_ = type;
+                               _tmp43_ = vala_data_type_get_value_owned (_tmp42_);
+                               _tmp44_ = _tmp43_;
+                               _tmp45_ = vala_gir_parser_metadata_get_bool (_tmp41_, VALA_GIR_PARSER_ARGUMENT_TYPE_OWNED, _tmp44_);
+                               vala_data_type_set_value_owned (_tmp40_, _tmp45_);
                        }
-                       _tmp45_ = type;
-                       _tmp46_ = self->priv->metadata;
-                       _tmp47_ = type;
-                       _tmp48_ = vala_data_type_get_nullable (_tmp47_);
-                       _tmp49_ = _tmp48_;
-                       _tmp50_ = vala_gir_parser_metadata_get_bool (_tmp46_, VALA_GIR_PARSER_ARGUMENT_TYPE_NULLABLE, _tmp49_);
-                       vala_data_type_set_nullable (_tmp45_, _tmp50_);
+                       _tmp46_ = type;
+                       _tmp47_ = self->priv->metadata;
+                       _tmp48_ = type;
+                       _tmp49_ = vala_data_type_get_nullable (_tmp48_);
+                       _tmp50_ = _tmp49_;
+                       _tmp51_ = vala_gir_parser_metadata_get_bool (_tmp47_, VALA_GIR_PARSER_ARGUMENT_TYPE_NULLABLE, _tmp50_);
+                       vala_data_type_set_nullable (_tmp46_, _tmp51_);
                }
        }
-       _tmp51_ = type;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp51_, VALA_TYPE_ARRAY_TYPE)) {
-               ValaDataType* _tmp52_ = NULL;
-               ValaGirParserMetadata* _tmp53_ = NULL;
-               gboolean _tmp54_ = FALSE;
+       _tmp52_ = type;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp52_, VALA_TYPE_ARRAY_TYPE)) {
+               ValaDataType* _tmp53_ = NULL;
+               ValaGirParserMetadata* _tmp54_ = NULL;
                gboolean _tmp55_ = FALSE;
-               _tmp52_ = orig_type;
-               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp52_, VALA_TYPE_ARRAY_TYPE)) {
+               gboolean _tmp56_ = FALSE;
+               _tmp53_ = orig_type;
+               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp53_, VALA_TYPE_ARRAY_TYPE)) {
                        *no_array_length = TRUE;
                }
-               _tmp53_ = self->priv->metadata;
-               _tmp54_ = *array_null_terminated;
-               _tmp55_ = vala_gir_parser_metadata_get_bool (_tmp53_, VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_NULL_TERMINATED, _tmp54_);
-               *array_null_terminated = _tmp55_;
+               _tmp54_ = self->priv->metadata;
+               _tmp55_ = *array_null_terminated;
+               _tmp56_ = vala_gir_parser_metadata_get_bool (_tmp54_, VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_NULL_TERMINATED, _tmp55_);
+               *array_null_terminated = _tmp56_;
        }
        result = type;
        if (changed) {
@@ -5171,21 +5187,21 @@ static gchar* vala_gir_parser_element_get_name (ValaGirParser* self, const gchar
                                _tmp23_ = pattern;
                                _tmp24_ = g_regex_new (_tmp23_, G_REGEX_ANCHORED, G_REGEX_MATCH_ANCHORED, &_inner_error_);
                                regex = _tmp24_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        split = (_vala_array_free (split, split_length1, (GDestroyNotify) g_free), NULL);
                                        _g_free0 (replacement);
-                                       goto __catch5_g_error;
+                                       goto __catch7_g_error;
                                }
                                _tmp26_ = regex;
                                _tmp27_ = name;
                                _tmp28_ = replacement;
                                _tmp29_ = g_regex_replace (_tmp26_, _tmp27_, (gssize) (-1), 0, _tmp28_, 0, &_inner_error_);
                                _tmp25_ = _tmp29_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        _g_regex_unref0 (regex);
                                        split = (_vala_array_free (split, split_length1, (GDestroyNotify) g_free), NULL);
                                        _g_free0 (replacement);
-                                       goto __catch5_g_error;
+                                       goto __catch7_g_error;
                                }
                                _tmp30_ = _tmp25_;
                                _tmp25_ = NULL;
@@ -5196,8 +5212,8 @@ static gchar* vala_gir_parser_element_get_name (ValaGirParser* self, const gchar
                                split = (_vala_array_free (split, split_length1, (GDestroyNotify) g_free), NULL);
                                _g_free0 (replacement);
                        }
-                       goto __finally5;
-                       __catch5_g_error:
+                       goto __finally7;
+                       __catch7_g_error:
                        {
                                GError* e = NULL;
                                const gchar* _tmp31_ = NULL;
@@ -5210,8 +5226,8 @@ static gchar* vala_gir_parser_element_get_name (ValaGirParser* self, const gchar
                                name = _tmp32_;
                                _g_error_free0 (e);
                        }
-                       __finally5:
-                       if (_inner_error_ != NULL) {
+                       __finally7:
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                _g_free0 (pattern);
                                _g_free0 (name);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -6095,7 +6111,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                gint _tmp43__length1 = 0;
                const gchar* _tmp44_ = NULL;
                void* _tmp45_ = NULL;
-               const gchar* _tmp59_ = NULL;
+               const gchar* _tmp62_ = NULL;
                len = (gsize) 1;
                {
                        gboolean _tmp9_ = FALSE;
@@ -6172,7 +6188,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                        _tmp25__length1 = str_array_length1;
                                        _tmp26_ = i;
                                        _tmp27_ = _tmp25_[_tmp26_];
-                                       _tmp28_ = strlen (_tmp27_);
+                                       _tmp28_ = strlen ((const gchar*) _tmp27_);
                                        _tmp29_ = _tmp28_;
                                        _tmp21_ = _tmp29_;
                                } else {
@@ -6194,7 +6210,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                _tmp34_ = str_array_length1;
                _tmp35_ = len;
                _tmp36_ = separator;
-               _tmp37_ = strlen (_tmp36_);
+               _tmp37_ = strlen ((const gchar*) _tmp36_);
                _tmp38_ = _tmp37_;
                _tmp39_ = i;
                len = _tmp35_ + (_tmp38_ * (_tmp39_ - 1));
@@ -6205,7 +6221,7 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                _tmp43_ = str_array;
                _tmp43__length1 = str_array_length1;
                _tmp44_ = _tmp43_[0];
-               _tmp45_ = g_stpcpy ((void*) _tmp42_, _tmp44_);
+               _tmp45_ = g_stpcpy ((void*) _tmp42_, (const gchar*) _tmp44_);
                ptr = _tmp45_;
                {
                        gboolean _tmp46_ = FALSE;
@@ -6223,8 +6239,8 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                gint _tmp54__length1 = 0;
                                gint _tmp55_ = 0;
                                const gchar* _tmp56_ = NULL;
-                               void* _tmp57_ = NULL;
-                               void* _tmp58_ = NULL;
+                               void* _tmp60_ = NULL;
+                               void* _tmp61_ = NULL;
                                if (!_tmp46_) {
                                        gint _tmp47_ = 0;
                                        _tmp47_ = i;
@@ -6239,29 +6255,38 @@ static gchar* _vala_g_strjoinv (const gchar* separator, gchar** str_array, int s
                                }
                                _tmp50_ = ptr;
                                _tmp51_ = separator;
-                               _tmp52_ = g_stpcpy (_tmp50_, _tmp51_);
+                               _tmp52_ = g_stpcpy (_tmp50_, (const gchar*) _tmp51_);
                                ptr = _tmp52_;
                                _tmp54_ = str_array;
                                _tmp54__length1 = str_array_length1;
                                _tmp55_ = i;
                                _tmp56_ = _tmp54_[_tmp55_];
-                               _tmp53_ = _tmp56_;
-                               if (_tmp53_ == NULL) {
+                               if (_tmp56_ != NULL) {
+                                       gchar** _tmp57_ = NULL;
+                                       gint _tmp57__length1 = 0;
+                                       gint _tmp58_ = 0;
+                                       const gchar* _tmp59_ = NULL;
+                                       _tmp57_ = str_array;
+                                       _tmp57__length1 = str_array_length1;
+                                       _tmp58_ = i;
+                                       _tmp59_ = _tmp57_[_tmp58_];
+                                       _tmp53_ = (const gchar*) _tmp59_;
+                               } else {
                                        _tmp53_ = "";
                                }
-                               _tmp57_ = ptr;
-                               _tmp58_ = g_stpcpy (_tmp57_, _tmp53_);
-                               ptr = _tmp58_;
+                               _tmp60_ = ptr;
+                               _tmp61_ = g_stpcpy (_tmp60_, _tmp53_);
+                               ptr = _tmp61_;
                        }
                }
-               _tmp59_ = res;
+               _tmp62_ = res;
                res = NULL;
-               result = (gchar*) _tmp59_;
+               result = (gchar*) _tmp62_;
                return result;
        } else {
-               gchar* _tmp60_ = NULL;
-               _tmp60_ = g_strdup ("");
-               result = _tmp60_;
+               gchar* _tmp63_ = NULL;
+               _tmp63_ = g_strdup ("");
+               result = _tmp63_;
                return result;
        }
 }
@@ -6271,111 +6296,133 @@ static void vala_gir_parser_parse_namespace (ValaGirParser* self) {
        gchar* cprefix = NULL;
        ValaMarkupReader* _tmp0_ = NULL;
        gchar* _tmp1_ = NULL;
+       const gchar* _tmp2_ = NULL;
        gchar* lower_case_cprefix = NULL;
-       ValaMarkupReader* _tmp2_ = NULL;
-       gchar* _tmp3_ = NULL;
+       ValaMarkupReader* _tmp9_ = NULL;
+       gchar* _tmp10_ = NULL;
        gchar* vala_namespace = NULL;
-       const gchar* _tmp4_ = NULL;
-       gchar* _tmp5_ = NULL;
+       const gchar* _tmp11_ = NULL;
+       gchar* _tmp12_ = NULL;
        gchar* gir_namespace = NULL;
-       ValaMarkupReader* _tmp6_ = NULL;
-       gchar* _tmp7_ = NULL;
+       ValaMarkupReader* _tmp13_ = NULL;
+       gchar* _tmp14_ = NULL;
        gchar* gir_version = NULL;
-       ValaMarkupReader* _tmp8_ = NULL;
-       gchar* _tmp9_ = NULL;
-       const gchar* _tmp10_ = NULL;
-       ValaSet* _tmp17_ = NULL;
-       const gchar* _tmp18_ = NULL;
-       const gchar* _tmp19_ = NULL;
-       gchar* _tmp20_ = NULL;
-       gchar* _tmp21_ = NULL;
-       gboolean _tmp22_ = FALSE;
-       gboolean _tmp23_ = FALSE;
-       gchar* metadata_filename = NULL;
-       ValaCodeContext* _tmp24_ = NULL;
-       ValaSourceFile* _tmp25_ = NULL;
+       ValaMarkupReader* _tmp15_ = NULL;
+       gchar* _tmp16_ = NULL;
+       const gchar* _tmp17_ = NULL;
+       ValaSet* _tmp24_ = NULL;
+       const gchar* _tmp25_ = NULL;
        const gchar* _tmp26_ = NULL;
-       const gchar* _tmp27_ = NULL;
+       gchar* _tmp27_ = NULL;
        gchar* _tmp28_ = NULL;
        gboolean _tmp29_ = FALSE;
-       const gchar* _tmp30_ = NULL;
+       gboolean _tmp30_ = FALSE;
+       gchar* metadata_filename = NULL;
+       ValaCodeContext* _tmp31_ = NULL;
+       ValaSourceFile* _tmp32_ = NULL;
+       const gchar* _tmp33_ = NULL;
+       const gchar* _tmp34_ = NULL;
+       gchar* _tmp35_ = NULL;
+       gboolean _tmp36_ = FALSE;
+       const gchar* _tmp37_ = NULL;
        ValaGirParserMetadata* ns_metadata = NULL;
-       ValaGirParserMetadata* _tmp47_ = NULL;
-       const gchar* _tmp48_ = NULL;
-       ValaGirParserMetadata* _tmp49_ = NULL;
-       ValaGirParserMetadata* _tmp50_ = NULL;
-       gboolean _tmp51_ = FALSE;
-       const gchar* _tmp54_ = NULL;
-       ValaSourceFile* _tmp57_ = NULL;
-       const gchar* _tmp58_ = NULL;
-       ValaSourceFile* _tmp59_ = NULL;
-       const gchar* _tmp60_ = NULL;
-       ValaNamespace* ns = NULL;
+       ValaGirParserMetadata* _tmp54_ = NULL;
+       const gchar* _tmp55_ = NULL;
+       ValaGirParserMetadata* _tmp56_ = NULL;
+       ValaGirParserMetadata* _tmp57_ = NULL;
+       gboolean _tmp58_ = FALSE;
        const gchar* _tmp61_ = NULL;
-       ValaGirParserNode* _tmp62_ = NULL;
-       gboolean _tmp63_ = FALSE;
-       ValaGirParserNode* _tmp78_ = NULL;
-       ValaGirParserMetadata* _tmp79_ = NULL;
-       ValaGirParserMetadata* _tmp80_ = NULL;
-       ValaGirParserMetadata* _tmp81_ = NULL;
-       gboolean _tmp82_ = FALSE;
-       ValaGirParserMetadata* _tmp85_ = NULL;
-       gboolean _tmp86_ = FALSE;
-       ValaNamespace* _tmp92_ = NULL;
-       const gchar* _tmp93_ = NULL;
-       ValaNamespace* _tmp94_ = NULL;
-       const gchar* _tmp95_ = NULL;
-       const gchar* _tmp96_ = NULL;
-       const gchar* _tmp106_ = NULL;
-       gchar** _tmp109_ = NULL;
-       gint _tmp109__length1 = 0;
+       ValaSourceFile* _tmp64_ = NULL;
+       const gchar* _tmp65_ = NULL;
+       ValaSourceFile* _tmp66_ = NULL;
+       const gchar* _tmp67_ = NULL;
+       ValaNamespace* ns = NULL;
+       const gchar* _tmp68_ = NULL;
+       ValaGirParserNode* _tmp69_ = NULL;
+       gboolean _tmp70_ = FALSE;
+       ValaGirParserNode* _tmp85_ = NULL;
+       ValaGirParserMetadata* _tmp86_ = NULL;
+       ValaGirParserMetadata* _tmp87_ = NULL;
+       ValaGirParserMetadata* _tmp88_ = NULL;
+       gboolean _tmp89_ = FALSE;
+       ValaGirParserMetadata* _tmp92_ = NULL;
+       gboolean _tmp93_ = FALSE;
+       ValaNamespace* _tmp99_ = NULL;
+       const gchar* _tmp100_ = NULL;
+       ValaNamespace* _tmp101_ = NULL;
+       const gchar* _tmp102_ = NULL;
+       const gchar* _tmp103_ = NULL;
+       const gchar* _tmp113_ = NULL;
+       gchar** _tmp116_ = NULL;
+       gint _tmp116__length1 = 0;
        g_return_if_fail (self != NULL);
        vala_gir_parser_start_element (self, "namespace");
        _tmp0_ = self->priv->reader;
        _tmp1_ = vala_markup_reader_get_attribute (_tmp0_, "c:identifier-prefixes");
        cprefix = _tmp1_;
-       _tmp2_ = self->priv->reader;
-       _tmp3_ = vala_markup_reader_get_attribute (_tmp2_, "c:symbol-prefixes");
-       lower_case_cprefix = _tmp3_;
-       _tmp4_ = cprefix;
-       _tmp5_ = g_strdup (_tmp4_);
-       vala_namespace = _tmp5_;
-       _tmp6_ = self->priv->reader;
-       _tmp7_ = vala_markup_reader_get_attribute (_tmp6_, "name");
-       gir_namespace = _tmp7_;
-       _tmp8_ = self->priv->reader;
-       _tmp9_ = vala_markup_reader_get_attribute (_tmp8_, "version");
-       gir_version = _tmp9_;
-       _tmp10_ = lower_case_cprefix;
-       if (_tmp10_ != NULL) {
+       _tmp2_ = cprefix;
+       if (_tmp2_ != NULL) {
                gint idx = 0;
-               const gchar* _tmp11_ = NULL;
-               gint _tmp12_ = 0;
-               gint _tmp13_ = 0;
-               _tmp11_ = lower_case_cprefix;
-               _tmp12_ = string_index_of (_tmp11_, ",", 0);
-               idx = _tmp12_;
-               _tmp13_ = idx;
-               if (_tmp13_ != (-1)) {
-                       const gchar* _tmp14_ = NULL;
-                       gint _tmp15_ = 0;
-                       gchar* _tmp16_ = NULL;
-                       _tmp14_ = lower_case_cprefix;
-                       _tmp15_ = idx;
-                       _tmp16_ = string_substring (_tmp14_, (glong) 0, (glong) _tmp15_);
+               const gchar* _tmp3_ = NULL;
+               gint _tmp4_ = 0;
+               gint _tmp5_ = 0;
+               _tmp3_ = cprefix;
+               _tmp4_ = string_index_of (_tmp3_, ",", 0);
+               idx = _tmp4_;
+               _tmp5_ = idx;
+               if (_tmp5_ != (-1)) {
+                       const gchar* _tmp6_ = NULL;
+                       gint _tmp7_ = 0;
+                       gchar* _tmp8_ = NULL;
+                       _tmp6_ = cprefix;
+                       _tmp7_ = idx;
+                       _tmp8_ = string_substring (_tmp6_, (glong) 0, (glong) _tmp7_);
+                       _g_free0 (cprefix);
+                       cprefix = _tmp8_;
+               }
+       }
+       _tmp9_ = self->priv->reader;
+       _tmp10_ = vala_markup_reader_get_attribute (_tmp9_, "c:symbol-prefixes");
+       lower_case_cprefix = _tmp10_;
+       _tmp11_ = cprefix;
+       _tmp12_ = g_strdup (_tmp11_);
+       vala_namespace = _tmp12_;
+       _tmp13_ = self->priv->reader;
+       _tmp14_ = vala_markup_reader_get_attribute (_tmp13_, "name");
+       gir_namespace = _tmp14_;
+       _tmp15_ = self->priv->reader;
+       _tmp16_ = vala_markup_reader_get_attribute (_tmp15_, "version");
+       gir_version = _tmp16_;
+       _tmp17_ = lower_case_cprefix;
+       if (_tmp17_ != NULL) {
+               gint idx = 0;
+               const gchar* _tmp18_ = NULL;
+               gint _tmp19_ = 0;
+               gint _tmp20_ = 0;
+               _tmp18_ = lower_case_cprefix;
+               _tmp19_ = string_index_of (_tmp18_, ",", 0);
+               idx = _tmp19_;
+               _tmp20_ = idx;
+               if (_tmp20_ != (-1)) {
+                       const gchar* _tmp21_ = NULL;
+                       gint _tmp22_ = 0;
+                       gchar* _tmp23_ = NULL;
+                       _tmp21_ = lower_case_cprefix;
+                       _tmp22_ = idx;
+                       _tmp23_ = string_substring (_tmp21_, (glong) 0, (glong) _tmp22_);
                        _g_free0 (lower_case_cprefix);
-                       lower_case_cprefix = _tmp16_;
+                       lower_case_cprefix = _tmp23_;
                }
        }
-       _tmp17_ = self->priv->provided_namespaces;
-       _tmp18_ = gir_namespace;
-       _tmp19_ = gir_version;
-       _tmp20_ = g_strdup_printf ("%s-%s", _tmp18_, _tmp19_);
-       _tmp21_ = _tmp20_;
-       _tmp22_ = vala_collection_contains ((ValaCollection*) _tmp17_, _tmp21_);
-       _tmp23_ = _tmp22_;
-       _g_free0 (_tmp21_);
-       if (_tmp23_) {
+       _tmp24_ = self->priv->provided_namespaces;
+       _tmp25_ = gir_namespace;
+       _tmp26_ = gir_version;
+       _tmp27_ = g_strdup_printf ("%s-%s", _tmp25_, _tmp26_);
+       _tmp28_ = _tmp27_;
+       _tmp29_ = vala_collection_contains ((ValaCollection*) _tmp24_, _tmp28_);
+       _tmp30_ = _tmp29_;
+       _g_free0 (_tmp28_);
+       if (_tmp30_) {
                vala_gir_parser_skip_element (self);
                _g_free0 (gir_version);
                _g_free0 (gir_namespace);
@@ -6384,395 +6431,395 @@ static void vala_gir_parser_parse_namespace (ValaGirParser* self) {
                _g_free0 (cprefix);
                return;
        }
-       _tmp24_ = self->priv->context;
-       _tmp25_ = self->priv->current_source_file;
-       _tmp26_ = vala_source_file_get_filename (_tmp25_);
-       _tmp27_ = _tmp26_;
-       _tmp28_ = vala_code_context_get_metadata_path (_tmp24_, _tmp27_);
-       metadata_filename = _tmp28_;
-       _tmp30_ = metadata_filename;
-       if (_tmp30_ != NULL) {
-               const gchar* _tmp31_ = NULL;
-               gboolean _tmp32_ = FALSE;
-               _tmp31_ = metadata_filename;
-               _tmp32_ = g_file_test (_tmp31_, G_FILE_TEST_EXISTS);
-               _tmp29_ = _tmp32_;
+       _tmp31_ = self->priv->context;
+       _tmp32_ = self->priv->current_source_file;
+       _tmp33_ = vala_source_file_get_filename (_tmp32_);
+       _tmp34_ = _tmp33_;
+       _tmp35_ = vala_code_context_get_metadata_path (_tmp31_, _tmp34_);
+       metadata_filename = _tmp35_;
+       _tmp37_ = metadata_filename;
+       if (_tmp37_ != NULL) {
+               const gchar* _tmp38_ = NULL;
+               gboolean _tmp39_ = FALSE;
+               _tmp38_ = metadata_filename;
+               _tmp39_ = g_file_test (_tmp38_, G_FILE_TEST_EXISTS);
+               _tmp36_ = _tmp39_;
        } else {
-               _tmp29_ = FALSE;
+               _tmp36_ = FALSE;
        }
-       if (_tmp29_) {
+       if (_tmp36_) {
                ValaGirParserMetadataParser* metadata_parser = NULL;
-               ValaGirParserMetadataParser* _tmp33_ = NULL;
+               ValaGirParserMetadataParser* _tmp40_ = NULL;
                ValaSourceFile* metadata_file = NULL;
-               ValaCodeContext* _tmp34_ = NULL;
-               ValaSourceFile* _tmp35_ = NULL;
-               ValaSourceFileType _tmp36_ = 0;
-               ValaSourceFileType _tmp37_ = 0;
-               const gchar* _tmp38_ = NULL;
-               ValaSourceFile* _tmp39_ = NULL;
-               ValaCodeContext* _tmp40_ = NULL;
-               ValaSourceFile* _tmp41_ = NULL;
-               ValaGirParserMetadataParser* _tmp42_ = NULL;
-               ValaSourceFile* _tmp43_ = NULL;
-               ValaGirParserMetadata* _tmp44_ = NULL;
-               ValaArrayList* _tmp45_ = NULL;
-               ValaGirParserMetadata* _tmp46_ = NULL;
-               _tmp33_ = vala_gir_parser_metadata_parser_new ();
-               metadata_parser = _tmp33_;
-               _tmp34_ = self->priv->context;
-               _tmp35_ = self->priv->current_source_file;
-               _tmp36_ = vala_source_file_get_file_type (_tmp35_);
-               _tmp37_ = _tmp36_;
-               _tmp38_ = metadata_filename;
-               _tmp39_ = vala_source_file_new (_tmp34_, _tmp37_, _tmp38_, NULL, FALSE);
-               metadata_file = _tmp39_;
-               _tmp40_ = self->priv->context;
-               _tmp41_ = metadata_file;
-               vala_code_context_add_source_file (_tmp40_, _tmp41_);
-               _tmp42_ = metadata_parser;
-               _tmp43_ = metadata_file;
-               _tmp44_ = vala_gir_parser_metadata_parser_parse_metadata (_tmp42_, _tmp43_);
+               ValaCodeContext* _tmp41_ = NULL;
+               ValaSourceFile* _tmp42_ = NULL;
+               ValaSourceFileType _tmp43_ = 0;
+               ValaSourceFileType _tmp44_ = 0;
+               const gchar* _tmp45_ = NULL;
+               ValaSourceFile* _tmp46_ = NULL;
+               ValaCodeContext* _tmp47_ = NULL;
+               ValaSourceFile* _tmp48_ = NULL;
+               ValaGirParserMetadataParser* _tmp49_ = NULL;
+               ValaSourceFile* _tmp50_ = NULL;
+               ValaGirParserMetadata* _tmp51_ = NULL;
+               ValaArrayList* _tmp52_ = NULL;
+               ValaGirParserMetadata* _tmp53_ = NULL;
+               _tmp40_ = vala_gir_parser_metadata_parser_new ();
+               metadata_parser = _tmp40_;
+               _tmp41_ = self->priv->context;
+               _tmp42_ = self->priv->current_source_file;
+               _tmp43_ = vala_source_file_get_file_type (_tmp42_);
+               _tmp44_ = _tmp43_;
+               _tmp45_ = metadata_filename;
+               _tmp46_ = vala_source_file_new (_tmp41_, _tmp44_, _tmp45_, NULL, FALSE);
+               metadata_file = _tmp46_;
+               _tmp47_ = self->priv->context;
+               _tmp48_ = metadata_file;
+               vala_code_context_add_source_file (_tmp47_, _tmp48_);
+               _tmp49_ = metadata_parser;
+               _tmp50_ = metadata_file;
+               _tmp51_ = vala_gir_parser_metadata_parser_parse_metadata (_tmp49_, _tmp50_);
                _vala_gir_parser_metadata_unref0 (self->priv->metadata);
-               self->priv->metadata = _tmp44_;
-               _tmp45_ = self->priv->metadata_roots;
-               _tmp46_ = self->priv->metadata;
-               vala_collection_add ((ValaCollection*) _tmp45_, _tmp46_);
+               self->priv->metadata = _tmp51_;
+               _tmp52_ = self->priv->metadata_roots;
+               _tmp53_ = self->priv->metadata;
+               vala_collection_add ((ValaCollection*) _tmp52_, _tmp53_);
                _vala_source_file_unref0 (metadata_file);
                _vala_gir_parser_metadata_parser_unref0 (metadata_parser);
        }
-       _tmp47_ = self->priv->metadata;
-       _tmp48_ = gir_namespace;
-       _tmp49_ = vala_gir_parser_metadata_match_child (_tmp47_, _tmp48_, NULL);
-       ns_metadata = _tmp49_;
-       _tmp50_ = ns_metadata;
-       _tmp51_ = vala_gir_parser_metadata_has_argument (_tmp50_, VALA_GIR_PARSER_ARGUMENT_TYPE_NAME);
-       if (_tmp51_) {
-               ValaGirParserMetadata* _tmp52_ = NULL;
-               gchar* _tmp53_ = NULL;
-               _tmp52_ = ns_metadata;
-               _tmp53_ = vala_gir_parser_metadata_get_string (_tmp52_, VALA_GIR_PARSER_ARGUMENT_TYPE_NAME);
+       _tmp54_ = self->priv->metadata;
+       _tmp55_ = gir_namespace;
+       _tmp56_ = vala_gir_parser_metadata_match_child (_tmp54_, _tmp55_, NULL);
+       ns_metadata = _tmp56_;
+       _tmp57_ = ns_metadata;
+       _tmp58_ = vala_gir_parser_metadata_has_argument (_tmp57_, VALA_GIR_PARSER_ARGUMENT_TYPE_NAME);
+       if (_tmp58_) {
+               ValaGirParserMetadata* _tmp59_ = NULL;
+               gchar* _tmp60_ = NULL;
+               _tmp59_ = ns_metadata;
+               _tmp60_ = vala_gir_parser_metadata_get_string (_tmp59_, VALA_GIR_PARSER_ARGUMENT_TYPE_NAME);
                _g_free0 (vala_namespace);
-               vala_namespace = _tmp53_;
+               vala_namespace = _tmp60_;
        }
-       _tmp54_ = vala_namespace;
-       if (_tmp54_ == NULL) {
-               const gchar* _tmp55_ = NULL;
-               gchar* _tmp56_ = NULL;
-               _tmp55_ = gir_namespace;
-               _tmp56_ = g_strdup (_tmp55_);
-               _g_free0 (vala_namespace);
-               vala_namespace = _tmp56_;
-       }
-       _tmp57_ = self->priv->current_source_file;
-       _tmp58_ = gir_namespace;
-       vala_source_file_set_gir_namespace (_tmp57_, _tmp58_);
-       _tmp59_ = self->priv->current_source_file;
-       _tmp60_ = gir_version;
-       vala_source_file_set_gir_version (_tmp59_, _tmp60_);
        _tmp61_ = vala_namespace;
-       vala_gir_parser_push_node (self, _tmp61_, TRUE);
-       _tmp62_ = self->priv->current;
-       _tmp63_ = _tmp62_->new_symbol;
-       if (_tmp63_) {
-               const gchar* _tmp64_ = NULL;
-               ValaGirParserNode* _tmp65_ = NULL;
-               ValaSourceReference* _tmp66_ = NULL;
-               ValaNamespace* _tmp67_ = NULL;
-               ValaGirParserNode* _tmp68_ = NULL;
-               ValaNamespace* _tmp69_ = NULL;
-               ValaSymbol* _tmp70_ = NULL;
-               _tmp64_ = vala_namespace;
-               _tmp65_ = self->priv->current;
-               _tmp66_ = _tmp65_->source_reference;
-               _tmp67_ = vala_namespace_new (_tmp64_, _tmp66_);
+       if (_tmp61_ == NULL) {
+               const gchar* _tmp62_ = NULL;
+               gchar* _tmp63_ = NULL;
+               _tmp62_ = gir_namespace;
+               _tmp63_ = g_strdup (_tmp62_);
+               _g_free0 (vala_namespace);
+               vala_namespace = _tmp63_;
+       }
+       _tmp64_ = self->priv->current_source_file;
+       _tmp65_ = gir_namespace;
+       vala_source_file_set_gir_namespace (_tmp64_, _tmp65_);
+       _tmp66_ = self->priv->current_source_file;
+       _tmp67_ = gir_version;
+       vala_source_file_set_gir_version (_tmp66_, _tmp67_);
+       _tmp68_ = vala_namespace;
+       vala_gir_parser_push_node (self, _tmp68_, TRUE);
+       _tmp69_ = self->priv->current;
+       _tmp70_ = _tmp69_->new_symbol;
+       if (_tmp70_) {
+               const gchar* _tmp71_ = NULL;
+               ValaGirParserNode* _tmp72_ = NULL;
+               ValaSourceReference* _tmp73_ = NULL;
+               ValaNamespace* _tmp74_ = NULL;
+               ValaGirParserNode* _tmp75_ = NULL;
+               ValaNamespace* _tmp76_ = NULL;
+               ValaSymbol* _tmp77_ = NULL;
+               _tmp71_ = vala_namespace;
+               _tmp72_ = self->priv->current;
+               _tmp73_ = _tmp72_->source_reference;
+               _tmp74_ = vala_namespace_new (_tmp71_, _tmp73_);
                _vala_code_node_unref0 (ns);
-               ns = _tmp67_;
-               _tmp68_ = self->priv->current;
-               _tmp69_ = ns;
-               _tmp70_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp69_);
-               _vala_code_node_unref0 (_tmp68_->symbol);
-               _tmp68_->symbol = _tmp70_;
+               ns = _tmp74_;
+               _tmp75_ = self->priv->current;
+               _tmp76_ = ns;
+               _tmp77_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp76_);
+               _vala_code_node_unref0 (_tmp75_->symbol);
+               _tmp75_->symbol = _tmp77_;
        } else {
-               ValaGirParserNode* _tmp71_ = NULL;
-               ValaSymbol* _tmp72_ = NULL;
-               ValaNamespace* _tmp73_ = NULL;
-               ValaNamespace* _tmp74_ = NULL;
-               ValaNamespace* _tmp75_ = NULL;
-               ValaGirParserNode* _tmp76_ = NULL;
-               ValaSourceReference* _tmp77_ = NULL;
-               _tmp71_ = self->priv->current;
-               _tmp72_ = _tmp71_->symbol;
-               _tmp73_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp72_, VALA_TYPE_NAMESPACE, ValaNamespace));
+               ValaGirParserNode* _tmp78_ = NULL;
+               ValaSymbol* _tmp79_ = NULL;
+               ValaNamespace* _tmp80_ = NULL;
+               ValaNamespace* _tmp81_ = NULL;
+               ValaNamespace* _tmp82_ = NULL;
+               ValaGirParserNode* _tmp83_ = NULL;
+               ValaSourceReference* _tmp84_ = NULL;
+               _tmp78_ = self->priv->current;
+               _tmp79_ = _tmp78_->symbol;
+               _tmp80_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp79_, VALA_TYPE_NAMESPACE, ValaNamespace));
                _vala_code_node_unref0 (ns);
-               ns = _tmp73_;
-               _tmp74_ = ns;
-               __g_list_free__vala_code_node_unref0_0 (((ValaCodeNode*) _tmp74_)->attributes);
-               ((ValaCodeNode*) _tmp74_)->attributes = NULL;
-               _tmp75_ = ns;
-               _tmp76_ = self->priv->current;
-               _tmp77_ = _tmp76_->source_reference;
-               vala_code_node_set_source_reference ((ValaCodeNode*) _tmp75_, _tmp77_);
-       }
-       _tmp78_ = self->priv->current;
-       _tmp79_ = ns_metadata;
-       _tmp80_ = _vala_gir_parser_metadata_ref0 (_tmp79_);
-       _vala_gir_parser_metadata_unref0 (_tmp78_->metadata);
-       _tmp78_->metadata = _tmp80_;
-       _tmp81_ = ns_metadata;
-       _tmp82_ = vala_gir_parser_metadata_has_argument (_tmp81_, VALA_GIR_PARSER_ARGUMENT_TYPE_CPREFIX);
-       if (_tmp82_) {
-               ValaGirParserMetadata* _tmp83_ = NULL;
-               gchar* _tmp84_ = NULL;
-               _tmp83_ = ns_metadata;
-               _tmp84_ = vala_gir_parser_metadata_get_string (_tmp83_, VALA_GIR_PARSER_ARGUMENT_TYPE_CPREFIX);
+               ns = _tmp80_;
+               _tmp81_ = ns;
+               __g_list_free__vala_code_node_unref0_0 (((ValaCodeNode*) _tmp81_)->attributes);
+               ((ValaCodeNode*) _tmp81_)->attributes = NULL;
+               _tmp82_ = ns;
+               _tmp83_ = self->priv->current;
+               _tmp84_ = _tmp83_->source_reference;
+               vala_code_node_set_source_reference ((ValaCodeNode*) _tmp82_, _tmp84_);
+       }
+       _tmp85_ = self->priv->current;
+       _tmp86_ = ns_metadata;
+       _tmp87_ = _vala_gir_parser_metadata_ref0 (_tmp86_);
+       _vala_gir_parser_metadata_unref0 (_tmp85_->metadata);
+       _tmp85_->metadata = _tmp87_;
+       _tmp88_ = ns_metadata;
+       _tmp89_ = vala_gir_parser_metadata_has_argument (_tmp88_, VALA_GIR_PARSER_ARGUMENT_TYPE_CPREFIX);
+       if (_tmp89_) {
+               ValaGirParserMetadata* _tmp90_ = NULL;
+               gchar* _tmp91_ = NULL;
+               _tmp90_ = ns_metadata;
+               _tmp91_ = vala_gir_parser_metadata_get_string (_tmp90_, VALA_GIR_PARSER_ARGUMENT_TYPE_CPREFIX);
                _g_free0 (cprefix);
-               cprefix = _tmp84_;
-       }
-       _tmp85_ = ns_metadata;
-       _tmp86_ = vala_gir_parser_metadata_has_argument (_tmp85_, VALA_GIR_PARSER_ARGUMENT_TYPE_LOWER_CASE_CPREFIX);
-       if (_tmp86_) {
-               ValaGirParserMetadata* _tmp87_ = NULL;
-               gchar* _tmp88_ = NULL;
-               _tmp87_ = ns_metadata;
-               _tmp88_ = vala_gir_parser_metadata_get_string (_tmp87_, VALA_GIR_PARSER_ARGUMENT_TYPE_LOWER_CASE_CPREFIX);
+               cprefix = _tmp91_;
+       }
+       _tmp92_ = ns_metadata;
+       _tmp93_ = vala_gir_parser_metadata_has_argument (_tmp92_, VALA_GIR_PARSER_ARGUMENT_TYPE_LOWER_CASE_CPREFIX);
+       if (_tmp93_) {
+               ValaGirParserMetadata* _tmp94_ = NULL;
+               gchar* _tmp95_ = NULL;
+               _tmp94_ = ns_metadata;
+               _tmp95_ = vala_gir_parser_metadata_get_string (_tmp94_, VALA_GIR_PARSER_ARGUMENT_TYPE_LOWER_CASE_CPREFIX);
                _g_free0 (lower_case_cprefix);
-               lower_case_cprefix = _tmp88_;
+               lower_case_cprefix = _tmp95_;
        } else {
-               const gchar* _tmp89_ = NULL;
-               _tmp89_ = lower_case_cprefix;
-               if (_tmp89_ != NULL) {
-                       const gchar* _tmp90_ = NULL;
-                       gchar* _tmp91_ = NULL;
-                       _tmp90_ = lower_case_cprefix;
-                       _tmp91_ = g_strconcat (_tmp90_, "_", NULL);
+               const gchar* _tmp96_ = NULL;
+               _tmp96_ = lower_case_cprefix;
+               if (_tmp96_ != NULL) {
+                       const gchar* _tmp97_ = NULL;
+                       gchar* _tmp98_ = NULL;
+                       _tmp97_ = lower_case_cprefix;
+                       _tmp98_ = g_strconcat (_tmp97_, "_", NULL);
                        _g_free0 (lower_case_cprefix);
-                       lower_case_cprefix = _tmp91_;
+                       lower_case_cprefix = _tmp98_;
                }
        }
-       _tmp92_ = ns;
-       _tmp93_ = gir_namespace;
-       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp92_, "CCode", "gir_namespace", _tmp93_, NULL);
-       _tmp94_ = ns;
-       _tmp95_ = gir_version;
-       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp94_, "CCode", "gir_version", _tmp95_, NULL);
-       _tmp96_ = cprefix;
-       if (_tmp96_ != NULL) {
-               ValaNamespace* _tmp97_ = NULL;
-               const gchar* _tmp98_ = NULL;
-               const gchar* _tmp99_ = NULL;
-               _tmp97_ = ns;
-               _tmp98_ = cprefix;
-               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp97_, "CCode", "cprefix", _tmp98_, NULL);
-               _tmp99_ = lower_case_cprefix;
-               if (_tmp99_ == NULL) {
-                       ValaNamespace* _tmp100_ = NULL;
-                       const gchar* _tmp101_ = NULL;
-                       gchar* _tmp102_ = NULL;
-                       gchar* _tmp103_ = NULL;
-                       gchar* _tmp104_ = NULL;
-                       gchar* _tmp105_ = NULL;
-                       _tmp100_ = ns;
-                       _tmp101_ = cprefix;
-                       _tmp102_ = vala_symbol_camel_case_to_lower_case (_tmp101_);
-                       _tmp103_ = _tmp102_;
-                       _tmp104_ = g_strconcat (_tmp103_, "_", NULL);
-                       _tmp105_ = _tmp104_;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp100_, "CCode", "lower_case_cprefix", _tmp105_, NULL);
-                       _g_free0 (_tmp105_);
-                       _g_free0 (_tmp103_);
+       _tmp99_ = ns;
+       _tmp100_ = gir_namespace;
+       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp99_, "CCode", "gir_namespace", _tmp100_, NULL);
+       _tmp101_ = ns;
+       _tmp102_ = gir_version;
+       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp101_, "CCode", "gir_version", _tmp102_, NULL);
+       _tmp103_ = cprefix;
+       if (_tmp103_ != NULL) {
+               ValaNamespace* _tmp104_ = NULL;
+               const gchar* _tmp105_ = NULL;
+               const gchar* _tmp106_ = NULL;
+               _tmp104_ = ns;
+               _tmp105_ = cprefix;
+               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp104_, "CCode", "cprefix", _tmp105_, NULL);
+               _tmp106_ = lower_case_cprefix;
+               if (_tmp106_ == NULL) {
+                       ValaNamespace* _tmp107_ = NULL;
+                       const gchar* _tmp108_ = NULL;
+                       gchar* _tmp109_ = NULL;
+                       gchar* _tmp110_ = NULL;
+                       gchar* _tmp111_ = NULL;
+                       gchar* _tmp112_ = NULL;
+                       _tmp107_ = ns;
+                       _tmp108_ = cprefix;
+                       _tmp109_ = vala_symbol_camel_case_to_lower_case (_tmp108_);
+                       _tmp110_ = _tmp109_;
+                       _tmp111_ = g_strconcat (_tmp110_, "_", NULL);
+                       _tmp112_ = _tmp111_;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp107_, "CCode", "lower_case_cprefix", _tmp112_, NULL);
+                       _g_free0 (_tmp112_);
+                       _g_free0 (_tmp110_);
                }
        }
-       _tmp106_ = lower_case_cprefix;
-       if (_tmp106_ != NULL) {
-               ValaNamespace* _tmp107_ = NULL;
-               const gchar* _tmp108_ = NULL;
-               _tmp107_ = ns;
-               _tmp108_ = lower_case_cprefix;
-               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp107_, "CCode", "lower_case_cprefix", _tmp108_, NULL);
-       }
-       _tmp109_ = self->priv->cheader_filenames;
-       _tmp109__length1 = self->priv->cheader_filenames_length1;
-       if (_tmp109_ != NULL) {
-               ValaNamespace* _tmp110_ = NULL;
-               gchar** _tmp111_ = NULL;
-               gint _tmp111__length1 = 0;
-               gchar* _tmp112_ = NULL;
-               gchar* _tmp113_ = NULL;
-               _tmp110_ = ns;
-               _tmp111_ = self->priv->cheader_filenames;
-               _tmp111__length1 = self->priv->cheader_filenames_length1;
-               _tmp112_ = _vala_g_strjoinv (",", _tmp111_, _tmp111__length1);
-               _tmp113_ = _tmp112_;
-               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp110_, "CCode", "cheader_filename", _tmp113_, NULL);
-               _g_free0 (_tmp113_);
+       _tmp113_ = lower_case_cprefix;
+       if (_tmp113_ != NULL) {
+               ValaNamespace* _tmp114_ = NULL;
+               const gchar* _tmp115_ = NULL;
+               _tmp114_ = ns;
+               _tmp115_ = lower_case_cprefix;
+               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp114_, "CCode", "lower_case_cprefix", _tmp115_, NULL);
+       }
+       _tmp116_ = self->priv->cheader_filenames;
+       _tmp116__length1 = self->priv->cheader_filenames_length1;
+       if (_tmp116_ != NULL) {
+               ValaNamespace* _tmp117_ = NULL;
+               gchar** _tmp118_ = NULL;
+               gint _tmp118__length1 = 0;
+               gchar* _tmp119_ = NULL;
+               gchar* _tmp120_ = NULL;
+               _tmp117_ = ns;
+               _tmp118_ = self->priv->cheader_filenames;
+               _tmp118__length1 = self->priv->cheader_filenames_length1;
+               _tmp119_ = _vala_g_strjoinv (",", _tmp118_, _tmp118__length1);
+               _tmp120_ = _tmp119_;
+               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp117_, "CCode", "cheader_filename", _tmp120_, NULL);
+               _g_free0 (_tmp120_);
        }
        vala_gir_parser_next (self);
        while (TRUE) {
-               ValaMarkupTokenType _tmp114_ = 0;
-               gboolean _tmp115_ = FALSE;
-               ValaMarkupReader* _tmp116_ = NULL;
-               const gchar* _tmp117_ = NULL;
-               const gchar* _tmp118_ = NULL;
-               _tmp114_ = self->priv->current_token;
-               if (!(_tmp114_ == VALA_MARKUP_TOKEN_TYPE_START_ELEMENT)) {
+               ValaMarkupTokenType _tmp121_ = 0;
+               gboolean _tmp122_ = FALSE;
+               ValaMarkupReader* _tmp123_ = NULL;
+               const gchar* _tmp124_ = NULL;
+               const gchar* _tmp125_ = NULL;
+               _tmp121_ = self->priv->current_token;
+               if (!(_tmp121_ == VALA_MARKUP_TOKEN_TYPE_START_ELEMENT)) {
                        break;
                }
-               _tmp115_ = vala_gir_parser_push_metadata (self);
-               if (!_tmp115_) {
+               _tmp122_ = vala_gir_parser_push_metadata (self);
+               if (!_tmp122_) {
                        vala_gir_parser_skip_element (self);
                        continue;
                }
-               _tmp116_ = self->priv->reader;
-               _tmp117_ = vala_markup_reader_get_name (_tmp116_);
-               _tmp118_ = _tmp117_;
-               if (g_strcmp0 (_tmp118_, "alias") == 0) {
+               _tmp123_ = self->priv->reader;
+               _tmp124_ = vala_markup_reader_get_name (_tmp123_);
+               _tmp125_ = _tmp124_;
+               if (g_strcmp0 (_tmp125_, "alias") == 0) {
                        vala_gir_parser_parse_alias (self);
                } else {
-                       ValaMarkupReader* _tmp119_ = NULL;
-                       const gchar* _tmp120_ = NULL;
-                       const gchar* _tmp121_ = NULL;
-                       _tmp119_ = self->priv->reader;
-                       _tmp120_ = vala_markup_reader_get_name (_tmp119_);
-                       _tmp121_ = _tmp120_;
-                       if (g_strcmp0 (_tmp121_, "enumeration") == 0) {
-                               ValaGirParserMetadata* _tmp122_ = NULL;
-                               gboolean _tmp123_ = FALSE;
-                               _tmp122_ = self->priv->metadata;
-                               _tmp123_ = vala_gir_parser_metadata_has_argument (_tmp122_, VALA_GIR_PARSER_ARGUMENT_TYPE_ERRORDOMAIN);
-                               if (_tmp123_) {
-                                       ValaGirParserMetadata* _tmp124_ = NULL;
-                                       gboolean _tmp125_ = FALSE;
-                                       _tmp124_ = self->priv->metadata;
-                                       _tmp125_ = vala_gir_parser_metadata_get_bool (_tmp124_, VALA_GIR_PARSER_ARGUMENT_TYPE_ERRORDOMAIN, FALSE);
-                                       if (_tmp125_) {
+                       ValaMarkupReader* _tmp126_ = NULL;
+                       const gchar* _tmp127_ = NULL;
+                       const gchar* _tmp128_ = NULL;
+                       _tmp126_ = self->priv->reader;
+                       _tmp127_ = vala_markup_reader_get_name (_tmp126_);
+                       _tmp128_ = _tmp127_;
+                       if (g_strcmp0 (_tmp128_, "enumeration") == 0) {
+                               ValaGirParserMetadata* _tmp129_ = NULL;
+                               gboolean _tmp130_ = FALSE;
+                               _tmp129_ = self->priv->metadata;
+                               _tmp130_ = vala_gir_parser_metadata_has_argument (_tmp129_, VALA_GIR_PARSER_ARGUMENT_TYPE_ERRORDOMAIN);
+                               if (_tmp130_) {
+                                       ValaGirParserMetadata* _tmp131_ = NULL;
+                                       gboolean _tmp132_ = FALSE;
+                                       _tmp131_ = self->priv->metadata;
+                                       _tmp132_ = vala_gir_parser_metadata_get_bool (_tmp131_, VALA_GIR_PARSER_ARGUMENT_TYPE_ERRORDOMAIN, FALSE);
+                                       if (_tmp132_) {
                                                vala_gir_parser_parse_error_domain (self);
                                        } else {
                                                vala_gir_parser_parse_enumeration (self, "enumeration", FALSE);
                                        }
                                } else {
-                                       gboolean _tmp126_ = FALSE;
-                                       ValaMarkupReader* _tmp127_ = NULL;
-                                       gchar* _tmp128_ = NULL;
-                                       gchar* _tmp129_ = NULL;
-                                       gboolean _tmp130_ = FALSE;
-                                       _tmp127_ = self->priv->reader;
-                                       _tmp128_ = vala_markup_reader_get_attribute (_tmp127_, "glib:error-quark");
-                                       _tmp129_ = _tmp128_;
-                                       _tmp130_ = _tmp129_ != NULL;
-                                       _g_free0 (_tmp129_);
-                                       if (_tmp130_) {
-                                               _tmp126_ = TRUE;
+                                       gboolean _tmp133_ = FALSE;
+                                       ValaMarkupReader* _tmp134_ = NULL;
+                                       gchar* _tmp135_ = NULL;
+                                       gchar* _tmp136_ = NULL;
+                                       gboolean _tmp137_ = FALSE;
+                                       _tmp134_ = self->priv->reader;
+                                       _tmp135_ = vala_markup_reader_get_attribute (_tmp134_, "glib:error-quark");
+                                       _tmp136_ = _tmp135_;
+                                       _tmp137_ = _tmp136_ != NULL;
+                                       _g_free0 (_tmp136_);
+                                       if (_tmp137_) {
+                                               _tmp133_ = TRUE;
                                        } else {
-                                               ValaMarkupReader* _tmp131_ = NULL;
-                                               gchar* _tmp132_ = NULL;
-                                               gchar* _tmp133_ = NULL;
-                                               _tmp131_ = self->priv->reader;
-                                               _tmp132_ = vala_markup_reader_get_attribute (_tmp131_, "glib:error-domain");
-                                               _tmp133_ = _tmp132_;
-                                               _tmp126_ = _tmp133_ != NULL;
-                                               _g_free0 (_tmp133_);
+                                               ValaMarkupReader* _tmp138_ = NULL;
+                                               gchar* _tmp139_ = NULL;
+                                               gchar* _tmp140_ = NULL;
+                                               _tmp138_ = self->priv->reader;
+                                               _tmp139_ = vala_markup_reader_get_attribute (_tmp138_, "glib:error-domain");
+                                               _tmp140_ = _tmp139_;
+                                               _tmp133_ = _tmp140_ != NULL;
+                                               _g_free0 (_tmp140_);
                                        }
-                                       if (_tmp126_) {
+                                       if (_tmp133_) {
                                                vala_gir_parser_parse_error_domain (self);
                                        } else {
                                                vala_gir_parser_parse_enumeration (self, "enumeration", FALSE);
                                        }
                                }
                        } else {
-                               ValaMarkupReader* _tmp134_ = NULL;
-                               const gchar* _tmp135_ = NULL;
-                               const gchar* _tmp136_ = NULL;
-                               _tmp134_ = self->priv->reader;
-                               _tmp135_ = vala_markup_reader_get_name (_tmp134_);
-                               _tmp136_ = _tmp135_;
-                               if (g_strcmp0 (_tmp136_, "bitfield") == 0) {
+                               ValaMarkupReader* _tmp141_ = NULL;
+                               const gchar* _tmp142_ = NULL;
+                               const gchar* _tmp143_ = NULL;
+                               _tmp141_ = self->priv->reader;
+                               _tmp142_ = vala_markup_reader_get_name (_tmp141_);
+                               _tmp143_ = _tmp142_;
+                               if (g_strcmp0 (_tmp143_, "bitfield") == 0) {
                                        vala_gir_parser_parse_bitfield (self);
                                } else {
-                                       ValaMarkupReader* _tmp137_ = NULL;
-                                       const gchar* _tmp138_ = NULL;
-                                       const gchar* _tmp139_ = NULL;
-                                       _tmp137_ = self->priv->reader;
-                                       _tmp138_ = vala_markup_reader_get_name (_tmp137_);
-                                       _tmp139_ = _tmp138_;
-                                       if (g_strcmp0 (_tmp139_, "function") == 0) {
+                                       ValaMarkupReader* _tmp144_ = NULL;
+                                       const gchar* _tmp145_ = NULL;
+                                       const gchar* _tmp146_ = NULL;
+                                       _tmp144_ = self->priv->reader;
+                                       _tmp145_ = vala_markup_reader_get_name (_tmp144_);
+                                       _tmp146_ = _tmp145_;
+                                       if (g_strcmp0 (_tmp146_, "function") == 0) {
                                                vala_gir_parser_parse_method (self, "function");
                                        } else {
-                                               ValaMarkupReader* _tmp140_ = NULL;
-                                               const gchar* _tmp141_ = NULL;
-                                               const gchar* _tmp142_ = NULL;
-                                               _tmp140_ = self->priv->reader;
-                                               _tmp141_ = vala_markup_reader_get_name (_tmp140_);
-                                               _tmp142_ = _tmp141_;
-                                               if (g_strcmp0 (_tmp142_, "callback") == 0) {
+                                               ValaMarkupReader* _tmp147_ = NULL;
+                                               const gchar* _tmp148_ = NULL;
+                                               const gchar* _tmp149_ = NULL;
+                                               _tmp147_ = self->priv->reader;
+                                               _tmp148_ = vala_markup_reader_get_name (_tmp147_);
+                                               _tmp149_ = _tmp148_;
+                                               if (g_strcmp0 (_tmp149_, "callback") == 0) {
                                                        vala_gir_parser_parse_callback (self);
                                                } else {
-                                                       ValaMarkupReader* _tmp143_ = NULL;
-                                                       const gchar* _tmp144_ = NULL;
-                                                       const gchar* _tmp145_ = NULL;
-                                                       _tmp143_ = self->priv->reader;
-                                                       _tmp144_ = vala_markup_reader_get_name (_tmp143_);
-                                                       _tmp145_ = _tmp144_;
-                                                       if (g_strcmp0 (_tmp145_, "record") == 0) {
-                                                               ValaGirParserMetadata* _tmp146_ = NULL;
-                                                               gboolean _tmp147_ = FALSE;
-                                                               _tmp146_ = self->priv->metadata;
-                                                               _tmp147_ = vala_gir_parser_metadata_has_argument (_tmp146_, VALA_GIR_PARSER_ARGUMENT_TYPE_STRUCT);
-                                                               if (_tmp147_) {
-                                                                       ValaGirParserMetadata* _tmp148_ = NULL;
-                                                                       gboolean _tmp149_ = FALSE;
-                                                                       _tmp148_ = self->priv->metadata;
-                                                                       _tmp149_ = vala_gir_parser_metadata_get_bool (_tmp148_, VALA_GIR_PARSER_ARGUMENT_TYPE_STRUCT, FALSE);
-                                                                       if (_tmp149_) {
+                                                       ValaMarkupReader* _tmp150_ = NULL;
+                                                       const gchar* _tmp151_ = NULL;
+                                                       const gchar* _tmp152_ = NULL;
+                                                       _tmp150_ = self->priv->reader;
+                                                       _tmp151_ = vala_markup_reader_get_name (_tmp150_);
+                                                       _tmp152_ = _tmp151_;
+                                                       if (g_strcmp0 (_tmp152_, "record") == 0) {
+                                                               ValaGirParserMetadata* _tmp153_ = NULL;
+                                                               gboolean _tmp154_ = FALSE;
+                                                               _tmp153_ = self->priv->metadata;
+                                                               _tmp154_ = vala_gir_parser_metadata_has_argument (_tmp153_, VALA_GIR_PARSER_ARGUMENT_TYPE_STRUCT);
+                                                               if (_tmp154_) {
+                                                                       ValaGirParserMetadata* _tmp155_ = NULL;
+                                                                       gboolean _tmp156_ = FALSE;
+                                                                       _tmp155_ = self->priv->metadata;
+                                                                       _tmp156_ = vala_gir_parser_metadata_get_bool (_tmp155_, VALA_GIR_PARSER_ARGUMENT_TYPE_STRUCT, FALSE);
+                                                                       if (_tmp156_) {
                                                                                vala_gir_parser_parse_record (self);
                                                                        } else {
                                                                                vala_gir_parser_parse_boxed (self, "record");
                                                                        }
                                                                } else {
-                                                                       gchar* _tmp150_ = NULL;
-                                                                       gchar* _tmp151_ = NULL;
-                                                                       gboolean _tmp152_ = FALSE;
-                                                                       _tmp150_ = vala_gir_parser_element_get_type_id (self);
-                                                                       _tmp151_ = _tmp150_;
-                                                                       _tmp152_ = _tmp151_ != NULL;
-                                                                       _g_free0 (_tmp151_);
-                                                                       if (_tmp152_) {
+                                                                       gchar* _tmp157_ = NULL;
+                                                                       gchar* _tmp158_ = NULL;
+                                                                       gboolean _tmp159_ = FALSE;
+                                                                       _tmp157_ = vala_gir_parser_element_get_type_id (self);
+                                                                       _tmp158_ = _tmp157_;
+                                                                       _tmp159_ = _tmp158_ != NULL;
+                                                                       _g_free0 (_tmp158_);
+                                                                       if (_tmp159_) {
                                                                                vala_gir_parser_parse_boxed (self, "record");
                                                                        } else {
-                                                                               ValaMarkupReader* _tmp153_ = NULL;
-                                                                               gchar* _tmp154_ = NULL;
-                                                                               gchar* _tmp155_ = NULL;
-                                                                               gboolean _tmp156_ = FALSE;
-                                                                               gboolean _tmp157_ = FALSE;
-                                                                               _tmp153_ = self->priv->reader;
-                                                                               _tmp154_ = vala_markup_reader_get_attribute (_tmp153_, "name");
-                                                                               _tmp155_ = _tmp154_;
-                                                                               _tmp156_ = g_str_has_suffix (_tmp155_, "Private");
-                                                                               _tmp157_ = !_tmp156_;
-                                                                               _g_free0 (_tmp155_);
-                                                                               if (_tmp157_) {
-                                                                                       gboolean _tmp158_ = FALSE;
-                                                                                       ValaMarkupReader* _tmp159_ = NULL;
-                                                                                       gchar* _tmp160_ = NULL;
-                                                                                       gchar* _tmp161_ = NULL;
-                                                                                       gboolean _tmp162_ = FALSE;
-                                                                                       _tmp159_ = self->priv->reader;
-                                                                                       _tmp160_ = vala_markup_reader_get_attribute (_tmp159_, "glib:is-gtype-struct-for");
-                                                                                       _tmp161_ = _tmp160_;
-                                                                                       _tmp162_ = _tmp161_ == NULL;
-                                                                                       _g_free0 (_tmp161_);
-                                                                                       if (_tmp162_) {
-                                                                                               ValaMarkupReader* _tmp163_ = NULL;
-                                                                                               gchar* _tmp164_ = NULL;
-                                                                                               gchar* _tmp165_ = NULL;
-                                                                                               _tmp163_ = self->priv->reader;
-                                                                                               _tmp164_ = vala_markup_reader_get_attribute (_tmp163_, "disguised");
-                                                                                               _tmp165_ = _tmp164_;
-                                                                                               _tmp158_ = g_strcmp0 (_tmp165_, "1") == 0;
-                                                                                               _g_free0 (_tmp165_);
+                                                                               ValaMarkupReader* _tmp160_ = NULL;
+                                                                               gchar* _tmp161_ = NULL;
+                                                                               gchar* _tmp162_ = NULL;
+                                                                               gboolean _tmp163_ = FALSE;
+                                                                               gboolean _tmp164_ = FALSE;
+                                                                               _tmp160_ = self->priv->reader;
+                                                                               _tmp161_ = vala_markup_reader_get_attribute (_tmp160_, "name");
+                                                                               _tmp162_ = _tmp161_;
+                                                                               _tmp163_ = g_str_has_suffix (_tmp162_, "Private");
+                                                                               _tmp164_ = !_tmp163_;
+                                                                               _g_free0 (_tmp162_);
+                                                                               if (_tmp164_) {
+                                                                                       gboolean _tmp165_ = FALSE;
+                                                                                       ValaMarkupReader* _tmp166_ = NULL;
+                                                                                       gchar* _tmp167_ = NULL;
+                                                                                       gchar* _tmp168_ = NULL;
+                                                                                       gboolean _tmp169_ = FALSE;
+                                                                                       _tmp166_ = self->priv->reader;
+                                                                                       _tmp167_ = vala_markup_reader_get_attribute (_tmp166_, "glib:is-gtype-struct-for");
+                                                                                       _tmp168_ = _tmp167_;
+                                                                                       _tmp169_ = _tmp168_ == NULL;
+                                                                                       _g_free0 (_tmp168_);
+                                                                                       if (_tmp169_) {
+                                                                                               ValaMarkupReader* _tmp170_ = NULL;
+                                                                                               gchar* _tmp171_ = NULL;
+                                                                                               gchar* _tmp172_ = NULL;
+                                                                                               _tmp170_ = self->priv->reader;
+                                                                                               _tmp171_ = vala_markup_reader_get_attribute (_tmp170_, "disguised");
+                                                                                               _tmp172_ = _tmp171_;
+                                                                                               _tmp165_ = g_strcmp0 (_tmp172_, "1") == 0;
+                                                                                               _g_free0 (_tmp172_);
                                                                                        } else {
-                                                                                               _tmp158_ = FALSE;
+                                                                                               _tmp165_ = FALSE;
                                                                                        }
-                                                                                       if (_tmp158_) {
+                                                                                       if (_tmp165_) {
                                                                                                vala_gir_parser_parse_boxed (self, "record");
                                                                                        } else {
                                                                                                vala_gir_parser_parse_record (self);
@@ -6783,89 +6830,89 @@ static void vala_gir_parser_parse_namespace (ValaGirParser* self) {
                                                                        }
                                                                }
                                                        } else {
-                                                               ValaMarkupReader* _tmp166_ = NULL;
-                                                               const gchar* _tmp167_ = NULL;
-                                                               const gchar* _tmp168_ = NULL;
-                                                               _tmp166_ = self->priv->reader;
-                                                               _tmp167_ = vala_markup_reader_get_name (_tmp166_);
-                                                               _tmp168_ = _tmp167_;
-                                                               if (g_strcmp0 (_tmp168_, "class") == 0) {
+                                                               ValaMarkupReader* _tmp173_ = NULL;
+                                                               const gchar* _tmp174_ = NULL;
+                                                               const gchar* _tmp175_ = NULL;
+                                                               _tmp173_ = self->priv->reader;
+                                                               _tmp174_ = vala_markup_reader_get_name (_tmp173_);
+                                                               _tmp175_ = _tmp174_;
+                                                               if (g_strcmp0 (_tmp175_, "class") == 0) {
                                                                        vala_gir_parser_parse_class (self);
                                                                } else {
-                                                                       ValaMarkupReader* _tmp169_ = NULL;
-                                                                       const gchar* _tmp170_ = NULL;
-                                                                       const gchar* _tmp171_ = NULL;
-                                                                       _tmp169_ = self->priv->reader;
-                                                                       _tmp170_ = vala_markup_reader_get_name (_tmp169_);
-                                                                       _tmp171_ = _tmp170_;
-                                                                       if (g_strcmp0 (_tmp171_, "interface") == 0) {
+                                                                       ValaMarkupReader* _tmp176_ = NULL;
+                                                                       const gchar* _tmp177_ = NULL;
+                                                                       const gchar* _tmp178_ = NULL;
+                                                                       _tmp176_ = self->priv->reader;
+                                                                       _tmp177_ = vala_markup_reader_get_name (_tmp176_);
+                                                                       _tmp178_ = _tmp177_;
+                                                                       if (g_strcmp0 (_tmp178_, "interface") == 0) {
                                                                                vala_gir_parser_parse_interface (self);
                                                                        } else {
-                                                                               ValaMarkupReader* _tmp172_ = NULL;
-                                                                               const gchar* _tmp173_ = NULL;
-                                                                               const gchar* _tmp174_ = NULL;
-                                                                               _tmp172_ = self->priv->reader;
-                                                                               _tmp173_ = vala_markup_reader_get_name (_tmp172_);
-                                                                               _tmp174_ = _tmp173_;
-                                                                               if (g_strcmp0 (_tmp174_, "glib:boxed") == 0) {
+                                                                               ValaMarkupReader* _tmp179_ = NULL;
+                                                                               const gchar* _tmp180_ = NULL;
+                                                                               const gchar* _tmp181_ = NULL;
+                                                                               _tmp179_ = self->priv->reader;
+                                                                               _tmp180_ = vala_markup_reader_get_name (_tmp179_);
+                                                                               _tmp181_ = _tmp180_;
+                                                                               if (g_strcmp0 (_tmp181_, "glib:boxed") == 0) {
                                                                                        vala_gir_parser_parse_boxed (self, "glib:boxed");
                                                                                } else {
-                                                                                       ValaMarkupReader* _tmp175_ = NULL;
-                                                                                       const gchar* _tmp176_ = NULL;
-                                                                                       const gchar* _tmp177_ = NULL;
-                                                                                       _tmp175_ = self->priv->reader;
-                                                                                       _tmp176_ = vala_markup_reader_get_name (_tmp175_);
-                                                                                       _tmp177_ = _tmp176_;
-                                                                                       if (g_strcmp0 (_tmp177_, "union") == 0) {
-                                                                                               gboolean _tmp178_ = FALSE;
-                                                                                               gchar* _tmp179_ = NULL;
-                                                                                               gchar* _tmp180_ = NULL;
-                                                                                               gboolean _tmp181_ = FALSE;
-                                                                                               _tmp179_ = vala_gir_parser_element_get_type_id (self);
-                                                                                               _tmp180_ = _tmp179_;
-                                                                                               _tmp181_ = _tmp180_ != NULL;
-                                                                                               _g_free0 (_tmp180_);
-                                                                                               if (_tmp181_) {
-                                                                                                       ValaGirParserMetadata* _tmp182_ = NULL;
-                                                                                                       gboolean _tmp183_ = FALSE;
-                                                                                                       _tmp182_ = self->priv->metadata;
-                                                                                                       _tmp183_ = vala_gir_parser_metadata_get_bool (_tmp182_, VALA_GIR_PARSER_ARGUMENT_TYPE_STRUCT, FALSE);
-                                                                                                       _tmp178_ = !_tmp183_;
+                                                                                       ValaMarkupReader* _tmp182_ = NULL;
+                                                                                       const gchar* _tmp183_ = NULL;
+                                                                                       const gchar* _tmp184_ = NULL;
+                                                                                       _tmp182_ = self->priv->reader;
+                                                                                       _tmp183_ = vala_markup_reader_get_name (_tmp182_);
+                                                                                       _tmp184_ = _tmp183_;
+                                                                                       if (g_strcmp0 (_tmp184_, "union") == 0) {
+                                                                                               gboolean _tmp185_ = FALSE;
+                                                                                               gchar* _tmp186_ = NULL;
+                                                                                               gchar* _tmp187_ = NULL;
+                                                                                               gboolean _tmp188_ = FALSE;
+                                                                                               _tmp186_ = vala_gir_parser_element_get_type_id (self);
+                                                                                               _tmp187_ = _tmp186_;
+                                                                                               _tmp188_ = _tmp187_ != NULL;
+                                                                                               _g_free0 (_tmp187_);
+                                                                                               if (_tmp188_) {
+                                                                                                       ValaGirParserMetadata* _tmp189_ = NULL;
+                                                                                                       gboolean _tmp190_ = FALSE;
+                                                                                                       _tmp189_ = self->priv->metadata;
+                                                                                                       _tmp190_ = vala_gir_parser_metadata_get_bool (_tmp189_, VALA_GIR_PARSER_ARGUMENT_TYPE_STRUCT, FALSE);
+                                                                                                       _tmp185_ = !_tmp190_;
                                                                                                } else {
-                                                                                                       _tmp178_ = FALSE;
+                                                                                                       _tmp185_ = FALSE;
                                                                                                }
-                                                                                               if (_tmp178_) {
+                                                                                               if (_tmp185_) {
                                                                                                        vala_gir_parser_parse_boxed (self, "union");
                                                                                                } else {
                                                                                                        vala_gir_parser_parse_union (self);
                                                                                                }
                                                                                        } else {
-                                                                                               ValaMarkupReader* _tmp184_ = NULL;
-                                                                                               const gchar* _tmp185_ = NULL;
-                                                                                               const gchar* _tmp186_ = NULL;
-                                                                                               _tmp184_ = self->priv->reader;
-                                                                                               _tmp185_ = vala_markup_reader_get_name (_tmp184_);
-                                                                                               _tmp186_ = _tmp185_;
-                                                                                               if (g_strcmp0 (_tmp186_, "constant") == 0) {
+                                                                                               ValaMarkupReader* _tmp191_ = NULL;
+                                                                                               const gchar* _tmp192_ = NULL;
+                                                                                               const gchar* _tmp193_ = NULL;
+                                                                                               _tmp191_ = self->priv->reader;
+                                                                                               _tmp192_ = vala_markup_reader_get_name (_tmp191_);
+                                                                                               _tmp193_ = _tmp192_;
+                                                                                               if (g_strcmp0 (_tmp193_, "constant") == 0) {
                                                                                                        vala_gir_parser_parse_constant (self);
                                                                                                } else {
-                                                                                                       ValaSourceReference* _tmp187_ = NULL;
-                                                                                                       ValaSourceReference* _tmp188_ = NULL;
-                                                                                                       ValaMarkupReader* _tmp189_ = NULL;
-                                                                                                       const gchar* _tmp190_ = NULL;
-                                                                                                       const gchar* _tmp191_ = NULL;
-                                                                                                       gchar* _tmp192_ = NULL;
-                                                                                                       gchar* _tmp193_ = NULL;
-                                                                                                       _tmp187_ = vala_gir_parser_get_current_src (self);
-                                                                                                       _tmp188_ = _tmp187_;
-                                                                                                       _tmp189_ = self->priv->reader;
-                                                                                                       _tmp190_ = vala_markup_reader_get_name (_tmp189_);
-                                                                                                       _tmp191_ = _tmp190_;
-                                                                                                       _tmp192_ = g_strdup_printf ("unknown child element `%s' in `namespace'", _tmp191_);
-                                                                                                       _tmp193_ = _tmp192_;
-                                                                                                       vala_report_error (_tmp188_, _tmp193_);
-                                                                                                       _g_free0 (_tmp193_);
-                                                                                                       _vala_source_reference_unref0 (_tmp188_);
+                                                                                                       ValaSourceReference* _tmp194_ = NULL;
+                                                                                                       ValaSourceReference* _tmp195_ = NULL;
+                                                                                                       ValaMarkupReader* _tmp196_ = NULL;
+                                                                                                       const gchar* _tmp197_ = NULL;
+                                                                                                       const gchar* _tmp198_ = NULL;
+                                                                                                       gchar* _tmp199_ = NULL;
+                                                                                                       gchar* _tmp200_ = NULL;
+                                                                                                       _tmp194_ = vala_gir_parser_get_current_src (self);
+                                                                                                       _tmp195_ = _tmp194_;
+                                                                                                       _tmp196_ = self->priv->reader;
+                                                                                                       _tmp197_ = vala_markup_reader_get_name (_tmp196_);
+                                                                                                       _tmp198_ = _tmp197_;
+                                                                                                       _tmp199_ = g_strdup_printf ("unknown child element `%s' in `namespace'", _tmp198_);
+                                                                                                       _tmp200_ = _tmp199_;
+                                                                                                       vala_report_error (_tmp195_, _tmp200_);
+                                                                                                       _g_free0 (_tmp200_);
+                                                                                                       _vala_source_reference_unref0 (_tmp195_);
                                                                                                        vala_gir_parser_skip_element (self);
                                                                                                }
                                                                                        }
@@ -7612,72 +7659,87 @@ static ValaDataType* vala_gir_parser_parse_return_value (ValaGirParser* self, gc
        gchar* transfer = NULL;
        ValaMarkupReader* _tmp0_ = NULL;
        gchar* _tmp1_ = NULL;
-       gchar* allow_none = NULL;
+       gchar* nullable = NULL;
        ValaMarkupReader* _tmp2_ = NULL;
        gchar* _tmp3_ = NULL;
-       ValaComment* _tmp4_ = NULL;
+       gchar* allow_none = NULL;
+       ValaMarkupReader* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
+       ValaComment* _tmp6_ = NULL;
        gboolean transfer_elements = FALSE;
-       const gchar* _tmp5_ = NULL;
+       const gchar* _tmp7_ = NULL;
        ValaDataType* type = NULL;
-       gboolean _tmp6_ = FALSE;
-       gchar* _tmp7_ = NULL;
-       gint _tmp8_ = 0;
-       gboolean _tmp9_ = FALSE;
-       gboolean _tmp10_ = FALSE;
-       ValaDataType* _tmp11_ = NULL;
+       gboolean _tmp8_ = FALSE;
+       gchar* _tmp9_ = NULL;
+       gint _tmp10_ = 0;
+       gboolean _tmp11_ = FALSE;
        gboolean _tmp12_ = FALSE;
-       const gchar* _tmp13_ = NULL;
-       const gchar* _tmp16_ = NULL;
-       ValaDataType* _tmp18_ = NULL;
-       ValaDataType* _tmp19_ = NULL;
+       ValaDataType* _tmp13_ = NULL;
+       gboolean _tmp14_ = FALSE;
+       const gchar* _tmp15_ = NULL;
+       gboolean _tmp18_ = FALSE;
+       const gchar* _tmp19_ = NULL;
+       ValaDataType* _tmp22_ = NULL;
+       ValaDataType* _tmp23_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_gir_parser_start_element (self, "return-value");
        _tmp0_ = self->priv->reader;
        _tmp1_ = vala_markup_reader_get_attribute (_tmp0_, "transfer-ownership");
        transfer = _tmp1_;
        _tmp2_ = self->priv->reader;
-       _tmp3_ = vala_markup_reader_get_attribute (_tmp2_, "allow-none");
-       allow_none = _tmp3_;
+       _tmp3_ = vala_markup_reader_get_attribute (_tmp2_, "nullable");
+       nullable = _tmp3_;
+       _tmp4_ = self->priv->reader;
+       _tmp5_ = vala_markup_reader_get_attribute (_tmp4_, "allow-none");
+       allow_none = _tmp5_;
        vala_gir_parser_next (self);
-       _tmp4_ = vala_gir_parser_parse_doc (self);
+       _tmp6_ = vala_gir_parser_parse_doc (self);
        _vala_comment_unref0 (_vala_comment);
-       _vala_comment = _tmp4_;
-       _tmp5_ = transfer;
-       transfer_elements = g_strcmp0 (_tmp5_, "container") != 0;
-       _tmp6_ = transfer_elements;
-       _tmp11_ = vala_gir_parser_parse_type (self, &_tmp7_, &_tmp8_, _tmp6_, &_tmp9_, &_tmp10_);
+       _vala_comment = _tmp6_;
+       _tmp7_ = transfer;
+       transfer_elements = g_strcmp0 (_tmp7_, "container") != 0;
+       _tmp8_ = transfer_elements;
+       _tmp13_ = vala_gir_parser_parse_type (self, &_tmp9_, &_tmp10_, _tmp8_, &_tmp11_, &_tmp12_);
        _g_free0 (_vala_ctype);
-       _vala_ctype = _tmp7_;
-       _vala_array_length_idx = _tmp8_;
-       _vala_no_array_length = _tmp9_;
-       _vala_array_null_terminated = _tmp10_;
-       type = _tmp11_;
-       _tmp13_ = transfer;
-       if (g_strcmp0 (_tmp13_, "full") == 0) {
-               _tmp12_ = TRUE;
+       _vala_ctype = _tmp9_;
+       _vala_array_length_idx = _tmp10_;
+       _vala_no_array_length = _tmp11_;
+       _vala_array_null_terminated = _tmp12_;
+       type = _tmp13_;
+       _tmp15_ = transfer;
+       if (g_strcmp0 (_tmp15_, "full") == 0) {
+               _tmp14_ = TRUE;
        } else {
-               const gchar* _tmp14_ = NULL;
-               _tmp14_ = transfer;
-               _tmp12_ = g_strcmp0 (_tmp14_, "container") == 0;
-       }
-       if (_tmp12_) {
-               ValaDataType* _tmp15_ = NULL;
-               _tmp15_ = type;
-               vala_data_type_set_value_owned (_tmp15_, TRUE);
+               const gchar* _tmp16_ = NULL;
+               _tmp16_ = transfer;
+               _tmp14_ = g_strcmp0 (_tmp16_, "container") == 0;
        }
-       _tmp16_ = allow_none;
-       if (g_strcmp0 (_tmp16_, "1") == 0) {
+       if (_tmp14_) {
                ValaDataType* _tmp17_ = NULL;
                _tmp17_ = type;
-               vala_data_type_set_nullable (_tmp17_, TRUE);
+               vala_data_type_set_value_owned (_tmp17_, TRUE);
        }
-       _tmp18_ = type;
-       _tmp19_ = vala_gir_parser_element_get_type (self, _tmp18_, TRUE, &_vala_no_array_length, &_vala_array_null_terminated, NULL);
+       _tmp19_ = nullable;
+       if (g_strcmp0 (_tmp19_, "1") == 0) {
+               _tmp18_ = TRUE;
+       } else {
+               const gchar* _tmp20_ = NULL;
+               _tmp20_ = allow_none;
+               _tmp18_ = g_strcmp0 (_tmp20_, "1") == 0;
+       }
+       if (_tmp18_) {
+               ValaDataType* _tmp21_ = NULL;
+               _tmp21_ = type;
+               vala_data_type_set_nullable (_tmp21_, TRUE);
+       }
+       _tmp22_ = type;
+       _tmp23_ = vala_gir_parser_element_get_type (self, _tmp22_, TRUE, &_vala_no_array_length, &_vala_array_null_terminated, NULL);
        _vala_code_node_unref0 (type);
-       type = _tmp19_;
+       type = _tmp23_;
        vala_gir_parser_end_element (self, "return-value");
        result = type;
        _g_free0 (allow_none);
+       _g_free0 (nullable);
        _g_free0 (transfer);
        if (ctype) {
                *ctype = _vala_ctype;
@@ -7710,345 +7772,401 @@ static ValaParameter* vala_gir_parser_parse_parameter (ValaGirParser* self, gint
        ValaComment* _vala_comment = NULL;
        ValaParameter* result = NULL;
        ValaParameter* param = NULL;
-       gchar* name = NULL;
+       gchar* element_type = NULL;
        ValaMarkupReader* _tmp0_ = NULL;
-       gchar* _tmp1_ = NULL;
+       const gchar* _tmp1_ = NULL;
        const gchar* _tmp2_ = NULL;
+       gchar* _tmp3_ = NULL;
+       gboolean _tmp4_ = FALSE;
+       ValaMarkupTokenType _tmp5_ = 0;
+       const gchar* _tmp11_ = NULL;
+       gchar* name = NULL;
+       ValaMarkupReader* _tmp12_ = NULL;
+       gchar* _tmp13_ = NULL;
+       const gchar* _tmp14_ = NULL;
        gchar* direction = NULL;
-       ValaGirParserMetadata* _tmp5_ = NULL;
-       gboolean _tmp6_ = FALSE;
+       ValaGirParserMetadata* _tmp17_ = NULL;
+       gboolean _tmp18_ = FALSE;
        gchar* transfer = NULL;
-       ValaMarkupReader* _tmp17_ = NULL;
-       gchar* _tmp18_ = NULL;
+       ValaMarkupReader* _tmp29_ = NULL;
+       gchar* _tmp30_ = NULL;
+       gchar* nullable = NULL;
+       ValaMarkupReader* _tmp31_ = NULL;
+       gchar* _tmp32_ = NULL;
        gchar* allow_none = NULL;
-       ValaMarkupReader* _tmp19_ = NULL;
-       gchar* _tmp20_ = NULL;
-       gchar* _tmp21_ = NULL;
+       ValaMarkupReader* _tmp33_ = NULL;
+       gchar* _tmp34_ = NULL;
+       gchar* _tmp35_ = NULL;
        gchar* closure = NULL;
-       ValaMarkupReader* _tmp22_ = NULL;
-       gchar* _tmp23_ = NULL;
+       ValaMarkupReader* _tmp36_ = NULL;
+       gchar* _tmp37_ = NULL;
        gchar* destroy = NULL;
-       ValaMarkupReader* _tmp24_ = NULL;
-       gchar* _tmp25_ = NULL;
-       gboolean _tmp26_ = FALSE;
-       const gchar* _tmp27_ = NULL;
-       gboolean _tmp30_ = FALSE;
-       const gchar* _tmp31_ = NULL;
-       ValaGirParserMetadata* _tmp34_ = NULL;
-       gboolean _tmp35_ = FALSE;
-       ValaComment* _tmp38_ = NULL;
-       ValaMarkupReader* _tmp39_ = NULL;
-       const gchar* _tmp40_ = NULL;
+       ValaMarkupReader* _tmp38_ = NULL;
+       gchar* _tmp39_ = NULL;
+       gboolean _tmp40_ = FALSE;
        const gchar* _tmp41_ = NULL;
+       gboolean _tmp44_ = FALSE;
+       const gchar* _tmp45_ = NULL;
+       ValaGirParserMetadata* _tmp48_ = NULL;
+       gboolean _tmp49_ = FALSE;
+       ValaComment* _tmp52_ = NULL;
+       ValaMarkupReader* _tmp53_ = NULL;
+       const gchar* _tmp54_ = NULL;
+       const gchar* _tmp55_ = NULL;
+       const gchar* _tmp114_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        _vala_array_length_idx = -1;
        _vala_closure_idx = -1;
        _vala_destroy_idx = -1;
-       vala_gir_parser_start_element (self, "parameter");
        _tmp0_ = self->priv->reader;
-       _tmp1_ = vala_markup_reader_get_attribute (_tmp0_, "name");
-       name = _tmp1_;
-       _tmp2_ = name;
-       if (_tmp2_ == NULL) {
-               const gchar* _tmp3_ = NULL;
-               gchar* _tmp4_ = NULL;
-               _tmp3_ = default_name;
-               _tmp4_ = g_strdup (_tmp3_);
+       _tmp1_ = vala_markup_reader_get_name (_tmp0_);
+       _tmp2_ = _tmp1_;
+       _tmp3_ = g_strdup (_tmp2_);
+       element_type = _tmp3_;
+       _tmp5_ = self->priv->current_token;
+       if (_tmp5_ != VALA_MARKUP_TOKEN_TYPE_START_ELEMENT) {
+               _tmp4_ = TRUE;
+       } else {
+               gboolean _tmp6_ = FALSE;
+               const gchar* _tmp7_ = NULL;
+               _tmp7_ = element_type;
+               if (g_strcmp0 (_tmp7_, "parameter") != 0) {
+                       const gchar* _tmp8_ = NULL;
+                       _tmp8_ = element_type;
+                       _tmp6_ = g_strcmp0 (_tmp8_, "instance-parameter") != 0;
+               } else {
+                       _tmp6_ = FALSE;
+               }
+               _tmp4_ = _tmp6_;
+       }
+       if (_tmp4_) {
+               ValaSourceReference* _tmp9_ = NULL;
+               ValaSourceReference* _tmp10_ = NULL;
+               _tmp9_ = vala_gir_parser_get_current_src (self);
+               _tmp10_ = _tmp9_;
+               vala_report_error (_tmp10_, "expected start element of `parameter' or `instance-parameter'");
+               _vala_source_reference_unref0 (_tmp10_);
+       }
+       _tmp11_ = element_type;
+       vala_gir_parser_start_element (self, _tmp11_);
+       _tmp12_ = self->priv->reader;
+       _tmp13_ = vala_markup_reader_get_attribute (_tmp12_, "name");
+       name = _tmp13_;
+       _tmp14_ = name;
+       if (_tmp14_ == NULL) {
+               const gchar* _tmp15_ = NULL;
+               gchar* _tmp16_ = NULL;
+               _tmp15_ = default_name;
+               _tmp16_ = g_strdup (_tmp15_);
                _g_free0 (name);
-               name = _tmp4_;
+               name = _tmp16_;
        }
        direction = NULL;
-       _tmp5_ = self->priv->metadata;
-       _tmp6_ = vala_gir_parser_metadata_has_argument (_tmp5_, VALA_GIR_PARSER_ARGUMENT_TYPE_OUT);
-       if (_tmp6_) {
-               ValaGirParserMetadata* _tmp7_ = NULL;
-               gboolean _tmp8_ = FALSE;
-               _tmp7_ = self->priv->metadata;
-               _tmp8_ = vala_gir_parser_metadata_get_bool (_tmp7_, VALA_GIR_PARSER_ARGUMENT_TYPE_OUT, FALSE);
-               if (_tmp8_) {
-                       gchar* _tmp9_ = NULL;
-                       _tmp9_ = g_strdup ("out");
+       _tmp17_ = self->priv->metadata;
+       _tmp18_ = vala_gir_parser_metadata_has_argument (_tmp17_, VALA_GIR_PARSER_ARGUMENT_TYPE_OUT);
+       if (_tmp18_) {
+               ValaGirParserMetadata* _tmp19_ = NULL;
+               gboolean _tmp20_ = FALSE;
+               _tmp19_ = self->priv->metadata;
+               _tmp20_ = vala_gir_parser_metadata_get_bool (_tmp19_, VALA_GIR_PARSER_ARGUMENT_TYPE_OUT, FALSE);
+               if (_tmp20_) {
+                       gchar* _tmp21_ = NULL;
+                       _tmp21_ = g_strdup ("out");
                        _g_free0 (direction);
-                       direction = _tmp9_;
+                       direction = _tmp21_;
                }
        } else {
-               ValaGirParserMetadata* _tmp10_ = NULL;
-               gboolean _tmp11_ = FALSE;
-               _tmp10_ = self->priv->metadata;
-               _tmp11_ = vala_gir_parser_metadata_has_argument (_tmp10_, VALA_GIR_PARSER_ARGUMENT_TYPE_REF);
-               if (_tmp11_) {
-                       ValaGirParserMetadata* _tmp12_ = NULL;
-                       gboolean _tmp13_ = FALSE;
-                       _tmp12_ = self->priv->metadata;
-                       _tmp13_ = vala_gir_parser_metadata_get_bool (_tmp12_, VALA_GIR_PARSER_ARGUMENT_TYPE_REF, FALSE);
-                       if (_tmp13_) {
-                               gchar* _tmp14_ = NULL;
-                               _tmp14_ = g_strdup ("inout");
+               ValaGirParserMetadata* _tmp22_ = NULL;
+               gboolean _tmp23_ = FALSE;
+               _tmp22_ = self->priv->metadata;
+               _tmp23_ = vala_gir_parser_metadata_has_argument (_tmp22_, VALA_GIR_PARSER_ARGUMENT_TYPE_REF);
+               if (_tmp23_) {
+                       ValaGirParserMetadata* _tmp24_ = NULL;
+                       gboolean _tmp25_ = FALSE;
+                       _tmp24_ = self->priv->metadata;
+                       _tmp25_ = vala_gir_parser_metadata_get_bool (_tmp24_, VALA_GIR_PARSER_ARGUMENT_TYPE_REF, FALSE);
+                       if (_tmp25_) {
+                               gchar* _tmp26_ = NULL;
+                               _tmp26_ = g_strdup ("inout");
                                _g_free0 (direction);
-                               direction = _tmp14_;
+                               direction = _tmp26_;
                        }
                } else {
-                       ValaMarkupReader* _tmp15_ = NULL;
-                       gchar* _tmp16_ = NULL;
-                       _tmp15_ = self->priv->reader;
-                       _tmp16_ = vala_markup_reader_get_attribute (_tmp15_, "direction");
+                       ValaMarkupReader* _tmp27_ = NULL;
+                       gchar* _tmp28_ = NULL;
+                       _tmp27_ = self->priv->reader;
+                       _tmp28_ = vala_markup_reader_get_attribute (_tmp27_, "direction");
                        _g_free0 (direction);
-                       direction = _tmp16_;
+                       direction = _tmp28_;
                }
        }
-       _tmp17_ = self->priv->reader;
-       _tmp18_ = vala_markup_reader_get_attribute (_tmp17_, "transfer-ownership");
-       transfer = _tmp18_;
-       _tmp19_ = self->priv->reader;
-       _tmp20_ = vala_markup_reader_get_attribute (_tmp19_, "allow-none");
-       allow_none = _tmp20_;
-       _tmp21_ = vala_gir_parser_element_get_string (self, "scope", VALA_GIR_PARSER_ARGUMENT_TYPE_SCOPE);
+       _tmp29_ = self->priv->reader;
+       _tmp30_ = vala_markup_reader_get_attribute (_tmp29_, "transfer-ownership");
+       transfer = _tmp30_;
+       _tmp31_ = self->priv->reader;
+       _tmp32_ = vala_markup_reader_get_attribute (_tmp31_, "nullable");
+       nullable = _tmp32_;
+       _tmp33_ = self->priv->reader;
+       _tmp34_ = vala_markup_reader_get_attribute (_tmp33_, "allow-none");
+       allow_none = _tmp34_;
+       _tmp35_ = vala_gir_parser_element_get_string (self, "scope", VALA_GIR_PARSER_ARGUMENT_TYPE_SCOPE);
        _g_free0 (_vala_scope);
-       _vala_scope = _tmp21_;
-       _tmp22_ = self->priv->reader;
-       _tmp23_ = vala_markup_reader_get_attribute (_tmp22_, "closure");
-       closure = _tmp23_;
-       _tmp24_ = self->priv->reader;
-       _tmp25_ = vala_markup_reader_get_attribute (_tmp24_, "destroy");
-       destroy = _tmp25_;
-       _tmp27_ = closure;
-       if (_tmp27_ != NULL) {
-               _tmp26_ = (&_vala_closure_idx) != NULL;
+       _vala_scope = _tmp35_;
+       _tmp36_ = self->priv->reader;
+       _tmp37_ = vala_markup_reader_get_attribute (_tmp36_, "closure");
+       closure = _tmp37_;
+       _tmp38_ = self->priv->reader;
+       _tmp39_ = vala_markup_reader_get_attribute (_tmp38_, "destroy");
+       destroy = _tmp39_;
+       _tmp41_ = closure;
+       if (_tmp41_ != NULL) {
+               _tmp40_ = (&_vala_closure_idx) != NULL;
        } else {
-               _tmp26_ = FALSE;
+               _tmp40_ = FALSE;
        }
-       if (_tmp26_) {
-               const gchar* _tmp28_ = NULL;
-               gint _tmp29_ = 0;
-               _tmp28_ = closure;
-               _tmp29_ = atoi (_tmp28_);
-               _vala_closure_idx = _tmp29_;
+       if (_tmp40_) {
+               const gchar* _tmp42_ = NULL;
+               gint _tmp43_ = 0;
+               _tmp42_ = closure;
+               _tmp43_ = atoi (_tmp42_);
+               _vala_closure_idx = _tmp43_;
        }
-       _tmp31_ = destroy;
-       if (_tmp31_ != NULL) {
-               _tmp30_ = (&_vala_destroy_idx) != NULL;
+       _tmp45_ = destroy;
+       if (_tmp45_ != NULL) {
+               _tmp44_ = (&_vala_destroy_idx) != NULL;
        } else {
-               _tmp30_ = FALSE;
+               _tmp44_ = FALSE;
        }
-       if (_tmp30_) {
-               const gchar* _tmp32_ = NULL;
-               gint _tmp33_ = 0;
-               _tmp32_ = destroy;
-               _tmp33_ = atoi (_tmp32_);
-               _vala_destroy_idx = _tmp33_;
-       }
-       _tmp34_ = self->priv->metadata;
-       _tmp35_ = vala_gir_parser_metadata_has_argument (_tmp34_, VALA_GIR_PARSER_ARGUMENT_TYPE_CLOSURE);
-       if (_tmp35_) {
-               ValaGirParserMetadata* _tmp36_ = NULL;
-               gint _tmp37_ = 0;
-               _tmp36_ = self->priv->metadata;
-               _tmp37_ = vala_gir_parser_metadata_get_integer (_tmp36_, VALA_GIR_PARSER_ARGUMENT_TYPE_CLOSURE);
-               _vala_closure_idx = _tmp37_;
+       if (_tmp44_) {
+               const gchar* _tmp46_ = NULL;
+               gint _tmp47_ = 0;
+               _tmp46_ = destroy;
+               _tmp47_ = atoi (_tmp46_);
+               _vala_destroy_idx = _tmp47_;
+       }
+       _tmp48_ = self->priv->metadata;
+       _tmp49_ = vala_gir_parser_metadata_has_argument (_tmp48_, VALA_GIR_PARSER_ARGUMENT_TYPE_CLOSURE);
+       if (_tmp49_) {
+               ValaGirParserMetadata* _tmp50_ = NULL;
+               gint _tmp51_ = 0;
+               _tmp50_ = self->priv->metadata;
+               _tmp51_ = vala_gir_parser_metadata_get_integer (_tmp50_, VALA_GIR_PARSER_ARGUMENT_TYPE_CLOSURE);
+               _vala_closure_idx = _tmp51_;
        }
        vala_gir_parser_next (self);
-       _tmp38_ = vala_gir_parser_parse_doc (self);
+       _tmp52_ = vala_gir_parser_parse_doc (self);
        _vala_comment_unref0 (_vala_comment);
-       _vala_comment = _tmp38_;
-       _tmp39_ = self->priv->reader;
-       _tmp40_ = vala_markup_reader_get_name (_tmp39_);
-       _tmp41_ = _tmp40_;
-       if (g_strcmp0 (_tmp41_, "varargs") == 0) {
-               ValaSourceReference* _tmp42_ = NULL;
-               ValaSourceReference* _tmp43_ = NULL;
-               ValaParameter* _tmp44_ = NULL;
+       _vala_comment = _tmp52_;
+       _tmp53_ = self->priv->reader;
+       _tmp54_ = vala_markup_reader_get_name (_tmp53_);
+       _tmp55_ = _tmp54_;
+       if (g_strcmp0 (_tmp55_, "varargs") == 0) {
+               ValaSourceReference* _tmp56_ = NULL;
+               ValaSourceReference* _tmp57_ = NULL;
+               ValaParameter* _tmp58_ = NULL;
                vala_gir_parser_start_element (self, "varargs");
                vala_gir_parser_next (self);
-               _tmp42_ = vala_gir_parser_get_current_src (self);
-               _tmp43_ = _tmp42_;
-               _tmp44_ = vala_parameter_new_with_ellipsis (_tmp43_);
+               _tmp56_ = vala_gir_parser_get_current_src (self);
+               _tmp57_ = _tmp56_;
+               _tmp58_ = vala_parameter_new_with_ellipsis (_tmp57_);
                _vala_code_node_unref0 (param);
-               param = _tmp44_;
-               _vala_source_reference_unref0 (_tmp43_);
+               param = _tmp58_;
+               _vala_source_reference_unref0 (_tmp57_);
                vala_gir_parser_end_element (self, "varargs");
        } else {
                gchar* ctype = NULL;
                gboolean no_array_length = FALSE;
                gboolean array_null_terminated = FALSE;
                ValaDataType* type = NULL;
-               const gchar* _tmp45_ = NULL;
-               gchar* _tmp46_ = NULL;
-               gint _tmp47_ = 0;
-               gboolean _tmp48_ = FALSE;
-               gboolean _tmp49_ = FALSE;
-               ValaDataType* _tmp50_ = NULL;
-               gboolean _tmp51_ = FALSE;
-               gboolean _tmp52_ = FALSE;
-               const gchar* _tmp53_ = NULL;
-               gboolean _tmp57_ = FALSE;
-               const gchar* _tmp58_ = NULL;
-               gboolean changed = FALSE;
-               gboolean _tmp61_ = FALSE;
-               const gchar* _tmp62_ = NULL;
+               const gchar* _tmp59_ = NULL;
+               gchar* _tmp60_ = NULL;
+               gint _tmp61_ = 0;
+               gboolean _tmp62_ = FALSE;
+               gboolean _tmp63_ = FALSE;
                ValaDataType* _tmp64_ = NULL;
                gboolean _tmp65_ = FALSE;
-               ValaDataType* _tmp66_ = NULL;
-               gboolean _tmp67_ = FALSE;
-               const gchar* _tmp68_ = NULL;
-               ValaDataType* _tmp69_ = NULL;
-               ValaSourceReference* _tmp70_ = NULL;
-               ValaSourceReference* _tmp71_ = NULL;
-               ValaParameter* _tmp72_ = NULL;
-               const gchar* _tmp73_ = NULL;
-               const gchar* _tmp76_ = NULL;
+               gboolean _tmp66_ = FALSE;
+               const gchar* _tmp67_ = NULL;
+               gboolean _tmp71_ = FALSE;
+               const gchar* _tmp72_ = NULL;
+               gboolean changed = FALSE;
+               gboolean _tmp77_ = FALSE;
+               const gchar* _tmp78_ = NULL;
                ValaDataType* _tmp80_ = NULL;
-               ValaParameter* _tmp90_ = NULL;
-               ValaGirParserMetadata* _tmp91_ = NULL;
-               ValaExpression* _tmp92_ = NULL;
-               ValaExpression* _tmp93_ = NULL;
-               ValaParameter* _tmp94_ = NULL;
-               ValaExpression* _tmp95_ = NULL;
-               ValaExpression* _tmp96_ = NULL;
-               _tmp45_ = transfer;
-               _tmp50_ = vala_gir_parser_parse_type (self, &_tmp46_, &_tmp47_, g_strcmp0 (_tmp45_, "container") != 0, &_tmp48_, &_tmp49_);
+               gboolean _tmp81_ = FALSE;
+               ValaDataType* _tmp82_ = NULL;
+               gboolean _tmp83_ = FALSE;
+               const gchar* _tmp84_ = NULL;
+               ValaDataType* _tmp85_ = NULL;
+               ValaSourceReference* _tmp86_ = NULL;
+               ValaSourceReference* _tmp87_ = NULL;
+               ValaParameter* _tmp88_ = NULL;
+               const gchar* _tmp89_ = NULL;
+               const gchar* _tmp92_ = NULL;
+               ValaDataType* _tmp96_ = NULL;
+               ValaParameter* _tmp106_ = NULL;
+               ValaGirParserMetadata* _tmp107_ = NULL;
+               ValaExpression* _tmp108_ = NULL;
+               ValaExpression* _tmp109_ = NULL;
+               ValaParameter* _tmp110_ = NULL;
+               ValaExpression* _tmp111_ = NULL;
+               ValaExpression* _tmp112_ = NULL;
+               _tmp59_ = transfer;
+               _tmp64_ = vala_gir_parser_parse_type (self, &_tmp60_, &_tmp61_, g_strcmp0 (_tmp59_, "container") != 0, &_tmp62_, &_tmp63_);
                _g_free0 (ctype);
-               ctype = _tmp46_;
-               _vala_array_length_idx = _tmp47_;
-               no_array_length = _tmp48_;
-               array_null_terminated = _tmp49_;
-               type = _tmp50_;
-               _tmp53_ = transfer;
-               if (g_strcmp0 (_tmp53_, "full") == 0) {
-                       _tmp52_ = TRUE;
+               ctype = _tmp60_;
+               _vala_array_length_idx = _tmp61_;
+               no_array_length = _tmp62_;
+               array_null_terminated = _tmp63_;
+               type = _tmp64_;
+               _tmp67_ = transfer;
+               if (g_strcmp0 (_tmp67_, "full") == 0) {
+                       _tmp66_ = TRUE;
                } else {
-                       const gchar* _tmp54_ = NULL;
-                       _tmp54_ = transfer;
-                       _tmp52_ = g_strcmp0 (_tmp54_, "container") == 0;
+                       const gchar* _tmp68_ = NULL;
+                       _tmp68_ = transfer;
+                       _tmp66_ = g_strcmp0 (_tmp68_, "container") == 0;
                }
-               if (_tmp52_) {
-                       _tmp51_ = TRUE;
+               if (_tmp66_) {
+                       _tmp65_ = TRUE;
                } else {
-                       const gchar* _tmp55_ = NULL;
-                       _tmp55_ = destroy;
-                       _tmp51_ = _tmp55_ != NULL;
+                       const gchar* _tmp69_ = NULL;
+                       _tmp69_ = destroy;
+                       _tmp65_ = _tmp69_ != NULL;
                }
-               if (_tmp51_) {
-                       ValaDataType* _tmp56_ = NULL;
-                       _tmp56_ = type;
-                       vala_data_type_set_value_owned (_tmp56_, TRUE);
+               if (_tmp65_) {
+                       ValaDataType* _tmp70_ = NULL;
+                       _tmp70_ = type;
+                       vala_data_type_set_value_owned (_tmp70_, TRUE);
                }
-               _tmp58_ = allow_none;
-               if (g_strcmp0 (_tmp58_, "1") == 0) {
-                       const gchar* _tmp59_ = NULL;
-                       _tmp59_ = direction;
-                       _tmp57_ = g_strcmp0 (_tmp59_, "out") != 0;
+               _tmp72_ = nullable;
+               if (g_strcmp0 (_tmp72_, "1") == 0) {
+                       _tmp71_ = TRUE;
                } else {
-                       _tmp57_ = FALSE;
+                       gboolean _tmp73_ = FALSE;
+                       const gchar* _tmp74_ = NULL;
+                       _tmp74_ = allow_none;
+                       if (g_strcmp0 (_tmp74_, "1") == 0) {
+                               const gchar* _tmp75_ = NULL;
+                               _tmp75_ = direction;
+                               _tmp73_ = g_strcmp0 (_tmp75_, "out") != 0;
+                       } else {
+                               _tmp73_ = FALSE;
+                       }
+                       _tmp71_ = _tmp73_;
                }
-               if (_tmp57_) {
-                       ValaDataType* _tmp60_ = NULL;
-                       _tmp60_ = type;
-                       vala_data_type_set_nullable (_tmp60_, TRUE);
+               if (_tmp71_) {
+                       ValaDataType* _tmp76_ = NULL;
+                       _tmp76_ = type;
+                       vala_data_type_set_nullable (_tmp76_, TRUE);
                }
-               _tmp62_ = direction;
-               if (g_strcmp0 (_tmp62_, "out") == 0) {
-                       _tmp61_ = TRUE;
+               _tmp78_ = direction;
+               if (g_strcmp0 (_tmp78_, "out") == 0) {
+                       _tmp77_ = TRUE;
                } else {
-                       const gchar* _tmp63_ = NULL;
-                       _tmp63_ = direction;
-                       _tmp61_ = g_strcmp0 (_tmp63_, "inout") == 0;
+                       const gchar* _tmp79_ = NULL;
+                       _tmp79_ = direction;
+                       _tmp77_ = g_strcmp0 (_tmp79_, "inout") == 0;
                }
-               _tmp64_ = type;
-               _tmp66_ = vala_gir_parser_element_get_type (self, _tmp64_, _tmp61_, &no_array_length, &array_null_terminated, &_tmp65_);
-               changed = _tmp65_;
+               _tmp80_ = type;
+               _tmp82_ = vala_gir_parser_element_get_type (self, _tmp80_, _tmp77_, &no_array_length, &array_null_terminated, &_tmp81_);
+               changed = _tmp81_;
                _vala_code_node_unref0 (type);
-               type = _tmp66_;
-               _tmp67_ = changed;
-               if (!_tmp67_) {
+               type = _tmp82_;
+               _tmp83_ = changed;
+               if (!_tmp83_) {
                        _g_free0 (ctype);
                        ctype = NULL;
                }
-               _tmp68_ = name;
-               _tmp69_ = type;
-               _tmp70_ = vala_gir_parser_get_current_src (self);
-               _tmp71_ = _tmp70_;
-               _tmp72_ = vala_parameter_new (_tmp68_, _tmp69_, _tmp71_);
+               _tmp84_ = name;
+               _tmp85_ = type;
+               _tmp86_ = vala_gir_parser_get_current_src (self);
+               _tmp87_ = _tmp86_;
+               _tmp88_ = vala_parameter_new (_tmp84_, _tmp85_, _tmp87_);
                _vala_code_node_unref0 (param);
-               param = _tmp72_;
-               _vala_source_reference_unref0 (_tmp71_);
-               _tmp73_ = ctype;
-               if (_tmp73_ != NULL) {
-                       ValaParameter* _tmp74_ = NULL;
-                       const gchar* _tmp75_ = NULL;
-                       _tmp74_ = param;
-                       _tmp75_ = ctype;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp74_, "CCode", "type", _tmp75_, NULL);
+               param = _tmp88_;
+               _vala_source_reference_unref0 (_tmp87_);
+               _tmp89_ = ctype;
+               if (_tmp89_ != NULL) {
+                       ValaParameter* _tmp90_ = NULL;
+                       const gchar* _tmp91_ = NULL;
+                       _tmp90_ = param;
+                       _tmp91_ = ctype;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp90_, "CCode", "type", _tmp91_, NULL);
                }
-               _tmp76_ = direction;
-               if (g_strcmp0 (_tmp76_, "out") == 0) {
-                       ValaParameter* _tmp77_ = NULL;
-                       _tmp77_ = param;
-                       vala_parameter_set_direction (_tmp77_, VALA_PARAMETER_DIRECTION_OUT);
+               _tmp92_ = direction;
+               if (g_strcmp0 (_tmp92_, "out") == 0) {
+                       ValaParameter* _tmp93_ = NULL;
+                       _tmp93_ = param;
+                       vala_parameter_set_direction (_tmp93_, VALA_PARAMETER_DIRECTION_OUT);
                } else {
-                       const gchar* _tmp78_ = NULL;
-                       _tmp78_ = direction;
-                       if (g_strcmp0 (_tmp78_, "inout") == 0) {
-                               ValaParameter* _tmp79_ = NULL;
-                               _tmp79_ = param;
-                               vala_parameter_set_direction (_tmp79_, VALA_PARAMETER_DIRECTION_REF);
+                       const gchar* _tmp94_ = NULL;
+                       _tmp94_ = direction;
+                       if (g_strcmp0 (_tmp94_, "inout") == 0) {
+                               ValaParameter* _tmp95_ = NULL;
+                               _tmp95_ = param;
+                               vala_parameter_set_direction (_tmp95_, VALA_PARAMETER_DIRECTION_REF);
                        }
                }
-               _tmp80_ = type;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp80_, VALA_TYPE_ARRAY_TYPE)) {
-                       ValaGirParserMetadata* _tmp81_ = NULL;
-                       gboolean _tmp82_ = FALSE;
-                       _tmp81_ = self->priv->metadata;
-                       _tmp82_ = vala_gir_parser_metadata_has_argument (_tmp81_, VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_LENGTH_IDX);
-                       if (_tmp82_) {
-                               ValaGirParserMetadata* _tmp83_ = NULL;
-                               gint _tmp84_ = 0;
-                               _tmp83_ = self->priv->metadata;
-                               _tmp84_ = vala_gir_parser_metadata_get_integer (_tmp83_, VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_LENGTH_IDX);
-                               _vala_array_length_idx = _tmp84_;
+               _tmp96_ = type;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp96_, VALA_TYPE_ARRAY_TYPE)) {
+                       ValaGirParserMetadata* _tmp97_ = NULL;
+                       gboolean _tmp98_ = FALSE;
+                       _tmp97_ = self->priv->metadata;
+                       _tmp98_ = vala_gir_parser_metadata_has_argument (_tmp97_, VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_LENGTH_IDX);
+                       if (_tmp98_) {
+                               ValaGirParserMetadata* _tmp99_ = NULL;
+                               gint _tmp100_ = 0;
+                               _tmp99_ = self->priv->metadata;
+                               _tmp100_ = vala_gir_parser_metadata_get_integer (_tmp99_, VALA_GIR_PARSER_ARGUMENT_TYPE_ARRAY_LENGTH_IDX);
+                               _vala_array_length_idx = _tmp100_;
                        } else {
-                               gboolean _tmp85_ = FALSE;
-                               gboolean _tmp87_ = FALSE;
-                               _tmp85_ = no_array_length;
-                               if (_tmp85_) {
-                                       ValaParameter* _tmp86_ = NULL;
-                                       _tmp86_ = param;
-                                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp86_, "CCode", "array_length", FALSE, NULL);
+                               gboolean _tmp101_ = FALSE;
+                               gboolean _tmp103_ = FALSE;
+                               _tmp101_ = no_array_length;
+                               if (_tmp101_) {
+                                       ValaParameter* _tmp102_ = NULL;
+                                       _tmp102_ = param;
+                                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp102_, "CCode", "array_length", FALSE, NULL);
                                }
-                               _tmp87_ = array_null_terminated;
-                               if (_tmp87_) {
-                                       ValaParameter* _tmp88_ = NULL;
-                                       gboolean _tmp89_ = FALSE;
-                                       _tmp88_ = param;
-                                       _tmp89_ = array_null_terminated;
-                                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp88_, "CCode", "array_null_terminated", _tmp89_, NULL);
+                               _tmp103_ = array_null_terminated;
+                               if (_tmp103_) {
+                                       ValaParameter* _tmp104_ = NULL;
+                                       gboolean _tmp105_ = FALSE;
+                                       _tmp104_ = param;
+                                       _tmp105_ = array_null_terminated;
+                                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp104_, "CCode", "array_null_terminated", _tmp105_, NULL);
                                }
                        }
                }
-               _tmp90_ = param;
-               _tmp91_ = self->priv->metadata;
-               _tmp92_ = vala_gir_parser_metadata_get_expression (_tmp91_, VALA_GIR_PARSER_ARGUMENT_TYPE_DEFAULT);
-               _tmp93_ = _tmp92_;
-               vala_variable_set_initializer ((ValaVariable*) _tmp90_, _tmp93_);
-               _vala_code_node_unref0 (_tmp93_);
-               _tmp94_ = param;
-               _tmp95_ = vala_variable_get_initializer ((ValaVariable*) _tmp94_);
-               _tmp96_ = _tmp95_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp96_, VALA_TYPE_TUPLE)) {
-                       ValaParameter* _tmp97_ = NULL;
-                       _tmp97_ = param;
-                       vala_variable_set_initializer ((ValaVariable*) _tmp97_, NULL);
+               _tmp106_ = param;
+               _tmp107_ = self->priv->metadata;
+               _tmp108_ = vala_gir_parser_metadata_get_expression (_tmp107_, VALA_GIR_PARSER_ARGUMENT_TYPE_DEFAULT);
+               _tmp109_ = _tmp108_;
+               vala_variable_set_initializer ((ValaVariable*) _tmp106_, _tmp109_);
+               _vala_code_node_unref0 (_tmp109_);
+               _tmp110_ = param;
+               _tmp111_ = vala_variable_get_initializer ((ValaVariable*) _tmp110_);
+               _tmp112_ = _tmp111_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp112_, VALA_TYPE_TUPLE)) {
+                       ValaParameter* _tmp113_ = NULL;
+                       _tmp113_ = param;
+                       vala_variable_set_initializer ((ValaVariable*) _tmp113_, NULL);
                }
                _vala_code_node_unref0 (type);
                _g_free0 (ctype);
        }
-       vala_gir_parser_end_element (self, "parameter");
+       _tmp114_ = element_type;
+       vala_gir_parser_end_element (self, _tmp114_);
        result = param;
        _g_free0 (destroy);
        _g_free0 (closure);
        _g_free0 (allow_none);
+       _g_free0 (nullable);
        _g_free0 (transfer);
        _g_free0 (direction);
        _g_free0 (name);
+       _g_free0 (element_type);
        if (array_length_idx) {
                *array_length_idx = _vala_array_length_idx;
        }
@@ -8085,18 +8203,18 @@ static ValaDataType* vala_gir_parser_parse_type (ValaGirParser* self, gchar** ct
        ValaMarkupReader* _tmp2_ = NULL;
        const gchar* _tmp3_ = NULL;
        const gchar* _tmp4_ = NULL;
-       ValaMarkupReader* _tmp41_ = NULL;
-       gchar* _tmp42_ = NULL;
-       gboolean _tmp43_ = FALSE;
-       const gchar* _tmp44_ = NULL;
+       ValaMarkupReader* _tmp42_ = NULL;
+       gchar* _tmp43_ = NULL;
+       gboolean _tmp44_ = FALSE;
+       const gchar* _tmp45_ = NULL;
        ValaDataType* type = NULL;
-       const gchar* _tmp47_ = NULL;
        const gchar* _tmp48_ = NULL;
-       gboolean _tmp49_ = FALSE;
+       const gchar* _tmp49_ = NULL;
        gboolean _tmp50_ = FALSE;
-       ValaDataType* _tmp51_ = NULL;
-       const gchar* _tmp61_ = NULL;
-       gboolean _tmp62_ = FALSE;
+       gboolean _tmp51_ = FALSE;
+       ValaDataType* _tmp52_ = NULL;
+       const gchar* _tmp62_ = NULL;
+       gboolean _tmp63_ = FALSE;
        g_return_val_if_fail (self != NULL, NULL);
        is_array = FALSE;
        _tmp0_ = self->priv->reader;
@@ -8139,8 +8257,9 @@ static ValaDataType* vala_gir_parser_parse_type (ValaGirParser* self, gchar** ct
                        ValaDataType* element_type = NULL;
                        ValaDataType* _tmp31_ = NULL;
                        ValaDataType* _tmp32_ = NULL;
-                       ValaSourceReference* _tmp33_ = NULL;
-                       ValaArrayType* _tmp34_ = NULL;
+                       ValaDataType* _tmp33_ = NULL;
+                       ValaSourceReference* _tmp34_ = NULL;
+                       ValaArrayType* _tmp35_ = NULL;
                        _tmp7_ = self->priv->reader;
                        _tmp8_ = vala_markup_reader_get_attribute (_tmp7_, "length");
                        _tmp9_ = _tmp8_;
@@ -8197,11 +8316,13 @@ static ValaDataType* vala_gir_parser_parse_type (ValaGirParser* self, gchar** ct
                        vala_gir_parser_next (self);
                        _tmp31_ = vala_gir_parser_parse_type (self, NULL, NULL, TRUE, NULL, NULL);
                        element_type = _tmp31_;
-                       vala_gir_parser_end_element (self, "array");
                        _tmp32_ = element_type;
-                       _tmp33_ = src;
-                       _tmp34_ = vala_array_type_new (_tmp32_, 1, _tmp33_);
-                       result = (ValaDataType*) _tmp34_;
+                       vala_data_type_set_value_owned (_tmp32_, TRUE);
+                       vala_gir_parser_end_element (self, "array");
+                       _tmp33_ = element_type;
+                       _tmp34_ = src;
+                       _tmp35_ = vala_array_type_new (_tmp33_, 1, _tmp34_);
+                       result = (ValaDataType*) _tmp35_;
                        _vala_code_node_unref0 (element_type);
                        _vala_source_reference_unref0 (src);
                        _g_free0 (type_name);
@@ -8223,21 +8344,21 @@ static ValaDataType* vala_gir_parser_parse_type (ValaGirParser* self, gchar** ct
                }
                _vala_source_reference_unref0 (src);
        } else {
-               ValaMarkupReader* _tmp35_ = NULL;
-               const gchar* _tmp36_ = NULL;
+               ValaMarkupReader* _tmp36_ = NULL;
                const gchar* _tmp37_ = NULL;
-               _tmp35_ = self->priv->reader;
-               _tmp36_ = vala_markup_reader_get_name (_tmp35_);
-               _tmp37_ = _tmp36_;
-               if (g_strcmp0 (_tmp37_, "callback") == 0) {
-                       ValaGirParserNode* _tmp38_ = NULL;
-                       ValaSymbol* _tmp39_ = NULL;
-                       ValaDelegateType* _tmp40_ = NULL;
+               const gchar* _tmp38_ = NULL;
+               _tmp36_ = self->priv->reader;
+               _tmp37_ = vala_markup_reader_get_name (_tmp36_);
+               _tmp38_ = _tmp37_;
+               if (g_strcmp0 (_tmp38_, "callback") == 0) {
+                       ValaGirParserNode* _tmp39_ = NULL;
+                       ValaSymbol* _tmp40_ = NULL;
+                       ValaDelegateType* _tmp41_ = NULL;
                        vala_gir_parser_parse_callback (self);
-                       _tmp38_ = self->priv->old_current;
-                       _tmp39_ = _tmp38_->symbol;
-                       _tmp40_ = vala_delegate_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp39_, VALA_TYPE_DELEGATE, ValaDelegate));
-                       result = (ValaDataType*) _tmp40_;
+                       _tmp39_ = self->priv->old_current;
+                       _tmp40_ = _tmp39_->symbol;
+                       _tmp41_ = vala_delegate_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp40_, VALA_TYPE_DELEGATE, ValaDelegate));
+                       result = (ValaDataType*) _tmp41_;
                        _g_free0 (type_name);
                        if (ctype) {
                                *ctype = _vala_ctype;
@@ -8258,71 +8379,71 @@ static ValaDataType* vala_gir_parser_parse_type (ValaGirParser* self, gchar** ct
                        vala_gir_parser_start_element (self, "type");
                }
        }
-       _tmp41_ = self->priv->reader;
-       _tmp42_ = vala_markup_reader_get_attribute (_tmp41_, "c:type");
+       _tmp42_ = self->priv->reader;
+       _tmp43_ = vala_markup_reader_get_attribute (_tmp42_, "c:type");
        _g_free0 (_vala_ctype);
-       _vala_ctype = _tmp42_;
+       _vala_ctype = _tmp43_;
        vala_gir_parser_next (self);
-       _tmp44_ = type_name;
-       if (g_strcmp0 (_tmp44_, "GLib.PtrArray") == 0) {
-               ValaMarkupTokenType _tmp45_ = 0;
-               _tmp45_ = self->priv->current_token;
-               _tmp43_ = _tmp45_ == VALA_MARKUP_TOKEN_TYPE_START_ELEMENT;
+       _tmp45_ = type_name;
+       if (g_strcmp0 (_tmp45_, "GLib.PtrArray") == 0) {
+               ValaMarkupTokenType _tmp46_ = 0;
+               _tmp46_ = self->priv->current_token;
+               _tmp44_ = _tmp46_ == VALA_MARKUP_TOKEN_TYPE_START_ELEMENT;
        } else {
-               _tmp43_ = FALSE;
+               _tmp44_ = FALSE;
        }
-       if (_tmp43_) {
-               gchar* _tmp46_ = NULL;
-               _tmp46_ = g_strdup ("GLib.GenericArray");
+       if (_tmp44_) {
+               gchar* _tmp47_ = NULL;
+               _tmp47_ = g_strdup ("GLib.GenericArray");
                _g_free0 (type_name);
-               type_name = _tmp46_;
-       }
-       _tmp47_ = type_name;
-       _tmp48_ = _vala_ctype;
-       _tmp51_ = vala_gir_parser_parse_type_from_gir_name (self, _tmp47_, &_tmp49_, &_tmp50_, _tmp48_);
-       _vala_no_array_length = _tmp49_;
-       _vala_array_null_terminated = _tmp50_;
-       type = _tmp51_;
+               type_name = _tmp47_;
+       }
+       _tmp48_ = type_name;
+       _tmp49_ = _vala_ctype;
+       _tmp52_ = vala_gir_parser_parse_type_from_gir_name (self, _tmp48_, &_tmp50_, &_tmp51_, _tmp49_);
+       _vala_no_array_length = _tmp50_;
+       _vala_array_null_terminated = _tmp51_;
+       type = _tmp52_;
        while (TRUE) {
-               ValaMarkupTokenType _tmp52_ = 0;
-               const gchar* _tmp53_ = NULL;
+               ValaMarkupTokenType _tmp53_ = 0;
+               const gchar* _tmp54_ = NULL;
                ValaDataType* element_type = NULL;
-               ValaDataType* _tmp54_ = NULL;
                ValaDataType* _tmp55_ = NULL;
-               gboolean _tmp56_ = FALSE;
-               ValaDataType* _tmp57_ = NULL;
+               ValaDataType* _tmp56_ = NULL;
+               gboolean _tmp57_ = FALSE;
                ValaDataType* _tmp58_ = NULL;
-               ValaArrayList* _tmp59_ = NULL;
-               ValaDataType* _tmp60_ = NULL;
-               _tmp52_ = self->priv->current_token;
-               if (!(_tmp52_ == VALA_MARKUP_TOKEN_TYPE_START_ELEMENT)) {
+               ValaDataType* _tmp59_ = NULL;
+               ValaArrayList* _tmp60_ = NULL;
+               ValaDataType* _tmp61_ = NULL;
+               _tmp53_ = self->priv->current_token;
+               if (!(_tmp53_ == VALA_MARKUP_TOKEN_TYPE_START_ELEMENT)) {
                        break;
                }
-               _tmp53_ = type_name;
-               if (g_strcmp0 (_tmp53_, "GLib.ByteArray") == 0) {
+               _tmp54_ = type_name;
+               if (g_strcmp0 (_tmp54_, "GLib.ByteArray") == 0) {
                        vala_gir_parser_skip_element (self);
                        continue;
                }
-               _tmp54_ = vala_gir_parser_parse_type (self, NULL, NULL, TRUE, NULL, NULL);
-               element_type = _tmp54_;
-               _tmp55_ = element_type;
-               _tmp56_ = transfer_elements;
-               vala_data_type_set_value_owned (_tmp55_, _tmp56_);
-               _tmp57_ = type;
-               _tmp58_ = element_type;
-               vala_data_type_add_type_argument (_tmp57_, _tmp58_);
-               _tmp59_ = self->priv->unresolved_type_arguments;
-               _tmp60_ = element_type;
-               vala_collection_add ((ValaCollection*) _tmp59_, _tmp60_);
+               _tmp55_ = vala_gir_parser_parse_type (self, NULL, NULL, TRUE, NULL, NULL);
+               element_type = _tmp55_;
+               _tmp56_ = element_type;
+               _tmp57_ = transfer_elements;
+               vala_data_type_set_value_owned (_tmp56_, _tmp57_);
+               _tmp58_ = type;
+               _tmp59_ = element_type;
+               vala_data_type_add_type_argument (_tmp58_, _tmp59_);
+               _tmp60_ = self->priv->unresolved_type_arguments;
+               _tmp61_ = element_type;
+               vala_collection_add ((ValaCollection*) _tmp60_, _tmp61_);
                _vala_code_node_unref0 (element_type);
        }
-       _tmp62_ = is_array;
-       if (_tmp62_) {
-               _tmp61_ = "array";
+       _tmp63_ = is_array;
+       if (_tmp63_) {
+               _tmp62_ = "array";
        } else {
-               _tmp61_ = "type";
+               _tmp62_ = "type";
        }
-       vala_gir_parser_end_element (self, _tmp61_);
+       vala_gir_parser_end_element (self, _tmp62_);
        result = type;
        _g_free0 (type_name);
        if (ctype) {
@@ -8391,216 +8512,223 @@ static ValaDataType* vala_gir_parser_parse_type_from_gir_name (ValaGirParser* se
                        const gchar* _tmp12_ = NULL;
                        _tmp12_ = type_name;
                        if (g_strcmp0 (_tmp12_, "GObject.Strv") == 0) {
+                               ValaUnresolvedType* element_type = NULL;
                                ValaUnresolvedSymbol* _tmp13_ = NULL;
                                ValaUnresolvedSymbol* _tmp14_ = NULL;
                                ValaUnresolvedType* _tmp15_ = NULL;
                                ValaUnresolvedType* _tmp16_ = NULL;
-                               ValaSourceReference* _tmp17_ = NULL;
-                               ValaSourceReference* _tmp18_ = NULL;
-                               ValaArrayType* _tmp19_ = NULL;
+                               ValaUnresolvedType* _tmp17_ = NULL;
+                               ValaUnresolvedType* _tmp18_ = NULL;
+                               ValaSourceReference* _tmp19_ = NULL;
+                               ValaSourceReference* _tmp20_ = NULL;
+                               ValaArrayType* _tmp21_ = NULL;
                                _tmp13_ = vala_unresolved_symbol_new (NULL, "string", NULL);
                                _tmp14_ = _tmp13_;
                                _tmp15_ = vala_unresolved_type_new_from_symbol (_tmp14_, NULL);
                                _tmp16_ = _tmp15_;
-                               _tmp17_ = vala_gir_parser_get_current_src (self);
-                               _tmp18_ = _tmp17_;
-                               _tmp19_ = vala_array_type_new ((ValaDataType*) _tmp16_, 1, _tmp18_);
-                               _vala_code_node_unref0 (type);
-                               type = (ValaDataType*) _tmp19_;
-                               _vala_source_reference_unref0 (_tmp18_);
-                               _vala_code_node_unref0 (_tmp16_);
                                _vala_code_node_unref0 (_tmp14_);
+                               element_type = _tmp16_;
+                               _tmp17_ = element_type;
+                               vala_data_type_set_value_owned ((ValaDataType*) _tmp17_, TRUE);
+                               _tmp18_ = element_type;
+                               _tmp19_ = vala_gir_parser_get_current_src (self);
+                               _tmp20_ = _tmp19_;
+                               _tmp21_ = vala_array_type_new ((ValaDataType*) _tmp18_, 1, _tmp20_);
+                               _vala_code_node_unref0 (type);
+                               type = (ValaDataType*) _tmp21_;
+                               _vala_source_reference_unref0 (_tmp20_);
                                _vala_no_array_length = TRUE;
                                _vala_array_null_terminated = TRUE;
+                               _vala_code_node_unref0 (element_type);
                        } else {
                                gboolean known_type = FALSE;
-                               const gchar* _tmp20_ = NULL;
+                               const gchar* _tmp22_ = NULL;
                                ValaUnresolvedSymbol* sym = NULL;
-                               const gchar* _tmp57_ = NULL;
-                               ValaSourceReference* _tmp58_ = NULL;
-                               ValaSourceReference* _tmp59_ = NULL;
-                               ValaUnresolvedSymbol* _tmp60_ = NULL;
-                               ValaUnresolvedSymbol* _tmp61_ = NULL;
+                               const gchar* _tmp59_ = NULL;
+                               ValaSourceReference* _tmp60_ = NULL;
+                               ValaSourceReference* _tmp61_ = NULL;
                                ValaUnresolvedSymbol* _tmp62_ = NULL;
-                               ValaSourceReference* _tmp63_ = NULL;
-                               ValaSourceReference* _tmp64_ = NULL;
-                               ValaUnresolvedType* _tmp65_ = NULL;
-                               gboolean _tmp66_ = FALSE;
+                               ValaUnresolvedSymbol* _tmp63_ = NULL;
+                               ValaUnresolvedSymbol* _tmp64_ = NULL;
+                               ValaSourceReference* _tmp65_ = NULL;
+                               ValaSourceReference* _tmp66_ = NULL;
+                               ValaUnresolvedType* _tmp67_ = NULL;
+                               gboolean _tmp68_ = FALSE;
                                known_type = TRUE;
-                               _tmp20_ = type_name;
-                               if (g_strcmp0 (_tmp20_, "utf8") == 0) {
+                               _tmp22_ = type_name;
+                               if (g_strcmp0 (_tmp22_, "utf8") == 0) {
                                        type_name = "string";
                                } else {
-                                       const gchar* _tmp21_ = NULL;
-                                       _tmp21_ = type_name;
-                                       if (g_strcmp0 (_tmp21_, "gboolean") == 0) {
+                                       const gchar* _tmp23_ = NULL;
+                                       _tmp23_ = type_name;
+                                       if (g_strcmp0 (_tmp23_, "gboolean") == 0) {
                                                type_name = "bool";
                                        } else {
-                                               const gchar* _tmp22_ = NULL;
-                                               _tmp22_ = type_name;
-                                               if (g_strcmp0 (_tmp22_, "gchar") == 0) {
+                                               const gchar* _tmp24_ = NULL;
+                                               _tmp24_ = type_name;
+                                               if (g_strcmp0 (_tmp24_, "gchar") == 0) {
                                                        type_name = "char";
                                                } else {
-                                                       const gchar* _tmp23_ = NULL;
-                                                       _tmp23_ = type_name;
-                                                       if (g_strcmp0 (_tmp23_, "gshort") == 0) {
+                                                       const gchar* _tmp25_ = NULL;
+                                                       _tmp25_ = type_name;
+                                                       if (g_strcmp0 (_tmp25_, "gshort") == 0) {
                                                                type_name = "short";
                                                        } else {
-                                                               const gchar* _tmp24_ = NULL;
-                                                               _tmp24_ = type_name;
-                                                               if (g_strcmp0 (_tmp24_, "gushort") == 0) {
+                                                               const gchar* _tmp26_ = NULL;
+                                                               _tmp26_ = type_name;
+                                                               if (g_strcmp0 (_tmp26_, "gushort") == 0) {
                                                                        type_name = "ushort";
                                                                } else {
-                                                                       const gchar* _tmp25_ = NULL;
-                                                                       _tmp25_ = type_name;
-                                                                       if (g_strcmp0 (_tmp25_, "gint") == 0) {
+                                                                       const gchar* _tmp27_ = NULL;
+                                                                       _tmp27_ = type_name;
+                                                                       if (g_strcmp0 (_tmp27_, "gint") == 0) {
                                                                                type_name = "int";
                                                                        } else {
-                                                                               const gchar* _tmp26_ = NULL;
-                                                                               _tmp26_ = type_name;
-                                                                               if (g_strcmp0 (_tmp26_, "guint") == 0) {
+                                                                               const gchar* _tmp28_ = NULL;
+                                                                               _tmp28_ = type_name;
+                                                                               if (g_strcmp0 (_tmp28_, "guint") == 0) {
                                                                                        type_name = "uint";
                                                                                } else {
-                                                                                       const gchar* _tmp27_ = NULL;
-                                                                                       _tmp27_ = type_name;
-                                                                                       if (g_strcmp0 (_tmp27_, "glong") == 0) {
-                                                                                               gboolean _tmp28_ = FALSE;
-                                                                                               const gchar* _tmp29_ = NULL;
-                                                                                               _tmp29_ = ctype;
-                                                                                               if (_tmp29_ != NULL) {
-                                                                                                       const gchar* _tmp30_ = NULL;
-                                                                                                       gboolean _tmp31_ = FALSE;
-                                                                                                       _tmp30_ = ctype;
-                                                                                                       _tmp31_ = g_str_has_prefix (_tmp30_, "gssize");
-                                                                                                       _tmp28_ = _tmp31_;
+                                                                                       const gchar* _tmp29_ = NULL;
+                                                                                       _tmp29_ = type_name;
+                                                                                       if (g_strcmp0 (_tmp29_, "glong") == 0) {
+                                                                                               gboolean _tmp30_ = FALSE;
+                                                                                               const gchar* _tmp31_ = NULL;
+                                                                                               _tmp31_ = ctype;
+                                                                                               if (_tmp31_ != NULL) {
+                                                                                                       const gchar* _tmp32_ = NULL;
+                                                                                                       gboolean _tmp33_ = FALSE;
+                                                                                                       _tmp32_ = ctype;
+                                                                                                       _tmp33_ = g_str_has_prefix (_tmp32_, "gssize");
+                                                                                                       _tmp30_ = _tmp33_;
                                                                                                } else {
-                                                                                                       _tmp28_ = FALSE;
+                                                                                                       _tmp30_ = FALSE;
                                                                                                }
-                                                                                               if (_tmp28_) {
+                                                                                               if (_tmp30_) {
                                                                                                        type_name = "ssize_t";
                                                                                                } else {
                                                                                                        type_name = "long";
                                                                                                }
                                                                                        } else {
-                                                                                               const gchar* _tmp32_ = NULL;
-                                                                                               _tmp32_ = type_name;
-                                                                                               if (g_strcmp0 (_tmp32_, "gulong") == 0) {
-                                                                                                       gboolean _tmp33_ = FALSE;
-                                                                                                       const gchar* _tmp34_ = NULL;
-                                                                                                       _tmp34_ = ctype;
-                                                                                                       if (_tmp34_ != NULL) {
-                                                                                                               const gchar* _tmp35_ = NULL;
-                                                                                                               gboolean _tmp36_ = FALSE;
-                                                                                                               _tmp35_ = ctype;
-                                                                                                               _tmp36_ = g_str_has_prefix (_tmp35_, "gsize");
-                                                                                                               _tmp33_ = _tmp36_;
+                                                                                               const gchar* _tmp34_ = NULL;
+                                                                                               _tmp34_ = type_name;
+                                                                                               if (g_strcmp0 (_tmp34_, "gulong") == 0) {
+                                                                                                       gboolean _tmp35_ = FALSE;
+                                                                                                       const gchar* _tmp36_ = NULL;
+                                                                                                       _tmp36_ = ctype;
+                                                                                                       if (_tmp36_ != NULL) {
+                                                                                                               const gchar* _tmp37_ = NULL;
+                                                                                                               gboolean _tmp38_ = FALSE;
+                                                                                                               _tmp37_ = ctype;
+                                                                                                               _tmp38_ = g_str_has_prefix (_tmp37_, "gsize");
+                                                                                                               _tmp35_ = _tmp38_;
                                                                                                        } else {
-                                                                                                               _tmp33_ = FALSE;
+                                                                                                               _tmp35_ = FALSE;
                                                                                                        }
-                                                                                                       if (_tmp33_) {
+                                                                                                       if (_tmp35_) {
                                                                                                                type_name = "size_t";
                                                                                                        } else {
                                                                                                                type_name = "ulong";
                                                                                                        }
                                                                                                } else {
-                                                                                                       const gchar* _tmp37_ = NULL;
-                                                                                                       _tmp37_ = type_name;
-                                                                                                       if (g_strcmp0 (_tmp37_, "gint8") == 0) {
+                                                                                                       const gchar* _tmp39_ = NULL;
+                                                                                                       _tmp39_ = type_name;
+                                                                                                       if (g_strcmp0 (_tmp39_, "gint8") == 0) {
                                                                                                                type_name = "int8";
                                                                                                        } else {
-                                                                                                               const gchar* _tmp38_ = NULL;
-                                                                                                               _tmp38_ = type_name;
-                                                                                                               if (g_strcmp0 (_tmp38_, "guint8") == 0) {
+                                                                                                               const gchar* _tmp40_ = NULL;
+                                                                                                               _tmp40_ = type_name;
+                                                                                                               if (g_strcmp0 (_tmp40_, "guint8") == 0) {
                                                                                                                        type_name = "uint8";
                                                                                                                } else {
-                                                                                                                       const gchar* _tmp39_ = NULL;
-                                                                                                                       _tmp39_ = type_name;
-                                                                                                                       if (g_strcmp0 (_tmp39_, "gint16") == 0) {
+                                                                                                                       const gchar* _tmp41_ = NULL;
+                                                                                                                       _tmp41_ = type_name;
+                                                                                                                       if (g_strcmp0 (_tmp41_, "gint16") == 0) {
                                                                                                                                type_name = "int16";
                                                                                                                        } else {
-                                                                                                                               const gchar* _tmp40_ = NULL;
-                                                                                                                               _tmp40_ = type_name;
-                                                                                                                               if (g_strcmp0 (_tmp40_, "guint16") == 0) {
+                                                                                                                               const gchar* _tmp42_ = NULL;
+                                                                                                                               _tmp42_ = type_name;
+                                                                                                                               if (g_strcmp0 (_tmp42_, "guint16") == 0) {
                                                                                                                                        type_name = "uint16";
                                                                                                                                } else {
-                                                                                                                                       const gchar* _tmp41_ = NULL;
-                                                                                                                                       _tmp41_ = type_name;
-                                                                                                                                       if (g_strcmp0 (_tmp41_, "gint32") == 0) {
+                                                                                                                                       const gchar* _tmp43_ = NULL;
+                                                                                                                                       _tmp43_ = type_name;
+                                                                                                                                       if (g_strcmp0 (_tmp43_, "gint32") == 0) {
                                                                                                                                                type_name = "int32";
                                                                                                                                        } else {
-                                                                                                                                               const gchar* _tmp42_ = NULL;
-                                                                                                                                               _tmp42_ = type_name;
-                                                                                                                                               if (g_strcmp0 (_tmp42_, "guint32") == 0) {
+                                                                                                                                               const gchar* _tmp44_ = NULL;
+                                                                                                                                               _tmp44_ = type_name;
+                                                                                                                                               if (g_strcmp0 (_tmp44_, "guint32") == 0) {
                                                                                                                                                        type_name = "uint32";
                                                                                                                                                } else {
-                                                                                                                                                       const gchar* _tmp43_ = NULL;
-                                                                                                                                                       _tmp43_ = type_name;
-                                                                                                                                                       if (g_strcmp0 (_tmp43_, "gint64") == 0) {
+                                                                                                                                                       const gchar* _tmp45_ = NULL;
+                                                                                                                                                       _tmp45_ = type_name;
+                                                                                                                                                       if (g_strcmp0 (_tmp45_, "gint64") == 0) {
                                                                                                                                                                type_name = "int64";
                                                                                                                                                        } else {
-                                                                                                                                                               const gchar* _tmp44_ = NULL;
-                                                                                                                                                               _tmp44_ = type_name;
-                                                                                                                                                               if (g_strcmp0 (_tmp44_, "guint64") == 0) {
+                                                                                                                                                               const gchar* _tmp46_ = NULL;
+                                                                                                                                                               _tmp46_ = type_name;
+                                                                                                                                                               if (g_strcmp0 (_tmp46_, "guint64") == 0) {
                                                                                                                                                                        type_name = "uint64";
                                                                                                                                                                } else {
-                                                                                                                                                                       const gchar* _tmp45_ = NULL;
-                                                                                                                                                                       _tmp45_ = type_name;
-                                                                                                                                                                       if (g_strcmp0 (_tmp45_, "gfloat") == 0) {
+                                                                                                                                                                       const gchar* _tmp47_ = NULL;
+                                                                                                                                                                       _tmp47_ = type_name;
+                                                                                                                                                                       if (g_strcmp0 (_tmp47_, "gfloat") == 0) {
                                                                                                                                                                                type_name = "float";
                                                                                                                                                                        } else {
-                                                                                                                                                                               const gchar* _tmp46_ = NULL;
-                                                                                                                                                                               _tmp46_ = type_name;
-                                                                                                                                                                               if (g_strcmp0 (_tmp46_, "gdouble") == 0) {
+                                                                                                                                                                               const gchar* _tmp48_ = NULL;
+                                                                                                                                                                               _tmp48_ = type_name;
+                                                                                                                                                                               if (g_strcmp0 (_tmp48_, "gdouble") == 0) {
                                                                                                                                                                                        type_name = "double";
                                                                                                                                                                                } else {
-                                                                                                                                                                                       const gchar* _tmp47_ = NULL;
-                                                                                                                                                                                       _tmp47_ = type_name;
-                                                                                                                                                                                       if (g_strcmp0 (_tmp47_, "filename") == 0) {
+                                                                                                                                                                                       const gchar* _tmp49_ = NULL;
+                                                                                                                                                                                       _tmp49_ = type_name;
+                                                                                                                                                                                       if (g_strcmp0 (_tmp49_, "filename") == 0) {
                                                                                                                                                                                                type_name = "string";
                                                                                                                                                                                        } else {
-                                                                                                                                                                                               const gchar* _tmp48_ = NULL;
-                                                                                                                                                                                               _tmp48_ = type_name;
-                                                                                                                                                                                               if (g_strcmp0 (_tmp48_, "GLib.offset") == 0) {
+                                                                                                                                                                                               const gchar* _tmp50_ = NULL;
+                                                                                                                                                                                               _tmp50_ = type_name;
+                                                                                                                                                                                               if (g_strcmp0 (_tmp50_, "GLib.offset") == 0) {
                                                                                                                                                                                                        type_name = "int64";
                                                                                                                                                                                                } else {
-                                                                                                                                                                                                       const gchar* _tmp49_ = NULL;
-                                                                                                                                                                                                       _tmp49_ = type_name;
-                                                                                                                                                                                                       if (g_strcmp0 (_tmp49_, "gsize") == 0) {
+                                                                                                                                                                                                       const gchar* _tmp51_ = NULL;
+                                                                                                                                                                                                       _tmp51_ = type_name;
+                                                                                                                                                                                                       if (g_strcmp0 (_tmp51_, "gsize") == 0) {
                                                                                                                                                                                                                type_name = "size_t";
                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                               const gchar* _tmp50_ = NULL;
-                                                                                                                                                                                                               _tmp50_ = type_name;
-                                                                                                                                                                                                               if (g_strcmp0 (_tmp50_, "gssize") == 0) {
+                                                                                                                                                                                                               const gchar* _tmp52_ = NULL;
+                                                                                                                                                                                                               _tmp52_ = type_name;
+                                                                                                                                                                                                               if (g_strcmp0 (_tmp52_, "gssize") == 0) {
                                                                                                                                                                                                                        type_name = "ssize_t";
                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                       const gchar* _tmp51_ = NULL;
-                                                                                                                                                                                                                       _tmp51_ = type_name;
-                                                                                                                                                                                                                       if (g_strcmp0 (_tmp51_, "GType") == 0) {
+                                                                                                                                                                                                                       const gchar* _tmp53_ = NULL;
+                                                                                                                                                                                                                       _tmp53_ = type_name;
+                                                                                                                                                                                                                       if (g_strcmp0 (_tmp53_, "GType") == 0) {
                                                                                                                                                                                                                                type_name = "GLib.Type";
                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                               const gchar* _tmp52_ = NULL;
-                                                                                                                                                                                                                               _tmp52_ = type_name;
-                                                                                                                                                                                                                               if (g_strcmp0 (_tmp52_, "GLib.String") == 0) {
+                                                                                                                                                                                                                               const gchar* _tmp54_ = NULL;
+                                                                                                                                                                                                                               _tmp54_ = type_name;
+                                                                                                                                                                                                                               if (g_strcmp0 (_tmp54_, "GLib.String") == 0) {
                                                                                                                                                                                                                                        type_name = "GLib.StringBuilder";
                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                       const gchar* _tmp53_ = NULL;
-                                                                                                                                                                                                                                       _tmp53_ = type_name;
-                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp53_, "GObject.Class") == 0) {
+                                                                                                                                                                                                                                       const gchar* _tmp55_ = NULL;
+                                                                                                                                                                                                                                       _tmp55_ = type_name;
+                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp55_, "GObject.Class") == 0) {
                                                                                                                                                                                                                                                type_name = "GLib.ObjectClass";
                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                               const gchar* _tmp54_ = NULL;
-                                                                                                                                                                                                                                               _tmp54_ = type_name;
-                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp54_, "gunichar") == 0) {
+                                                                                                                                                                                                                                               const gchar* _tmp56_ = NULL;
+                                                                                                                                                                                                                                               _tmp56_ = type_name;
+                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp56_, "gunichar") == 0) {
                                                                                                                                                                                                                                                        type_name = "unichar";
                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                       const gchar* _tmp55_ = NULL;
-                                                                                                                                                                                                                                                       _tmp55_ = type_name;
-                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp55_, "GLib.Data") == 0) {
+                                                                                                                                                                                                                                                       const gchar* _tmp57_ = NULL;
+                                                                                                                                                                                                                                                       _tmp57_ = type_name;
+                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp57_, "GLib.Data") == 0) {
                                                                                                                                                                                                                                                                type_name = "GLib.Datalist";
                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                               const gchar* _tmp56_ = NULL;
-                                                                                                                                                                                                                                                               _tmp56_ = type_name;
-                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp56_, "Atk.ImplementorIface") == 0) {
+                                                                                                                                                                                                                                                               const gchar* _tmp58_ = NULL;
+                                                                                                                                                                                                                                                               _tmp58_ = type_name;
+                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp58_, "Atk.ImplementorIface") == 0) {
                                                                                                                                                                                                                                                                        type_name = "Atk.Implementor";
                                                                                                                                                                                                                                                                } else {
                                                                                                                                                                                                                                                                        known_type = FALSE;
@@ -8633,27 +8761,27 @@ static ValaDataType* vala_gir_parser_parse_type_from_gir_name (ValaGirParser* se
                                                }
                                        }
                                }
-                               _tmp57_ = type_name;
-                               _tmp58_ = vala_gir_parser_get_current_src (self);
-                               _tmp59_ = _tmp58_;
-                               _tmp60_ = vala_gir_parser_parse_symbol_from_string (self, _tmp57_, _tmp59_);
+                               _tmp59_ = type_name;
+                               _tmp60_ = vala_gir_parser_get_current_src (self);
                                _tmp61_ = _tmp60_;
-                               _vala_source_reference_unref0 (_tmp59_);
-                               sym = _tmp61_;
-                               _tmp62_ = sym;
-                               _tmp63_ = vala_gir_parser_get_current_src (self);
-                               _tmp64_ = _tmp63_;
-                               _tmp65_ = vala_unresolved_type_new_from_symbol (_tmp62_, _tmp64_);
+                               _tmp62_ = vala_gir_parser_parse_symbol_from_string (self, _tmp59_, _tmp61_);
+                               _tmp63_ = _tmp62_;
+                               _vala_source_reference_unref0 (_tmp61_);
+                               sym = _tmp63_;
+                               _tmp64_ = sym;
+                               _tmp65_ = vala_gir_parser_get_current_src (self);
+                               _tmp66_ = _tmp65_;
+                               _tmp67_ = vala_unresolved_type_new_from_symbol (_tmp64_, _tmp66_);
                                _vala_code_node_unref0 (type);
-                               type = (ValaDataType*) _tmp65_;
-                               _vala_source_reference_unref0 (_tmp64_);
-                               _tmp66_ = known_type;
-                               if (!_tmp66_) {
-                                       ValaArrayList* _tmp67_ = NULL;
-                                       ValaUnresolvedSymbol* _tmp68_ = NULL;
-                                       _tmp67_ = self->priv->unresolved_gir_symbols;
-                                       _tmp68_ = sym;
-                                       vala_collection_add ((ValaCollection*) _tmp67_, _tmp68_);
+                               type = (ValaDataType*) _tmp67_;
+                               _vala_source_reference_unref0 (_tmp66_);
+                               _tmp68_ = known_type;
+                               if (!_tmp68_) {
+                                       ValaArrayList* _tmp69_ = NULL;
+                                       ValaUnresolvedSymbol* _tmp70_ = NULL;
+                                       _tmp69_ = self->priv->unresolved_gir_symbols;
+                                       _tmp70_ = sym;
+                                       vala_collection_add ((ValaCollection*) _tmp69_, _tmp70_);
                                }
                                _vala_code_node_unref0 (sym);
                        }
@@ -9431,41 +9559,45 @@ static void vala_gir_parser_parse_interface (ValaGirParser* self) {
 static void vala_gir_parser_parse_field (ValaGirParser* self) {
        gchar* _tmp0_ = NULL;
        gchar* _tmp1_ = NULL;
-       gchar* allow_none = NULL;
+       gchar* nullable = NULL;
        ValaMarkupReader* _tmp2_ = NULL;
        gchar* _tmp3_ = NULL;
+       gchar* allow_none = NULL;
+       ValaMarkupReader* _tmp4_ = NULL;
+       gchar* _tmp5_ = NULL;
        ValaGirComment* comment = NULL;
-       ValaGirComment* _tmp4_ = NULL;
+       ValaGirComment* _tmp6_ = NULL;
        ValaDataType* type = NULL;
-       ValaDataType* _tmp5_ = NULL;
+       ValaDataType* _tmp7_ = NULL;
        gboolean no_array_length = FALSE;
        gboolean array_null_terminated = FALSE;
-       ValaDataType* _tmp6_ = NULL;
-       ValaDataType* _tmp7_ = NULL;
+       ValaDataType* _tmp8_ = NULL;
+       ValaDataType* _tmp9_ = NULL;
        gchar* name = NULL;
-       ValaGirParserNode* _tmp8_ = NULL;
-       const gchar* _tmp9_ = NULL;
-       gchar* _tmp10_ = NULL;
+       ValaGirParserNode* _tmp10_ = NULL;
+       const gchar* _tmp11_ = NULL;
+       gchar* _tmp12_ = NULL;
        gchar* cname = NULL;
-       ValaGirParserNode* _tmp11_ = NULL;
-       ValaMap* _tmp12_ = NULL;
-       gpointer _tmp13_ = NULL;
+       ValaGirParserNode* _tmp13_ = NULL;
+       ValaMap* _tmp14_ = NULL;
+       gpointer _tmp15_ = NULL;
        ValaField* field = NULL;
-       const gchar* _tmp14_ = NULL;
-       ValaDataType* _tmp15_ = NULL;
-       ValaGirParserNode* _tmp16_ = NULL;
-       ValaSourceReference* _tmp17_ = NULL;
-       ValaField* _tmp18_ = NULL;
-       ValaField* _tmp19_ = NULL;
+       const gchar* _tmp16_ = NULL;
+       ValaDataType* _tmp17_ = NULL;
+       ValaGirParserNode* _tmp18_ = NULL;
+       ValaSourceReference* _tmp19_ = NULL;
        ValaField* _tmp20_ = NULL;
-       ValaGirComment* _tmp21_ = NULL;
-       const gchar* _tmp22_ = NULL;
-       const gchar* _tmp23_ = NULL;
-       ValaDataType* _tmp26_ = NULL;
-       const gchar* _tmp30_ = NULL;
-       ValaGirParserNode* _tmp32_ = NULL;
-       ValaField* _tmp33_ = NULL;
-       ValaSymbol* _tmp34_ = NULL;
+       ValaField* _tmp21_ = NULL;
+       ValaField* _tmp22_ = NULL;
+       ValaGirComment* _tmp23_ = NULL;
+       const gchar* _tmp24_ = NULL;
+       const gchar* _tmp25_ = NULL;
+       ValaDataType* _tmp28_ = NULL;
+       gboolean _tmp32_ = FALSE;
+       const gchar* _tmp33_ = NULL;
+       ValaGirParserNode* _tmp36_ = NULL;
+       ValaField* _tmp37_ = NULL;
+       ValaSymbol* _tmp38_ = NULL;
        g_return_if_fail (self != NULL);
        vala_gir_parser_start_element (self, "field");
        _tmp0_ = vala_gir_parser_element_get_name (self, NULL);
@@ -9473,71 +9605,81 @@ static void vala_gir_parser_parse_field (ValaGirParser* self) {
        vala_gir_parser_push_node (self, _tmp1_, FALSE);
        _g_free0 (_tmp1_);
        _tmp2_ = self->priv->reader;
-       _tmp3_ = vala_markup_reader_get_attribute (_tmp2_, "allow-none");
-       allow_none = _tmp3_;
+       _tmp3_ = vala_markup_reader_get_attribute (_tmp2_, "nullable");
+       nullable = _tmp3_;
+       _tmp4_ = self->priv->reader;
+       _tmp5_ = vala_markup_reader_get_attribute (_tmp4_, "allow-none");
+       allow_none = _tmp5_;
        vala_gir_parser_next (self);
-       _tmp4_ = vala_gir_parser_parse_symbol_doc (self);
-       comment = _tmp4_;
-       _tmp5_ = vala_gir_parser_parse_type (self, NULL, NULL, TRUE, NULL, NULL);
-       type = _tmp5_;
+       _tmp6_ = vala_gir_parser_parse_symbol_doc (self);
+       comment = _tmp6_;
+       _tmp7_ = vala_gir_parser_parse_type (self, NULL, NULL, TRUE, NULL, NULL);
+       type = _tmp7_;
        no_array_length = TRUE;
        array_null_terminated = FALSE;
-       _tmp6_ = type;
-       _tmp7_ = vala_gir_parser_element_get_type (self, _tmp6_, TRUE, &no_array_length, &array_null_terminated, NULL);
+       _tmp8_ = type;
+       _tmp9_ = vala_gir_parser_element_get_type (self, _tmp8_, TRUE, &no_array_length, &array_null_terminated, NULL);
        _vala_code_node_unref0 (type);
-       type = _tmp7_;
-       _tmp8_ = self->priv->current;
-       _tmp9_ = _tmp8_->name;
-       _tmp10_ = g_strdup (_tmp9_);
-       name = _tmp10_;
-       _tmp11_ = self->priv->current;
-       _tmp12_ = _tmp11_->girdata;
-       _tmp13_ = vala_map_get (_tmp12_, "name");
-       cname = (gchar*) _tmp13_;
-       _tmp14_ = name;
-       _tmp15_ = type;
-       _tmp16_ = self->priv->current;
-       _tmp17_ = _tmp16_->source_reference;
-       _tmp18_ = vala_field_new (_tmp14_, _tmp15_, NULL, _tmp17_, NULL);
-       field = _tmp18_;
-       _tmp19_ = field;
-       vala_symbol_set_access ((ValaSymbol*) _tmp19_, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
-       _tmp20_ = field;
-       _tmp21_ = comment;
-       vala_symbol_set_comment ((ValaSymbol*) _tmp20_, (ValaComment*) _tmp21_);
-       _tmp22_ = name;
-       _tmp23_ = cname;
-       if (g_strcmp0 (_tmp22_, _tmp23_) != 0) {
-               ValaField* _tmp24_ = NULL;
-               const gchar* _tmp25_ = NULL;
-               _tmp24_ = field;
-               _tmp25_ = cname;
-               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp24_, "CCode", "cname", _tmp25_, NULL);
+       type = _tmp9_;
+       _tmp10_ = self->priv->current;
+       _tmp11_ = _tmp10_->name;
+       _tmp12_ = g_strdup (_tmp11_);
+       name = _tmp12_;
+       _tmp13_ = self->priv->current;
+       _tmp14_ = _tmp13_->girdata;
+       _tmp15_ = vala_map_get (_tmp14_, "name");
+       cname = (gchar*) _tmp15_;
+       _tmp16_ = name;
+       _tmp17_ = type;
+       _tmp18_ = self->priv->current;
+       _tmp19_ = _tmp18_->source_reference;
+       _tmp20_ = vala_field_new (_tmp16_, _tmp17_, NULL, _tmp19_, NULL);
+       field = _tmp20_;
+       _tmp21_ = field;
+       vala_symbol_set_access ((ValaSymbol*) _tmp21_, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
+       _tmp22_ = field;
+       _tmp23_ = comment;
+       vala_symbol_set_comment ((ValaSymbol*) _tmp22_, (ValaComment*) _tmp23_);
+       _tmp24_ = name;
+       _tmp25_ = cname;
+       if (g_strcmp0 (_tmp24_, _tmp25_) != 0) {
+               ValaField* _tmp26_ = NULL;
+               const gchar* _tmp27_ = NULL;
+               _tmp26_ = field;
+               _tmp27_ = cname;
+               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp26_, "CCode", "cname", _tmp27_, NULL);
        }
-       _tmp26_ = type;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp26_, VALA_TYPE_ARRAY_TYPE)) {
-               gboolean _tmp27_ = FALSE;
-               ValaField* _tmp29_ = NULL;
-               _tmp27_ = no_array_length;
-               if (_tmp27_) {
-                       ValaField* _tmp28_ = NULL;
-                       _tmp28_ = field;
-                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp28_, "CCode", "array_length", FALSE, NULL);
+       _tmp28_ = type;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp28_, VALA_TYPE_ARRAY_TYPE)) {
+               gboolean _tmp29_ = FALSE;
+               ValaField* _tmp31_ = NULL;
+               _tmp29_ = no_array_length;
+               if (_tmp29_) {
+                       ValaField* _tmp30_ = NULL;
+                       _tmp30_ = field;
+                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp30_, "CCode", "array_length", FALSE, NULL);
                }
-               _tmp29_ = field;
-               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp29_, "CCode", "array_null_terminated", TRUE, NULL);
-       }
-       _tmp30_ = allow_none;
-       if (g_strcmp0 (_tmp30_, "1") == 0) {
-               ValaDataType* _tmp31_ = NULL;
-               _tmp31_ = type;
-               vala_data_type_set_nullable (_tmp31_, TRUE);
-       }
-       _tmp32_ = self->priv->current;
-       _tmp33_ = field;
-       _tmp34_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp33_);
-       _vala_code_node_unref0 (_tmp32_->symbol);
-       _tmp32_->symbol = _tmp34_;
+               _tmp31_ = field;
+               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp31_, "CCode", "array_null_terminated", TRUE, NULL);
+       }
+       _tmp33_ = nullable;
+       if (g_strcmp0 (_tmp33_, "1") == 0) {
+               _tmp32_ = TRUE;
+       } else {
+               const gchar* _tmp34_ = NULL;
+               _tmp34_ = allow_none;
+               _tmp32_ = g_strcmp0 (_tmp34_, "1") == 0;
+       }
+       if (_tmp32_) {
+               ValaDataType* _tmp35_ = NULL;
+               _tmp35_ = type;
+               vala_data_type_set_nullable (_tmp35_, TRUE);
+       }
+       _tmp36_ = self->priv->current;
+       _tmp37_ = field;
+       _tmp38_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp37_);
+       _vala_code_node_unref0 (_tmp36_->symbol);
+       _tmp36_->symbol = _tmp38_;
        vala_gir_parser_pop_node (self);
        vala_gir_parser_end_element (self, "field");
        _vala_code_node_unref0 (field);
@@ -9546,6 +9688,7 @@ static void vala_gir_parser_parse_field (ValaGirParser* self) {
        _vala_code_node_unref0 (type);
        _vala_comment_unref0 (comment);
        _g_free0 (allow_none);
+       _g_free0 (nullable);
 }
 
 
@@ -9738,12 +9881,12 @@ static void vala_gir_parser_parse_function (ValaGirParser* self, const gchar* el
        ValaArrayList* _tmp236_ = NULL;
        gboolean _tmp237_ = FALSE;
        ValaMarkupTokenType _tmp238_ = 0;
-       ValaGirParserNode* _tmp311_ = NULL;
-       ValaArrayList* _tmp312_ = NULL;
-       ValaList* _tmp313_ = NULL;
-       gboolean _tmp342_ = FALSE;
-       const gchar* _tmp343_ = NULL;
-       const gchar* _tmp355_ = NULL;
+       ValaGirParserNode* _tmp315_ = NULL;
+       ValaArrayList* _tmp316_ = NULL;
+       ValaList* _tmp317_ = NULL;
+       gboolean _tmp346_ = FALSE;
+       const gchar* _tmp347_ = NULL;
+       const gchar* _tmp359_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (element_name != NULL);
        _tmp0_ = element_name;
@@ -10424,208 +10567,224 @@ static void vala_gir_parser_parse_function (ValaGirParser* self, const gchar* el
                vala_gir_parser_next (self);
                while (TRUE) {
                        ValaMarkupTokenType _tmp242_ = 0;
-                       ValaMarkupReader* _tmp243_ = NULL;
-                       const gchar* _tmp244_ = NULL;
+                       gboolean _tmp243_ = FALSE;
+                       ValaMarkupReader* _tmp244_ = NULL;
                        const gchar* _tmp245_ = NULL;
-                       gboolean _tmp246_ = FALSE;
+                       const gchar* _tmp246_ = NULL;
+                       gboolean _tmp250_ = FALSE;
                        gint array_length_idx = 0;
                        gint closure_idx = 0;
                        gint destroy_idx = 0;
                        gchar* scope = NULL;
                        gchar* default_param_name = NULL;
                        ValaComment* param_comment = NULL;
-                       ValaArrayList* _tmp247_ = NULL;
-                       gint _tmp248_ = 0;
-                       gint _tmp249_ = 0;
-                       gchar* _tmp250_ = NULL;
-                       ValaParameter* param = NULL;
-                       const gchar* _tmp251_ = NULL;
+                       ValaArrayList* _tmp251_ = NULL;
                        gint _tmp252_ = 0;
                        gint _tmp253_ = 0;
-                       gint _tmp254_ = 0;
-                       gchar* _tmp255_ = NULL;
-                       ValaComment* _tmp256_ = NULL;
-                       ValaParameter* _tmp257_ = NULL;
+                       gchar* _tmp254_ = NULL;
+                       ValaParameter* param = NULL;
+                       const gchar* _tmp255_ = NULL;
+                       gint _tmp256_ = 0;
+                       gint _tmp257_ = 0;
                        gint _tmp258_ = 0;
+                       gchar* _tmp259_ = NULL;
+                       ValaComment* _tmp260_ = NULL;
+                       ValaParameter* _tmp261_ = NULL;
                        gint _tmp262_ = 0;
                        gint _tmp266_ = 0;
-                       ValaComment* _tmp270_ = NULL;
+                       gint _tmp270_ = 0;
+                       ValaComment* _tmp274_ = NULL;
                        ValaGirParserParameterInfo* info = NULL;
-                       ValaParameter* _tmp287_ = NULL;
-                       gint _tmp288_ = 0;
-                       gint _tmp289_ = 0;
-                       gint _tmp290_ = 0;
-                       const gchar* _tmp291_ = NULL;
-                       ValaGirParserParameterInfo* _tmp292_ = NULL;
-                       gboolean _tmp293_ = FALSE;
-                       ValaSymbol* _tmp294_ = NULL;
-                       ValaArrayList* _tmp309_ = NULL;
-                       ValaGirParserParameterInfo* _tmp310_ = NULL;
+                       ValaParameter* _tmp291_ = NULL;
+                       gint _tmp292_ = 0;
+                       gint _tmp293_ = 0;
+                       gint _tmp294_ = 0;
+                       const gchar* _tmp295_ = NULL;
+                       ValaGirParserParameterInfo* _tmp296_ = NULL;
+                       gboolean _tmp297_ = FALSE;
+                       ValaSymbol* _tmp298_ = NULL;
+                       ValaArrayList* _tmp313_ = NULL;
+                       ValaGirParserParameterInfo* _tmp314_ = NULL;
                        _tmp242_ = self->priv->current_token;
                        if (!(_tmp242_ == VALA_MARKUP_TOKEN_TYPE_START_ELEMENT)) {
                                break;
                        }
-                       _tmp243_ = self->priv->reader;
-                       _tmp244_ = vala_markup_reader_get_name (_tmp243_);
-                       _tmp245_ = _tmp244_;
-                       if (g_strcmp0 (_tmp245_, "instance-parameter") == 0) {
+                       _tmp244_ = self->priv->reader;
+                       _tmp245_ = vala_markup_reader_get_name (_tmp244_);
+                       _tmp246_ = _tmp245_;
+                       if (g_strcmp0 (_tmp246_, "instance-parameter") == 0) {
+                               gboolean _tmp247_ = FALSE;
+                               const gchar* _tmp248_ = NULL;
+                               _tmp248_ = symbol_type;
+                               if (g_strcmp0 (_tmp248_, "function") == 0) {
+                                       _tmp247_ = TRUE;
+                               } else {
+                                       const gchar* _tmp249_ = NULL;
+                                       _tmp249_ = symbol_type;
+                                       _tmp247_ = g_strcmp0 (_tmp249_, "constructor") == 0;
+                               }
+                               _tmp243_ = !_tmp247_;
+                       } else {
+                               _tmp243_ = FALSE;
+                       }
+                       if (_tmp243_) {
                                vala_gir_parser_skip_element (self);
                                continue;
                        }
-                       _tmp246_ = vala_gir_parser_push_metadata (self);
-                       if (!_tmp246_) {
+                       _tmp250_ = vala_gir_parser_push_metadata (self);
+                       if (!_tmp250_) {
                                vala_gir_parser_skip_element (self);
                                continue;
                        }
                        default_param_name = NULL;
-                       _tmp247_ = parameters;
-                       _tmp248_ = vala_collection_get_size ((ValaCollection*) _tmp247_);
-                       _tmp249_ = _tmp248_;
-                       _tmp250_ = g_strdup_printf ("arg%d", _tmp249_);
+                       _tmp251_ = parameters;
+                       _tmp252_ = vala_collection_get_size ((ValaCollection*) _tmp251_);
+                       _tmp253_ = _tmp252_;
+                       _tmp254_ = g_strdup_printf ("arg%d", _tmp253_);
                        _g_free0 (default_param_name);
-                       default_param_name = _tmp250_;
-                       _tmp251_ = default_param_name;
-                       _tmp257_ = vala_gir_parser_parse_parameter (self, &_tmp252_, &_tmp253_, &_tmp254_, &_tmp255_, &_tmp256_, _tmp251_);
-                       array_length_idx = _tmp252_;
-                       closure_idx = _tmp253_;
-                       destroy_idx = _tmp254_;
+                       default_param_name = _tmp254_;
+                       _tmp255_ = default_param_name;
+                       _tmp261_ = vala_gir_parser_parse_parameter (self, &_tmp256_, &_tmp257_, &_tmp258_, &_tmp259_, &_tmp260_, _tmp255_);
+                       array_length_idx = _tmp256_;
+                       closure_idx = _tmp257_;
+                       destroy_idx = _tmp258_;
                        _g_free0 (scope);
-                       scope = _tmp255_;
+                       scope = _tmp259_;
                        _vala_comment_unref0 (param_comment);
-                       param_comment = _tmp256_;
-                       param = _tmp257_;
-                       _tmp258_ = array_length_idx;
-                       if (_tmp258_ != (-1)) {
-                               ValaGirParserNode* _tmp259_ = NULL;
-                               ValaArrayList* _tmp260_ = NULL;
-                               gint _tmp261_ = 0;
-                               _tmp259_ = self->priv->current;
-                               _tmp260_ = _tmp259_->array_length_parameters;
-                               _tmp261_ = array_length_idx;
-                               vala_collection_add ((ValaCollection*) _tmp260_, (gpointer) ((gintptr) _tmp261_));
-                       }
-                       _tmp262_ = closure_idx;
+                       param_comment = _tmp260_;
+                       param = _tmp261_;
+                       _tmp262_ = array_length_idx;
                        if (_tmp262_ != (-1)) {
                                ValaGirParserNode* _tmp263_ = NULL;
                                ValaArrayList* _tmp264_ = NULL;
                                gint _tmp265_ = 0;
                                _tmp263_ = self->priv->current;
-                               _tmp264_ = _tmp263_->closure_parameters;
-                               _tmp265_ = closure_idx;
+                               _tmp264_ = _tmp263_->array_length_parameters;
+                               _tmp265_ = array_length_idx;
                                vala_collection_add ((ValaCollection*) _tmp264_, (gpointer) ((gintptr) _tmp265_));
                        }
-                       _tmp266_ = destroy_idx;
+                       _tmp266_ = closure_idx;
                        if (_tmp266_ != (-1)) {
                                ValaGirParserNode* _tmp267_ = NULL;
                                ValaArrayList* _tmp268_ = NULL;
                                gint _tmp269_ = 0;
                                _tmp267_ = self->priv->current;
-                               _tmp268_ = _tmp267_->destroy_parameters;
-                               _tmp269_ = destroy_idx;
+                               _tmp268_ = _tmp267_->closure_parameters;
+                               _tmp269_ = closure_idx;
                                vala_collection_add ((ValaCollection*) _tmp268_, (gpointer) ((gintptr) _tmp269_));
                        }
-                       _tmp270_ = param_comment;
-                       if (_tmp270_ != NULL) {
-                               ValaGirComment* _tmp271_ = NULL;
-                               const gchar* _tmp278_ = NULL;
-                               ValaParameter* _tmp279_ = NULL;
-                               gboolean _tmp280_ = FALSE;
-                               gboolean _tmp281_ = FALSE;
-                               ValaGirComment* _tmp285_ = NULL;
-                               ValaComment* _tmp286_ = NULL;
-                               _tmp271_ = comment;
-                               if (_tmp271_ == NULL) {
-                                       ValaSymbol* _tmp272_ = NULL;
-                                       ValaSourceReference* _tmp273_ = NULL;
-                                       ValaSourceReference* _tmp274_ = NULL;
-                                       ValaGirComment* _tmp275_ = NULL;
+                       _tmp270_ = destroy_idx;
+                       if (_tmp270_ != (-1)) {
+                               ValaGirParserNode* _tmp271_ = NULL;
+                               ValaArrayList* _tmp272_ = NULL;
+                               gint _tmp273_ = 0;
+                               _tmp271_ = self->priv->current;
+                               _tmp272_ = _tmp271_->destroy_parameters;
+                               _tmp273_ = destroy_idx;
+                               vala_collection_add ((ValaCollection*) _tmp272_, (gpointer) ((gintptr) _tmp273_));
+                       }
+                       _tmp274_ = param_comment;
+                       if (_tmp274_ != NULL) {
+                               ValaGirComment* _tmp275_ = NULL;
+                               const gchar* _tmp282_ = NULL;
+                               ValaParameter* _tmp283_ = NULL;
+                               gboolean _tmp284_ = FALSE;
+                               gboolean _tmp285_ = FALSE;
+                               ValaGirComment* _tmp289_ = NULL;
+                               ValaComment* _tmp290_ = NULL;
+                               _tmp275_ = comment;
+                               if (_tmp275_ == NULL) {
                                        ValaSymbol* _tmp276_ = NULL;
-                                       ValaGirComment* _tmp277_ = NULL;
-                                       _tmp272_ = s;
-                                       _tmp273_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp272_);
-                                       _tmp274_ = _tmp273_;
-                                       _tmp275_ = vala_gir_comment_new (NULL, _tmp274_);
-                                       _vala_comment_unref0 (comment);
-                                       comment = _tmp275_;
+                                       ValaSourceReference* _tmp277_ = NULL;
+                                       ValaSourceReference* _tmp278_ = NULL;
+                                       ValaGirComment* _tmp279_ = NULL;
+                                       ValaSymbol* _tmp280_ = NULL;
+                                       ValaGirComment* _tmp281_ = NULL;
                                        _tmp276_ = s;
-                                       _tmp277_ = comment;
-                                       vala_symbol_set_comment (_tmp276_, (ValaComment*) _tmp277_);
+                                       _tmp277_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp276_);
+                                       _tmp278_ = _tmp277_;
+                                       _tmp279_ = vala_gir_comment_new (NULL, _tmp278_);
+                                       _vala_comment_unref0 (comment);
+                                       comment = _tmp279_;
+                                       _tmp280_ = s;
+                                       _tmp281_ = comment;
+                                       vala_symbol_set_comment (_tmp280_, (ValaComment*) _tmp281_);
                                }
-                               _tmp279_ = param;
-                               _tmp280_ = vala_parameter_get_ellipsis (_tmp279_);
-                               _tmp281_ = _tmp280_;
-                               if (_tmp281_) {
-                                       _tmp278_ = "...";
+                               _tmp283_ = param;
+                               _tmp284_ = vala_parameter_get_ellipsis (_tmp283_);
+                               _tmp285_ = _tmp284_;
+                               if (_tmp285_) {
+                                       _tmp282_ = "...";
                                } else {
-                                       ValaParameter* _tmp282_ = NULL;
-                                       const gchar* _tmp283_ = NULL;
-                                       const gchar* _tmp284_ = NULL;
-                                       _tmp282_ = param;
-                                       _tmp283_ = vala_symbol_get_name ((ValaSymbol*) _tmp282_);
-                                       _tmp284_ = _tmp283_;
-                                       _tmp278_ = _tmp284_;
+                                       ValaParameter* _tmp286_ = NULL;
+                                       const gchar* _tmp287_ = NULL;
+                                       const gchar* _tmp288_ = NULL;
+                                       _tmp286_ = param;
+                                       _tmp287_ = vala_symbol_get_name ((ValaSymbol*) _tmp286_);
+                                       _tmp288_ = _tmp287_;
+                                       _tmp282_ = _tmp288_;
                                }
-                               _tmp285_ = comment;
-                               _tmp286_ = param_comment;
-                               vala_gir_comment_add_content_for_parameter (_tmp285_, _tmp278_, _tmp286_);
+                               _tmp289_ = comment;
+                               _tmp290_ = param_comment;
+                               vala_gir_comment_add_content_for_parameter (_tmp289_, _tmp282_, _tmp290_);
                        }
-                       _tmp287_ = param;
-                       _tmp288_ = array_length_idx;
-                       _tmp289_ = closure_idx;
-                       _tmp290_ = destroy_idx;
-                       _tmp291_ = scope;
-                       _tmp292_ = vala_gir_parser_parameter_info_new (_tmp287_, _tmp288_, _tmp289_, _tmp290_, g_strcmp0 (_tmp291_, "async") == 0);
-                       info = _tmp292_;
-                       _tmp294_ = s;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp294_, VALA_TYPE_METHOD)) {
-                               const gchar* _tmp295_ = NULL;
-                               _tmp295_ = scope;
-                               _tmp293_ = g_strcmp0 (_tmp295_, "async") == 0;
+                       _tmp291_ = param;
+                       _tmp292_ = array_length_idx;
+                       _tmp293_ = closure_idx;
+                       _tmp294_ = destroy_idx;
+                       _tmp295_ = scope;
+                       _tmp296_ = vala_gir_parser_parameter_info_new (_tmp291_, _tmp292_, _tmp293_, _tmp294_, g_strcmp0 (_tmp295_, "async") == 0);
+                       info = _tmp296_;
+                       _tmp298_ = s;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp298_, VALA_TYPE_METHOD)) {
+                               const gchar* _tmp299_ = NULL;
+                               _tmp299_ = scope;
+                               _tmp297_ = g_strcmp0 (_tmp299_, "async") == 0;
                        } else {
-                               _tmp293_ = FALSE;
+                               _tmp297_ = FALSE;
                        }
-                       if (_tmp293_) {
+                       if (_tmp297_) {
                                ValaUnresolvedType* unresolved_type = NULL;
-                               ValaParameter* _tmp296_ = NULL;
-                               ValaDataType* _tmp297_ = NULL;
-                               ValaDataType* _tmp298_ = NULL;
-                               ValaUnresolvedType* _tmp299_ = NULL;
-                               gboolean _tmp300_ = FALSE;
-                               ValaUnresolvedType* _tmp301_ = NULL;
-                               _tmp296_ = param;
-                               _tmp297_ = vala_variable_get_variable_type ((ValaVariable*) _tmp296_);
-                               _tmp298_ = _tmp297_;
-                               _tmp299_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp298_, VALA_TYPE_UNRESOLVED_TYPE) ? ((ValaUnresolvedType*) _tmp298_) : NULL);
-                               unresolved_type = _tmp299_;
-                               _tmp301_ = unresolved_type;
-                               if (_tmp301_ != NULL) {
-                                       ValaUnresolvedType* _tmp302_ = NULL;
-                                       ValaUnresolvedSymbol* _tmp303_ = NULL;
-                                       ValaUnresolvedSymbol* _tmp304_ = NULL;
-                                       const gchar* _tmp305_ = NULL;
-                                       const gchar* _tmp306_ = NULL;
-                                       _tmp302_ = unresolved_type;
-                                       _tmp303_ = vala_unresolved_type_get_unresolved_symbol (_tmp302_);
-                                       _tmp304_ = _tmp303_;
-                                       _tmp305_ = vala_symbol_get_name ((ValaSymbol*) _tmp304_);
-                                       _tmp306_ = _tmp305_;
-                                       _tmp300_ = g_strcmp0 (_tmp306_, "AsyncReadyCallback") == 0;
+                               ValaParameter* _tmp300_ = NULL;
+                               ValaDataType* _tmp301_ = NULL;
+                               ValaDataType* _tmp302_ = NULL;
+                               ValaUnresolvedType* _tmp303_ = NULL;
+                               gboolean _tmp304_ = FALSE;
+                               ValaUnresolvedType* _tmp305_ = NULL;
+                               _tmp300_ = param;
+                               _tmp301_ = vala_variable_get_variable_type ((ValaVariable*) _tmp300_);
+                               _tmp302_ = _tmp301_;
+                               _tmp303_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp302_, VALA_TYPE_UNRESOLVED_TYPE) ? ((ValaUnresolvedType*) _tmp302_) : NULL);
+                               unresolved_type = _tmp303_;
+                               _tmp305_ = unresolved_type;
+                               if (_tmp305_ != NULL) {
+                                       ValaUnresolvedType* _tmp306_ = NULL;
+                                       ValaUnresolvedSymbol* _tmp307_ = NULL;
+                                       ValaUnresolvedSymbol* _tmp308_ = NULL;
+                                       const gchar* _tmp309_ = NULL;
+                                       const gchar* _tmp310_ = NULL;
+                                       _tmp306_ = unresolved_type;
+                                       _tmp307_ = vala_unresolved_type_get_unresolved_symbol (_tmp306_);
+                                       _tmp308_ = _tmp307_;
+                                       _tmp309_ = vala_symbol_get_name ((ValaSymbol*) _tmp308_);
+                                       _tmp310_ = _tmp309_;
+                                       _tmp304_ = g_strcmp0 (_tmp310_, "AsyncReadyCallback") == 0;
                                } else {
-                                       _tmp300_ = FALSE;
+                                       _tmp304_ = FALSE;
                                }
-                               if (_tmp300_) {
-                                       ValaSymbol* _tmp307_ = NULL;
-                                       ValaGirParserParameterInfo* _tmp308_ = NULL;
-                                       _tmp307_ = s;
-                                       vala_method_set_coroutine (G_TYPE_CHECK_INSTANCE_CAST (_tmp307_, VALA_TYPE_METHOD, ValaMethod), TRUE);
-                                       _tmp308_ = info;
-                                       _tmp308_->keep = FALSE;
+                               if (_tmp304_) {
+                                       ValaSymbol* _tmp311_ = NULL;
+                                       ValaGirParserParameterInfo* _tmp312_ = NULL;
+                                       _tmp311_ = s;
+                                       vala_method_set_coroutine (G_TYPE_CHECK_INSTANCE_CAST (_tmp311_, VALA_TYPE_METHOD, ValaMethod), TRUE);
+                                       _tmp312_ = info;
+                                       _tmp312_->keep = FALSE;
                                }
                                _vala_code_node_unref0 (unresolved_type);
                        }
-                       _tmp309_ = parameters;
-                       _tmp310_ = info;
-                       vala_collection_add ((ValaCollection*) _tmp309_, _tmp310_);
+                       _tmp313_ = parameters;
+                       _tmp314_ = info;
+                       vala_collection_add ((ValaCollection*) _tmp313_, _tmp314_);
                        vala_gir_parser_pop_metadata (self);
                        _vala_gir_parser_parameter_info_unref0 (info);
                        _vala_code_node_unref0 (param);
@@ -10635,91 +10794,91 @@ static void vala_gir_parser_parse_function (ValaGirParser* self, const gchar* el
                }
                vala_gir_parser_end_element (self, "parameters");
        }
-       _tmp311_ = self->priv->current;
-       _tmp312_ = parameters;
-       _tmp313_ = _vala_iterable_ref0 ((ValaList*) _tmp312_);
-       _vala_iterable_unref0 (_tmp311_->parameters);
-       _tmp311_->parameters = _tmp313_;
+       _tmp315_ = self->priv->current;
+       _tmp316_ = parameters;
+       _tmp317_ = _vala_iterable_ref0 ((ValaList*) _tmp316_);
+       _vala_iterable_unref0 (_tmp315_->parameters);
+       _tmp315_->parameters = _tmp317_;
        {
                gint param_n = 0;
-               ValaArrayList* _tmp314_ = NULL;
-               gint _tmp315_ = 0;
-               gint _tmp316_ = 0;
-               _tmp314_ = parameters;
-               _tmp315_ = vala_collection_get_size ((ValaCollection*) _tmp314_);
-               _tmp316_ = _tmp315_;
-               param_n = _tmp316_ - 1;
+               ValaArrayList* _tmp318_ = NULL;
+               gint _tmp319_ = 0;
+               gint _tmp320_ = 0;
+               _tmp318_ = parameters;
+               _tmp319_ = vala_collection_get_size ((ValaCollection*) _tmp318_);
+               _tmp320_ = _tmp319_;
+               param_n = _tmp320_ - 1;
                {
-                       gboolean _tmp317_ = FALSE;
-                       _tmp317_ = TRUE;
+                       gboolean _tmp321_ = FALSE;
+                       _tmp321_ = TRUE;
                        while (TRUE) {
-                               gint _tmp319_ = 0;
+                               gint _tmp323_ = 0;
                                ValaGirParserParameterInfo* pi = NULL;
-                               ValaArrayList* _tmp320_ = NULL;
-                               gint _tmp321_ = 0;
-                               gpointer _tmp322_ = NULL;
-                               gboolean _tmp323_ = FALSE;
-                               ValaGirParserParameterInfo* _tmp324_ = NULL;
-                               ValaParameter* _tmp325_ = NULL;
-                               gboolean _tmp326_ = FALSE;
+                               ValaArrayList* _tmp324_ = NULL;
+                               gint _tmp325_ = 0;
+                               gpointer _tmp326_ = NULL;
                                gboolean _tmp327_ = FALSE;
-                               if (!_tmp317_) {
-                                       gint _tmp318_ = 0;
-                                       _tmp318_ = param_n;
-                                       param_n = _tmp318_ - 1;
+                               ValaGirParserParameterInfo* _tmp328_ = NULL;
+                               ValaParameter* _tmp329_ = NULL;
+                               gboolean _tmp330_ = FALSE;
+                               gboolean _tmp331_ = FALSE;
+                               if (!_tmp321_) {
+                                       gint _tmp322_ = 0;
+                                       _tmp322_ = param_n;
+                                       param_n = _tmp322_ - 1;
                                }
-                               _tmp317_ = FALSE;
-                               _tmp319_ = param_n;
-                               if (!(_tmp319_ >= 0)) {
+                               _tmp321_ = FALSE;
+                               _tmp323_ = param_n;
+                               if (!(_tmp323_ >= 0)) {
                                        break;
                                }
-                               _tmp320_ = parameters;
-                               _tmp321_ = param_n;
-                               _tmp322_ = vala_list_get ((ValaList*) _tmp320_, _tmp321_);
-                               pi = (ValaGirParserParameterInfo*) _tmp322_;
-                               _tmp324_ = pi;
-                               _tmp325_ = _tmp324_->param;
-                               _tmp326_ = vala_parameter_get_ellipsis (_tmp325_);
-                               _tmp327_ = _tmp326_;
-                               if (!_tmp327_) {
-                                       ValaGirParserParameterInfo* _tmp328_ = NULL;
-                                       ValaParameter* _tmp329_ = NULL;
-                                       ValaExpression* _tmp330_ = NULL;
-                                       ValaExpression* _tmp331_ = NULL;
-                                       _tmp328_ = pi;
-                                       _tmp329_ = _tmp328_->param;
-                                       _tmp330_ = vala_variable_get_initializer ((ValaVariable*) _tmp329_);
-                                       _tmp331_ = _tmp330_;
-                                       _tmp323_ = _tmp331_ == NULL;
-                               } else {
-                                       _tmp323_ = FALSE;
-                               }
-                               if (_tmp323_) {
-                                       gchar* type_string = NULL;
+                               _tmp324_ = parameters;
+                               _tmp325_ = param_n;
+                               _tmp326_ = vala_list_get ((ValaList*) _tmp324_, _tmp325_);
+                               pi = (ValaGirParserParameterInfo*) _tmp326_;
+                               _tmp328_ = pi;
+                               _tmp329_ = _tmp328_->param;
+                               _tmp330_ = vala_parameter_get_ellipsis (_tmp329_);
+                               _tmp331_ = _tmp330_;
+                               if (!_tmp331_) {
                                        ValaGirParserParameterInfo* _tmp332_ = NULL;
                                        ValaParameter* _tmp333_ = NULL;
-                                       ValaDataType* _tmp334_ = NULL;
-                                       ValaDataType* _tmp335_ = NULL;
-                                       gchar* _tmp336_ = NULL;
-                                       const gchar* _tmp337_ = NULL;
+                                       ValaExpression* _tmp334_ = NULL;
+                                       ValaExpression* _tmp335_ = NULL;
                                        _tmp332_ = pi;
                                        _tmp333_ = _tmp332_->param;
-                                       _tmp334_ = vala_variable_get_variable_type ((ValaVariable*) _tmp333_);
+                                       _tmp334_ = vala_variable_get_initializer ((ValaVariable*) _tmp333_);
                                        _tmp335_ = _tmp334_;
-                                       _tmp336_ = vala_code_node_to_string ((ValaCodeNode*) _tmp335_);
-                                       type_string = _tmp336_;
-                                       _tmp337_ = type_string;
-                                       if (g_strcmp0 (_tmp337_, "Gio.Cancellable?") == 0) {
-                                               ValaGirParserParameterInfo* _tmp338_ = NULL;
-                                               ValaParameter* _tmp339_ = NULL;
-                                               ValaNullLiteral* _tmp340_ = NULL;
-                                               ValaNullLiteral* _tmp341_ = NULL;
-                                               _tmp338_ = pi;
-                                               _tmp339_ = _tmp338_->param;
-                                               _tmp340_ = vala_null_literal_new (NULL);
-                                               _tmp341_ = _tmp340_;
-                                               vala_variable_set_initializer ((ValaVariable*) _tmp339_, (ValaExpression*) _tmp341_);
-                                               _vala_code_node_unref0 (_tmp341_);
+                                       _tmp327_ = _tmp335_ == NULL;
+                               } else {
+                                       _tmp327_ = FALSE;
+                               }
+                               if (_tmp327_) {
+                                       gchar* type_string = NULL;
+                                       ValaGirParserParameterInfo* _tmp336_ = NULL;
+                                       ValaParameter* _tmp337_ = NULL;
+                                       ValaDataType* _tmp338_ = NULL;
+                                       ValaDataType* _tmp339_ = NULL;
+                                       gchar* _tmp340_ = NULL;
+                                       const gchar* _tmp341_ = NULL;
+                                       _tmp336_ = pi;
+                                       _tmp337_ = _tmp336_->param;
+                                       _tmp338_ = vala_variable_get_variable_type ((ValaVariable*) _tmp337_);
+                                       _tmp339_ = _tmp338_;
+                                       _tmp340_ = vala_code_node_to_string ((ValaCodeNode*) _tmp339_);
+                                       type_string = _tmp340_;
+                                       _tmp341_ = type_string;
+                                       if (g_strcmp0 (_tmp341_, "Gio.Cancellable?") == 0) {
+                                               ValaGirParserParameterInfo* _tmp342_ = NULL;
+                                               ValaParameter* _tmp343_ = NULL;
+                                               ValaNullLiteral* _tmp344_ = NULL;
+                                               ValaNullLiteral* _tmp345_ = NULL;
+                                               _tmp342_ = pi;
+                                               _tmp343_ = _tmp342_->param;
+                                               _tmp344_ = vala_null_literal_new (NULL);
+                                               _tmp345_ = _tmp344_;
+                                               vala_variable_set_initializer ((ValaVariable*) _tmp343_, (ValaExpression*) _tmp345_);
+                                               _vala_code_node_unref0 (_tmp345_);
                                        } else {
                                                _g_free0 (type_string);
                                                _vala_gir_parser_parameter_info_unref0 (pi);
@@ -10731,48 +10890,48 @@ static void vala_gir_parser_parse_function (ValaGirParser* self, const gchar* el
                        }
                }
        }
-       _tmp343_ = element_name;
-       if (g_strcmp0 (_tmp343_, "function") == 0) {
-               const gchar* _tmp344_ = NULL;
-               _tmp344_ = symbol_type;
-               _tmp342_ = g_strcmp0 (_tmp344_, "method") == 0;
+       _tmp347_ = element_name;
+       if (g_strcmp0 (_tmp347_, "function") == 0) {
+               const gchar* _tmp348_ = NULL;
+               _tmp348_ = symbol_type;
+               _tmp346_ = g_strcmp0 (_tmp348_, "method") == 0;
        } else {
-               _tmp342_ = FALSE;
-       }
-       if (_tmp342_) {
-               ValaGirParserMetadata* _tmp345_ = NULL;
-               gboolean _tmp346_ = FALSE;
-               _tmp345_ = self->priv->metadata;
-               _tmp346_ = vala_gir_parser_metadata_has_argument (_tmp345_, VALA_GIR_PARSER_ARGUMENT_TYPE_INSTANCE_IDX);
-               if (_tmp346_) {
+               _tmp346_ = FALSE;
+       }
+       if (_tmp346_) {
+               ValaGirParserMetadata* _tmp349_ = NULL;
+               gboolean _tmp350_ = FALSE;
+               _tmp349_ = self->priv->metadata;
+               _tmp350_ = vala_gir_parser_metadata_has_argument (_tmp349_, VALA_GIR_PARSER_ARGUMENT_TYPE_INSTANCE_IDX);
+               if (_tmp350_) {
                        gint instance_pos = 0;
-                       ValaGirParserMetadata* _tmp347_ = NULL;
-                       gint _tmp348_ = 0;
-                       ValaSymbol* _tmp349_ = NULL;
-                       gint _tmp350_ = 0;
-                       ValaArrayList* _tmp351_ = NULL;
+                       ValaGirParserMetadata* _tmp351_ = NULL;
                        gint _tmp352_ = 0;
-                       _tmp347_ = self->priv->metadata;
-                       _tmp348_ = vala_gir_parser_metadata_get_integer (_tmp347_, VALA_GIR_PARSER_ARGUMENT_TYPE_INSTANCE_IDX);
-                       instance_pos = _tmp348_;
-                       _tmp349_ = s;
-                       _tmp350_ = instance_pos;
-                       vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp349_, "CCode", "instance_pos", _tmp350_ + 0.5, NULL);
-                       _tmp351_ = parameters;
-                       _tmp352_ = instance_pos;
-                       vala_list_remove_at ((ValaList*) _tmp351_, _tmp352_);
+                       ValaSymbol* _tmp353_ = NULL;
+                       gint _tmp354_ = 0;
+                       ValaArrayList* _tmp355_ = NULL;
+                       gint _tmp356_ = 0;
+                       _tmp351_ = self->priv->metadata;
+                       _tmp352_ = vala_gir_parser_metadata_get_integer (_tmp351_, VALA_GIR_PARSER_ARGUMENT_TYPE_INSTANCE_IDX);
+                       instance_pos = _tmp352_;
+                       _tmp353_ = s;
+                       _tmp354_ = instance_pos;
+                       vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp353_, "CCode", "instance_pos", _tmp354_ + 0.5, NULL);
+                       _tmp355_ = parameters;
+                       _tmp356_ = instance_pos;
+                       vala_list_remove_at ((ValaList*) _tmp355_, _tmp356_);
                } else {
-                       ValaSourceReference* _tmp353_ = NULL;
-                       ValaSourceReference* _tmp354_ = NULL;
-                       _tmp353_ = vala_gir_parser_get_current_src (self);
-                       _tmp354_ = _tmp353_;
-                       vala_report_error (_tmp354_, "instance_idx required when converting function to method");
-                       _vala_source_reference_unref0 (_tmp354_);
+                       ValaSourceReference* _tmp357_ = NULL;
+                       ValaSourceReference* _tmp358_ = NULL;
+                       _tmp357_ = vala_gir_parser_get_current_src (self);
+                       _tmp358_ = _tmp357_;
+                       vala_report_error (_tmp358_, "instance_idx required when converting function to method");
+                       _vala_source_reference_unref0 (_tmp358_);
                }
        }
        vala_gir_parser_pop_node (self);
-       _tmp355_ = element_name;
-       vala_gir_parser_end_element (self, _tmp355_);
+       _tmp359_ = element_name;
+       vala_gir_parser_end_element (self, _tmp359_);
        _vala_iterable_unref0 (parameters);
        _vala_code_node_unref0 (s);
        _g_free0 (return_ctype);
@@ -10822,9 +10981,9 @@ static void vala_gir_parser_parse_boxed (ValaGirParser* self, const gchar* eleme
        ValaGirComment* _tmp42_ = NULL;
        ValaGirParserNode* ref_method = NULL;
        ValaGirParserNode* unref_method = NULL;
-       gboolean _tmp77_ = FALSE;
-       ValaGirParserNode* _tmp78_ = NULL;
-       const gchar* _tmp91_ = NULL;
+       gboolean _tmp87_ = FALSE;
+       ValaGirParserNode* _tmp88_ = NULL;
+       const gchar* _tmp101_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (element_name != NULL);
        _tmp0_ = element_name;
@@ -10976,72 +11135,108 @@ static void vala_gir_parser_parse_boxed (ValaGirParser* self, const gchar* eleme
                                        gchar* cname = NULL;
                                        ValaGirParserNode* _tmp54_ = NULL;
                                        gchar* _tmp55_ = NULL;
-                                       const gchar* _tmp56_ = NULL;
-                                       gboolean _tmp57_ = FALSE;
+                                       gboolean _tmp56_ = FALSE;
+                                       const gchar* _tmp57_ = NULL;
+                                       gboolean _tmp58_ = FALSE;
                                        vala_gir_parser_parse_method (self, "method");
                                        _tmp54_ = self->priv->old_current;
                                        _tmp55_ = vala_gir_parser_node_get_cname (_tmp54_);
                                        cname = _tmp55_;
-                                       _tmp56_ = cname;
-                                       _tmp57_ = g_str_has_suffix (_tmp56_, "_ref");
-                                       if (_tmp57_) {
-                                               ValaGirParserNode* _tmp58_ = NULL;
-                                               ValaGirParserNode* _tmp59_ = NULL;
-                                               _tmp58_ = self->priv->old_current;
-                                               _tmp59_ = _vala_gir_parser_node_ref0 (_tmp58_);
+                                       _tmp57_ = cname;
+                                       _tmp58_ = g_str_has_suffix (_tmp57_, "_ref");
+                                       if (_tmp58_) {
+                                               gboolean _tmp59_ = FALSE;
+                                               ValaGirParserNode* _tmp60_ = NULL;
+                                               _tmp60_ = ref_method;
+                                               if (_tmp60_ == NULL) {
+                                                       _tmp59_ = TRUE;
+                                               } else {
+                                                       ValaGirParserNode* _tmp61_ = NULL;
+                                                       const gchar* _tmp62_ = NULL;
+                                                       _tmp61_ = self->priv->old_current;
+                                                       _tmp62_ = _tmp61_->name;
+                                                       _tmp59_ = g_strcmp0 (_tmp62_, "ref") == 0;
+                                               }
+                                               _tmp56_ = _tmp59_;
+                                       } else {
+                                               _tmp56_ = FALSE;
+                                       }
+                                       if (_tmp56_) {
+                                               ValaGirParserNode* _tmp63_ = NULL;
+                                               ValaGirParserNode* _tmp64_ = NULL;
+                                               _tmp63_ = self->priv->old_current;
+                                               _tmp64_ = _vala_gir_parser_node_ref0 (_tmp63_);
                                                _vala_gir_parser_node_unref0 (ref_method);
-                                               ref_method = _tmp59_;
+                                               ref_method = _tmp64_;
                                        } else {
-                                               const gchar* _tmp60_ = NULL;
-                                               gboolean _tmp61_ = FALSE;
-                                               _tmp60_ = cname;
-                                               _tmp61_ = g_str_has_suffix (_tmp60_, "_unref");
-                                               if (_tmp61_) {
-                                                       ValaGirParserNode* _tmp62_ = NULL;
-                                                       ValaGirParserNode* _tmp63_ = NULL;
-                                                       _tmp62_ = self->priv->old_current;
-                                                       _tmp63_ = _vala_gir_parser_node_ref0 (_tmp62_);
+                                               gboolean _tmp65_ = FALSE;
+                                               const gchar* _tmp66_ = NULL;
+                                               gboolean _tmp67_ = FALSE;
+                                               _tmp66_ = cname;
+                                               _tmp67_ = g_str_has_suffix (_tmp66_, "_unref");
+                                               if (_tmp67_) {
+                                                       gboolean _tmp68_ = FALSE;
+                                                       ValaGirParserNode* _tmp69_ = NULL;
+                                                       _tmp69_ = unref_method;
+                                                       if (_tmp69_ == NULL) {
+                                                               _tmp68_ = TRUE;
+                                                       } else {
+                                                               ValaGirParserNode* _tmp70_ = NULL;
+                                                               const gchar* _tmp71_ = NULL;
+                                                               _tmp70_ = self->priv->old_current;
+                                                               _tmp71_ = _tmp70_->name;
+                                                               _tmp68_ = g_strcmp0 (_tmp71_, "unref") == 0;
+                                                       }
+                                                       _tmp65_ = _tmp68_;
+                                               } else {
+                                                       _tmp65_ = FALSE;
+                                               }
+                                               if (_tmp65_) {
+                                                       ValaGirParserNode* _tmp72_ = NULL;
+                                                       ValaGirParserNode* _tmp73_ = NULL;
+                                                       _tmp72_ = self->priv->old_current;
+                                                       _tmp73_ = _vala_gir_parser_node_ref0 (_tmp72_);
                                                        _vala_gir_parser_node_unref0 (unref_method);
-                                                       unref_method = _tmp63_;
+                                                       unref_method = _tmp73_;
                                                }
                                        }
                                        _g_free0 (cname);
                                } else {
-                                       ValaMarkupReader* _tmp64_ = NULL;
-                                       const gchar* _tmp65_ = NULL;
-                                       const gchar* _tmp66_ = NULL;
-                                       _tmp64_ = self->priv->reader;
-                                       _tmp65_ = vala_markup_reader_get_name (_tmp64_);
-                                       _tmp66_ = _tmp65_;
-                                       if (g_strcmp0 (_tmp66_, "function") == 0) {
+                                       ValaMarkupReader* _tmp74_ = NULL;
+                                       const gchar* _tmp75_ = NULL;
+                                       const gchar* _tmp76_ = NULL;
+                                       _tmp74_ = self->priv->reader;
+                                       _tmp75_ = vala_markup_reader_get_name (_tmp74_);
+                                       _tmp76_ = _tmp75_;
+                                       if (g_strcmp0 (_tmp76_, "function") == 0) {
                                                vala_gir_parser_skip_element (self);
                                        } else {
-                                               ValaMarkupReader* _tmp67_ = NULL;
-                                               const gchar* _tmp68_ = NULL;
-                                               const gchar* _tmp69_ = NULL;
-                                               _tmp67_ = self->priv->reader;
-                                               _tmp68_ = vala_markup_reader_get_name (_tmp67_);
-                                               _tmp69_ = _tmp68_;
-                                               if (g_strcmp0 (_tmp69_, "union") == 0) {
+                                               ValaMarkupReader* _tmp77_ = NULL;
+                                               const gchar* _tmp78_ = NULL;
+                                               const gchar* _tmp79_ = NULL;
+                                               _tmp77_ = self->priv->reader;
+                                               _tmp78_ = vala_markup_reader_get_name (_tmp77_);
+                                               _tmp79_ = _tmp78_;
+                                               if (g_strcmp0 (_tmp79_, "union") == 0) {
                                                        vala_gir_parser_parse_union (self);
                                                } else {
-                                                       ValaSourceReference* _tmp70_ = NULL;
-                                                       ValaSourceReference* _tmp71_ = NULL;
-                                                       ValaMarkupReader* _tmp72_ = NULL;
-                                                       const gchar* _tmp73_ = NULL;
-                                                       const gchar* _tmp74_ = NULL;
-                                                       gchar* _tmp75_ = NULL;
-                                                       gchar* _tmp76_ = NULL;
-                                                       _tmp70_ = vala_gir_parser_get_current_src (self);
-                                                       _tmp71_ = _tmp70_;
-                                                       _tmp72_ = self->priv->reader;
-                                                       _tmp73_ = vala_markup_reader_get_name (_tmp72_);
-                                                       _tmp74_ = _tmp73_;
-                                                       _tmp75_ = g_strdup_printf ("unknown child element `%s' in `class'", _tmp74_);
-                                                       _tmp76_ = _tmp75_;
-                                                       vala_report_error (_tmp71_, _tmp76_);
-                                                       _g_free0 (_tmp76_);
-                                                       _vala_source_reference_unref0 (_tmp71_);
+                                                       ValaSourceReference* _tmp80_ = NULL;
+                                                       ValaSourceReference* _tmp81_ = NULL;
+                                                       ValaMarkupReader* _tmp82_ = NULL;
+                                                       const gchar* _tmp83_ = NULL;
+                                                       const gchar* _tmp84_ = NULL;
+                                                       gchar* _tmp85_ = NULL;
+                                                       gchar* _tmp86_ = NULL;
+                                                       _tmp80_ = vala_gir_parser_get_current_src (self);
+                                                       _tmp81_ = _tmp80_;
+                                                       _tmp82_ = self->priv->reader;
+                                                       _tmp83_ = vala_markup_reader_get_name (_tmp82_);
+                                                       _tmp84_ = _tmp83_;
+                                                       _tmp85_ = g_strdup_printf ("unknown child element `%s' in `class'", _tmp84_);
+                                                       _tmp86_ = _tmp85_;
+                                                       vala_report_error (_tmp81_, _tmp86_);
+                                                       _g_free0 (_tmp86_);
+                                                       _vala_source_reference_unref0 (_tmp81_);
                                                        vala_gir_parser_skip_element (self);
                                                }
                                        }
@@ -11050,50 +11245,50 @@ static void vala_gir_parser_parse_boxed (ValaGirParser* self, const gchar* eleme
                }
                vala_gir_parser_pop_metadata (self);
        }
-       _tmp78_ = ref_method;
-       if (_tmp78_ != NULL) {
-               ValaGirParserNode* _tmp79_ = NULL;
-               _tmp79_ = unref_method;
-               _tmp77_ = _tmp79_ != NULL;
+       _tmp88_ = ref_method;
+       if (_tmp88_ != NULL) {
+               ValaGirParserNode* _tmp89_ = NULL;
+               _tmp89_ = unref_method;
+               _tmp87_ = _tmp89_ != NULL;
        } else {
-               _tmp77_ = FALSE;
-       }
-       if (_tmp77_) {
-               ValaClass* _tmp80_ = NULL;
-               ValaGirParserNode* _tmp81_ = NULL;
-               gchar* _tmp82_ = NULL;
-               gchar* _tmp83_ = NULL;
-               ValaClass* _tmp84_ = NULL;
-               ValaGirParserNode* _tmp85_ = NULL;
-               gchar* _tmp86_ = NULL;
-               gchar* _tmp87_ = NULL;
-               _tmp80_ = cl;
-               _tmp81_ = ref_method;
-               _tmp82_ = vala_gir_parser_node_get_cname (_tmp81_);
-               _tmp83_ = _tmp82_;
-               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp80_, "CCode", "ref_function", _tmp83_, NULL);
-               _g_free0 (_tmp83_);
-               _tmp84_ = cl;
-               _tmp85_ = unref_method;
-               _tmp86_ = vala_gir_parser_node_get_cname (_tmp85_);
-               _tmp87_ = _tmp86_;
-               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp84_, "CCode", "unref_function", _tmp87_, NULL);
-               _g_free0 (_tmp87_);
+               _tmp87_ = FALSE;
+       }
+       if (_tmp87_) {
+               ValaClass* _tmp90_ = NULL;
+               ValaGirParserNode* _tmp91_ = NULL;
+               gchar* _tmp92_ = NULL;
+               gchar* _tmp93_ = NULL;
+               ValaClass* _tmp94_ = NULL;
+               ValaGirParserNode* _tmp95_ = NULL;
+               gchar* _tmp96_ = NULL;
+               gchar* _tmp97_ = NULL;
+               _tmp90_ = cl;
+               _tmp91_ = ref_method;
+               _tmp92_ = vala_gir_parser_node_get_cname (_tmp91_);
+               _tmp93_ = _tmp92_;
+               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp90_, "CCode", "ref_function", _tmp93_, NULL);
+               _g_free0 (_tmp93_);
+               _tmp94_ = cl;
+               _tmp95_ = unref_method;
+               _tmp96_ = vala_gir_parser_node_get_cname (_tmp95_);
+               _tmp97_ = _tmp96_;
+               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp94_, "CCode", "unref_function", _tmp97_, NULL);
+               _g_free0 (_tmp97_);
        } else {
-               gboolean _tmp88_ = FALSE;
-               _tmp88_ = require_copy_free;
-               if (_tmp88_) {
-                       ValaClass* _tmp89_ = NULL;
-                       ValaClass* _tmp90_ = NULL;
-                       _tmp89_ = cl;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp89_, "CCode", "copy_function", "g_boxed_copy", NULL);
-                       _tmp90_ = cl;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp90_, "CCode", "free_function", "g_boxed_free", NULL);
+               gboolean _tmp98_ = FALSE;
+               _tmp98_ = require_copy_free;
+               if (_tmp98_) {
+                       ValaClass* _tmp99_ = NULL;
+                       ValaClass* _tmp100_ = NULL;
+                       _tmp99_ = cl;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp99_, "CCode", "copy_function", "g_boxed_copy", NULL);
+                       _tmp100_ = cl;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp100_, "CCode", "free_function", "g_boxed_free", NULL);
                }
        }
        vala_gir_parser_pop_node (self);
-       _tmp91_ = element_name;
-       vala_gir_parser_end_element (self, _tmp91_);
+       _tmp101_ = element_name;
+       vala_gir_parser_end_element (self, _tmp101_);
        _vala_gir_parser_node_unref0 (unref_method);
        _vala_gir_parser_node_unref0 (ref_method);
        _vala_code_node_unref0 (cl);
@@ -12226,209 +12421,257 @@ static void vala_gir_parser_process_alias (ValaGirParser* self, ValaGirParserNod
                } else {
                        ValaSymbol* _tmp84_ = NULL;
                        _tmp84_ = type_sym;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp84_, VALA_TYPE_DELEGATE)) {
-                               ValaDelegate* orig = NULL;
-                               ValaSymbol* _tmp85_ = NULL;
-                               ValaDelegate* _tmp86_ = NULL;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp84_, VALA_TYPE_INTERFACE)) {
+                               ValaInterface* iface = NULL;
+                               ValaGirParserNode* _tmp85_ = NULL;
+                               const gchar* _tmp86_ = NULL;
                                ValaGirParserNode* _tmp87_ = NULL;
-                               ValaDelegate* deleg = NULL;
-                               ValaGirParserNode* _tmp92_ = NULL;
-                               const gchar* _tmp93_ = NULL;
-                               ValaDelegate* _tmp94_ = NULL;
-                               ValaDataType* _tmp95_ = NULL;
-                               ValaDataType* _tmp96_ = NULL;
-                               ValaDataType* _tmp97_ = NULL;
-                               ValaDataType* _tmp98_ = NULL;
-                               ValaGirParserNode* _tmp99_ = NULL;
-                               ValaSourceReference* _tmp100_ = NULL;
-                               ValaDelegate* _tmp101_ = NULL;
-                               ValaDelegate* _tmp102_ = NULL;
-                               ValaDelegate* _tmp103_ = NULL;
-                               ValaDelegate* _tmp104_ = NULL;
-                               ValaSymbolAccessibility _tmp105_ = 0;
-                               ValaSymbolAccessibility _tmp106_ = 0;
-                               ValaDelegate* _tmp107_ = NULL;
-                               ValaDelegate* _tmp108_ = NULL;
-                               gboolean _tmp109_ = FALSE;
-                               gboolean _tmp110_ = FALSE;
-                               ValaDelegate* _tmp141_ = NULL;
-                               GList* _tmp142_ = NULL;
-                               ValaDelegate* _tmp147_ = NULL;
-                               ValaGirParserNode* _tmp148_ = NULL;
-                               ValaDelegate* _tmp149_ = NULL;
-                               ValaSymbol* _tmp150_ = NULL;
-                               _tmp85_ = type_sym;
-                               _tmp86_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp85_, VALA_TYPE_DELEGATE, ValaDelegate));
-                               orig = _tmp86_;
-                               _tmp87_ = base_node;
-                               if (_tmp87_ != NULL) {
-                                       ValaGirParserNode* _tmp88_ = NULL;
-                                       ValaGirParserNode* _tmp89_ = NULL;
-                                       ValaSymbol* _tmp90_ = NULL;
-                                       ValaDelegate* _tmp91_ = NULL;
-                                       _tmp88_ = base_node;
-                                       vala_gir_parser_node_process (_tmp88_, self);
-                                       _tmp89_ = base_node;
-                                       _tmp90_ = _tmp89_->symbol;
-                                       _tmp91_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp90_, VALA_TYPE_DELEGATE, ValaDelegate));
-                                       _vala_code_node_unref0 (orig);
-                                       orig = _tmp91_;
+                               ValaSourceReference* _tmp88_ = NULL;
+                               ValaInterface* _tmp89_ = NULL;
+                               ValaInterface* _tmp90_ = NULL;
+                               ValaDataType* _tmp91_ = NULL;
+                               ValaInterface* _tmp94_ = NULL;
+                               ValaGirParserNode* _tmp95_ = NULL;
+                               ValaGirComment* _tmp96_ = NULL;
+                               ValaInterface* _tmp97_ = NULL;
+                               ValaGirParserNode* _tmp98_ = NULL;
+                               ValaInterface* _tmp99_ = NULL;
+                               ValaSymbol* _tmp100_ = NULL;
+                               _tmp85_ = alias;
+                               _tmp86_ = _tmp85_->name;
+                               _tmp87_ = alias;
+                               _tmp88_ = _tmp87_->source_reference;
+                               _tmp89_ = vala_interface_new (_tmp86_, _tmp88_, NULL);
+                               iface = _tmp89_;
+                               _tmp90_ = iface;
+                               vala_symbol_set_access ((ValaSymbol*) _tmp90_, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
+                               _tmp91_ = base_type;
+                               if (_tmp91_ != NULL) {
+                                       ValaInterface* _tmp92_ = NULL;
+                                       ValaDataType* _tmp93_ = NULL;
+                                       _tmp92_ = iface;
+                                       _tmp93_ = base_type;
+                                       vala_interface_add_prerequisite (_tmp92_, _tmp93_);
                                }
-                               _tmp92_ = alias;
-                               _tmp93_ = _tmp92_->name;
-                               _tmp94_ = orig;
-                               _tmp95_ = vala_delegate_get_return_type (_tmp94_);
-                               _tmp96_ = _tmp95_;
-                               _tmp97_ = vala_data_type_copy (_tmp96_);
-                               _tmp98_ = _tmp97_;
-                               _tmp99_ = alias;
-                               _tmp100_ = _tmp99_->source_reference;
-                               _tmp101_ = vala_delegate_new (_tmp93_, _tmp98_, _tmp100_, NULL);
-                               _tmp102_ = _tmp101_;
-                               _vala_code_node_unref0 (_tmp98_);
-                               deleg = _tmp102_;
-                               _tmp103_ = deleg;
-                               _tmp104_ = orig;
-                               _tmp105_ = vala_symbol_get_access ((ValaSymbol*) _tmp104_);
-                               _tmp106_ = _tmp105_;
-                               vala_symbol_set_access ((ValaSymbol*) _tmp103_, _tmp106_);
-                               _tmp107_ = deleg;
-                               _tmp108_ = orig;
-                               _tmp109_ = vala_delegate_get_has_target (_tmp108_);
-                               _tmp110_ = _tmp109_;
-                               vala_delegate_set_has_target (_tmp107_, _tmp110_);
-                               {
-                                       ValaList* _param_list = NULL;
+                               _tmp94_ = iface;
+                               _tmp95_ = alias;
+                               _tmp96_ = _tmp95_->comment;
+                               vala_symbol_set_comment ((ValaSymbol*) _tmp94_, (ValaComment*) _tmp96_);
+                               _tmp97_ = iface;
+                               vala_symbol_set_external ((ValaSymbol*) _tmp97_, TRUE);
+                               _tmp98_ = alias;
+                               _tmp99_ = iface;
+                               _tmp100_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp99_);
+                               _vala_code_node_unref0 (_tmp98_->symbol);
+                               _tmp98_->symbol = _tmp100_;
+                               _vala_code_node_unref0 (iface);
+                       } else {
+                               ValaSymbol* _tmp101_ = NULL;
+                               _tmp101_ = type_sym;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp101_, VALA_TYPE_DELEGATE)) {
+                                       ValaDelegate* orig = NULL;
+                                       ValaSymbol* _tmp102_ = NULL;
+                                       ValaDelegate* _tmp103_ = NULL;
+                                       ValaGirParserNode* _tmp104_ = NULL;
+                                       ValaDelegate* deleg = NULL;
+                                       ValaGirParserNode* _tmp109_ = NULL;
+                                       const gchar* _tmp110_ = NULL;
                                        ValaDelegate* _tmp111_ = NULL;
-                                       ValaList* _tmp112_ = NULL;
-                                       gint _param_size = 0;
-                                       ValaList* _tmp113_ = NULL;
-                                       gint _tmp114_ = 0;
-                                       gint _tmp115_ = 0;
-                                       gint _param_index = 0;
+                                       ValaDataType* _tmp112_ = NULL;
+                                       ValaDataType* _tmp113_ = NULL;
+                                       ValaDataType* _tmp114_ = NULL;
+                                       ValaDataType* _tmp115_ = NULL;
+                                       ValaGirParserNode* _tmp116_ = NULL;
+                                       ValaSourceReference* _tmp117_ = NULL;
+                                       ValaDelegate* _tmp118_ = NULL;
+                                       ValaDelegate* _tmp119_ = NULL;
+                                       ValaDelegate* _tmp120_ = NULL;
+                                       ValaDelegate* _tmp121_ = NULL;
+                                       ValaSymbolAccessibility _tmp122_ = 0;
+                                       ValaSymbolAccessibility _tmp123_ = 0;
+                                       ValaDelegate* _tmp124_ = NULL;
+                                       ValaDelegate* _tmp125_ = NULL;
+                                       gboolean _tmp126_ = FALSE;
+                                       gboolean _tmp127_ = FALSE;
+                                       ValaDelegate* _tmp158_ = NULL;
+                                       GList* _tmp159_ = NULL;
+                                       ValaDelegate* _tmp164_ = NULL;
+                                       ValaGirParserNode* _tmp165_ = NULL;
+                                       ValaDelegate* _tmp166_ = NULL;
+                                       ValaSymbol* _tmp167_ = NULL;
+                                       _tmp102_ = type_sym;
+                                       _tmp103_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp102_, VALA_TYPE_DELEGATE, ValaDelegate));
+                                       orig = _tmp103_;
+                                       _tmp104_ = base_node;
+                                       if (_tmp104_ != NULL) {
+                                               ValaGirParserNode* _tmp105_ = NULL;
+                                               ValaGirParserNode* _tmp106_ = NULL;
+                                               ValaSymbol* _tmp107_ = NULL;
+                                               ValaDelegate* _tmp108_ = NULL;
+                                               _tmp105_ = base_node;
+                                               vala_gir_parser_node_process (_tmp105_, self);
+                                               _tmp106_ = base_node;
+                                               _tmp107_ = _tmp106_->symbol;
+                                               _tmp108_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp107_, VALA_TYPE_DELEGATE, ValaDelegate));
+                                               _vala_code_node_unref0 (orig);
+                                               orig = _tmp108_;
+                                       }
+                                       _tmp109_ = alias;
+                                       _tmp110_ = _tmp109_->name;
                                        _tmp111_ = orig;
-                                       _tmp112_ = vala_delegate_get_parameters (_tmp111_);
-                                       _param_list = _tmp112_;
-                                       _tmp113_ = _param_list;
-                                       _tmp114_ = vala_collection_get_size ((ValaCollection*) _tmp113_);
+                                       _tmp112_ = vala_delegate_get_return_type (_tmp111_);
+                                       _tmp113_ = _tmp112_;
+                                       _tmp114_ = vala_data_type_copy (_tmp113_);
                                        _tmp115_ = _tmp114_;
-                                       _param_size = _tmp115_;
-                                       _param_index = -1;
-                                       while (TRUE) {
-                                               gint _tmp116_ = 0;
-                                               gint _tmp117_ = 0;
-                                               gint _tmp118_ = 0;
-                                               ValaParameter* param = NULL;
-                                               ValaList* _tmp119_ = NULL;
-                                               gint _tmp120_ = 0;
-                                               gpointer _tmp121_ = NULL;
-                                               ValaDelegate* _tmp122_ = NULL;
-                                               ValaParameter* _tmp123_ = NULL;
-                                               ValaParameter* _tmp124_ = NULL;
-                                               ValaParameter* _tmp125_ = NULL;
-                                               _tmp116_ = _param_index;
-                                               _param_index = _tmp116_ + 1;
-                                               _tmp117_ = _param_index;
-                                               _tmp118_ = _param_size;
-                                               if (!(_tmp117_ < _tmp118_)) {
-                                                       break;
-                                               }
-                                               _tmp119_ = _param_list;
-                                               _tmp120_ = _param_index;
-                                               _tmp121_ = vala_list_get (_tmp119_, _tmp120_);
-                                               param = (ValaParameter*) _tmp121_;
-                                               _tmp122_ = deleg;
-                                               _tmp123_ = param;
-                                               _tmp124_ = vala_parameter_copy (_tmp123_);
-                                               _tmp125_ = _tmp124_;
-                                               vala_delegate_add_parameter (_tmp122_, _tmp125_);
-                                               _vala_code_node_unref0 (_tmp125_);
-                                               _vala_code_node_unref0 (param);
-                                       }
-                                       _vala_iterable_unref0 (_param_list);
-                               }
-                               {
-                                       ValaList* _error_type_list = NULL;
-                                       ValaDelegate* _tmp126_ = NULL;
-                                       ValaList* _tmp127_ = NULL;
-                                       gint _error_type_size = 0;
-                                       ValaList* _tmp128_ = NULL;
-                                       gint _tmp129_ = 0;
-                                       gint _tmp130_ = 0;
-                                       gint _error_type_index = 0;
-                                       _tmp126_ = orig;
-                                       _tmp127_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp126_);
-                                       _error_type_list = _tmp127_;
-                                       _tmp128_ = _error_type_list;
-                                       _tmp129_ = vala_collection_get_size ((ValaCollection*) _tmp128_);
-                                       _tmp130_ = _tmp129_;
-                                       _error_type_size = _tmp130_;
-                                       _error_type_index = -1;
-                                       while (TRUE) {
+                                       _tmp116_ = alias;
+                                       _tmp117_ = _tmp116_->source_reference;
+                                       _tmp118_ = vala_delegate_new (_tmp110_, _tmp115_, _tmp117_, NULL);
+                                       _tmp119_ = _tmp118_;
+                                       _vala_code_node_unref0 (_tmp115_);
+                                       deleg = _tmp119_;
+                                       _tmp120_ = deleg;
+                                       _tmp121_ = orig;
+                                       _tmp122_ = vala_symbol_get_access ((ValaSymbol*) _tmp121_);
+                                       _tmp123_ = _tmp122_;
+                                       vala_symbol_set_access ((ValaSymbol*) _tmp120_, _tmp123_);
+                                       _tmp124_ = deleg;
+                                       _tmp125_ = orig;
+                                       _tmp126_ = vala_delegate_get_has_target (_tmp125_);
+                                       _tmp127_ = _tmp126_;
+                                       vala_delegate_set_has_target (_tmp124_, _tmp127_);
+                                       {
+                                               ValaList* _param_list = NULL;
+                                               ValaDelegate* _tmp128_ = NULL;
+                                               ValaList* _tmp129_ = NULL;
+                                               gint _param_size = 0;
+                                               ValaList* _tmp130_ = NULL;
                                                gint _tmp131_ = 0;
                                                gint _tmp132_ = 0;
-                                               gint _tmp133_ = 0;
-                                               ValaDataType* error_type = NULL;
-                                               ValaList* _tmp134_ = NULL;
-                                               gint _tmp135_ = 0;
-                                               gpointer _tmp136_ = NULL;
-                                               ValaDelegate* _tmp137_ = NULL;
-                                               ValaDataType* _tmp138_ = NULL;
-                                               ValaDataType* _tmp139_ = NULL;
-                                               ValaDataType* _tmp140_ = NULL;
-                                               _tmp131_ = _error_type_index;
-                                               _error_type_index = _tmp131_ + 1;
-                                               _tmp132_ = _error_type_index;
-                                               _tmp133_ = _error_type_size;
-                                               if (!(_tmp132_ < _tmp133_)) {
-                                                       break;
+                                               gint _param_index = 0;
+                                               _tmp128_ = orig;
+                                               _tmp129_ = vala_delegate_get_parameters (_tmp128_);
+                                               _param_list = _tmp129_;
+                                               _tmp130_ = _param_list;
+                                               _tmp131_ = vala_collection_get_size ((ValaCollection*) _tmp130_);
+                                               _tmp132_ = _tmp131_;
+                                               _param_size = _tmp132_;
+                                               _param_index = -1;
+                                               while (TRUE) {
+                                                       gint _tmp133_ = 0;
+                                                       gint _tmp134_ = 0;
+                                                       gint _tmp135_ = 0;
+                                                       ValaParameter* param = NULL;
+                                                       ValaList* _tmp136_ = NULL;
+                                                       gint _tmp137_ = 0;
+                                                       gpointer _tmp138_ = NULL;
+                                                       ValaDelegate* _tmp139_ = NULL;
+                                                       ValaParameter* _tmp140_ = NULL;
+                                                       ValaParameter* _tmp141_ = NULL;
+                                                       ValaParameter* _tmp142_ = NULL;
+                                                       _tmp133_ = _param_index;
+                                                       _param_index = _tmp133_ + 1;
+                                                       _tmp134_ = _param_index;
+                                                       _tmp135_ = _param_size;
+                                                       if (!(_tmp134_ < _tmp135_)) {
+                                                               break;
+                                                       }
+                                                       _tmp136_ = _param_list;
+                                                       _tmp137_ = _param_index;
+                                                       _tmp138_ = vala_list_get (_tmp136_, _tmp137_);
+                                                       param = (ValaParameter*) _tmp138_;
+                                                       _tmp139_ = deleg;
+                                                       _tmp140_ = param;
+                                                       _tmp141_ = vala_parameter_copy (_tmp140_);
+                                                       _tmp142_ = _tmp141_;
+                                                       vala_delegate_add_parameter (_tmp139_, _tmp142_);
+                                                       _vala_code_node_unref0 (_tmp142_);
+                                                       _vala_code_node_unref0 (param);
                                                }
-                                               _tmp134_ = _error_type_list;
-                                               _tmp135_ = _error_type_index;
-                                               _tmp136_ = vala_list_get (_tmp134_, _tmp135_);
-                                               error_type = (ValaDataType*) _tmp136_;
-                                               _tmp137_ = deleg;
-                                               _tmp138_ = error_type;
-                                               _tmp139_ = vala_data_type_copy (_tmp138_);
-                                               _tmp140_ = _tmp139_;
-                                               vala_code_node_add_error_type ((ValaCodeNode*) _tmp137_, _tmp140_);
-                                               _vala_code_node_unref0 (_tmp140_);
-                                               _vala_code_node_unref0 (error_type);
+                                               _vala_iterable_unref0 (_param_list);
                                        }
-                                       _vala_iterable_unref0 (_error_type_list);
-                               }
-                               _tmp141_ = orig;
-                               _tmp142_ = ((ValaCodeNode*) _tmp141_)->attributes;
-                               {
-                                       GList* attribute_collection = NULL;
-                                       GList* attribute_it = NULL;
-                                       attribute_collection = _tmp142_;
-                                       for (attribute_it = attribute_collection; attribute_it != NULL; attribute_it = attribute_it->next) {
-                                               ValaAttribute* _tmp143_ = NULL;
-                                               ValaAttribute* attribute = NULL;
-                                               _tmp143_ = _vala_code_node_ref0 ((ValaAttribute*) attribute_it->data);
-                                               attribute = _tmp143_;
-                                               {
-                                                       ValaDelegate* _tmp144_ = NULL;
-                                                       ValaAttribute* _tmp145_ = NULL;
-                                                       ValaAttribute* _tmp146_ = NULL;
-                                                       _tmp144_ = deleg;
-                                                       _tmp145_ = attribute;
-                                                       _tmp146_ = _vala_code_node_ref0 (_tmp145_);
-                                                       ((ValaCodeNode*) _tmp144_)->attributes = g_list_append (((ValaCodeNode*) _tmp144_)->attributes, _tmp146_);
-                                                       _vala_code_node_unref0 (attribute);
+                                       {
+                                               ValaList* _error_type_list = NULL;
+                                               ValaDelegate* _tmp143_ = NULL;
+                                               ValaList* _tmp144_ = NULL;
+                                               gint _error_type_size = 0;
+                                               ValaList* _tmp145_ = NULL;
+                                               gint _tmp146_ = 0;
+                                               gint _tmp147_ = 0;
+                                               gint _error_type_index = 0;
+                                               _tmp143_ = orig;
+                                               _tmp144_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp143_);
+                                               _error_type_list = _tmp144_;
+                                               _tmp145_ = _error_type_list;
+                                               _tmp146_ = vala_collection_get_size ((ValaCollection*) _tmp145_);
+                                               _tmp147_ = _tmp146_;
+                                               _error_type_size = _tmp147_;
+                                               _error_type_index = -1;
+                                               while (TRUE) {
+                                                       gint _tmp148_ = 0;
+                                                       gint _tmp149_ = 0;
+                                                       gint _tmp150_ = 0;
+                                                       ValaDataType* error_type = NULL;
+                                                       ValaList* _tmp151_ = NULL;
+                                                       gint _tmp152_ = 0;
+                                                       gpointer _tmp153_ = NULL;
+                                                       ValaDelegate* _tmp154_ = NULL;
+                                                       ValaDataType* _tmp155_ = NULL;
+                                                       ValaDataType* _tmp156_ = NULL;
+                                                       ValaDataType* _tmp157_ = NULL;
+                                                       _tmp148_ = _error_type_index;
+                                                       _error_type_index = _tmp148_ + 1;
+                                                       _tmp149_ = _error_type_index;
+                                                       _tmp150_ = _error_type_size;
+                                                       if (!(_tmp149_ < _tmp150_)) {
+                                                               break;
+                                                       }
+                                                       _tmp151_ = _error_type_list;
+                                                       _tmp152_ = _error_type_index;
+                                                       _tmp153_ = vala_list_get (_tmp151_, _tmp152_);
+                                                       error_type = (ValaDataType*) _tmp153_;
+                                                       _tmp154_ = deleg;
+                                                       _tmp155_ = error_type;
+                                                       _tmp156_ = vala_data_type_copy (_tmp155_);
+                                                       _tmp157_ = _tmp156_;
+                                                       vala_code_node_add_error_type ((ValaCodeNode*) _tmp154_, _tmp157_);
+                                                       _vala_code_node_unref0 (_tmp157_);
+                                                       _vala_code_node_unref0 (error_type);
+                                               }
+                                               _vala_iterable_unref0 (_error_type_list);
+                                       }
+                                       _tmp158_ = orig;
+                                       _tmp159_ = ((ValaCodeNode*) _tmp158_)->attributes;
+                                       {
+                                               GList* attribute_collection = NULL;
+                                               GList* attribute_it = NULL;
+                                               attribute_collection = _tmp159_;
+                                               for (attribute_it = attribute_collection; attribute_it != NULL; attribute_it = attribute_it->next) {
+                                                       ValaAttribute* _tmp160_ = NULL;
+                                                       ValaAttribute* attribute = NULL;
+                                                       _tmp160_ = _vala_code_node_ref0 ((ValaAttribute*) attribute_it->data);
+                                                       attribute = _tmp160_;
+                                                       {
+                                                               ValaDelegate* _tmp161_ = NULL;
+                                                               ValaAttribute* _tmp162_ = NULL;
+                                                               ValaAttribute* _tmp163_ = NULL;
+                                                               _tmp161_ = deleg;
+                                                               _tmp162_ = attribute;
+                                                               _tmp163_ = _vala_code_node_ref0 (_tmp162_);
+                                                               ((ValaCodeNode*) _tmp161_)->attributes = g_list_append (((ValaCodeNode*) _tmp161_)->attributes, _tmp163_);
+                                                               _vala_code_node_unref0 (attribute);
+                                                       }
                                                }
                                        }
+                                       _tmp164_ = deleg;
+                                       vala_symbol_set_external ((ValaSymbol*) _tmp164_, TRUE);
+                                       _tmp165_ = alias;
+                                       _tmp166_ = deleg;
+                                       _tmp167_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp166_);
+                                       _vala_code_node_unref0 (_tmp165_->symbol);
+                                       _tmp165_->symbol = _tmp167_;
+                                       _vala_code_node_unref0 (deleg);
+                                       _vala_code_node_unref0 (orig);
                                }
-                               _tmp147_ = deleg;
-                               vala_symbol_set_external ((ValaSymbol*) _tmp147_, TRUE);
-                               _tmp148_ = alias;
-                               _tmp149_ = deleg;
-                               _tmp150_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp149_);
-                               _vala_code_node_unref0 (_tmp148_->symbol);
-                               _tmp148_->symbol = _tmp150_;
-                               _vala_code_node_unref0 (deleg);
-                               _vala_code_node_unref0 (orig);
                        }
                }
        }
@@ -12454,15 +12697,15 @@ static void vala_gir_parser_process_callable (ValaGirParser* self, ValaGirParser
        ValaSymbol* _tmp11_ = NULL;
        gboolean _tmp26_ = FALSE;
        ValaDataType* _tmp27_ = NULL;
-       ValaList* _tmp145_ = NULL;
-       gint _tmp146_ = 0;
-       gint _tmp147_ = 0;
+       ValaList* _tmp148_ = NULL;
+       gint _tmp149_ = 0;
+       gint _tmp150_ = 0;
        gint i = 0;
        gint j = 0;
        gint last = 0;
-       gboolean _tmp384_ = FALSE;
-       ValaDataType* _tmp385_ = NULL;
-       ValaSymbol* _tmp394_ = NULL;
+       gboolean _tmp387_ = FALSE;
+       ValaDataType* _tmp388_ = NULL;
+       ValaSymbol* _tmp397_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (node != NULL);
        _tmp1_ = node;
@@ -12743,21 +12986,29 @@ static void vala_gir_parser_process_callable (ValaGirParser* self, ValaGirParser
                                                        _tmp92_ = FALSE;
                                                }
                                                if (_tmp92_) {
-                                                       ValaGirParserParameterInfo* _tmp103_ = NULL;
-                                                       ValaGirParserParameterInfo* _tmp104_ = NULL;
-                                                       ValaParameter* _tmp105_ = NULL;
-                                                       ValaDataType* _tmp106_ = NULL;
-                                                       ValaDataType* _tmp107_ = NULL;
-                                                       ValaDataType* _tmp108_ = NULL;
-                                                       _tmp103_ = last_param;
-                                                       _tmp103_->keep = FALSE;
-                                                       _tmp104_ = last_param;
-                                                       _tmp105_ = _tmp104_->param;
-                                                       _tmp106_ = vala_variable_get_variable_type ((ValaVariable*) _tmp105_);
-                                                       _tmp107_ = _tmp106_;
-                                                       _tmp108_ = vala_data_type_copy (_tmp107_);
-                                                       _vala_code_node_unref0 (return_type);
-                                                       return_type = _tmp108_;
+                                                       ValaGirParserNode* _tmp103_ = NULL;
+                                                       ValaGirParserMetadata* _tmp104_ = NULL;
+                                                       gboolean _tmp105_ = FALSE;
+                                                       _tmp103_ = node;
+                                                       _tmp104_ = _tmp103_->metadata;
+                                                       _tmp105_ = vala_gir_parser_metadata_get_bool (_tmp104_, VALA_GIR_PARSER_ARGUMENT_TYPE_RETURN_VOID, FALSE);
+                                                       if (!_tmp105_) {
+                                                               ValaGirParserParameterInfo* _tmp106_ = NULL;
+                                                               ValaGirParserParameterInfo* _tmp107_ = NULL;
+                                                               ValaParameter* _tmp108_ = NULL;
+                                                               ValaDataType* _tmp109_ = NULL;
+                                                               ValaDataType* _tmp110_ = NULL;
+                                                               ValaDataType* _tmp111_ = NULL;
+                                                               _tmp106_ = last_param;
+                                                               _tmp106_->keep = FALSE;
+                                                               _tmp107_ = last_param;
+                                                               _tmp108_ = _tmp107_->param;
+                                                               _tmp109_ = vala_variable_get_variable_type ((ValaVariable*) _tmp108_);
+                                                               _tmp110_ = _tmp109_;
+                                                               _tmp111_ = vala_data_type_copy (_tmp110_);
+                                                               _vala_code_node_unref0 (return_type);
+                                                               return_type = _tmp111_;
+                                                       }
                                                }
                                                _vala_code_node_unref0 (st);
                                        }
@@ -12765,114 +13016,114 @@ static void vala_gir_parser_process_callable (ValaGirParser* self, ValaGirParser
                                _vala_gir_parser_parameter_info_unref0 (last_param);
                        }
                } else {
-                       gboolean _tmp109_ = FALSE;
-                       ValaDataType* _tmp110_ = NULL;
-                       _tmp110_ = return_type;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp110_, VALA_TYPE_UNRESOLVED_TYPE)) {
-                               ValaDataType* _tmp111_ = NULL;
-                               gboolean _tmp112_ = FALSE;
-                               gboolean _tmp113_ = FALSE;
-                               _tmp111_ = return_type;
-                               _tmp112_ = vala_data_type_get_nullable (_tmp111_);
-                               _tmp113_ = _tmp112_;
-                               _tmp109_ = !_tmp113_;
+                       gboolean _tmp112_ = FALSE;
+                       ValaDataType* _tmp113_ = NULL;
+                       _tmp113_ = return_type;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp113_, VALA_TYPE_UNRESOLVED_TYPE)) {
+                               ValaDataType* _tmp114_ = NULL;
+                               gboolean _tmp115_ = FALSE;
+                               gboolean _tmp116_ = FALSE;
+                               _tmp114_ = return_type;
+                               _tmp115_ = vala_data_type_get_nullable (_tmp114_);
+                               _tmp116_ = _tmp115_;
+                               _tmp112_ = !_tmp116_;
                        } else {
-                               _tmp109_ = FALSE;
+                               _tmp112_ = FALSE;
                        }
-                       if (_tmp109_) {
+                       if (_tmp112_) {
                                ValaStruct* st = NULL;
-                               ValaGirParserNode* _tmp114_ = NULL;
-                               ValaGirParserNode* _tmp115_ = NULL;
-                               ValaDataType* _tmp116_ = NULL;
-                               ValaUnresolvedSymbol* _tmp117_ = NULL;
-                               ValaUnresolvedSymbol* _tmp118_ = NULL;
-                               ValaSymbol* _tmp119_ = NULL;
-                               ValaStruct* _tmp120_ = NULL;
-                               ValaStruct* _tmp121_ = NULL;
-                               _tmp114_ = node;
-                               _tmp115_ = _tmp114_->parent;
-                               _tmp116_ = return_type;
-                               _tmp117_ = vala_unresolved_type_get_unresolved_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp116_, VALA_TYPE_UNRESOLVED_TYPE, ValaUnresolvedType));
-                               _tmp118_ = _tmp117_;
-                               _tmp119_ = vala_gir_parser_resolve_symbol (self, _tmp115_, _tmp118_);
-                               _tmp120_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp119_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp119_) : NULL;
-                               if (_tmp120_ == NULL) {
-                                       _vala_code_node_unref0 (_tmp119_);
+                               ValaGirParserNode* _tmp117_ = NULL;
+                               ValaGirParserNode* _tmp118_ = NULL;
+                               ValaDataType* _tmp119_ = NULL;
+                               ValaUnresolvedSymbol* _tmp120_ = NULL;
+                               ValaUnresolvedSymbol* _tmp121_ = NULL;
+                               ValaSymbol* _tmp122_ = NULL;
+                               ValaStruct* _tmp123_ = NULL;
+                               ValaStruct* _tmp124_ = NULL;
+                               _tmp117_ = node;
+                               _tmp118_ = _tmp117_->parent;
+                               _tmp119_ = return_type;
+                               _tmp120_ = vala_unresolved_type_get_unresolved_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp119_, VALA_TYPE_UNRESOLVED_TYPE, ValaUnresolvedType));
+                               _tmp121_ = _tmp120_;
+                               _tmp122_ = vala_gir_parser_resolve_symbol (self, _tmp118_, _tmp121_);
+                               _tmp123_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp122_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp122_) : NULL;
+                               if (_tmp123_ == NULL) {
+                                       _vala_code_node_unref0 (_tmp122_);
                                }
-                               st = _tmp120_;
-                               _tmp121_ = st;
-                               if (_tmp121_ != NULL) {
+                               st = _tmp123_;
+                               _tmp124_ = st;
+                               if (_tmp124_ != NULL) {
                                        gboolean is_simple_type = FALSE;
                                        ValaStruct* base_st = NULL;
-                                       ValaStruct* _tmp122_ = NULL;
-                                       ValaStruct* _tmp123_ = NULL;
-                                       gboolean _tmp143_ = FALSE;
+                                       ValaStruct* _tmp125_ = NULL;
+                                       ValaStruct* _tmp126_ = NULL;
+                                       gboolean _tmp146_ = FALSE;
                                        is_simple_type = FALSE;
-                                       _tmp122_ = st;
-                                       _tmp123_ = _vala_code_node_ref0 (_tmp122_);
-                                       base_st = _tmp123_;
+                                       _tmp125_ = st;
+                                       _tmp126_ = _vala_code_node_ref0 (_tmp125_);
+                                       base_st = _tmp126_;
                                        while (TRUE) {
-                                               ValaStruct* _tmp124_ = NULL;
-                                               ValaStruct* _tmp125_ = NULL;
-                                               gboolean _tmp126_ = FALSE;
                                                ValaStruct* _tmp127_ = NULL;
-                                               ValaDataType* _tmp128_ = NULL;
-                                               ValaDataType* _tmp129_ = NULL;
-                                               _tmp124_ = base_st;
-                                               if (!(_tmp124_ != NULL)) {
+                                               ValaStruct* _tmp128_ = NULL;
+                                               gboolean _tmp129_ = FALSE;
+                                               ValaStruct* _tmp130_ = NULL;
+                                               ValaDataType* _tmp131_ = NULL;
+                                               ValaDataType* _tmp132_ = NULL;
+                                               _tmp127_ = base_st;
+                                               if (!(_tmp127_ != NULL)) {
                                                        break;
                                                }
-                                               _tmp125_ = base_st;
-                                               _tmp126_ = vala_struct_is_simple_type (_tmp125_);
-                                               if (_tmp126_) {
+                                               _tmp128_ = base_st;
+                                               _tmp129_ = vala_struct_is_simple_type (_tmp128_);
+                                               if (_tmp129_) {
                                                        is_simple_type = TRUE;
                                                        break;
                                                }
-                                               _tmp127_ = base_st;
-                                               _tmp128_ = vala_struct_get_base_type (_tmp127_);
-                                               _tmp129_ = _tmp128_;
-                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp129_, VALA_TYPE_UNRESOLVED_TYPE)) {
-                                                       ValaGirParserNode* _tmp130_ = NULL;
-                                                       ValaGirParserNode* _tmp131_ = NULL;
-                                                       ValaStruct* _tmp132_ = NULL;
-                                                       ValaDataType* _tmp133_ = NULL;
-                                                       ValaDataType* _tmp134_ = NULL;
-                                                       ValaUnresolvedSymbol* _tmp135_ = NULL;
-                                                       ValaUnresolvedSymbol* _tmp136_ = NULL;
-                                                       ValaSymbol* _tmp137_ = NULL;
-                                                       ValaStruct* _tmp138_ = NULL;
-                                                       _tmp130_ = node;
-                                                       _tmp131_ = _tmp130_->parent;
-                                                       _tmp132_ = base_st;
-                                                       _tmp133_ = vala_struct_get_base_type (_tmp132_);
-                                                       _tmp134_ = _tmp133_;
-                                                       _tmp135_ = vala_unresolved_type_get_unresolved_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp134_, VALA_TYPE_UNRESOLVED_TYPE, ValaUnresolvedType));
-                                                       _tmp136_ = _tmp135_;
-                                                       _tmp137_ = vala_gir_parser_resolve_symbol (self, _tmp131_, _tmp136_);
-                                                       _tmp138_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp137_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp137_) : NULL;
-                                                       if (_tmp138_ == NULL) {
-                                                               _vala_code_node_unref0 (_tmp137_);
+                                               _tmp130_ = base_st;
+                                               _tmp131_ = vala_struct_get_base_type (_tmp130_);
+                                               _tmp132_ = _tmp131_;
+                                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp132_, VALA_TYPE_UNRESOLVED_TYPE)) {
+                                                       ValaGirParserNode* _tmp133_ = NULL;
+                                                       ValaGirParserNode* _tmp134_ = NULL;
+                                                       ValaStruct* _tmp135_ = NULL;
+                                                       ValaDataType* _tmp136_ = NULL;
+                                                       ValaDataType* _tmp137_ = NULL;
+                                                       ValaUnresolvedSymbol* _tmp138_ = NULL;
+                                                       ValaUnresolvedSymbol* _tmp139_ = NULL;
+                                                       ValaSymbol* _tmp140_ = NULL;
+                                                       ValaStruct* _tmp141_ = NULL;
+                                                       _tmp133_ = node;
+                                                       _tmp134_ = _tmp133_->parent;
+                                                       _tmp135_ = base_st;
+                                                       _tmp136_ = vala_struct_get_base_type (_tmp135_);
+                                                       _tmp137_ = _tmp136_;
+                                                       _tmp138_ = vala_unresolved_type_get_unresolved_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp137_, VALA_TYPE_UNRESOLVED_TYPE, ValaUnresolvedType));
+                                                       _tmp139_ = _tmp138_;
+                                                       _tmp140_ = vala_gir_parser_resolve_symbol (self, _tmp134_, _tmp139_);
+                                                       _tmp141_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp140_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp140_) : NULL;
+                                                       if (_tmp141_ == NULL) {
+                                                               _vala_code_node_unref0 (_tmp140_);
                                                        }
                                                        _vala_code_node_unref0 (base_st);
-                                                       base_st = _tmp138_;
+                                                       base_st = _tmp141_;
                                                } else {
-                                                       ValaStruct* _tmp139_ = NULL;
-                                                       ValaStruct* _tmp140_ = NULL;
-                                                       ValaStruct* _tmp141_ = NULL;
                                                        ValaStruct* _tmp142_ = NULL;
-                                                       _tmp139_ = base_st;
-                                                       _tmp140_ = vala_struct_get_base_struct (_tmp139_);
-                                                       _tmp141_ = _tmp140_;
-                                                       _tmp142_ = _vala_code_node_ref0 (_tmp141_);
+                                                       ValaStruct* _tmp143_ = NULL;
+                                                       ValaStruct* _tmp144_ = NULL;
+                                                       ValaStruct* _tmp145_ = NULL;
+                                                       _tmp142_ = base_st;
+                                                       _tmp143_ = vala_struct_get_base_struct (_tmp142_);
+                                                       _tmp144_ = _tmp143_;
+                                                       _tmp145_ = _vala_code_node_ref0 (_tmp144_);
                                                        _vala_code_node_unref0 (base_st);
-                                                       base_st = _tmp142_;
+                                                       base_st = _tmp145_;
                                                }
                                        }
-                                       _tmp143_ = is_simple_type;
-                                       if (!_tmp143_) {
-                                               ValaDataType* _tmp144_ = NULL;
-                                               _tmp144_ = return_type;
-                                               vala_data_type_set_nullable (_tmp144_, TRUE);
+                                       _tmp146_ = is_simple_type;
+                                       if (!_tmp146_) {
+                                               ValaDataType* _tmp147_ = NULL;
+                                               _tmp147_ = return_type;
+                                               vala_data_type_set_nullable (_tmp147_, TRUE);
                                        }
                                        _vala_code_node_unref0 (base_st);
                                }
@@ -12880,57 +13131,57 @@ static void vala_gir_parser_process_callable (ValaGirParser* self, ValaGirParser
                        }
                }
        }
-       _tmp145_ = parameters;
-       _tmp146_ = vala_collection_get_size ((ValaCollection*) _tmp145_);
-       _tmp147_ = _tmp146_;
-       if (_tmp147_ > 1) {
+       _tmp148_ = parameters;
+       _tmp149_ = vala_collection_get_size ((ValaCollection*) _tmp148_);
+       _tmp150_ = _tmp149_;
+       if (_tmp150_ > 1) {
                ValaGirParserParameterInfo* last_param = NULL;
-               ValaList* _tmp148_ = NULL;
-               ValaList* _tmp149_ = NULL;
-               gint _tmp150_ = 0;
-               gint _tmp151_ = 0;
-               gpointer _tmp152_ = NULL;
-               ValaGirParserParameterInfo* _tmp153_ = NULL;
-               ValaParameter* _tmp154_ = NULL;
-               gboolean _tmp155_ = FALSE;
-               gboolean _tmp156_ = FALSE;
-               _tmp148_ = parameters;
-               _tmp149_ = parameters;
-               _tmp150_ = vala_collection_get_size ((ValaCollection*) _tmp149_);
-               _tmp151_ = _tmp150_;
-               _tmp152_ = vala_list_get (_tmp148_, _tmp151_ - 1);
-               last_param = (ValaGirParserParameterInfo*) _tmp152_;
-               _tmp153_ = last_param;
-               _tmp154_ = _tmp153_->param;
-               _tmp155_ = vala_parameter_get_ellipsis (_tmp154_);
-               _tmp156_ = _tmp155_;
-               if (_tmp156_) {
+               ValaList* _tmp151_ = NULL;
+               ValaList* _tmp152_ = NULL;
+               gint _tmp153_ = 0;
+               gint _tmp154_ = 0;
+               gpointer _tmp155_ = NULL;
+               ValaGirParserParameterInfo* _tmp156_ = NULL;
+               ValaParameter* _tmp157_ = NULL;
+               gboolean _tmp158_ = FALSE;
+               gboolean _tmp159_ = FALSE;
+               _tmp151_ = parameters;
+               _tmp152_ = parameters;
+               _tmp153_ = vala_collection_get_size ((ValaCollection*) _tmp152_);
+               _tmp154_ = _tmp153_;
+               _tmp155_ = vala_list_get (_tmp151_, _tmp154_ - 1);
+               last_param = (ValaGirParserParameterInfo*) _tmp155_;
+               _tmp156_ = last_param;
+               _tmp157_ = _tmp156_->param;
+               _tmp158_ = vala_parameter_get_ellipsis (_tmp157_);
+               _tmp159_ = _tmp158_;
+               if (_tmp159_) {
                        ValaGirParserParameterInfo* first_vararg_param = NULL;
-                       ValaList* _tmp157_ = NULL;
-                       ValaList* _tmp158_ = NULL;
-                       gint _tmp159_ = 0;
-                       gint _tmp160_ = 0;
-                       gpointer _tmp161_ = NULL;
-                       ValaGirParserParameterInfo* _tmp162_ = NULL;
-                       ValaParameter* _tmp163_ = NULL;
-                       const gchar* _tmp164_ = NULL;
-                       const gchar* _tmp165_ = NULL;
-                       gboolean _tmp166_ = FALSE;
-                       _tmp157_ = parameters;
-                       _tmp158_ = parameters;
-                       _tmp159_ = vala_collection_get_size ((ValaCollection*) _tmp158_);
-                       _tmp160_ = _tmp159_;
-                       _tmp161_ = vala_list_get (_tmp157_, _tmp160_ - 2);
-                       first_vararg_param = (ValaGirParserParameterInfo*) _tmp161_;
-                       _tmp162_ = first_vararg_param;
-                       _tmp163_ = _tmp162_->param;
-                       _tmp164_ = vala_symbol_get_name ((ValaSymbol*) _tmp163_);
-                       _tmp165_ = _tmp164_;
-                       _tmp166_ = g_str_has_prefix (_tmp165_, "first_");
-                       if (_tmp166_) {
-                               ValaGirParserParameterInfo* _tmp167_ = NULL;
-                               _tmp167_ = first_vararg_param;
-                               _tmp167_->keep = FALSE;
+                       ValaList* _tmp160_ = NULL;
+                       ValaList* _tmp161_ = NULL;
+                       gint _tmp162_ = 0;
+                       gint _tmp163_ = 0;
+                       gpointer _tmp164_ = NULL;
+                       ValaGirParserParameterInfo* _tmp165_ = NULL;
+                       ValaParameter* _tmp166_ = NULL;
+                       const gchar* _tmp167_ = NULL;
+                       const gchar* _tmp168_ = NULL;
+                       gboolean _tmp169_ = FALSE;
+                       _tmp160_ = parameters;
+                       _tmp161_ = parameters;
+                       _tmp162_ = vala_collection_get_size ((ValaCollection*) _tmp161_);
+                       _tmp163_ = _tmp162_;
+                       _tmp164_ = vala_list_get (_tmp160_, _tmp163_ - 2);
+                       first_vararg_param = (ValaGirParserParameterInfo*) _tmp164_;
+                       _tmp165_ = first_vararg_param;
+                       _tmp166_ = _tmp165_->param;
+                       _tmp167_ = vala_symbol_get_name ((ValaSymbol*) _tmp166_);
+                       _tmp168_ = _tmp167_;
+                       _tmp169_ = g_str_has_prefix (_tmp168_, "first_");
+                       if (_tmp169_) {
+                               ValaGirParserParameterInfo* _tmp170_ = NULL;
+                               _tmp170_ = first_vararg_param;
+                               _tmp170_->keep = FALSE;
                        }
                        _vala_gir_parser_parameter_info_unref0 (first_vararg_param);
                }
@@ -12941,600 +13192,600 @@ static void vala_gir_parser_process_callable (ValaGirParser* self, ValaGirParser
        last = -1;
        {
                ValaList* _info_list = NULL;
-               ValaList* _tmp168_ = NULL;
-               ValaList* _tmp169_ = NULL;
+               ValaList* _tmp171_ = NULL;
+               ValaList* _tmp172_ = NULL;
                gint _info_size = 0;
-               ValaList* _tmp170_ = NULL;
-               gint _tmp171_ = 0;
-               gint _tmp172_ = 0;
+               ValaList* _tmp173_ = NULL;
+               gint _tmp174_ = 0;
+               gint _tmp175_ = 0;
                gint _info_index = 0;
-               _tmp168_ = parameters;
-               _tmp169_ = _vala_iterable_ref0 (_tmp168_);
-               _info_list = _tmp169_;
-               _tmp170_ = _info_list;
-               _tmp171_ = vala_collection_get_size ((ValaCollection*) _tmp170_);
-               _tmp172_ = _tmp171_;
-               _info_size = _tmp172_;
+               _tmp171_ = parameters;
+               _tmp172_ = _vala_iterable_ref0 (_tmp171_);
+               _info_list = _tmp172_;
+               _tmp173_ = _info_list;
+               _tmp174_ = vala_collection_get_size ((ValaCollection*) _tmp173_);
+               _tmp175_ = _tmp174_;
+               _info_size = _tmp175_;
                _info_index = -1;
                while (TRUE) {
-                       gint _tmp173_ = 0;
-                       gint _tmp174_ = 0;
-                       gint _tmp175_ = 0;
-                       ValaGirParserParameterInfo* info = NULL;
-                       ValaList* _tmp176_ = NULL;
+                       gint _tmp176_ = 0;
                        gint _tmp177_ = 0;
-                       gpointer _tmp178_ = NULL;
-                       gboolean _tmp179_ = FALSE;
-                       ValaSymbol* _tmp180_ = NULL;
-                       gint _tmp239_ = 0;
-                       _tmp173_ = _info_index;
-                       _info_index = _tmp173_ + 1;
-                       _tmp174_ = _info_index;
-                       _tmp175_ = _info_size;
-                       if (!(_tmp174_ < _tmp175_)) {
+                       gint _tmp178_ = 0;
+                       ValaGirParserParameterInfo* info = NULL;
+                       ValaList* _tmp179_ = NULL;
+                       gint _tmp180_ = 0;
+                       gpointer _tmp181_ = NULL;
+                       gboolean _tmp182_ = FALSE;
+                       ValaSymbol* _tmp183_ = NULL;
+                       gint _tmp242_ = 0;
+                       _tmp176_ = _info_index;
+                       _info_index = _tmp176_ + 1;
+                       _tmp177_ = _info_index;
+                       _tmp178_ = _info_size;
+                       if (!(_tmp177_ < _tmp178_)) {
                                break;
                        }
-                       _tmp176_ = _info_list;
-                       _tmp177_ = _info_index;
-                       _tmp178_ = vala_list_get (_tmp176_, _tmp177_);
-                       info = (ValaGirParserParameterInfo*) _tmp178_;
-                       _tmp180_ = s;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp180_, VALA_TYPE_DELEGATE)) {
-                               ValaGirParserParameterInfo* _tmp181_ = NULL;
-                               gint _tmp182_ = 0;
-                               gint _tmp183_ = 0;
-                               _tmp181_ = info;
-                               _tmp182_ = _tmp181_->closure_idx;
-                               _tmp183_ = i;
-                               _tmp179_ = _tmp182_ == _tmp183_;
+                       _tmp179_ = _info_list;
+                       _tmp180_ = _info_index;
+                       _tmp181_ = vala_list_get (_tmp179_, _tmp180_);
+                       info = (ValaGirParserParameterInfo*) _tmp181_;
+                       _tmp183_ = s;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp183_, VALA_TYPE_DELEGATE)) {
+                               ValaGirParserParameterInfo* _tmp184_ = NULL;
+                               gint _tmp185_ = 0;
+                               gint _tmp186_ = 0;
+                               _tmp184_ = info;
+                               _tmp185_ = _tmp184_->closure_idx;
+                               _tmp186_ = i;
+                               _tmp182_ = _tmp185_ == _tmp186_;
                        } else {
-                               _tmp179_ = FALSE;
+                               _tmp182_ = FALSE;
                        }
-                       if (_tmp179_) {
+                       if (_tmp182_) {
                                ValaDelegate* d = NULL;
-                               ValaSymbol* _tmp184_ = NULL;
-                               ValaDelegate* _tmp185_ = NULL;
-                               ValaDelegate* _tmp186_ = NULL;
-                               ValaDelegate* _tmp187_ = NULL;
-                               gint _tmp188_ = 0;
-                               ValaGirParserParameterInfo* _tmp189_ = NULL;
-                               _tmp184_ = s;
-                               _tmp185_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp184_, VALA_TYPE_DELEGATE, ValaDelegate));
-                               d = _tmp185_;
-                               _tmp186_ = d;
-                               vala_delegate_set_has_target (_tmp186_, TRUE);
-                               _tmp187_ = d;
-                               _tmp188_ = j;
-                               vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp187_, "CCode", "instance_pos", _tmp188_ - 0.1, NULL);
-                               _tmp189_ = info;
-                               _tmp189_->keep = FALSE;
+                               ValaSymbol* _tmp187_ = NULL;
+                               ValaDelegate* _tmp188_ = NULL;
+                               ValaDelegate* _tmp189_ = NULL;
+                               ValaDelegate* _tmp190_ = NULL;
+                               gint _tmp191_ = 0;
+                               ValaGirParserParameterInfo* _tmp192_ = NULL;
+                               _tmp187_ = s;
+                               _tmp188_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp187_, VALA_TYPE_DELEGATE, ValaDelegate));
+                               d = _tmp188_;
+                               _tmp189_ = d;
+                               vala_delegate_set_has_target (_tmp189_, TRUE);
+                               _tmp190_ = d;
+                               _tmp191_ = j;
+                               vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp190_, "CCode", "instance_pos", _tmp191_ - 0.1, NULL);
+                               _tmp192_ = info;
+                               _tmp192_->keep = FALSE;
                                _vala_code_node_unref0 (d);
                        } else {
-                               gboolean _tmp190_ = FALSE;
-                               gboolean _tmp191_ = FALSE;
-                               gboolean _tmp192_ = FALSE;
-                               ValaGirParserParameterInfo* _tmp193_ = NULL;
+                               gboolean _tmp193_ = FALSE;
                                gboolean _tmp194_ = FALSE;
-                               _tmp193_ = info;
-                               _tmp194_ = _tmp193_->keep;
-                               if (_tmp194_) {
-                                       ValaGirParserNode* _tmp195_ = NULL;
-                                       ValaArrayList* _tmp196_ = NULL;
-                                       gint _tmp197_ = 0;
-                                       gboolean _tmp198_ = FALSE;
-                                       _tmp195_ = node;
-                                       _tmp196_ = _tmp195_->array_length_parameters;
-                                       _tmp197_ = i;
-                                       _tmp198_ = vala_collection_contains ((ValaCollection*) _tmp196_, (gpointer) ((gintptr) _tmp197_));
-                                       _tmp192_ = !_tmp198_;
+                               gboolean _tmp195_ = FALSE;
+                               ValaGirParserParameterInfo* _tmp196_ = NULL;
+                               gboolean _tmp197_ = FALSE;
+                               _tmp196_ = info;
+                               _tmp197_ = _tmp196_->keep;
+                               if (_tmp197_) {
+                                       ValaGirParserNode* _tmp198_ = NULL;
+                                       ValaArrayList* _tmp199_ = NULL;
+                                       gint _tmp200_ = 0;
+                                       gboolean _tmp201_ = FALSE;
+                                       _tmp198_ = node;
+                                       _tmp199_ = _tmp198_->array_length_parameters;
+                                       _tmp200_ = i;
+                                       _tmp201_ = vala_collection_contains ((ValaCollection*) _tmp199_, (gpointer) ((gintptr) _tmp200_));
+                                       _tmp195_ = !_tmp201_;
                                } else {
-                                       _tmp192_ = FALSE;
+                                       _tmp195_ = FALSE;
                                }
-                               if (_tmp192_) {
-                                       ValaGirParserNode* _tmp199_ = NULL;
-                                       ValaArrayList* _tmp200_ = NULL;
-                                       gint _tmp201_ = 0;
-                                       gboolean _tmp202_ = FALSE;
-                                       _tmp199_ = node;
-                                       _tmp200_ = _tmp199_->closure_parameters;
-                                       _tmp201_ = i;
-                                       _tmp202_ = vala_collection_contains ((ValaCollection*) _tmp200_, (gpointer) ((gintptr) _tmp201_));
-                                       _tmp191_ = !_tmp202_;
+                               if (_tmp195_) {
+                                       ValaGirParserNode* _tmp202_ = NULL;
+                                       ValaArrayList* _tmp203_ = NULL;
+                                       gint _tmp204_ = 0;
+                                       gboolean _tmp205_ = FALSE;
+                                       _tmp202_ = node;
+                                       _tmp203_ = _tmp202_->closure_parameters;
+                                       _tmp204_ = i;
+                                       _tmp205_ = vala_collection_contains ((ValaCollection*) _tmp203_, (gpointer) ((gintptr) _tmp204_));
+                                       _tmp194_ = !_tmp205_;
                                } else {
-                                       _tmp191_ = FALSE;
+                                       _tmp194_ = FALSE;
                                }
-                               if (_tmp191_) {
-                                       ValaGirParserNode* _tmp203_ = NULL;
-                                       ValaArrayList* _tmp204_ = NULL;
-                                       gint _tmp205_ = 0;
-                                       gboolean _tmp206_ = FALSE;
-                                       _tmp203_ = node;
-                                       _tmp204_ = _tmp203_->destroy_parameters;
-                                       _tmp205_ = i;
-                                       _tmp206_ = vala_collection_contains ((ValaCollection*) _tmp204_, (gpointer) ((gintptr) _tmp205_));
-                                       _tmp190_ = !_tmp206_;
+                               if (_tmp194_) {
+                                       ValaGirParserNode* _tmp206_ = NULL;
+                                       ValaArrayList* _tmp207_ = NULL;
+                                       gint _tmp208_ = 0;
+                                       gboolean _tmp209_ = FALSE;
+                                       _tmp206_ = node;
+                                       _tmp207_ = _tmp206_->destroy_parameters;
+                                       _tmp208_ = i;
+                                       _tmp209_ = vala_collection_contains ((ValaCollection*) _tmp207_, (gpointer) ((gintptr) _tmp208_));
+                                       _tmp193_ = !_tmp209_;
                                } else {
-                                       _tmp190_ = FALSE;
+                                       _tmp193_ = FALSE;
                                }
-                               if (_tmp190_) {
-                                       ValaGirParserParameterInfo* _tmp207_ = NULL;
-                                       gint _tmp208_ = 0;
-                                       ValaGirParserParameterInfo* _tmp209_ = NULL;
+                               if (_tmp193_) {
+                                       ValaGirParserParameterInfo* _tmp210_ = NULL;
+                                       gint _tmp211_ = 0;
+                                       ValaGirParserParameterInfo* _tmp212_ = NULL;
                                        gfloat last_idx = 0.0F;
-                                       gint _tmp210_ = 0;
-                                       gint _tmp232_ = 0;
-                                       gint _tmp233_ = 0;
-                                       _tmp207_ = info;
-                                       _tmp208_ = j;
-                                       _tmp207_->vala_idx = (gfloat) _tmp208_;
-                                       _tmp209_ = info;
-                                       _tmp209_->keep = TRUE;
+                                       gint _tmp213_ = 0;
+                                       gint _tmp235_ = 0;
+                                       gint _tmp236_ = 0;
+                                       _tmp210_ = info;
+                                       _tmp211_ = j;
+                                       _tmp210_->vala_idx = (gfloat) _tmp211_;
+                                       _tmp212_ = info;
+                                       _tmp212_->keep = TRUE;
                                        last_idx = 0.0F;
-                                       _tmp210_ = last;
-                                       if (_tmp210_ != (-1)) {
-                                               ValaList* _tmp211_ = NULL;
-                                               gint _tmp212_ = 0;
-                                               gpointer _tmp213_ = NULL;
-                                               ValaGirParserParameterInfo* _tmp214_ = NULL;
-                                               gfloat _tmp215_ = 0.0F;
-                                               _tmp211_ = parameters;
-                                               _tmp212_ = last;
-                                               _tmp213_ = vala_list_get (_tmp211_, _tmp212_);
-                                               _tmp214_ = (ValaGirParserParameterInfo*) _tmp213_;
-                                               _tmp215_ = _tmp214_->vala_idx;
-                                               last_idx = _tmp215_;
-                                               _vala_gir_parser_parameter_info_unref0 (_tmp214_);
+                                       _tmp213_ = last;
+                                       if (_tmp213_ != (-1)) {
+                                               ValaList* _tmp214_ = NULL;
+                                               gint _tmp215_ = 0;
+                                               gpointer _tmp216_ = NULL;
+                                               ValaGirParserParameterInfo* _tmp217_ = NULL;
+                                               gfloat _tmp218_ = 0.0F;
+                                               _tmp214_ = parameters;
+                                               _tmp215_ = last;
+                                               _tmp216_ = vala_list_get (_tmp214_, _tmp215_);
+                                               _tmp217_ = (ValaGirParserParameterInfo*) _tmp216_;
+                                               _tmp218_ = _tmp217_->vala_idx;
+                                               last_idx = _tmp218_;
+                                               _vala_gir_parser_parameter_info_unref0 (_tmp217_);
                                        }
                                        {
                                                gint k = 0;
-                                               gint _tmp216_ = 0;
-                                               _tmp216_ = last;
-                                               k = _tmp216_ + 1;
+                                               gint _tmp219_ = 0;
+                                               _tmp219_ = last;
+                                               k = _tmp219_ + 1;
                                                {
-                                                       gboolean _tmp217_ = FALSE;
-                                                       _tmp217_ = TRUE;
+                                                       gboolean _tmp220_ = FALSE;
+                                                       _tmp220_ = TRUE;
                                                        while (TRUE) {
-                                                               gint _tmp219_ = 0;
-                                                               gint _tmp220_ = 0;
-                                                               ValaList* _tmp221_ = NULL;
                                                                gint _tmp222_ = 0;
-                                                               gpointer _tmp223_ = NULL;
-                                                               ValaGirParserParameterInfo* _tmp224_ = NULL;
-                                                               gfloat _tmp225_ = 0.0F;
-                                                               gint _tmp226_ = 0;
-                                                               gfloat _tmp227_ = 0.0F;
-                                                               gint _tmp228_ = 0;
+                                                               gint _tmp223_ = 0;
+                                                               ValaList* _tmp224_ = NULL;
+                                                               gint _tmp225_ = 0;
+                                                               gpointer _tmp226_ = NULL;
+                                                               ValaGirParserParameterInfo* _tmp227_ = NULL;
+                                                               gfloat _tmp228_ = 0.0F;
                                                                gint _tmp229_ = 0;
-                                                               gint _tmp230_ = 0;
+                                                               gfloat _tmp230_ = 0.0F;
                                                                gint _tmp231_ = 0;
-                                                               if (!_tmp217_) {
-                                                                       gint _tmp218_ = 0;
-                                                                       _tmp218_ = k;
-                                                                       k = _tmp218_ + 1;
+                                                               gint _tmp232_ = 0;
+                                                               gint _tmp233_ = 0;
+                                                               gint _tmp234_ = 0;
+                                                               if (!_tmp220_) {
+                                                                       gint _tmp221_ = 0;
+                                                                       _tmp221_ = k;
+                                                                       k = _tmp221_ + 1;
                                                                }
-                                                               _tmp217_ = FALSE;
-                                                               _tmp219_ = k;
-                                                               _tmp220_ = i;
-                                                               if (!(_tmp219_ < _tmp220_)) {
+                                                               _tmp220_ = FALSE;
+                                                               _tmp222_ = k;
+                                                               _tmp223_ = i;
+                                                               if (!(_tmp222_ < _tmp223_)) {
                                                                        break;
                                                                }
-                                                               _tmp221_ = parameters;
-                                                               _tmp222_ = k;
-                                                               _tmp223_ = vala_list_get (_tmp221_, _tmp222_);
-                                                               _tmp224_ = (ValaGirParserParameterInfo*) _tmp223_;
-                                                               _tmp225_ = last_idx;
-                                                               _tmp226_ = j;
-                                                               _tmp227_ = last_idx;
-                                                               _tmp228_ = i;
-                                                               _tmp229_ = last;
-                                                               _tmp230_ = k;
-                                                               _tmp231_ = last;
-                                                               _tmp224_->vala_idx = _tmp225_ + (((_tmp226_ - _tmp227_) / (_tmp228_ - _tmp229_)) * (_tmp230_ - _tmp231_));
-                                                               _vala_gir_parser_parameter_info_unref0 (_tmp224_);
+                                                               _tmp224_ = parameters;
+                                                               _tmp225_ = k;
+                                                               _tmp226_ = vala_list_get (_tmp224_, _tmp225_);
+                                                               _tmp227_ = (ValaGirParserParameterInfo*) _tmp226_;
+                                                               _tmp228_ = last_idx;
+                                                               _tmp229_ = j;
+                                                               _tmp230_ = last_idx;
+                                                               _tmp231_ = i;
+                                                               _tmp232_ = last;
+                                                               _tmp233_ = k;
+                                                               _tmp234_ = last;
+                                                               _tmp227_->vala_idx = _tmp228_ + (((_tmp229_ - _tmp230_) / (_tmp231_ - _tmp232_)) * (_tmp233_ - _tmp234_));
+                                                               _vala_gir_parser_parameter_info_unref0 (_tmp227_);
                                                        }
                                                }
                                        }
-                                       _tmp232_ = i;
-                                       last = _tmp232_;
-                                       _tmp233_ = j;
-                                       j = _tmp233_ + 1;
-                               } else {
-                                       ValaGirParserParameterInfo* _tmp234_ = NULL;
-                                       ValaGirParserParameterInfo* _tmp235_ = NULL;
-                                       gint _tmp236_ = 0;
-                                       gint _tmp237_ = 0;
-                                       gint _tmp238_ = 0;
-                                       _tmp234_ = info;
-                                       _tmp234_->keep = FALSE;
-                                       _tmp235_ = info;
+                                       _tmp235_ = i;
+                                       last = _tmp235_;
                                        _tmp236_ = j;
-                                       _tmp237_ = i;
-                                       _tmp238_ = last;
-                                       _tmp235_->vala_idx = (_tmp236_ - 1) + ((_tmp237_ - _tmp238_) * 0.1F);
+                                       j = _tmp236_ + 1;
+                               } else {
+                                       ValaGirParserParameterInfo* _tmp237_ = NULL;
+                                       ValaGirParserParameterInfo* _tmp238_ = NULL;
+                                       gint _tmp239_ = 0;
+                                       gint _tmp240_ = 0;
+                                       gint _tmp241_ = 0;
+                                       _tmp237_ = info;
+                                       _tmp237_->keep = FALSE;
+                                       _tmp238_ = info;
+                                       _tmp239_ = j;
+                                       _tmp240_ = i;
+                                       _tmp241_ = last;
+                                       _tmp238_->vala_idx = (_tmp239_ - 1) + ((_tmp240_ - _tmp241_) * 0.1F);
                                }
                        }
-                       _tmp239_ = i;
-                       i = _tmp239_ + 1;
+                       _tmp242_ = i;
+                       i = _tmp242_ + 1;
                        _vala_gir_parser_parameter_info_unref0 (info);
                }
                _vala_iterable_unref0 (_info_list);
        }
        {
                ValaList* _info_list = NULL;
-               ValaList* _tmp240_ = NULL;
-               ValaList* _tmp241_ = NULL;
+               ValaList* _tmp243_ = NULL;
+               ValaList* _tmp244_ = NULL;
                gint _info_size = 0;
-               ValaList* _tmp242_ = NULL;
-               gint _tmp243_ = 0;
-               gint _tmp244_ = 0;
+               ValaList* _tmp245_ = NULL;
+               gint _tmp246_ = 0;
+               gint _tmp247_ = 0;
                gint _info_index = 0;
-               _tmp240_ = parameters;
-               _tmp241_ = _vala_iterable_ref0 (_tmp240_);
-               _info_list = _tmp241_;
-               _tmp242_ = _info_list;
-               _tmp243_ = vala_collection_get_size ((ValaCollection*) _tmp242_);
-               _tmp244_ = _tmp243_;
-               _info_size = _tmp244_;
+               _tmp243_ = parameters;
+               _tmp244_ = _vala_iterable_ref0 (_tmp243_);
+               _info_list = _tmp244_;
+               _tmp245_ = _info_list;
+               _tmp246_ = vala_collection_get_size ((ValaCollection*) _tmp245_);
+               _tmp247_ = _tmp246_;
+               _info_size = _tmp247_;
                _info_index = -1;
                while (TRUE) {
-                       gint _tmp245_ = 0;
-                       gint _tmp246_ = 0;
-                       gint _tmp247_ = 0;
-                       ValaGirParserParameterInfo* info = NULL;
-                       ValaList* _tmp248_ = NULL;
+                       gint _tmp248_ = 0;
                        gint _tmp249_ = 0;
-                       gpointer _tmp250_ = NULL;
-                       ValaGirParserParameterInfo* _tmp251_ = NULL;
-                       gboolean _tmp252_ = FALSE;
-                       ValaSymbol* _tmp253_ = NULL;
-                       ValaGirParserParameterInfo* _tmp265_ = NULL;
-                       gint _tmp266_ = 0;
-                       ValaGirParserParameterInfo* _tmp283_ = NULL;
-                       gint _tmp284_ = 0;
-                       ValaGirParserParameterInfo* _tmp315_ = NULL;
-                       gint _tmp316_ = 0;
-                       ValaGirParserParameterInfo* _tmp347_ = NULL;
-                       gboolean _tmp348_ = FALSE;
-                       _tmp245_ = _info_index;
-                       _info_index = _tmp245_ + 1;
-                       _tmp246_ = _info_index;
-                       _tmp247_ = _info_size;
-                       if (!(_tmp246_ < _tmp247_)) {
+                       gint _tmp250_ = 0;
+                       ValaGirParserParameterInfo* info = NULL;
+                       ValaList* _tmp251_ = NULL;
+                       gint _tmp252_ = 0;
+                       gpointer _tmp253_ = NULL;
+                       ValaGirParserParameterInfo* _tmp254_ = NULL;
+                       gboolean _tmp255_ = FALSE;
+                       ValaSymbol* _tmp256_ = NULL;
+                       ValaGirParserParameterInfo* _tmp268_ = NULL;
+                       gint _tmp269_ = 0;
+                       ValaGirParserParameterInfo* _tmp286_ = NULL;
+                       gint _tmp287_ = 0;
+                       ValaGirParserParameterInfo* _tmp318_ = NULL;
+                       gint _tmp319_ = 0;
+                       ValaGirParserParameterInfo* _tmp350_ = NULL;
+                       gboolean _tmp351_ = FALSE;
+                       _tmp248_ = _info_index;
+                       _info_index = _tmp248_ + 1;
+                       _tmp249_ = _info_index;
+                       _tmp250_ = _info_size;
+                       if (!(_tmp249_ < _tmp250_)) {
                                break;
                        }
-                       _tmp248_ = _info_list;
-                       _tmp249_ = _info_index;
-                       _tmp250_ = vala_list_get (_tmp248_, _tmp249_);
-                       info = (ValaGirParserParameterInfo*) _tmp250_;
-                       _tmp251_ = info;
-                       _tmp252_ = _tmp251_->keep;
-                       if (!_tmp252_) {
+                       _tmp251_ = _info_list;
+                       _tmp252_ = _info_index;
+                       _tmp253_ = vala_list_get (_tmp251_, _tmp252_);
+                       info = (ValaGirParserParameterInfo*) _tmp253_;
+                       _tmp254_ = info;
+                       _tmp255_ = _tmp254_->keep;
+                       if (!_tmp255_) {
                                _vala_gir_parser_parameter_info_unref0 (info);
                                continue;
                        }
-                       _tmp253_ = s;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp253_, VALA_TYPE_METHOD)) {
-                               ValaSymbol* _tmp254_ = NULL;
-                               ValaGirParserParameterInfo* _tmp255_ = NULL;
-                               ValaParameter* _tmp256_ = NULL;
-                               _tmp254_ = s;
-                               _tmp255_ = info;
-                               _tmp256_ = _tmp255_->param;
-                               vala_method_add_parameter (G_TYPE_CHECK_INSTANCE_CAST (_tmp254_, VALA_TYPE_METHOD, ValaMethod), _tmp256_);
-                       } else {
+                       _tmp256_ = s;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp256_, VALA_TYPE_METHOD)) {
                                ValaSymbol* _tmp257_ = NULL;
+                               ValaGirParserParameterInfo* _tmp258_ = NULL;
+                               ValaParameter* _tmp259_ = NULL;
                                _tmp257_ = s;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp257_, VALA_TYPE_DELEGATE)) {
-                                       ValaSymbol* _tmp258_ = NULL;
-                                       ValaGirParserParameterInfo* _tmp259_ = NULL;
-                                       ValaParameter* _tmp260_ = NULL;
-                                       _tmp258_ = s;
-                                       _tmp259_ = info;
-                                       _tmp260_ = _tmp259_->param;
-                                       vala_delegate_add_parameter (G_TYPE_CHECK_INSTANCE_CAST (_tmp258_, VALA_TYPE_DELEGATE, ValaDelegate), _tmp260_);
-                               } else {
+                               _tmp258_ = info;
+                               _tmp259_ = _tmp258_->param;
+                               vala_method_add_parameter (G_TYPE_CHECK_INSTANCE_CAST (_tmp257_, VALA_TYPE_METHOD, ValaMethod), _tmp259_);
+                       } else {
+                               ValaSymbol* _tmp260_ = NULL;
+                               _tmp260_ = s;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp260_, VALA_TYPE_DELEGATE)) {
                                        ValaSymbol* _tmp261_ = NULL;
+                                       ValaGirParserParameterInfo* _tmp262_ = NULL;
+                                       ValaParameter* _tmp263_ = NULL;
                                        _tmp261_ = s;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp261_, VALA_TYPE_SIGNAL)) {
-                                               ValaSymbol* _tmp262_ = NULL;
-                                               ValaGirParserParameterInfo* _tmp263_ = NULL;
-                                               ValaParameter* _tmp264_ = NULL;
-                                               _tmp262_ = s;
-                                               _tmp263_ = info;
-                                               _tmp264_ = _tmp263_->param;
-                                               vala_signal_add_parameter (G_TYPE_CHECK_INSTANCE_CAST (_tmp262_, VALA_TYPE_SIGNAL, ValaSignal), _tmp264_);
+                                       _tmp262_ = info;
+                                       _tmp263_ = _tmp262_->param;
+                                       vala_delegate_add_parameter (G_TYPE_CHECK_INSTANCE_CAST (_tmp261_, VALA_TYPE_DELEGATE, ValaDelegate), _tmp263_);
+                               } else {
+                                       ValaSymbol* _tmp264_ = NULL;
+                                       _tmp264_ = s;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp264_, VALA_TYPE_SIGNAL)) {
+                                               ValaSymbol* _tmp265_ = NULL;
+                                               ValaGirParserParameterInfo* _tmp266_ = NULL;
+                                               ValaParameter* _tmp267_ = NULL;
+                                               _tmp265_ = s;
+                                               _tmp266_ = info;
+                                               _tmp267_ = _tmp266_->param;
+                                               vala_signal_add_parameter (G_TYPE_CHECK_INSTANCE_CAST (_tmp265_, VALA_TYPE_SIGNAL, ValaSignal), _tmp267_);
                                        }
                                }
                        }
-                       _tmp265_ = info;
-                       _tmp266_ = _tmp265_->array_length_idx;
-                       if (_tmp266_ != (-1)) {
-                               ValaGirParserParameterInfo* _tmp267_ = NULL;
-                               gint _tmp268_ = 0;
-                               ValaList* _tmp269_ = NULL;
-                               gint _tmp270_ = 0;
+                       _tmp268_ = info;
+                       _tmp269_ = _tmp268_->array_length_idx;
+                       if (_tmp269_ != (-1)) {
+                               ValaGirParserParameterInfo* _tmp270_ = NULL;
                                gint _tmp271_ = 0;
-                               ValaGirParserParameterInfo* _tmp276_ = NULL;
-                               ValaParameter* _tmp277_ = NULL;
-                               ValaList* _tmp278_ = NULL;
+                               ValaList* _tmp272_ = NULL;
+                               gint _tmp273_ = 0;
+                               gint _tmp274_ = 0;
                                ValaGirParserParameterInfo* _tmp279_ = NULL;
-                               gint _tmp280_ = 0;
-                               gpointer _tmp281_ = NULL;
+                               ValaParameter* _tmp280_ = NULL;
+                               ValaList* _tmp281_ = NULL;
                                ValaGirParserParameterInfo* _tmp282_ = NULL;
-                               _tmp267_ = info;
-                               _tmp268_ = _tmp267_->array_length_idx;
-                               _tmp269_ = parameters;
-                               _tmp270_ = vala_collection_get_size ((ValaCollection*) _tmp269_);
-                               _tmp271_ = _tmp270_;
-                               if (_tmp268_ >= _tmp271_) {
-                                       ValaGirParserParameterInfo* _tmp272_ = NULL;
-                                       ValaParameter* _tmp273_ = NULL;
-                                       ValaSourceReference* _tmp274_ = NULL;
-                                       ValaSourceReference* _tmp275_ = NULL;
-                                       _tmp272_ = info;
-                                       _tmp273_ = _tmp272_->param;
-                                       _tmp274_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp273_);
-                                       _tmp275_ = _tmp274_;
-                                       vala_report_error (_tmp275_, "invalid array_length index");
+                               gint _tmp283_ = 0;
+                               gpointer _tmp284_ = NULL;
+                               ValaGirParserParameterInfo* _tmp285_ = NULL;
+                               _tmp270_ = info;
+                               _tmp271_ = _tmp270_->array_length_idx;
+                               _tmp272_ = parameters;
+                               _tmp273_ = vala_collection_get_size ((ValaCollection*) _tmp272_);
+                               _tmp274_ = _tmp273_;
+                               if (_tmp271_ >= _tmp274_) {
+                                       ValaGirParserParameterInfo* _tmp275_ = NULL;
+                                       ValaParameter* _tmp276_ = NULL;
+                                       ValaSourceReference* _tmp277_ = NULL;
+                                       ValaSourceReference* _tmp278_ = NULL;
+                                       _tmp275_ = info;
+                                       _tmp276_ = _tmp275_->param;
+                                       _tmp277_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp276_);
+                                       _tmp278_ = _tmp277_;
+                                       vala_report_error (_tmp278_, "invalid array_length index");
                                        _vala_gir_parser_parameter_info_unref0 (info);
                                        continue;
                                }
-                               _tmp276_ = info;
-                               _tmp277_ = _tmp276_->param;
-                               _tmp278_ = parameters;
                                _tmp279_ = info;
-                               _tmp280_ = _tmp279_->array_length_idx;
-                               _tmp281_ = vala_list_get (_tmp278_, _tmp280_);
-                               _tmp282_ = (ValaGirParserParameterInfo*) _tmp281_;
-                               vala_gir_parser_set_array_ccode (self, (ValaSymbol*) _tmp277_, _tmp282_);
-                               _vala_gir_parser_parameter_info_unref0 (_tmp282_);
+                               _tmp280_ = _tmp279_->param;
+                               _tmp281_ = parameters;
+                               _tmp282_ = info;
+                               _tmp283_ = _tmp282_->array_length_idx;
+                               _tmp284_ = vala_list_get (_tmp281_, _tmp283_);
+                               _tmp285_ = (ValaGirParserParameterInfo*) _tmp284_;
+                               vala_gir_parser_set_array_ccode (self, (ValaSymbol*) _tmp280_, _tmp285_);
+                               _vala_gir_parser_parameter_info_unref0 (_tmp285_);
                        }
-                       _tmp283_ = info;
-                       _tmp284_ = _tmp283_->closure_idx;
-                       if (_tmp284_ != (-1)) {
-                               ValaGirParserParameterInfo* _tmp285_ = NULL;
-                               gint _tmp286_ = 0;
-                               ValaList* _tmp287_ = NULL;
-                               gint _tmp288_ = 0;
+                       _tmp286_ = info;
+                       _tmp287_ = _tmp286_->closure_idx;
+                       if (_tmp287_ != (-1)) {
+                               ValaGirParserParameterInfo* _tmp288_ = NULL;
                                gint _tmp289_ = 0;
-                               ValaList* _tmp294_ = NULL;
-                               ValaGirParserParameterInfo* _tmp295_ = NULL;
-                               gint _tmp296_ = 0;
-                               gpointer _tmp297_ = NULL;
+                               ValaList* _tmp290_ = NULL;
+                               gint _tmp291_ = 0;
+                               gint _tmp292_ = 0;
+                               ValaList* _tmp297_ = NULL;
                                ValaGirParserParameterInfo* _tmp298_ = NULL;
-                               gfloat _tmp299_ = 0.0F;
-                               gchar* _tmp300_ = NULL;
-                               gchar* _tmp301_ = NULL;
-                               ValaGirParserParameterInfo* _tmp302_ = NULL;
-                               gfloat _tmp303_ = 0.0F;
+                               gint _tmp299_ = 0;
+                               gpointer _tmp300_ = NULL;
+                               ValaGirParserParameterInfo* _tmp301_ = NULL;
+                               gfloat _tmp302_ = 0.0F;
+                               gchar* _tmp303_ = NULL;
                                gchar* _tmp304_ = NULL;
-                               gchar* _tmp305_ = NULL;
-                               gboolean _tmp306_ = FALSE;
-                               _tmp285_ = info;
-                               _tmp286_ = _tmp285_->closure_idx;
-                               _tmp287_ = parameters;
-                               _tmp288_ = vala_collection_get_size ((ValaCollection*) _tmp287_);
-                               _tmp289_ = _tmp288_;
-                               if (_tmp286_ >= _tmp289_) {
-                                       ValaGirParserParameterInfo* _tmp290_ = NULL;
-                                       ValaParameter* _tmp291_ = NULL;
-                                       ValaSourceReference* _tmp292_ = NULL;
-                                       ValaSourceReference* _tmp293_ = NULL;
-                                       _tmp290_ = info;
-                                       _tmp291_ = _tmp290_->param;
-                                       _tmp292_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp291_);
-                                       _tmp293_ = _tmp292_;
-                                       vala_report_error (_tmp293_, "invalid closure index");
+                               ValaGirParserParameterInfo* _tmp305_ = NULL;
+                               gfloat _tmp306_ = 0.0F;
+                               gchar* _tmp307_ = NULL;
+                               gchar* _tmp308_ = NULL;
+                               gboolean _tmp309_ = FALSE;
+                               _tmp288_ = info;
+                               _tmp289_ = _tmp288_->closure_idx;
+                               _tmp290_ = parameters;
+                               _tmp291_ = vala_collection_get_size ((ValaCollection*) _tmp290_);
+                               _tmp292_ = _tmp291_;
+                               if (_tmp289_ >= _tmp292_) {
+                                       ValaGirParserParameterInfo* _tmp293_ = NULL;
+                                       ValaParameter* _tmp294_ = NULL;
+                                       ValaSourceReference* _tmp295_ = NULL;
+                                       ValaSourceReference* _tmp296_ = NULL;
+                                       _tmp293_ = info;
+                                       _tmp294_ = _tmp293_->param;
+                                       _tmp295_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp294_);
+                                       _tmp296_ = _tmp295_;
+                                       vala_report_error (_tmp296_, "invalid closure index");
                                        _vala_gir_parser_parameter_info_unref0 (info);
                                        continue;
                                }
-                               _tmp294_ = parameters;
-                               _tmp295_ = info;
-                               _tmp296_ = _tmp295_->closure_idx;
-                               _tmp297_ = vala_list_get (_tmp294_, _tmp296_);
-                               _tmp298_ = (ValaGirParserParameterInfo*) _tmp297_;
-                               _tmp299_ = _tmp298_->vala_idx;
-                               _tmp300_ = g_strdup_printf ("%g", (gdouble) _tmp299_);
-                               _tmp301_ = _tmp300_;
-                               _tmp302_ = info;
-                               _tmp303_ = _tmp302_->vala_idx;
-                               _tmp304_ = g_strdup_printf ("%g", _tmp303_ + 0.1);
-                               _tmp305_ = _tmp304_;
-                               _tmp306_ = g_strcmp0 (_tmp301_, _tmp305_) != 0;
-                               _g_free0 (_tmp305_);
-                               _g_free0 (_tmp301_);
-                               _vala_gir_parser_parameter_info_unref0 (_tmp298_);
-                               if (_tmp306_) {
-                                       ValaGirParserParameterInfo* _tmp307_ = NULL;
-                                       ValaParameter* _tmp308_ = NULL;
-                                       ValaList* _tmp309_ = NULL;
+                               _tmp297_ = parameters;
+                               _tmp298_ = info;
+                               _tmp299_ = _tmp298_->closure_idx;
+                               _tmp300_ = vala_list_get (_tmp297_, _tmp299_);
+                               _tmp301_ = (ValaGirParserParameterInfo*) _tmp300_;
+                               _tmp302_ = _tmp301_->vala_idx;
+                               _tmp303_ = g_strdup_printf ("%g", (gdouble) _tmp302_);
+                               _tmp304_ = _tmp303_;
+                               _tmp305_ = info;
+                               _tmp306_ = _tmp305_->vala_idx;
+                               _tmp307_ = g_strdup_printf ("%g", _tmp306_ + 0.1);
+                               _tmp308_ = _tmp307_;
+                               _tmp309_ = g_strcmp0 (_tmp304_, _tmp308_) != 0;
+                               _g_free0 (_tmp308_);
+                               _g_free0 (_tmp304_);
+                               _vala_gir_parser_parameter_info_unref0 (_tmp301_);
+                               if (_tmp309_) {
                                        ValaGirParserParameterInfo* _tmp310_ = NULL;
-                                       gint _tmp311_ = 0;
-                                       gpointer _tmp312_ = NULL;
+                                       ValaParameter* _tmp311_ = NULL;
+                                       ValaList* _tmp312_ = NULL;
                                        ValaGirParserParameterInfo* _tmp313_ = NULL;
-                                       gfloat _tmp314_ = 0.0F;
-                                       _tmp307_ = info;
-                                       _tmp308_ = _tmp307_->param;
-                                       _tmp309_ = parameters;
+                                       gint _tmp314_ = 0;
+                                       gpointer _tmp315_ = NULL;
+                                       ValaGirParserParameterInfo* _tmp316_ = NULL;
+                                       gfloat _tmp317_ = 0.0F;
                                        _tmp310_ = info;
-                                       _tmp311_ = _tmp310_->closure_idx;
-                                       _tmp312_ = vala_list_get (_tmp309_, _tmp311_);
-                                       _tmp313_ = (ValaGirParserParameterInfo*) _tmp312_;
-                                       _tmp314_ = _tmp313_->vala_idx;
-                                       vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp308_, "CCode", "delegate_target_pos", (gdouble) _tmp314_, NULL);
-                                       _vala_gir_parser_parameter_info_unref0 (_tmp313_);
+                                       _tmp311_ = _tmp310_->param;
+                                       _tmp312_ = parameters;
+                                       _tmp313_ = info;
+                                       _tmp314_ = _tmp313_->closure_idx;
+                                       _tmp315_ = vala_list_get (_tmp312_, _tmp314_);
+                                       _tmp316_ = (ValaGirParserParameterInfo*) _tmp315_;
+                                       _tmp317_ = _tmp316_->vala_idx;
+                                       vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp311_, "CCode", "delegate_target_pos", (gdouble) _tmp317_, NULL);
+                                       _vala_gir_parser_parameter_info_unref0 (_tmp316_);
                                }
                        }
-                       _tmp315_ = info;
-                       _tmp316_ = _tmp315_->destroy_idx;
-                       if (_tmp316_ != (-1)) {
-                               ValaGirParserParameterInfo* _tmp317_ = NULL;
-                               gint _tmp318_ = 0;
-                               ValaList* _tmp319_ = NULL;
-                               gint _tmp320_ = 0;
+                       _tmp318_ = info;
+                       _tmp319_ = _tmp318_->destroy_idx;
+                       if (_tmp319_ != (-1)) {
+                               ValaGirParserParameterInfo* _tmp320_ = NULL;
                                gint _tmp321_ = 0;
-                               ValaList* _tmp326_ = NULL;
-                               ValaGirParserParameterInfo* _tmp327_ = NULL;
-                               gint _tmp328_ = 0;
-                               gpointer _tmp329_ = NULL;
+                               ValaList* _tmp322_ = NULL;
+                               gint _tmp323_ = 0;
+                               gint _tmp324_ = 0;
+                               ValaList* _tmp329_ = NULL;
                                ValaGirParserParameterInfo* _tmp330_ = NULL;
-                               gfloat _tmp331_ = 0.0F;
-                               gchar* _tmp332_ = NULL;
-                               gchar* _tmp333_ = NULL;
-                               ValaGirParserParameterInfo* _tmp334_ = NULL;
-                               gfloat _tmp335_ = 0.0F;
+                               gint _tmp331_ = 0;
+                               gpointer _tmp332_ = NULL;
+                               ValaGirParserParameterInfo* _tmp333_ = NULL;
+                               gfloat _tmp334_ = 0.0F;
+                               gchar* _tmp335_ = NULL;
                                gchar* _tmp336_ = NULL;
-                               gchar* _tmp337_ = NULL;
-                               gboolean _tmp338_ = FALSE;
-                               _tmp317_ = info;
-                               _tmp318_ = _tmp317_->destroy_idx;
-                               _tmp319_ = parameters;
-                               _tmp320_ = vala_collection_get_size ((ValaCollection*) _tmp319_);
-                               _tmp321_ = _tmp320_;
-                               if (_tmp318_ >= _tmp321_) {
-                                       ValaGirParserParameterInfo* _tmp322_ = NULL;
-                                       ValaParameter* _tmp323_ = NULL;
-                                       ValaSourceReference* _tmp324_ = NULL;
-                                       ValaSourceReference* _tmp325_ = NULL;
-                                       _tmp322_ = info;
-                                       _tmp323_ = _tmp322_->param;
-                                       _tmp324_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp323_);
-                                       _tmp325_ = _tmp324_;
-                                       vala_report_error (_tmp325_, "invalid destroy index");
+                               ValaGirParserParameterInfo* _tmp337_ = NULL;
+                               gfloat _tmp338_ = 0.0F;
+                               gchar* _tmp339_ = NULL;
+                               gchar* _tmp340_ = NULL;
+                               gboolean _tmp341_ = FALSE;
+                               _tmp320_ = info;
+                               _tmp321_ = _tmp320_->destroy_idx;
+                               _tmp322_ = parameters;
+                               _tmp323_ = vala_collection_get_size ((ValaCollection*) _tmp322_);
+                               _tmp324_ = _tmp323_;
+                               if (_tmp321_ >= _tmp324_) {
+                                       ValaGirParserParameterInfo* _tmp325_ = NULL;
+                                       ValaParameter* _tmp326_ = NULL;
+                                       ValaSourceReference* _tmp327_ = NULL;
+                                       ValaSourceReference* _tmp328_ = NULL;
+                                       _tmp325_ = info;
+                                       _tmp326_ = _tmp325_->param;
+                                       _tmp327_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp326_);
+                                       _tmp328_ = _tmp327_;
+                                       vala_report_error (_tmp328_, "invalid destroy index");
                                        _vala_gir_parser_parameter_info_unref0 (info);
                                        continue;
                                }
-                               _tmp326_ = parameters;
-                               _tmp327_ = info;
-                               _tmp328_ = _tmp327_->destroy_idx;
-                               _tmp329_ = vala_list_get (_tmp326_, _tmp328_);
-                               _tmp330_ = (ValaGirParserParameterInfo*) _tmp329_;
-                               _tmp331_ = _tmp330_->vala_idx;
-                               _tmp332_ = g_strdup_printf ("%g", (gdouble) _tmp331_);
-                               _tmp333_ = _tmp332_;
-                               _tmp334_ = info;
-                               _tmp335_ = _tmp334_->vala_idx;
-                               _tmp336_ = g_strdup_printf ("%g", _tmp335_ + 0.2);
-                               _tmp337_ = _tmp336_;
-                               _tmp338_ = g_strcmp0 (_tmp333_, _tmp337_) != 0;
-                               _g_free0 (_tmp337_);
-                               _g_free0 (_tmp333_);
-                               _vala_gir_parser_parameter_info_unref0 (_tmp330_);
-                               if (_tmp338_) {
-                                       ValaGirParserParameterInfo* _tmp339_ = NULL;
-                                       ValaParameter* _tmp340_ = NULL;
-                                       ValaList* _tmp341_ = NULL;
+                               _tmp329_ = parameters;
+                               _tmp330_ = info;
+                               _tmp331_ = _tmp330_->destroy_idx;
+                               _tmp332_ = vala_list_get (_tmp329_, _tmp331_);
+                               _tmp333_ = (ValaGirParserParameterInfo*) _tmp332_;
+                               _tmp334_ = _tmp333_->vala_idx;
+                               _tmp335_ = g_strdup_printf ("%g", (gdouble) _tmp334_);
+                               _tmp336_ = _tmp335_;
+                               _tmp337_ = info;
+                               _tmp338_ = _tmp337_->vala_idx;
+                               _tmp339_ = g_strdup_printf ("%g", _tmp338_ + 0.2);
+                               _tmp340_ = _tmp339_;
+                               _tmp341_ = g_strcmp0 (_tmp336_, _tmp340_) != 0;
+                               _g_free0 (_tmp340_);
+                               _g_free0 (_tmp336_);
+                               _vala_gir_parser_parameter_info_unref0 (_tmp333_);
+                               if (_tmp341_) {
                                        ValaGirParserParameterInfo* _tmp342_ = NULL;
-                                       gint _tmp343_ = 0;
-                                       gpointer _tmp344_ = NULL;
+                                       ValaParameter* _tmp343_ = NULL;
+                                       ValaList* _tmp344_ = NULL;
                                        ValaGirParserParameterInfo* _tmp345_ = NULL;
-                                       gfloat _tmp346_ = 0.0F;
-                                       _tmp339_ = info;
-                                       _tmp340_ = _tmp339_->param;
-                                       _tmp341_ = parameters;
+                                       gint _tmp346_ = 0;
+                                       gpointer _tmp347_ = NULL;
+                                       ValaGirParserParameterInfo* _tmp348_ = NULL;
+                                       gfloat _tmp349_ = 0.0F;
                                        _tmp342_ = info;
-                                       _tmp343_ = _tmp342_->destroy_idx;
-                                       _tmp344_ = vala_list_get (_tmp341_, _tmp343_);
-                                       _tmp345_ = (ValaGirParserParameterInfo*) _tmp344_;
-                                       _tmp346_ = _tmp345_->vala_idx;
-                                       vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp340_, "CCode", "destroy_notify_pos", (gdouble) _tmp346_, NULL);
-                                       _vala_gir_parser_parameter_info_unref0 (_tmp345_);
+                                       _tmp343_ = _tmp342_->param;
+                                       _tmp344_ = parameters;
+                                       _tmp345_ = info;
+                                       _tmp346_ = _tmp345_->destroy_idx;
+                                       _tmp347_ = vala_list_get (_tmp344_, _tmp346_);
+                                       _tmp348_ = (ValaGirParserParameterInfo*) _tmp347_;
+                                       _tmp349_ = _tmp348_->vala_idx;
+                                       vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp343_, "CCode", "destroy_notify_pos", (gdouble) _tmp349_, NULL);
+                                       _vala_gir_parser_parameter_info_unref0 (_tmp348_);
                                }
                        }
-                       _tmp347_ = info;
-                       _tmp348_ = _tmp347_->is_async;
-                       if (_tmp348_) {
+                       _tmp350_ = info;
+                       _tmp351_ = _tmp350_->is_async;
+                       if (_tmp351_) {
                                ValaDataType* resolved_type = NULL;
-                               ValaGirParserParameterInfo* _tmp349_ = NULL;
-                               ValaParameter* _tmp350_ = NULL;
-                               ValaDataType* _tmp351_ = NULL;
-                               ValaDataType* _tmp352_ = NULL;
-                               ValaDataType* _tmp353_ = NULL;
+                               ValaGirParserParameterInfo* _tmp352_ = NULL;
+                               ValaParameter* _tmp353_ = NULL;
                                ValaDataType* _tmp354_ = NULL;
-                               ValaDataType* _tmp364_ = NULL;
-                               _tmp349_ = info;
-                               _tmp350_ = _tmp349_->param;
-                               _tmp351_ = vala_variable_get_variable_type ((ValaVariable*) _tmp350_);
-                               _tmp352_ = _tmp351_;
-                               _tmp353_ = _vala_code_node_ref0 (_tmp352_);
-                               resolved_type = _tmp353_;
-                               _tmp354_ = resolved_type;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp354_, VALA_TYPE_UNRESOLVED_TYPE)) {
+                               ValaDataType* _tmp355_ = NULL;
+                               ValaDataType* _tmp356_ = NULL;
+                               ValaDataType* _tmp357_ = NULL;
+                               ValaDataType* _tmp367_ = NULL;
+                               _tmp352_ = info;
+                               _tmp353_ = _tmp352_->param;
+                               _tmp354_ = vala_variable_get_variable_type ((ValaVariable*) _tmp353_);
+                               _tmp355_ = _tmp354_;
+                               _tmp356_ = _vala_code_node_ref0 (_tmp355_);
+                               resolved_type = _tmp356_;
+                               _tmp357_ = resolved_type;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp357_, VALA_TYPE_UNRESOLVED_TYPE)) {
                                        ValaSymbol* resolved_symbol = NULL;
-                                       ValaGirParserNode* _tmp355_ = NULL;
-                                       ValaGirParserNode* _tmp356_ = NULL;
-                                       ValaDataType* _tmp357_ = NULL;
-                                       ValaUnresolvedSymbol* _tmp358_ = NULL;
-                                       ValaUnresolvedSymbol* _tmp359_ = NULL;
-                                       ValaSymbol* _tmp360_ = NULL;
-                                       ValaSymbol* _tmp361_ = NULL;
-                                       _tmp355_ = node;
-                                       _tmp356_ = _tmp355_->parent;
-                                       _tmp357_ = resolved_type;
-                                       _tmp358_ = vala_unresolved_type_get_unresolved_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp357_, VALA_TYPE_UNRESOLVED_TYPE, ValaUnresolvedType));
-                                       _tmp359_ = _tmp358_;
-                                       _tmp360_ = vala_gir_parser_resolve_symbol (self, _tmp356_, _tmp359_);
-                                       resolved_symbol = _tmp360_;
-                                       _tmp361_ = resolved_symbol;
-                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp361_, VALA_TYPE_DELEGATE)) {
-                                               ValaSymbol* _tmp362_ = NULL;
-                                               ValaDelegateType* _tmp363_ = NULL;
-                                               _tmp362_ = resolved_symbol;
-                                               _tmp363_ = vala_delegate_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp362_, VALA_TYPE_DELEGATE, ValaDelegate));
+                                       ValaGirParserNode* _tmp358_ = NULL;
+                                       ValaGirParserNode* _tmp359_ = NULL;
+                                       ValaDataType* _tmp360_ = NULL;
+                                       ValaUnresolvedSymbol* _tmp361_ = NULL;
+                                       ValaUnresolvedSymbol* _tmp362_ = NULL;
+                                       ValaSymbol* _tmp363_ = NULL;
+                                       ValaSymbol* _tmp364_ = NULL;
+                                       _tmp358_ = node;
+                                       _tmp359_ = _tmp358_->parent;
+                                       _tmp360_ = resolved_type;
+                                       _tmp361_ = vala_unresolved_type_get_unresolved_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp360_, VALA_TYPE_UNRESOLVED_TYPE, ValaUnresolvedType));
+                                       _tmp362_ = _tmp361_;
+                                       _tmp363_ = vala_gir_parser_resolve_symbol (self, _tmp359_, _tmp362_);
+                                       resolved_symbol = _tmp363_;
+                                       _tmp364_ = resolved_symbol;
+                                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp364_, VALA_TYPE_DELEGATE)) {
+                                               ValaSymbol* _tmp365_ = NULL;
+                                               ValaDelegateType* _tmp366_ = NULL;
+                                               _tmp365_ = resolved_symbol;
+                                               _tmp366_ = vala_delegate_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp365_, VALA_TYPE_DELEGATE, ValaDelegate));
                                                _vala_code_node_unref0 (resolved_type);
-                                               resolved_type = (ValaDataType*) _tmp363_;
+                                               resolved_type = (ValaDataType*) _tmp366_;
                                        }
                                        _vala_code_node_unref0 (resolved_symbol);
                                }
-                               _tmp364_ = resolved_type;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp364_, VALA_TYPE_DELEGATE_TYPE)) {
+                               _tmp367_ = resolved_type;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp367_, VALA_TYPE_DELEGATE_TYPE)) {
                                        ValaDelegate* d = NULL;
-                                       ValaDataType* _tmp365_ = NULL;
-                                       ValaDelegate* _tmp366_ = NULL;
-                                       ValaDelegate* _tmp367_ = NULL;
-                                       ValaDelegate* _tmp368_ = NULL;
-                                       gboolean _tmp369_ = FALSE;
+                                       ValaDataType* _tmp368_ = NULL;
+                                       ValaDelegate* _tmp369_ = NULL;
                                        ValaDelegate* _tmp370_ = NULL;
-                                       const gchar* _tmp371_ = NULL;
-                                       const gchar* _tmp372_ = NULL;
-                                       _tmp365_ = resolved_type;
-                                       _tmp366_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp365_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                                       _tmp367_ = _tmp366_;
-                                       _tmp368_ = _vala_code_node_ref0 (_tmp367_);
-                                       d = _tmp368_;
-                                       _tmp370_ = d;
-                                       _tmp371_ = vala_symbol_get_name ((ValaSymbol*) _tmp370_);
-                                       _tmp372_ = _tmp371_;
-                                       if (g_strcmp0 (_tmp372_, "DestroyNotify") == 0) {
-                                               ValaDelegate* _tmp373_ = NULL;
-                                               ValaSymbol* _tmp374_ = NULL;
-                                               ValaSymbol* _tmp375_ = NULL;
-                                               const gchar* _tmp376_ = NULL;
-                                               const gchar* _tmp377_ = NULL;
-                                               _tmp373_ = d;
-                                               _tmp374_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp373_);
-                                               _tmp375_ = _tmp374_;
-                                               _tmp376_ = vala_symbol_get_name (_tmp375_);
-                                               _tmp377_ = _tmp376_;
-                                               _tmp369_ = g_strcmp0 (_tmp377_, "GLib") == 0;
+                                       ValaDelegate* _tmp371_ = NULL;
+                                       gboolean _tmp372_ = FALSE;
+                                       ValaDelegate* _tmp373_ = NULL;
+                                       const gchar* _tmp374_ = NULL;
+                                       const gchar* _tmp375_ = NULL;
+                                       _tmp368_ = resolved_type;
+                                       _tmp369_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp368_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                                       _tmp370_ = _tmp369_;
+                                       _tmp371_ = _vala_code_node_ref0 (_tmp370_);
+                                       d = _tmp371_;
+                                       _tmp373_ = d;
+                                       _tmp374_ = vala_symbol_get_name ((ValaSymbol*) _tmp373_);
+                                       _tmp375_ = _tmp374_;
+                                       if (g_strcmp0 (_tmp375_, "DestroyNotify") == 0) {
+                                               ValaDelegate* _tmp376_ = NULL;
+                                               ValaSymbol* _tmp377_ = NULL;
+                                               ValaSymbol* _tmp378_ = NULL;
+                                               const gchar* _tmp379_ = NULL;
+                                               const gchar* _tmp380_ = NULL;
+                                               _tmp376_ = d;
+                                               _tmp377_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp376_);
+                                               _tmp378_ = _tmp377_;
+                                               _tmp379_ = vala_symbol_get_name (_tmp378_);
+                                               _tmp380_ = _tmp379_;
+                                               _tmp372_ = g_strcmp0 (_tmp380_, "GLib") == 0;
                                        } else {
-                                               _tmp369_ = FALSE;
+                                               _tmp372_ = FALSE;
                                        }
-                                       if (!_tmp369_) {
-                                               ValaGirParserParameterInfo* _tmp378_ = NULL;
-                                               ValaParameter* _tmp379_ = NULL;
-                                               ValaGirParserParameterInfo* _tmp380_ = NULL;
-                                               ValaParameter* _tmp381_ = NULL;
-                                               ValaDataType* _tmp382_ = NULL;
-                                               ValaDataType* _tmp383_ = NULL;
-                                               _tmp378_ = info;
-                                               _tmp379_ = _tmp378_->param;
-                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp379_, "CCode", "scope", "async", NULL);
-                                               _tmp380_ = info;
-                                               _tmp381_ = _tmp380_->param;
-                                               _tmp382_ = vala_variable_get_variable_type ((ValaVariable*) _tmp381_);
-                                               _tmp383_ = _tmp382_;
-                                               vala_data_type_set_value_owned (_tmp383_, TRUE);
+                                       if (!_tmp372_) {
+                                               ValaGirParserParameterInfo* _tmp381_ = NULL;
+                                               ValaParameter* _tmp382_ = NULL;
+                                               ValaGirParserParameterInfo* _tmp383_ = NULL;
+                                               ValaParameter* _tmp384_ = NULL;
+                                               ValaDataType* _tmp385_ = NULL;
+                                               ValaDataType* _tmp386_ = NULL;
+                                               _tmp381_ = info;
+                                               _tmp382_ = _tmp381_->param;
+                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp382_, "CCode", "scope", "async", NULL);
+                                               _tmp383_ = info;
+                                               _tmp384_ = _tmp383_->param;
+                                               _tmp385_ = vala_variable_get_variable_type ((ValaVariable*) _tmp384_);
+                                               _tmp386_ = _tmp385_;
+                                               vala_data_type_set_value_owned (_tmp386_, TRUE);
                                        }
                                        _vala_code_node_unref0 (d);
                                }
@@ -13544,57 +13795,57 @@ static void vala_gir_parser_process_callable (ValaGirParser* self, ValaGirParser
                }
                _vala_iterable_unref0 (_info_list);
        }
-       _tmp385_ = return_type;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp385_, VALA_TYPE_ARRAY_TYPE)) {
-               ValaGirParserNode* _tmp386_ = NULL;
-               gint _tmp387_ = 0;
-               _tmp386_ = node;
-               _tmp387_ = _tmp386_->return_array_length_idx;
-               _tmp384_ = _tmp387_ >= 0;
+       _tmp388_ = return_type;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp388_, VALA_TYPE_ARRAY_TYPE)) {
+               ValaGirParserNode* _tmp389_ = NULL;
+               gint _tmp390_ = 0;
+               _tmp389_ = node;
+               _tmp390_ = _tmp389_->return_array_length_idx;
+               _tmp387_ = _tmp390_ >= 0;
        } else {
-               _tmp384_ = FALSE;
-       }
-       if (_tmp384_) {
-               ValaSymbol* _tmp388_ = NULL;
-               ValaList* _tmp389_ = NULL;
-               ValaGirParserNode* _tmp390_ = NULL;
-               gint _tmp391_ = 0;
-               gpointer _tmp392_ = NULL;
-               ValaGirParserParameterInfo* _tmp393_ = NULL;
-               _tmp388_ = s;
-               _tmp389_ = parameters;
-               _tmp390_ = node;
-               _tmp391_ = _tmp390_->return_array_length_idx;
-               _tmp392_ = vala_list_get (_tmp389_, _tmp391_);
-               _tmp393_ = (ValaGirParserParameterInfo*) _tmp392_;
-               vala_gir_parser_set_array_ccode (self, _tmp388_, _tmp393_);
-               _vala_gir_parser_parameter_info_unref0 (_tmp393_);
-       }
-       _tmp394_ = s;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp394_, VALA_TYPE_METHOD)) {
-               ValaSymbol* _tmp395_ = NULL;
-               ValaDataType* _tmp396_ = NULL;
-               _tmp395_ = s;
-               _tmp396_ = return_type;
-               vala_method_set_return_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp395_, VALA_TYPE_METHOD, ValaMethod), _tmp396_);
+               _tmp387_ = FALSE;
+       }
+       if (_tmp387_) {
+               ValaSymbol* _tmp391_ = NULL;
+               ValaList* _tmp392_ = NULL;
+               ValaGirParserNode* _tmp393_ = NULL;
+               gint _tmp394_ = 0;
+               gpointer _tmp395_ = NULL;
+               ValaGirParserParameterInfo* _tmp396_ = NULL;
+               _tmp391_ = s;
+               _tmp392_ = parameters;
+               _tmp393_ = node;
+               _tmp394_ = _tmp393_->return_array_length_idx;
+               _tmp395_ = vala_list_get (_tmp392_, _tmp394_);
+               _tmp396_ = (ValaGirParserParameterInfo*) _tmp395_;
+               vala_gir_parser_set_array_ccode (self, _tmp391_, _tmp396_);
+               _vala_gir_parser_parameter_info_unref0 (_tmp396_);
+       }
+       _tmp397_ = s;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp397_, VALA_TYPE_METHOD)) {
+               ValaSymbol* _tmp398_ = NULL;
+               ValaDataType* _tmp399_ = NULL;
+               _tmp398_ = s;
+               _tmp399_ = return_type;
+               vala_method_set_return_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp398_, VALA_TYPE_METHOD, ValaMethod), _tmp399_);
        } else {
-               ValaSymbol* _tmp397_ = NULL;
-               _tmp397_ = s;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp397_, VALA_TYPE_DELEGATE)) {
-                       ValaSymbol* _tmp398_ = NULL;
-                       ValaDataType* _tmp399_ = NULL;
-                       _tmp398_ = s;
-                       _tmp399_ = return_type;
-                       vala_delegate_set_return_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp398_, VALA_TYPE_DELEGATE, ValaDelegate), _tmp399_);
+               ValaSymbol* _tmp400_ = NULL;
+               _tmp400_ = s;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp400_, VALA_TYPE_DELEGATE)) {
+                       ValaSymbol* _tmp401_ = NULL;
+                       ValaDataType* _tmp402_ = NULL;
+                       _tmp401_ = s;
+                       _tmp402_ = return_type;
+                       vala_delegate_set_return_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp401_, VALA_TYPE_DELEGATE, ValaDelegate), _tmp402_);
                } else {
-                       ValaSymbol* _tmp400_ = NULL;
-                       _tmp400_ = s;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp400_, VALA_TYPE_SIGNAL)) {
-                               ValaSymbol* _tmp401_ = NULL;
-                               ValaDataType* _tmp402_ = NULL;
-                               _tmp401_ = s;
-                               _tmp402_ = return_type;
-                               vala_signal_set_return_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp401_, VALA_TYPE_SIGNAL, ValaSignal), _tmp402_);
+                       ValaSymbol* _tmp403_ = NULL;
+                       _tmp403_ = s;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp403_, VALA_TYPE_SIGNAL)) {
+                               ValaSymbol* _tmp404_ = NULL;
+                               ValaDataType* _tmp405_ = NULL;
+                               _tmp404_ = s;
+                               _tmp405_ = return_type;
+                               vala_signal_set_return_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp404_, VALA_TYPE_SIGNAL, ValaSignal), _tmp405_);
                        }
                }
        }
@@ -15272,7 +15523,7 @@ static void vala_gir_parser_value_take_argument (GValue* value, gpointer v_objec
 
 static void vala_gir_parser_argument_class_init (ValaGirParserArgumentClass * klass) {
        vala_gir_parser_argument_parent_class = g_type_class_peek_parent (klass);
-       VALA_GIR_PARSER_ARGUMENT_CLASS (klass)->finalize = vala_gir_parser_argument_finalize;
+       ((ValaGirParserArgumentClass *) klass)->finalize = vala_gir_parser_argument_finalize;
 }
 
 
@@ -15285,6 +15536,7 @@ static void vala_gir_parser_argument_instance_init (ValaGirParserArgument * self
 static void vala_gir_parser_argument_finalize (ValaGirParserArgument* obj) {
        ValaGirParserArgument * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_GIR_PARSER_TYPE_ARGUMENT, ValaGirParserArgument);
+       g_signal_handlers_destroy (self);
        _vala_code_node_unref0 (self->expression);
        _vala_source_reference_unref0 (self->source_reference);
 }
@@ -16024,7 +16276,7 @@ static void vala_gir_parser_value_take_metadata (GValue* value, gpointer v_objec
 
 static void vala_gir_parser_metadata_class_init (ValaGirParserMetadataClass * klass) {
        vala_gir_parser_metadata_parent_class = g_type_class_peek_parent (klass);
-       VALA_GIR_PARSER_METADATA_CLASS (klass)->finalize = vala_gir_parser_metadata_finalize;
+       ((ValaGirParserMetadataClass *) klass)->finalize = vala_gir_parser_metadata_finalize;
 }
 
 
@@ -16051,6 +16303,7 @@ static void vala_gir_parser_metadata_instance_init (ValaGirParserMetadata * self
 static void vala_gir_parser_metadata_finalize (ValaGirParserMetadata* obj) {
        ValaGirParserMetadata * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_GIR_PARSER_TYPE_METADATA, ValaGirParserMetadata);
+       g_signal_handlers_destroy (self);
        _g_pattern_spec_free0 (self->pattern_spec);
        _g_free0 (self->selector);
        _vala_source_reference_unref0 (self->source_reference);
@@ -17167,7 +17420,7 @@ static void vala_gir_parser_value_take_metadata_parser (GValue* value, gpointer
 
 static void vala_gir_parser_metadata_parser_class_init (ValaGirParserMetadataParserClass * klass) {
        vala_gir_parser_metadata_parser_parent_class = g_type_class_peek_parent (klass);
-       VALA_GIR_PARSER_METADATA_PARSER_CLASS (klass)->finalize = vala_gir_parser_metadata_parser_finalize;
+       ((ValaGirParserMetadataParserClass *) klass)->finalize = vala_gir_parser_metadata_parser_finalize;
        g_type_class_add_private (klass, sizeof (ValaGirParserMetadataParserPrivate));
 }
 
@@ -17184,6 +17437,7 @@ static void vala_gir_parser_metadata_parser_instance_init (ValaGirParserMetadata
 static void vala_gir_parser_metadata_parser_finalize (ValaGirParserMetadataParser* obj) {
        ValaGirParserMetadataParser * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_GIR_PARSER_TYPE_METADATA_PARSER, ValaGirParserMetadataParser);
+       g_signal_handlers_destroy (self);
        _vala_gir_parser_metadata_unref0 (self->priv->tree);
        _vala_scanner_unref0 (self->priv->scanner);
        _vala_gir_parser_metadata_unref0 (self->priv->parent_metadata);
@@ -17648,7 +17902,10 @@ static gchar* vala_gir_parser_node_get_lower_case_cprefix (ValaGirParserNode* se
        gchar* _tmp3_ = NULL;
        gboolean _tmp4_ = FALSE;
        const gchar* _tmp5_ = NULL;
-       const gchar* _tmp15_ = NULL;
+       gboolean _tmp19_ = FALSE;
+       gboolean _tmp20_ = FALSE;
+       const gchar* _tmp21_ = NULL;
+       const gchar* _tmp54_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        _tmp0_ = self->name;
        if (_tmp0_ == NULL) {
@@ -17680,29 +17937,158 @@ static gchar* vala_gir_parser_node_get_lower_case_cprefix (ValaGirParserNode* se
                ValaGirParserMetadata* _tmp9_ = NULL;
                gboolean _tmp10_ = FALSE;
                _tmp9_ = self->metadata;
-               _tmp10_ = vala_gir_parser_metadata_has_argument (_tmp9_, VALA_GIR_PARSER_ARGUMENT_TYPE_CPREFIX);
+               _tmp10_ = vala_gir_parser_metadata_has_argument (_tmp9_, VALA_GIR_PARSER_ARGUMENT_TYPE_LOWER_CASE_CPREFIX);
                if (_tmp10_) {
                        ValaGirParserMetadata* _tmp11_ = NULL;
                        gchar* _tmp12_ = NULL;
                        _tmp11_ = self->metadata;
-                       _tmp12_ = vala_gir_parser_metadata_get_string (_tmp11_, VALA_GIR_PARSER_ARGUMENT_TYPE_CPREFIX);
+                       _tmp12_ = vala_gir_parser_metadata_get_string (_tmp11_, VALA_GIR_PARSER_ARGUMENT_TYPE_LOWER_CASE_CPREFIX);
                        _g_free0 (prefix);
                        prefix = _tmp12_;
                } else {
-                       ValaSymbol* _tmp13_ = NULL;
-                       gchar* _tmp14_ = NULL;
-                       _tmp13_ = self->symbol;
-                       _tmp14_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp13_, "CCode", "cprefix", NULL);
-                       _g_free0 (prefix);
-                       prefix = _tmp14_;
+                       ValaGirParserMetadata* _tmp13_ = NULL;
+                       gboolean _tmp14_ = FALSE;
+                       _tmp13_ = self->metadata;
+                       _tmp14_ = vala_gir_parser_metadata_has_argument (_tmp13_, VALA_GIR_PARSER_ARGUMENT_TYPE_CPREFIX);
+                       if (_tmp14_) {
+                               ValaGirParserMetadata* _tmp15_ = NULL;
+                               gchar* _tmp16_ = NULL;
+                               _tmp15_ = self->metadata;
+                               _tmp16_ = vala_gir_parser_metadata_get_string (_tmp15_, VALA_GIR_PARSER_ARGUMENT_TYPE_CPREFIX);
+                               _g_free0 (prefix);
+                               prefix = _tmp16_;
+                       } else {
+                               ValaSymbol* _tmp17_ = NULL;
+                               gchar* _tmp18_ = NULL;
+                               _tmp17_ = self->symbol;
+                               _tmp18_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp17_, "CCode", "cprefix", NULL);
+                               _g_free0 (prefix);
+                               prefix = _tmp18_;
+                       }
                }
        }
-       _tmp15_ = prefix;
-       if (_tmp15_ == NULL) {
-               gchar* _tmp16_ = NULL;
-               _tmp16_ = vala_gir_parser_node_get_default_lower_case_cprefix (self);
+       _tmp21_ = prefix;
+       if (_tmp21_ == NULL) {
+               ValaMap* _tmp22_ = NULL;
+               _tmp22_ = self->girdata;
+               _tmp20_ = _tmp22_ != NULL;
+       } else {
+               _tmp20_ = FALSE;
+       }
+       if (_tmp20_) {
+               gboolean _tmp23_ = FALSE;
+               ValaMap* _tmp24_ = NULL;
+               gboolean _tmp25_ = FALSE;
+               _tmp24_ = self->girdata;
+               _tmp25_ = vala_map_contains (_tmp24_, "c:symbol-prefix");
+               if (_tmp25_) {
+                       _tmp23_ = TRUE;
+               } else {
+                       ValaMap* _tmp26_ = NULL;
+                       gboolean _tmp27_ = FALSE;
+                       _tmp26_ = self->girdata;
+                       _tmp27_ = vala_map_contains (_tmp26_, "c:symbol-prefixes");
+                       _tmp23_ = _tmp27_;
+               }
+               _tmp19_ = _tmp23_;
+       } else {
+               _tmp19_ = FALSE;
+       }
+       if (_tmp19_) {
+               ValaGirParserNode* cur = NULL;
+               cur = self;
+               {
+                       gboolean _tmp28_ = FALSE;
+                       _tmp28_ = TRUE;
+                       while (TRUE) {
+                               ValaGirParserNode* _tmp30_ = NULL;
+                               ValaMap* _tmp31_ = NULL;
+                               ValaGirParserNode* _tmp52_ = NULL;
+                               ValaGirParserNode* _tmp53_ = NULL;
+                               if (!_tmp28_) {
+                                       ValaGirParserNode* _tmp29_ = NULL;
+                                       _tmp29_ = cur;
+                                       if (!(_tmp29_ != NULL)) {
+                                               break;
+                                       }
+                               }
+                               _tmp28_ = FALSE;
+                               _tmp30_ = cur;
+                               _tmp31_ = _tmp30_->girdata;
+                               if (_tmp31_ != NULL) {
+                                       gchar* p = NULL;
+                                       ValaGirParserNode* _tmp32_ = NULL;
+                                       ValaMap* _tmp33_ = NULL;
+                                       gpointer _tmp34_ = NULL;
+                                       const gchar* _tmp35_ = NULL;
+                                       const gchar* _tmp46_ = NULL;
+                                       _tmp32_ = cur;
+                                       _tmp33_ = _tmp32_->girdata;
+                                       _tmp34_ = vala_map_get (_tmp33_, "c:symbol-prefix");
+                                       p = (gchar*) _tmp34_;
+                                       _tmp35_ = p;
+                                       if (_tmp35_ == NULL) {
+                                               ValaGirParserNode* _tmp36_ = NULL;
+                                               ValaMap* _tmp37_ = NULL;
+                                               gpointer _tmp38_ = NULL;
+                                               const gchar* _tmp39_ = NULL;
+                                               _tmp36_ = cur;
+                                               _tmp37_ = _tmp36_->girdata;
+                                               _tmp38_ = vala_map_get (_tmp37_, "c:symbol-prefixes");
+                                               _g_free0 (p);
+                                               p = (gchar*) _tmp38_;
+                                               _tmp39_ = p;
+                                               if (_tmp39_ != NULL) {
+                                                       gint idx = 0;
+                                                       const gchar* _tmp40_ = NULL;
+                                                       gint _tmp41_ = 0;
+                                                       gint _tmp42_ = 0;
+                                                       _tmp40_ = p;
+                                                       _tmp41_ = string_index_of (_tmp40_, ",", 0);
+                                                       idx = _tmp41_;
+                                                       _tmp42_ = idx;
+                                                       if (_tmp42_ >= 0) {
+                                                               const gchar* _tmp43_ = NULL;
+                                                               gint _tmp44_ = 0;
+                                                               gchar* _tmp45_ = NULL;
+                                                               _tmp43_ = p;
+                                                               _tmp44_ = idx;
+                                                               _tmp45_ = string_substring (_tmp43_, (glong) 0, (glong) _tmp44_);
+                                                               _g_free0 (p);
+                                                               p = _tmp45_;
+                                                       }
+                                               }
+                                       }
+                                       _tmp46_ = p;
+                                       if (_tmp46_ != NULL) {
+                                               const gchar* _tmp47_ = NULL;
+                                               gchar* _tmp48_ = NULL;
+                                               gchar* _tmp49_ = NULL;
+                                               const gchar* _tmp50_ = NULL;
+                                               gchar* _tmp51_ = NULL;
+                                               _tmp47_ = p;
+                                               _tmp48_ = g_strconcat (_tmp47_, "_", NULL);
+                                               _tmp49_ = _tmp48_;
+                                               _tmp50_ = prefix;
+                                               _tmp51_ = g_strconcat (_tmp49_, _tmp50_, NULL);
+                                               _g_free0 (prefix);
+                                               prefix = _tmp51_;
+                                               _g_free0 (_tmp49_);
+                                       }
+                                       _g_free0 (p);
+                               }
+                               _tmp52_ = cur;
+                               _tmp53_ = _tmp52_->parent;
+                               cur = _tmp53_;
+                       }
+               }
+       }
+       _tmp54_ = prefix;
+       if (_tmp54_ == NULL) {
+               gchar* _tmp55_ = NULL;
+               _tmp55_ = vala_gir_parser_node_get_default_lower_case_cprefix (self);
                _g_free0 (prefix);
-               prefix = _tmp16_;
+               prefix = _tmp55_;
        }
        result = prefix;
        return result;
@@ -17815,8 +18201,9 @@ static gchar* vala_gir_parser_node_get_cprefix (ValaGirParserNode* self) {
        ValaSymbol* _tmp2_ = NULL;
        gchar* _tmp3_ = NULL;
        gboolean _tmp4_ = FALSE;
-       const gchar* _tmp5_ = NULL;
-       const gchar* _tmp9_ = NULL;
+       gboolean _tmp5_ = FALSE;
+       const gchar* _tmp6_ = NULL;
+       const gchar* _tmp19_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        _tmp0_ = self->name;
        if (_tmp0_ == NULL) {
@@ -17828,58 +18215,88 @@ static gchar* vala_gir_parser_node_get_cprefix (ValaGirParserNode* self) {
        _tmp2_ = self->symbol;
        _tmp3_ = vala_code_node_get_attribute_string ((ValaCodeNode*) _tmp2_, "CCode", "cprefix", NULL);
        prefix = _tmp3_;
-       _tmp5_ = prefix;
-       if (_tmp5_ == NULL) {
-               ValaMap* _tmp6_ = NULL;
-               _tmp6_ = self->girdata;
-               _tmp4_ = _tmp6_ != NULL;
+       _tmp6_ = prefix;
+       if (_tmp6_ == NULL) {
+               ValaMap* _tmp7_ = NULL;
+               _tmp7_ = self->girdata;
+               _tmp5_ = _tmp7_ != NULL;
+       } else {
+               _tmp5_ = FALSE;
+       }
+       if (_tmp5_) {
+               ValaMap* _tmp8_ = NULL;
+               gpointer _tmp9_ = NULL;
+               gchar* _tmp10_ = NULL;
+               _tmp8_ = self->girdata;
+               _tmp9_ = vala_map_get (_tmp8_, "c:identifier-prefixes");
+               _tmp10_ = (gchar*) _tmp9_;
+               _tmp4_ = _tmp10_ != NULL;
+               _g_free0 (_tmp10_);
        } else {
                _tmp4_ = FALSE;
        }
        if (_tmp4_) {
-               ValaMap* _tmp7_ = NULL;
-               gpointer _tmp8_ = NULL;
-               _tmp7_ = self->girdata;
-               _tmp8_ = vala_map_get (_tmp7_, "c:identifier-prefixes");
+               ValaMap* _tmp11_ = NULL;
+               gpointer _tmp12_ = NULL;
+               gint idx = 0;
+               const gchar* _tmp13_ = NULL;
+               gint _tmp14_ = 0;
+               gint _tmp15_ = 0;
+               _tmp11_ = self->girdata;
+               _tmp12_ = vala_map_get (_tmp11_, "c:identifier-prefixes");
                _g_free0 (prefix);
-               prefix = (gchar*) _tmp8_;
+               prefix = (gchar*) _tmp12_;
+               _tmp13_ = prefix;
+               _tmp14_ = string_index_of (_tmp13_, ",", 0);
+               idx = _tmp14_;
+               _tmp15_ = idx;
+               if (_tmp15_ != (-1)) {
+                       const gchar* _tmp16_ = NULL;
+                       gint _tmp17_ = 0;
+                       gchar* _tmp18_ = NULL;
+                       _tmp16_ = prefix;
+                       _tmp17_ = idx;
+                       _tmp18_ = string_substring (_tmp16_, (glong) 0, (glong) _tmp17_);
+                       _g_free0 (prefix);
+                       prefix = _tmp18_;
+               }
        }
-       _tmp9_ = prefix;
-       if (_tmp9_ == NULL) {
-               gboolean _tmp10_ = FALSE;
-               ValaSymbol* _tmp11_ = NULL;
-               _tmp11_ = self->symbol;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp11_, VALA_TYPE_ENUM)) {
-                       _tmp10_ = TRUE;
+       _tmp19_ = prefix;
+       if (_tmp19_ == NULL) {
+               gboolean _tmp20_ = FALSE;
+               ValaSymbol* _tmp21_ = NULL;
+               _tmp21_ = self->symbol;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, VALA_TYPE_ENUM)) {
+                       _tmp20_ = TRUE;
                } else {
-                       ValaSymbol* _tmp12_ = NULL;
-                       _tmp12_ = self->symbol;
-                       _tmp10_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp12_, VALA_TYPE_ERROR_DOMAIN);
+                       ValaSymbol* _tmp22_ = NULL;
+                       _tmp22_ = self->symbol;
+                       _tmp20_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp22_, VALA_TYPE_ERROR_DOMAIN);
                }
-               if (_tmp10_) {
-                       ValaGirParserNode* _tmp13_ = NULL;
-                       gchar* _tmp14_ = NULL;
-                       gchar* _tmp15_ = NULL;
-                       gchar* _tmp16_ = NULL;
-                       gchar* _tmp17_ = NULL;
-                       const gchar* _tmp18_ = NULL;
-                       gchar* _tmp19_ = NULL;
-                       _tmp13_ = self->parent;
-                       _tmp14_ = vala_gir_parser_node_get_lower_case_cprefix (_tmp13_);
-                       _tmp15_ = _tmp14_;
-                       _tmp16_ = g_utf8_strup (_tmp15_, (gssize) (-1));
-                       _tmp17_ = _tmp16_;
-                       _tmp18_ = self->name;
-                       _tmp19_ = g_strdup_printf ("%s%s", _tmp17_, _tmp18_);
+               if (_tmp20_) {
+                       ValaGirParserNode* _tmp23_ = NULL;
+                       gchar* _tmp24_ = NULL;
+                       gchar* _tmp25_ = NULL;
+                       gchar* _tmp26_ = NULL;
+                       gchar* _tmp27_ = NULL;
+                       const gchar* _tmp28_ = NULL;
+                       gchar* _tmp29_ = NULL;
+                       _tmp23_ = self->parent;
+                       _tmp24_ = vala_gir_parser_node_get_lower_case_cprefix (_tmp23_);
+                       _tmp25_ = _tmp24_;
+                       _tmp26_ = g_utf8_strup (_tmp25_, (gssize) (-1));
+                       _tmp27_ = _tmp26_;
+                       _tmp28_ = self->name;
+                       _tmp29_ = g_strdup_printf ("%s%s", _tmp27_, _tmp28_);
                        _g_free0 (prefix);
-                       prefix = _tmp19_;
-                       _g_free0 (_tmp17_);
-                       _g_free0 (_tmp15_);
+                       prefix = _tmp29_;
+                       _g_free0 (_tmp27_);
+                       _g_free0 (_tmp25_);
                } else {
-                       gchar* _tmp20_ = NULL;
-                       _tmp20_ = vala_gir_parser_node_get_cname (self);
+                       gchar* _tmp30_ = NULL;
+                       _tmp30_ = vala_gir_parser_node_get_cname (self);
                        _g_free0 (prefix);
-                       prefix = _tmp20_;
+                       prefix = _tmp30_;
                }
        }
        result = prefix;
@@ -18147,6 +18564,118 @@ static gchar* vala_gir_parser_node_get_cheader_filename (ValaGirParserNode* self
 }
 
 
+static gboolean int64_try_parse (const gchar* str, gint64* _result_) {
+       gint64 _vala_result = 0LL;
+       gboolean result = FALSE;
+       gchar* endptr = NULL;
+       const gchar* _tmp0_ = NULL;
+       gchar* _tmp1_ = NULL;
+       gint64 _tmp2_ = 0LL;
+       gchar* _tmp3_ = NULL;
+       const gchar* _tmp4_ = NULL;
+       const gchar* _tmp5_ = NULL;
+       gint _tmp6_ = 0;
+       gint _tmp7_ = 0;
+       g_return_val_if_fail (str != NULL, FALSE);
+       _tmp0_ = str;
+       _tmp2_ = g_ascii_strtoll (_tmp0_, &_tmp1_, (guint) 0);
+       endptr = _tmp1_;
+       _vala_result = _tmp2_;
+       _tmp3_ = endptr;
+       _tmp4_ = str;
+       _tmp5_ = str;
+       _tmp6_ = strlen (_tmp5_);
+       _tmp7_ = _tmp6_;
+       if (_tmp3_ == (((gchar*) _tmp4_) + _tmp7_)) {
+               result = TRUE;
+               if (_result_) {
+                       *_result_ = _vala_result;
+               }
+               return result;
+       } else {
+               result = FALSE;
+               if (_result_) {
+                       *_result_ = _vala_result;
+               }
+               return result;
+       }
+       if (_result_) {
+               *_result_ = _vala_result;
+       }
+}
+
+
+static guint64 vala_gir_parser_node_parse_version_string (const gchar* version) {
+       guint64 result = 0ULL;
+       gint64 res = 0LL;
+       gint shift = 0;
+       gchar** tokens = NULL;
+       const gchar* _tmp0_ = NULL;
+       gchar** _tmp1_ = NULL;
+       gchar** _tmp2_ = NULL;
+       gint tokens_length1 = 0;
+       gint _tokens_size_ = 0;
+       gchar** _tmp3_ = NULL;
+       gint _tmp3__length1 = 0;
+       g_return_val_if_fail (version != NULL, 0ULL);
+       res = (gint64) 0;
+       shift = 16;
+       _tmp0_ = version;
+       _tmp2_ = _tmp1_ = g_strsplit (_tmp0_, ".", 3);
+       tokens = _tmp2_;
+       tokens_length1 = _vala_array_length (_tmp1_);
+       _tokens_size_ = tokens_length1;
+       _tmp3_ = tokens;
+       _tmp3__length1 = tokens_length1;
+       {
+               gchar** token_collection = NULL;
+               gint token_collection_length1 = 0;
+               gint _token_collection_size_ = 0;
+               gint token_it = 0;
+               token_collection = _tmp3_;
+               token_collection_length1 = _tmp3__length1;
+               for (token_it = 0; token_it < _tmp3__length1; token_it = token_it + 1) {
+                       const gchar* token = NULL;
+                       token = token_collection[token_it];
+                       {
+                               gint64 t = 0LL;
+                               const gchar* _tmp4_ = NULL;
+                               gint64 _tmp5_ = 0LL;
+                               gboolean _tmp6_ = FALSE;
+                               gint64 _tmp7_ = 0LL;
+                               gint64 _tmp8_ = 0LL;
+                               gint64 _tmp9_ = 0LL;
+                               gint _tmp10_ = 0;
+                               gint _tmp11_ = 0;
+                               _tmp4_ = token;
+                               _tmp6_ = int64_try_parse (_tmp4_, &_tmp5_);
+                               t = _tmp5_;
+                               if (!_tmp6_) {
+                                       result = (guint64) 0;
+                                       tokens = (_vala_array_free (tokens, tokens_length1, (GDestroyNotify) g_free), NULL);
+                                       return result;
+                               }
+                               _tmp7_ = t;
+                               if (_tmp7_ > ((gint64) 0xffff)) {
+                                       result = (guint64) 0;
+                                       tokens = (_vala_array_free (tokens, tokens_length1, (GDestroyNotify) g_free), NULL);
+                                       return result;
+                               }
+                               _tmp8_ = res;
+                               _tmp9_ = t;
+                               _tmp10_ = shift;
+                               res = _tmp8_ | (_tmp9_ << _tmp10_);
+                               _tmp11_ = shift;
+                               shift = _tmp11_ - 8;
+                       }
+               }
+       }
+       result = (guint64) res;
+       tokens = (_vala_array_free (tokens, tokens_length1, (GDestroyNotify) g_free), NULL);
+       return result;
+}
+
+
 static void vala_gir_parser_node_process (ValaGirParserNode* self, ValaGirParser* parser) {
        gboolean _tmp0_ = FALSE;
        gboolean _tmp1_ = FALSE;
@@ -18154,9 +18683,9 @@ static void vala_gir_parser_node_process (ValaGirParserNode* self, ValaGirParser
        gboolean _tmp48_ = FALSE;
        ValaSymbol* _tmp49_ = NULL;
        ValaMap* _tmp96_ = NULL;
-       gboolean _tmp747_ = FALSE;
-       gboolean _tmp748_ = FALSE;
-       gboolean _tmp749_ = FALSE;
+       gboolean _tmp739_ = FALSE;
+       gboolean _tmp740_ = FALSE;
+       gboolean _tmp741_ = FALSE;
        g_return_if_fail (self != NULL);
        g_return_if_fail (parser != NULL);
        _tmp0_ = self->processed;
@@ -18470,37 +18999,38 @@ static void vala_gir_parser_node_process (ValaGirParserNode* self, ValaGirParser
                ValaSymbol* _tmp97_ = NULL;
                ValaGirParserMetadata* _tmp659_ = NULL;
                gboolean _tmp660_ = FALSE;
-               ValaGirParserMetadata* _tmp665_ = NULL;
-               gboolean _tmp666_ = FALSE;
-               ValaGirParserMetadata* _tmp679_ = NULL;
-               gboolean _tmp680_ = FALSE;
-               ValaGirParserMetadata* _tmp689_ = NULL;
-               gboolean _tmp690_ = FALSE;
-               ValaGirParserNode* _tmp694_ = NULL;
-               ValaSymbol* _tmp695_ = NULL;
-               gchar* _tmp705_ = NULL;
-               gchar* _tmp706_ = NULL;
-               gchar* _tmp707_ = NULL;
-               gchar* _tmp708_ = NULL;
-               gboolean _tmp709_ = FALSE;
-               gchar* _tmp713_ = NULL;
-               gchar* _tmp714_ = NULL;
-               gchar* _tmp715_ = NULL;
-               gchar* _tmp716_ = NULL;
-               gboolean _tmp717_ = FALSE;
-               gchar* _tmp725_ = NULL;
-               gchar* _tmp726_ = NULL;
-               gchar* _tmp727_ = NULL;
-               gchar* _tmp728_ = NULL;
-               gboolean _tmp729_ = FALSE;
+               ValaGirParserMetadata* _tmp663_ = NULL;
+               gboolean _tmp664_ = FALSE;
+               ValaGirParserMetadata* _tmp673_ = NULL;
+               gboolean _tmp674_ = FALSE;
+               const gchar* _tmp682_ = NULL;
+               ValaGirParserMetadata* _tmp685_ = NULL;
+               gboolean _tmp686_ = FALSE;
+               ValaGirParserNode* _tmp690_ = NULL;
+               ValaSymbol* _tmp691_ = NULL;
+               gchar* _tmp701_ = NULL;
+               gchar* _tmp702_ = NULL;
+               gchar* _tmp703_ = NULL;
+               gchar* _tmp704_ = NULL;
+               gboolean _tmp705_ = FALSE;
+               gchar* _tmp709_ = NULL;
+               gchar* _tmp710_ = NULL;
+               gchar* _tmp711_ = NULL;
+               gchar* _tmp712_ = NULL;
+               gboolean _tmp713_ = FALSE;
+               gchar* _tmp717_ = NULL;
+               gchar* _tmp718_ = NULL;
+               gchar* _tmp719_ = NULL;
+               gchar* _tmp720_ = NULL;
+               gboolean _tmp721_ = FALSE;
                gchar* gir_name = NULL;
-               gchar* _tmp733_ = NULL;
+               gchar* _tmp725_ = NULL;
                gchar* default_gir_name = NULL;
-               gchar* _tmp734_ = NULL;
-               gboolean _tmp735_ = FALSE;
-               gboolean _tmp736_ = FALSE;
-               ValaSymbol* _tmp737_ = NULL;
-               gboolean _tmp738_ = FALSE;
+               gchar* _tmp726_ = NULL;
+               gboolean _tmp727_ = FALSE;
+               gboolean _tmp728_ = FALSE;
+               ValaSymbol* _tmp729_ = NULL;
+               gboolean _tmp730_ = FALSE;
                _tmp97_ = self->symbol;
                if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp97_, VALA_TYPE_METHOD)) {
                        ValaMethod* m = NULL;
@@ -20178,372 +20708,434 @@ static void vala_gir_parser_node_process (ValaGirParserNode* self, ValaGirParser
                _tmp659_ = self->metadata;
                _tmp660_ = vala_gir_parser_metadata_has_argument (_tmp659_, VALA_GIR_PARSER_ARGUMENT_TYPE_REPLACEMENT);
                if (_tmp660_) {
-                       ValaSymbol* _tmp661_ = NULL;
-                       ValaGirParserMetadata* _tmp662_ = NULL;
-                       gchar* _tmp663_ = NULL;
-                       gchar* _tmp664_ = NULL;
-                       _tmp661_ = self->symbol;
-                       _tmp662_ = self->metadata;
-                       _tmp663_ = vala_gir_parser_metadata_get_string (_tmp662_, VALA_GIR_PARSER_ARGUMENT_TYPE_REPLACEMENT);
-                       _tmp664_ = _tmp663_;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp661_, "Deprecated", "replacement", _tmp664_, NULL);
-                       _g_free0 (_tmp664_);
+                       ValaGirParserMetadata* _tmp661_ = NULL;
+                       gchar* _tmp662_ = NULL;
+                       self->deprecated = TRUE;
+                       _tmp661_ = self->metadata;
+                       _tmp662_ = vala_gir_parser_metadata_get_string (_tmp661_, VALA_GIR_PARSER_ARGUMENT_TYPE_REPLACEMENT);
+                       _g_free0 (self->deprecated_replacement);
+                       self->deprecated_replacement = _tmp662_;
                }
-               _tmp665_ = self->metadata;
-               _tmp666_ = vala_gir_parser_metadata_has_argument (_tmp665_, VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED_SINCE);
-               if (_tmp666_) {
-                       ValaSymbol* _tmp667_ = NULL;
-                       ValaGirParserMetadata* _tmp668_ = NULL;
-                       gchar* _tmp669_ = NULL;
-                       gchar* _tmp670_ = NULL;
-                       _tmp667_ = self->symbol;
-                       _tmp668_ = self->metadata;
-                       _tmp669_ = vala_gir_parser_metadata_get_string (_tmp668_, VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED_SINCE);
-                       _tmp670_ = _tmp669_;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp667_, "Deprecated", "since", _tmp670_, NULL);
-                       _g_free0 (_tmp670_);
+               _tmp663_ = self->metadata;
+               _tmp664_ = vala_gir_parser_metadata_has_argument (_tmp663_, VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED_SINCE);
+               if (_tmp664_) {
+                       ValaGirParserMetadata* _tmp665_ = NULL;
+                       gchar* _tmp666_ = NULL;
+                       self->deprecated = TRUE;
+                       _tmp665_ = self->metadata;
+                       _tmp666_ = vala_gir_parser_metadata_get_string (_tmp665_, VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED_SINCE);
+                       _g_free0 (self->deprecated_since);
+                       self->deprecated_since = _tmp666_;
                } else {
-                       ValaMap* _tmp671_ = NULL;
-                       gpointer _tmp672_ = NULL;
-                       gchar* _tmp673_ = NULL;
-                       gboolean _tmp674_ = FALSE;
-                       _tmp671_ = self->girdata;
-                       _tmp672_ = vala_map_get (_tmp671_, "deprecated-version");
-                       _tmp673_ = (gchar*) _tmp672_;
-                       _tmp674_ = _tmp673_ != NULL;
-                       _g_free0 (_tmp673_);
-                       if (_tmp674_) {
-                               ValaSymbol* _tmp675_ = NULL;
-                               ValaMap* _tmp676_ = NULL;
-                               gpointer _tmp677_ = NULL;
-                               gchar* _tmp678_ = NULL;
-                               _tmp675_ = self->symbol;
-                               _tmp676_ = self->girdata;
-                               _tmp677_ = vala_map_get (_tmp676_, "deprecated-version");
-                               _tmp678_ = (gchar*) _tmp677_;
-                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp675_, "Deprecated", "since", _tmp678_, NULL);
-                               _g_free0 (_tmp678_);
+                       ValaMap* _tmp667_ = NULL;
+                       gpointer _tmp668_ = NULL;
+                       gchar* _tmp669_ = NULL;
+                       gboolean _tmp670_ = FALSE;
+                       _tmp667_ = self->girdata;
+                       _tmp668_ = vala_map_get (_tmp667_, "deprecated-version");
+                       _tmp669_ = (gchar*) _tmp668_;
+                       _tmp670_ = _tmp669_ != NULL;
+                       _g_free0 (_tmp669_);
+                       if (_tmp670_) {
+                               ValaMap* _tmp671_ = NULL;
+                               gpointer _tmp672_ = NULL;
+                               self->deprecated = TRUE;
+                               _tmp671_ = self->girdata;
+                               _tmp672_ = vala_map_get (_tmp671_, "deprecated-version");
+                               _g_free0 (self->deprecated_since);
+                               self->deprecated_since = (gchar*) _tmp672_;
                        }
                }
-               _tmp679_ = self->metadata;
-               _tmp680_ = vala_gir_parser_metadata_has_argument (_tmp679_, VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED);
-               if (_tmp680_) {
-                       ValaGirParserMetadata* _tmp681_ = NULL;
-                       gboolean _tmp682_ = FALSE;
-                       _tmp681_ = self->metadata;
-                       _tmp682_ = vala_gir_parser_metadata_get_bool (_tmp681_, VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED, FALSE);
-                       if (_tmp682_) {
-                               ValaSymbol* _tmp683_ = NULL;
-                               _tmp683_ = self->symbol;
-                               vala_code_node_set_attribute ((ValaCodeNode*) _tmp683_, "Deprecated", TRUE, NULL);
+               _tmp673_ = self->metadata;
+               _tmp674_ = vala_gir_parser_metadata_has_argument (_tmp673_, VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED);
+               if (_tmp674_) {
+                       ValaGirParserMetadata* _tmp675_ = NULL;
+                       gboolean _tmp676_ = FALSE;
+                       gboolean _tmp677_ = FALSE;
+                       _tmp675_ = self->metadata;
+                       _tmp676_ = vala_gir_parser_metadata_get_bool (_tmp675_, VALA_GIR_PARSER_ARGUMENT_TYPE_DEPRECATED, TRUE);
+                       self->deprecated = _tmp676_;
+                       _tmp677_ = self->deprecated;
+                       if (!_tmp677_) {
+                               _g_free0 (self->deprecated_since);
+                               self->deprecated_since = NULL;
+                               _g_free0 (self->deprecated_replacement);
+                               self->deprecated_replacement = NULL;
                        }
                } else {
-                       ValaMap* _tmp684_ = NULL;
-                       gpointer _tmp685_ = NULL;
-                       gchar* _tmp686_ = NULL;
-                       gboolean _tmp687_ = FALSE;
-                       _tmp684_ = self->girdata;
-                       _tmp685_ = vala_map_get (_tmp684_, "deprecated");
-                       _tmp686_ = (gchar*) _tmp685_;
-                       _tmp687_ = _tmp686_ != NULL;
-                       _g_free0 (_tmp686_);
-                       if (_tmp687_) {
-                               ValaSymbol* _tmp688_ = NULL;
-                               _tmp688_ = self->symbol;
-                               vala_code_node_set_attribute ((ValaCodeNode*) _tmp688_, "Deprecated", TRUE, NULL);
+                       ValaMap* _tmp678_ = NULL;
+                       gpointer _tmp679_ = NULL;
+                       gchar* _tmp680_ = NULL;
+                       gboolean _tmp681_ = FALSE;
+                       _tmp678_ = self->girdata;
+                       _tmp679_ = vala_map_get (_tmp678_, "deprecated");
+                       _tmp680_ = (gchar*) _tmp679_;
+                       _tmp681_ = _tmp680_ != NULL;
+                       _g_free0 (_tmp680_);
+                       if (_tmp681_) {
+                               self->deprecated = TRUE;
                        }
                }
-               _tmp689_ = self->metadata;
-               _tmp690_ = vala_gir_parser_metadata_has_argument (_tmp689_, VALA_GIR_PARSER_ARGUMENT_TYPE_EXPERIMENTAL);
-               if (_tmp690_) {
-                       ValaSymbol* _tmp691_ = NULL;
-                       ValaGirParserMetadata* _tmp692_ = NULL;
-                       gboolean _tmp693_ = FALSE;
-                       _tmp691_ = self->symbol;
-                       _tmp692_ = self->metadata;
-                       _tmp693_ = vala_gir_parser_metadata_get_bool (_tmp692_, VALA_GIR_PARSER_ARGUMENT_TYPE_EXPERIMENTAL, FALSE);
-                       vala_code_node_set_attribute ((ValaCodeNode*) _tmp691_, "Experimental", _tmp693_, NULL);
+               _tmp682_ = self->deprecated_since;
+               if (_tmp682_ != NULL) {
+                       const gchar* _tmp683_ = NULL;
+                       guint64 _tmp684_ = 0ULL;
+                       _tmp683_ = self->deprecated_since;
+                       _tmp684_ = vala_gir_parser_node_parse_version_string (_tmp683_);
+                       self->deprecated_version = _tmp684_;
                }
-               _tmp694_ = self->parent;
-               _tmp695_ = _tmp694_->symbol;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp695_, VALA_TYPE_NAMESPACE)) {
-                       ValaSymbol* _tmp696_ = NULL;
-                       gchar* _tmp697_ = NULL;
-                       gchar* _tmp698_ = NULL;
-                       _tmp696_ = self->symbol;
-                       _tmp697_ = vala_gir_parser_node_get_cheader_filename (self);
-                       _tmp698_ = _tmp697_;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp696_, "CCode", "cheader_filename", _tmp698_, NULL);
-                       _g_free0 (_tmp698_);
+               _tmp685_ = self->metadata;
+               _tmp686_ = vala_gir_parser_metadata_has_argument (_tmp685_, VALA_GIR_PARSER_ARGUMENT_TYPE_EXPERIMENTAL);
+               if (_tmp686_) {
+                       ValaSymbol* _tmp687_ = NULL;
+                       ValaGirParserMetadata* _tmp688_ = NULL;
+                       gboolean _tmp689_ = FALSE;
+                       _tmp687_ = self->symbol;
+                       _tmp688_ = self->metadata;
+                       _tmp689_ = vala_gir_parser_metadata_get_bool (_tmp688_, VALA_GIR_PARSER_ARGUMENT_TYPE_EXPERIMENTAL, FALSE);
+                       vala_code_node_set_attribute ((ValaCodeNode*) _tmp687_, "Experimental", _tmp689_, NULL);
+               }
+               _tmp690_ = self->parent;
+               _tmp691_ = _tmp690_->symbol;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp691_, VALA_TYPE_NAMESPACE)) {
+                       ValaSymbol* _tmp692_ = NULL;
+                       gchar* _tmp693_ = NULL;
+                       gchar* _tmp694_ = NULL;
+                       _tmp692_ = self->symbol;
+                       _tmp693_ = vala_gir_parser_node_get_cheader_filename (self);
+                       _tmp694_ = _tmp693_;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp692_, "CCode", "cheader_filename", _tmp694_, NULL);
+                       _g_free0 (_tmp694_);
                } else {
-                       ValaGirParserMetadata* _tmp699_ = NULL;
-                       gboolean _tmp700_ = FALSE;
-                       _tmp699_ = self->metadata;
-                       _tmp700_ = vala_gir_parser_metadata_has_argument (_tmp699_, VALA_GIR_PARSER_ARGUMENT_TYPE_CHEADER_FILENAME);
-                       if (_tmp700_) {
-                               ValaSymbol* _tmp701_ = NULL;
-                               ValaGirParserMetadata* _tmp702_ = NULL;
-                               gchar* _tmp703_ = NULL;
-                               gchar* _tmp704_ = NULL;
-                               _tmp701_ = self->symbol;
-                               _tmp702_ = self->metadata;
-                               _tmp703_ = vala_gir_parser_metadata_get_string (_tmp702_, VALA_GIR_PARSER_ARGUMENT_TYPE_CHEADER_FILENAME);
-                               _tmp704_ = _tmp703_;
-                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp701_, "CCode", "cheader_filename", _tmp704_, NULL);
-                               _g_free0 (_tmp704_);
+                       ValaGirParserMetadata* _tmp695_ = NULL;
+                       gboolean _tmp696_ = FALSE;
+                       _tmp695_ = self->metadata;
+                       _tmp696_ = vala_gir_parser_metadata_has_argument (_tmp695_, VALA_GIR_PARSER_ARGUMENT_TYPE_CHEADER_FILENAME);
+                       if (_tmp696_) {
+                               ValaSymbol* _tmp697_ = NULL;
+                               ValaGirParserMetadata* _tmp698_ = NULL;
+                               gchar* _tmp699_ = NULL;
+                               gchar* _tmp700_ = NULL;
+                               _tmp697_ = self->symbol;
+                               _tmp698_ = self->metadata;
+                               _tmp699_ = vala_gir_parser_metadata_get_string (_tmp698_, VALA_GIR_PARSER_ARGUMENT_TYPE_CHEADER_FILENAME);
+                               _tmp700_ = _tmp699_;
+                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp697_, "CCode", "cheader_filename", _tmp700_, NULL);
+                               _g_free0 (_tmp700_);
                        }
                }
-               _tmp705_ = vala_gir_parser_node_get_cname (self);
-               _tmp706_ = _tmp705_;
-               _tmp707_ = vala_gir_parser_node_get_default_cname (self);
-               _tmp708_ = _tmp707_;
-               _tmp709_ = g_strcmp0 (_tmp706_, _tmp708_) != 0;
-               _g_free0 (_tmp708_);
-               _g_free0 (_tmp706_);
-               if (_tmp709_) {
-                       ValaSymbol* _tmp710_ = NULL;
-                       gchar* _tmp711_ = NULL;
-                       gchar* _tmp712_ = NULL;
-                       _tmp710_ = self->symbol;
-                       _tmp711_ = vala_gir_parser_node_get_cname (self);
-                       _tmp712_ = _tmp711_;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp710_, "CCode", "cname", _tmp712_, NULL);
-                       _g_free0 (_tmp712_);
+               _tmp701_ = vala_gir_parser_node_get_cname (self);
+               _tmp702_ = _tmp701_;
+               _tmp703_ = vala_gir_parser_node_get_default_cname (self);
+               _tmp704_ = _tmp703_;
+               _tmp705_ = g_strcmp0 (_tmp702_, _tmp704_) != 0;
+               _g_free0 (_tmp704_);
+               _g_free0 (_tmp702_);
+               if (_tmp705_) {
+                       ValaSymbol* _tmp706_ = NULL;
+                       gchar* _tmp707_ = NULL;
+                       gchar* _tmp708_ = NULL;
+                       _tmp706_ = self->symbol;
+                       _tmp707_ = vala_gir_parser_node_get_cname (self);
+                       _tmp708_ = _tmp707_;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp706_, "CCode", "cname", _tmp708_, NULL);
+                       _g_free0 (_tmp708_);
                }
-               _tmp713_ = vala_gir_parser_node_get_lower_case_cprefix (self);
-               _tmp714_ = _tmp713_;
-               _tmp715_ = vala_gir_parser_node_get_default_lower_case_cprefix (self);
-               _tmp716_ = _tmp715_;
-               _tmp717_ = g_strcmp0 (_tmp714_, _tmp716_) != 0;
-               _g_free0 (_tmp716_);
-               _g_free0 (_tmp714_);
-               if (_tmp717_) {
-                       ValaSymbol* _tmp718_ = NULL;
-                       _tmp718_ = self->symbol;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp718_, VALA_TYPE_CLASS)) {
-                               ValaSymbol* _tmp719_ = NULL;
-                               gchar* _tmp720_ = NULL;
-                               gchar* _tmp721_ = NULL;
-                               _tmp719_ = self->symbol;
-                               _tmp720_ = vala_gir_parser_node_get_lower_case_cprefix (self);
-                               _tmp721_ = _tmp720_;
-                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp719_, "CCode", "cprefix", _tmp721_, NULL);
-                               _g_free0 (_tmp721_);
-                       } else {
-                               ValaSymbol* _tmp722_ = NULL;
-                               gchar* _tmp723_ = NULL;
-                               gchar* _tmp724_ = NULL;
-                               _tmp722_ = self->symbol;
-                               _tmp723_ = vala_gir_parser_node_get_lower_case_cprefix (self);
-                               _tmp724_ = _tmp723_;
-                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp722_, "CCode", "lower_case_cprefix", _tmp724_, NULL);
-                               _g_free0 (_tmp724_);
-                       }
+               _tmp709_ = vala_gir_parser_node_get_lower_case_cprefix (self);
+               _tmp710_ = _tmp709_;
+               _tmp711_ = vala_gir_parser_node_get_default_lower_case_cprefix (self);
+               _tmp712_ = _tmp711_;
+               _tmp713_ = g_strcmp0 (_tmp710_, _tmp712_) != 0;
+               _g_free0 (_tmp712_);
+               _g_free0 (_tmp710_);
+               if (_tmp713_) {
+                       ValaSymbol* _tmp714_ = NULL;
+                       gchar* _tmp715_ = NULL;
+                       gchar* _tmp716_ = NULL;
+                       _tmp714_ = self->symbol;
+                       _tmp715_ = vala_gir_parser_node_get_lower_case_cprefix (self);
+                       _tmp716_ = _tmp715_;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp714_, "CCode", "lower_case_cprefix", _tmp716_, NULL);
+                       _g_free0 (_tmp716_);
                }
-               _tmp725_ = vala_gir_parser_node_get_lower_case_csuffix (self);
-               _tmp726_ = _tmp725_;
-               _tmp727_ = vala_gir_parser_node_get_default_lower_case_csuffix (self);
-               _tmp728_ = _tmp727_;
-               _tmp729_ = g_strcmp0 (_tmp726_, _tmp728_) != 0;
-               _g_free0 (_tmp728_);
-               _g_free0 (_tmp726_);
-               if (_tmp729_) {
-                       ValaSymbol* _tmp730_ = NULL;
-                       gchar* _tmp731_ = NULL;
-                       gchar* _tmp732_ = NULL;
-                       _tmp730_ = self->symbol;
-                       _tmp731_ = vala_gir_parser_node_get_lower_case_csuffix (self);
-                       _tmp732_ = _tmp731_;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp730_, "CCode", "lower_case_csuffix", _tmp732_, NULL);
-                       _g_free0 (_tmp732_);
+               _tmp717_ = vala_gir_parser_node_get_lower_case_csuffix (self);
+               _tmp718_ = _tmp717_;
+               _tmp719_ = vala_gir_parser_node_get_default_lower_case_csuffix (self);
+               _tmp720_ = _tmp719_;
+               _tmp721_ = g_strcmp0 (_tmp718_, _tmp720_) != 0;
+               _g_free0 (_tmp720_);
+               _g_free0 (_tmp718_);
+               if (_tmp721_) {
+                       ValaSymbol* _tmp722_ = NULL;
+                       gchar* _tmp723_ = NULL;
+                       gchar* _tmp724_ = NULL;
+                       _tmp722_ = self->symbol;
+                       _tmp723_ = vala_gir_parser_node_get_lower_case_csuffix (self);
+                       _tmp724_ = _tmp723_;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp722_, "CCode", "lower_case_csuffix", _tmp724_, NULL);
+                       _g_free0 (_tmp724_);
                }
-               _tmp733_ = vala_gir_parser_node_get_gir_name (self);
-               gir_name = _tmp733_;
-               _tmp734_ = vala_gir_parser_node_get_default_gir_name (self);
-               default_gir_name = _tmp734_;
-               _tmp737_ = self->symbol;
-               _tmp738_ = vala_gir_parser_is_container (_tmp737_);
-               if (_tmp738_) {
-                       ValaSymbol* _tmp739_ = NULL;
-                       _tmp739_ = self->symbol;
-                       _tmp736_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp739_, VALA_TYPE_NAMESPACE);
+               _tmp725_ = vala_gir_parser_node_get_gir_name (self);
+               gir_name = _tmp725_;
+               _tmp726_ = vala_gir_parser_node_get_default_gir_name (self);
+               default_gir_name = _tmp726_;
+               _tmp729_ = self->symbol;
+               _tmp730_ = vala_gir_parser_is_container (_tmp729_);
+               if (_tmp730_) {
+                       ValaSymbol* _tmp731_ = NULL;
+                       _tmp731_ = self->symbol;
+                       _tmp728_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp731_, VALA_TYPE_NAMESPACE);
                } else {
-                       _tmp736_ = FALSE;
+                       _tmp728_ = FALSE;
                }
-               if (_tmp736_) {
-                       gboolean _tmp740_ = FALSE;
-                       const gchar* _tmp741_ = NULL;
-                       const gchar* _tmp742_ = NULL;
-                       _tmp741_ = self->name;
-                       _tmp742_ = gir_name;
-                       if (g_strcmp0 (_tmp741_, _tmp742_) != 0) {
-                               _tmp740_ = TRUE;
+               if (_tmp728_) {
+                       gboolean _tmp732_ = FALSE;
+                       const gchar* _tmp733_ = NULL;
+                       const gchar* _tmp734_ = NULL;
+                       _tmp733_ = self->name;
+                       _tmp734_ = gir_name;
+                       if (g_strcmp0 (_tmp733_, _tmp734_) != 0) {
+                               _tmp732_ = TRUE;
                        } else {
-                               const gchar* _tmp743_ = NULL;
-                               const gchar* _tmp744_ = NULL;
-                               _tmp743_ = gir_name;
-                               _tmp744_ = default_gir_name;
-                               _tmp740_ = g_strcmp0 (_tmp743_, _tmp744_) != 0;
+                               const gchar* _tmp735_ = NULL;
+                               const gchar* _tmp736_ = NULL;
+                               _tmp735_ = gir_name;
+                               _tmp736_ = default_gir_name;
+                               _tmp732_ = g_strcmp0 (_tmp735_, _tmp736_) != 0;
                        }
-                       _tmp735_ = _tmp740_;
+                       _tmp727_ = _tmp732_;
                } else {
-                       _tmp735_ = FALSE;
+                       _tmp727_ = FALSE;
                }
-               if (_tmp735_) {
-                       ValaSymbol* _tmp745_ = NULL;
-                       const gchar* _tmp746_ = NULL;
-                       _tmp745_ = self->symbol;
-                       _tmp746_ = gir_name;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp745_, "GIR", "name", _tmp746_, NULL);
+               if (_tmp727_) {
+                       ValaSymbol* _tmp737_ = NULL;
+                       const gchar* _tmp738_ = NULL;
+                       _tmp737_ = self->symbol;
+                       _tmp738_ = gir_name;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp737_, "GIR", "name", _tmp738_, NULL);
                }
                _g_free0 (default_gir_name);
                _g_free0 (gir_name);
        }
-       _tmp749_ = self->new_symbol;
-       if (_tmp749_) {
-               gboolean _tmp750_ = FALSE;
-               _tmp750_ = self->merged;
-               _tmp748_ = _tmp750_;
+       _tmp741_ = self->new_symbol;
+       if (_tmp741_) {
+               gboolean _tmp742_ = FALSE;
+               _tmp742_ = self->merged;
+               _tmp740_ = _tmp742_;
        } else {
-               _tmp748_ = FALSE;
-       }
-       if (!_tmp748_) {
-               ValaSymbol* _tmp751_ = NULL;
-               gboolean _tmp752_ = FALSE;
-               _tmp751_ = self->symbol;
-               _tmp752_ = vala_gir_parser_is_container (_tmp751_);
-               _tmp747_ = _tmp752_;
+               _tmp740_ = FALSE;
+       }
+       if (!_tmp740_) {
+               ValaSymbol* _tmp743_ = NULL;
+               gboolean _tmp744_ = FALSE;
+               _tmp743_ = self->symbol;
+               _tmp744_ = vala_gir_parser_is_container (_tmp743_);
+               _tmp739_ = _tmp744_;
        } else {
-               _tmp747_ = FALSE;
+               _tmp739_ = FALSE;
        }
-       if (_tmp747_) {
+       if (_tmp739_) {
                ValaClass* cl = NULL;
-               ValaSymbol* _tmp775_ = NULL;
-               ValaClass* _tmp776_ = NULL;
-               gboolean _tmp777_ = FALSE;
-               gboolean _tmp778_ = FALSE;
-               ValaClass* _tmp779_ = NULL;
+               ValaSymbol* _tmp793_ = NULL;
+               ValaClass* _tmp794_ = NULL;
+               gboolean _tmp795_ = FALSE;
+               gboolean _tmp796_ = FALSE;
+               ValaClass* _tmp797_ = NULL;
                {
                        ValaArrayList* _node_list = NULL;
-                       ValaArrayList* _tmp753_ = NULL;
-                       ValaArrayList* _tmp754_ = NULL;
+                       ValaArrayList* _tmp745_ = NULL;
+                       ValaArrayList* _tmp746_ = NULL;
                        gint _node_size = 0;
-                       ValaArrayList* _tmp755_ = NULL;
-                       gint _tmp756_ = 0;
-                       gint _tmp757_ = 0;
+                       ValaArrayList* _tmp747_ = NULL;
+                       gint _tmp748_ = 0;
+                       gint _tmp749_ = 0;
                        gint _node_index = 0;
-                       _tmp753_ = self->members;
-                       _tmp754_ = _vala_iterable_ref0 (_tmp753_);
-                       _node_list = _tmp754_;
-                       _tmp755_ = _node_list;
-                       _tmp756_ = vala_collection_get_size ((ValaCollection*) _tmp755_);
-                       _tmp757_ = _tmp756_;
-                       _node_size = _tmp757_;
+                       _tmp745_ = self->members;
+                       _tmp746_ = _vala_iterable_ref0 (_tmp745_);
+                       _node_list = _tmp746_;
+                       _tmp747_ = _node_list;
+                       _tmp748_ = vala_collection_get_size ((ValaCollection*) _tmp747_);
+                       _tmp749_ = _tmp748_;
+                       _node_size = _tmp749_;
                        _node_index = -1;
                        while (TRUE) {
-                               gint _tmp758_ = 0;
-                               gint _tmp759_ = 0;
-                               gint _tmp760_ = 0;
+                               gint _tmp750_ = 0;
+                               gint _tmp751_ = 0;
+                               gint _tmp752_ = 0;
                                ValaGirParserNode* node = NULL;
-                               ValaArrayList* _tmp761_ = NULL;
-                               gint _tmp762_ = 0;
-                               gpointer _tmp763_ = NULL;
-                               gboolean _tmp764_ = FALSE;
-                               gboolean _tmp765_ = FALSE;
+                               ValaArrayList* _tmp753_ = NULL;
+                               gint _tmp754_ = 0;
+                               gpointer _tmp755_ = NULL;
+                               gboolean _tmp756_ = FALSE;
+                               guint64 _tmp757_ = 0ULL;
                                ValaGirParserNode* _tmp766_ = NULL;
                                gboolean _tmp767_ = FALSE;
-                               _tmp758_ = _node_index;
-                               _node_index = _tmp758_ + 1;
-                               _tmp759_ = _node_index;
-                               _tmp760_ = _node_size;
-                               if (!(_tmp759_ < _tmp760_)) {
+                               ValaGirParserNode* _tmp770_ = NULL;
+                               const gchar* _tmp771_ = NULL;
+                               ValaGirParserNode* _tmp776_ = NULL;
+                               const gchar* _tmp777_ = NULL;
+                               gboolean _tmp782_ = FALSE;
+                               gboolean _tmp783_ = FALSE;
+                               ValaGirParserNode* _tmp784_ = NULL;
+                               gboolean _tmp785_ = FALSE;
+                               _tmp750_ = _node_index;
+                               _node_index = _tmp750_ + 1;
+                               _tmp751_ = _node_index;
+                               _tmp752_ = _node_size;
+                               if (!(_tmp751_ < _tmp752_)) {
                                        break;
                                }
-                               _tmp761_ = _node_list;
-                               _tmp762_ = _node_index;
-                               _tmp763_ = vala_list_get ((ValaList*) _tmp761_, _tmp762_);
-                               node = (ValaGirParserNode*) _tmp763_;
+                               _tmp753_ = _node_list;
+                               _tmp754_ = _node_index;
+                               _tmp755_ = vala_list_get ((ValaList*) _tmp753_, _tmp754_);
+                               node = (ValaGirParserNode*) _tmp755_;
+                               _tmp757_ = self->deprecated_version;
+                               if (_tmp757_ > ((guint64) 0)) {
+                                       ValaGirParserNode* _tmp758_ = NULL;
+                                       guint64 _tmp759_ = 0ULL;
+                                       _tmp758_ = node;
+                                       _tmp759_ = _tmp758_->deprecated_version;
+                                       _tmp756_ = _tmp759_ > ((guint64) 0);
+                               } else {
+                                       _tmp756_ = FALSE;
+                               }
+                               if (_tmp756_) {
+                                       guint64 _tmp760_ = 0ULL;
+                                       ValaGirParserNode* _tmp761_ = NULL;
+                                       guint64 _tmp762_ = 0ULL;
+                                       _tmp760_ = self->deprecated_version;
+                                       _tmp761_ = node;
+                                       _tmp762_ = _tmp761_->deprecated_version;
+                                       if (_tmp760_ <= _tmp762_) {
+                                               ValaGirParserNode* _tmp763_ = NULL;
+                                               ValaGirParserNode* _tmp764_ = NULL;
+                                               ValaGirParserNode* _tmp765_ = NULL;
+                                               _tmp763_ = node;
+                                               _tmp763_->deprecated = FALSE;
+                                               _tmp764_ = node;
+                                               _g_free0 (_tmp764_->deprecated_since);
+                                               _tmp764_->deprecated_since = NULL;
+                                               _tmp765_ = node;
+                                               _g_free0 (_tmp765_->deprecated_replacement);
+                                               _tmp765_->deprecated_replacement = NULL;
+                                       }
+                               }
                                _tmp766_ = node;
-                               _tmp767_ = _tmp766_->new_symbol;
+                               _tmp767_ = _tmp766_->deprecated;
                                if (_tmp767_) {
                                        ValaGirParserNode* _tmp768_ = NULL;
-                                       gboolean _tmp769_ = FALSE;
+                                       ValaSymbol* _tmp769_ = NULL;
                                        _tmp768_ = node;
-                                       _tmp769_ = _tmp768_->merged;
-                                       _tmp765_ = !_tmp769_;
+                                       _tmp769_ = _tmp768_->symbol;
+                                       vala_code_node_set_attribute ((ValaCodeNode*) _tmp769_, "Deprecated", TRUE, NULL);
+                               }
+                               _tmp770_ = node;
+                               _tmp771_ = _tmp770_->deprecated_since;
+                               if (_tmp771_ != NULL) {
+                                       ValaGirParserNode* _tmp772_ = NULL;
+                                       ValaSymbol* _tmp773_ = NULL;
+                                       ValaGirParserNode* _tmp774_ = NULL;
+                                       const gchar* _tmp775_ = NULL;
+                                       _tmp772_ = node;
+                                       _tmp773_ = _tmp772_->symbol;
+                                       _tmp774_ = node;
+                                       _tmp775_ = _tmp774_->deprecated_since;
+                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp773_, "Deprecated", "since", _tmp775_, NULL);
+                               }
+                               _tmp776_ = node;
+                               _tmp777_ = _tmp776_->deprecated_replacement;
+                               if (_tmp777_ != NULL) {
+                                       ValaGirParserNode* _tmp778_ = NULL;
+                                       ValaSymbol* _tmp779_ = NULL;
+                                       ValaGirParserNode* _tmp780_ = NULL;
+                                       const gchar* _tmp781_ = NULL;
+                                       _tmp778_ = node;
+                                       _tmp779_ = _tmp778_->symbol;
+                                       _tmp780_ = node;
+                                       _tmp781_ = _tmp780_->deprecated_replacement;
+                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp779_, "Deprecated", "replacement", _tmp781_, NULL);
+                               }
+                               _tmp784_ = node;
+                               _tmp785_ = _tmp784_->new_symbol;
+                               if (_tmp785_) {
+                                       ValaGirParserNode* _tmp786_ = NULL;
+                                       gboolean _tmp787_ = FALSE;
+                                       _tmp786_ = node;
+                                       _tmp787_ = _tmp786_->merged;
+                                       _tmp783_ = !_tmp787_;
                                } else {
-                                       _tmp765_ = FALSE;
+                                       _tmp783_ = FALSE;
                                }
-                               if (_tmp765_) {
-                                       ValaGirParserMetadata* _tmp770_ = NULL;
-                                       gboolean _tmp771_ = FALSE;
-                                       _tmp770_ = self->metadata;
-                                       _tmp771_ = vala_gir_parser_metadata_get_bool (_tmp770_, VALA_GIR_PARSER_ARGUMENT_TYPE_HIDDEN, FALSE);
-                                       _tmp764_ = !_tmp771_;
+                               if (_tmp783_) {
+                                       ValaGirParserMetadata* _tmp788_ = NULL;
+                                       gboolean _tmp789_ = FALSE;
+                                       _tmp788_ = self->metadata;
+                                       _tmp789_ = vala_gir_parser_metadata_get_bool (_tmp788_, VALA_GIR_PARSER_ARGUMENT_TYPE_HIDDEN, FALSE);
+                                       _tmp782_ = !_tmp789_;
                                } else {
-                                       _tmp764_ = FALSE;
+                                       _tmp782_ = FALSE;
                                }
-                               if (_tmp764_) {
-                                       ValaSymbol* _tmp772_ = NULL;
-                                       ValaGirParserNode* _tmp773_ = NULL;
-                                       ValaSymbol* _tmp774_ = NULL;
-                                       _tmp772_ = self->symbol;
-                                       _tmp773_ = node;
-                                       _tmp774_ = _tmp773_->symbol;
-                                       vala_gir_parser_add_symbol_to_container (_tmp772_, _tmp774_);
+                               if (_tmp782_) {
+                                       ValaSymbol* _tmp790_ = NULL;
+                                       ValaGirParserNode* _tmp791_ = NULL;
+                                       ValaSymbol* _tmp792_ = NULL;
+                                       _tmp790_ = self->symbol;
+                                       _tmp791_ = node;
+                                       _tmp792_ = _tmp791_->symbol;
+                                       vala_gir_parser_add_symbol_to_container (_tmp790_, _tmp792_);
                                }
                                _vala_gir_parser_node_unref0 (node);
                        }
                        _vala_iterable_unref0 (_node_list);
                }
-               _tmp775_ = self->symbol;
-               _tmp776_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp775_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp775_) : NULL);
-               cl = _tmp776_;
-               _tmp779_ = cl;
-               if (_tmp779_ != NULL) {
-                       ValaClass* _tmp780_ = NULL;
-                       gboolean _tmp781_ = FALSE;
-                       gboolean _tmp782_ = FALSE;
-                       _tmp780_ = cl;
-                       _tmp781_ = vala_class_get_is_compact (_tmp780_);
-                       _tmp782_ = _tmp781_;
-                       _tmp778_ = !_tmp782_;
+               _tmp793_ = self->symbol;
+               _tmp794_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp793_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp793_) : NULL);
+               cl = _tmp794_;
+               _tmp797_ = cl;
+               if (_tmp797_ != NULL) {
+                       ValaClass* _tmp798_ = NULL;
+                       gboolean _tmp799_ = FALSE;
+                       gboolean _tmp800_ = FALSE;
+                       _tmp798_ = cl;
+                       _tmp799_ = vala_class_get_is_compact (_tmp798_);
+                       _tmp800_ = _tmp799_;
+                       _tmp796_ = !_tmp800_;
                } else {
-                       _tmp778_ = FALSE;
+                       _tmp796_ = FALSE;
                }
-               if (_tmp778_) {
-                       ValaClass* _tmp783_ = NULL;
-                       ValaCreationMethod* _tmp784_ = NULL;
-                       ValaCreationMethod* _tmp785_ = NULL;
-                       _tmp783_ = cl;
-                       _tmp784_ = vala_class_get_default_construction_method (_tmp783_);
-                       _tmp785_ = _tmp784_;
-                       _tmp777_ = _tmp785_ == NULL;
+               if (_tmp796_) {
+                       ValaClass* _tmp801_ = NULL;
+                       ValaCreationMethod* _tmp802_ = NULL;
+                       ValaCreationMethod* _tmp803_ = NULL;
+                       _tmp801_ = cl;
+                       _tmp802_ = vala_class_get_default_construction_method (_tmp801_);
+                       _tmp803_ = _tmp802_;
+                       _tmp795_ = _tmp803_ == NULL;
                } else {
-                       _tmp777_ = FALSE;
+                       _tmp795_ = FALSE;
                }
-               if (_tmp777_) {
+               if (_tmp795_) {
                        ValaCreationMethod* cm = NULL;
-                       ValaClass* _tmp786_ = NULL;
-                       ValaSourceReference* _tmp787_ = NULL;
-                       ValaSourceReference* _tmp788_ = NULL;
-                       ValaCreationMethod* _tmp789_ = NULL;
-                       ValaCreationMethod* _tmp790_ = NULL;
-                       ValaCreationMethod* _tmp791_ = NULL;
-                       ValaClass* _tmp792_ = NULL;
-                       ValaCreationMethod* _tmp793_ = NULL;
-                       _tmp786_ = cl;
-                       _tmp787_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp786_);
-                       _tmp788_ = _tmp787_;
-                       _tmp789_ = vala_creation_method_new (NULL, NULL, _tmp788_, NULL);
-                       cm = _tmp789_;
-                       _tmp790_ = cm;
-                       vala_method_set_has_construct_function ((ValaMethod*) _tmp790_, FALSE);
-                       _tmp791_ = cm;
-                       vala_symbol_set_access ((ValaSymbol*) _tmp791_, VALA_SYMBOL_ACCESSIBILITY_PROTECTED);
-                       _tmp792_ = cl;
-                       _tmp793_ = cm;
-                       vala_symbol_add_method ((ValaSymbol*) _tmp792_, (ValaMethod*) _tmp793_);
+                       ValaClass* _tmp804_ = NULL;
+                       ValaSourceReference* _tmp805_ = NULL;
+                       ValaSourceReference* _tmp806_ = NULL;
+                       ValaCreationMethod* _tmp807_ = NULL;
+                       ValaCreationMethod* _tmp808_ = NULL;
+                       ValaCreationMethod* _tmp809_ = NULL;
+                       ValaClass* _tmp810_ = NULL;
+                       ValaCreationMethod* _tmp811_ = NULL;
+                       _tmp804_ = cl;
+                       _tmp805_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp804_);
+                       _tmp806_ = _tmp805_;
+                       _tmp807_ = vala_creation_method_new (NULL, NULL, _tmp806_, NULL);
+                       cm = _tmp807_;
+                       _tmp808_ = cm;
+                       vala_method_set_has_construct_function ((ValaMethod*) _tmp808_, FALSE);
+                       _tmp809_ = cm;
+                       vala_symbol_set_access ((ValaSymbol*) _tmp809_, VALA_SYMBOL_ACCESSIBILITY_PROTECTED);
+                       _tmp810_ = cl;
+                       _tmp811_ = cm;
+                       vala_symbol_add_method ((ValaSymbol*) _tmp810_, (ValaMethod*) _tmp811_);
                        _vala_code_node_unref0 (cm);
                }
                _vala_code_node_unref0 (cl);
@@ -20700,7 +21292,7 @@ static void vala_gir_parser_node_class_init (ValaGirParserNodeClass * klass) {
        GEqualFunc _tmp0_ = NULL;
        ValaArrayList* _tmp1_ = NULL;
        vala_gir_parser_node_parent_class = g_type_class_peek_parent (klass);
-       VALA_GIR_PARSER_NODE_CLASS (klass)->finalize = vala_gir_parser_node_finalize;
+       ((ValaGirParserNodeClass *) klass)->finalize = vala_gir_parser_node_finalize;
        _tmp0_ = g_direct_equal;
        _tmp1_ = vala_array_list_new (VALA_GIR_PARSER_TYPE_NODE, (GBoxedCopyFunc) vala_gir_parser_node_ref, vala_gir_parser_node_unref, _tmp0_);
        vala_gir_parser_node_new_namespaces = _tmp1_;
@@ -20732,6 +21324,10 @@ static void vala_gir_parser_node_instance_init (ValaGirParserNode * self) {
        _tmp8_ = vala_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, VALA_TYPE_ARRAY_LIST, (GBoxedCopyFunc) vala_iterable_ref, vala_iterable_unref, _tmp5_, _tmp6_, _tmp7_);
        self->scope = _tmp8_;
        self->return_array_length_idx = -1;
+       self->deprecated = FALSE;
+       self->deprecated_version = (guint64) 0;
+       self->deprecated_since = NULL;
+       self->deprecated_replacement = NULL;
        self->ref_count = 1;
 }
 
@@ -20739,6 +21335,7 @@ static void vala_gir_parser_node_instance_init (ValaGirParserNode * self) {
 static void vala_gir_parser_node_finalize (ValaGirParserNode* obj) {
        ValaGirParserNode * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_GIR_PARSER_TYPE_NODE, ValaGirParserNode);
+       g_signal_handlers_destroy (self);
        _g_free0 (self->element_type);
        _g_free0 (self->name);
        _vala_map_unref0 (self->girdata);
@@ -20754,6 +21351,8 @@ static void vala_gir_parser_node_finalize (ValaGirParserNode* obj) {
        _vala_iterable_unref0 (self->destroy_parameters);
        _vala_code_node_unref0 (self->gtype_struct_for);
        _vala_code_node_unref0 (self->base_type);
+       _g_free0 (self->deprecated_since);
+       _g_free0 (self->deprecated_replacement);
 }
 
 
@@ -20934,7 +21533,7 @@ static void vala_gir_parser_value_take_parameter_info (GValue* value, gpointer v
 
 static void vala_gir_parser_parameter_info_class_init (ValaGirParserParameterInfoClass * klass) {
        vala_gir_parser_parameter_info_parent_class = g_type_class_peek_parent (klass);
-       VALA_GIR_PARSER_PARAMETER_INFO_CLASS (klass)->finalize = vala_gir_parser_parameter_info_finalize;
+       ((ValaGirParserParameterInfoClass *) klass)->finalize = vala_gir_parser_parameter_info_finalize;
 }
 
 
@@ -20946,6 +21545,7 @@ static void vala_gir_parser_parameter_info_instance_init (ValaGirParserParameter
 static void vala_gir_parser_parameter_info_finalize (ValaGirParserParameterInfo* obj) {
        ValaGirParserParameterInfo * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_GIR_PARSER_TYPE_PARAMETER_INFO, ValaGirParserParameterInfo);
+       g_signal_handlers_destroy (self);
        _vala_code_node_unref0 (self->param);
 }
 
@@ -20984,9 +21584,9 @@ static void vala_gir_parser_parameter_info_unref (gpointer instance) {
 
 static void vala_gir_parser_class_init (ValaGirParserClass * klass) {
        vala_gir_parser_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_gir_parser_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_gir_parser_finalize;
        g_type_class_add_private (klass, sizeof (ValaGirParserPrivate));
-       VALA_CODE_VISITOR_CLASS (klass)->visit_source_file = vala_gir_parser_real_visit_source_file;
+       ((ValaCodeVisitorClass *) klass)->visit_source_file = vala_gir_parser_real_visit_source_file;
 }
 
 
index e1f4f9d..6af2891 100644 (file)
@@ -78,7 +78,8 @@ public class Vala.GirParser : CodeVisitor {
                INSTANCE_IDX,
                EXPERIMENTAL,
                FLOATING,
-               TYPE_ID;
+               TYPE_ID,
+               RETURN_VOID;
 
                public static ArgumentType? from_string (string name) {
                        var enum_class = (EnumClass) typeof(ArgumentType).class_ref ();
@@ -523,6 +524,11 @@ public class Vala.GirParser : CodeVisitor {
                // alias-specific
                public DataType base_type;
 
+               public bool deprecated = false;
+               public uint64 deprecated_version = 0;
+               public string? deprecated_since = null;
+               public string? deprecated_replacement = null;
+
                public Node (string? name) {
                        this.name = name;
                }
@@ -633,13 +639,42 @@ public class Vala.GirParser : CodeVisitor {
 
                        var prefix = symbol.get_attribute_string ("CCode", "lower_case_cprefix");
                        if (prefix == null && (symbol is ObjectTypeSymbol || symbol is Struct)) {
-                               if (metadata.has_argument (ArgumentType.CPREFIX)) {
+                               if (metadata.has_argument (ArgumentType.LOWER_CASE_CPREFIX)) {
+                                       prefix = metadata.get_string (ArgumentType.LOWER_CASE_CPREFIX);
+                               } else if (metadata.has_argument (ArgumentType.CPREFIX)) {
                                        prefix = metadata.get_string (ArgumentType.CPREFIX);
                                } else {
                                        prefix = symbol.get_attribute_string ("CCode", "cprefix");
                                }
                        }
 
+                       if (prefix == null && girdata != null && (girdata.contains ("c:symbol-prefix") || girdata.contains("c:symbol-prefixes"))) {
+                               /* Use the prefix in the gir. We look up prefixes up to the root.
+                                  If some node does not have girdata, we ignore it as i might be
+                                  a namespace created due to reparenting. */
+                               unowned Node cur = this;
+                               do {
+                                       if (cur.girdata != null) {
+                                               var p = cur.girdata["c:symbol-prefix"];
+                                               if (p == null) {
+                                                       p = cur.girdata["c:symbol-prefixes"];
+                                                       if (p != null) {
+                                                               var idx = p.index_of (",");
+                                                               if (idx >= 0) {
+                                                                       p = p.substring (0, idx);
+                                                               }
+                                                       }
+                                               }
+
+                                               if (p != null) {
+                                                       prefix = p+"_"+prefix;
+                                               }
+                                       }
+
+                                       cur = cur.parent;
+                               } while (cur != null);
+                       }
+
                        if (prefix == null) {
                                prefix = get_default_lower_case_cprefix ();
                        }
@@ -672,8 +707,12 @@ public class Vala.GirParser : CodeVisitor {
                                return "";
                        }
                        var prefix = symbol.get_attribute_string ("CCode", "cprefix");
-                       if (prefix == null && girdata != null) {
+                       if (prefix == null && girdata != null && girdata["c:identifier-prefixes"] != null) {
                                prefix = girdata["c:identifier-prefixes"];
+                               int idx = prefix.index_of (",");
+                               if (idx != -1) {
+                                       prefix = prefix.substring (0, idx);
+                               }
                        }
                        if (prefix == null) {
                                if (symbol is Enum || symbol is ErrorDomain) {
@@ -749,6 +788,26 @@ public class Vala.GirParser : CodeVisitor {
                        return "";
                }
 
+               private static uint64 parse_version_string (string version) {
+                       int64 res = 0;
+                       int shift = 16;
+                       string[] tokens = version.split (".", 3);
+
+                       foreach (unowned string token in tokens) {
+                               int64 t;
+
+                               if (!int64.try_parse (token, out t))
+                                       return 0;
+                               if (t > 0xffff)
+                                       return 0;
+
+                               res |= (t << shift);
+                               shift -= 8;
+                       }
+
+                       return res;
+               }
+
                public void process (GirParser parser) {
                        if (processed) {
                                return;
@@ -1034,21 +1093,29 @@ public class Vala.GirParser : CodeVisitor {
                                        }
                                }
 
-                               // deprecation
+                               // deprecated
                                if (metadata.has_argument (ArgumentType.REPLACEMENT)) {
-                                       symbol.set_attribute_string ("Deprecated", "replacement", metadata.get_string (ArgumentType.REPLACEMENT));
+                                       deprecated = true;
+                                       deprecated_replacement = metadata.get_string (ArgumentType.REPLACEMENT);
                                }
                                if (metadata.has_argument (ArgumentType.DEPRECATED_SINCE)) {
-                                       symbol.set_attribute_string ("Deprecated", "since",  metadata.get_string (ArgumentType.DEPRECATED_SINCE));
+                                       deprecated = true;
+                                       deprecated_since = metadata.get_string (ArgumentType.DEPRECATED_SINCE);
                                } else if (girdata["deprecated-version"] != null) {
-                                       symbol.set_attribute_string ("Deprecated", "since", girdata.get ("deprecated-version"));
+                                       deprecated = true;
+                                       deprecated_since = girdata.get ("deprecated-version");
                                }
                                if (metadata.has_argument (ArgumentType.DEPRECATED)) {
-                                       if (metadata.get_bool (ArgumentType.DEPRECATED)) {                                              
-                                               symbol.set_attribute ("Deprecated", true);
+                                       deprecated = metadata.get_bool (ArgumentType.DEPRECATED, true);
+                                       if (!deprecated) {
+                                               deprecated_since = null;
+                                               deprecated_replacement = null;
                                        }
                                } else if (girdata["deprecated"] != null) {
-                                       symbol.set_attribute ("Deprecated", true);
+                                       deprecated = true;
+                               }
+                               if (deprecated_since != null) {
+                                       deprecated_version = parse_version_string (deprecated_since);
                                }
 
                                // experimental
@@ -1068,11 +1135,7 @@ public class Vala.GirParser : CodeVisitor {
 
                                // lower_case_cprefix
                                if (get_lower_case_cprefix () != get_default_lower_case_cprefix ()) {
-                                       if (symbol is Class) {
-                                               symbol.set_attribute_string ("CCode", "cprefix", get_lower_case_cprefix ());
-                                       } else {
-                                               symbol.set_attribute_string ("CCode", "lower_case_cprefix", get_lower_case_cprefix ());
-                                       }
+                                       symbol.set_attribute_string ("CCode", "lower_case_cprefix", get_lower_case_cprefix ());
                                }
                                // lower_case_csuffix
                                if (get_lower_case_csuffix () != get_default_lower_case_csuffix ()) {
@@ -1089,6 +1152,23 @@ public class Vala.GirParser : CodeVisitor {
 
                        if (!(new_symbol && merged) && is_container (symbol)) {
                                foreach (var node in members) {
+                                       if (this.deprecated_version > 0 && node.deprecated_version > 0) {
+                                               if (this.deprecated_version <= node.deprecated_version) {
+                                                       node.deprecated = false;
+                                                       node.deprecated_since = null;
+                                                       node.deprecated_replacement = null;
+                                               }
+                                       }
+                                       if (node.deprecated) {
+                                               node.symbol.set_attribute ("Deprecated", true);
+                                       }
+                                       if (node.deprecated_since != null) {
+                                               node.symbol.set_attribute_string ("Deprecated", "since", node.deprecated_since);
+                                       }
+                                       if (node.deprecated_replacement != null) {
+                                               node.symbol.set_attribute_string ("Deprecated", "replacement", node.deprecated_replacement);
+                                       }
+
                                        if (node.new_symbol && !node.merged && !metadata.get_bool (ArgumentType.HIDDEN)) {
                                                add_symbol_to_container (symbol, node.symbol);
                                        }
@@ -1221,6 +1301,7 @@ public class Vala.GirParser : CodeVisitor {
        public void parse_file (SourceFile source_file) {
                metadata_stack = new ArrayList<Metadata> ();
                metadata = Metadata.empty;
+               cheader_filenames = null;
 
                this.current_source_file = source_file;
                reader = new MarkupReader (source_file.filename);
@@ -1593,6 +1674,7 @@ public class Vala.GirParser : CodeVisitor {
                }
 
                if (array_data != null && array_data.length != 0) {
+                       type.value_owned = true;
                        type = new ArrayType (type, (int) array_data.length - 1, source_reference);
                }
 
@@ -1626,6 +1708,7 @@ public class Vala.GirParser : CodeVisitor {
                        }
 
                        if (!(type is ArrayType) && metadata.get_bool (ArgumentType.ARRAY)) {
+                               type.value_owned = true;
                                type = new ArrayType (type, 1, type.source_reference);
                                changed = true;
                        }
@@ -1856,6 +1939,13 @@ public class Vala.GirParser : CodeVisitor {
                start_element ("namespace");
 
                string? cprefix = reader.get_attribute ("c:identifier-prefixes");
+               if (cprefix != null) {
+                       int idx = cprefix.index_of (",");
+                       if (idx != -1) {
+                               cprefix = cprefix.substring (0, idx);
+                       }
+               }
+
                string? lower_case_cprefix = reader.get_attribute ("c:symbol-prefixes");
                string vala_namespace = cprefix;
                string gir_namespace = reader.get_attribute ("name");
@@ -2216,6 +2306,7 @@ public class Vala.GirParser : CodeVisitor {
                start_element ("return-value");
 
                string transfer = reader.get_attribute ("transfer-ownership");
+               string nullable = reader.get_attribute ("nullable");
                string allow_none = reader.get_attribute ("allow-none");
                next ();
 
@@ -2226,7 +2317,7 @@ public class Vala.GirParser : CodeVisitor {
                if (transfer == "full" || transfer == "container") {
                        type.value_owned = true;
                }
-               if (allow_none == "1") {
+               if (nullable == "1" || allow_none == "1") {
                        type.nullable = true;
                }
                type = element_get_type (type, true, ref no_array_length, ref array_null_terminated);
@@ -2241,7 +2332,11 @@ public class Vala.GirParser : CodeVisitor {
                closure_idx = -1;
                destroy_idx = -1;
 
-               start_element ("parameter");
+               string element_type = reader.name;
+               if (current_token != MarkupTokenType.START_ELEMENT || (element_type != "parameter" && element_type != "instance-parameter")) {
+                       Report.error (get_current_src (), "expected start element of `parameter' or `instance-parameter'");
+               }
+               start_element (element_type);
                string name = reader.get_attribute ("name");
                if (name == null) {
                        name = default_name;
@@ -2259,6 +2354,7 @@ public class Vala.GirParser : CodeVisitor {
                        direction = reader.get_attribute ("direction");
                }
                string transfer = reader.get_attribute ("transfer-ownership");
+               string nullable = reader.get_attribute ("nullable");
                string allow_none = reader.get_attribute ("allow-none");
 
                scope = element_get_string ("scope", ArgumentType.SCOPE);
@@ -2292,7 +2388,7 @@ public class Vala.GirParser : CodeVisitor {
                        if (transfer == "full" || transfer == "container" || destroy != null) {
                                type.value_owned = true;
                        }
-                       if (allow_none == "1" && direction != "out") {
+                       if (nullable == "1" || (allow_none == "1" && direction != "out")) {
                                type.nullable = true;
                        }
 
@@ -2331,7 +2427,7 @@ public class Vala.GirParser : CodeVisitor {
                                param.initializer = null;
                        }
                }
-               end_element ("parameter");
+               end_element (element_type);
                return param;
        }
 
@@ -2368,6 +2464,7 @@ public class Vala.GirParser : CodeVisitor {
                                }
                                next ();
                                var element_type = parse_type ();
+                               element_type.value_owned = true;
                                end_element ("array");
                                return new ArrayType (element_type, 1, src);
                        }
@@ -2415,7 +2512,9 @@ public class Vala.GirParser : CodeVisitor {
                } else if (type_name == "gpointer") {
                        type = new PointerType (new VoidType (get_current_src ()), get_current_src ());
                } else if (type_name == "GObject.Strv") {
-                       type = new ArrayType (new UnresolvedType.from_symbol (new UnresolvedSymbol (null, "string")), 1, get_current_src ());
+                       var element_type = new UnresolvedType.from_symbol (new UnresolvedSymbol (null, "string"));
+                       element_type.value_owned = true;
+                       type = new ArrayType (element_type, 1, get_current_src ());
                        no_array_length = true;
                        array_null_terminated = true;
                } else {
@@ -2713,6 +2812,7 @@ public class Vala.GirParser : CodeVisitor {
                start_element ("field");
                push_node (element_get_name (), false);
 
+               string nullable = reader.get_attribute ("nullable");
                string allow_none = reader.get_attribute ("allow-none");
                next ();
 
@@ -2738,7 +2838,7 @@ public class Vala.GirParser : CodeVisitor {
                        }
                        field.set_attribute_bool ("CCode", "array_null_terminated", true);
                }
-               if (allow_none == "1") {
+               if (nullable == "1" || allow_none == "1") {
                        type.nullable = true;
                }
                current.symbol = field;
@@ -2962,7 +3062,8 @@ public class Vala.GirParser : CodeVisitor {
                        next ();
 
                        while (current_token == MarkupTokenType.START_ELEMENT) {
-                               if (reader.name == "instance-parameter") {
+                               if (reader.name == "instance-parameter" &&
+                                   !(symbol_type == "function" || symbol_type == "constructor")) {
                                        skip_element ();
                                        continue;
                                }
@@ -3098,9 +3199,9 @@ public class Vala.GirParser : CodeVisitor {
                        } else if (reader.name == "method") {
                                parse_method ("method");
                                var cname = old_current.get_cname ();
-                               if (cname.has_suffix ("_ref")) {
+                               if (cname.has_suffix ("_ref") && (ref_method == null || old_current.name == "ref")) {
                                        ref_method = old_current;
-                               } else if (cname.has_suffix ("_unref")) {
+                               } else if (cname.has_suffix ("_unref") && (unref_method == null || old_current.name == "unref")) {
                                        unref_method = old_current;
                                }
                        } else if (reader.name == "function") {
@@ -3352,6 +3453,16 @@ public class Vala.GirParser : CodeVisitor {
                        cl.comment = alias.comment;
                        cl.external = true;
                        alias.symbol = cl;
+               } else if (type_sym is Interface) {
+                       // this is not a correct alias, but what can we do otherwise?
+                       var iface = new Interface (alias.name, alias.source_reference);
+                       iface.access = SymbolAccessibility.PUBLIC;
+                       if (base_type != null) {
+                               iface.add_prerequisite (base_type);
+                       }
+                       iface.comment = alias.comment;
+                       iface.external = true;
+                       alias.symbol = iface;
                } else if (type_sym is Delegate) {
                        var orig = (Delegate) type_sym;
                        if (base_node != null) {
@@ -3421,8 +3532,10 @@ public class Vala.GirParser : CodeVisitor {
                                        if (last_param.param.variable_type is UnresolvedType) {
                                                var st = resolve_symbol (node.parent, ((UnresolvedType) last_param.param.variable_type).unresolved_symbol) as Struct;
                                                if (st != null && !st.is_simple_type () && !last_param.param.variable_type.nullable) {
-                                                       last_param.keep = false;
-                                                       return_type = last_param.param.variable_type.copy ();
+                                                       if (!node.metadata.get_bool (ArgumentType.RETURN_VOID, false)) {
+                                                               last_param.keep = false;
+                                                               return_type = last_param.param.variable_type.copy ();
+                                                       }
                                                }
                                        }
                                }
index 817ae9a..41affc1 100644 (file)
@@ -1728,13 +1728,13 @@ void vala_if_statement_set_false_statement (ValaIfStatement* self, ValaBlock* va
 
 static void vala_if_statement_class_init (ValaIfStatementClass * klass) {
        vala_if_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_if_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_if_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaIfStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_if_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_if_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_if_statement_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_if_statement_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_if_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_if_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_if_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_if_statement_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->check = vala_if_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_if_statement_real_emit;
 }
 
 
index fc350f5..5ee9f0d 100644 (file)
@@ -399,6 +399,8 @@ void vala_expression_set_value_type (ValaExpression* self, ValaDataType* value);
 void vala_data_type_set_nullable (ValaDataType* self, gboolean value);
 static void vala_initializer_list_real_emit (ValaCodeNode* base, ValaCodeGenerator* codegen);
 void vala_code_node_emit (ValaCodeNode* self, ValaCodeGenerator* codegen);
+static void vala_initializer_list_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection);
+void vala_code_node_get_used_variables (ValaCodeNode* self, ValaCollection* collection);
 gint vala_initializer_list_get_size (ValaInitializerList* self);
 static void vala_initializer_list_finalize (ValaCodeNode* obj);
 
@@ -1417,6 +1419,58 @@ static void vala_initializer_list_real_emit (ValaCodeNode* base, ValaCodeGenerat
 }
 
 
+static void vala_initializer_list_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection) {
+       ValaInitializerList * self;
+       self = (ValaInitializerList*) base;
+       g_return_if_fail (collection != NULL);
+       {
+               ValaList* _expr_list = NULL;
+               ValaList* _tmp0_ = NULL;
+               ValaList* _tmp1_ = NULL;
+               gint _expr_size = 0;
+               ValaList* _tmp2_ = NULL;
+               gint _tmp3_ = 0;
+               gint _tmp4_ = 0;
+               gint _expr_index = 0;
+               _tmp0_ = self->priv->initializers;
+               _tmp1_ = _vala_iterable_ref0 (_tmp0_);
+               _expr_list = _tmp1_;
+               _tmp2_ = _expr_list;
+               _tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
+               _tmp4_ = _tmp3_;
+               _expr_size = _tmp4_;
+               _expr_index = -1;
+               while (TRUE) {
+                       gint _tmp5_ = 0;
+                       gint _tmp6_ = 0;
+                       gint _tmp7_ = 0;
+                       ValaExpression* expr = NULL;
+                       ValaList* _tmp8_ = NULL;
+                       gint _tmp9_ = 0;
+                       gpointer _tmp10_ = NULL;
+                       ValaExpression* _tmp11_ = NULL;
+                       ValaCollection* _tmp12_ = NULL;
+                       _tmp5_ = _expr_index;
+                       _expr_index = _tmp5_ + 1;
+                       _tmp6_ = _expr_index;
+                       _tmp7_ = _expr_size;
+                       if (!(_tmp6_ < _tmp7_)) {
+                               break;
+                       }
+                       _tmp8_ = _expr_list;
+                       _tmp9_ = _expr_index;
+                       _tmp10_ = vala_list_get (_tmp8_, _tmp9_);
+                       expr = (ValaExpression*) _tmp10_;
+                       _tmp11_ = expr;
+                       _tmp12_ = collection;
+                       vala_code_node_get_used_variables ((ValaCodeNode*) _tmp11_, _tmp12_);
+                       _vala_code_node_unref0 (expr);
+               }
+               _vala_iterable_unref0 (_expr_list);
+       }
+}
+
+
 gint vala_initializer_list_get_size (ValaInitializerList* self) {
        gint result;
        ValaList* _tmp0_ = NULL;
@@ -1433,15 +1487,16 @@ gint vala_initializer_list_get_size (ValaInitializerList* self) {
 
 static void vala_initializer_list_class_init (ValaInitializerListClass * klass) {
        vala_initializer_list_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_initializer_list_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_initializer_list_finalize;
        g_type_class_add_private (klass, sizeof (ValaInitializerListPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_initializer_list_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_initializer_list_real_accept;
-       VALA_EXPRESSION_CLASS (klass)->is_constant = vala_initializer_list_real_is_constant;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_initializer_list_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_initializer_list_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_initializer_list_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_initializer_list_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_initializer_list_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->accept = vala_initializer_list_real_accept;
+       ((ValaExpressionClass *) klass)->is_constant = vala_initializer_list_real_is_constant;
+       ((ValaExpressionClass *) klass)->is_pure = vala_initializer_list_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_initializer_list_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->check = vala_initializer_list_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_initializer_list_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_initializer_list_real_get_used_variables;
 }
 
 
index edd9857..6955aad 100644 (file)
@@ -224,4 +224,10 @@ public class Vala.InitializerList : Expression {
 
                codegen.visit_expression (this);
        }
+
+       public override void get_used_variables (Collection<Variable> collection) {
+               foreach (Expression expr in initializers) {
+                       expr.get_used_variables (collection);
+               }
+       }
 }
index a3071da..a1ee069 100644 (file)
@@ -1833,13 +1833,13 @@ void vala_integer_literal_set_type_suffix (ValaIntegerLiteral* self, const gchar
 
 static void vala_integer_literal_class_init (ValaIntegerLiteralClass * klass) {
        vala_integer_literal_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_integer_literal_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_integer_literal_finalize;
        g_type_class_add_private (klass, sizeof (ValaIntegerLiteralPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_integer_literal_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_integer_literal_real_to_string;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_integer_literal_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_integer_literal_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_integer_literal_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_integer_literal_real_accept;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_integer_literal_real_to_string;
+       ((ValaExpressionClass *) klass)->is_pure = vala_integer_literal_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_integer_literal_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_integer_literal_real_emit;
 }
 
 
index daee3d7..2fc9d60 100644 (file)
@@ -567,10 +567,10 @@ static gboolean vala_integer_type_real_compatible (ValaDataType* base, ValaDataT
 
 static void vala_integer_type_class_init (ValaIntegerTypeClass * klass) {
        vala_integer_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_integer_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_integer_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaIntegerTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_integer_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->compatible = vala_integer_type_real_compatible;
+       ((ValaDataTypeClass *) klass)->copy = vala_integer_type_real_copy;
+       ((ValaDataTypeClass *) klass)->compatible = vala_integer_type_real_compatible;
 }
 
 
index 6ca3968..f6a3d8e 100644 (file)
@@ -3264,27 +3264,27 @@ static gboolean vala_interface_real_check (ValaCodeNode* base, ValaCodeContext*
 
 static void vala_interface_class_init (ValaInterfaceClass * klass) {
        vala_interface_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_interface_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_interface_finalize;
        g_type_class_add_private (klass, sizeof (ValaInterfacePrivate));
-       VALA_SYMBOL_CLASS (klass)->add_method = vala_interface_real_add_method;
-       VALA_OBJECT_TYPE_SYMBOL_CLASS (klass)->get_methods = vala_interface_real_get_methods;
-       VALA_SYMBOL_CLASS (klass)->add_field = vala_interface_real_add_field;
-       VALA_SYMBOL_CLASS (klass)->add_constant = vala_interface_real_add_constant;
-       VALA_SYMBOL_CLASS (klass)->add_property = vala_interface_real_add_property;
-       VALA_OBJECT_TYPE_SYMBOL_CLASS (klass)->get_properties = vala_interface_real_get_properties;
-       VALA_SYMBOL_CLASS (klass)->add_signal = vala_interface_real_add_signal;
-       VALA_OBJECT_TYPE_SYMBOL_CLASS (klass)->get_signals = vala_interface_real_get_signals;
-       VALA_INTERFACE_CLASS (klass)->get_virtuals = vala_interface_real_get_virtuals;
-       VALA_SYMBOL_CLASS (klass)->add_class = vala_interface_real_add_class;
-       VALA_SYMBOL_CLASS (klass)->add_struct = vala_interface_real_add_struct;
-       VALA_SYMBOL_CLASS (klass)->add_enum = vala_interface_real_add_enum;
-       VALA_SYMBOL_CLASS (klass)->add_delegate = vala_interface_real_add_delegate;
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_interface_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_interface_real_accept_children;
-       VALA_TYPESYMBOL_CLASS (klass)->is_reference_type = vala_interface_real_is_reference_type;
-       VALA_TYPESYMBOL_CLASS (klass)->is_subtype_of = vala_interface_real_is_subtype_of;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_interface_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_interface_real_check;
+       ((ValaSymbolClass *) klass)->add_method = vala_interface_real_add_method;
+       ((ValaObjectTypeSymbolClass *) klass)->get_methods = vala_interface_real_get_methods;
+       ((ValaSymbolClass *) klass)->add_field = vala_interface_real_add_field;
+       ((ValaSymbolClass *) klass)->add_constant = vala_interface_real_add_constant;
+       ((ValaSymbolClass *) klass)->add_property = vala_interface_real_add_property;
+       ((ValaObjectTypeSymbolClass *) klass)->get_properties = vala_interface_real_get_properties;
+       ((ValaSymbolClass *) klass)->add_signal = vala_interface_real_add_signal;
+       ((ValaObjectTypeSymbolClass *) klass)->get_signals = vala_interface_real_get_signals;
+       ((ValaInterfaceClass *) klass)->get_virtuals = vala_interface_real_get_virtuals;
+       ((ValaSymbolClass *) klass)->add_class = vala_interface_real_add_class;
+       ((ValaSymbolClass *) klass)->add_struct = vala_interface_real_add_struct;
+       ((ValaSymbolClass *) klass)->add_enum = vala_interface_real_add_enum;
+       ((ValaSymbolClass *) klass)->add_delegate = vala_interface_real_add_delegate;
+       ((ValaCodeNodeClass *) klass)->accept = vala_interface_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_interface_real_accept_children;
+       ((ValaTypeSymbolClass *) klass)->is_reference_type = vala_interface_real_is_reference_type;
+       ((ValaTypeSymbolClass *) klass)->is_subtype_of = vala_interface_real_is_subtype_of;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_interface_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_interface_real_check;
 }
 
 
index be8a28c..39bb310 100644 (file)
@@ -495,9 +495,9 @@ void vala_interface_type_set_interface_symbol (ValaInterfaceType* self, ValaInte
 
 static void vala_interface_type_class_init (ValaInterfaceTypeClass * klass) {
        vala_interface_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_interface_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_interface_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaInterfaceTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_interface_type_real_copy;
+       ((ValaDataTypeClass *) klass)->copy = vala_interface_type_real_copy;
 }
 
 
index 3465a46..acab7fe 100644 (file)
@@ -294,7 +294,7 @@ static ValaDataType* vala_invalid_type_real_copy (ValaDataType* base) {
 
 static void vala_invalid_type_class_init (ValaInvalidTypeClass * klass) {
        vala_invalid_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_invalid_type_real_copy;
+       ((ValaDataTypeClass *) klass)->copy = vala_invalid_type_real_copy;
 }
 
 
index c0b1435..a1e2c54 100644 (file)
@@ -2470,14 +2470,14 @@ void vala_lambda_expression_set_method (ValaLambdaExpression* self, ValaMethod*
 
 static void vala_lambda_expression_class_init (ValaLambdaExpressionClass * klass) {
        vala_lambda_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_lambda_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_lambda_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaLambdaExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_lambda_expression_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_lambda_expression_real_accept_children;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_lambda_expression_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_lambda_expression_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_lambda_expression_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_lambda_expression_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_lambda_expression_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_lambda_expression_real_accept_children;
+       ((ValaExpressionClass *) klass)->is_pure = vala_lambda_expression_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_lambda_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_lambda_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_lambda_expression_real_get_used_variables;
 }
 
 
index 443c6c6..268be8c 100644 (file)
@@ -242,8 +242,8 @@ ValaLiteral* vala_literal_construct (GType object_type) {
 
 static void vala_literal_class_init (ValaLiteralClass * klass) {
        vala_literal_parent_class = g_type_class_peek_parent (klass);
-       VALA_EXPRESSION_CLASS (klass)->is_constant = vala_literal_real_is_constant;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_literal_real_is_pure;
+       ((ValaExpressionClass *) klass)->is_constant = vala_literal_real_is_constant;
+       ((ValaExpressionClass *) klass)->is_pure = vala_literal_real_is_pure;
 }
 
 
index 67f0199..7f42780 100644 (file)
@@ -1283,13 +1283,13 @@ void vala_local_variable_set_no_init (ValaLocalVariable* self, gboolean value) {
 
 static void vala_local_variable_class_init (ValaLocalVariableClass * klass) {
        vala_local_variable_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_local_variable_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_local_variable_finalize;
        g_type_class_add_private (klass, sizeof (ValaLocalVariablePrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_local_variable_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_local_variable_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_local_variable_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_local_variable_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_local_variable_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_local_variable_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_local_variable_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_local_variable_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_local_variable_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_local_variable_real_check;
 }
 
 
index 582920e..2c6d47b 100644 (file)
@@ -678,11 +678,11 @@ void vala_lock_statement_set_body (ValaLockStatement* self, ValaBlock* value) {
 
 static void vala_lock_statement_class_init (ValaLockStatementClass * klass) {
        vala_lock_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_lock_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_lock_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaLockStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_lock_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_lock_statement_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_lock_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_lock_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->check = vala_lock_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_lock_statement_real_emit;
 }
 
 
index bf6961b..a68f427 100644 (file)
@@ -402,12 +402,12 @@ void vala_loop_set_body (ValaLoop* self, ValaBlock* value) {
 
 static void vala_loop_class_init (ValaLoopClass * klass) {
        vala_loop_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_loop_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_loop_finalize;
        g_type_class_add_private (klass, sizeof (ValaLoopPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_loop_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_loop_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_loop_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_loop_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_loop_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_loop_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_loop_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_loop_real_emit;
 }
 
 
index 3bf48b0..ae46e11 100644 (file)
@@ -41,7 +41,7 @@ typedef struct _ValaMarkupReader ValaMarkupReader;
 typedef struct _ValaMarkupReaderClass ValaMarkupReaderClass;
 typedef struct _ValaMarkupReaderPrivate ValaMarkupReaderPrivate;
 #define _g_free0(var) (var = (g_free (var), NULL))
-#define _g_mapped_file_free0(var) ((var == NULL) ? NULL : (var = (g_mapped_file_free (var), NULL)))
+#define _g_mapped_file_unref0(var) ((var == NULL) ? NULL : (var = (g_mapped_file_unref (var), NULL)))
 #define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
 
 #define VALA_TYPE_SOURCE_REFERENCE (vala_source_reference_get_type ())
@@ -166,9 +166,9 @@ ValaMarkupReader* vala_markup_reader_construct (GType object_type, const gchar*
                _tmp2_ = filename;
                _tmp3_ = g_mapped_file_new (_tmp2_, FALSE, &_inner_error_);
                _tmp1_ = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_FILE_ERROR) {
-                               goto __catch9_g_file_error;
+                               goto __catch11_g_file_error;
                        }
                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
@@ -176,7 +176,7 @@ ValaMarkupReader* vala_markup_reader_construct (GType object_type, const gchar*
                }
                _tmp4_ = _tmp1_;
                _tmp1_ = NULL;
-               _g_mapped_file_free0 (self->priv->mapped_file);
+               _g_mapped_file_unref0 (self->priv->mapped_file);
                self->priv->mapped_file = _tmp4_;
                _tmp5_ = self->priv->mapped_file;
                _tmp6_ = g_mapped_file_get_contents (_tmp5_);
@@ -189,10 +189,10 @@ ValaMarkupReader* vala_markup_reader_construct (GType object_type, const gchar*
                self->priv->current = _tmp10_;
                self->priv->line = 1;
                self->priv->column = 1;
-               _g_mapped_file_free0 (_tmp1_);
+               _g_mapped_file_unref0 (_tmp1_);
        }
-       goto __finally9;
-       __catch9_g_file_error:
+       goto __finally11;
+       __catch11_g_file_error:
        {
                GError* e = NULL;
                const gchar* _tmp11_ = NULL;
@@ -211,8 +211,8 @@ ValaMarkupReader* vala_markup_reader_construct (GType object_type, const gchar*
                _g_free0 (_tmp15_);
                _g_error_free0 (e);
        }
-       __finally9:
-       if (_inner_error_ != NULL) {
+       __finally11:
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return NULL;
@@ -1437,7 +1437,7 @@ static void vala_markup_reader_finalize (GObject* obj) {
        _g_free0 (self->priv->_filename);
        _g_free0 (self->priv->_name);
        _g_free0 (self->priv->_content);
-       _g_mapped_file_free0 (self->priv->mapped_file);
+       _g_mapped_file_unref0 (self->priv->mapped_file);
        _vala_map_unref0 (self->priv->attributes);
        G_OBJECT_CLASS (vala_markup_reader_parent_class)->finalize (obj);
 }
index 316d73e..1580ad9 100644 (file)
@@ -1670,6 +1670,7 @@ gboolean vala_data_type_get_value_owned (ValaDataType* self);
 void vala_member_access_check_lvalue_access (ValaMemberAccess* self);
 void vala_report_warning (ValaSourceReference* source, const gchar* message);
 gboolean vala_code_context_get_experimental_non_null (ValaCodeContext* self);
+GType vala_array_type_get_type (void) G_GNUC_CONST;
 ValaObjectType* vala_object_type_new (ValaObjectTypeSymbol* type_symbol);
 ValaObjectType* vala_object_type_construct (GType object_type, ValaObjectTypeSymbol* type_symbol);
 void vala_data_type_add_type_argument (ValaDataType* self, ValaDataType* arg);
@@ -1679,7 +1680,6 @@ ValaDataType* vala_data_type_get_actual_type (ValaDataType* self, ValaDataType*
 ValaDataType* vala_semantic_analyzer_get_data_type_for_symbol (ValaTypeSymbol* sym);
 void vala_expression_set_target_type (ValaExpression* self, ValaDataType* value);
 const gchar* vala_symbol_get_name (ValaSymbol* self);
-GType vala_array_type_get_type (void) G_GNUC_CONST;
 ValaExpression* vala_pointer_indirection_get_inner (ValaPointerIndirection* self);
 void vala_expression_set_lvalue (ValaExpression* self, gboolean value);
 static void vala_member_access_real_emit (ValaCodeNode* base, ValaCodeGenerator* codegen);
@@ -2234,8 +2234,8 @@ static gboolean vala_member_access_real_check (ValaCodeNode* base, ValaCodeConte
        gboolean _tmp1140_ = FALSE;
        gboolean _tmp1141_ = FALSE;
        gboolean _tmp1142_ = FALSE;
-       gboolean _tmp1433_ = FALSE;
-       gboolean _tmp1434_ = FALSE;
+       gboolean _tmp1438_ = FALSE;
+       gboolean _tmp1439_ = FALSE;
        self = (ValaMemberAccess*) base;
        g_return_val_if_fail (context != NULL, FALSE);
        _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
@@ -5592,37 +5592,38 @@ static gboolean vala_member_access_real_check (ValaCodeNode* base, ValaCodeConte
                gboolean _tmp1220_ = FALSE;
                gboolean _tmp1221_ = FALSE;
                gboolean _tmp1222_ = FALSE;
-               ValaCodeContext* _tmp1223_ = NULL;
-               gboolean _tmp1224_ = FALSE;
+               gboolean _tmp1223_ = FALSE;
+               ValaCodeContext* _tmp1224_ = NULL;
                gboolean _tmp1225_ = FALSE;
+               gboolean _tmp1226_ = FALSE;
                ValaMethod* m = NULL;
-               ValaSymbol* _tmp1249_ = NULL;
-               ValaSymbol* _tmp1250_ = NULL;
-               ValaMethod* _tmp1251_ = NULL;
+               ValaSymbol* _tmp1254_ = NULL;
+               ValaSymbol* _tmp1255_ = NULL;
+               ValaMethod* _tmp1256_ = NULL;
                ValaMemberAccess* inner_ma = NULL;
-               ValaExpression* _tmp1252_ = NULL;
-               ValaExpression* _tmp1253_ = NULL;
-               ValaMemberAccess* _tmp1254_ = NULL;
-               gboolean _tmp1255_ = FALSE;
-               gboolean _tmp1256_ = FALSE;
-               gboolean _tmp1257_ = FALSE;
-               gboolean _tmp1258_ = FALSE;
-               gboolean _tmp1259_ = FALSE;
-               ValaMethod* _tmp1260_ = NULL;
-               ValaCodeContext* _tmp1301_ = NULL;
-               ValaSemanticAnalyzer* _tmp1302_ = NULL;
-               ValaSemanticAnalyzer* _tmp1303_ = NULL;
-               ValaSymbol* _tmp1304_ = NULL;
-               ValaSymbol* _tmp1305_ = NULL;
-               gboolean _tmp1306_ = FALSE;
-               gboolean _tmp1307_ = FALSE;
-               ValaDataType* _tmp1308_ = NULL;
-               ValaDataType* _tmp1309_ = NULL;
-               gboolean _tmp1310_ = FALSE;
-               ValaExpression* _tmp1311_ = NULL;
-               ValaExpression* _tmp1312_ = NULL;
-               ValaSymbol* _tmp1325_ = NULL;
-               ValaSymbol* _tmp1326_ = NULL;
+               ValaExpression* _tmp1257_ = NULL;
+               ValaExpression* _tmp1258_ = NULL;
+               ValaMemberAccess* _tmp1259_ = NULL;
+               gboolean _tmp1260_ = FALSE;
+               gboolean _tmp1261_ = FALSE;
+               gboolean _tmp1262_ = FALSE;
+               gboolean _tmp1263_ = FALSE;
+               gboolean _tmp1264_ = FALSE;
+               ValaMethod* _tmp1265_ = NULL;
+               ValaCodeContext* _tmp1306_ = NULL;
+               ValaSemanticAnalyzer* _tmp1307_ = NULL;
+               ValaSemanticAnalyzer* _tmp1308_ = NULL;
+               ValaSymbol* _tmp1309_ = NULL;
+               ValaSymbol* _tmp1310_ = NULL;
+               gboolean _tmp1311_ = FALSE;
+               gboolean _tmp1312_ = FALSE;
+               ValaDataType* _tmp1313_ = NULL;
+               ValaDataType* _tmp1314_ = NULL;
+               gboolean _tmp1315_ = FALSE;
+               ValaExpression* _tmp1316_ = NULL;
+               ValaExpression* _tmp1317_ = NULL;
+               ValaSymbol* _tmp1330_ = NULL;
+               ValaSymbol* _tmp1331_ = NULL;
                _tmp1175_ = instance;
                if (_tmp1175_) {
                        ValaExpression* _tmp1176_ = NULL;
@@ -5744,551 +5745,564 @@ static gboolean vala_member_access_real_check (ValaCodeNode* base, ValaCodeConte
                                _g_free0 (_tmp1216_);
                        }
                }
-               _tmp1223_ = context;
-               _tmp1224_ = vala_code_context_get_experimental_non_null (_tmp1223_);
-               _tmp1225_ = _tmp1224_;
-               if (_tmp1225_) {
-                       gboolean _tmp1226_ = FALSE;
-                       _tmp1226_ = instance;
-                       _tmp1222_ = _tmp1226_;
+               _tmp1224_ = context;
+               _tmp1225_ = vala_code_context_get_experimental_non_null (_tmp1224_);
+               _tmp1226_ = _tmp1225_;
+               if (_tmp1226_) {
+                       gboolean _tmp1227_ = FALSE;
+                       _tmp1227_ = instance;
+                       _tmp1223_ = _tmp1227_;
                } else {
-                       _tmp1222_ = FALSE;
+                       _tmp1223_ = FALSE;
                }
-               if (_tmp1222_) {
-                       ValaExpression* _tmp1227_ = NULL;
+               if (_tmp1223_) {
                        ValaExpression* _tmp1228_ = NULL;
-                       ValaDataType* _tmp1229_ = NULL;
+                       ValaExpression* _tmp1229_ = NULL;
                        ValaDataType* _tmp1230_ = NULL;
-                       gboolean _tmp1231_ = FALSE;
+                       ValaDataType* _tmp1231_ = NULL;
                        gboolean _tmp1232_ = FALSE;
-                       _tmp1227_ = vala_member_access_get_inner (self);
-                       _tmp1228_ = _tmp1227_;
-                       _tmp1229_ = vala_expression_get_value_type (_tmp1228_);
-                       _tmp1230_ = _tmp1229_;
-                       _tmp1231_ = vala_data_type_get_nullable (_tmp1230_);
-                       _tmp1232_ = _tmp1231_;
-                       _tmp1221_ = _tmp1232_;
+                       gboolean _tmp1233_ = FALSE;
+                       _tmp1228_ = vala_member_access_get_inner (self);
+                       _tmp1229_ = _tmp1228_;
+                       _tmp1230_ = vala_expression_get_value_type (_tmp1229_);
+                       _tmp1231_ = _tmp1230_;
+                       _tmp1232_ = vala_data_type_get_nullable (_tmp1231_);
+                       _tmp1233_ = _tmp1232_;
+                       _tmp1222_ = _tmp1233_;
                } else {
-                       _tmp1221_ = FALSE;
+                       _tmp1222_ = FALSE;
                }
-               if (_tmp1221_) {
-                       ValaExpression* _tmp1233_ = NULL;
+               if (_tmp1222_) {
                        ValaExpression* _tmp1234_ = NULL;
-                       ValaDataType* _tmp1235_ = NULL;
+                       ValaExpression* _tmp1235_ = NULL;
                        ValaDataType* _tmp1236_ = NULL;
-                       _tmp1233_ = vala_member_access_get_inner (self);
-                       _tmp1234_ = _tmp1233_;
-                       _tmp1235_ = vala_expression_get_value_type (_tmp1234_);
-                       _tmp1236_ = _tmp1235_;
-                       _tmp1220_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp1236_, VALA_TYPE_POINTER_TYPE);
+                       ValaDataType* _tmp1237_ = NULL;
+                       _tmp1234_ = vala_member_access_get_inner (self);
+                       _tmp1235_ = _tmp1234_;
+                       _tmp1236_ = vala_expression_get_value_type (_tmp1235_);
+                       _tmp1237_ = _tmp1236_;
+                       _tmp1221_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp1237_, VALA_TYPE_POINTER_TYPE);
                } else {
-                       _tmp1220_ = FALSE;
+                       _tmp1221_ = FALSE;
                }
-               if (_tmp1220_) {
-                       ValaExpression* _tmp1237_ = NULL;
+               if (_tmp1221_) {
                        ValaExpression* _tmp1238_ = NULL;
-                       ValaDataType* _tmp1239_ = NULL;
+                       ValaExpression* _tmp1239_ = NULL;
                        ValaDataType* _tmp1240_ = NULL;
-                       _tmp1237_ = vala_member_access_get_inner (self);
-                       _tmp1238_ = _tmp1237_;
-                       _tmp1239_ = vala_expression_get_value_type (_tmp1238_);
-                       _tmp1240_ = _tmp1239_;
-                       _tmp1219_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp1240_, VALA_TYPE_GENERIC_TYPE);
+                       ValaDataType* _tmp1241_ = NULL;
+                       _tmp1238_ = vala_member_access_get_inner (self);
+                       _tmp1239_ = _tmp1238_;
+                       _tmp1240_ = vala_expression_get_value_type (_tmp1239_);
+                       _tmp1241_ = _tmp1240_;
+                       _tmp1220_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp1241_, VALA_TYPE_GENERIC_TYPE);
+               } else {
+                       _tmp1220_ = FALSE;
+               }
+               if (_tmp1220_) {
+                       ValaExpression* _tmp1242_ = NULL;
+                       ValaExpression* _tmp1243_ = NULL;
+                       ValaDataType* _tmp1244_ = NULL;
+                       ValaDataType* _tmp1245_ = NULL;
+                       _tmp1242_ = vala_member_access_get_inner (self);
+                       _tmp1243_ = _tmp1242_;
+                       _tmp1244_ = vala_expression_get_value_type (_tmp1243_);
+                       _tmp1245_ = _tmp1244_;
+                       _tmp1219_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp1245_, VALA_TYPE_ARRAY_TYPE);
                } else {
                        _tmp1219_ = FALSE;
                }
                if (_tmp1219_) {
-                       ValaSourceReference* _tmp1241_ = NULL;
-                       ValaSourceReference* _tmp1242_ = NULL;
-                       ValaSymbol* _tmp1243_ = NULL;
-                       ValaSymbol* _tmp1244_ = NULL;
-                       gchar* _tmp1245_ = NULL;
-                       gchar* _tmp1246_ = NULL;
-                       gchar* _tmp1247_ = NULL;
-                       gchar* _tmp1248_ = NULL;
-                       _tmp1241_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                       _tmp1242_ = _tmp1241_;
-                       _tmp1243_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
-                       _tmp1244_ = _tmp1243_;
-                       _tmp1245_ = vala_symbol_get_full_name (_tmp1244_);
-                       _tmp1246_ = _tmp1245_;
-                       _tmp1247_ = g_strdup_printf ("Access to instance member `%s' from nullable reference denied", _tmp1246_);
-                       _tmp1248_ = _tmp1247_;
-                       vala_report_error (_tmp1242_, _tmp1248_);
-                       _g_free0 (_tmp1248_);
-                       _g_free0 (_tmp1246_);
+                       ValaSourceReference* _tmp1246_ = NULL;
+                       ValaSourceReference* _tmp1247_ = NULL;
+                       ValaSymbol* _tmp1248_ = NULL;
+                       ValaSymbol* _tmp1249_ = NULL;
+                       gchar* _tmp1250_ = NULL;
+                       gchar* _tmp1251_ = NULL;
+                       gchar* _tmp1252_ = NULL;
+                       gchar* _tmp1253_ = NULL;
+                       _tmp1246_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                       _tmp1247_ = _tmp1246_;
+                       _tmp1248_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
+                       _tmp1249_ = _tmp1248_;
+                       _tmp1250_ = vala_symbol_get_full_name (_tmp1249_);
+                       _tmp1251_ = _tmp1250_;
+                       _tmp1252_ = g_strdup_printf ("Access to instance member `%s' from nullable reference denied", _tmp1251_);
+                       _tmp1253_ = _tmp1252_;
+                       vala_report_error (_tmp1247_, _tmp1253_);
+                       _g_free0 (_tmp1253_);
+                       _g_free0 (_tmp1251_);
                }
-               _tmp1249_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
-               _tmp1250_ = _tmp1249_;
-               _tmp1251_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1250_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp1250_) : NULL);
-               m = _tmp1251_;
-               _tmp1252_ = vala_member_access_get_inner (self);
-               _tmp1253_ = _tmp1252_;
-               _tmp1254_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1253_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp1253_) : NULL);
-               inner_ma = _tmp1254_;
-               _tmp1260_ = m;
-               if (_tmp1260_ != NULL) {
-                       ValaMethod* _tmp1261_ = NULL;
-                       ValaMemberBinding _tmp1262_ = 0;
-                       ValaMemberBinding _tmp1263_ = 0;
-                       _tmp1261_ = m;
-                       _tmp1262_ = vala_method_get_binding (_tmp1261_);
-                       _tmp1263_ = _tmp1262_;
-                       _tmp1259_ = _tmp1263_ == VALA_MEMBER_BINDING_STATIC;
+               _tmp1254_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
+               _tmp1255_ = _tmp1254_;
+               _tmp1256_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1255_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp1255_) : NULL);
+               m = _tmp1256_;
+               _tmp1257_ = vala_member_access_get_inner (self);
+               _tmp1258_ = _tmp1257_;
+               _tmp1259_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1258_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp1258_) : NULL);
+               inner_ma = _tmp1259_;
+               _tmp1265_ = m;
+               if (_tmp1265_ != NULL) {
+                       ValaMethod* _tmp1266_ = NULL;
+                       ValaMemberBinding _tmp1267_ = 0;
+                       ValaMemberBinding _tmp1268_ = 0;
+                       _tmp1266_ = m;
+                       _tmp1267_ = vala_method_get_binding (_tmp1266_);
+                       _tmp1268_ = _tmp1267_;
+                       _tmp1264_ = _tmp1268_ == VALA_MEMBER_BINDING_STATIC;
                } else {
-                       _tmp1259_ = FALSE;
+                       _tmp1264_ = FALSE;
                }
-               if (_tmp1259_) {
-                       ValaMethod* _tmp1264_ = NULL;
-                       ValaSymbol* _tmp1265_ = NULL;
-                       ValaSymbol* _tmp1266_ = NULL;
-                       _tmp1264_ = m;
-                       _tmp1265_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp1264_);
-                       _tmp1266_ = _tmp1265_;
-                       _tmp1258_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1266_, VALA_TYPE_OBJECT_TYPE_SYMBOL);
+               if (_tmp1264_) {
+                       ValaMethod* _tmp1269_ = NULL;
+                       ValaSymbol* _tmp1270_ = NULL;
+                       ValaSymbol* _tmp1271_ = NULL;
+                       _tmp1269_ = m;
+                       _tmp1270_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp1269_);
+                       _tmp1271_ = _tmp1270_;
+                       _tmp1263_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1271_, VALA_TYPE_OBJECT_TYPE_SYMBOL);
                } else {
-                       _tmp1258_ = FALSE;
+                       _tmp1263_ = FALSE;
                }
-               if (_tmp1258_) {
-                       ValaExpression* _tmp1267_ = NULL;
-                       ValaExpression* _tmp1268_ = NULL;
-                       _tmp1267_ = vala_member_access_get_inner (self);
-                       _tmp1268_ = _tmp1267_;
-                       _tmp1257_ = _tmp1268_ != NULL;
+               if (_tmp1263_) {
+                       ValaExpression* _tmp1272_ = NULL;
+                       ValaExpression* _tmp1273_ = NULL;
+                       _tmp1272_ = vala_member_access_get_inner (self);
+                       _tmp1273_ = _tmp1272_;
+                       _tmp1262_ = _tmp1273_ != NULL;
                } else {
-                       _tmp1257_ = FALSE;
+                       _tmp1262_ = FALSE;
                }
-               if (_tmp1257_) {
-                       ValaExpression* _tmp1269_ = NULL;
-                       ValaExpression* _tmp1270_ = NULL;
-                       ValaDataType* _tmp1271_ = NULL;
-                       ValaDataType* _tmp1272_ = NULL;
-                       _tmp1269_ = vala_member_access_get_inner (self);
-                       _tmp1270_ = _tmp1269_;
-                       _tmp1271_ = vala_expression_get_value_type (_tmp1270_);
-                       _tmp1272_ = _tmp1271_;
-                       _tmp1256_ = _tmp1272_ == NULL;
+               if (_tmp1262_) {
+                       ValaExpression* _tmp1274_ = NULL;
+                       ValaExpression* _tmp1275_ = NULL;
+                       ValaDataType* _tmp1276_ = NULL;
+                       ValaDataType* _tmp1277_ = NULL;
+                       _tmp1274_ = vala_member_access_get_inner (self);
+                       _tmp1275_ = _tmp1274_;
+                       _tmp1276_ = vala_expression_get_value_type (_tmp1275_);
+                       _tmp1277_ = _tmp1276_;
+                       _tmp1261_ = _tmp1277_ == NULL;
                } else {
-                       _tmp1256_ = FALSE;
+                       _tmp1261_ = FALSE;
                }
-               if (_tmp1256_) {
-                       ValaMemberAccess* _tmp1273_ = NULL;
-                       ValaList* _tmp1274_ = NULL;
-                       gint _tmp1275_ = 0;
-                       gint _tmp1276_ = 0;
-                       _tmp1273_ = inner_ma;
-                       _tmp1274_ = _tmp1273_->priv->type_argument_list;
-                       _tmp1275_ = vala_collection_get_size ((ValaCollection*) _tmp1274_);
-                       _tmp1276_ = _tmp1275_;
-                       _tmp1255_ = _tmp1276_ > 0;
+               if (_tmp1261_) {
+                       ValaMemberAccess* _tmp1278_ = NULL;
+                       ValaList* _tmp1279_ = NULL;
+                       gint _tmp1280_ = 0;
+                       gint _tmp1281_ = 0;
+                       _tmp1278_ = inner_ma;
+                       _tmp1279_ = _tmp1278_->priv->type_argument_list;
+                       _tmp1280_ = vala_collection_get_size ((ValaCollection*) _tmp1279_);
+                       _tmp1281_ = _tmp1280_;
+                       _tmp1260_ = _tmp1281_ > 0;
                } else {
-                       _tmp1255_ = FALSE;
+                       _tmp1260_ = FALSE;
                }
-               if (_tmp1255_) {
-                       ValaExpression* _tmp1277_ = NULL;
-                       ValaExpression* _tmp1278_ = NULL;
-                       ValaMethod* _tmp1279_ = NULL;
-                       ValaSymbol* _tmp1280_ = NULL;
-                       ValaSymbol* _tmp1281_ = NULL;
-                       ValaObjectType* _tmp1282_ = NULL;
-                       ValaObjectType* _tmp1283_ = NULL;
-                       _tmp1277_ = vala_member_access_get_inner (self);
-                       _tmp1278_ = _tmp1277_;
-                       _tmp1279_ = m;
-                       _tmp1280_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp1279_);
-                       _tmp1281_ = _tmp1280_;
-                       _tmp1282_ = vala_object_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp1281_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
+               if (_tmp1260_) {
+                       ValaExpression* _tmp1282_ = NULL;
+                       ValaExpression* _tmp1283_ = NULL;
+                       ValaMethod* _tmp1284_ = NULL;
+                       ValaSymbol* _tmp1285_ = NULL;
+                       ValaSymbol* _tmp1286_ = NULL;
+                       ValaObjectType* _tmp1287_ = NULL;
+                       ValaObjectType* _tmp1288_ = NULL;
+                       _tmp1282_ = vala_member_access_get_inner (self);
                        _tmp1283_ = _tmp1282_;
-                       vala_expression_set_value_type (_tmp1278_, (ValaDataType*) _tmp1283_);
-                       _vala_code_node_unref0 (_tmp1283_);
+                       _tmp1284_ = m;
+                       _tmp1285_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp1284_);
+                       _tmp1286_ = _tmp1285_;
+                       _tmp1287_ = vala_object_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp1286_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
+                       _tmp1288_ = _tmp1287_;
+                       vala_expression_set_value_type (_tmp1283_, (ValaDataType*) _tmp1288_);
+                       _vala_code_node_unref0 (_tmp1288_);
                        {
                                ValaList* _type_argument_list = NULL;
-                               ValaMemberAccess* _tmp1284_ = NULL;
-                               ValaList* _tmp1285_ = NULL;
-                               ValaList* _tmp1286_ = NULL;
+                               ValaMemberAccess* _tmp1289_ = NULL;
+                               ValaList* _tmp1290_ = NULL;
+                               ValaList* _tmp1291_ = NULL;
                                gint _type_argument_size = 0;
-                               ValaList* _tmp1287_ = NULL;
-                               gint _tmp1288_ = 0;
-                               gint _tmp1289_ = 0;
+                               ValaList* _tmp1292_ = NULL;
+                               gint _tmp1293_ = 0;
+                               gint _tmp1294_ = 0;
                                gint _type_argument_index = 0;
-                               _tmp1284_ = inner_ma;
-                               _tmp1285_ = _tmp1284_->priv->type_argument_list;
-                               _tmp1286_ = _vala_iterable_ref0 (_tmp1285_);
-                               _type_argument_list = _tmp1286_;
-                               _tmp1287_ = _type_argument_list;
-                               _tmp1288_ = vala_collection_get_size ((ValaCollection*) _tmp1287_);
-                               _tmp1289_ = _tmp1288_;
-                               _type_argument_size = _tmp1289_;
+                               _tmp1289_ = inner_ma;
+                               _tmp1290_ = _tmp1289_->priv->type_argument_list;
+                               _tmp1291_ = _vala_iterable_ref0 (_tmp1290_);
+                               _type_argument_list = _tmp1291_;
+                               _tmp1292_ = _type_argument_list;
+                               _tmp1293_ = vala_collection_get_size ((ValaCollection*) _tmp1292_);
+                               _tmp1294_ = _tmp1293_;
+                               _type_argument_size = _tmp1294_;
                                _type_argument_index = -1;
                                while (TRUE) {
-                                       gint _tmp1290_ = 0;
-                                       gint _tmp1291_ = 0;
-                                       gint _tmp1292_ = 0;
+                                       gint _tmp1295_ = 0;
+                                       gint _tmp1296_ = 0;
+                                       gint _tmp1297_ = 0;
                                        ValaDataType* type_argument = NULL;
-                                       ValaList* _tmp1293_ = NULL;
-                                       gint _tmp1294_ = 0;
-                                       gpointer _tmp1295_ = NULL;
-                                       ValaExpression* _tmp1296_ = NULL;
-                                       ValaExpression* _tmp1297_ = NULL;
-                                       ValaDataType* _tmp1298_ = NULL;
-                                       ValaDataType* _tmp1299_ = NULL;
-                                       ValaDataType* _tmp1300_ = NULL;
-                                       _tmp1290_ = _type_argument_index;
-                                       _type_argument_index = _tmp1290_ + 1;
-                                       _tmp1291_ = _type_argument_index;
-                                       _tmp1292_ = _type_argument_size;
-                                       if (!(_tmp1291_ < _tmp1292_)) {
+                                       ValaList* _tmp1298_ = NULL;
+                                       gint _tmp1299_ = 0;
+                                       gpointer _tmp1300_ = NULL;
+                                       ValaExpression* _tmp1301_ = NULL;
+                                       ValaExpression* _tmp1302_ = NULL;
+                                       ValaDataType* _tmp1303_ = NULL;
+                                       ValaDataType* _tmp1304_ = NULL;
+                                       ValaDataType* _tmp1305_ = NULL;
+                                       _tmp1295_ = _type_argument_index;
+                                       _type_argument_index = _tmp1295_ + 1;
+                                       _tmp1296_ = _type_argument_index;
+                                       _tmp1297_ = _type_argument_size;
+                                       if (!(_tmp1296_ < _tmp1297_)) {
                                                break;
                                        }
-                                       _tmp1293_ = _type_argument_list;
-                                       _tmp1294_ = _type_argument_index;
-                                       _tmp1295_ = vala_list_get (_tmp1293_, _tmp1294_);
-                                       type_argument = (ValaDataType*) _tmp1295_;
-                                       _tmp1296_ = vala_member_access_get_inner (self);
-                                       _tmp1297_ = _tmp1296_;
-                                       _tmp1298_ = vala_expression_get_value_type (_tmp1297_);
-                                       _tmp1299_ = _tmp1298_;
-                                       _tmp1300_ = type_argument;
-                                       vala_data_type_add_type_argument (_tmp1299_, _tmp1300_);
+                                       _tmp1298_ = _type_argument_list;
+                                       _tmp1299_ = _type_argument_index;
+                                       _tmp1300_ = vala_list_get (_tmp1298_, _tmp1299_);
+                                       type_argument = (ValaDataType*) _tmp1300_;
+                                       _tmp1301_ = vala_member_access_get_inner (self);
+                                       _tmp1302_ = _tmp1301_;
+                                       _tmp1303_ = vala_expression_get_value_type (_tmp1302_);
+                                       _tmp1304_ = _tmp1303_;
+                                       _tmp1305_ = type_argument;
+                                       vala_data_type_add_type_argument (_tmp1304_, _tmp1305_);
                                        _vala_code_node_unref0 (type_argument);
                                }
                                _vala_iterable_unref0 (_type_argument_list);
                        }
                }
-               _tmp1301_ = context;
-               _tmp1302_ = vala_code_context_get_analyzer (_tmp1301_);
-               _tmp1303_ = _tmp1302_;
-               _tmp1304_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
-               _tmp1305_ = _tmp1304_;
-               _tmp1306_ = vala_expression_get_lvalue ((ValaExpression*) self);
-               _tmp1307_ = _tmp1306_;
-               _tmp1308_ = vala_semantic_analyzer_get_value_type_for_symbol (_tmp1303_, _tmp1305_, _tmp1307_);
-               _tmp1309_ = _tmp1308_;
-               vala_expression_set_formal_value_type ((ValaExpression*) self, _tmp1309_);
-               _vala_code_node_unref0 (_tmp1309_);
-               _tmp1311_ = vala_member_access_get_inner (self);
+               _tmp1306_ = context;
+               _tmp1307_ = vala_code_context_get_analyzer (_tmp1306_);
+               _tmp1308_ = _tmp1307_;
+               _tmp1309_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
+               _tmp1310_ = _tmp1309_;
+               _tmp1311_ = vala_expression_get_lvalue ((ValaExpression*) self);
                _tmp1312_ = _tmp1311_;
-               if (_tmp1312_ != NULL) {
-                       ValaDataType* _tmp1313_ = NULL;
-                       ValaDataType* _tmp1314_ = NULL;
-                       _tmp1313_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
-                       _tmp1314_ = _tmp1313_;
-                       _tmp1310_ = _tmp1314_ != NULL;
+               _tmp1313_ = vala_semantic_analyzer_get_value_type_for_symbol (_tmp1308_, _tmp1310_, _tmp1312_);
+               _tmp1314_ = _tmp1313_;
+               vala_expression_set_formal_value_type ((ValaExpression*) self, _tmp1314_);
+               _vala_code_node_unref0 (_tmp1314_);
+               _tmp1316_ = vala_member_access_get_inner (self);
+               _tmp1317_ = _tmp1316_;
+               if (_tmp1317_ != NULL) {
+                       ValaDataType* _tmp1318_ = NULL;
+                       ValaDataType* _tmp1319_ = NULL;
+                       _tmp1318_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
+                       _tmp1319_ = _tmp1318_;
+                       _tmp1315_ = _tmp1319_ != NULL;
                } else {
-                       _tmp1310_ = FALSE;
+                       _tmp1315_ = FALSE;
                }
-               if (_tmp1310_) {
-                       ValaDataType* _tmp1315_ = NULL;
-                       ValaDataType* _tmp1316_ = NULL;
-                       ValaExpression* _tmp1317_ = NULL;
-                       ValaExpression* _tmp1318_ = NULL;
-                       ValaDataType* _tmp1319_ = NULL;
+               if (_tmp1315_) {
                        ValaDataType* _tmp1320_ = NULL;
                        ValaDataType* _tmp1321_ = NULL;
-                       ValaDataType* _tmp1322_ = NULL;
-                       _tmp1315_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
-                       _tmp1316_ = _tmp1315_;
-                       _tmp1317_ = vala_member_access_get_inner (self);
-                       _tmp1318_ = _tmp1317_;
-                       _tmp1319_ = vala_expression_get_value_type (_tmp1318_);
-                       _tmp1320_ = _tmp1319_;
-                       _tmp1321_ = vala_data_type_get_actual_type (_tmp1316_, _tmp1320_, NULL, (ValaCodeNode*) self);
-                       _tmp1322_ = _tmp1321_;
-                       vala_expression_set_value_type ((ValaExpression*) self, _tmp1322_);
-                       _vala_code_node_unref0 (_tmp1322_);
-               } else {
-                       ValaDataType* _tmp1323_ = NULL;
+                       ValaExpression* _tmp1322_ = NULL;
+                       ValaExpression* _tmp1323_ = NULL;
                        ValaDataType* _tmp1324_ = NULL;
-                       _tmp1323_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
-                       _tmp1324_ = _tmp1323_;
-                       vala_expression_set_value_type ((ValaExpression*) self, _tmp1324_);
-               }
-               _tmp1325_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
-               _tmp1326_ = _tmp1325_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1326_, VALA_TYPE_METHOD)) {
+                       ValaDataType* _tmp1325_ = NULL;
+                       ValaDataType* _tmp1326_ = NULL;
                        ValaDataType* _tmp1327_ = NULL;
+                       _tmp1320_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
+                       _tmp1321_ = _tmp1320_;
+                       _tmp1322_ = vala_member_access_get_inner (self);
+                       _tmp1323_ = _tmp1322_;
+                       _tmp1324_ = vala_expression_get_value_type (_tmp1323_);
+                       _tmp1325_ = _tmp1324_;
+                       _tmp1326_ = vala_data_type_get_actual_type (_tmp1321_, _tmp1325_, NULL, (ValaCodeNode*) self);
+                       _tmp1327_ = _tmp1326_;
+                       vala_expression_set_value_type ((ValaExpression*) self, _tmp1327_);
+                       _vala_code_node_unref0 (_tmp1327_);
+               } else {
                        ValaDataType* _tmp1328_ = NULL;
+                       ValaDataType* _tmp1329_ = NULL;
+                       _tmp1328_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
+                       _tmp1329_ = _tmp1328_;
+                       vala_expression_set_value_type ((ValaExpression*) self, _tmp1329_);
+               }
+               _tmp1330_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
+               _tmp1331_ = _tmp1330_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1331_, VALA_TYPE_METHOD)) {
+                       ValaDataType* _tmp1332_ = NULL;
+                       ValaDataType* _tmp1333_ = NULL;
                        ValaMethod* base_method = NULL;
-                       ValaMethod* _tmp1335_ = NULL;
-                       ValaMethod* _tmp1336_ = NULL;
-                       ValaMethod* _tmp1337_ = NULL;
-                       gboolean _tmp1351_ = FALSE;
-                       gboolean _tmp1352_ = FALSE;
-                       _tmp1327_ = vala_expression_get_target_type ((ValaExpression*) self);
-                       _tmp1328_ = _tmp1327_;
-                       if (_tmp1328_ != NULL) {
-                               ValaDataType* _tmp1329_ = NULL;
-                               ValaDataType* _tmp1330_ = NULL;
-                               ValaDataType* _tmp1331_ = NULL;
-                               ValaDataType* _tmp1332_ = NULL;
-                               gboolean _tmp1333_ = FALSE;
-                               gboolean _tmp1334_ = FALSE;
-                               _tmp1329_ = vala_expression_get_value_type ((ValaExpression*) self);
-                               _tmp1330_ = _tmp1329_;
-                               _tmp1331_ = vala_expression_get_target_type ((ValaExpression*) self);
-                               _tmp1332_ = _tmp1331_;
-                               _tmp1333_ = vala_data_type_get_value_owned (_tmp1332_);
-                               _tmp1334_ = _tmp1333_;
-                               vala_data_type_set_value_owned (_tmp1330_, _tmp1334_);
+                       ValaMethod* _tmp1340_ = NULL;
+                       ValaMethod* _tmp1341_ = NULL;
+                       ValaMethod* _tmp1342_ = NULL;
+                       gboolean _tmp1356_ = FALSE;
+                       gboolean _tmp1357_ = FALSE;
+                       _tmp1332_ = vala_expression_get_target_type ((ValaExpression*) self);
+                       _tmp1333_ = _tmp1332_;
+                       if (_tmp1333_ != NULL) {
+                               ValaDataType* _tmp1334_ = NULL;
+                               ValaDataType* _tmp1335_ = NULL;
+                               ValaDataType* _tmp1336_ = NULL;
+                               ValaDataType* _tmp1337_ = NULL;
+                               gboolean _tmp1338_ = FALSE;
+                               gboolean _tmp1339_ = FALSE;
+                               _tmp1334_ = vala_expression_get_value_type ((ValaExpression*) self);
+                               _tmp1335_ = _tmp1334_;
+                               _tmp1336_ = vala_expression_get_target_type ((ValaExpression*) self);
+                               _tmp1337_ = _tmp1336_;
+                               _tmp1338_ = vala_data_type_get_value_owned (_tmp1337_);
+                               _tmp1339_ = _tmp1338_;
+                               vala_data_type_set_value_owned (_tmp1335_, _tmp1339_);
                        }
-                       _tmp1335_ = m;
-                       _tmp1336_ = vala_method_get_base_method (_tmp1335_);
-                       _tmp1337_ = _tmp1336_;
-                       if (_tmp1337_ != NULL) {
-                               ValaMethod* _tmp1338_ = NULL;
-                               ValaMethod* _tmp1339_ = NULL;
-                               ValaMethod* _tmp1340_ = NULL;
-                               ValaMethod* _tmp1341_ = NULL;
-                               _tmp1338_ = m;
-                               _tmp1339_ = vala_method_get_base_method (_tmp1338_);
-                               _tmp1340_ = _tmp1339_;
-                               _tmp1341_ = _vala_code_node_ref0 (_tmp1340_);
-                               _vala_code_node_unref0 (base_method);
-                               base_method = _tmp1341_;
-                       } else {
-                               ValaMethod* _tmp1342_ = NULL;
+                       _tmp1340_ = m;
+                       _tmp1341_ = vala_method_get_base_method (_tmp1340_);
+                       _tmp1342_ = _tmp1341_;
+                       if (_tmp1342_ != NULL) {
                                ValaMethod* _tmp1343_ = NULL;
                                ValaMethod* _tmp1344_ = NULL;
-                               _tmp1342_ = m;
-                               _tmp1343_ = vala_method_get_base_interface_method (_tmp1342_);
-                               _tmp1344_ = _tmp1343_;
-                               if (_tmp1344_ != NULL) {
-                                       ValaMethod* _tmp1345_ = NULL;
-                                       ValaMethod* _tmp1346_ = NULL;
-                                       ValaMethod* _tmp1347_ = NULL;
-                                       ValaMethod* _tmp1348_ = NULL;
-                                       _tmp1345_ = m;
-                                       _tmp1346_ = vala_method_get_base_interface_method (_tmp1345_);
-                                       _tmp1347_ = _tmp1346_;
-                                       _tmp1348_ = _vala_code_node_ref0 (_tmp1347_);
+                               ValaMethod* _tmp1345_ = NULL;
+                               ValaMethod* _tmp1346_ = NULL;
+                               _tmp1343_ = m;
+                               _tmp1344_ = vala_method_get_base_method (_tmp1343_);
+                               _tmp1345_ = _tmp1344_;
+                               _tmp1346_ = _vala_code_node_ref0 (_tmp1345_);
+                               _vala_code_node_unref0 (base_method);
+                               base_method = _tmp1346_;
+                       } else {
+                               ValaMethod* _tmp1347_ = NULL;
+                               ValaMethod* _tmp1348_ = NULL;
+                               ValaMethod* _tmp1349_ = NULL;
+                               _tmp1347_ = m;
+                               _tmp1348_ = vala_method_get_base_interface_method (_tmp1347_);
+                               _tmp1349_ = _tmp1348_;
+                               if (_tmp1349_ != NULL) {
+                                       ValaMethod* _tmp1350_ = NULL;
+                                       ValaMethod* _tmp1351_ = NULL;
+                                       ValaMethod* _tmp1352_ = NULL;
+                                       ValaMethod* _tmp1353_ = NULL;
+                                       _tmp1350_ = m;
+                                       _tmp1351_ = vala_method_get_base_interface_method (_tmp1350_);
+                                       _tmp1352_ = _tmp1351_;
+                                       _tmp1353_ = _vala_code_node_ref0 (_tmp1352_);
                                        _vala_code_node_unref0 (base_method);
-                                       base_method = _tmp1348_;
+                                       base_method = _tmp1353_;
                                } else {
-                                       ValaMethod* _tmp1349_ = NULL;
-                                       ValaMethod* _tmp1350_ = NULL;
-                                       _tmp1349_ = m;
-                                       _tmp1350_ = _vala_code_node_ref0 (_tmp1349_);
+                                       ValaMethod* _tmp1354_ = NULL;
+                                       ValaMethod* _tmp1355_ = NULL;
+                                       _tmp1354_ = m;
+                                       _tmp1355_ = _vala_code_node_ref0 (_tmp1354_);
                                        _vala_code_node_unref0 (base_method);
-                                       base_method = _tmp1350_;
+                                       base_method = _tmp1355_;
                                }
                        }
-                       _tmp1352_ = instance;
-                       if (_tmp1352_) {
-                               ValaMethod* _tmp1353_ = NULL;
-                               ValaSymbol* _tmp1354_ = NULL;
-                               ValaSymbol* _tmp1355_ = NULL;
-                               _tmp1353_ = base_method;
-                               _tmp1354_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp1353_);
-                               _tmp1355_ = _tmp1354_;
-                               _tmp1351_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1355_, VALA_TYPE_TYPESYMBOL);
-                       } else {
-                               _tmp1351_ = FALSE;
-                       }
-                       if (_tmp1351_) {
-                               ValaExpression* _tmp1356_ = NULL;
-                               ValaExpression* _tmp1357_ = NULL;
+                       _tmp1357_ = instance;
+                       if (_tmp1357_) {
                                ValaMethod* _tmp1358_ = NULL;
                                ValaSymbol* _tmp1359_ = NULL;
                                ValaSymbol* _tmp1360_ = NULL;
-                               ValaDataType* _tmp1361_ = NULL;
-                               ValaDataType* _tmp1362_ = NULL;
-                               ValaExpression* _tmp1363_ = NULL;
-                               ValaExpression* _tmp1364_ = NULL;
-                               ValaDataType* _tmp1365_ = NULL;
-                               ValaDataType* _tmp1366_ = NULL;
-                               ValaMethod* _tmp1367_ = NULL;
-                               ValaParameter* _tmp1368_ = NULL;
-                               ValaParameter* _tmp1369_ = NULL;
-                               ValaDataType* _tmp1370_ = NULL;
-                               ValaDataType* _tmp1371_ = NULL;
-                               gboolean _tmp1372_ = FALSE;
-                               gboolean _tmp1373_ = FALSE;
-                               _tmp1356_ = vala_member_access_get_inner (self);
-                               _tmp1357_ = _tmp1356_;
                                _tmp1358_ = base_method;
                                _tmp1359_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp1358_);
                                _tmp1360_ = _tmp1359_;
-                               _tmp1361_ = vala_semantic_analyzer_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp1360_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+                               _tmp1356_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1360_, VALA_TYPE_TYPESYMBOL);
+                       } else {
+                               _tmp1356_ = FALSE;
+                       }
+                       if (_tmp1356_) {
+                               ValaExpression* _tmp1361_ = NULL;
+                               ValaExpression* _tmp1362_ = NULL;
+                               ValaMethod* _tmp1363_ = NULL;
+                               ValaSymbol* _tmp1364_ = NULL;
+                               ValaSymbol* _tmp1365_ = NULL;
+                               ValaDataType* _tmp1366_ = NULL;
+                               ValaDataType* _tmp1367_ = NULL;
+                               ValaExpression* _tmp1368_ = NULL;
+                               ValaExpression* _tmp1369_ = NULL;
+                               ValaDataType* _tmp1370_ = NULL;
+                               ValaDataType* _tmp1371_ = NULL;
+                               ValaMethod* _tmp1372_ = NULL;
+                               ValaParameter* _tmp1373_ = NULL;
+                               ValaParameter* _tmp1374_ = NULL;
+                               ValaDataType* _tmp1375_ = NULL;
+                               ValaDataType* _tmp1376_ = NULL;
+                               gboolean _tmp1377_ = FALSE;
+                               gboolean _tmp1378_ = FALSE;
+                               _tmp1361_ = vala_member_access_get_inner (self);
                                _tmp1362_ = _tmp1361_;
-                               vala_expression_set_target_type (_tmp1357_, _tmp1362_);
-                               _vala_code_node_unref0 (_tmp1362_);
-                               _tmp1363_ = vala_member_access_get_inner (self);
-                               _tmp1364_ = _tmp1363_;
-                               _tmp1365_ = vala_expression_get_target_type (_tmp1364_);
-                               _tmp1366_ = _tmp1365_;
-                               _tmp1367_ = base_method;
-                               _tmp1368_ = vala_method_get_this_parameter (_tmp1367_);
+                               _tmp1363_ = base_method;
+                               _tmp1364_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp1363_);
+                               _tmp1365_ = _tmp1364_;
+                               _tmp1366_ = vala_semantic_analyzer_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp1365_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+                               _tmp1367_ = _tmp1366_;
+                               vala_expression_set_target_type (_tmp1362_, _tmp1367_);
+                               _vala_code_node_unref0 (_tmp1367_);
+                               _tmp1368_ = vala_member_access_get_inner (self);
                                _tmp1369_ = _tmp1368_;
-                               _tmp1370_ = vala_variable_get_variable_type ((ValaVariable*) _tmp1369_);
+                               _tmp1370_ = vala_expression_get_target_type (_tmp1369_);
                                _tmp1371_ = _tmp1370_;
-                               _tmp1372_ = vala_data_type_get_value_owned (_tmp1371_);
-                               _tmp1373_ = _tmp1372_;
-                               vala_data_type_set_value_owned (_tmp1366_, _tmp1373_);
+                               _tmp1372_ = base_method;
+                               _tmp1373_ = vala_method_get_this_parameter (_tmp1372_);
+                               _tmp1374_ = _tmp1373_;
+                               _tmp1375_ = vala_variable_get_variable_type ((ValaVariable*) _tmp1374_);
+                               _tmp1376_ = _tmp1375_;
+                               _tmp1377_ = vala_data_type_get_value_owned (_tmp1376_);
+                               _tmp1378_ = _tmp1377_;
+                               vala_data_type_set_value_owned (_tmp1371_, _tmp1378_);
                        }
                        _vala_code_node_unref0 (base_method);
                } else {
-                       ValaSymbol* _tmp1374_ = NULL;
-                       ValaSymbol* _tmp1375_ = NULL;
-                       _tmp1374_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
-                       _tmp1375_ = _tmp1374_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1375_, VALA_TYPE_PROPERTY)) {
+                       ValaSymbol* _tmp1379_ = NULL;
+                       ValaSymbol* _tmp1380_ = NULL;
+                       _tmp1379_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
+                       _tmp1380_ = _tmp1379_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1380_, VALA_TYPE_PROPERTY)) {
                                ValaProperty* prop = NULL;
-                               ValaSymbol* _tmp1376_ = NULL;
-                               ValaSymbol* _tmp1377_ = NULL;
-                               ValaProperty* _tmp1378_ = NULL;
+                               ValaSymbol* _tmp1381_ = NULL;
+                               ValaSymbol* _tmp1382_ = NULL;
+                               ValaProperty* _tmp1383_ = NULL;
                                ValaProperty* base_property = NULL;
-                               ValaProperty* _tmp1379_ = NULL;
-                               ValaProperty* _tmp1380_ = NULL;
-                               ValaProperty* _tmp1381_ = NULL;
-                               gboolean _tmp1395_ = FALSE;
-                               gboolean _tmp1396_ = FALSE;
-                               _tmp1376_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
-                               _tmp1377_ = _tmp1376_;
-                               _tmp1378_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1377_, VALA_TYPE_PROPERTY, ValaProperty));
-                               prop = _tmp1378_;
-                               _tmp1379_ = prop;
-                               _tmp1380_ = vala_property_get_base_property (_tmp1379_);
-                               _tmp1381_ = _tmp1380_;
-                               if (_tmp1381_ != NULL) {
-                                       ValaProperty* _tmp1382_ = NULL;
-                                       ValaProperty* _tmp1383_ = NULL;
-                                       ValaProperty* _tmp1384_ = NULL;
-                                       ValaProperty* _tmp1385_ = NULL;
-                                       _tmp1382_ = prop;
-                                       _tmp1383_ = vala_property_get_base_property (_tmp1382_);
-                                       _tmp1384_ = _tmp1383_;
-                                       _tmp1385_ = _vala_code_node_ref0 (_tmp1384_);
-                                       _vala_code_node_unref0 (base_property);
-                                       base_property = _tmp1385_;
-                               } else {
-                                       ValaProperty* _tmp1386_ = NULL;
+                               ValaProperty* _tmp1384_ = NULL;
+                               ValaProperty* _tmp1385_ = NULL;
+                               ValaProperty* _tmp1386_ = NULL;
+                               gboolean _tmp1400_ = FALSE;
+                               gboolean _tmp1401_ = FALSE;
+                               _tmp1381_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
+                               _tmp1382_ = _tmp1381_;
+                               _tmp1383_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1382_, VALA_TYPE_PROPERTY, ValaProperty));
+                               prop = _tmp1383_;
+                               _tmp1384_ = prop;
+                               _tmp1385_ = vala_property_get_base_property (_tmp1384_);
+                               _tmp1386_ = _tmp1385_;
+                               if (_tmp1386_ != NULL) {
                                        ValaProperty* _tmp1387_ = NULL;
                                        ValaProperty* _tmp1388_ = NULL;
-                                       _tmp1386_ = prop;
-                                       _tmp1387_ = vala_property_get_base_interface_property (_tmp1386_);
-                                       _tmp1388_ = _tmp1387_;
-                                       if (_tmp1388_ != NULL) {
-                                               ValaProperty* _tmp1389_ = NULL;
-                                               ValaProperty* _tmp1390_ = NULL;
-                                               ValaProperty* _tmp1391_ = NULL;
-                                               ValaProperty* _tmp1392_ = NULL;
-                                               _tmp1389_ = prop;
-                                               _tmp1390_ = vala_property_get_base_interface_property (_tmp1389_);
-                                               _tmp1391_ = _tmp1390_;
-                                               _tmp1392_ = _vala_code_node_ref0 (_tmp1391_);
+                                       ValaProperty* _tmp1389_ = NULL;
+                                       ValaProperty* _tmp1390_ = NULL;
+                                       _tmp1387_ = prop;
+                                       _tmp1388_ = vala_property_get_base_property (_tmp1387_);
+                                       _tmp1389_ = _tmp1388_;
+                                       _tmp1390_ = _vala_code_node_ref0 (_tmp1389_);
+                                       _vala_code_node_unref0 (base_property);
+                                       base_property = _tmp1390_;
+                               } else {
+                                       ValaProperty* _tmp1391_ = NULL;
+                                       ValaProperty* _tmp1392_ = NULL;
+                                       ValaProperty* _tmp1393_ = NULL;
+                                       _tmp1391_ = prop;
+                                       _tmp1392_ = vala_property_get_base_interface_property (_tmp1391_);
+                                       _tmp1393_ = _tmp1392_;
+                                       if (_tmp1393_ != NULL) {
+                                               ValaProperty* _tmp1394_ = NULL;
+                                               ValaProperty* _tmp1395_ = NULL;
+                                               ValaProperty* _tmp1396_ = NULL;
+                                               ValaProperty* _tmp1397_ = NULL;
+                                               _tmp1394_ = prop;
+                                               _tmp1395_ = vala_property_get_base_interface_property (_tmp1394_);
+                                               _tmp1396_ = _tmp1395_;
+                                               _tmp1397_ = _vala_code_node_ref0 (_tmp1396_);
                                                _vala_code_node_unref0 (base_property);
-                                               base_property = _tmp1392_;
+                                               base_property = _tmp1397_;
                                        } else {
-                                               ValaProperty* _tmp1393_ = NULL;
-                                               ValaProperty* _tmp1394_ = NULL;
-                                               _tmp1393_ = prop;
-                                               _tmp1394_ = _vala_code_node_ref0 (_tmp1393_);
+                                               ValaProperty* _tmp1398_ = NULL;
+                                               ValaProperty* _tmp1399_ = NULL;
+                                               _tmp1398_ = prop;
+                                               _tmp1399_ = _vala_code_node_ref0 (_tmp1398_);
                                                _vala_code_node_unref0 (base_property);
-                                               base_property = _tmp1394_;
+                                               base_property = _tmp1399_;
                                        }
                                }
-                               _tmp1396_ = instance;
-                               if (_tmp1396_) {
-                                       ValaProperty* _tmp1397_ = NULL;
-                                       ValaSymbol* _tmp1398_ = NULL;
-                                       ValaSymbol* _tmp1399_ = NULL;
-                                       _tmp1397_ = base_property;
-                                       _tmp1398_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp1397_);
-                                       _tmp1399_ = _tmp1398_;
-                                       _tmp1395_ = _tmp1399_ != NULL;
-                               } else {
-                                       _tmp1395_ = FALSE;
-                               }
-                               if (_tmp1395_) {
-                                       ValaExpression* _tmp1400_ = NULL;
-                                       ValaExpression* _tmp1401_ = NULL;
+                               _tmp1401_ = instance;
+                               if (_tmp1401_) {
                                        ValaProperty* _tmp1402_ = NULL;
                                        ValaSymbol* _tmp1403_ = NULL;
                                        ValaSymbol* _tmp1404_ = NULL;
-                                       ValaDataType* _tmp1405_ = NULL;
-                                       ValaDataType* _tmp1406_ = NULL;
-                                       _tmp1400_ = vala_member_access_get_inner (self);
-                                       _tmp1401_ = _tmp1400_;
                                        _tmp1402_ = base_property;
                                        _tmp1403_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp1402_);
                                        _tmp1404_ = _tmp1403_;
-                                       _tmp1405_ = vala_semantic_analyzer_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp1404_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+                                       _tmp1400_ = _tmp1404_ != NULL;
+                               } else {
+                                       _tmp1400_ = FALSE;
+                               }
+                               if (_tmp1400_) {
+                                       ValaExpression* _tmp1405_ = NULL;
+                                       ValaExpression* _tmp1406_ = NULL;
+                                       ValaProperty* _tmp1407_ = NULL;
+                                       ValaSymbol* _tmp1408_ = NULL;
+                                       ValaSymbol* _tmp1409_ = NULL;
+                                       ValaDataType* _tmp1410_ = NULL;
+                                       ValaDataType* _tmp1411_ = NULL;
+                                       _tmp1405_ = vala_member_access_get_inner (self);
                                        _tmp1406_ = _tmp1405_;
-                                       vala_expression_set_target_type (_tmp1401_, _tmp1406_);
-                                       _vala_code_node_unref0 (_tmp1406_);
+                                       _tmp1407_ = base_property;
+                                       _tmp1408_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp1407_);
+                                       _tmp1409_ = _tmp1408_;
+                                       _tmp1410_ = vala_semantic_analyzer_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp1409_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+                                       _tmp1411_ = _tmp1410_;
+                                       vala_expression_set_target_type (_tmp1406_, _tmp1411_);
+                                       _vala_code_node_unref0 (_tmp1411_);
                                }
                                _vala_code_node_unref0 (base_property);
                                _vala_code_node_unref0 (prop);
                        } else {
-                               gboolean _tmp1407_ = FALSE;
-                               gboolean _tmp1408_ = FALSE;
-                               gboolean _tmp1409_ = FALSE;
-                               ValaSymbol* _tmp1410_ = NULL;
-                               ValaSymbol* _tmp1411_ = NULL;
-                               _tmp1410_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
-                               _tmp1411_ = _tmp1410_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1411_, VALA_TYPE_FIELD)) {
-                                       _tmp1409_ = TRUE;
+                               gboolean _tmp1412_ = FALSE;
+                               gboolean _tmp1413_ = FALSE;
+                               gboolean _tmp1414_ = FALSE;
+                               ValaSymbol* _tmp1415_ = NULL;
+                               ValaSymbol* _tmp1416_ = NULL;
+                               _tmp1415_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
+                               _tmp1416_ = _tmp1415_;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1416_, VALA_TYPE_FIELD)) {
+                                       _tmp1414_ = TRUE;
                                } else {
-                                       ValaSymbol* _tmp1412_ = NULL;
-                                       ValaSymbol* _tmp1413_ = NULL;
-                                       _tmp1412_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
-                                       _tmp1413_ = _tmp1412_;
-                                       _tmp1409_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1413_, VALA_TYPE_SIGNAL);
-                               }
-                               if (_tmp1409_) {
-                                       gboolean _tmp1414_ = FALSE;
-                                       _tmp1414_ = instance;
-                                       _tmp1408_ = _tmp1414_;
-                               } else {
-                                       _tmp1408_ = FALSE;
-                               }
-                               if (_tmp1408_) {
-                                       ValaSymbol* _tmp1415_ = NULL;
-                                       ValaSymbol* _tmp1416_ = NULL;
                                        ValaSymbol* _tmp1417_ = NULL;
                                        ValaSymbol* _tmp1418_ = NULL;
-                                       _tmp1415_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
-                                       _tmp1416_ = _tmp1415_;
-                                       _tmp1417_ = vala_symbol_get_parent_symbol (_tmp1416_);
+                                       _tmp1417_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                                        _tmp1418_ = _tmp1417_;
-                                       _tmp1407_ = _tmp1418_ != NULL;
+                                       _tmp1414_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1418_, VALA_TYPE_SIGNAL);
+                               }
+                               if (_tmp1414_) {
+                                       gboolean _tmp1419_ = FALSE;
+                                       _tmp1419_ = instance;
+                                       _tmp1413_ = _tmp1419_;
                                } else {
-                                       _tmp1407_ = FALSE;
+                                       _tmp1413_ = FALSE;
                                }
-                               if (_tmp1407_) {
-                                       ValaDataType* parent_type = NULL;
-                                       ValaSymbol* _tmp1419_ = NULL;
+                               if (_tmp1413_) {
                                        ValaSymbol* _tmp1420_ = NULL;
                                        ValaSymbol* _tmp1421_ = NULL;
                                        ValaSymbol* _tmp1422_ = NULL;
-                                       ValaDataType* _tmp1423_ = NULL;
-                                       ValaExpression* _tmp1424_ = NULL;
-                                       ValaExpression* _tmp1425_ = NULL;
-                                       ValaDataType* _tmp1426_ = NULL;
-                                       ValaExpression* _tmp1427_ = NULL;
-                                       ValaExpression* _tmp1428_ = NULL;
-                                       ValaDataType* _tmp1429_ = NULL;
-                                       ValaDataType* _tmp1430_ = NULL;
+                                       ValaSymbol* _tmp1423_ = NULL;
+                                       _tmp1420_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
+                                       _tmp1421_ = _tmp1420_;
+                                       _tmp1422_ = vala_symbol_get_parent_symbol (_tmp1421_);
+                                       _tmp1423_ = _tmp1422_;
+                                       _tmp1412_ = _tmp1423_ != NULL;
+                               } else {
+                                       _tmp1412_ = FALSE;
+                               }
+                               if (_tmp1412_) {
+                                       ValaDataType* parent_type = NULL;
+                                       ValaSymbol* _tmp1424_ = NULL;
+                                       ValaSymbol* _tmp1425_ = NULL;
+                                       ValaSymbol* _tmp1426_ = NULL;
+                                       ValaSymbol* _tmp1427_ = NULL;
+                                       ValaDataType* _tmp1428_ = NULL;
+                                       ValaExpression* _tmp1429_ = NULL;
+                                       ValaExpression* _tmp1430_ = NULL;
                                        ValaDataType* _tmp1431_ = NULL;
-                                       ValaDataType* _tmp1432_ = NULL;
-                                       _tmp1419_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
-                                       _tmp1420_ = _tmp1419_;
-                                       _tmp1421_ = vala_symbol_get_parent_symbol (_tmp1420_);
-                                       _tmp1422_ = _tmp1421_;
-                                       _tmp1423_ = vala_semantic_analyzer_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp1422_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
-                                       parent_type = _tmp1423_;
-                                       _tmp1424_ = vala_member_access_get_inner (self);
+                                       ValaExpression* _tmp1432_ = NULL;
+                                       ValaExpression* _tmp1433_ = NULL;
+                                       ValaDataType* _tmp1434_ = NULL;
+                                       ValaDataType* _tmp1435_ = NULL;
+                                       ValaDataType* _tmp1436_ = NULL;
+                                       ValaDataType* _tmp1437_ = NULL;
+                                       _tmp1424_ = vala_expression_get_symbol_reference ((ValaExpression*) self);
                                        _tmp1425_ = _tmp1424_;
-                                       _tmp1426_ = parent_type;
-                                       _tmp1427_ = vala_member_access_get_inner (self);
-                                       _tmp1428_ = _tmp1427_;
-                                       _tmp1429_ = vala_expression_get_value_type (_tmp1428_);
+                                       _tmp1426_ = vala_symbol_get_parent_symbol (_tmp1425_);
+                                       _tmp1427_ = _tmp1426_;
+                                       _tmp1428_ = vala_semantic_analyzer_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp1427_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
+                                       parent_type = _tmp1428_;
+                                       _tmp1429_ = vala_member_access_get_inner (self);
                                        _tmp1430_ = _tmp1429_;
-                                       _tmp1431_ = vala_data_type_get_actual_type (_tmp1426_, _tmp1430_, NULL, (ValaCodeNode*) self);
-                                       _tmp1432_ = _tmp1431_;
-                                       vala_expression_set_target_type (_tmp1425_, _tmp1432_);
-                                       _vala_code_node_unref0 (_tmp1432_);
+                                       _tmp1431_ = parent_type;
+                                       _tmp1432_ = vala_member_access_get_inner (self);
+                                       _tmp1433_ = _tmp1432_;
+                                       _tmp1434_ = vala_expression_get_value_type (_tmp1433_);
+                                       _tmp1435_ = _tmp1434_;
+                                       _tmp1436_ = vala_data_type_get_actual_type (_tmp1431_, _tmp1435_, NULL, (ValaCodeNode*) self);
+                                       _tmp1437_ = _tmp1436_;
+                                       vala_expression_set_target_type (_tmp1430_, _tmp1437_);
+                                       _vala_code_node_unref0 (_tmp1437_);
                                        _vala_code_node_unref0 (parent_type);
                                }
                        }
@@ -6296,9 +6310,9 @@ static gboolean vala_member_access_real_check (ValaCodeNode* base, ValaCodeConte
                _vala_code_node_unref0 (inner_ma);
                _vala_code_node_unref0 (m);
        }
-       _tmp1433_ = vala_code_node_get_error ((ValaCodeNode*) self);
-       _tmp1434_ = _tmp1433_;
-       result = !_tmp1434_;
+       _tmp1438_ = vala_code_node_get_error ((ValaCodeNode*) self);
+       _tmp1439_ = _tmp1438_;
+       result = !_tmp1439_;
        _vala_code_node_unref0 (member);
        _vala_code_node_unref0 (this_parameter);
        _vala_code_node_unref0 (base_symbol);
@@ -6900,20 +6914,20 @@ void vala_member_access_set_qualified (ValaMemberAccess* self, gboolean value) {
 
 static void vala_member_access_class_init (ValaMemberAccessClass * klass) {
        vala_member_access_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_member_access_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_member_access_finalize;
        g_type_class_add_private (klass, sizeof (ValaMemberAccessPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_member_access_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_member_access_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_member_access_real_to_string;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_member_access_real_replace_expression;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_member_access_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_member_access_real_replace_type;
-       VALA_EXPRESSION_CLASS (klass)->is_constant = vala_member_access_real_is_constant;
-       VALA_EXPRESSION_CLASS (klass)->is_non_null = vala_member_access_real_is_non_null;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_member_access_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_member_access_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_member_access_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_member_access_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_member_access_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_member_access_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_member_access_real_to_string;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_member_access_real_replace_expression;
+       ((ValaExpressionClass *) klass)->is_pure = vala_member_access_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_member_access_real_replace_type;
+       ((ValaExpressionClass *) klass)->is_constant = vala_member_access_real_is_constant;
+       ((ValaExpressionClass *) klass)->is_non_null = vala_member_access_real_is_non_null;
+       ((ValaCodeNodeClass *) klass)->check = vala_member_access_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_member_access_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_member_access_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_member_access_real_get_used_variables;
 }
 
 
index b0c48ee..26a413c 100644 (file)
@@ -795,7 +795,8 @@ public class Vala.MemberAccess : Expression {
                        }
 
                        if (context.experimental_non_null && instance && inner.value_type.nullable &&
-                           !(inner.value_type is PointerType) && !(inner.value_type is GenericType)) {
+                           !(inner.value_type is PointerType) && !(inner.value_type is GenericType) &&
+                               !(inner.value_type is ArrayType)) {
                                Report.error (source_reference, "Access to instance member `%s' from nullable reference denied".printf (symbol_reference.get_full_name ()));
                        }
 
index 303b315..4b15d94 100644 (file)
@@ -235,6 +235,8 @@ static gboolean vala_member_initializer_real_check (ValaCodeNode* base, ValaCode
 gboolean vala_code_node_check (ValaCodeNode* self, ValaCodeContext* context);
 static void vala_member_initializer_real_emit (ValaCodeNode* base, ValaCodeGenerator* codegen);
 void vala_code_node_emit (ValaCodeNode* self, ValaCodeGenerator* codegen);
+static void vala_member_initializer_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection);
+void vala_code_node_get_used_variables (ValaCodeNode* self, ValaCollection* collection);
 static void vala_member_initializer_real_replace_expression (ValaCodeNode* base, ValaExpression* old_node, ValaExpression* new_node);
 const gchar* vala_member_initializer_get_name (ValaMemberInitializer* self);
 void vala_code_node_set_parent_node (ValaCodeNode* self, ValaCodeNode* value);
@@ -320,6 +322,20 @@ static void vala_member_initializer_real_emit (ValaCodeNode* base, ValaCodeGener
 }
 
 
+static void vala_member_initializer_real_get_used_variables (ValaCodeNode* base, ValaCollection* collection) {
+       ValaMemberInitializer * self;
+       ValaExpression* _tmp0_ = NULL;
+       ValaExpression* _tmp1_ = NULL;
+       ValaCollection* _tmp2_ = NULL;
+       self = (ValaMemberInitializer*) base;
+       g_return_if_fail (collection != NULL);
+       _tmp0_ = vala_member_initializer_get_initializer (self);
+       _tmp1_ = _tmp0_;
+       _tmp2_ = collection;
+       vala_code_node_get_used_variables ((ValaCodeNode*) _tmp1_, _tmp2_);
+}
+
+
 static void vala_member_initializer_real_replace_expression (ValaCodeNode* base, ValaExpression* old_node, ValaExpression* new_node) {
        ValaMemberInitializer * self;
        ValaExpression* _tmp0_ = NULL;
@@ -409,12 +425,13 @@ void vala_member_initializer_set_symbol_reference (ValaMemberInitializer* self,
 
 static void vala_member_initializer_class_init (ValaMemberInitializerClass * klass) {
        vala_member_initializer_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_member_initializer_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_member_initializer_finalize;
        g_type_class_add_private (klass, sizeof (ValaMemberInitializerPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_member_initializer_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_member_initializer_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_member_initializer_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_member_initializer_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->accept = vala_member_initializer_real_accept;
+       ((ValaCodeNodeClass *) klass)->check = vala_member_initializer_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_member_initializer_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_member_initializer_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_member_initializer_real_replace_expression;
 }
 
 
index c5e5d82..352b1ff 100644 (file)
@@ -76,6 +76,10 @@ public class Vala.MemberInitializer : CodeNode {
                initializer.emit (codegen);
        }
 
+       public override void get_used_variables (Collection<Variable> collection) {
+               initializer.get_used_variables (collection);
+       }
+
        public override void replace_expression (Expression old_node, Expression new_node) {
                if (initializer == old_node) {
                        initializer = new_node;
index 986c49f..c09d530 100644 (file)
@@ -1186,6 +1186,7 @@ struct _ValaMethodPrivate {
        ValaDataType* _return_type;
        ValaMethod* _base_method;
        ValaMethod* _base_interface_method;
+       ValaDataType* _base_interface_type;
        gboolean base_methods_valid;
        ValaMethod* callback_method;
        ValaList* captured_variables;
@@ -1443,6 +1444,7 @@ void vala_code_visitor_visit_method (ValaCodeVisitor* self, ValaMethod* m);
 static void vala_method_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor);
 ValaList* vala_method_get_type_parameters (ValaMethod* self);
 void vala_code_node_accept (ValaCodeNode* self, ValaCodeVisitor* visitor);
+ValaDataType* vala_method_get_base_interface_type (ValaMethod* self);
 ValaDataType* vala_method_get_return_type (ValaMethod* self);
 ValaList* vala_code_node_get_error_types (ValaCodeNode* self);
 ValaLocalVariable* vala_subroutine_get_result_var (ValaSubroutine* self);
@@ -1479,6 +1481,7 @@ ValaList* vala_method_get_preconditions (ValaMethod* self);
 void vala_method_add_postcondition (ValaMethod* self, ValaExpression* postcondition);
 ValaList* vala_method_get_postconditions (ValaMethod* self);
 static void vala_method_real_replace_type (ValaCodeNode* base, ValaDataType* old_type, ValaDataType* new_type);
+void vala_method_set_base_interface_type (ValaMethod* self, ValaDataType* value);
 static void vala_method_find_base_methods (ValaMethod* self);
 GType vala_creation_method_get_type (void) G_GNUC_CONST;
 static void vala_method_find_base_interface_method (ValaMethod* self, ValaClass* cl);
@@ -1495,6 +1498,8 @@ gchar* vala_symbol_get_full_name (ValaSymbol* self);
 ValaClass* vala_class_get_base_class (ValaClass* self);
 ValaList* vala_class_get_base_types (ValaClass* self);
 ValaTypeSymbol* vala_data_type_get_data_type (ValaDataType* self);
+ValaList* vala_object_type_symbol_get_methods (ValaObjectTypeSymbol* self);
+ValaMethod* vala_method_get_base_interface_method (ValaMethod* self);
 static gboolean vala_method_real_check (ValaCodeNode* base, ValaCodeContext* context);
 gboolean vala_code_node_get_checked (ValaCodeNode* self);
 gboolean vala_code_node_get_error (ValaCodeNode* self);
@@ -1591,6 +1596,7 @@ void vala_report_warning (ValaSourceReference* source, const gchar* message);
 gboolean vala_semantic_analyzer_is_type_accessible (ValaSemanticAnalyzer* self, ValaSymbol* sym, ValaDataType* type);
 ValaStruct* vala_semantic_analyzer_get_current_struct (ValaSemanticAnalyzer* self);
 ValaMethod* vala_method_get_base_method (ValaMethod* self);
+void vala_report_notice (ValaSourceReference* source, const gchar* message);
 gboolean vala_symbol_get_hides (ValaSymbol* self);
 ValaSymbol* vala_symbol_get_hidden_member (ValaSymbol* self);
 ValaDataType* vala_expression_get_value_type (ValaExpression* self);
@@ -1649,7 +1655,6 @@ void vala_code_node_set_attribute_bool (ValaCodeNode* self, const gchar* attribu
 gboolean vala_method_get_returns_modified_pointer (ValaMethod* self);
 void vala_method_set_returns_modified_pointer (ValaMethod* self, gboolean value);
 void vala_code_node_set_attribute (ValaCodeNode* self, const gchar* name, gboolean value, ValaSourceReference* source_reference);
-ValaMethod* vala_method_get_base_interface_method (ValaMethod* self);
 gboolean vala_method_get_entry_point (ValaMethod* self);
 void vala_method_set_this_parameter (ValaMethod* self, ValaParameter* value);
 gboolean vala_method_get_printf_format (ValaMethod* self);
@@ -1888,12 +1893,14 @@ static void vala_method_real_accept_children (ValaCodeNode* base, ValaCodeVisito
        ValaMethod * self;
        ValaDataType* _tmp12_ = NULL;
        ValaDataType* _tmp13_ = NULL;
-       ValaLocalVariable* _tmp42_ = NULL;
-       ValaLocalVariable* _tmp43_ = NULL;
-       ValaList* _tmp47_ = NULL;
-       ValaList* _tmp61_ = NULL;
-       ValaBlock* _tmp75_ = NULL;
-       ValaBlock* _tmp76_ = NULL;
+       ValaDataType* _tmp17_ = NULL;
+       ValaDataType* _tmp18_ = NULL;
+       ValaLocalVariable* _tmp47_ = NULL;
+       ValaLocalVariable* _tmp48_ = NULL;
+       ValaList* _tmp52_ = NULL;
+       ValaList* _tmp66_ = NULL;
+       ValaBlock* _tmp80_ = NULL;
+       ValaBlock* _tmp81_ = NULL;
        self = (ValaMethod*) base;
        g_return_if_fail (visitor != NULL);
        {
@@ -1939,222 +1946,233 @@ static void vala_method_real_accept_children (ValaCodeNode* base, ValaCodeVisito
                }
                _vala_iterable_unref0 (_p_list);
        }
-       _tmp12_ = vala_method_get_return_type (self);
+       _tmp12_ = vala_method_get_base_interface_type (self);
        _tmp13_ = _tmp12_;
        if (_tmp13_ != NULL) {
                ValaDataType* _tmp14_ = NULL;
                ValaDataType* _tmp15_ = NULL;
                ValaCodeVisitor* _tmp16_ = NULL;
-               _tmp14_ = vala_method_get_return_type (self);
+               _tmp14_ = vala_method_get_base_interface_type (self);
                _tmp15_ = _tmp14_;
                _tmp16_ = visitor;
                vala_code_node_accept ((ValaCodeNode*) _tmp15_, _tmp16_);
        }
+       _tmp17_ = vala_method_get_return_type (self);
+       _tmp18_ = _tmp17_;
+       if (_tmp18_ != NULL) {
+               ValaDataType* _tmp19_ = NULL;
+               ValaDataType* _tmp20_ = NULL;
+               ValaCodeVisitor* _tmp21_ = NULL;
+               _tmp19_ = vala_method_get_return_type (self);
+               _tmp20_ = _tmp19_;
+               _tmp21_ = visitor;
+               vala_code_node_accept ((ValaCodeNode*) _tmp20_, _tmp21_);
+       }
        {
                ValaList* _param_list = NULL;
-               ValaList* _tmp17_ = NULL;
-               ValaList* _tmp18_ = NULL;
+               ValaList* _tmp22_ = NULL;
+               ValaList* _tmp23_ = NULL;
                gint _param_size = 0;
-               ValaList* _tmp19_ = NULL;
-               gint _tmp20_ = 0;
-               gint _tmp21_ = 0;
+               ValaList* _tmp24_ = NULL;
+               gint _tmp25_ = 0;
+               gint _tmp26_ = 0;
                gint _param_index = 0;
-               _tmp17_ = self->priv->parameters;
-               _tmp18_ = _vala_iterable_ref0 (_tmp17_);
-               _param_list = _tmp18_;
-               _tmp19_ = _param_list;
-               _tmp20_ = vala_collection_get_size ((ValaCollection*) _tmp19_);
-               _tmp21_ = _tmp20_;
-               _param_size = _tmp21_;
+               _tmp22_ = self->priv->parameters;
+               _tmp23_ = _vala_iterable_ref0 (_tmp22_);
+               _param_list = _tmp23_;
+               _tmp24_ = _param_list;
+               _tmp25_ = vala_collection_get_size ((ValaCollection*) _tmp24_);
+               _tmp26_ = _tmp25_;
+               _param_size = _tmp26_;
                _param_index = -1;
                while (TRUE) {
-                       gint _tmp22_ = 0;
-                       gint _tmp23_ = 0;
-                       gint _tmp24_ = 0;
+                       gint _tmp27_ = 0;
+                       gint _tmp28_ = 0;
+                       gint _tmp29_ = 0;
                        ValaParameter* param = NULL;
-                       ValaList* _tmp25_ = NULL;
-                       gint _tmp26_ = 0;
-                       gpointer _tmp27_ = NULL;
-                       ValaParameter* _tmp28_ = NULL;
-                       ValaCodeVisitor* _tmp29_ = NULL;
-                       _tmp22_ = _param_index;
-                       _param_index = _tmp22_ + 1;
-                       _tmp23_ = _param_index;
-                       _tmp24_ = _param_size;
-                       if (!(_tmp23_ < _tmp24_)) {
+                       ValaList* _tmp30_ = NULL;
+                       gint _tmp31_ = 0;
+                       gpointer _tmp32_ = NULL;
+                       ValaParameter* _tmp33_ = NULL;
+                       ValaCodeVisitor* _tmp34_ = NULL;
+                       _tmp27_ = _param_index;
+                       _param_index = _tmp27_ + 1;
+                       _tmp28_ = _param_index;
+                       _tmp29_ = _param_size;
+                       if (!(_tmp28_ < _tmp29_)) {
                                break;
                        }
-                       _tmp25_ = _param_list;
-                       _tmp26_ = _param_index;
-                       _tmp27_ = vala_list_get (_tmp25_, _tmp26_);
-                       param = (ValaParameter*) _tmp27_;
-                       _tmp28_ = param;
-                       _tmp29_ = visitor;
-                       vala_code_node_accept ((ValaCodeNode*) _tmp28_, _tmp29_);
+                       _tmp30_ = _param_list;
+                       _tmp31_ = _param_index;
+                       _tmp32_ = vala_list_get (_tmp30_, _tmp31_);
+                       param = (ValaParameter*) _tmp32_;
+                       _tmp33_ = param;
+                       _tmp34_ = visitor;
+                       vala_code_node_accept ((ValaCodeNode*) _tmp33_, _tmp34_);
                        _vala_code_node_unref0 (param);
                }
                _vala_iterable_unref0 (_param_list);
        }
        {
                ValaList* _error_type_list = NULL;
-               ValaList* _tmp30_ = NULL;
+               ValaList* _tmp35_ = NULL;
                gint _error_type_size = 0;
-               ValaList* _tmp31_ = NULL;
-               gint _tmp32_ = 0;
-               gint _tmp33_ = 0;
+               ValaList* _tmp36_ = NULL;
+               gint _tmp37_ = 0;
+               gint _tmp38_ = 0;
                gint _error_type_index = 0;
-               _tmp30_ = vala_code_node_get_error_types ((ValaCodeNode*) self);
-               _error_type_list = _tmp30_;
-               _tmp31_ = _error_type_list;
-               _tmp32_ = vala_collection_get_size ((ValaCollection*) _tmp31_);
-               _tmp33_ = _tmp32_;
-               _error_type_size = _tmp33_;
+               _tmp35_ = vala_code_node_get_error_types ((ValaCodeNode*) self);
+               _error_type_list = _tmp35_;
+               _tmp36_ = _error_type_list;
+               _tmp37_ = vala_collection_get_size ((ValaCollection*) _tmp36_);
+               _tmp38_ = _tmp37_;
+               _error_type_size = _tmp38_;
                _error_type_index = -1;
                while (TRUE) {
-                       gint _tmp34_ = 0;
-                       gint _tmp35_ = 0;
-                       gint _tmp36_ = 0;
+                       gint _tmp39_ = 0;
+                       gint _tmp40_ = 0;
+                       gint _tmp41_ = 0;
                        ValaDataType* error_type = NULL;
-                       ValaList* _tmp37_ = NULL;
-                       gint _tmp38_ = 0;
-                       gpointer _tmp39_ = NULL;
-                       ValaDataType* _tmp40_ = NULL;
-                       ValaCodeVisitor* _tmp41_ = NULL;
-                       _tmp34_ = _error_type_index;
-                       _error_type_index = _tmp34_ + 1;
-                       _tmp35_ = _error_type_index;
-                       _tmp36_ = _error_type_size;
-                       if (!(_tmp35_ < _tmp36_)) {
+                       ValaList* _tmp42_ = NULL;
+                       gint _tmp43_ = 0;
+                       gpointer _tmp44_ = NULL;
+                       ValaDataType* _tmp45_ = NULL;
+                       ValaCodeVisitor* _tmp46_ = NULL;
+                       _tmp39_ = _error_type_index;
+                       _error_type_index = _tmp39_ + 1;
+                       _tmp40_ = _error_type_index;
+                       _tmp41_ = _error_type_size;
+                       if (!(_tmp40_ < _tmp41_)) {
                                break;
                        }
-                       _tmp37_ = _error_type_list;
-                       _tmp38_ = _error_type_index;
-                       _tmp39_ = vala_list_get (_tmp37_, _tmp38_);
-                       error_type = (ValaDataType*) _tmp39_;
-                       _tmp40_ = error_type;
-                       _tmp41_ = visitor;
-                       vala_code_node_accept ((ValaCodeNode*) _tmp40_, _tmp41_);
+                       _tmp42_ = _error_type_list;
+                       _tmp43_ = _error_type_index;
+                       _tmp44_ = vala_list_get (_tmp42_, _tmp43_);
+                       error_type = (ValaDataType*) _tmp44_;
+                       _tmp45_ = error_type;
+                       _tmp46_ = visitor;
+                       vala_code_node_accept ((ValaCodeNode*) _tmp45_, _tmp46_);
                        _vala_code_node_unref0 (error_type);
                }
                _vala_iterable_unref0 (_error_type_list);
        }
-       _tmp42_ = vala_subroutine_get_result_var ((ValaSubroutine*) self);
-       _tmp43_ = _tmp42_;
-       if (_tmp43_ != NULL) {
-               ValaLocalVariable* _tmp44_ = NULL;
-               ValaLocalVariable* _tmp45_ = NULL;
-               ValaCodeVisitor* _tmp46_ = NULL;
-               _tmp44_ = vala_subroutine_get_result_var ((ValaSubroutine*) self);
-               _tmp45_ = _tmp44_;
-               _tmp46_ = visitor;
-               vala_code_node_accept ((ValaCodeNode*) _tmp45_, _tmp46_);
+       _tmp47_ = vala_subroutine_get_result_var ((ValaSubroutine*) self);
+       _tmp48_ = _tmp47_;
+       if (_tmp48_ != NULL) {
+               ValaLocalVariable* _tmp49_ = NULL;
+               ValaLocalVariable* _tmp50_ = NULL;
+               ValaCodeVisitor* _tmp51_ = NULL;
+               _tmp49_ = vala_subroutine_get_result_var ((ValaSubroutine*) self);
+               _tmp50_ = _tmp49_;
+               _tmp51_ = visitor;
+               vala_code_node_accept ((ValaCodeNode*) _tmp50_, _tmp51_);
        }
-       _tmp47_ = self->priv->preconditions;
-       if (_tmp47_ != NULL) {
+       _tmp52_ = self->priv->preconditions;
+       if (_tmp52_ != NULL) {
                {
                        ValaList* _precondition_list = NULL;
-                       ValaList* _tmp48_ = NULL;
-                       ValaList* _tmp49_ = NULL;
+                       ValaList* _tmp53_ = NULL;
+                       ValaList* _tmp54_ = NULL;
                        gint _precondition_size = 0;
-                       ValaList* _tmp50_ = NULL;
-                       gint _tmp51_ = 0;
-                       gint _tmp52_ = 0;
+                       ValaList* _tmp55_ = NULL;
+                       gint _tmp56_ = 0;
+                       gint _tmp57_ = 0;
                        gint _precondition_index = 0;
-                       _tmp48_ = self->priv->preconditions;
-                       _tmp49_ = _vala_iterable_ref0 (_tmp48_);
-                       _precondition_list = _tmp49_;
-                       _tmp50_ = _precondition_list;
-                       _tmp51_ = vala_collection_get_size ((ValaCollection*) _tmp50_);
-                       _tmp52_ = _tmp51_;
-                       _precondition_size = _tmp52_;
+                       _tmp53_ = self->priv->preconditions;
+                       _tmp54_ = _vala_iterable_ref0 (_tmp53_);
+                       _precondition_list = _tmp54_;
+                       _tmp55_ = _precondition_list;
+                       _tmp56_ = vala_collection_get_size ((ValaCollection*) _tmp55_);
+                       _tmp57_ = _tmp56_;
+                       _precondition_size = _tmp57_;
                        _precondition_index = -1;
                        while (TRUE) {
-                               gint _tmp53_ = 0;
-                               gint _tmp54_ = 0;
-                               gint _tmp55_ = 0;
+                               gint _tmp58_ = 0;
+                               gint _tmp59_ = 0;
+                               gint _tmp60_ = 0;
                                ValaExpression* precondition = NULL;
-                               ValaList* _tmp56_ = NULL;
-                               gint _tmp57_ = 0;
-                               gpointer _tmp58_ = NULL;
-                               ValaExpression* _tmp59_ = NULL;
-                               ValaCodeVisitor* _tmp60_ = NULL;
-                               _tmp53_ = _precondition_index;
-                               _precondition_index = _tmp53_ + 1;
-                               _tmp54_ = _precondition_index;
-                               _tmp55_ = _precondition_size;
-                               if (!(_tmp54_ < _tmp55_)) {
+                               ValaList* _tmp61_ = NULL;
+                               gint _tmp62_ = 0;
+                               gpointer _tmp63_ = NULL;
+                               ValaExpression* _tmp64_ = NULL;
+                               ValaCodeVisitor* _tmp65_ = NULL;
+                               _tmp58_ = _precondition_index;
+                               _precondition_index = _tmp58_ + 1;
+                               _tmp59_ = _precondition_index;
+                               _tmp60_ = _precondition_size;
+                               if (!(_tmp59_ < _tmp60_)) {
                                        break;
                                }
-                               _tmp56_ = _precondition_list;
-                               _tmp57_ = _precondition_index;
-                               _tmp58_ = vala_list_get (_tmp56_, _tmp57_);
-                               precondition = (ValaExpression*) _tmp58_;
-                               _tmp59_ = precondition;
-                               _tmp60_ = visitor;
-                               vala_code_node_accept ((ValaCodeNode*) _tmp59_, _tmp60_);
+                               _tmp61_ = _precondition_list;
+                               _tmp62_ = _precondition_index;
+                               _tmp63_ = vala_list_get (_tmp61_, _tmp62_);
+                               precondition = (ValaExpression*) _tmp63_;
+                               _tmp64_ = precondition;
+                               _tmp65_ = visitor;
+                               vala_code_node_accept ((ValaCodeNode*) _tmp64_, _tmp65_);
                                _vala_code_node_unref0 (precondition);
                        }
                        _vala_iterable_unref0 (_precondition_list);
                }
        }
-       _tmp61_ = self->priv->postconditions;
-       if (_tmp61_ != NULL) {
+       _tmp66_ = self->priv->postconditions;
+       if (_tmp66_ != NULL) {
                {
                        ValaList* _postcondition_list = NULL;
-                       ValaList* _tmp62_ = NULL;
-                       ValaList* _tmp63_ = NULL;
+                       ValaList* _tmp67_ = NULL;
+                       ValaList* _tmp68_ = NULL;
                        gint _postcondition_size = 0;
-                       ValaList* _tmp64_ = NULL;
-                       gint _tmp65_ = 0;
-                       gint _tmp66_ = 0;
+                       ValaList* _tmp69_ = NULL;
+                       gint _tmp70_ = 0;
+                       gint _tmp71_ = 0;
                        gint _postcondition_index = 0;
-                       _tmp62_ = self->priv->postconditions;
-                       _tmp63_ = _vala_iterable_ref0 (_tmp62_);
-                       _postcondition_list = _tmp63_;
-                       _tmp64_ = _postcondition_list;
-                       _tmp65_ = vala_collection_get_size ((ValaCollection*) _tmp64_);
-                       _tmp66_ = _tmp65_;
-                       _postcondition_size = _tmp66_;
+                       _tmp67_ = self->priv->postconditions;
+                       _tmp68_ = _vala_iterable_ref0 (_tmp67_);
+                       _postcondition_list = _tmp68_;
+                       _tmp69_ = _postcondition_list;
+                       _tmp70_ = vala_collection_get_size ((ValaCollection*) _tmp69_);
+                       _tmp71_ = _tmp70_;
+                       _postcondition_size = _tmp71_;
                        _postcondition_index = -1;
                        while (TRUE) {
-                               gint _tmp67_ = 0;
-                               gint _tmp68_ = 0;
-                               gint _tmp69_ = 0;
+                               gint _tmp72_ = 0;
+                               gint _tmp73_ = 0;
+                               gint _tmp74_ = 0;
                                ValaExpression* postcondition = NULL;
-                               ValaList* _tmp70_ = NULL;
-                               gint _tmp71_ = 0;
-                               gpointer _tmp72_ = NULL;
-                               ValaExpression* _tmp73_ = NULL;
-                               ValaCodeVisitor* _tmp74_ = NULL;
-                               _tmp67_ = _postcondition_index;
-                               _postcondition_index = _tmp67_ + 1;
-                               _tmp68_ = _postcondition_index;
-                               _tmp69_ = _postcondition_size;
-                               if (!(_tmp68_ < _tmp69_)) {
+                               ValaList* _tmp75_ = NULL;
+                               gint _tmp76_ = 0;
+                               gpointer _tmp77_ = NULL;
+                               ValaExpression* _tmp78_ = NULL;
+                               ValaCodeVisitor* _tmp79_ = NULL;
+                               _tmp72_ = _postcondition_index;
+                               _postcondition_index = _tmp72_ + 1;
+                               _tmp73_ = _postcondition_index;
+                               _tmp74_ = _postcondition_size;
+                               if (!(_tmp73_ < _tmp74_)) {
                                        break;
                                }
-                               _tmp70_ = _postcondition_list;
-                               _tmp71_ = _postcondition_index;
-                               _tmp72_ = vala_list_get (_tmp70_, _tmp71_);
-                               postcondition = (ValaExpression*) _tmp72_;
-                               _tmp73_ = postcondition;
-                               _tmp74_ = visitor;
-                               vala_code_node_accept ((ValaCodeNode*) _tmp73_, _tmp74_);
+                               _tmp75_ = _postcondition_list;
+                               _tmp76_ = _postcondition_index;
+                               _tmp77_ = vala_list_get (_tmp75_, _tmp76_);
+                               postcondition = (ValaExpression*) _tmp77_;
+                               _tmp78_ = postcondition;
+                               _tmp79_ = visitor;
+                               vala_code_node_accept ((ValaCodeNode*) _tmp78_, _tmp79_);
                                _vala_code_node_unref0 (postcondition);
                        }
                        _vala_iterable_unref0 (_postcondition_list);
                }
        }
-       _tmp75_ = vala_subroutine_get_body ((ValaSubroutine*) self);
-       _tmp76_ = _tmp75_;
-       if (_tmp76_ != NULL) {
-               ValaBlock* _tmp77_ = NULL;
-               ValaBlock* _tmp78_ = NULL;
-               ValaCodeVisitor* _tmp79_ = NULL;
-               _tmp77_ = vala_subroutine_get_body ((ValaSubroutine*) self);
-               _tmp78_ = _tmp77_;
-               _tmp79_ = visitor;
-               vala_code_node_accept ((ValaCodeNode*) _tmp78_, _tmp79_);
+       _tmp80_ = vala_subroutine_get_body ((ValaSubroutine*) self);
+       _tmp81_ = _tmp80_;
+       if (_tmp81_ != NULL) {
+               ValaBlock* _tmp82_ = NULL;
+               ValaBlock* _tmp83_ = NULL;
+               ValaCodeVisitor* _tmp84_ = NULL;
+               _tmp82_ = vala_subroutine_get_body ((ValaSubroutine*) self);
+               _tmp83_ = _tmp82_;
+               _tmp84_ = visitor;
+               vala_code_node_accept ((ValaCodeNode*) _tmp83_, _tmp84_);
        }
 }
 
@@ -2960,67 +2978,79 @@ static void vala_method_real_replace_type (ValaCodeNode* base, ValaDataType* old
        ValaDataType* _tmp0_ = NULL;
        ValaDataType* _tmp1_ = NULL;
        ValaDataType* _tmp2_ = NULL;
+       ValaDataType* _tmp4_ = NULL;
+       ValaDataType* _tmp5_ = NULL;
+       ValaDataType* _tmp6_ = NULL;
        ValaList* error_types = NULL;
-       ValaList* _tmp4_ = NULL;
+       ValaList* _tmp8_ = NULL;
        self = (ValaMethod*) base;
        g_return_if_fail (old_type != NULL);
        g_return_if_fail (new_type != NULL);
-       _tmp0_ = vala_method_get_return_type (self);
+       _tmp0_ = vala_method_get_base_interface_type (self);
        _tmp1_ = _tmp0_;
        _tmp2_ = old_type;
        if (_tmp1_ == _tmp2_) {
                ValaDataType* _tmp3_ = NULL;
                _tmp3_ = new_type;
-               vala_method_set_return_type (self, _tmp3_);
+               vala_method_set_base_interface_type (self, _tmp3_);
                return;
        }
-       _tmp4_ = vala_code_node_get_error_types ((ValaCodeNode*) self);
-       error_types = _tmp4_;
+       _tmp4_ = vala_method_get_return_type (self);
+       _tmp5_ = _tmp4_;
+       _tmp6_ = old_type;
+       if (_tmp5_ == _tmp6_) {
+               ValaDataType* _tmp7_ = NULL;
+               _tmp7_ = new_type;
+               vala_method_set_return_type (self, _tmp7_);
+               return;
+       }
+       _tmp8_ = vala_code_node_get_error_types ((ValaCodeNode*) self);
+       error_types = _tmp8_;
        {
                gint i = 0;
                i = 0;
                {
-                       gboolean _tmp5_ = FALSE;
-                       _tmp5_ = TRUE;
+                       gboolean _tmp9_ = FALSE;
+                       _tmp9_ = TRUE;
                        while (TRUE) {
-                               gint _tmp7_ = 0;
-                               ValaList* _tmp8_ = NULL;
-                               gint _tmp9_ = 0;
-                               gint _tmp10_ = 0;
-                               ValaList* _tmp11_ = NULL;
-                               gint _tmp12_ = 0;
-                               gpointer _tmp13_ = NULL;
-                               ValaDataType* _tmp14_ = NULL;
-                               ValaDataType* _tmp15_ = NULL;
-                               gboolean _tmp16_ = FALSE;
-                               if (!_tmp5_) {
-                                       gint _tmp6_ = 0;
-                                       _tmp6_ = i;
-                                       i = _tmp6_ + 1;
+                               gint _tmp11_ = 0;
+                               ValaList* _tmp12_ = NULL;
+                               gint _tmp13_ = 0;
+                               gint _tmp14_ = 0;
+                               ValaList* _tmp15_ = NULL;
+                               gint _tmp16_ = 0;
+                               gpointer _tmp17_ = NULL;
+                               ValaDataType* _tmp18_ = NULL;
+                               ValaDataType* _tmp19_ = NULL;
+                               gboolean _tmp20_ = FALSE;
+                               if (!_tmp9_) {
+                                       gint _tmp10_ = 0;
+                                       _tmp10_ = i;
+                                       i = _tmp10_ + 1;
                                }
-                               _tmp5_ = FALSE;
-                               _tmp7_ = i;
-                               _tmp8_ = error_types;
-                               _tmp9_ = vala_collection_get_size ((ValaCollection*) _tmp8_);
-                               _tmp10_ = _tmp9_;
-                               if (!(_tmp7_ < _tmp10_)) {
+                               _tmp9_ = FALSE;
+                               _tmp11_ = i;
+                               _tmp12_ = error_types;
+                               _tmp13_ = vala_collection_get_size ((ValaCollection*) _tmp12_);
+                               _tmp14_ = _tmp13_;
+                               if (!(_tmp11_ < _tmp14_)) {
                                        break;
                                }
-                               _tmp11_ = error_types;
-                               _tmp12_ = i;
-                               _tmp13_ = vala_list_get (_tmp11_, _tmp12_);
-                               _tmp14_ = (ValaDataType*) _tmp13_;
-                               _tmp15_ = old_type;
-                               _tmp16_ = _tmp14_ == _tmp15_;
-                               _vala_code_node_unref0 (_tmp14_);
-                               if (_tmp16_) {
-                                       ValaList* _tmp17_ = NULL;
-                                       gint _tmp18_ = 0;
-                                       ValaDataType* _tmp19_ = NULL;
-                                       _tmp17_ = error_types;
-                                       _tmp18_ = i;
-                                       _tmp19_ = new_type;
-                                       vala_list_set (_tmp17_, _tmp18_, _tmp19_);
+                               _tmp15_ = error_types;
+                               _tmp16_ = i;
+                               _tmp17_ = vala_list_get (_tmp15_, _tmp16_);
+                               _tmp18_ = (ValaDataType*) _tmp17_;
+                               _tmp19_ = old_type;
+                               _tmp20_ = _tmp18_ == _tmp19_;
+                               _vala_code_node_unref0 (_tmp18_);
+                               if (_tmp20_) {
+                                       ValaList* _tmp21_ = NULL;
+                                       gint _tmp22_ = 0;
+                                       ValaDataType* _tmp23_ = NULL;
+                                       _tmp21_ = error_types;
+                                       _tmp22_ = i;
+                                       _tmp23_ = new_type;
+                                       vala_list_set (_tmp21_, _tmp22_, _tmp23_);
                                        _vala_iterable_unref0 (error_types);
                                        return;
                                }
@@ -3236,6 +3266,8 @@ static void vala_method_find_base_class_method (ValaMethod* self, ValaClass* cl)
 
 
 static void vala_method_find_base_interface_method (ValaMethod* self, ValaClass* cl) {
+       ValaDataType* _tmp83_ = NULL;
+       ValaDataType* _tmp84_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (cl != NULL);
        {
@@ -3281,104 +3313,214 @@ static void vala_method_find_base_interface_method (ValaMethod* self, ValaClass*
                        _tmp12_ = vala_data_type_get_data_type (_tmp11_);
                        _tmp13_ = _tmp12_;
                        if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, VALA_TYPE_INTERFACE)) {
+                               gboolean _tmp14_ = FALSE;
+                               ValaDataType* _tmp15_ = NULL;
+                               ValaDataType* _tmp16_ = NULL;
                                ValaSymbol* sym = NULL;
-                               ValaDataType* _tmp14_ = NULL;
-                               ValaTypeSymbol* _tmp15_ = NULL;
-                               ValaTypeSymbol* _tmp16_ = NULL;
-                               ValaScope* _tmp17_ = NULL;
-                               ValaScope* _tmp18_ = NULL;
-                               const gchar* _tmp19_ = NULL;
-                               const gchar* _tmp20_ = NULL;
-                               ValaSymbol* _tmp21_ = NULL;
-                               ValaSymbol* _tmp22_ = NULL;
-                               ValaSymbol* _tmp29_ = NULL;
-                               _tmp14_ = type;
-                               _tmp15_ = vala_data_type_get_data_type (_tmp14_);
+                               ValaDataType* _tmp24_ = NULL;
+                               ValaTypeSymbol* _tmp25_ = NULL;
+                               ValaTypeSymbol* _tmp26_ = NULL;
+                               ValaScope* _tmp27_ = NULL;
+                               ValaScope* _tmp28_ = NULL;
+                               const gchar* _tmp29_ = NULL;
+                               const gchar* _tmp30_ = NULL;
+                               ValaSymbol* _tmp31_ = NULL;
+                               ValaSymbol* _tmp32_ = NULL;
+                               ValaSymbol* _tmp39_ = NULL;
+                               _tmp15_ = vala_method_get_base_interface_type (self);
                                _tmp16_ = _tmp15_;
-                               _tmp17_ = vala_symbol_get_scope ((ValaSymbol*) _tmp16_);
-                               _tmp18_ = _tmp17_;
-                               _tmp19_ = vala_symbol_get_name ((ValaSymbol*) self);
-                               _tmp20_ = _tmp19_;
-                               _tmp21_ = vala_scope_lookup (_tmp18_, _tmp20_);
-                               sym = _tmp21_;
-                               _tmp22_ = sym;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp22_, VALA_TYPE_SIGNAL)) {
+                               if (_tmp16_ != NULL) {
+                                       ValaDataType* _tmp17_ = NULL;
+                                       ValaDataType* _tmp18_ = NULL;
+                                       ValaTypeSymbol* _tmp19_ = NULL;
+                                       ValaTypeSymbol* _tmp20_ = NULL;
+                                       ValaDataType* _tmp21_ = NULL;
+                                       ValaTypeSymbol* _tmp22_ = NULL;
+                                       ValaTypeSymbol* _tmp23_ = NULL;
+                                       _tmp17_ = vala_method_get_base_interface_type (self);
+                                       _tmp18_ = _tmp17_;
+                                       _tmp19_ = vala_data_type_get_data_type (_tmp18_);
+                                       _tmp20_ = _tmp19_;
+                                       _tmp21_ = type;
+                                       _tmp22_ = vala_data_type_get_data_type (_tmp21_);
+                                       _tmp23_ = _tmp22_;
+                                       _tmp14_ = _tmp20_ != _tmp23_;
+                               } else {
+                                       _tmp14_ = FALSE;
+                               }
+                               if (_tmp14_) {
+                                       _vala_code_node_unref0 (type);
+                                       continue;
+                               }
+                               _tmp24_ = type;
+                               _tmp25_ = vala_data_type_get_data_type (_tmp24_);
+                               _tmp26_ = _tmp25_;
+                               _tmp27_ = vala_symbol_get_scope ((ValaSymbol*) _tmp26_);
+                               _tmp28_ = _tmp27_;
+                               _tmp29_ = vala_symbol_get_name ((ValaSymbol*) self);
+                               _tmp30_ = _tmp29_;
+                               _tmp31_ = vala_scope_lookup (_tmp28_, _tmp30_);
+                               sym = _tmp31_;
+                               _tmp32_ = sym;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp32_, VALA_TYPE_SIGNAL)) {
                                        ValaSignal* sig = NULL;
-                                       ValaSymbol* _tmp23_ = NULL;
-                                       ValaSignal* _tmp24_ = NULL;
-                                       ValaSignal* _tmp25_ = NULL;
-                                       ValaMethod* _tmp26_ = NULL;
-                                       ValaMethod* _tmp27_ = NULL;
-                                       ValaSymbol* _tmp28_ = NULL;
-                                       _tmp23_ = sym;
-                                       _tmp24_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, VALA_TYPE_SIGNAL, ValaSignal));
-                                       sig = _tmp24_;
-                                       _tmp25_ = sig;
-                                       _tmp26_ = vala_signal_get_default_handler (_tmp25_);
-                                       _tmp27_ = _tmp26_;
-                                       _tmp28_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp27_);
+                                       ValaSymbol* _tmp33_ = NULL;
+                                       ValaSignal* _tmp34_ = NULL;
+                                       ValaSignal* _tmp35_ = NULL;
+                                       ValaMethod* _tmp36_ = NULL;
+                                       ValaMethod* _tmp37_ = NULL;
+                                       ValaSymbol* _tmp38_ = NULL;
+                                       _tmp33_ = sym;
+                                       _tmp34_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp33_, VALA_TYPE_SIGNAL, ValaSignal));
+                                       sig = _tmp34_;
+                                       _tmp35_ = sig;
+                                       _tmp36_ = vala_signal_get_default_handler (_tmp35_);
+                                       _tmp37_ = _tmp36_;
+                                       _tmp38_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp37_);
                                        _vala_code_node_unref0 (sym);
-                                       sym = _tmp28_;
+                                       sym = _tmp38_;
                                        _vala_code_node_unref0 (sig);
                                }
-                               _tmp29_ = sym;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, VALA_TYPE_METHOD)) {
+                               _tmp39_ = sym;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp39_, VALA_TYPE_METHOD)) {
                                        ValaMethod* base_method = NULL;
-                                       ValaSymbol* _tmp30_ = NULL;
-                                       ValaMethod* _tmp31_ = NULL;
-                                       gboolean _tmp32_ = FALSE;
-                                       ValaMethod* _tmp33_ = NULL;
-                                       gboolean _tmp34_ = FALSE;
-                                       _tmp30_ = sym;
-                                       _tmp31_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, VALA_TYPE_METHOD, ValaMethod));
-                                       base_method = _tmp31_;
-                                       _tmp33_ = base_method;
-                                       _tmp34_ = _tmp33_->priv->_is_abstract;
-                                       if (_tmp34_) {
-                                               _tmp32_ = TRUE;
+                                       ValaSymbol* _tmp40_ = NULL;
+                                       ValaMethod* _tmp41_ = NULL;
+                                       gboolean _tmp42_ = FALSE;
+                                       ValaMethod* _tmp43_ = NULL;
+                                       gboolean _tmp44_ = FALSE;
+                                       _tmp40_ = sym;
+                                       _tmp41_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp40_, VALA_TYPE_METHOD, ValaMethod));
+                                       base_method = _tmp41_;
+                                       _tmp43_ = base_method;
+                                       _tmp44_ = _tmp43_->priv->_is_abstract;
+                                       if (_tmp44_) {
+                                               _tmp42_ = TRUE;
                                        } else {
-                                               ValaMethod* _tmp35_ = NULL;
-                                               gboolean _tmp36_ = FALSE;
-                                               _tmp35_ = base_method;
-                                               _tmp36_ = _tmp35_->priv->_is_virtual;
-                                               _tmp32_ = _tmp36_;
+                                               ValaMethod* _tmp45_ = NULL;
+                                               gboolean _tmp46_ = FALSE;
+                                               _tmp45_ = base_method;
+                                               _tmp46_ = _tmp45_->priv->_is_virtual;
+                                               _tmp42_ = _tmp46_;
                                        }
-                                       if (_tmp32_) {
+                                       if (_tmp42_) {
+                                               ValaDataType* _tmp47_ = NULL;
+                                               ValaDataType* _tmp48_ = NULL;
                                                gchar* invalid_match = NULL;
-                                               ValaMethod* _tmp37_ = NULL;
-                                               gchar* _tmp38_ = NULL;
-                                               gboolean _tmp39_ = FALSE;
-                                               ValaMethod* _tmp50_ = NULL;
-                                               _tmp37_ = base_method;
-                                               _tmp39_ = vala_method_compatible (self, _tmp37_, &_tmp38_);
+                                               ValaMethod* _tmp69_ = NULL;
+                                               gchar* _tmp70_ = NULL;
+                                               gboolean _tmp71_ = FALSE;
+                                               ValaMethod* _tmp82_ = NULL;
+                                               _tmp47_ = vala_method_get_base_interface_type (self);
+                                               _tmp48_ = _tmp47_;
+                                               if (_tmp48_ == NULL) {
+                                                       gboolean has_explicit_implementation = FALSE;
+                                                       gboolean _tmp68_ = FALSE;
+                                                       has_explicit_implementation = FALSE;
+                                                       {
+                                                               ValaList* _m_list = NULL;
+                                                               ValaClass* _tmp49_ = NULL;
+                                                               ValaList* _tmp50_ = NULL;
+                                                               gint _m_size = 0;
+                                                               ValaList* _tmp51_ = NULL;
+                                                               gint _tmp52_ = 0;
+                                                               gint _tmp53_ = 0;
+                                                               gint _m_index = 0;
+                                                               _tmp49_ = cl;
+                                                               _tmp50_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp49_);
+                                                               _m_list = _tmp50_;
+                                                               _tmp51_ = _m_list;
+                                                               _tmp52_ = vala_collection_get_size ((ValaCollection*) _tmp51_);
+                                                               _tmp53_ = _tmp52_;
+                                                               _m_size = _tmp53_;
+                                                               _m_index = -1;
+                                                               while (TRUE) {
+                                                                       gint _tmp54_ = 0;
+                                                                       gint _tmp55_ = 0;
+                                                                       gint _tmp56_ = 0;
+                                                                       ValaMethod* m = NULL;
+                                                                       ValaList* _tmp57_ = NULL;
+                                                                       gint _tmp58_ = 0;
+                                                                       gpointer _tmp59_ = NULL;
+                                                                       gboolean _tmp60_ = FALSE;
+                                                                       ValaMethod* _tmp61_ = NULL;
+                                                                       ValaDataType* _tmp62_ = NULL;
+                                                                       ValaDataType* _tmp63_ = NULL;
+                                                                       _tmp54_ = _m_index;
+                                                                       _m_index = _tmp54_ + 1;
+                                                                       _tmp55_ = _m_index;
+                                                                       _tmp56_ = _m_size;
+                                                                       if (!(_tmp55_ < _tmp56_)) {
+                                                                               break;
+                                                                       }
+                                                                       _tmp57_ = _m_list;
+                                                                       _tmp58_ = _m_index;
+                                                                       _tmp59_ = vala_list_get (_tmp57_, _tmp58_);
+                                                                       m = (ValaMethod*) _tmp59_;
+                                                                       _tmp61_ = m;
+                                                                       _tmp62_ = vala_method_get_base_interface_type (_tmp61_);
+                                                                       _tmp63_ = _tmp62_;
+                                                                       if (_tmp63_ != NULL) {
+                                                                               ValaMethod* _tmp64_ = NULL;
+                                                                               ValaMethod* _tmp65_ = NULL;
+                                                                               ValaMethod* _tmp66_ = NULL;
+                                                                               ValaMethod* _tmp67_ = NULL;
+                                                                               _tmp64_ = base_method;
+                                                                               _tmp65_ = m;
+                                                                               _tmp66_ = vala_method_get_base_interface_method (_tmp65_);
+                                                                               _tmp67_ = _tmp66_;
+                                                                               _tmp60_ = _tmp64_ == _tmp67_;
+                                                                       } else {
+                                                                               _tmp60_ = FALSE;
+                                                                       }
+                                                                       if (_tmp60_) {
+                                                                               has_explicit_implementation = TRUE;
+                                                                               _vala_code_node_unref0 (m);
+                                                                               break;
+                                                                       }
+                                                                       _vala_code_node_unref0 (m);
+                                                               }
+                                                               _vala_iterable_unref0 (_m_list);
+                                                       }
+                                                       _tmp68_ = has_explicit_implementation;
+                                                       if (_tmp68_) {
+                                                               _vala_code_node_unref0 (base_method);
+                                                               _vala_code_node_unref0 (sym);
+                                                               _vala_code_node_unref0 (type);
+                                                               continue;
+                                                       }
+                                               }
+                                               invalid_match = NULL;
+                                               _tmp69_ = base_method;
+                                               _tmp71_ = vala_method_compatible (self, _tmp69_, &_tmp70_);
                                                _g_free0 (invalid_match);
-                                               invalid_match = _tmp38_;
-                                               if (!_tmp39_) {
-                                                       ValaSourceReference* _tmp40_ = NULL;
-                                                       ValaSourceReference* _tmp41_ = NULL;
-                                                       gchar* _tmp42_ = NULL;
-                                                       gchar* _tmp43_ = NULL;
-                                                       ValaMethod* _tmp44_ = NULL;
-                                                       gchar* _tmp45_ = NULL;
-                                                       gchar* _tmp46_ = NULL;
-                                                       const gchar* _tmp47_ = NULL;
-                                                       gchar* _tmp48_ = NULL;
-                                                       gchar* _tmp49_ = NULL;
+                                               invalid_match = _tmp70_;
+                                               if (!_tmp71_) {
+                                                       ValaSourceReference* _tmp72_ = NULL;
+                                                       ValaSourceReference* _tmp73_ = NULL;
+                                                       gchar* _tmp74_ = NULL;
+                                                       gchar* _tmp75_ = NULL;
+                                                       ValaMethod* _tmp76_ = NULL;
+                                                       gchar* _tmp77_ = NULL;
+                                                       gchar* _tmp78_ = NULL;
+                                                       const gchar* _tmp79_ = NULL;
+                                                       gchar* _tmp80_ = NULL;
+                                                       gchar* _tmp81_ = NULL;
                                                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                                                       _tmp40_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                                       _tmp41_ = _tmp40_;
-                                                       _tmp42_ = vala_symbol_get_full_name ((ValaSymbol*) self);
-                                                       _tmp43_ = _tmp42_;
-                                                       _tmp44_ = base_method;
-                                                       _tmp45_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp44_);
-                                                       _tmp46_ = _tmp45_;
-                                                       _tmp47_ = invalid_match;
-                                                       _tmp48_ = g_strdup_printf ("overriding method `%s' is incompatible with base method `%s': %s.", _tmp43_, _tmp46_, _tmp47_);
-                                                       _tmp49_ = _tmp48_;
-                                                       vala_report_error (_tmp41_, _tmp49_);
-                                                       _g_free0 (_tmp49_);
-                                                       _g_free0 (_tmp46_);
-                                                       _g_free0 (_tmp43_);
+                                                       _tmp72_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                                       _tmp73_ = _tmp72_;
+                                                       _tmp74_ = vala_symbol_get_full_name ((ValaSymbol*) self);
+                                                       _tmp75_ = _tmp74_;
+                                                       _tmp76_ = base_method;
+                                                       _tmp77_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp76_);
+                                                       _tmp78_ = _tmp77_;
+                                                       _tmp79_ = invalid_match;
+                                                       _tmp80_ = g_strdup_printf ("overriding method `%s' is incompatible with base method `%s': %s.", _tmp75_, _tmp78_, _tmp79_);
+                                                       _tmp81_ = _tmp80_;
+                                                       vala_report_error (_tmp73_, _tmp81_);
+                                                       _g_free0 (_tmp81_);
+                                                       _g_free0 (_tmp78_);
+                                                       _g_free0 (_tmp75_);
                                                        _g_free0 (invalid_match);
                                                        _vala_code_node_unref0 (base_method);
                                                        _vala_code_node_unref0 (sym);
@@ -3386,8 +3528,8 @@ static void vala_method_find_base_interface_method (ValaMethod* self, ValaClass*
                                                        _vala_iterable_unref0 (_type_list);
                                                        return;
                                                }
-                                               _tmp50_ = base_method;
-                                               self->priv->_base_interface_method = _tmp50_;
+                                               _tmp82_ = base_method;
+                                               self->priv->_base_interface_method = _tmp82_;
                                                _g_free0 (invalid_match);
                                                _vala_code_node_unref0 (base_method);
                                                _vala_code_node_unref0 (sym);
@@ -3403,6 +3545,25 @@ static void vala_method_find_base_interface_method (ValaMethod* self, ValaClass*
                }
                _vala_iterable_unref0 (_type_list);
        }
+       _tmp83_ = vala_method_get_base_interface_type (self);
+       _tmp84_ = _tmp83_;
+       if (_tmp84_ != NULL) {
+               ValaSourceReference* _tmp85_ = NULL;
+               ValaSourceReference* _tmp86_ = NULL;
+               gchar* _tmp87_ = NULL;
+               gchar* _tmp88_ = NULL;
+               gchar* _tmp89_ = NULL;
+               gchar* _tmp90_ = NULL;
+               _tmp85_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp86_ = _tmp85_;
+               _tmp87_ = vala_symbol_get_full_name ((ValaSymbol*) self);
+               _tmp88_ = _tmp87_;
+               _tmp89_ = g_strdup_printf ("%s: no suitable interface method found to implement", _tmp88_);
+               _tmp90_ = _tmp89_;
+               vala_report_error (_tmp86_, _tmp90_);
+               _g_free0 (_tmp90_);
+               _g_free0 (_tmp88_);
+       }
 }
 
 
@@ -3473,34 +3634,38 @@ static gboolean vala_method_real_check (ValaCodeNode* base, ValaCodeContext* con
        ValaSemanticAnalyzer* _tmp280_ = NULL;
        ValaStruct* _tmp281_ = NULL;
        ValaStruct* _tmp282_ = NULL;
-       ValaCodeContext* _tmp318_ = NULL;
-       ValaSemanticAnalyzer* _tmp319_ = NULL;
-       ValaSemanticAnalyzer* _tmp320_ = NULL;
-       ValaSourceFile* _tmp321_ = NULL;
-       ValaCodeContext* _tmp322_ = NULL;
-       ValaSemanticAnalyzer* _tmp323_ = NULL;
-       ValaSemanticAnalyzer* _tmp324_ = NULL;
-       ValaSymbol* _tmp325_ = NULL;
-       gboolean _tmp326_ = FALSE;
-       gboolean _tmp327_ = FALSE;
-       gboolean _tmp328_ = FALSE;
-       gboolean _tmp329_ = FALSE;
-       gboolean _tmp330_ = FALSE;
-       ValaCodeContext* _tmp346_ = NULL;
-       ValaSemanticAnalyzer* _tmp347_ = NULL;
-       ValaSemanticAnalyzer* _tmp348_ = NULL;
-       ValaDataType* _tmp349_ = NULL;
-       ValaDataType* _tmp350_ = NULL;
-       gboolean _tmp351_ = FALSE;
-       ValaBlock* _tmp410_ = NULL;
-       ValaBlock* _tmp411_ = NULL;
-       ValaCodeContext* _tmp453_ = NULL;
-       gboolean _tmp454_ = FALSE;
-       ValaAttribute* _tmp472_ = NULL;
-       ValaAttribute* _tmp473_ = NULL;
-       gboolean _tmp474_ = FALSE;
-       gboolean _tmp475_ = FALSE;
-       gboolean _tmp476_ = FALSE;
+       gboolean _tmp318_ = FALSE;
+       gboolean _tmp319_ = FALSE;
+       ValaDataType* _tmp320_ = NULL;
+       ValaDataType* _tmp321_ = NULL;
+       ValaCodeContext* _tmp369_ = NULL;
+       ValaSemanticAnalyzer* _tmp370_ = NULL;
+       ValaSemanticAnalyzer* _tmp371_ = NULL;
+       ValaSourceFile* _tmp372_ = NULL;
+       ValaCodeContext* _tmp373_ = NULL;
+       ValaSemanticAnalyzer* _tmp374_ = NULL;
+       ValaSemanticAnalyzer* _tmp375_ = NULL;
+       ValaSymbol* _tmp376_ = NULL;
+       gboolean _tmp377_ = FALSE;
+       gboolean _tmp378_ = FALSE;
+       gboolean _tmp379_ = FALSE;
+       gboolean _tmp380_ = FALSE;
+       gboolean _tmp381_ = FALSE;
+       ValaCodeContext* _tmp397_ = NULL;
+       ValaSemanticAnalyzer* _tmp398_ = NULL;
+       ValaSemanticAnalyzer* _tmp399_ = NULL;
+       ValaDataType* _tmp400_ = NULL;
+       ValaDataType* _tmp401_ = NULL;
+       gboolean _tmp402_ = FALSE;
+       ValaBlock* _tmp461_ = NULL;
+       ValaBlock* _tmp462_ = NULL;
+       ValaCodeContext* _tmp504_ = NULL;
+       gboolean _tmp505_ = FALSE;
+       ValaAttribute* _tmp523_ = NULL;
+       ValaAttribute* _tmp524_ = NULL;
+       gboolean _tmp525_ = FALSE;
+       gboolean _tmp526_ = FALSE;
+       gboolean _tmp527_ = FALSE;
        self = (ValaMethod*) base;
        g_return_val_if_fail (context != NULL, FALSE);
        _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
@@ -4449,104 +4614,257 @@ static gboolean vala_method_real_check (ValaCodeNode* base, ValaCodeContext* con
                        }
                }
        }
-       _tmp318_ = context;
-       _tmp319_ = vala_code_context_get_analyzer (_tmp318_);
-       _tmp320_ = _tmp319_;
-       _tmp321_ = old_source_file;
-       vala_semantic_analyzer_set_current_source_file (_tmp320_, _tmp321_);
-       _tmp322_ = context;
-       _tmp323_ = vala_code_context_get_analyzer (_tmp322_);
-       _tmp324_ = _tmp323_;
-       _tmp325_ = old_symbol;
-       vala_semantic_analyzer_set_current_symbol (_tmp324_, _tmp325_);
-       _tmp329_ = vala_symbol_get_external_package ((ValaSymbol*) self);
-       _tmp330_ = _tmp329_;
-       if (!_tmp330_) {
-               gboolean _tmp331_ = FALSE;
-               _tmp331_ = self->priv->_overrides;
-               _tmp328_ = !_tmp331_;
+       _tmp320_ = vala_method_get_base_interface_type (self);
+       _tmp321_ = _tmp320_;
+       if (_tmp321_ != NULL) {
+               ValaMethod* _tmp322_ = NULL;
+               ValaMethod* _tmp323_ = NULL;
+               _tmp322_ = vala_method_get_base_interface_method (self);
+               _tmp323_ = _tmp322_;
+               _tmp319_ = _tmp323_ != NULL;
        } else {
-               _tmp328_ = FALSE;
+               _tmp319_ = FALSE;
        }
-       if (_tmp328_) {
-               gboolean _tmp332_ = FALSE;
-               gboolean _tmp333_ = FALSE;
-               _tmp332_ = vala_symbol_get_hides ((ValaSymbol*) self);
-               _tmp333_ = _tmp332_;
-               _tmp327_ = !_tmp333_;
+       if (_tmp319_) {
+               ValaSymbol* _tmp324_ = NULL;
+               ValaSymbol* _tmp325_ = NULL;
+               _tmp324_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
+               _tmp325_ = _tmp324_;
+               _tmp318_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp325_, VALA_TYPE_CLASS);
        } else {
-               _tmp327_ = FALSE;
+               _tmp318_ = FALSE;
        }
-       if (_tmp327_) {
-               ValaSymbol* _tmp334_ = NULL;
-               ValaSymbol* _tmp335_ = NULL;
-               _tmp334_ = vala_symbol_get_hidden_member ((ValaSymbol*) self);
-               _tmp335_ = _tmp334_;
-               _tmp326_ = _tmp335_ != NULL;
-               _vala_code_node_unref0 (_tmp335_);
+       if (_tmp318_) {
+               ValaClass* cl = NULL;
+               ValaSymbol* _tmp326_ = NULL;
+               ValaSymbol* _tmp327_ = NULL;
+               ValaClass* _tmp328_ = NULL;
+               _tmp326_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
+               _tmp327_ = _tmp326_;
+               _tmp328_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp327_, VALA_TYPE_CLASS, ValaClass));
+               cl = _tmp328_;
+               {
+                       ValaList* _m_list = NULL;
+                       ValaClass* _tmp329_ = NULL;
+                       ValaList* _tmp330_ = NULL;
+                       gint _m_size = 0;
+                       ValaList* _tmp331_ = NULL;
+                       gint _tmp332_ = 0;
+                       gint _tmp333_ = 0;
+                       gint _m_index = 0;
+                       _tmp329_ = cl;
+                       _tmp330_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp329_);
+                       _m_list = _tmp330_;
+                       _tmp331_ = _m_list;
+                       _tmp332_ = vala_collection_get_size ((ValaCollection*) _tmp331_);
+                       _tmp333_ = _tmp332_;
+                       _m_size = _tmp333_;
+                       _m_index = -1;
+                       while (TRUE) {
+                               gint _tmp334_ = 0;
+                               gint _tmp335_ = 0;
+                               gint _tmp336_ = 0;
+                               ValaMethod* m = NULL;
+                               ValaList* _tmp337_ = NULL;
+                               gint _tmp338_ = 0;
+                               gpointer _tmp339_ = NULL;
+                               gboolean _tmp340_ = FALSE;
+                               ValaMethod* _tmp341_ = NULL;
+                               _tmp334_ = _m_index;
+                               _m_index = _tmp334_ + 1;
+                               _tmp335_ = _m_index;
+                               _tmp336_ = _m_size;
+                               if (!(_tmp335_ < _tmp336_)) {
+                                       break;
+                               }
+                               _tmp337_ = _m_list;
+                               _tmp338_ = _m_index;
+                               _tmp339_ = vala_list_get (_tmp337_, _tmp338_);
+                               m = (ValaMethod*) _tmp339_;
+                               _tmp341_ = m;
+                               if (_tmp341_ != self) {
+                                       ValaMethod* _tmp342_ = NULL;
+                                       ValaMethod* _tmp343_ = NULL;
+                                       ValaMethod* _tmp344_ = NULL;
+                                       ValaMethod* _tmp345_ = NULL;
+                                       ValaMethod* _tmp346_ = NULL;
+                                       _tmp342_ = m;
+                                       _tmp343_ = vala_method_get_base_interface_method (_tmp342_);
+                                       _tmp344_ = _tmp343_;
+                                       _tmp345_ = vala_method_get_base_interface_method (self);
+                                       _tmp346_ = _tmp345_;
+                                       _tmp340_ = _tmp344_ == _tmp346_;
+                               } else {
+                                       _tmp340_ = FALSE;
+                               }
+                               if (_tmp340_) {
+                                       ValaMethod* _tmp347_ = NULL;
+                                       ValaMethod* _tmp348_ = NULL;
+                                       ValaSourceReference* _tmp349_ = NULL;
+                                       ValaSourceReference* _tmp350_ = NULL;
+                                       ValaClass* _tmp351_ = NULL;
+                                       gchar* _tmp352_ = NULL;
+                                       gchar* _tmp353_ = NULL;
+                                       ValaMethod* _tmp354_ = NULL;
+                                       ValaMethod* _tmp355_ = NULL;
+                                       gchar* _tmp356_ = NULL;
+                                       gchar* _tmp357_ = NULL;
+                                       gchar* _tmp358_ = NULL;
+                                       gchar* _tmp359_ = NULL;
+                                       ValaMethod* _tmp360_ = NULL;
+                                       ValaSourceReference* _tmp361_ = NULL;
+                                       ValaSourceReference* _tmp362_ = NULL;
+                                       ValaMethod* _tmp363_ = NULL;
+                                       ValaMethod* _tmp364_ = NULL;
+                                       gchar* _tmp365_ = NULL;
+                                       gchar* _tmp366_ = NULL;
+                                       gchar* _tmp367_ = NULL;
+                                       gchar* _tmp368_ = NULL;
+                                       _tmp347_ = m;
+                                       vala_code_node_set_checked ((ValaCodeNode*) _tmp347_, TRUE);
+                                       _tmp348_ = m;
+                                       vala_code_node_set_error ((ValaCodeNode*) _tmp348_, TRUE);
+                                       vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
+                                       _tmp349_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                       _tmp350_ = _tmp349_;
+                                       _tmp351_ = cl;
+                                       _tmp352_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp351_);
+                                       _tmp353_ = _tmp352_;
+                                       _tmp354_ = vala_method_get_base_interface_method (self);
+                                       _tmp355_ = _tmp354_;
+                                       _tmp356_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp355_);
+                                       _tmp357_ = _tmp356_;
+                                       _tmp358_ = g_strdup_printf ("`%s' already contains an implementation for `%s'", _tmp353_, _tmp357_);
+                                       _tmp359_ = _tmp358_;
+                                       vala_report_error (_tmp350_, _tmp359_);
+                                       _g_free0 (_tmp359_);
+                                       _g_free0 (_tmp357_);
+                                       _g_free0 (_tmp353_);
+                                       _tmp360_ = m;
+                                       _tmp361_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp360_);
+                                       _tmp362_ = _tmp361_;
+                                       _tmp363_ = vala_method_get_base_interface_method (self);
+                                       _tmp364_ = _tmp363_;
+                                       _tmp365_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp364_);
+                                       _tmp366_ = _tmp365_;
+                                       _tmp367_ = g_strdup_printf ("previous implementation of `%s' was here", _tmp366_);
+                                       _tmp368_ = _tmp367_;
+                                       vala_report_notice (_tmp362_, _tmp368_);
+                                       _g_free0 (_tmp368_);
+                                       _g_free0 (_tmp366_);
+                                       result = FALSE;
+                                       _vala_code_node_unref0 (m);
+                                       _vala_iterable_unref0 (_m_list);
+                                       _vala_code_node_unref0 (cl);
+                                       _vala_code_node_unref0 (init_attr);
+                                       _vala_code_node_unref0 (old_symbol);
+                                       _vala_source_file_unref0 (old_source_file);
+                                       return result;
+                               }
+                               _vala_code_node_unref0 (m);
+                       }
+                       _vala_iterable_unref0 (_m_list);
+               }
+               _vala_code_node_unref0 (cl);
+       }
+       _tmp369_ = context;
+       _tmp370_ = vala_code_context_get_analyzer (_tmp369_);
+       _tmp371_ = _tmp370_;
+       _tmp372_ = old_source_file;
+       vala_semantic_analyzer_set_current_source_file (_tmp371_, _tmp372_);
+       _tmp373_ = context;
+       _tmp374_ = vala_code_context_get_analyzer (_tmp373_);
+       _tmp375_ = _tmp374_;
+       _tmp376_ = old_symbol;
+       vala_semantic_analyzer_set_current_symbol (_tmp375_, _tmp376_);
+       _tmp380_ = vala_symbol_get_external_package ((ValaSymbol*) self);
+       _tmp381_ = _tmp380_;
+       if (!_tmp381_) {
+               gboolean _tmp382_ = FALSE;
+               _tmp382_ = self->priv->_overrides;
+               _tmp379_ = !_tmp382_;
+       } else {
+               _tmp379_ = FALSE;
+       }
+       if (_tmp379_) {
+               gboolean _tmp383_ = FALSE;
+               gboolean _tmp384_ = FALSE;
+               _tmp383_ = vala_symbol_get_hides ((ValaSymbol*) self);
+               _tmp384_ = _tmp383_;
+               _tmp378_ = !_tmp384_;
+       } else {
+               _tmp378_ = FALSE;
+       }
+       if (_tmp378_) {
+               ValaSymbol* _tmp385_ = NULL;
+               ValaSymbol* _tmp386_ = NULL;
+               _tmp385_ = vala_symbol_get_hidden_member ((ValaSymbol*) self);
+               _tmp386_ = _tmp385_;
+               _tmp377_ = _tmp386_ != NULL;
+               _vala_code_node_unref0 (_tmp386_);
        } else {
-               _tmp326_ = FALSE;
+               _tmp377_ = FALSE;
        }
-       if (_tmp326_) {
-               ValaSourceReference* _tmp336_ = NULL;
-               ValaSourceReference* _tmp337_ = NULL;
-               gchar* _tmp338_ = NULL;
-               gchar* _tmp339_ = NULL;
-               ValaSymbol* _tmp340_ = NULL;
-               ValaSymbol* _tmp341_ = NULL;
-               gchar* _tmp342_ = NULL;
-               gchar* _tmp343_ = NULL;
-               gchar* _tmp344_ = NULL;
-               gchar* _tmp345_ = NULL;
-               _tmp336_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-               _tmp337_ = _tmp336_;
-               _tmp338_ = vala_symbol_get_full_name ((ValaSymbol*) self);
-               _tmp339_ = _tmp338_;
-               _tmp340_ = vala_symbol_get_hidden_member ((ValaSymbol*) self);
-               _tmp341_ = _tmp340_;
-               _tmp342_ = vala_symbol_get_full_name (_tmp341_);
-               _tmp343_ = _tmp342_;
-               _tmp344_ = g_strdup_printf ("%s hides inherited method `%s'. Use the `new' keyword if hiding was in" \
-"tentional", _tmp339_, _tmp343_);
-               _tmp345_ = _tmp344_;
-               vala_report_warning (_tmp337_, _tmp345_);
-               _g_free0 (_tmp345_);
-               _g_free0 (_tmp343_);
-               _vala_code_node_unref0 (_tmp341_);
-               _g_free0 (_tmp339_);
+       if (_tmp377_) {
+               ValaSourceReference* _tmp387_ = NULL;
+               ValaSourceReference* _tmp388_ = NULL;
+               gchar* _tmp389_ = NULL;
+               gchar* _tmp390_ = NULL;
+               ValaSymbol* _tmp391_ = NULL;
+               ValaSymbol* _tmp392_ = NULL;
+               gchar* _tmp393_ = NULL;
+               gchar* _tmp394_ = NULL;
+               gchar* _tmp395_ = NULL;
+               gchar* _tmp396_ = NULL;
+               _tmp387_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp388_ = _tmp387_;
+               _tmp389_ = vala_symbol_get_full_name ((ValaSymbol*) self);
+               _tmp390_ = _tmp389_;
+               _tmp391_ = vala_symbol_get_hidden_member ((ValaSymbol*) self);
+               _tmp392_ = _tmp391_;
+               _tmp393_ = vala_symbol_get_full_name (_tmp392_);
+               _tmp394_ = _tmp393_;
+               _tmp395_ = g_strdup_printf ("%s hides inherited method `%s'. Use the `new' keyword if hiding was in" \
+"tentional", _tmp390_, _tmp394_);
+               _tmp396_ = _tmp395_;
+               vala_report_warning (_tmp388_, _tmp396_);
+               _g_free0 (_tmp396_);
+               _g_free0 (_tmp394_);
+               _vala_code_node_unref0 (_tmp392_);
+               _g_free0 (_tmp390_);
        }
-       _tmp346_ = context;
-       _tmp347_ = vala_code_context_get_analyzer (_tmp346_);
-       _tmp348_ = _tmp347_;
-       _tmp349_ = vala_method_get_return_type (self);
-       _tmp350_ = _tmp349_;
-       _tmp351_ = vala_semantic_analyzer_is_type_accessible (_tmp348_, (ValaSymbol*) self, _tmp350_);
-       if (!_tmp351_) {
-               ValaSourceReference* _tmp352_ = NULL;
-               ValaSourceReference* _tmp353_ = NULL;
-               ValaDataType* _tmp354_ = NULL;
-               ValaDataType* _tmp355_ = NULL;
-               gchar* _tmp356_ = NULL;
-               gchar* _tmp357_ = NULL;
-               gchar* _tmp358_ = NULL;
-               gchar* _tmp359_ = NULL;
-               gchar* _tmp360_ = NULL;
-               gchar* _tmp361_ = NULL;
+       _tmp397_ = context;
+       _tmp398_ = vala_code_context_get_analyzer (_tmp397_);
+       _tmp399_ = _tmp398_;
+       _tmp400_ = vala_method_get_return_type (self);
+       _tmp401_ = _tmp400_;
+       _tmp402_ = vala_semantic_analyzer_is_type_accessible (_tmp399_, (ValaSymbol*) self, _tmp401_);
+       if (!_tmp402_) {
+               ValaSourceReference* _tmp403_ = NULL;
+               ValaSourceReference* _tmp404_ = NULL;
+               ValaDataType* _tmp405_ = NULL;
+               ValaDataType* _tmp406_ = NULL;
+               gchar* _tmp407_ = NULL;
+               gchar* _tmp408_ = NULL;
+               gchar* _tmp409_ = NULL;
+               gchar* _tmp410_ = NULL;
+               gchar* _tmp411_ = NULL;
+               gchar* _tmp412_ = NULL;
                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-               _tmp352_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-               _tmp353_ = _tmp352_;
-               _tmp354_ = vala_method_get_return_type (self);
-               _tmp355_ = _tmp354_;
-               _tmp356_ = vala_code_node_to_string ((ValaCodeNode*) _tmp355_);
-               _tmp357_ = _tmp356_;
-               _tmp358_ = vala_symbol_get_full_name ((ValaSymbol*) self);
-               _tmp359_ = _tmp358_;
-               _tmp360_ = g_strdup_printf ("return type `%s` is less accessible than method `%s`", _tmp357_, _tmp359_);
-               _tmp361_ = _tmp360_;
-               vala_report_error (_tmp353_, _tmp361_);
-               _g_free0 (_tmp361_);
-               _g_free0 (_tmp359_);
-               _g_free0 (_tmp357_);
+               _tmp403_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp404_ = _tmp403_;
+               _tmp405_ = vala_method_get_return_type (self);
+               _tmp406_ = _tmp405_;
+               _tmp407_ = vala_code_node_to_string ((ValaCodeNode*) _tmp406_);
+               _tmp408_ = _tmp407_;
+               _tmp409_ = vala_symbol_get_full_name ((ValaSymbol*) self);
+               _tmp410_ = _tmp409_;
+               _tmp411_ = g_strdup_printf ("return type `%s` is less accessible than method `%s`", _tmp408_, _tmp410_);
+               _tmp412_ = _tmp411_;
+               vala_report_error (_tmp404_, _tmp412_);
+               _g_free0 (_tmp412_);
+               _g_free0 (_tmp410_);
+               _g_free0 (_tmp408_);
                result = FALSE;
                _vala_code_node_unref0 (init_attr);
                _vala_code_node_unref0 (old_symbol);
@@ -4555,53 +4873,53 @@ static gboolean vala_method_real_check (ValaCodeNode* base, ValaCodeContext* con
        }
        {
                ValaList* _precondition_list = NULL;
-               ValaList* _tmp362_ = NULL;
+               ValaList* _tmp413_ = NULL;
                gint _precondition_size = 0;
-               ValaList* _tmp363_ = NULL;
-               gint _tmp364_ = 0;
-               gint _tmp365_ = 0;
+               ValaList* _tmp414_ = NULL;
+               gint _tmp415_ = 0;
+               gint _tmp416_ = 0;
                gint _precondition_index = 0;
-               _tmp362_ = vala_method_get_preconditions (self);
-               _precondition_list = _tmp362_;
-               _tmp363_ = _precondition_list;
-               _tmp364_ = vala_collection_get_size ((ValaCollection*) _tmp363_);
-               _tmp365_ = _tmp364_;
-               _precondition_size = _tmp365_;
+               _tmp413_ = vala_method_get_preconditions (self);
+               _precondition_list = _tmp413_;
+               _tmp414_ = _precondition_list;
+               _tmp415_ = vala_collection_get_size ((ValaCollection*) _tmp414_);
+               _tmp416_ = _tmp415_;
+               _precondition_size = _tmp416_;
                _precondition_index = -1;
                while (TRUE) {
-                       gint _tmp366_ = 0;
-                       gint _tmp367_ = 0;
-                       gint _tmp368_ = 0;
+                       gint _tmp417_ = 0;
+                       gint _tmp418_ = 0;
+                       gint _tmp419_ = 0;
                        ValaExpression* precondition = NULL;
-                       ValaList* _tmp369_ = NULL;
-                       gint _tmp370_ = 0;
-                       gpointer _tmp371_ = NULL;
-                       ValaExpression* _tmp372_ = NULL;
-                       gboolean _tmp373_ = FALSE;
-                       gboolean _tmp374_ = FALSE;
-                       ValaExpression* _tmp375_ = NULL;
-                       ValaDataType* _tmp376_ = NULL;
-                       ValaDataType* _tmp377_ = NULL;
-                       ValaCodeContext* _tmp378_ = NULL;
-                       ValaSemanticAnalyzer* _tmp379_ = NULL;
-                       ValaSemanticAnalyzer* _tmp380_ = NULL;
-                       ValaDataType* _tmp381_ = NULL;
-                       gboolean _tmp382_ = FALSE;
-                       _tmp366_ = _precondition_index;
-                       _precondition_index = _tmp366_ + 1;
-                       _tmp367_ = _precondition_index;
-                       _tmp368_ = _precondition_size;
-                       if (!(_tmp367_ < _tmp368_)) {
+                       ValaList* _tmp420_ = NULL;
+                       gint _tmp421_ = 0;
+                       gpointer _tmp422_ = NULL;
+                       ValaExpression* _tmp423_ = NULL;
+                       gboolean _tmp424_ = FALSE;
+                       gboolean _tmp425_ = FALSE;
+                       ValaExpression* _tmp426_ = NULL;
+                       ValaDataType* _tmp427_ = NULL;
+                       ValaDataType* _tmp428_ = NULL;
+                       ValaCodeContext* _tmp429_ = NULL;
+                       ValaSemanticAnalyzer* _tmp430_ = NULL;
+                       ValaSemanticAnalyzer* _tmp431_ = NULL;
+                       ValaDataType* _tmp432_ = NULL;
+                       gboolean _tmp433_ = FALSE;
+                       _tmp417_ = _precondition_index;
+                       _precondition_index = _tmp417_ + 1;
+                       _tmp418_ = _precondition_index;
+                       _tmp419_ = _precondition_size;
+                       if (!(_tmp418_ < _tmp419_)) {
                                break;
                        }
-                       _tmp369_ = _precondition_list;
-                       _tmp370_ = _precondition_index;
-                       _tmp371_ = vala_list_get (_tmp369_, _tmp370_);
-                       precondition = (ValaExpression*) _tmp371_;
-                       _tmp372_ = precondition;
-                       _tmp373_ = vala_code_node_get_error ((ValaCodeNode*) _tmp372_);
-                       _tmp374_ = _tmp373_;
-                       if (_tmp374_) {
+                       _tmp420_ = _precondition_list;
+                       _tmp421_ = _precondition_index;
+                       _tmp422_ = vala_list_get (_tmp420_, _tmp421_);
+                       precondition = (ValaExpression*) _tmp422_;
+                       _tmp423_ = precondition;
+                       _tmp424_ = vala_code_node_get_error ((ValaCodeNode*) _tmp423_);
+                       _tmp425_ = _tmp424_;
+                       if (_tmp425_) {
                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                result = FALSE;
                                _vala_code_node_unref0 (precondition);
@@ -4611,23 +4929,23 @@ static gboolean vala_method_real_check (ValaCodeNode* base, ValaCodeContext* con
                                _vala_source_file_unref0 (old_source_file);
                                return result;
                        }
-                       _tmp375_ = precondition;
-                       _tmp376_ = vala_expression_get_value_type (_tmp375_);
-                       _tmp377_ = _tmp376_;
-                       _tmp378_ = context;
-                       _tmp379_ = vala_code_context_get_analyzer (_tmp378_);
-                       _tmp380_ = _tmp379_;
-                       _tmp381_ = _tmp380_->bool_type;
-                       _tmp382_ = vala_data_type_compatible (_tmp377_, _tmp381_);
-                       if (!_tmp382_) {
-                               ValaExpression* _tmp383_ = NULL;
-                               ValaSourceReference* _tmp384_ = NULL;
-                               ValaSourceReference* _tmp385_ = NULL;
+                       _tmp426_ = precondition;
+                       _tmp427_ = vala_expression_get_value_type (_tmp426_);
+                       _tmp428_ = _tmp427_;
+                       _tmp429_ = context;
+                       _tmp430_ = vala_code_context_get_analyzer (_tmp429_);
+                       _tmp431_ = _tmp430_;
+                       _tmp432_ = _tmp431_->bool_type;
+                       _tmp433_ = vala_data_type_compatible (_tmp428_, _tmp432_);
+                       if (!_tmp433_) {
+                               ValaExpression* _tmp434_ = NULL;
+                               ValaSourceReference* _tmp435_ = NULL;
+                               ValaSourceReference* _tmp436_ = NULL;
                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                               _tmp383_ = precondition;
-                               _tmp384_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp383_);
-                               _tmp385_ = _tmp384_;
-                               vala_report_error (_tmp385_, "Precondition must be boolean");
+                               _tmp434_ = precondition;
+                               _tmp435_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp434_);
+                               _tmp436_ = _tmp435_;
+                               vala_report_error (_tmp436_, "Precondition must be boolean");
                                result = FALSE;
                                _vala_code_node_unref0 (precondition);
                                _vala_iterable_unref0 (_precondition_list);
@@ -4642,53 +4960,53 @@ static gboolean vala_method_real_check (ValaCodeNode* base, ValaCodeContext* con
        }
        {
                ValaList* _postcondition_list = NULL;
-               ValaList* _tmp386_ = NULL;
+               ValaList* _tmp437_ = NULL;
                gint _postcondition_size = 0;
-               ValaList* _tmp387_ = NULL;
-               gint _tmp388_ = 0;
-               gint _tmp389_ = 0;
+               ValaList* _tmp438_ = NULL;
+               gint _tmp439_ = 0;
+               gint _tmp440_ = 0;
                gint _postcondition_index = 0;
-               _tmp386_ = vala_method_get_postconditions (self);
-               _postcondition_list = _tmp386_;
-               _tmp387_ = _postcondition_list;
-               _tmp388_ = vala_collection_get_size ((ValaCollection*) _tmp387_);
-               _tmp389_ = _tmp388_;
-               _postcondition_size = _tmp389_;
+               _tmp437_ = vala_method_get_postconditions (self);
+               _postcondition_list = _tmp437_;
+               _tmp438_ = _postcondition_list;
+               _tmp439_ = vala_collection_get_size ((ValaCollection*) _tmp438_);
+               _tmp440_ = _tmp439_;
+               _postcondition_size = _tmp440_;
                _postcondition_index = -1;
                while (TRUE) {
-                       gint _tmp390_ = 0;
-                       gint _tmp391_ = 0;
-                       gint _tmp392_ = 0;
+                       gint _tmp441_ = 0;
+                       gint _tmp442_ = 0;
+                       gint _tmp443_ = 0;
                        ValaExpression* postcondition = NULL;
-                       ValaList* _tmp393_ = NULL;
-                       gint _tmp394_ = 0;
-                       gpointer _tmp395_ = NULL;
-                       ValaExpression* _tmp396_ = NULL;
-                       gboolean _tmp397_ = FALSE;
-                       gboolean _tmp398_ = FALSE;
-                       ValaExpression* _tmp399_ = NULL;
-                       ValaDataType* _tmp400_ = NULL;
-                       ValaDataType* _tmp401_ = NULL;
-                       ValaCodeContext* _tmp402_ = NULL;
-                       ValaSemanticAnalyzer* _tmp403_ = NULL;
-                       ValaSemanticAnalyzer* _tmp404_ = NULL;
-                       ValaDataType* _tmp405_ = NULL;
-                       gboolean _tmp406_ = FALSE;
-                       _tmp390_ = _postcondition_index;
-                       _postcondition_index = _tmp390_ + 1;
-                       _tmp391_ = _postcondition_index;
-                       _tmp392_ = _postcondition_size;
-                       if (!(_tmp391_ < _tmp392_)) {
+                       ValaList* _tmp444_ = NULL;
+                       gint _tmp445_ = 0;
+                       gpointer _tmp446_ = NULL;
+                       ValaExpression* _tmp447_ = NULL;
+                       gboolean _tmp448_ = FALSE;
+                       gboolean _tmp449_ = FALSE;
+                       ValaExpression* _tmp450_ = NULL;
+                       ValaDataType* _tmp451_ = NULL;
+                       ValaDataType* _tmp452_ = NULL;
+                       ValaCodeContext* _tmp453_ = NULL;
+                       ValaSemanticAnalyzer* _tmp454_ = NULL;
+                       ValaSemanticAnalyzer* _tmp455_ = NULL;
+                       ValaDataType* _tmp456_ = NULL;
+                       gboolean _tmp457_ = FALSE;
+                       _tmp441_ = _postcondition_index;
+                       _postcondition_index = _tmp441_ + 1;
+                       _tmp442_ = _postcondition_index;
+                       _tmp443_ = _postcondition_size;
+                       if (!(_tmp442_ < _tmp443_)) {
                                break;
                        }
-                       _tmp393_ = _postcondition_list;
-                       _tmp394_ = _postcondition_index;
-                       _tmp395_ = vala_list_get (_tmp393_, _tmp394_);
-                       postcondition = (ValaExpression*) _tmp395_;
-                       _tmp396_ = postcondition;
-                       _tmp397_ = vala_code_node_get_error ((ValaCodeNode*) _tmp396_);
-                       _tmp398_ = _tmp397_;
-                       if (_tmp398_) {
+                       _tmp444_ = _postcondition_list;
+                       _tmp445_ = _postcondition_index;
+                       _tmp446_ = vala_list_get (_tmp444_, _tmp445_);
+                       postcondition = (ValaExpression*) _tmp446_;
+                       _tmp447_ = postcondition;
+                       _tmp448_ = vala_code_node_get_error ((ValaCodeNode*) _tmp447_);
+                       _tmp449_ = _tmp448_;
+                       if (_tmp449_) {
                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                result = FALSE;
                                _vala_code_node_unref0 (postcondition);
@@ -4698,23 +5016,23 @@ static gboolean vala_method_real_check (ValaCodeNode* base, ValaCodeContext* con
                                _vala_source_file_unref0 (old_source_file);
                                return result;
                        }
-                       _tmp399_ = postcondition;
-                       _tmp400_ = vala_expression_get_value_type (_tmp399_);
-                       _tmp401_ = _tmp400_;
-                       _tmp402_ = context;
-                       _tmp403_ = vala_code_context_get_analyzer (_tmp402_);
-                       _tmp404_ = _tmp403_;
-                       _tmp405_ = _tmp404_->bool_type;
-                       _tmp406_ = vala_data_type_compatible (_tmp401_, _tmp405_);
-                       if (!_tmp406_) {
-                               ValaExpression* _tmp407_ = NULL;
-                               ValaSourceReference* _tmp408_ = NULL;
-                               ValaSourceReference* _tmp409_ = NULL;
+                       _tmp450_ = postcondition;
+                       _tmp451_ = vala_expression_get_value_type (_tmp450_);
+                       _tmp452_ = _tmp451_;
+                       _tmp453_ = context;
+                       _tmp454_ = vala_code_context_get_analyzer (_tmp453_);
+                       _tmp455_ = _tmp454_;
+                       _tmp456_ = _tmp455_->bool_type;
+                       _tmp457_ = vala_data_type_compatible (_tmp452_, _tmp456_);
+                       if (!_tmp457_) {
+                               ValaExpression* _tmp458_ = NULL;
+                               ValaSourceReference* _tmp459_ = NULL;
+                               ValaSourceReference* _tmp460_ = NULL;
                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                               _tmp407_ = postcondition;
-                               _tmp408_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp407_);
-                               _tmp409_ = _tmp408_;
-                               vala_report_error (_tmp409_, "Postcondition must be boolean");
+                               _tmp458_ = postcondition;
+                               _tmp459_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp458_);
+                               _tmp460_ = _tmp459_;
+                               vala_report_error (_tmp460_, "Postcondition must be boolean");
                                result = FALSE;
                                _vala_code_node_unref0 (postcondition);
                                _vala_iterable_unref0 (_postcondition_list);
@@ -4727,183 +5045,183 @@ static gboolean vala_method_real_check (ValaCodeNode* base, ValaCodeContext* con
                }
                _vala_iterable_unref0 (_postcondition_list);
        }
-       _tmp410_ = vala_subroutine_get_body ((ValaSubroutine*) self);
-       _tmp411_ = _tmp410_;
-       if (_tmp411_ != NULL) {
+       _tmp461_ = vala_subroutine_get_body ((ValaSubroutine*) self);
+       _tmp462_ = _tmp461_;
+       if (_tmp462_ != NULL) {
                {
                        ValaList* _body_error_type_list = NULL;
-                       ValaBlock* _tmp412_ = NULL;
-                       ValaBlock* _tmp413_ = NULL;
-                       ValaList* _tmp414_ = NULL;
+                       ValaBlock* _tmp463_ = NULL;
+                       ValaBlock* _tmp464_ = NULL;
+                       ValaList* _tmp465_ = NULL;
                        gint _body_error_type_size = 0;
-                       ValaList* _tmp415_ = NULL;
-                       gint _tmp416_ = 0;
-                       gint _tmp417_ = 0;
+                       ValaList* _tmp466_ = NULL;
+                       gint _tmp467_ = 0;
+                       gint _tmp468_ = 0;
                        gint _body_error_type_index = 0;
-                       _tmp412_ = vala_subroutine_get_body ((ValaSubroutine*) self);
-                       _tmp413_ = _tmp412_;
-                       _tmp414_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp413_);
-                       _body_error_type_list = _tmp414_;
-                       _tmp415_ = _body_error_type_list;
-                       _tmp416_ = vala_collection_get_size ((ValaCollection*) _tmp415_);
-                       _tmp417_ = _tmp416_;
-                       _body_error_type_size = _tmp417_;
+                       _tmp463_ = vala_subroutine_get_body ((ValaSubroutine*) self);
+                       _tmp464_ = _tmp463_;
+                       _tmp465_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp464_);
+                       _body_error_type_list = _tmp465_;
+                       _tmp466_ = _body_error_type_list;
+                       _tmp467_ = vala_collection_get_size ((ValaCollection*) _tmp466_);
+                       _tmp468_ = _tmp467_;
+                       _body_error_type_size = _tmp468_;
                        _body_error_type_index = -1;
                        while (TRUE) {
-                               gint _tmp418_ = 0;
-                               gint _tmp419_ = 0;
-                               gint _tmp420_ = 0;
+                               gint _tmp469_ = 0;
+                               gint _tmp470_ = 0;
+                               gint _tmp471_ = 0;
                                ValaDataType* body_error_type = NULL;
-                               ValaList* _tmp421_ = NULL;
-                               gint _tmp422_ = 0;
-                               gpointer _tmp423_ = NULL;
+                               ValaList* _tmp472_ = NULL;
+                               gint _tmp473_ = 0;
+                               gpointer _tmp474_ = NULL;
                                gboolean can_propagate_error = FALSE;
-                               gboolean _tmp437_ = FALSE;
-                               ValaDataType* _tmp438_ = NULL;
+                               gboolean _tmp488_ = FALSE;
+                               ValaDataType* _tmp489_ = NULL;
                                gboolean is_dynamic_error = FALSE;
-                               gboolean _tmp442_ = FALSE;
-                               gboolean _tmp443_ = FALSE;
-                               _tmp418_ = _body_error_type_index;
-                               _body_error_type_index = _tmp418_ + 1;
-                               _tmp419_ = _body_error_type_index;
-                               _tmp420_ = _body_error_type_size;
-                               if (!(_tmp419_ < _tmp420_)) {
+                               gboolean _tmp493_ = FALSE;
+                               gboolean _tmp494_ = FALSE;
+                               _tmp469_ = _body_error_type_index;
+                               _body_error_type_index = _tmp469_ + 1;
+                               _tmp470_ = _body_error_type_index;
+                               _tmp471_ = _body_error_type_size;
+                               if (!(_tmp470_ < _tmp471_)) {
                                        break;
                                }
-                               _tmp421_ = _body_error_type_list;
-                               _tmp422_ = _body_error_type_index;
-                               _tmp423_ = vala_list_get (_tmp421_, _tmp422_);
-                               body_error_type = (ValaDataType*) _tmp423_;
+                               _tmp472_ = _body_error_type_list;
+                               _tmp473_ = _body_error_type_index;
+                               _tmp474_ = vala_list_get (_tmp472_, _tmp473_);
+                               body_error_type = (ValaDataType*) _tmp474_;
                                can_propagate_error = FALSE;
                                {
                                        ValaList* _method_error_type_list = NULL;
-                                       ValaList* _tmp424_ = NULL;
+                                       ValaList* _tmp475_ = NULL;
                                        gint _method_error_type_size = 0;
-                                       ValaList* _tmp425_ = NULL;
-                                       gint _tmp426_ = 0;
-                                       gint _tmp427_ = 0;
+                                       ValaList* _tmp476_ = NULL;
+                                       gint _tmp477_ = 0;
+                                       gint _tmp478_ = 0;
                                        gint _method_error_type_index = 0;
-                                       _tmp424_ = vala_code_node_get_error_types ((ValaCodeNode*) self);
-                                       _method_error_type_list = _tmp424_;
-                                       _tmp425_ = _method_error_type_list;
-                                       _tmp426_ = vala_collection_get_size ((ValaCollection*) _tmp425_);
-                                       _tmp427_ = _tmp426_;
-                                       _method_error_type_size = _tmp427_;
+                                       _tmp475_ = vala_code_node_get_error_types ((ValaCodeNode*) self);
+                                       _method_error_type_list = _tmp475_;
+                                       _tmp476_ = _method_error_type_list;
+                                       _tmp477_ = vala_collection_get_size ((ValaCollection*) _tmp476_);
+                                       _tmp478_ = _tmp477_;
+                                       _method_error_type_size = _tmp478_;
                                        _method_error_type_index = -1;
                                        while (TRUE) {
-                                               gint _tmp428_ = 0;
-                                               gint _tmp429_ = 0;
-                                               gint _tmp430_ = 0;
+                                               gint _tmp479_ = 0;
+                                               gint _tmp480_ = 0;
+                                               gint _tmp481_ = 0;
                                                ValaDataType* method_error_type = NULL;
-                                               ValaList* _tmp431_ = NULL;
-                                               gint _tmp432_ = 0;
-                                               gpointer _tmp433_ = NULL;
-                                               ValaDataType* _tmp434_ = NULL;
-                                               ValaDataType* _tmp435_ = NULL;
-                                               gboolean _tmp436_ = FALSE;
-                                               _tmp428_ = _method_error_type_index;
-                                               _method_error_type_index = _tmp428_ + 1;
-                                               _tmp429_ = _method_error_type_index;
-                                               _tmp430_ = _method_error_type_size;
-                                               if (!(_tmp429_ < _tmp430_)) {
+                                               ValaList* _tmp482_ = NULL;
+                                               gint _tmp483_ = 0;
+                                               gpointer _tmp484_ = NULL;
+                                               ValaDataType* _tmp485_ = NULL;
+                                               ValaDataType* _tmp486_ = NULL;
+                                               gboolean _tmp487_ = FALSE;
+                                               _tmp479_ = _method_error_type_index;
+                                               _method_error_type_index = _tmp479_ + 1;
+                                               _tmp480_ = _method_error_type_index;
+                                               _tmp481_ = _method_error_type_size;
+                                               if (!(_tmp480_ < _tmp481_)) {
                                                        break;
                                                }
-                                               _tmp431_ = _method_error_type_list;
-                                               _tmp432_ = _method_error_type_index;
-                                               _tmp433_ = vala_list_get (_tmp431_, _tmp432_);
-                                               method_error_type = (ValaDataType*) _tmp433_;
-                                               _tmp434_ = body_error_type;
-                                               _tmp435_ = method_error_type;
-                                               _tmp436_ = vala_data_type_compatible (_tmp434_, _tmp435_);
-                                               if (_tmp436_) {
+                                               _tmp482_ = _method_error_type_list;
+                                               _tmp483_ = _method_error_type_index;
+                                               _tmp484_ = vala_list_get (_tmp482_, _tmp483_);
+                                               method_error_type = (ValaDataType*) _tmp484_;
+                                               _tmp485_ = body_error_type;
+                                               _tmp486_ = method_error_type;
+                                               _tmp487_ = vala_data_type_compatible (_tmp485_, _tmp486_);
+                                               if (_tmp487_) {
                                                        can_propagate_error = TRUE;
                                                }
                                                _vala_code_node_unref0 (method_error_type);
                                        }
                                        _vala_iterable_unref0 (_method_error_type_list);
                                }
-                               _tmp438_ = body_error_type;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp438_, VALA_TYPE_ERROR_TYPE)) {
-                                       ValaDataType* _tmp439_ = NULL;
-                                       gboolean _tmp440_ = FALSE;
-                                       gboolean _tmp441_ = FALSE;
-                                       _tmp439_ = body_error_type;
-                                       _tmp440_ = vala_error_type_get_dynamic_error (G_TYPE_CHECK_INSTANCE_CAST (_tmp439_, VALA_TYPE_ERROR_TYPE, ValaErrorType));
-                                       _tmp441_ = _tmp440_;
-                                       _tmp437_ = _tmp441_;
+                               _tmp489_ = body_error_type;
+                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp489_, VALA_TYPE_ERROR_TYPE)) {
+                                       ValaDataType* _tmp490_ = NULL;
+                                       gboolean _tmp491_ = FALSE;
+                                       gboolean _tmp492_ = FALSE;
+                                       _tmp490_ = body_error_type;
+                                       _tmp491_ = vala_error_type_get_dynamic_error (G_TYPE_CHECK_INSTANCE_CAST (_tmp490_, VALA_TYPE_ERROR_TYPE, ValaErrorType));
+                                       _tmp492_ = _tmp491_;
+                                       _tmp488_ = _tmp492_;
                                } else {
-                                       _tmp437_ = FALSE;
+                                       _tmp488_ = FALSE;
                                }
-                               is_dynamic_error = _tmp437_;
-                               _tmp443_ = can_propagate_error;
-                               if (!_tmp443_) {
-                                       gboolean _tmp444_ = FALSE;
-                                       _tmp444_ = is_dynamic_error;
-                                       _tmp442_ = !_tmp444_;
+                               is_dynamic_error = _tmp488_;
+                               _tmp494_ = can_propagate_error;
+                               if (!_tmp494_) {
+                                       gboolean _tmp495_ = FALSE;
+                                       _tmp495_ = is_dynamic_error;
+                                       _tmp493_ = !_tmp495_;
                                } else {
-                                       _tmp442_ = FALSE;
+                                       _tmp493_ = FALSE;
                                }
-                               if (_tmp442_) {
-                                       ValaDataType* _tmp445_ = NULL;
-                                       ValaSourceReference* _tmp446_ = NULL;
-                                       ValaSourceReference* _tmp447_ = NULL;
-                                       ValaDataType* _tmp448_ = NULL;
-                                       gchar* _tmp449_ = NULL;
-                                       gchar* _tmp450_ = NULL;
-                                       gchar* _tmp451_ = NULL;
-                                       gchar* _tmp452_ = NULL;
-                                       _tmp445_ = body_error_type;
-                                       _tmp446_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp445_);
-                                       _tmp447_ = _tmp446_;
-                                       _tmp448_ = body_error_type;
-                                       _tmp449_ = vala_code_node_to_string ((ValaCodeNode*) _tmp448_);
-                                       _tmp450_ = _tmp449_;
-                                       _tmp451_ = g_strdup_printf ("unhandled error `%s'", _tmp450_);
-                                       _tmp452_ = _tmp451_;
-                                       vala_report_warning (_tmp447_, _tmp452_);
-                                       _g_free0 (_tmp452_);
-                                       _g_free0 (_tmp450_);
+                               if (_tmp493_) {
+                                       ValaDataType* _tmp496_ = NULL;
+                                       ValaSourceReference* _tmp497_ = NULL;
+                                       ValaSourceReference* _tmp498_ = NULL;
+                                       ValaDataType* _tmp499_ = NULL;
+                                       gchar* _tmp500_ = NULL;
+                                       gchar* _tmp501_ = NULL;
+                                       gchar* _tmp502_ = NULL;
+                                       gchar* _tmp503_ = NULL;
+                                       _tmp496_ = body_error_type;
+                                       _tmp497_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp496_);
+                                       _tmp498_ = _tmp497_;
+                                       _tmp499_ = body_error_type;
+                                       _tmp500_ = vala_code_node_to_string ((ValaCodeNode*) _tmp499_);
+                                       _tmp501_ = _tmp500_;
+                                       _tmp502_ = g_strdup_printf ("unhandled error `%s'", _tmp501_);
+                                       _tmp503_ = _tmp502_;
+                                       vala_report_warning (_tmp498_, _tmp503_);
+                                       _g_free0 (_tmp503_);
+                                       _g_free0 (_tmp501_);
                                }
                                _vala_code_node_unref0 (body_error_type);
                        }
                        _vala_iterable_unref0 (_body_error_type_list);
                }
        }
-       _tmp453_ = context;
-       _tmp454_ = vala_method_is_possible_entry_point (self, _tmp453_);
-       if (_tmp454_) {
-               ValaCodeContext* _tmp455_ = NULL;
-               ValaMethod* _tmp456_ = NULL;
-               ValaMethod* _tmp457_ = NULL;
-               ValaCodeContext* _tmp467_ = NULL;
-               gboolean _tmp468_ = FALSE;
-               gboolean _tmp469_ = FALSE;
-               _tmp455_ = context;
-               _tmp456_ = vala_code_context_get_entry_point (_tmp455_);
-               _tmp457_ = _tmp456_;
-               if (_tmp457_ != NULL) {
-                       ValaSourceReference* _tmp458_ = NULL;
-                       ValaSourceReference* _tmp459_ = NULL;
-                       ValaCodeContext* _tmp460_ = NULL;
-                       ValaMethod* _tmp461_ = NULL;
-                       ValaMethod* _tmp462_ = NULL;
-                       gchar* _tmp463_ = NULL;
-                       gchar* _tmp464_ = NULL;
-                       gchar* _tmp465_ = NULL;
-                       gchar* _tmp466_ = NULL;
+       _tmp504_ = context;
+       _tmp505_ = vala_method_is_possible_entry_point (self, _tmp504_);
+       if (_tmp505_) {
+               ValaCodeContext* _tmp506_ = NULL;
+               ValaMethod* _tmp507_ = NULL;
+               ValaMethod* _tmp508_ = NULL;
+               ValaCodeContext* _tmp518_ = NULL;
+               gboolean _tmp519_ = FALSE;
+               gboolean _tmp520_ = FALSE;
+               _tmp506_ = context;
+               _tmp507_ = vala_code_context_get_entry_point (_tmp506_);
+               _tmp508_ = _tmp507_;
+               if (_tmp508_ != NULL) {
+                       ValaSourceReference* _tmp509_ = NULL;
+                       ValaSourceReference* _tmp510_ = NULL;
+                       ValaCodeContext* _tmp511_ = NULL;
+                       ValaMethod* _tmp512_ = NULL;
+                       ValaMethod* _tmp513_ = NULL;
+                       gchar* _tmp514_ = NULL;
+                       gchar* _tmp515_ = NULL;
+                       gchar* _tmp516_ = NULL;
+                       gchar* _tmp517_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                       _tmp458_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                       _tmp459_ = _tmp458_;
-                       _tmp460_ = context;
-                       _tmp461_ = vala_code_context_get_entry_point (_tmp460_);
-                       _tmp462_ = _tmp461_;
-                       _tmp463_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp462_);
-                       _tmp464_ = _tmp463_;
-                       _tmp465_ = g_strdup_printf ("program already has an entry point `%s'", _tmp464_);
-                       _tmp466_ = _tmp465_;
-                       vala_report_error (_tmp459_, _tmp466_);
-                       _g_free0 (_tmp466_);
-                       _g_free0 (_tmp464_);
+                       _tmp509_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                       _tmp510_ = _tmp509_;
+                       _tmp511_ = context;
+                       _tmp512_ = vala_code_context_get_entry_point (_tmp511_);
+                       _tmp513_ = _tmp512_;
+                       _tmp514_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp513_);
+                       _tmp515_ = _tmp514_;
+                       _tmp516_ = g_strdup_printf ("program already has an entry point `%s'", _tmp515_);
+                       _tmp517_ = _tmp516_;
+                       vala_report_error (_tmp510_, _tmp517_);
+                       _g_free0 (_tmp517_);
+                       _g_free0 (_tmp515_);
                        result = FALSE;
                        _vala_code_node_unref0 (init_attr);
                        _vala_code_node_unref0 (old_symbol);
@@ -4911,28 +5229,28 @@ static gboolean vala_method_real_check (ValaCodeNode* base, ValaCodeContext* con
                        return result;
                }
                vala_method_set_entry_point (self, TRUE);
-               _tmp467_ = context;
-               vala_code_context_set_entry_point (_tmp467_, self);
-               _tmp468_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) self);
-               _tmp469_ = _tmp468_;
-               if (_tmp469_) {
-                       ValaSourceReference* _tmp470_ = NULL;
-                       ValaSourceReference* _tmp471_ = NULL;
-                       _tmp470_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                       _tmp471_ = _tmp470_;
-                       vala_report_error (_tmp471_, "\"main\" method cannot throw errors");
+               _tmp518_ = context;
+               vala_code_context_set_entry_point (_tmp518_, self);
+               _tmp519_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) self);
+               _tmp520_ = _tmp519_;
+               if (_tmp520_) {
+                       ValaSourceReference* _tmp521_ = NULL;
+                       ValaSourceReference* _tmp522_ = NULL;
+                       _tmp521_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                       _tmp522_ = _tmp521_;
+                       vala_report_error (_tmp522_, "\"main\" method cannot throw errors");
                }
        }
-       _tmp472_ = vala_code_node_get_attribute ((ValaCodeNode*) self, "GtkCallback");
-       _tmp473_ = _tmp472_;
-       _tmp474_ = _tmp473_ != NULL;
-       _vala_code_node_unref0 (_tmp473_);
-       if (_tmp474_) {
+       _tmp523_ = vala_code_node_get_attribute ((ValaCodeNode*) self, "GtkCallback");
+       _tmp524_ = _tmp523_;
+       _tmp525_ = _tmp524_ != NULL;
+       _vala_code_node_unref0 (_tmp524_);
+       if (_tmp525_) {
                vala_symbol_set_used ((ValaSymbol*) self, TRUE);
        }
-       _tmp475_ = vala_code_node_get_error ((ValaCodeNode*) self);
-       _tmp476_ = _tmp475_;
-       result = !_tmp476_;
+       _tmp526_ = vala_code_node_get_error ((ValaCodeNode*) self);
+       _tmp527_ = _tmp526_;
+       result = !_tmp527_;
        _vala_code_node_unref0 (init_attr);
        _vala_code_node_unref0 (old_symbol);
        _vala_source_file_unref0 (old_source_file);
@@ -5895,6 +6213,30 @@ ValaMethod* vala_method_get_base_interface_method (ValaMethod* self) {
 }
 
 
+ValaDataType* vala_method_get_base_interface_type (ValaMethod* self) {
+       ValaDataType* result;
+       ValaDataType* _tmp0_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       _tmp0_ = self->priv->_base_interface_type;
+       result = _tmp0_;
+       return result;
+}
+
+
+void vala_method_set_base_interface_type (ValaMethod* self, ValaDataType* value) {
+       ValaDataType* _tmp0_ = NULL;
+       ValaDataType* _tmp1_ = NULL;
+       ValaDataType* _tmp2_ = NULL;
+       g_return_if_fail (self != NULL);
+       _tmp0_ = value;
+       _tmp1_ = _vala_code_node_ref0 (_tmp0_);
+       _vala_code_node_unref0 (self->priv->_base_interface_type);
+       self->priv->_base_interface_type = _tmp1_;
+       _tmp2_ = self->priv->_base_interface_type;
+       vala_code_node_set_parent_node ((ValaCodeNode*) _tmp2_, (ValaCodeNode*) self);
+}
+
+
 gboolean vala_method_get_entry_point (ValaMethod* self) {
        gboolean result;
        gboolean _tmp0_ = FALSE;
@@ -6090,13 +6432,13 @@ void vala_method_set_yield_count (ValaMethod* self, gint value) {
 
 static void vala_method_class_init (ValaMethodClass * klass) {
        vala_method_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_method_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_method_finalize;
        g_type_class_add_private (klass, sizeof (ValaMethodPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_method_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_method_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_method_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_method_real_check;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_method_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_method_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_method_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_method_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_method_real_check;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_method_real_get_defined_variables;
        VALA_SUBROUTINE_CLASS (klass)->get_has_result = vala_method_real_get_has_result;
 }
 
@@ -6121,6 +6463,7 @@ static void vala_method_finalize (ValaCodeNode* obj) {
        _vala_iterable_unref0 (self->priv->preconditions);
        _vala_iterable_unref0 (self->priv->postconditions);
        _vala_code_node_unref0 (self->priv->_return_type);
+       _vala_code_node_unref0 (self->priv->_base_interface_type);
        _vala_code_node_unref0 (self->priv->callback_method);
        _vala_iterable_unref0 (self->priv->captured_variables);
        VALA_CODE_NODE_CLASS (vala_method_parent_class)->finalize (obj);
index 3e9096a..afc7053 100644 (file)
@@ -109,7 +109,7 @@ public class Vala.Method : Subroutine {
                        return _base_method;
                }
        }
-       
+
        /**
         * Specifies the abstract interface method this method implements.
         */
@@ -120,6 +120,17 @@ public class Vala.Method : Subroutine {
                }
        }
 
+       /**
+        * Specifies the explicit interface containing the method this method implements.
+        */
+       public DataType base_interface_type {
+               get { return _base_interface_type; }
+               set {
+                       _base_interface_type = value;
+                       _base_interface_type.parent_node = this;
+               }
+       }
+
        public bool entry_point { get; private set; }
 
        /**
@@ -181,6 +192,7 @@ public class Vala.Method : Subroutine {
 
        private weak Method _base_method;
        private weak Method _base_interface_method;
+       private DataType _base_interface_type;
        private bool base_methods_valid;
 
        Method? callback_method;
@@ -249,6 +261,10 @@ public class Vala.Method : Subroutine {
                        p.accept (visitor);
                }
 
+               if (base_interface_type != null) {
+                       base_interface_type.accept (visitor);
+               }
+
                if (return_type != null) {
                        return_type.accept (visitor);
                }
@@ -471,6 +487,10 @@ public class Vala.Method : Subroutine {
        }
 
        public override void replace_type (DataType old_type, DataType new_type) {
+               if (base_interface_type == old_type) {
+                       base_interface_type = new_type;
+                       return;
+               }
                if (return_type == old_type) {
                        return_type = new_type;
                        return;
@@ -532,9 +552,12 @@ public class Vala.Method : Subroutine {
        }
 
        private void find_base_interface_method (Class cl) {
-               // FIXME report error if multiple possible base methods are found
                foreach (DataType type in cl.get_base_types ()) {
                        if (type.data_type is Interface) {
+                               if (base_interface_type != null && base_interface_type.data_type != type.data_type) {
+                                       continue;
+                               }
+
                                var sym = type.data_type.scope.lookup (name);
                                if (sym is Signal) {
                                        var sig = (Signal) sym;
@@ -543,19 +566,37 @@ public class Vala.Method : Subroutine {
                                if (sym is Method) {
                                        var base_method = (Method) sym;
                                        if (base_method.is_abstract || base_method.is_virtual) {
-                                               string invalid_match;
+                                               if (base_interface_type == null) {
+                                                       // check for existing explicit implementation
+                                                       var has_explicit_implementation = false;
+                                                       foreach (var m in cl.get_methods ()) {
+                                                               if (m.base_interface_type != null && base_method == m.base_interface_method) {
+                                                                       has_explicit_implementation = true;
+                                                                       break;
+                                                               }
+                                                       }
+                                                       if (has_explicit_implementation) {
+                                                               continue;
+                                                       }
+                                               }
+                                               
+                                               string invalid_match = null;
                                                if (!compatible (base_method, out invalid_match)) {
                                                        error = true;
                                                        Report.error (source_reference, "overriding method `%s' is incompatible with base method `%s': %s.".printf (get_full_name (), base_method.get_full_name (), invalid_match));
                                                        return;
                                                }
-
+                                               
                                                _base_interface_method = base_method;
                                                return;
                                        }
                                }
                        }
                }
+
+               if (base_interface_type != null) {
+                       Report.error (source_reference, "%s: no suitable interface method found to implement".printf (get_full_name ()));
+               }
        }
 
        public override bool check (CodeContext context) {
@@ -716,6 +757,20 @@ public class Vala.Method : Subroutine {
                        return false;
                }
 
+               if (base_interface_type != null && base_interface_method != null && parent_symbol is Class) {
+                       var cl = (Class) parent_symbol;
+                       foreach (var m in cl.get_methods ()) {
+                               if (m != this && m.base_interface_method == base_interface_method) {
+                                       m.checked = true;
+                                       m.error = true;
+                                       error = true;
+                                       Report.error (source_reference, "`%s' already contains an implementation for `%s'".printf (cl.get_full_name (), base_interface_method.get_full_name ()));
+                                       Report.notice (m.source_reference, "previous implementation of `%s' was here".printf (base_interface_method.get_full_name ()));
+                                       return false;
+                               }
+                       }
+               }
+
                context.analyzer.current_source_file = old_source_file;
                context.analyzer.current_symbol = old_symbol;
 
index 2daac8c..0bb625c 100644 (file)
@@ -1039,16 +1039,6 @@ typedef struct _ValaArrayType ValaArrayType;
 typedef struct _ValaArrayTypeClass ValaArrayTypeClass;
 #define _vala_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterator_unref (var), NULL)))
 
-#define VALA_TYPE_POINTER_TYPE (vala_pointer_type_get_type ())
-#define VALA_POINTER_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_POINTER_TYPE, ValaPointerType))
-#define VALA_POINTER_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_POINTER_TYPE, ValaPointerTypeClass))
-#define VALA_IS_POINTER_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_POINTER_TYPE))
-#define VALA_IS_POINTER_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_POINTER_TYPE))
-#define VALA_POINTER_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_POINTER_TYPE, ValaPointerTypeClass))
-
-typedef struct _ValaPointerType ValaPointerType;
-typedef struct _ValaPointerTypeClass ValaPointerTypeClass;
-
 #define VALA_TYPE_DYNAMIC_SIGNAL (vala_dynamic_signal_get_type ())
 #define VALA_DYNAMIC_SIGNAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DYNAMIC_SIGNAL, ValaDynamicSignal))
 #define VALA_DYNAMIC_SIGNAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DYNAMIC_SIGNAL, ValaDynamicSignalClass))
@@ -1501,9 +1491,7 @@ ValaStringLiteral* vala_string_literal_new (const gchar* value, ValaSourceRefere
 ValaStringLiteral* vala_string_literal_construct (GType object_type, const gchar* value, ValaSourceReference* source_reference);
 ValaDataType* vala_data_type_copy (ValaDataType* self);
 gchar* vala_string_literal_eval (ValaStringLiteral* self);
-ValaPointerType* vala_pointer_type_new (ValaDataType* base_type, ValaSourceReference* source_reference);
-ValaPointerType* vala_pointer_type_construct (GType object_type, ValaDataType* base_type, ValaSourceReference* source_reference);
-GType vala_pointer_type_get_type (void) G_GNUC_CONST;
+gboolean vala_semantic_analyzer_check_print_format (ValaSemanticAnalyzer* self, const gchar* format, ValaIterator* arg_it, ValaSourceReference* source_reference);
 void vala_expression_set_formal_value_type (ValaExpression* self, ValaDataType* value);
 ValaDataType* vala_expression_get_formal_value_type (ValaExpression* self);
 ValaMethod* vala_semantic_analyzer_get_current_method (ValaSemanticAnalyzer* self);
@@ -1951,18 +1939,6 @@ static gboolean vala_method_call_is_chainup (ValaMethodCall* self) {
 }
 
 
-static gunichar string_get_char (const gchar* self, glong index) {
-       gunichar result = 0U;
-       glong _tmp0_ = 0L;
-       gunichar _tmp1_ = 0U;
-       g_return_val_if_fail (self != NULL, 0U);
-       _tmp0_ = index;
-       _tmp1_ = g_utf8_get_char (((gchar*) self) + _tmp0_);
-       result = _tmp1_;
-       return result;
-}
-
-
 static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext* context) {
        ValaMethodCall * self;
        gboolean result = FALSE;
@@ -2008,34 +1984,34 @@ static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext
        ValaDataType* _tmp460_ = NULL;
        gboolean _tmp485_ = FALSE;
        ValaDataType* _tmp486_ = NULL;
-       ValaDataType* _tmp744_ = NULL;
-       ValaDataType* _tmp755_ = NULL;
-       ValaDataType* _tmp756_ = NULL;
-       ValaDataType* _tmp757_ = NULL;
-       ValaDataType* _tmp758_ = NULL;
-       ValaDataType* _tmp759_ = NULL;
-       ValaDataType* _tmp760_ = NULL;
-       ValaExpression* _tmp761_ = NULL;
-       ValaExpression* _tmp762_ = NULL;
-       ValaDataType* _tmp763_ = NULL;
-       ValaDataType* _tmp764_ = NULL;
+       ValaDataType* _tmp564_ = NULL;
+       ValaDataType* _tmp575_ = NULL;
+       ValaDataType* _tmp576_ = NULL;
+       ValaDataType* _tmp577_ = NULL;
+       ValaDataType* _tmp578_ = NULL;
+       ValaDataType* _tmp579_ = NULL;
+       ValaDataType* _tmp580_ = NULL;
+       ValaExpression* _tmp581_ = NULL;
+       ValaExpression* _tmp582_ = NULL;
+       ValaDataType* _tmp583_ = NULL;
+       ValaDataType* _tmp584_ = NULL;
        gboolean may_throw = FALSE;
-       ValaDataType* _tmp765_ = NULL;
-       ValaCodeContext* _tmp1083_ = NULL;
-       ValaSemanticAnalyzer* _tmp1084_ = NULL;
-       ValaSemanticAnalyzer* _tmp1085_ = NULL;
-       ValaDataType* _tmp1086_ = NULL;
-       ValaList* _tmp1087_ = NULL;
-       ValaList* _tmp1088_ = NULL;
-       ValaList* _tmp1089_ = NULL;
-       gboolean _tmp1090_ = FALSE;
-       gboolean _tmp1091_ = FALSE;
-       gboolean _tmp1092_ = FALSE;
-       gboolean _tmp1093_ = FALSE;
-       ValaCreationMethod* _tmp1094_ = NULL;
-       gboolean _tmp1125_ = FALSE;
-       gboolean _tmp1184_ = FALSE;
-       gboolean _tmp1185_ = FALSE;
+       ValaDataType* _tmp585_ = NULL;
+       ValaCodeContext* _tmp903_ = NULL;
+       ValaSemanticAnalyzer* _tmp904_ = NULL;
+       ValaSemanticAnalyzer* _tmp905_ = NULL;
+       ValaDataType* _tmp906_ = NULL;
+       ValaList* _tmp907_ = NULL;
+       ValaList* _tmp908_ = NULL;
+       ValaList* _tmp909_ = NULL;
+       gboolean _tmp910_ = FALSE;
+       gboolean _tmp911_ = FALSE;
+       gboolean _tmp912_ = FALSE;
+       gboolean _tmp913_ = FALSE;
+       ValaCreationMethod* _tmp914_ = NULL;
+       gboolean _tmp945_ = FALSE;
+       gboolean _tmp1004_ = FALSE;
+       gboolean _tmp1005_ = FALSE;
        self = (ValaMethodCall*) base;
        g_return_val_if_fail (context != NULL, FALSE);
        _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
@@ -3673,636 +3649,26 @@ static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext
                        gchar* format = NULL;
                        ValaStringLiteral* _tmp542_ = NULL;
                        gchar* _tmp543_ = NULL;
-                       gboolean unsupported_format = FALSE;
-                       const gchar* format_it = NULL;
-                       const gchar* _tmp544_ = NULL;
-                       gunichar c = 0U;
-                       const gchar* _tmp545_ = NULL;
-                       gunichar _tmp546_ = 0U;
-                       gboolean _tmp726_ = FALSE;
-                       gboolean _tmp727_ = FALSE;
+                       ValaCodeContext* _tmp544_ = NULL;
+                       ValaSemanticAnalyzer* _tmp545_ = NULL;
+                       ValaSemanticAnalyzer* _tmp546_ = NULL;
+                       const gchar* _tmp547_ = NULL;
+                       ValaIterator* _tmp548_ = NULL;
+                       ValaSourceReference* _tmp549_ = NULL;
+                       ValaSourceReference* _tmp550_ = NULL;
+                       gboolean _tmp551_ = FALSE;
                        _tmp542_ = format_literal;
                        _tmp543_ = vala_string_literal_eval (_tmp542_);
                        format = _tmp543_;
-                       unsupported_format = FALSE;
-                       _tmp544_ = format;
-                       format_it = _tmp544_;
-                       _tmp545_ = format_it;
-                       _tmp546_ = string_get_char (_tmp545_, (glong) 0);
-                       c = _tmp546_;
-                       while (TRUE) {
-                               gunichar _tmp547_ = 0U;
-                               gunichar _tmp548_ = 0U;
-                               const gchar* _tmp553_ = NULL;
-                               const gchar* _tmp554_ = NULL;
-                               const gchar* _tmp555_ = NULL;
-                               gunichar _tmp556_ = 0U;
-                               gunichar _tmp577_ = 0U;
-                               gint length = 0;
-                               gunichar _tmp589_ = 0U;
-                               ValaDataType* param_type = NULL;
-                               gboolean _tmp609_ = FALSE;
-                               gboolean _tmp610_ = FALSE;
-                               gunichar _tmp611_ = 0U;
-                               gunichar _tmp712_ = 0U;
-                               ValaDataType* _tmp717_ = NULL;
-                               _tmp547_ = c;
-                               if (!(_tmp547_ != ((gunichar) '\0'))) {
-                                       break;
-                               }
-                               _tmp548_ = c;
-                               if (_tmp548_ != ((gunichar) '%')) {
-                                       const gchar* _tmp549_ = NULL;
-                                       const gchar* _tmp550_ = NULL;
-                                       const gchar* _tmp551_ = NULL;
-                                       gunichar _tmp552_ = 0U;
-                                       _tmp549_ = format_it;
-                                       _tmp550_ = g_utf8_next_char (_tmp549_);
-                                       format_it = _tmp550_;
-                                       _tmp551_ = format_it;
-                                       _tmp552_ = string_get_char (_tmp551_, (glong) 0);
-                                       c = _tmp552_;
-                                       continue;
-                               }
-                               _tmp553_ = format_it;
-                               _tmp554_ = g_utf8_next_char (_tmp553_);
-                               format_it = _tmp554_;
-                               _tmp555_ = format_it;
-                               _tmp556_ = string_get_char (_tmp555_, (glong) 0);
-                               c = _tmp556_;
-                               while (TRUE) {
-                                       gboolean _tmp557_ = FALSE;
-                                       gboolean _tmp558_ = FALSE;
-                                       gboolean _tmp559_ = FALSE;
-                                       gboolean _tmp560_ = FALSE;
-                                       gunichar _tmp561_ = 0U;
-                                       const gchar* _tmp566_ = NULL;
-                                       const gchar* _tmp567_ = NULL;
-                                       const gchar* _tmp568_ = NULL;
-                                       gunichar _tmp569_ = 0U;
-                                       _tmp561_ = c;
-                                       if (_tmp561_ == ((gunichar) '#')) {
-                                               _tmp560_ = TRUE;
-                                       } else {
-                                               gunichar _tmp562_ = 0U;
-                                               _tmp562_ = c;
-                                               _tmp560_ = _tmp562_ == ((gunichar) '0');
-                                       }
-                                       if (_tmp560_) {
-                                               _tmp559_ = TRUE;
-                                       } else {
-                                               gunichar _tmp563_ = 0U;
-                                               _tmp563_ = c;
-                                               _tmp559_ = _tmp563_ == ((gunichar) '-');
-                                       }
-                                       if (_tmp559_) {
-                                               _tmp558_ = TRUE;
-                                       } else {
-                                               gunichar _tmp564_ = 0U;
-                                               _tmp564_ = c;
-                                               _tmp558_ = _tmp564_ == ((gunichar) ' ');
-                                       }
-                                       if (_tmp558_) {
-                                               _tmp557_ = TRUE;
-                                       } else {
-                                               gunichar _tmp565_ = 0U;
-                                               _tmp565_ = c;
-                                               _tmp557_ = _tmp565_ == ((gunichar) '+');
-                                       }
-                                       if (!_tmp557_) {
-                                               break;
-                                       }
-                                       _tmp566_ = format_it;
-                                       _tmp567_ = g_utf8_next_char (_tmp566_);
-                                       format_it = _tmp567_;
-                                       _tmp568_ = format_it;
-                                       _tmp569_ = string_get_char (_tmp568_, (glong) 0);
-                                       c = _tmp569_;
-                               }
-                               while (TRUE) {
-                                       gboolean _tmp570_ = FALSE;
-                                       gunichar _tmp571_ = 0U;
-                                       const gchar* _tmp573_ = NULL;
-                                       const gchar* _tmp574_ = NULL;
-                                       const gchar* _tmp575_ = NULL;
-                                       gunichar _tmp576_ = 0U;
-                                       _tmp571_ = c;
-                                       if (_tmp571_ >= ((gunichar) '0')) {
-                                               gunichar _tmp572_ = 0U;
-                                               _tmp572_ = c;
-                                               _tmp570_ = _tmp572_ <= ((gunichar) '9');
-                                       } else {
-                                               _tmp570_ = FALSE;
-                                       }
-                                       if (!_tmp570_) {
-                                               break;
-                                       }
-                                       _tmp573_ = format_it;
-                                       _tmp574_ = g_utf8_next_char (_tmp573_);
-                                       format_it = _tmp574_;
-                                       _tmp575_ = format_it;
-                                       _tmp576_ = string_get_char (_tmp575_, (glong) 0);
-                                       c = _tmp576_;
-                               }
-                               _tmp577_ = c;
-                               if (_tmp577_ == ((gunichar) '.')) {
-                                       const gchar* _tmp578_ = NULL;
-                                       const gchar* _tmp579_ = NULL;
-                                       const gchar* _tmp580_ = NULL;
-                                       gunichar _tmp581_ = 0U;
-                                       _tmp578_ = format_it;
-                                       _tmp579_ = g_utf8_next_char (_tmp578_);
-                                       format_it = _tmp579_;
-                                       _tmp580_ = format_it;
-                                       _tmp581_ = string_get_char (_tmp580_, (glong) 0);
-                                       c = _tmp581_;
-                                       while (TRUE) {
-                                               gboolean _tmp582_ = FALSE;
-                                               gunichar _tmp583_ = 0U;
-                                               const gchar* _tmp585_ = NULL;
-                                               const gchar* _tmp586_ = NULL;
-                                               const gchar* _tmp587_ = NULL;
-                                               gunichar _tmp588_ = 0U;
-                                               _tmp583_ = c;
-                                               if (_tmp583_ >= ((gunichar) '0')) {
-                                                       gunichar _tmp584_ = 0U;
-                                                       _tmp584_ = c;
-                                                       _tmp582_ = _tmp584_ <= ((gunichar) '9');
-                                               } else {
-                                                       _tmp582_ = FALSE;
-                                               }
-                                               if (!_tmp582_) {
-                                                       break;
-                                               }
-                                               _tmp585_ = format_it;
-                                               _tmp586_ = g_utf8_next_char (_tmp585_);
-                                               format_it = _tmp586_;
-                                               _tmp587_ = format_it;
-                                               _tmp588_ = string_get_char (_tmp587_, (glong) 0);
-                                               c = _tmp588_;
-                                       }
-                               }
-                               length = 0;
-                               _tmp589_ = c;
-                               if (_tmp589_ == ((gunichar) 'h')) {
-                                       const gchar* _tmp590_ = NULL;
-                                       const gchar* _tmp591_ = NULL;
-                                       const gchar* _tmp592_ = NULL;
-                                       gunichar _tmp593_ = 0U;
-                                       gunichar _tmp594_ = 0U;
-                                       length = -1;
-                                       _tmp590_ = format_it;
-                                       _tmp591_ = g_utf8_next_char (_tmp590_);
-                                       format_it = _tmp591_;
-                                       _tmp592_ = format_it;
-                                       _tmp593_ = string_get_char (_tmp592_, (glong) 0);
-                                       c = _tmp593_;
-                                       _tmp594_ = c;
-                                       if (_tmp594_ == ((gunichar) 'h')) {
-                                               const gchar* _tmp595_ = NULL;
-                                               const gchar* _tmp596_ = NULL;
-                                               const gchar* _tmp597_ = NULL;
-                                               gunichar _tmp598_ = 0U;
-                                               length = -2;
-                                               _tmp595_ = format_it;
-                                               _tmp596_ = g_utf8_next_char (_tmp595_);
-                                               format_it = _tmp596_;
-                                               _tmp597_ = format_it;
-                                               _tmp598_ = string_get_char (_tmp597_, (glong) 0);
-                                               c = _tmp598_;
-                                       }
-                               } else {
-                                       gunichar _tmp599_ = 0U;
-                                       _tmp599_ = c;
-                                       if (_tmp599_ == ((gunichar) 'l')) {
-                                               const gchar* _tmp600_ = NULL;
-                                               const gchar* _tmp601_ = NULL;
-                                               const gchar* _tmp602_ = NULL;
-                                               gunichar _tmp603_ = 0U;
-                                               length = 1;
-                                               _tmp600_ = format_it;
-                                               _tmp601_ = g_utf8_next_char (_tmp600_);
-                                               format_it = _tmp601_;
-                                               _tmp602_ = format_it;
-                                               _tmp603_ = string_get_char (_tmp602_, (glong) 0);
-                                               c = _tmp603_;
-                                       } else {
-                                               gunichar _tmp604_ = 0U;
-                                               _tmp604_ = c;
-                                               if (_tmp604_ == ((gunichar) 'z')) {
-                                                       const gchar* _tmp605_ = NULL;
-                                                       const gchar* _tmp606_ = NULL;
-                                                       const gchar* _tmp607_ = NULL;
-                                                       gunichar _tmp608_ = 0U;
-                                                       length = 2;
-                                                       _tmp605_ = format_it;
-                                                       _tmp606_ = g_utf8_next_char (_tmp605_);
-                                                       format_it = _tmp606_;
-                                                       _tmp607_ = format_it;
-                                                       _tmp608_ = string_get_char (_tmp607_, (glong) 0);
-                                                       c = _tmp608_;
-                                               }
-                                       }
-                               }
-                               param_type = NULL;
-                               _tmp611_ = c;
-                               if (_tmp611_ == ((gunichar) 'd')) {
-                                       _tmp610_ = TRUE;
-                               } else {
-                                       gunichar _tmp612_ = 0U;
-                                       _tmp612_ = c;
-                                       _tmp610_ = _tmp612_ == ((gunichar) 'i');
-                               }
-                               if (_tmp610_) {
-                                       _tmp609_ = TRUE;
-                               } else {
-                                       gunichar _tmp613_ = 0U;
-                                       _tmp613_ = c;
-                                       _tmp609_ = _tmp613_ == ((gunichar) 'c');
-                               }
-                               if (_tmp609_) {
-                                       gint _tmp614_ = 0;
-                                       _tmp614_ = length;
-                                       if (_tmp614_ == (-2)) {
-                                               ValaCodeContext* _tmp615_ = NULL;
-                                               ValaSemanticAnalyzer* _tmp616_ = NULL;
-                                               ValaSemanticAnalyzer* _tmp617_ = NULL;
-                                               ValaDataType* _tmp618_ = NULL;
-                                               ValaDataType* _tmp619_ = NULL;
-                                               _tmp615_ = context;
-                                               _tmp616_ = vala_code_context_get_analyzer (_tmp615_);
-                                               _tmp617_ = _tmp616_;
-                                               _tmp618_ = _tmp617_->int8_type;
-                                               _tmp619_ = _vala_code_node_ref0 (_tmp618_);
-                                               _vala_code_node_unref0 (param_type);
-                                               param_type = _tmp619_;
-                                       } else {
-                                               gint _tmp620_ = 0;
-                                               _tmp620_ = length;
-                                               if (_tmp620_ == (-1)) {
-                                                       ValaCodeContext* _tmp621_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp622_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp623_ = NULL;
-                                                       ValaDataType* _tmp624_ = NULL;
-                                                       ValaDataType* _tmp625_ = NULL;
-                                                       _tmp621_ = context;
-                                                       _tmp622_ = vala_code_context_get_analyzer (_tmp621_);
-                                                       _tmp623_ = _tmp622_;
-                                                       _tmp624_ = _tmp623_->short_type;
-                                                       _tmp625_ = _vala_code_node_ref0 (_tmp624_);
-                                                       _vala_code_node_unref0 (param_type);
-                                                       param_type = _tmp625_;
-                                               } else {
-                                                       gint _tmp626_ = 0;
-                                                       _tmp626_ = length;
-                                                       if (_tmp626_ == 0) {
-                                                               ValaCodeContext* _tmp627_ = NULL;
-                                                               ValaSemanticAnalyzer* _tmp628_ = NULL;
-                                                               ValaSemanticAnalyzer* _tmp629_ = NULL;
-                                                               ValaDataType* _tmp630_ = NULL;
-                                                               ValaDataType* _tmp631_ = NULL;
-                                                               _tmp627_ = context;
-                                                               _tmp628_ = vala_code_context_get_analyzer (_tmp627_);
-                                                               _tmp629_ = _tmp628_;
-                                                               _tmp630_ = _tmp629_->int_type;
-                                                               _tmp631_ = _vala_code_node_ref0 (_tmp630_);
-                                                               _vala_code_node_unref0 (param_type);
-                                                               param_type = _tmp631_;
-                                                       } else {
-                                                               gint _tmp632_ = 0;
-                                                               _tmp632_ = length;
-                                                               if (_tmp632_ == 1) {
-                                                                       ValaCodeContext* _tmp633_ = NULL;
-                                                                       ValaSemanticAnalyzer* _tmp634_ = NULL;
-                                                                       ValaSemanticAnalyzer* _tmp635_ = NULL;
-                                                                       ValaDataType* _tmp636_ = NULL;
-                                                                       ValaDataType* _tmp637_ = NULL;
-                                                                       _tmp633_ = context;
-                                                                       _tmp634_ = vala_code_context_get_analyzer (_tmp633_);
-                                                                       _tmp635_ = _tmp634_;
-                                                                       _tmp636_ = _tmp635_->long_type;
-                                                                       _tmp637_ = _vala_code_node_ref0 (_tmp636_);
-                                                                       _vala_code_node_unref0 (param_type);
-                                                                       param_type = _tmp637_;
-                                                               } else {
-                                                                       gint _tmp638_ = 0;
-                                                                       _tmp638_ = length;
-                                                                       if (_tmp638_ == 2) {
-                                                                               ValaCodeContext* _tmp639_ = NULL;
-                                                                               ValaSemanticAnalyzer* _tmp640_ = NULL;
-                                                                               ValaSemanticAnalyzer* _tmp641_ = NULL;
-                                                                               ValaDataType* _tmp642_ = NULL;
-                                                                               ValaDataType* _tmp643_ = NULL;
-                                                                               _tmp639_ = context;
-                                                                               _tmp640_ = vala_code_context_get_analyzer (_tmp639_);
-                                                                               _tmp641_ = _tmp640_;
-                                                                               _tmp642_ = _tmp641_->ssize_t_type;
-                                                                               _tmp643_ = _vala_code_node_ref0 (_tmp642_);
-                                                                               _vala_code_node_unref0 (param_type);
-                                                                               param_type = _tmp643_;
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                       }
-                               } else {
-                                       gboolean _tmp644_ = FALSE;
-                                       gboolean _tmp645_ = FALSE;
-                                       gboolean _tmp646_ = FALSE;
-                                       gunichar _tmp647_ = 0U;
-                                       _tmp647_ = c;
-                                       if (_tmp647_ == ((gunichar) 'o')) {
-                                               _tmp646_ = TRUE;
-                                       } else {
-                                               gunichar _tmp648_ = 0U;
-                                               _tmp648_ = c;
-                                               _tmp646_ = _tmp648_ == ((gunichar) 'u');
-                                       }
-                                       if (_tmp646_) {
-                                               _tmp645_ = TRUE;
-                                       } else {
-                                               gunichar _tmp649_ = 0U;
-                                               _tmp649_ = c;
-                                               _tmp645_ = _tmp649_ == ((gunichar) 'x');
-                                       }
-                                       if (_tmp645_) {
-                                               _tmp644_ = TRUE;
-                                       } else {
-                                               gunichar _tmp650_ = 0U;
-                                               _tmp650_ = c;
-                                               _tmp644_ = _tmp650_ == ((gunichar) 'X');
-                                       }
-                                       if (_tmp644_) {
-                                               gint _tmp651_ = 0;
-                                               _tmp651_ = length;
-                                               if (_tmp651_ == (-2)) {
-                                                       ValaCodeContext* _tmp652_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp653_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp654_ = NULL;
-                                                       ValaDataType* _tmp655_ = NULL;
-                                                       ValaDataType* _tmp656_ = NULL;
-                                                       _tmp652_ = context;
-                                                       _tmp653_ = vala_code_context_get_analyzer (_tmp652_);
-                                                       _tmp654_ = _tmp653_;
-                                                       _tmp655_ = _tmp654_->uchar_type;
-                                                       _tmp656_ = _vala_code_node_ref0 (_tmp655_);
-                                                       _vala_code_node_unref0 (param_type);
-                                                       param_type = _tmp656_;
-                                               } else {
-                                                       gint _tmp657_ = 0;
-                                                       _tmp657_ = length;
-                                                       if (_tmp657_ == (-1)) {
-                                                               ValaCodeContext* _tmp658_ = NULL;
-                                                               ValaSemanticAnalyzer* _tmp659_ = NULL;
-                                                               ValaSemanticAnalyzer* _tmp660_ = NULL;
-                                                               ValaDataType* _tmp661_ = NULL;
-                                                               ValaDataType* _tmp662_ = NULL;
-                                                               _tmp658_ = context;
-                                                               _tmp659_ = vala_code_context_get_analyzer (_tmp658_);
-                                                               _tmp660_ = _tmp659_;
-                                                               _tmp661_ = _tmp660_->ushort_type;
-                                                               _tmp662_ = _vala_code_node_ref0 (_tmp661_);
-                                                               _vala_code_node_unref0 (param_type);
-                                                               param_type = _tmp662_;
-                                                       } else {
-                                                               gint _tmp663_ = 0;
-                                                               _tmp663_ = length;
-                                                               if (_tmp663_ == 0) {
-                                                                       ValaCodeContext* _tmp664_ = NULL;
-                                                                       ValaSemanticAnalyzer* _tmp665_ = NULL;
-                                                                       ValaSemanticAnalyzer* _tmp666_ = NULL;
-                                                                       ValaDataType* _tmp667_ = NULL;
-                                                                       ValaDataType* _tmp668_ = NULL;
-                                                                       _tmp664_ = context;
-                                                                       _tmp665_ = vala_code_context_get_analyzer (_tmp664_);
-                                                                       _tmp666_ = _tmp665_;
-                                                                       _tmp667_ = _tmp666_->uint_type;
-                                                                       _tmp668_ = _vala_code_node_ref0 (_tmp667_);
-                                                                       _vala_code_node_unref0 (param_type);
-                                                                       param_type = _tmp668_;
-                                                               } else {
-                                                                       gint _tmp669_ = 0;
-                                                                       _tmp669_ = length;
-                                                                       if (_tmp669_ == 1) {
-                                                                               ValaCodeContext* _tmp670_ = NULL;
-                                                                               ValaSemanticAnalyzer* _tmp671_ = NULL;
-                                                                               ValaSemanticAnalyzer* _tmp672_ = NULL;
-                                                                               ValaDataType* _tmp673_ = NULL;
-                                                                               ValaDataType* _tmp674_ = NULL;
-                                                                               _tmp670_ = context;
-                                                                               _tmp671_ = vala_code_context_get_analyzer (_tmp670_);
-                                                                               _tmp672_ = _tmp671_;
-                                                                               _tmp673_ = _tmp672_->ulong_type;
-                                                                               _tmp674_ = _vala_code_node_ref0 (_tmp673_);
-                                                                               _vala_code_node_unref0 (param_type);
-                                                                               param_type = _tmp674_;
-                                                                       } else {
-                                                                               gint _tmp675_ = 0;
-                                                                               _tmp675_ = length;
-                                                                               if (_tmp675_ == 2) {
-                                                                                       ValaCodeContext* _tmp676_ = NULL;
-                                                                                       ValaSemanticAnalyzer* _tmp677_ = NULL;
-                                                                                       ValaSemanticAnalyzer* _tmp678_ = NULL;
-                                                                                       ValaDataType* _tmp679_ = NULL;
-                                                                                       ValaDataType* _tmp680_ = NULL;
-                                                                                       _tmp676_ = context;
-                                                                                       _tmp677_ = vala_code_context_get_analyzer (_tmp676_);
-                                                                                       _tmp678_ = _tmp677_;
-                                                                                       _tmp679_ = _tmp678_->size_t_type;
-                                                                                       _tmp680_ = _vala_code_node_ref0 (_tmp679_);
-                                                                                       _vala_code_node_unref0 (param_type);
-                                                                                       param_type = _tmp680_;
-                                                                               }
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                       } else {
-                                               gboolean _tmp681_ = FALSE;
-                                               gboolean _tmp682_ = FALSE;
-                                               gboolean _tmp683_ = FALSE;
-                                               gboolean _tmp684_ = FALSE;
-                                               gboolean _tmp685_ = FALSE;
-                                               gboolean _tmp686_ = FALSE;
-                                               gboolean _tmp687_ = FALSE;
-                                               gunichar _tmp688_ = 0U;
-                                               _tmp688_ = c;
-                                               if (_tmp688_ == ((gunichar) 'e')) {
-                                                       _tmp687_ = TRUE;
-                                               } else {
-                                                       gunichar _tmp689_ = 0U;
-                                                       _tmp689_ = c;
-                                                       _tmp687_ = _tmp689_ == ((gunichar) 'E');
-                                               }
-                                               if (_tmp687_) {
-                                                       _tmp686_ = TRUE;
-                                               } else {
-                                                       gunichar _tmp690_ = 0U;
-                                                       _tmp690_ = c;
-                                                       _tmp686_ = _tmp690_ == ((gunichar) 'f');
-                                               }
-                                               if (_tmp686_) {
-                                                       _tmp685_ = TRUE;
-                                               } else {
-                                                       gunichar _tmp691_ = 0U;
-                                                       _tmp691_ = c;
-                                                       _tmp685_ = _tmp691_ == ((gunichar) 'F');
-                                               }
-                                               if (_tmp685_) {
-                                                       _tmp684_ = TRUE;
-                                               } else {
-                                                       gunichar _tmp692_ = 0U;
-                                                       _tmp692_ = c;
-                                                       _tmp684_ = _tmp692_ == ((gunichar) 'g');
-                                               }
-                                               if (_tmp684_) {
-                                                       _tmp683_ = TRUE;
-                                               } else {
-                                                       gunichar _tmp693_ = 0U;
-                                                       _tmp693_ = c;
-                                                       _tmp683_ = _tmp693_ == ((gunichar) 'G');
-                                               }
-                                               if (_tmp683_) {
-                                                       _tmp682_ = TRUE;
-                                               } else {
-                                                       gunichar _tmp694_ = 0U;
-                                                       _tmp694_ = c;
-                                                       _tmp682_ = _tmp694_ == ((gunichar) 'a');
-                                               }
-                                               if (_tmp682_) {
-                                                       _tmp681_ = TRUE;
-                                               } else {
-                                                       gunichar _tmp695_ = 0U;
-                                                       _tmp695_ = c;
-                                                       _tmp681_ = _tmp695_ == ((gunichar) 'A');
-                                               }
-                                               if (_tmp681_) {
-                                                       ValaCodeContext* _tmp696_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp697_ = NULL;
-                                                       ValaSemanticAnalyzer* _tmp698_ = NULL;
-                                                       ValaDataType* _tmp699_ = NULL;
-                                                       ValaDataType* _tmp700_ = NULL;
-                                                       _tmp696_ = context;
-                                                       _tmp697_ = vala_code_context_get_analyzer (_tmp696_);
-                                                       _tmp698_ = _tmp697_;
-                                                       _tmp699_ = _tmp698_->double_type;
-                                                       _tmp700_ = _vala_code_node_ref0 (_tmp699_);
-                                                       _vala_code_node_unref0 (param_type);
-                                                       param_type = _tmp700_;
-                                               } else {
-                                                       gunichar _tmp701_ = 0U;
-                                                       _tmp701_ = c;
-                                                       if (_tmp701_ == ((gunichar) 's')) {
-                                                               ValaCodeContext* _tmp702_ = NULL;
-                                                               ValaSemanticAnalyzer* _tmp703_ = NULL;
-                                                               ValaSemanticAnalyzer* _tmp704_ = NULL;
-                                                               ValaDataType* _tmp705_ = NULL;
-                                                               ValaDataType* _tmp706_ = NULL;
-                                                               _tmp702_ = context;
-                                                               _tmp703_ = vala_code_context_get_analyzer (_tmp702_);
-                                                               _tmp704_ = _tmp703_;
-                                                               _tmp705_ = _tmp704_->string_type;
-                                                               _tmp706_ = _vala_code_node_ref0 (_tmp705_);
-                                                               _vala_code_node_unref0 (param_type);
-                                                               param_type = _tmp706_;
-                                                       } else {
-                                                               gunichar _tmp707_ = 0U;
-                                                               _tmp707_ = c;
-                                                               if (_tmp707_ == ((gunichar) 'p')) {
-                                                                       ValaVoidType* _tmp708_ = NULL;
-                                                                       ValaVoidType* _tmp709_ = NULL;
-                                                                       ValaPointerType* _tmp710_ = NULL;
-                                                                       _tmp708_ = vala_void_type_new (NULL);
-                                                                       _tmp709_ = _tmp708_;
-                                                                       _tmp710_ = vala_pointer_type_new ((ValaDataType*) _tmp709_, NULL);
-                                                                       _vala_code_node_unref0 (param_type);
-                                                                       param_type = (ValaDataType*) _tmp710_;
-                                                                       _vala_code_node_unref0 (_tmp709_);
-                                                               } else {
-                                                                       gunichar _tmp711_ = 0U;
-                                                                       _tmp711_ = c;
-                                                                       if (_tmp711_ == ((gunichar) '%')) {
-                                                                       } else {
-                                                                               unsupported_format = TRUE;
-                                                                               _vala_code_node_unref0 (param_type);
-                                                                               break;
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                       }
-                               }
-                               _tmp712_ = c;
-                               if (_tmp712_ != ((gunichar) '\0')) {
-                                       const gchar* _tmp713_ = NULL;
-                                       const gchar* _tmp714_ = NULL;
-                                       const gchar* _tmp715_ = NULL;
-                                       gunichar _tmp716_ = 0U;
-                                       _tmp713_ = format_it;
-                                       _tmp714_ = g_utf8_next_char (_tmp713_);
-                                       format_it = _tmp714_;
-                                       _tmp715_ = format_it;
-                                       _tmp716_ = string_get_char (_tmp715_, (glong) 0);
-                                       c = _tmp716_;
-                               }
-                               _tmp717_ = param_type;
-                               if (_tmp717_ != NULL) {
-                                       ValaIterator* _tmp718_ = NULL;
-                                       gboolean _tmp719_ = FALSE;
-                                       _tmp718_ = arg_it;
-                                       _tmp719_ = vala_iterator_next (_tmp718_);
-                                       if (_tmp719_) {
-                                               ValaExpression* arg = NULL;
-                                               ValaIterator* _tmp720_ = NULL;
-                                               gpointer _tmp721_ = NULL;
-                                               ValaExpression* _tmp722_ = NULL;
-                                               ValaDataType* _tmp723_ = NULL;
-                                               _tmp720_ = arg_it;
-                                               _tmp721_ = vala_iterator_get (_tmp720_);
-                                               arg = (ValaExpression*) _tmp721_;
-                                               _tmp722_ = arg;
-                                               _tmp723_ = param_type;
-                                               vala_expression_set_target_type (_tmp722_, _tmp723_);
-                                               _vala_code_node_unref0 (arg);
-                                       } else {
-                                               ValaSourceReference* _tmp724_ = NULL;
-                                               ValaSourceReference* _tmp725_ = NULL;
-                                               _tmp724_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                               _tmp725_ = _tmp724_;
-                                               vala_report_error (_tmp725_, "Too few arguments for specified format");
-                                               result = FALSE;
-                                               _vala_code_node_unref0 (param_type);
-                                               _g_free0 (format);
-                                               _vala_code_node_unref0 (format_literal);
-                                               _vala_iterator_unref0 (arg_it);
-                                               _vala_iterable_unref0 (args);
-                                               _vala_code_node_unref0 (last_arg);
-                                               _vala_iterable_unref0 (params);
-                                               _vala_code_node_unref0 (ret_type);
-                                               _vala_code_node_unref0 (base_cm);
-                                               _vala_code_node_unref0 (mtype);
-                                               _vala_code_node_unref0 (target_object_type);
-                                               return result;
-                                       }
-                               }
-                               _vala_code_node_unref0 (param_type);
-                       }
-                       _tmp727_ = unsupported_format;
-                       if (!_tmp727_) {
-                               ValaIterator* _tmp728_ = NULL;
-                               gboolean _tmp729_ = FALSE;
-                               _tmp728_ = arg_it;
-                               _tmp729_ = vala_iterator_next (_tmp728_);
-                               _tmp726_ = _tmp729_;
-                       } else {
-                               _tmp726_ = FALSE;
-                       }
-                       if (_tmp726_) {
-                               ValaSourceReference* _tmp730_ = NULL;
-                               ValaSourceReference* _tmp731_ = NULL;
-                               _tmp730_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp731_ = _tmp730_;
-                               vala_report_error (_tmp731_, "Too many arguments for specified format");
+                       _tmp544_ = context;
+                       _tmp545_ = vala_code_context_get_analyzer (_tmp544_);
+                       _tmp546_ = _tmp545_;
+                       _tmp547_ = format;
+                       _tmp548_ = arg_it;
+                       _tmp549_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                       _tmp550_ = _tmp549_;
+                       _tmp551_ = vala_semantic_analyzer_check_print_format (_tmp546_, _tmp547_, _tmp548_, _tmp550_);
+                       if (!_tmp551_) {
                                result = FALSE;
                                _g_free0 (format);
                                _vala_code_node_unref0 (format_literal);
@@ -4322,80 +3688,80 @@ static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext
        }
        {
                ValaList* _arg_list = NULL;
-               ValaList* _tmp732_ = NULL;
+               ValaList* _tmp552_ = NULL;
                gint _arg_size = 0;
-               ValaList* _tmp733_ = NULL;
-               gint _tmp734_ = 0;
-               gint _tmp735_ = 0;
+               ValaList* _tmp553_ = NULL;
+               gint _tmp554_ = 0;
+               gint _tmp555_ = 0;
                gint _arg_index = 0;
-               _tmp732_ = vala_method_call_get_argument_list (self);
-               _arg_list = _tmp732_;
-               _tmp733_ = _arg_list;
-               _tmp734_ = vala_collection_get_size ((ValaCollection*) _tmp733_);
-               _tmp735_ = _tmp734_;
-               _arg_size = _tmp735_;
+               _tmp552_ = vala_method_call_get_argument_list (self);
+               _arg_list = _tmp552_;
+               _tmp553_ = _arg_list;
+               _tmp554_ = vala_collection_get_size ((ValaCollection*) _tmp553_);
+               _tmp555_ = _tmp554_;
+               _arg_size = _tmp555_;
                _arg_index = -1;
                while (TRUE) {
-                       gint _tmp736_ = 0;
-                       gint _tmp737_ = 0;
-                       gint _tmp738_ = 0;
+                       gint _tmp556_ = 0;
+                       gint _tmp557_ = 0;
+                       gint _tmp558_ = 0;
                        ValaExpression* arg = NULL;
-                       ValaList* _tmp739_ = NULL;
-                       gint _tmp740_ = 0;
-                       gpointer _tmp741_ = NULL;
-                       ValaExpression* _tmp742_ = NULL;
-                       ValaCodeContext* _tmp743_ = NULL;
-                       _tmp736_ = _arg_index;
-                       _arg_index = _tmp736_ + 1;
-                       _tmp737_ = _arg_index;
-                       _tmp738_ = _arg_size;
-                       if (!(_tmp737_ < _tmp738_)) {
+                       ValaList* _tmp559_ = NULL;
+                       gint _tmp560_ = 0;
+                       gpointer _tmp561_ = NULL;
+                       ValaExpression* _tmp562_ = NULL;
+                       ValaCodeContext* _tmp563_ = NULL;
+                       _tmp556_ = _arg_index;
+                       _arg_index = _tmp556_ + 1;
+                       _tmp557_ = _arg_index;
+                       _tmp558_ = _arg_size;
+                       if (!(_tmp557_ < _tmp558_)) {
                                break;
                        }
-                       _tmp739_ = _arg_list;
-                       _tmp740_ = _arg_index;
-                       _tmp741_ = vala_list_get (_tmp739_, _tmp740_);
-                       arg = (ValaExpression*) _tmp741_;
-                       _tmp742_ = arg;
-                       _tmp743_ = context;
-                       vala_code_node_check ((ValaCodeNode*) _tmp742_, _tmp743_);
+                       _tmp559_ = _arg_list;
+                       _tmp560_ = _arg_index;
+                       _tmp561_ = vala_list_get (_tmp559_, _tmp560_);
+                       arg = (ValaExpression*) _tmp561_;
+                       _tmp562_ = arg;
+                       _tmp563_ = context;
+                       vala_code_node_check ((ValaCodeNode*) _tmp562_, _tmp563_);
                        _vala_code_node_unref0 (arg);
                }
                _vala_iterable_unref0 (_arg_list);
        }
-       _tmp744_ = ret_type;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp744_, VALA_TYPE_VOID_TYPE)) {
-               gboolean _tmp745_ = FALSE;
-               gboolean _tmp746_ = FALSE;
-               ValaCodeNode* _tmp747_ = NULL;
-               ValaCodeNode* _tmp748_ = NULL;
-               _tmp747_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
-               _tmp748_ = _tmp747_;
-               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp748_, VALA_TYPE_EXPRESSION_STATEMENT)) {
-                       ValaCodeNode* _tmp749_ = NULL;
-                       ValaCodeNode* _tmp750_ = NULL;
-                       _tmp749_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
-                       _tmp750_ = _tmp749_;
-                       _tmp746_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp750_, VALA_TYPE_FOR_STATEMENT);
+       _tmp564_ = ret_type;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp564_, VALA_TYPE_VOID_TYPE)) {
+               gboolean _tmp565_ = FALSE;
+               gboolean _tmp566_ = FALSE;
+               ValaCodeNode* _tmp567_ = NULL;
+               ValaCodeNode* _tmp568_ = NULL;
+               _tmp567_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
+               _tmp568_ = _tmp567_;
+               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp568_, VALA_TYPE_EXPRESSION_STATEMENT)) {
+                       ValaCodeNode* _tmp569_ = NULL;
+                       ValaCodeNode* _tmp570_ = NULL;
+                       _tmp569_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
+                       _tmp570_ = _tmp569_;
+                       _tmp566_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp570_, VALA_TYPE_FOR_STATEMENT);
                } else {
-                       _tmp746_ = FALSE;
+                       _tmp566_ = FALSE;
                }
-               if (_tmp746_) {
-                       ValaCodeNode* _tmp751_ = NULL;
-                       ValaCodeNode* _tmp752_ = NULL;
-                       _tmp751_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
-                       _tmp752_ = _tmp751_;
-                       _tmp745_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp752_, VALA_TYPE_YIELD_STATEMENT);
+               if (_tmp566_) {
+                       ValaCodeNode* _tmp571_ = NULL;
+                       ValaCodeNode* _tmp572_ = NULL;
+                       _tmp571_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
+                       _tmp572_ = _tmp571_;
+                       _tmp565_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp572_, VALA_TYPE_YIELD_STATEMENT);
                } else {
-                       _tmp745_ = FALSE;
+                       _tmp565_ = FALSE;
                }
-               if (_tmp745_) {
-                       ValaSourceReference* _tmp753_ = NULL;
-                       ValaSourceReference* _tmp754_ = NULL;
+               if (_tmp565_) {
+                       ValaSourceReference* _tmp573_ = NULL;
+                       ValaSourceReference* _tmp574_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                       _tmp753_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                       _tmp754_ = _tmp753_;
-                       vala_report_error (_tmp754_, "invocation of void method not allowed as expression");
+                       _tmp573_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                       _tmp574_ = _tmp573_;
+                       vala_report_error (_tmp574_, "invocation of void method not allowed as expression");
                        result = FALSE;
                        _vala_iterator_unref0 (arg_it);
                        _vala_iterable_unref0 (args);
@@ -4408,610 +3774,610 @@ static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext
                        return result;
                }
        }
-       _tmp755_ = ret_type;
-       _tmp756_ = vala_data_type_copy (_tmp755_);
-       _tmp757_ = _tmp756_;
-       vala_expression_set_formal_value_type ((ValaExpression*) self, _tmp757_);
-       _vala_code_node_unref0 (_tmp757_);
-       _tmp758_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
-       _tmp759_ = _tmp758_;
-       _tmp760_ = target_object_type;
-       _tmp761_ = vala_method_call_get_call (self);
-       _tmp762_ = _tmp761_;
-       _tmp763_ = vala_data_type_get_actual_type (_tmp759_, _tmp760_, G_TYPE_CHECK_INSTANCE_TYPE (_tmp762_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp762_) : NULL, (ValaCodeNode*) self);
-       _tmp764_ = _tmp763_;
-       vala_expression_set_value_type ((ValaExpression*) self, _tmp764_);
-       _vala_code_node_unref0 (_tmp764_);
+       _tmp575_ = ret_type;
+       _tmp576_ = vala_data_type_copy (_tmp575_);
+       _tmp577_ = _tmp576_;
+       vala_expression_set_formal_value_type ((ValaExpression*) self, _tmp577_);
+       _vala_code_node_unref0 (_tmp577_);
+       _tmp578_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
+       _tmp579_ = _tmp578_;
+       _tmp580_ = target_object_type;
+       _tmp581_ = vala_method_call_get_call (self);
+       _tmp582_ = _tmp581_;
+       _tmp583_ = vala_data_type_get_actual_type (_tmp579_, _tmp580_, G_TYPE_CHECK_INSTANCE_TYPE (_tmp582_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp582_) : NULL, (ValaCodeNode*) self);
+       _tmp584_ = _tmp583_;
+       vala_expression_set_value_type ((ValaExpression*) self, _tmp584_);
+       _vala_code_node_unref0 (_tmp584_);
        may_throw = FALSE;
-       _tmp765_ = mtype;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp765_, VALA_TYPE_METHOD_TYPE)) {
+       _tmp585_ = mtype;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp585_, VALA_TYPE_METHOD_TYPE)) {
                ValaMethod* m = NULL;
-               ValaDataType* _tmp766_ = NULL;
-               ValaMethod* _tmp767_ = NULL;
-               ValaMethod* _tmp768_ = NULL;
-               ValaMethod* _tmp769_ = NULL;
-               gboolean _tmp770_ = FALSE;
-               gboolean _tmp798_ = FALSE;
-               gboolean _tmp799_ = FALSE;
-               gboolean _tmp800_ = FALSE;
-               ValaMethod* _tmp801_ = NULL;
-               ValaMethod* _tmp827_ = NULL;
-               gboolean _tmp828_ = FALSE;
-               gboolean _tmp829_ = FALSE;
-               ValaMethod* _tmp832_ = NULL;
-               gboolean _tmp833_ = FALSE;
-               gboolean _tmp834_ = FALSE;
+               ValaDataType* _tmp586_ = NULL;
+               ValaMethod* _tmp587_ = NULL;
+               ValaMethod* _tmp588_ = NULL;
+               ValaMethod* _tmp589_ = NULL;
+               gboolean _tmp590_ = FALSE;
+               gboolean _tmp618_ = FALSE;
+               gboolean _tmp619_ = FALSE;
+               gboolean _tmp620_ = FALSE;
+               ValaMethod* _tmp621_ = NULL;
+               ValaMethod* _tmp647_ = NULL;
+               gboolean _tmp648_ = FALSE;
+               gboolean _tmp649_ = FALSE;
+               ValaMethod* _tmp652_ = NULL;
+               gboolean _tmp653_ = FALSE;
+               gboolean _tmp654_ = FALSE;
                ValaDynamicSignal* dynamic_sig = NULL;
-               ValaMethod* _tmp839_ = NULL;
-               ValaSymbol* _tmp840_ = NULL;
-               ValaSymbol* _tmp841_ = NULL;
-               ValaDynamicSignal* _tmp842_ = NULL;
-               gboolean _tmp843_ = FALSE;
-               ValaDynamicSignal* _tmp844_ = NULL;
-               gboolean _tmp891_ = FALSE;
-               ValaMethod* _tmp892_ = NULL;
-               _tmp766_ = mtype;
-               _tmp767_ = vala_method_type_get_method_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp766_, VALA_TYPE_METHOD_TYPE, ValaMethodType));
-               _tmp768_ = _tmp767_;
-               _tmp769_ = _vala_code_node_ref0 (_tmp768_);
-               m = _tmp769_;
-               _tmp770_ = self->priv->_is_yield_expression;
-               if (_tmp770_) {
-                       ValaMethod* _tmp771_ = NULL;
-                       gboolean _tmp772_ = FALSE;
-                       gboolean _tmp773_ = FALSE;
-                       gboolean _tmp776_ = FALSE;
-                       ValaCodeContext* _tmp777_ = NULL;
-                       ValaSemanticAnalyzer* _tmp778_ = NULL;
-                       ValaSemanticAnalyzer* _tmp779_ = NULL;
-                       ValaMethod* _tmp780_ = NULL;
-                       ValaMethod* _tmp781_ = NULL;
-                       ValaCodeContext* _tmp791_ = NULL;
-                       ValaSemanticAnalyzer* _tmp792_ = NULL;
-                       ValaSemanticAnalyzer* _tmp793_ = NULL;
-                       ValaMethod* _tmp794_ = NULL;
-                       ValaMethod* _tmp795_ = NULL;
-                       gint _tmp796_ = 0;
-                       gint _tmp797_ = 0;
-                       _tmp771_ = m;
-                       _tmp772_ = vala_method_get_coroutine (_tmp771_);
-                       _tmp773_ = _tmp772_;
-                       if (!_tmp773_) {
-                               ValaSourceReference* _tmp774_ = NULL;
-                               ValaSourceReference* _tmp775_ = NULL;
+               ValaMethod* _tmp659_ = NULL;
+               ValaSymbol* _tmp660_ = NULL;
+               ValaSymbol* _tmp661_ = NULL;
+               ValaDynamicSignal* _tmp662_ = NULL;
+               gboolean _tmp663_ = FALSE;
+               ValaDynamicSignal* _tmp664_ = NULL;
+               gboolean _tmp711_ = FALSE;
+               ValaMethod* _tmp712_ = NULL;
+               _tmp586_ = mtype;
+               _tmp587_ = vala_method_type_get_method_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp586_, VALA_TYPE_METHOD_TYPE, ValaMethodType));
+               _tmp588_ = _tmp587_;
+               _tmp589_ = _vala_code_node_ref0 (_tmp588_);
+               m = _tmp589_;
+               _tmp590_ = self->priv->_is_yield_expression;
+               if (_tmp590_) {
+                       ValaMethod* _tmp591_ = NULL;
+                       gboolean _tmp592_ = FALSE;
+                       gboolean _tmp593_ = FALSE;
+                       gboolean _tmp596_ = FALSE;
+                       ValaCodeContext* _tmp597_ = NULL;
+                       ValaSemanticAnalyzer* _tmp598_ = NULL;
+                       ValaSemanticAnalyzer* _tmp599_ = NULL;
+                       ValaMethod* _tmp600_ = NULL;
+                       ValaMethod* _tmp601_ = NULL;
+                       ValaCodeContext* _tmp611_ = NULL;
+                       ValaSemanticAnalyzer* _tmp612_ = NULL;
+                       ValaSemanticAnalyzer* _tmp613_ = NULL;
+                       ValaMethod* _tmp614_ = NULL;
+                       ValaMethod* _tmp615_ = NULL;
+                       gint _tmp616_ = 0;
+                       gint _tmp617_ = 0;
+                       _tmp591_ = m;
+                       _tmp592_ = vala_method_get_coroutine (_tmp591_);
+                       _tmp593_ = _tmp592_;
+                       if (!_tmp593_) {
+                               ValaSourceReference* _tmp594_ = NULL;
+                               ValaSourceReference* _tmp595_ = NULL;
                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                               _tmp774_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp775_ = _tmp774_;
-                               vala_report_error (_tmp775_, "yield expression requires async method");
+                               _tmp594_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp595_ = _tmp594_;
+                               vala_report_error (_tmp595_, "yield expression requires async method");
                        }
-                       _tmp777_ = context;
-                       _tmp778_ = vala_code_context_get_analyzer (_tmp777_);
-                       _tmp779_ = _tmp778_;
-                       _tmp780_ = vala_semantic_analyzer_get_current_method (_tmp779_);
-                       _tmp781_ = _tmp780_;
-                       if (_tmp781_ == NULL) {
-                               _tmp776_ = TRUE;
+                       _tmp597_ = context;
+                       _tmp598_ = vala_code_context_get_analyzer (_tmp597_);
+                       _tmp599_ = _tmp598_;
+                       _tmp600_ = vala_semantic_analyzer_get_current_method (_tmp599_);
+                       _tmp601_ = _tmp600_;
+                       if (_tmp601_ == NULL) {
+                               _tmp596_ = TRUE;
                        } else {
-                               ValaCodeContext* _tmp782_ = NULL;
-                               ValaSemanticAnalyzer* _tmp783_ = NULL;
-                               ValaSemanticAnalyzer* _tmp784_ = NULL;
-                               ValaMethod* _tmp785_ = NULL;
-                               ValaMethod* _tmp786_ = NULL;
-                               gboolean _tmp787_ = FALSE;
-                               gboolean _tmp788_ = FALSE;
-                               _tmp782_ = context;
-                               _tmp783_ = vala_code_context_get_analyzer (_tmp782_);
-                               _tmp784_ = _tmp783_;
-                               _tmp785_ = vala_semantic_analyzer_get_current_method (_tmp784_);
-                               _tmp786_ = _tmp785_;
-                               _tmp787_ = vala_method_get_coroutine (_tmp786_);
-                               _tmp788_ = _tmp787_;
-                               _tmp776_ = !_tmp788_;
+                               ValaCodeContext* _tmp602_ = NULL;
+                               ValaSemanticAnalyzer* _tmp603_ = NULL;
+                               ValaSemanticAnalyzer* _tmp604_ = NULL;
+                               ValaMethod* _tmp605_ = NULL;
+                               ValaMethod* _tmp606_ = NULL;
+                               gboolean _tmp607_ = FALSE;
+                               gboolean _tmp608_ = FALSE;
+                               _tmp602_ = context;
+                               _tmp603_ = vala_code_context_get_analyzer (_tmp602_);
+                               _tmp604_ = _tmp603_;
+                               _tmp605_ = vala_semantic_analyzer_get_current_method (_tmp604_);
+                               _tmp606_ = _tmp605_;
+                               _tmp607_ = vala_method_get_coroutine (_tmp606_);
+                               _tmp608_ = _tmp607_;
+                               _tmp596_ = !_tmp608_;
                        }
-                       if (_tmp776_) {
-                               ValaSourceReference* _tmp789_ = NULL;
-                               ValaSourceReference* _tmp790_ = NULL;
+                       if (_tmp596_) {
+                               ValaSourceReference* _tmp609_ = NULL;
+                               ValaSourceReference* _tmp610_ = NULL;
                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                               _tmp789_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp790_ = _tmp789_;
-                               vala_report_error (_tmp790_, "yield expression not available outside async method");
+                               _tmp609_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp610_ = _tmp609_;
+                               vala_report_error (_tmp610_, "yield expression not available outside async method");
                        }
-                       _tmp791_ = context;
-                       _tmp792_ = vala_code_context_get_analyzer (_tmp791_);
-                       _tmp793_ = _tmp792_;
-                       _tmp794_ = vala_semantic_analyzer_get_current_method (_tmp793_);
-                       _tmp795_ = _tmp794_;
-                       _tmp796_ = vala_method_get_yield_count (_tmp795_);
-                       _tmp797_ = _tmp796_;
-                       vala_method_set_yield_count (_tmp795_, _tmp797_ + 1);
+                       _tmp611_ = context;
+                       _tmp612_ = vala_code_context_get_analyzer (_tmp611_);
+                       _tmp613_ = _tmp612_;
+                       _tmp614_ = vala_semantic_analyzer_get_current_method (_tmp613_);
+                       _tmp615_ = _tmp614_;
+                       _tmp616_ = vala_method_get_yield_count (_tmp615_);
+                       _tmp617_ = _tmp616_;
+                       vala_method_set_yield_count (_tmp615_, _tmp617_ + 1);
                }
-               _tmp801_ = m;
-               if (_tmp801_ != NULL) {
-                       ValaMethod* _tmp802_ = NULL;
-                       gboolean _tmp803_ = FALSE;
-                       gboolean _tmp804_ = FALSE;
-                       _tmp802_ = m;
-                       _tmp803_ = vala_method_get_coroutine (_tmp802_);
-                       _tmp804_ = _tmp803_;
-                       _tmp800_ = _tmp804_;
+               _tmp621_ = m;
+               if (_tmp621_ != NULL) {
+                       ValaMethod* _tmp622_ = NULL;
+                       gboolean _tmp623_ = FALSE;
+                       gboolean _tmp624_ = FALSE;
+                       _tmp622_ = m;
+                       _tmp623_ = vala_method_get_coroutine (_tmp622_);
+                       _tmp624_ = _tmp623_;
+                       _tmp620_ = _tmp624_;
                } else {
-                       _tmp800_ = FALSE;
+                       _tmp620_ = FALSE;
                }
-               if (_tmp800_) {
-                       gboolean _tmp805_ = FALSE;
-                       _tmp805_ = self->priv->_is_yield_expression;
-                       _tmp799_ = !_tmp805_;
+               if (_tmp620_) {
+                       gboolean _tmp625_ = FALSE;
+                       _tmp625_ = self->priv->_is_yield_expression;
+                       _tmp619_ = !_tmp625_;
                } else {
-                       _tmp799_ = FALSE;
+                       _tmp619_ = FALSE;
                }
-               if (_tmp799_) {
-                       ValaExpression* _tmp806_ = NULL;
-                       ValaExpression* _tmp807_ = NULL;
-                       const gchar* _tmp808_ = NULL;
-                       const gchar* _tmp809_ = NULL;
-                       _tmp806_ = vala_method_call_get_call (self);
-                       _tmp807_ = _tmp806_;
-                       _tmp808_ = vala_member_access_get_member_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp807_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
-                       _tmp809_ = _tmp808_;
-                       _tmp798_ = g_strcmp0 (_tmp809_, "end") != 0;
+               if (_tmp619_) {
+                       ValaExpression* _tmp626_ = NULL;
+                       ValaExpression* _tmp627_ = NULL;
+                       const gchar* _tmp628_ = NULL;
+                       const gchar* _tmp629_ = NULL;
+                       _tmp626_ = vala_method_call_get_call (self);
+                       _tmp627_ = _tmp626_;
+                       _tmp628_ = vala_member_access_get_member_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp627_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
+                       _tmp629_ = _tmp628_;
+                       _tmp618_ = g_strcmp0 (_tmp629_, "end") != 0;
                } else {
-                       _tmp798_ = FALSE;
+                       _tmp618_ = FALSE;
                }
-               if (_tmp798_) {
+               if (_tmp618_) {
                } else {
                        {
                                ValaList* _error_type_list = NULL;
-                               ValaMethod* _tmp810_ = NULL;
-                               ValaList* _tmp811_ = NULL;
+                               ValaMethod* _tmp630_ = NULL;
+                               ValaList* _tmp631_ = NULL;
                                gint _error_type_size = 0;
-                               ValaList* _tmp812_ = NULL;
-                               gint _tmp813_ = 0;
-                               gint _tmp814_ = 0;
+                               ValaList* _tmp632_ = NULL;
+                               gint _tmp633_ = 0;
+                               gint _tmp634_ = 0;
                                gint _error_type_index = 0;
-                               _tmp810_ = m;
-                               _tmp811_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp810_);
-                               _error_type_list = _tmp811_;
-                               _tmp812_ = _error_type_list;
-                               _tmp813_ = vala_collection_get_size ((ValaCollection*) _tmp812_);
-                               _tmp814_ = _tmp813_;
-                               _error_type_size = _tmp814_;
+                               _tmp630_ = m;
+                               _tmp631_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp630_);
+                               _error_type_list = _tmp631_;
+                               _tmp632_ = _error_type_list;
+                               _tmp633_ = vala_collection_get_size ((ValaCollection*) _tmp632_);
+                               _tmp634_ = _tmp633_;
+                               _error_type_size = _tmp634_;
                                _error_type_index = -1;
                                while (TRUE) {
-                                       gint _tmp815_ = 0;
-                                       gint _tmp816_ = 0;
-                                       gint _tmp817_ = 0;
+                                       gint _tmp635_ = 0;
+                                       gint _tmp636_ = 0;
+                                       gint _tmp637_ = 0;
                                        ValaDataType* error_type = NULL;
-                                       ValaList* _tmp818_ = NULL;
-                                       gint _tmp819_ = 0;
-                                       gpointer _tmp820_ = NULL;
+                                       ValaList* _tmp638_ = NULL;
+                                       gint _tmp639_ = 0;
+                                       gpointer _tmp640_ = NULL;
                                        ValaDataType* call_error_type = NULL;
-                                       ValaDataType* _tmp821_ = NULL;
-                                       ValaDataType* _tmp822_ = NULL;
-                                       ValaDataType* _tmp823_ = NULL;
-                                       ValaSourceReference* _tmp824_ = NULL;
-                                       ValaSourceReference* _tmp825_ = NULL;
-                                       ValaDataType* _tmp826_ = NULL;
-                                       _tmp815_ = _error_type_index;
-                                       _error_type_index = _tmp815_ + 1;
-                                       _tmp816_ = _error_type_index;
-                                       _tmp817_ = _error_type_size;
-                                       if (!(_tmp816_ < _tmp817_)) {
+                                       ValaDataType* _tmp641_ = NULL;
+                                       ValaDataType* _tmp642_ = NULL;
+                                       ValaDataType* _tmp643_ = NULL;
+                                       ValaSourceReference* _tmp644_ = NULL;
+                                       ValaSourceReference* _tmp645_ = NULL;
+                                       ValaDataType* _tmp646_ = NULL;
+                                       _tmp635_ = _error_type_index;
+                                       _error_type_index = _tmp635_ + 1;
+                                       _tmp636_ = _error_type_index;
+                                       _tmp637_ = _error_type_size;
+                                       if (!(_tmp636_ < _tmp637_)) {
                                                break;
                                        }
-                                       _tmp818_ = _error_type_list;
-                                       _tmp819_ = _error_type_index;
-                                       _tmp820_ = vala_list_get (_tmp818_, _tmp819_);
-                                       error_type = (ValaDataType*) _tmp820_;
+                                       _tmp638_ = _error_type_list;
+                                       _tmp639_ = _error_type_index;
+                                       _tmp640_ = vala_list_get (_tmp638_, _tmp639_);
+                                       error_type = (ValaDataType*) _tmp640_;
                                        may_throw = TRUE;
-                                       _tmp821_ = error_type;
-                                       _tmp822_ = vala_data_type_copy (_tmp821_);
-                                       call_error_type = _tmp822_;
-                                       _tmp823_ = call_error_type;
-                                       _tmp824_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                       _tmp825_ = _tmp824_;
-                                       vala_code_node_set_source_reference ((ValaCodeNode*) _tmp823_, _tmp825_);
-                                       _tmp826_ = call_error_type;
-                                       vala_code_node_add_error_type ((ValaCodeNode*) self, _tmp826_);
+                                       _tmp641_ = error_type;
+                                       _tmp642_ = vala_data_type_copy (_tmp641_);
+                                       call_error_type = _tmp642_;
+                                       _tmp643_ = call_error_type;
+                                       _tmp644_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                       _tmp645_ = _tmp644_;
+                                       vala_code_node_set_source_reference ((ValaCodeNode*) _tmp643_, _tmp645_);
+                                       _tmp646_ = call_error_type;
+                                       vala_code_node_add_error_type ((ValaCodeNode*) self, _tmp646_);
                                        _vala_code_node_unref0 (call_error_type);
                                        _vala_code_node_unref0 (error_type);
                                }
                                _vala_iterable_unref0 (_error_type_list);
                        }
                }
-               _tmp827_ = m;
-               _tmp828_ = vala_method_get_returns_floating_reference (_tmp827_);
-               _tmp829_ = _tmp828_;
-               if (_tmp829_) {
-                       ValaDataType* _tmp830_ = NULL;
-                       ValaDataType* _tmp831_ = NULL;
-                       _tmp830_ = vala_expression_get_value_type ((ValaExpression*) self);
-                       _tmp831_ = _tmp830_;
-                       vala_data_type_set_floating_reference (_tmp831_, TRUE);
+               _tmp647_ = m;
+               _tmp648_ = vala_method_get_returns_floating_reference (_tmp647_);
+               _tmp649_ = _tmp648_;
+               if (_tmp649_) {
+                       ValaDataType* _tmp650_ = NULL;
+                       ValaDataType* _tmp651_ = NULL;
+                       _tmp650_ = vala_expression_get_value_type ((ValaExpression*) self);
+                       _tmp651_ = _tmp650_;
+                       vala_data_type_set_floating_reference (_tmp651_, TRUE);
                }
-               _tmp832_ = m;
-               _tmp833_ = vala_method_get_returns_modified_pointer (_tmp832_);
-               _tmp834_ = _tmp833_;
-               if (_tmp834_) {
-                       ValaExpression* _tmp835_ = NULL;
-                       ValaExpression* _tmp836_ = NULL;
-                       ValaExpression* _tmp837_ = NULL;
-                       ValaExpression* _tmp838_ = NULL;
-                       _tmp835_ = vala_method_call_get_call (self);
-                       _tmp836_ = _tmp835_;
-                       _tmp837_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp836_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
-                       _tmp838_ = _tmp837_;
-                       vala_expression_set_lvalue (_tmp838_, TRUE);
+               _tmp652_ = m;
+               _tmp653_ = vala_method_get_returns_modified_pointer (_tmp652_);
+               _tmp654_ = _tmp653_;
+               if (_tmp654_) {
+                       ValaExpression* _tmp655_ = NULL;
+                       ValaExpression* _tmp656_ = NULL;
+                       ValaExpression* _tmp657_ = NULL;
+                       ValaExpression* _tmp658_ = NULL;
+                       _tmp655_ = vala_method_call_get_call (self);
+                       _tmp656_ = _tmp655_;
+                       _tmp657_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp656_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
+                       _tmp658_ = _tmp657_;
+                       vala_expression_set_lvalue (_tmp658_, TRUE);
                }
-               _tmp839_ = m;
-               _tmp840_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp839_);
-               _tmp841_ = _tmp840_;
-               _tmp842_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp841_, VALA_TYPE_DYNAMIC_SIGNAL) ? ((ValaDynamicSignal*) _tmp841_) : NULL);
-               dynamic_sig = _tmp842_;
-               _tmp844_ = dynamic_sig;
-               if (_tmp844_ != NULL) {
-                       ValaDynamicSignal* _tmp845_ = NULL;
-                       ValaExpression* _tmp846_ = NULL;
-                       ValaExpression* _tmp847_ = NULL;
-                       _tmp845_ = dynamic_sig;
-                       _tmp846_ = vala_dynamic_signal_get_handler (_tmp845_);
-                       _tmp847_ = _tmp846_;
-                       _tmp843_ = _tmp847_ != NULL;
+               _tmp659_ = m;
+               _tmp660_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp659_);
+               _tmp661_ = _tmp660_;
+               _tmp662_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp661_, VALA_TYPE_DYNAMIC_SIGNAL) ? ((ValaDynamicSignal*) _tmp661_) : NULL);
+               dynamic_sig = _tmp662_;
+               _tmp664_ = dynamic_sig;
+               if (_tmp664_ != NULL) {
+                       ValaDynamicSignal* _tmp665_ = NULL;
+                       ValaExpression* _tmp666_ = NULL;
+                       ValaExpression* _tmp667_ = NULL;
+                       _tmp665_ = dynamic_sig;
+                       _tmp666_ = vala_dynamic_signal_get_handler (_tmp665_);
+                       _tmp667_ = _tmp666_;
+                       _tmp663_ = _tmp667_ != NULL;
                } else {
-                       _tmp843_ = FALSE;
+                       _tmp663_ = FALSE;
                }
-               if (_tmp843_) {
-                       ValaDynamicSignal* _tmp848_ = NULL;
-                       ValaDynamicSignal* _tmp849_ = NULL;
-                       ValaExpression* _tmp850_ = NULL;
-                       ValaExpression* _tmp851_ = NULL;
-                       ValaDataType* _tmp852_ = NULL;
-                       ValaDataType* _tmp853_ = NULL;
-                       ValaDataType* _tmp854_ = NULL;
-                       ValaDataType* _tmp855_ = NULL;
-                       ValaDataType* _tmp856_ = NULL;
-                       ValaDataType* _tmp857_ = NULL;
+               if (_tmp663_) {
+                       ValaDynamicSignal* _tmp668_ = NULL;
+                       ValaDynamicSignal* _tmp669_ = NULL;
+                       ValaExpression* _tmp670_ = NULL;
+                       ValaExpression* _tmp671_ = NULL;
+                       ValaDataType* _tmp672_ = NULL;
+                       ValaDataType* _tmp673_ = NULL;
+                       ValaDataType* _tmp674_ = NULL;
+                       ValaDataType* _tmp675_ = NULL;
+                       ValaDataType* _tmp676_ = NULL;
+                       ValaDataType* _tmp677_ = NULL;
                        gboolean first = FALSE;
-                       ValaDynamicSignal* _tmp878_ = NULL;
-                       ValaExpression* _tmp879_ = NULL;
-                       ValaExpression* _tmp880_ = NULL;
-                       ValaDynamicSignal* _tmp881_ = NULL;
-                       ValaDynamicSignal* _tmp882_ = NULL;
-                       ValaSymbol* _tmp883_ = NULL;
-                       ValaSymbol* _tmp884_ = NULL;
-                       ValaObjectType* _tmp885_ = NULL;
-                       ValaObjectType* _tmp886_ = NULL;
-                       ValaDelegate* _tmp887_ = NULL;
-                       ValaDelegate* _tmp888_ = NULL;
-                       ValaDelegateType* _tmp889_ = NULL;
-                       ValaDelegateType* _tmp890_ = NULL;
-                       _tmp848_ = dynamic_sig;
-                       _tmp849_ = dynamic_sig;
-                       _tmp850_ = vala_dynamic_signal_get_handler (_tmp849_);
-                       _tmp851_ = _tmp850_;
-                       _tmp852_ = vala_expression_get_value_type (_tmp851_);
-                       _tmp853_ = _tmp852_;
-                       _tmp854_ = vala_data_type_get_return_type (_tmp853_);
-                       _tmp855_ = _tmp854_;
-                       _tmp856_ = vala_data_type_copy (_tmp855_);
-                       _tmp857_ = _tmp856_;
-                       vala_signal_set_return_type ((ValaSignal*) _tmp848_, _tmp857_);
-                       _vala_code_node_unref0 (_tmp857_);
-                       _vala_code_node_unref0 (_tmp855_);
+                       ValaDynamicSignal* _tmp698_ = NULL;
+                       ValaExpression* _tmp699_ = NULL;
+                       ValaExpression* _tmp700_ = NULL;
+                       ValaDynamicSignal* _tmp701_ = NULL;
+                       ValaDynamicSignal* _tmp702_ = NULL;
+                       ValaSymbol* _tmp703_ = NULL;
+                       ValaSymbol* _tmp704_ = NULL;
+                       ValaObjectType* _tmp705_ = NULL;
+                       ValaObjectType* _tmp706_ = NULL;
+                       ValaDelegate* _tmp707_ = NULL;
+                       ValaDelegate* _tmp708_ = NULL;
+                       ValaDelegateType* _tmp709_ = NULL;
+                       ValaDelegateType* _tmp710_ = NULL;
+                       _tmp668_ = dynamic_sig;
+                       _tmp669_ = dynamic_sig;
+                       _tmp670_ = vala_dynamic_signal_get_handler (_tmp669_);
+                       _tmp671_ = _tmp670_;
+                       _tmp672_ = vala_expression_get_value_type (_tmp671_);
+                       _tmp673_ = _tmp672_;
+                       _tmp674_ = vala_data_type_get_return_type (_tmp673_);
+                       _tmp675_ = _tmp674_;
+                       _tmp676_ = vala_data_type_copy (_tmp675_);
+                       _tmp677_ = _tmp676_;
+                       vala_signal_set_return_type ((ValaSignal*) _tmp668_, _tmp677_);
+                       _vala_code_node_unref0 (_tmp677_);
+                       _vala_code_node_unref0 (_tmp675_);
                        first = TRUE;
                        {
                                ValaList* _param_list = NULL;
-                               ValaDynamicSignal* _tmp858_ = NULL;
-                               ValaExpression* _tmp859_ = NULL;
-                               ValaExpression* _tmp860_ = NULL;
-                               ValaDataType* _tmp861_ = NULL;
-                               ValaDataType* _tmp862_ = NULL;
-                               ValaList* _tmp863_ = NULL;
+                               ValaDynamicSignal* _tmp678_ = NULL;
+                               ValaExpression* _tmp679_ = NULL;
+                               ValaExpression* _tmp680_ = NULL;
+                               ValaDataType* _tmp681_ = NULL;
+                               ValaDataType* _tmp682_ = NULL;
+                               ValaList* _tmp683_ = NULL;
                                gint _param_size = 0;
-                               ValaList* _tmp864_ = NULL;
-                               gint _tmp865_ = 0;
-                               gint _tmp866_ = 0;
+                               ValaList* _tmp684_ = NULL;
+                               gint _tmp685_ = 0;
+                               gint _tmp686_ = 0;
                                gint _param_index = 0;
-                               _tmp858_ = dynamic_sig;
-                               _tmp859_ = vala_dynamic_signal_get_handler (_tmp858_);
-                               _tmp860_ = _tmp859_;
-                               _tmp861_ = vala_expression_get_value_type (_tmp860_);
-                               _tmp862_ = _tmp861_;
-                               _tmp863_ = vala_data_type_get_parameters (_tmp862_);
-                               _param_list = _tmp863_;
-                               _tmp864_ = _param_list;
-                               _tmp865_ = vala_collection_get_size ((ValaCollection*) _tmp864_);
-                               _tmp866_ = _tmp865_;
-                               _param_size = _tmp866_;
+                               _tmp678_ = dynamic_sig;
+                               _tmp679_ = vala_dynamic_signal_get_handler (_tmp678_);
+                               _tmp680_ = _tmp679_;
+                               _tmp681_ = vala_expression_get_value_type (_tmp680_);
+                               _tmp682_ = _tmp681_;
+                               _tmp683_ = vala_data_type_get_parameters (_tmp682_);
+                               _param_list = _tmp683_;
+                               _tmp684_ = _param_list;
+                               _tmp685_ = vala_collection_get_size ((ValaCollection*) _tmp684_);
+                               _tmp686_ = _tmp685_;
+                               _param_size = _tmp686_;
                                _param_index = -1;
                                while (TRUE) {
-                                       gint _tmp867_ = 0;
-                                       gint _tmp868_ = 0;
-                                       gint _tmp869_ = 0;
+                                       gint _tmp687_ = 0;
+                                       gint _tmp688_ = 0;
+                                       gint _tmp689_ = 0;
                                        ValaParameter* param = NULL;
-                                       ValaList* _tmp870_ = NULL;
-                                       gint _tmp871_ = 0;
-                                       gpointer _tmp872_ = NULL;
-                                       gboolean _tmp873_ = FALSE;
-                                       _tmp867_ = _param_index;
-                                       _param_index = _tmp867_ + 1;
-                                       _tmp868_ = _param_index;
-                                       _tmp869_ = _param_size;
-                                       if (!(_tmp868_ < _tmp869_)) {
+                                       ValaList* _tmp690_ = NULL;
+                                       gint _tmp691_ = 0;
+                                       gpointer _tmp692_ = NULL;
+                                       gboolean _tmp693_ = FALSE;
+                                       _tmp687_ = _param_index;
+                                       _param_index = _tmp687_ + 1;
+                                       _tmp688_ = _param_index;
+                                       _tmp689_ = _param_size;
+                                       if (!(_tmp688_ < _tmp689_)) {
                                                break;
                                        }
-                                       _tmp870_ = _param_list;
-                                       _tmp871_ = _param_index;
-                                       _tmp872_ = vala_list_get (_tmp870_, _tmp871_);
-                                       param = (ValaParameter*) _tmp872_;
-                                       _tmp873_ = first;
-                                       if (_tmp873_) {
+                                       _tmp690_ = _param_list;
+                                       _tmp691_ = _param_index;
+                                       _tmp692_ = vala_list_get (_tmp690_, _tmp691_);
+                                       param = (ValaParameter*) _tmp692_;
+                                       _tmp693_ = first;
+                                       if (_tmp693_) {
                                                first = FALSE;
                                        } else {
-                                               ValaDynamicSignal* _tmp874_ = NULL;
-                                               ValaParameter* _tmp875_ = NULL;
-                                               ValaParameter* _tmp876_ = NULL;
-                                               ValaParameter* _tmp877_ = NULL;
-                                               _tmp874_ = dynamic_sig;
-                                               _tmp875_ = param;
-                                               _tmp876_ = vala_parameter_copy (_tmp875_);
-                                               _tmp877_ = _tmp876_;
-                                               vala_signal_add_parameter ((ValaSignal*) _tmp874_, _tmp877_);
-                                               _vala_code_node_unref0 (_tmp877_);
+                                               ValaDynamicSignal* _tmp694_ = NULL;
+                                               ValaParameter* _tmp695_ = NULL;
+                                               ValaParameter* _tmp696_ = NULL;
+                                               ValaParameter* _tmp697_ = NULL;
+                                               _tmp694_ = dynamic_sig;
+                                               _tmp695_ = param;
+                                               _tmp696_ = vala_parameter_copy (_tmp695_);
+                                               _tmp697_ = _tmp696_;
+                                               vala_signal_add_parameter ((ValaSignal*) _tmp694_, _tmp697_);
+                                               _vala_code_node_unref0 (_tmp697_);
                                        }
                                        _vala_code_node_unref0 (param);
                                }
                                _vala_iterable_unref0 (_param_list);
                        }
-                       _tmp878_ = dynamic_sig;
-                       _tmp879_ = vala_dynamic_signal_get_handler (_tmp878_);
-                       _tmp880_ = _tmp879_;
-                       _tmp881_ = dynamic_sig;
-                       _tmp882_ = dynamic_sig;
-                       _tmp883_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp882_);
-                       _tmp884_ = _tmp883_;
-                       _tmp885_ = vala_object_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp884_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
-                       _tmp886_ = _tmp885_;
-                       _tmp887_ = vala_signal_get_delegate ((ValaSignal*) _tmp881_, (ValaDataType*) _tmp886_, (ValaCodeNode*) self);
-                       _tmp888_ = _tmp887_;
-                       _tmp889_ = vala_delegate_type_new (_tmp888_);
-                       _tmp890_ = _tmp889_;
-                       vala_expression_set_target_type (_tmp880_, (ValaDataType*) _tmp890_);
-                       _vala_code_node_unref0 (_tmp890_);
-                       _vala_code_node_unref0 (_tmp888_);
-                       _vala_code_node_unref0 (_tmp886_);
+                       _tmp698_ = dynamic_sig;
+                       _tmp699_ = vala_dynamic_signal_get_handler (_tmp698_);
+                       _tmp700_ = _tmp699_;
+                       _tmp701_ = dynamic_sig;
+                       _tmp702_ = dynamic_sig;
+                       _tmp703_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp702_);
+                       _tmp704_ = _tmp703_;
+                       _tmp705_ = vala_object_type_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp704_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
+                       _tmp706_ = _tmp705_;
+                       _tmp707_ = vala_signal_get_delegate ((ValaSignal*) _tmp701_, (ValaDataType*) _tmp706_, (ValaCodeNode*) self);
+                       _tmp708_ = _tmp707_;
+                       _tmp709_ = vala_delegate_type_new (_tmp708_);
+                       _tmp710_ = _tmp709_;
+                       vala_expression_set_target_type (_tmp700_, (ValaDataType*) _tmp710_);
+                       _vala_code_node_unref0 (_tmp710_);
+                       _vala_code_node_unref0 (_tmp708_);
+                       _vala_code_node_unref0 (_tmp706_);
                }
-               _tmp892_ = m;
-               if (_tmp892_ != NULL) {
-                       ValaMethod* _tmp893_ = NULL;
-                       ValaList* _tmp894_ = NULL;
-                       ValaList* _tmp895_ = NULL;
-                       gint _tmp896_ = 0;
-                       gint _tmp897_ = 0;
-                       _tmp893_ = m;
-                       _tmp894_ = vala_method_get_type_parameters (_tmp893_);
-                       _tmp895_ = _tmp894_;
-                       _tmp896_ = vala_collection_get_size ((ValaCollection*) _tmp895_);
-                       _tmp897_ = _tmp896_;
-                       _tmp891_ = _tmp897_ > 0;
-                       _vala_iterable_unref0 (_tmp895_);
+               _tmp712_ = m;
+               if (_tmp712_ != NULL) {
+                       ValaMethod* _tmp713_ = NULL;
+                       ValaList* _tmp714_ = NULL;
+                       ValaList* _tmp715_ = NULL;
+                       gint _tmp716_ = 0;
+                       gint _tmp717_ = 0;
+                       _tmp713_ = m;
+                       _tmp714_ = vala_method_get_type_parameters (_tmp713_);
+                       _tmp715_ = _tmp714_;
+                       _tmp716_ = vala_collection_get_size ((ValaCollection*) _tmp715_);
+                       _tmp717_ = _tmp716_;
+                       _tmp711_ = _tmp717_ > 0;
+                       _vala_iterable_unref0 (_tmp715_);
                } else {
-                       _tmp891_ = FALSE;
+                       _tmp711_ = FALSE;
                }
-               if (_tmp891_) {
+               if (_tmp711_) {
                        ValaMemberAccess* ma = NULL;
-                       ValaExpression* _tmp898_ = NULL;
-                       ValaExpression* _tmp899_ = NULL;
-                       ValaMemberAccess* _tmp900_ = NULL;
-                       ValaMemberAccess* _tmp901_ = NULL;
-                       ValaList* _tmp902_ = NULL;
-                       ValaList* _tmp903_ = NULL;
-                       gint _tmp904_ = 0;
-                       gint _tmp905_ = 0;
-                       gboolean _tmp906_ = FALSE;
-                       _tmp898_ = vala_method_call_get_call (self);
-                       _tmp899_ = _tmp898_;
-                       _tmp900_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp899_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
-                       ma = _tmp900_;
-                       _tmp901_ = ma;
-                       _tmp902_ = vala_member_access_get_type_arguments (_tmp901_);
-                       _tmp903_ = _tmp902_;
-                       _tmp904_ = vala_collection_get_size ((ValaCollection*) _tmp903_);
-                       _tmp905_ = _tmp904_;
-                       _tmp906_ = _tmp905_ == 0;
-                       _vala_iterable_unref0 (_tmp903_);
-                       if (_tmp906_) {
-                               ValaList* _tmp995_ = NULL;
-                               ValaIterator* _tmp996_ = NULL;
-                               ValaDataType* _tmp1028_ = NULL;
-                               ValaDataType* _tmp1029_ = NULL;
-                               ValaDataType* _tmp1030_ = NULL;
-                               ValaExpression* _tmp1031_ = NULL;
-                               ValaExpression* _tmp1032_ = NULL;
-                               ValaDataType* _tmp1033_ = NULL;
-                               ValaDataType* _tmp1034_ = NULL;
+                       ValaExpression* _tmp718_ = NULL;
+                       ValaExpression* _tmp719_ = NULL;
+                       ValaMemberAccess* _tmp720_ = NULL;
+                       ValaMemberAccess* _tmp721_ = NULL;
+                       ValaList* _tmp722_ = NULL;
+                       ValaList* _tmp723_ = NULL;
+                       gint _tmp724_ = 0;
+                       gint _tmp725_ = 0;
+                       gboolean _tmp726_ = FALSE;
+                       _tmp718_ = vala_method_call_get_call (self);
+                       _tmp719_ = _tmp718_;
+                       _tmp720_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp719_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
+                       ma = _tmp720_;
+                       _tmp721_ = ma;
+                       _tmp722_ = vala_member_access_get_type_arguments (_tmp721_);
+                       _tmp723_ = _tmp722_;
+                       _tmp724_ = vala_collection_get_size ((ValaCollection*) _tmp723_);
+                       _tmp725_ = _tmp724_;
+                       _tmp726_ = _tmp725_ == 0;
+                       _vala_iterable_unref0 (_tmp723_);
+                       if (_tmp726_) {
+                               ValaList* _tmp815_ = NULL;
+                               ValaIterator* _tmp816_ = NULL;
+                               ValaDataType* _tmp848_ = NULL;
+                               ValaDataType* _tmp849_ = NULL;
+                               ValaDataType* _tmp850_ = NULL;
+                               ValaExpression* _tmp851_ = NULL;
+                               ValaExpression* _tmp852_ = NULL;
+                               ValaDataType* _tmp853_ = NULL;
+                               ValaDataType* _tmp854_ = NULL;
                                {
                                        ValaList* _type_param_list = NULL;
-                                       ValaMethod* _tmp907_ = NULL;
-                                       ValaList* _tmp908_ = NULL;
+                                       ValaMethod* _tmp727_ = NULL;
+                                       ValaList* _tmp728_ = NULL;
                                        gint _type_param_size = 0;
-                                       ValaList* _tmp909_ = NULL;
-                                       gint _tmp910_ = 0;
-                                       gint _tmp911_ = 0;
+                                       ValaList* _tmp729_ = NULL;
+                                       gint _tmp730_ = 0;
+                                       gint _tmp731_ = 0;
                                        gint _type_param_index = 0;
-                                       _tmp907_ = m;
-                                       _tmp908_ = vala_method_get_type_parameters (_tmp907_);
-                                       _type_param_list = _tmp908_;
-                                       _tmp909_ = _type_param_list;
-                                       _tmp910_ = vala_collection_get_size ((ValaCollection*) _tmp909_);
-                                       _tmp911_ = _tmp910_;
-                                       _type_param_size = _tmp911_;
+                                       _tmp727_ = m;
+                                       _tmp728_ = vala_method_get_type_parameters (_tmp727_);
+                                       _type_param_list = _tmp728_;
+                                       _tmp729_ = _type_param_list;
+                                       _tmp730_ = vala_collection_get_size ((ValaCollection*) _tmp729_);
+                                       _tmp731_ = _tmp730_;
+                                       _type_param_size = _tmp731_;
                                        _type_param_index = -1;
                                        while (TRUE) {
-                                               gint _tmp912_ = 0;
-                                               gint _tmp913_ = 0;
-                                               gint _tmp914_ = 0;
+                                               gint _tmp732_ = 0;
+                                               gint _tmp733_ = 0;
+                                               gint _tmp734_ = 0;
                                                ValaTypeParameter* type_param = NULL;
-                                               ValaList* _tmp915_ = NULL;
-                                               gint _tmp916_ = 0;
-                                               gpointer _tmp917_ = NULL;
+                                               ValaList* _tmp735_ = NULL;
+                                               gint _tmp736_ = 0;
+                                               gpointer _tmp737_ = NULL;
                                                ValaDataType* type_arg = NULL;
-                                               ValaList* _tmp918_ = NULL;
-                                               ValaIterator* _tmp919_ = NULL;
-                                               gboolean _tmp966_ = FALSE;
-                                               ValaDataType* _tmp967_ = NULL;
-                                               ValaDataType* _tmp984_ = NULL;
-                                               ValaMemberAccess* _tmp993_ = NULL;
-                                               ValaDataType* _tmp994_ = NULL;
-                                               _tmp912_ = _type_param_index;
-                                               _type_param_index = _tmp912_ + 1;
-                                               _tmp913_ = _type_param_index;
-                                               _tmp914_ = _type_param_size;
-                                               if (!(_tmp913_ < _tmp914_)) {
+                                               ValaList* _tmp738_ = NULL;
+                                               ValaIterator* _tmp739_ = NULL;
+                                               gboolean _tmp786_ = FALSE;
+                                               ValaDataType* _tmp787_ = NULL;
+                                               ValaDataType* _tmp804_ = NULL;
+                                               ValaMemberAccess* _tmp813_ = NULL;
+                                               ValaDataType* _tmp814_ = NULL;
+                                               _tmp732_ = _type_param_index;
+                                               _type_param_index = _tmp732_ + 1;
+                                               _tmp733_ = _type_param_index;
+                                               _tmp734_ = _type_param_size;
+                                               if (!(_tmp733_ < _tmp734_)) {
                                                        break;
                                                }
-                                               _tmp915_ = _type_param_list;
-                                               _tmp916_ = _type_param_index;
-                                               _tmp917_ = vala_list_get (_tmp915_, _tmp916_);
-                                               type_param = (ValaTypeParameter*) _tmp917_;
+                                               _tmp735_ = _type_param_list;
+                                               _tmp736_ = _type_param_index;
+                                               _tmp737_ = vala_list_get (_tmp735_, _tmp736_);
+                                               type_param = (ValaTypeParameter*) _tmp737_;
                                                type_arg = NULL;
-                                               _tmp918_ = args;
-                                               _tmp919_ = vala_iterable_iterator ((ValaIterable*) _tmp918_);
+                                               _tmp738_ = args;
+                                               _tmp739_ = vala_iterable_iterator ((ValaIterable*) _tmp738_);
                                                _vala_iterator_unref0 (arg_it);
-                                               arg_it = _tmp919_;
+                                               arg_it = _tmp739_;
                                                {
                                                        ValaList* _param_list = NULL;
-                                                       ValaList* _tmp920_ = NULL;
-                                                       ValaList* _tmp921_ = NULL;
+                                                       ValaList* _tmp740_ = NULL;
+                                                       ValaList* _tmp741_ = NULL;
                                                        gint _param_size = 0;
-                                                       ValaList* _tmp922_ = NULL;
-                                                       gint _tmp923_ = 0;
-                                                       gint _tmp924_ = 0;
+                                                       ValaList* _tmp742_ = NULL;
+                                                       gint _tmp743_ = 0;
+                                                       gint _tmp744_ = 0;
                                                        gint _param_index = 0;
-                                                       _tmp920_ = params;
-                                                       _tmp921_ = _vala_iterable_ref0 (_tmp920_);
-                                                       _param_list = _tmp921_;
-                                                       _tmp922_ = _param_list;
-                                                       _tmp923_ = vala_collection_get_size ((ValaCollection*) _tmp922_);
-                                                       _tmp924_ = _tmp923_;
-                                                       _param_size = _tmp924_;
+                                                       _tmp740_ = params;
+                                                       _tmp741_ = _vala_iterable_ref0 (_tmp740_);
+                                                       _param_list = _tmp741_;
+                                                       _tmp742_ = _param_list;
+                                                       _tmp743_ = vala_collection_get_size ((ValaCollection*) _tmp742_);
+                                                       _tmp744_ = _tmp743_;
+                                                       _param_size = _tmp744_;
                                                        _param_index = -1;
                                                        while (TRUE) {
-                                                               gint _tmp925_ = 0;
-                                                               gint _tmp926_ = 0;
-                                                               gint _tmp927_ = 0;
+                                                               gint _tmp745_ = 0;
+                                                               gint _tmp746_ = 0;
+                                                               gint _tmp747_ = 0;
                                                                ValaParameter* param = NULL;
-                                                               ValaList* _tmp928_ = NULL;
-                                                               gint _tmp929_ = 0;
-                                                               gpointer _tmp930_ = NULL;
-                                                               gboolean _tmp931_ = FALSE;
-                                                               ValaParameter* _tmp932_ = NULL;
-                                                               gboolean _tmp933_ = FALSE;
-                                                               gboolean _tmp934_ = FALSE;
-                                                               ValaIterator* _tmp938_ = NULL;
-                                                               gboolean _tmp939_ = FALSE;
-                                                               _tmp925_ = _param_index;
-                                                               _param_index = _tmp925_ + 1;
-                                                               _tmp926_ = _param_index;
-                                                               _tmp927_ = _param_size;
-                                                               if (!(_tmp926_ < _tmp927_)) {
+                                                               ValaList* _tmp748_ = NULL;
+                                                               gint _tmp749_ = 0;
+                                                               gpointer _tmp750_ = NULL;
+                                                               gboolean _tmp751_ = FALSE;
+                                                               ValaParameter* _tmp752_ = NULL;
+                                                               gboolean _tmp753_ = FALSE;
+                                                               gboolean _tmp754_ = FALSE;
+                                                               ValaIterator* _tmp758_ = NULL;
+                                                               gboolean _tmp759_ = FALSE;
+                                                               _tmp745_ = _param_index;
+                                                               _param_index = _tmp745_ + 1;
+                                                               _tmp746_ = _param_index;
+                                                               _tmp747_ = _param_size;
+                                                               if (!(_tmp746_ < _tmp747_)) {
                                                                        break;
                                                                }
-                                                               _tmp928_ = _param_list;
-                                                               _tmp929_ = _param_index;
-                                                               _tmp930_ = vala_list_get (_tmp928_, _tmp929_);
-                                                               param = (ValaParameter*) _tmp930_;
-                                                               _tmp932_ = param;
-                                                               _tmp933_ = vala_parameter_get_ellipsis (_tmp932_);
-                                                               _tmp934_ = _tmp933_;
-                                                               if (_tmp934_) {
-                                                                       _tmp931_ = TRUE;
+                                                               _tmp748_ = _param_list;
+                                                               _tmp749_ = _param_index;
+                                                               _tmp750_ = vala_list_get (_tmp748_, _tmp749_);
+                                                               param = (ValaParameter*) _tmp750_;
+                                                               _tmp752_ = param;
+                                                               _tmp753_ = vala_parameter_get_ellipsis (_tmp752_);
+                                                               _tmp754_ = _tmp753_;
+                                                               if (_tmp754_) {
+                                                                       _tmp751_ = TRUE;
                                                                } else {
-                                                                       ValaParameter* _tmp935_ = NULL;
-                                                                       gboolean _tmp936_ = FALSE;
-                                                                       gboolean _tmp937_ = FALSE;
-                                                                       _tmp935_ = param;
-                                                                       _tmp936_ = vala_parameter_get_params_array (_tmp935_);
-                                                                       _tmp937_ = _tmp936_;
-                                                                       _tmp931_ = _tmp937_;
+                                                                       ValaParameter* _tmp755_ = NULL;
+                                                                       gboolean _tmp756_ = FALSE;
+                                                                       gboolean _tmp757_ = FALSE;
+                                                                       _tmp755_ = param;
+                                                                       _tmp756_ = vala_parameter_get_params_array (_tmp755_);
+                                                                       _tmp757_ = _tmp756_;
+                                                                       _tmp751_ = _tmp757_;
                                                                }
-                                                               if (_tmp931_) {
+                                                               if (_tmp751_) {
                                                                        _vala_code_node_unref0 (param);
                                                                        break;
                                                                }
-                                                               _tmp938_ = arg_it;
-                                                               _tmp939_ = vala_iterator_next (_tmp938_);
-                                                               if (_tmp939_) {
+                                                               _tmp758_ = arg_it;
+                                                               _tmp759_ = vala_iterator_next (_tmp758_);
+                                                               if (_tmp759_) {
                                                                        ValaExpression* arg = NULL;
-                                                                       ValaIterator* _tmp940_ = NULL;
-                                                                       gpointer _tmp941_ = NULL;
+                                                                       ValaIterator* _tmp760_ = NULL;
+                                                                       gpointer _tmp761_ = NULL;
                                                                        ValaGenericType* generic_type = NULL;
-                                                                       ValaParameter* _tmp942_ = NULL;
-                                                                       ValaDataType* _tmp943_ = NULL;
-                                                                       ValaDataType* _tmp944_ = NULL;
-                                                                       ValaGenericType* _tmp945_ = NULL;
-                                                                       gboolean _tmp946_ = FALSE;
-                                                                       ValaGenericType* _tmp947_ = NULL;
-                                                                       ValaExpression* _tmp957_ = NULL;
-                                                                       ValaExpression* _tmp958_ = NULL;
-                                                                       ValaDataType* _tmp959_ = NULL;
-                                                                       ValaDataType* _tmp960_ = NULL;
-                                                                       ValaDataType* _tmp961_ = NULL;
-                                                                       ValaExpression* _tmp962_ = NULL;
-                                                                       ValaExpression* _tmp963_ = NULL;
-                                                                       ValaDataType* _tmp964_ = NULL;
-                                                                       ValaDataType* _tmp965_ = NULL;
-                                                                       _tmp940_ = arg_it;
-                                                                       _tmp941_ = vala_iterator_get (_tmp940_);
-                                                                       arg = (ValaExpression*) _tmp941_;
-                                                                       _tmp942_ = param;
-                                                                       _tmp943_ = vala_variable_get_variable_type ((ValaVariable*) _tmp942_);
-                                                                       _tmp944_ = _tmp943_;
-                                                                       _tmp945_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp944_, VALA_TYPE_GENERIC_TYPE) ? ((ValaGenericType*) _tmp944_) : NULL);
-                                                                       generic_type = _tmp945_;
-                                                                       _tmp947_ = generic_type;
-                                                                       if (_tmp947_ != NULL) {
-                                                                               ValaGenericType* _tmp948_ = NULL;
-                                                                               ValaTypeParameter* _tmp949_ = NULL;
-                                                                               ValaTypeParameter* _tmp950_ = NULL;
-                                                                               ValaTypeParameter* _tmp951_ = NULL;
-                                                                               _tmp948_ = generic_type;
-                                                                               _tmp949_ = vala_data_type_get_type_parameter ((ValaDataType*) _tmp948_);
-                                                                               _tmp950_ = _tmp949_;
-                                                                               _tmp951_ = type_param;
-                                                                               _tmp946_ = _tmp950_ == _tmp951_;
+                                                                       ValaParameter* _tmp762_ = NULL;
+                                                                       ValaDataType* _tmp763_ = NULL;
+                                                                       ValaDataType* _tmp764_ = NULL;
+                                                                       ValaGenericType* _tmp765_ = NULL;
+                                                                       gboolean _tmp766_ = FALSE;
+                                                                       ValaGenericType* _tmp767_ = NULL;
+                                                                       ValaExpression* _tmp777_ = NULL;
+                                                                       ValaExpression* _tmp778_ = NULL;
+                                                                       ValaDataType* _tmp779_ = NULL;
+                                                                       ValaDataType* _tmp780_ = NULL;
+                                                                       ValaDataType* _tmp781_ = NULL;
+                                                                       ValaExpression* _tmp782_ = NULL;
+                                                                       ValaExpression* _tmp783_ = NULL;
+                                                                       ValaDataType* _tmp784_ = NULL;
+                                                                       ValaDataType* _tmp785_ = NULL;
+                                                                       _tmp760_ = arg_it;
+                                                                       _tmp761_ = vala_iterator_get (_tmp760_);
+                                                                       arg = (ValaExpression*) _tmp761_;
+                                                                       _tmp762_ = param;
+                                                                       _tmp763_ = vala_variable_get_variable_type ((ValaVariable*) _tmp762_);
+                                                                       _tmp764_ = _tmp763_;
+                                                                       _tmp765_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp764_, VALA_TYPE_GENERIC_TYPE) ? ((ValaGenericType*) _tmp764_) : NULL);
+                                                                       generic_type = _tmp765_;
+                                                                       _tmp767_ = generic_type;
+                                                                       if (_tmp767_ != NULL) {
+                                                                               ValaGenericType* _tmp768_ = NULL;
+                                                                               ValaTypeParameter* _tmp769_ = NULL;
+                                                                               ValaTypeParameter* _tmp770_ = NULL;
+                                                                               ValaTypeParameter* _tmp771_ = NULL;
+                                                                               _tmp768_ = generic_type;
+                                                                               _tmp769_ = vala_data_type_get_type_parameter ((ValaDataType*) _tmp768_);
+                                                                               _tmp770_ = _tmp769_;
+                                                                               _tmp771_ = type_param;
+                                                                               _tmp766_ = _tmp770_ == _tmp771_;
                                                                        } else {
-                                                                               _tmp946_ = FALSE;
+                                                                               _tmp766_ = FALSE;
                                                                        }
-                                                                       if (_tmp946_) {
-                                                                               ValaExpression* _tmp952_ = NULL;
-                                                                               ValaDataType* _tmp953_ = NULL;
-                                                                               ValaDataType* _tmp954_ = NULL;
-                                                                               ValaDataType* _tmp955_ = NULL;
-                                                                               ValaDataType* _tmp956_ = NULL;
-                                                                               _tmp952_ = arg;
-                                                                               _tmp953_ = vala_expression_get_value_type (_tmp952_);
-                                                                               _tmp954_ = _tmp953_;
-                                                                               _tmp955_ = vala_data_type_copy (_tmp954_);
+                                                                       if (_tmp766_) {
+                                                                               ValaExpression* _tmp772_ = NULL;
+                                                                               ValaDataType* _tmp773_ = NULL;
+                                                                               ValaDataType* _tmp774_ = NULL;
+                                                                               ValaDataType* _tmp775_ = NULL;
+                                                                               ValaDataType* _tmp776_ = NULL;
+                                                                               _tmp772_ = arg;
+                                                                               _tmp773_ = vala_expression_get_value_type (_tmp772_);
+                                                                               _tmp774_ = _tmp773_;
+                                                                               _tmp775_ = vala_data_type_copy (_tmp774_);
                                                                                _vala_code_node_unref0 (type_arg);
-                                                                               type_arg = _tmp955_;
-                                                                               _tmp956_ = type_arg;
-                                                                               vala_data_type_set_value_owned (_tmp956_, TRUE);
+                                                                               type_arg = _tmp775_;
+                                                                               _tmp776_ = type_arg;
+                                                                               vala_data_type_set_value_owned (_tmp776_, TRUE);
                                                                                _vala_code_node_unref0 (generic_type);
                                                                                _vala_code_node_unref0 (arg);
                                                                                _vala_code_node_unref0 (param);
                                                                                break;
                                                                        }
-                                                                       _tmp957_ = arg;
-                                                                       _tmp958_ = arg;
-                                                                       _tmp959_ = vala_expression_get_formal_target_type (_tmp958_);
-                                                                       _tmp960_ = _tmp959_;
-                                                                       _tmp961_ = target_object_type;
-                                                                       _tmp962_ = vala_method_call_get_call (self);
-                                                                       _tmp963_ = _tmp962_;
-                                                                       _tmp964_ = vala_data_type_get_actual_type (_tmp960_, _tmp961_, G_TYPE_CHECK_INSTANCE_TYPE (_tmp963_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp963_) : NULL, (ValaCodeNode*) self);
-                                                                       _tmp965_ = _tmp964_;
-                                                                       vala_expression_set_target_type (_tmp957_, _tmp965_);
-                                                                       _vala_code_node_unref0 (_tmp965_);
+                                                                       _tmp777_ = arg;
+                                                                       _tmp778_ = arg;
+                                                                       _tmp779_ = vala_expression_get_formal_target_type (_tmp778_);
+                                                                       _tmp780_ = _tmp779_;
+                                                                       _tmp781_ = target_object_type;
+                                                                       _tmp782_ = vala_method_call_get_call (self);
+                                                                       _tmp783_ = _tmp782_;
+                                                                       _tmp784_ = vala_data_type_get_actual_type (_tmp780_, _tmp781_, G_TYPE_CHECK_INSTANCE_TYPE (_tmp783_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp783_) : NULL, (ValaCodeNode*) self);
+                                                                       _tmp785_ = _tmp784_;
+                                                                       vala_expression_set_target_type (_tmp777_, _tmp785_);
+                                                                       _vala_code_node_unref0 (_tmp785_);
                                                                        _vala_code_node_unref0 (generic_type);
                                                                        _vala_code_node_unref0 (arg);
                                                                }
@@ -5019,80 +4385,80 @@ static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext
                                                        }
                                                        _vala_iterable_unref0 (_param_list);
                                                }
-                                               _tmp967_ = type_arg;
-                                               if (_tmp967_ == NULL) {
-                                                       ValaDataType* _tmp968_ = NULL;
-                                                       ValaDataType* _tmp969_ = NULL;
-                                                       _tmp968_ = vala_expression_get_target_type ((ValaExpression*) self);
-                                                       _tmp969_ = _tmp968_;
-                                                       _tmp966_ = _tmp969_ != NULL;
+                                               _tmp787_ = type_arg;
+                                               if (_tmp787_ == NULL) {
+                                                       ValaDataType* _tmp788_ = NULL;
+                                                       ValaDataType* _tmp789_ = NULL;
+                                                       _tmp788_ = vala_expression_get_target_type ((ValaExpression*) self);
+                                                       _tmp789_ = _tmp788_;
+                                                       _tmp786_ = _tmp789_ != NULL;
                                                } else {
-                                                       _tmp966_ = FALSE;
+                                                       _tmp786_ = FALSE;
                                                }
-                                               if (_tmp966_) {
+                                               if (_tmp786_) {
                                                        ValaGenericType* generic_type = NULL;
-                                                       ValaMethod* _tmp970_ = NULL;
-                                                       ValaDataType* _tmp971_ = NULL;
-                                                       ValaDataType* _tmp972_ = NULL;
-                                                       ValaGenericType* _tmp973_ = NULL;
-                                                       gboolean _tmp974_ = FALSE;
-                                                       ValaGenericType* _tmp975_ = NULL;
-                                                       _tmp970_ = m;
-                                                       _tmp971_ = vala_method_get_return_type (_tmp970_);
-                                                       _tmp972_ = _tmp971_;
-                                                       _tmp973_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp972_, VALA_TYPE_GENERIC_TYPE) ? ((ValaGenericType*) _tmp972_) : NULL);
-                                                       generic_type = _tmp973_;
-                                                       _tmp975_ = generic_type;
-                                                       if (_tmp975_ != NULL) {
-                                                               ValaGenericType* _tmp976_ = NULL;
-                                                               ValaTypeParameter* _tmp977_ = NULL;
-                                                               ValaTypeParameter* _tmp978_ = NULL;
-                                                               ValaTypeParameter* _tmp979_ = NULL;
-                                                               _tmp976_ = generic_type;
-                                                               _tmp977_ = vala_data_type_get_type_parameter ((ValaDataType*) _tmp976_);
-                                                               _tmp978_ = _tmp977_;
-                                                               _tmp979_ = type_param;
-                                                               _tmp974_ = _tmp978_ == _tmp979_;
+                                                       ValaMethod* _tmp790_ = NULL;
+                                                       ValaDataType* _tmp791_ = NULL;
+                                                       ValaDataType* _tmp792_ = NULL;
+                                                       ValaGenericType* _tmp793_ = NULL;
+                                                       gboolean _tmp794_ = FALSE;
+                                                       ValaGenericType* _tmp795_ = NULL;
+                                                       _tmp790_ = m;
+                                                       _tmp791_ = vala_method_get_return_type (_tmp790_);
+                                                       _tmp792_ = _tmp791_;
+                                                       _tmp793_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp792_, VALA_TYPE_GENERIC_TYPE) ? ((ValaGenericType*) _tmp792_) : NULL);
+                                                       generic_type = _tmp793_;
+                                                       _tmp795_ = generic_type;
+                                                       if (_tmp795_ != NULL) {
+                                                               ValaGenericType* _tmp796_ = NULL;
+                                                               ValaTypeParameter* _tmp797_ = NULL;
+                                                               ValaTypeParameter* _tmp798_ = NULL;
+                                                               ValaTypeParameter* _tmp799_ = NULL;
+                                                               _tmp796_ = generic_type;
+                                                               _tmp797_ = vala_data_type_get_type_parameter ((ValaDataType*) _tmp796_);
+                                                               _tmp798_ = _tmp797_;
+                                                               _tmp799_ = type_param;
+                                                               _tmp794_ = _tmp798_ == _tmp799_;
                                                        } else {
-                                                               _tmp974_ = FALSE;
+                                                               _tmp794_ = FALSE;
                                                        }
-                                                       if (_tmp974_) {
-                                                               ValaDataType* _tmp980_ = NULL;
-                                                               ValaDataType* _tmp981_ = NULL;
-                                                               ValaDataType* _tmp982_ = NULL;
-                                                               ValaDataType* _tmp983_ = NULL;
-                                                               _tmp980_ = vala_expression_get_target_type ((ValaExpression*) self);
-                                                               _tmp981_ = _tmp980_;
-                                                               _tmp982_ = vala_data_type_copy (_tmp981_);
+                                                       if (_tmp794_) {
+                                                               ValaDataType* _tmp800_ = NULL;
+                                                               ValaDataType* _tmp801_ = NULL;
+                                                               ValaDataType* _tmp802_ = NULL;
+                                                               ValaDataType* _tmp803_ = NULL;
+                                                               _tmp800_ = vala_expression_get_target_type ((ValaExpression*) self);
+                                                               _tmp801_ = _tmp800_;
+                                                               _tmp802_ = vala_data_type_copy (_tmp801_);
                                                                _vala_code_node_unref0 (type_arg);
-                                                               type_arg = _tmp982_;
-                                                               _tmp983_ = type_arg;
-                                                               vala_data_type_set_value_owned (_tmp983_, TRUE);
+                                                               type_arg = _tmp802_;
+                                                               _tmp803_ = type_arg;
+                                                               vala_data_type_set_value_owned (_tmp803_, TRUE);
                                                        }
                                                        _vala_code_node_unref0 (generic_type);
                                                }
-                                               _tmp984_ = type_arg;
-                                               if (_tmp984_ == NULL) {
-                                                       ValaMemberAccess* _tmp985_ = NULL;
-                                                       ValaSourceReference* _tmp986_ = NULL;
-                                                       ValaSourceReference* _tmp987_ = NULL;
-                                                       ValaTypeParameter* _tmp988_ = NULL;
-                                                       gchar* _tmp989_ = NULL;
-                                                       gchar* _tmp990_ = NULL;
-                                                       gchar* _tmp991_ = NULL;
-                                                       gchar* _tmp992_ = NULL;
+                                               _tmp804_ = type_arg;
+                                               if (_tmp804_ == NULL) {
+                                                       ValaMemberAccess* _tmp805_ = NULL;
+                                                       ValaSourceReference* _tmp806_ = NULL;
+                                                       ValaSourceReference* _tmp807_ = NULL;
+                                                       ValaTypeParameter* _tmp808_ = NULL;
+                                                       gchar* _tmp809_ = NULL;
+                                                       gchar* _tmp810_ = NULL;
+                                                       gchar* _tmp811_ = NULL;
+                                                       gchar* _tmp812_ = NULL;
                                                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                                                       _tmp985_ = ma;
-                                                       _tmp986_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp985_);
-                                                       _tmp987_ = _tmp986_;
-                                                       _tmp988_ = type_param;
-                                                       _tmp989_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp988_);
-                                                       _tmp990_ = _tmp989_;
-                                                       _tmp991_ = g_strdup_printf ("cannot infer generic type argument for type parameter `%s'", _tmp990_);
-                                                       _tmp992_ = _tmp991_;
-                                                       vala_report_error (_tmp987_, _tmp992_);
-                                                       _g_free0 (_tmp992_);
-                                                       _g_free0 (_tmp990_);
+                                                       _tmp805_ = ma;
+                                                       _tmp806_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp805_);
+                                                       _tmp807_ = _tmp806_;
+                                                       _tmp808_ = type_param;
+                                                       _tmp809_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp808_);
+                                                       _tmp810_ = _tmp809_;
+                                                       _tmp811_ = g_strdup_printf ("cannot infer generic type argument for type parameter `%s'", _tmp810_);
+                                                       _tmp812_ = _tmp811_;
+                                                       vala_report_error (_tmp807_, _tmp812_);
+                                                       _g_free0 (_tmp812_);
+                                                       _g_free0 (_tmp810_);
                                                        result = FALSE;
                                                        _vala_code_node_unref0 (type_arg);
                                                        _vala_code_node_unref0 (type_param);
@@ -5110,204 +4476,204 @@ static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext
                                                        _vala_code_node_unref0 (target_object_type);
                                                        return result;
                                                }
-                                               _tmp993_ = ma;
-                                               _tmp994_ = type_arg;
-                                               vala_member_access_add_type_argument (_tmp993_, _tmp994_);
+                                               _tmp813_ = ma;
+                                               _tmp814_ = type_arg;
+                                               vala_member_access_add_type_argument (_tmp813_, _tmp814_);
                                                _vala_code_node_unref0 (type_arg);
                                                _vala_code_node_unref0 (type_param);
                                        }
                                        _vala_iterable_unref0 (_type_param_list);
                                }
-                               _tmp995_ = args;
-                               _tmp996_ = vala_iterable_iterator ((ValaIterable*) _tmp995_);
+                               _tmp815_ = args;
+                               _tmp816_ = vala_iterable_iterator ((ValaIterable*) _tmp815_);
                                _vala_iterator_unref0 (arg_it);
-                               arg_it = _tmp996_;
+                               arg_it = _tmp816_;
                                {
                                        ValaList* _param_list = NULL;
-                                       ValaList* _tmp997_ = NULL;
-                                       ValaList* _tmp998_ = NULL;
+                                       ValaList* _tmp817_ = NULL;
+                                       ValaList* _tmp818_ = NULL;
                                        gint _param_size = 0;
-                                       ValaList* _tmp999_ = NULL;
-                                       gint _tmp1000_ = 0;
-                                       gint _tmp1001_ = 0;
+                                       ValaList* _tmp819_ = NULL;
+                                       gint _tmp820_ = 0;
+                                       gint _tmp821_ = 0;
                                        gint _param_index = 0;
-                                       _tmp997_ = params;
-                                       _tmp998_ = _vala_iterable_ref0 (_tmp997_);
-                                       _param_list = _tmp998_;
-                                       _tmp999_ = _param_list;
-                                       _tmp1000_ = vala_collection_get_size ((ValaCollection*) _tmp999_);
-                                       _tmp1001_ = _tmp1000_;
-                                       _param_size = _tmp1001_;
+                                       _tmp817_ = params;
+                                       _tmp818_ = _vala_iterable_ref0 (_tmp817_);
+                                       _param_list = _tmp818_;
+                                       _tmp819_ = _param_list;
+                                       _tmp820_ = vala_collection_get_size ((ValaCollection*) _tmp819_);
+                                       _tmp821_ = _tmp820_;
+                                       _param_size = _tmp821_;
                                        _param_index = -1;
                                        while (TRUE) {
-                                               gint _tmp1002_ = 0;
-                                               gint _tmp1003_ = 0;
-                                               gint _tmp1004_ = 0;
+                                               gint _tmp822_ = 0;
+                                               gint _tmp823_ = 0;
+                                               gint _tmp824_ = 0;
                                                ValaParameter* param = NULL;
-                                               ValaList* _tmp1005_ = NULL;
-                                               gint _tmp1006_ = 0;
-                                               gpointer _tmp1007_ = NULL;
-                                               gboolean _tmp1008_ = FALSE;
-                                               ValaParameter* _tmp1009_ = NULL;
-                                               gboolean _tmp1010_ = FALSE;
-                                               gboolean _tmp1011_ = FALSE;
-                                               ValaIterator* _tmp1015_ = NULL;
-                                               gboolean _tmp1016_ = FALSE;
-                                               _tmp1002_ = _param_index;
-                                               _param_index = _tmp1002_ + 1;
-                                               _tmp1003_ = _param_index;
-                                               _tmp1004_ = _param_size;
-                                               if (!(_tmp1003_ < _tmp1004_)) {
+                                               ValaList* _tmp825_ = NULL;
+                                               gint _tmp826_ = 0;
+                                               gpointer _tmp827_ = NULL;
+                                               gboolean _tmp828_ = FALSE;
+                                               ValaParameter* _tmp829_ = NULL;
+                                               gboolean _tmp830_ = FALSE;
+                                               gboolean _tmp831_ = FALSE;
+                                               ValaIterator* _tmp835_ = NULL;
+                                               gboolean _tmp836_ = FALSE;
+                                               _tmp822_ = _param_index;
+                                               _param_index = _tmp822_ + 1;
+                                               _tmp823_ = _param_index;
+                                               _tmp824_ = _param_size;
+                                               if (!(_tmp823_ < _tmp824_)) {
                                                        break;
                                                }
-                                               _tmp1005_ = _param_list;
-                                               _tmp1006_ = _param_index;
-                                               _tmp1007_ = vala_list_get (_tmp1005_, _tmp1006_);
-                                               param = (ValaParameter*) _tmp1007_;
-                                               _tmp1009_ = param;
-                                               _tmp1010_ = vala_parameter_get_ellipsis (_tmp1009_);
-                                               _tmp1011_ = _tmp1010_;
-                                               if (_tmp1011_) {
-                                                       _tmp1008_ = TRUE;
+                                               _tmp825_ = _param_list;
+                                               _tmp826_ = _param_index;
+                                               _tmp827_ = vala_list_get (_tmp825_, _tmp826_);
+                                               param = (ValaParameter*) _tmp827_;
+                                               _tmp829_ = param;
+                                               _tmp830_ = vala_parameter_get_ellipsis (_tmp829_);
+                                               _tmp831_ = _tmp830_;
+                                               if (_tmp831_) {
+                                                       _tmp828_ = TRUE;
                                                } else {
-                                                       ValaParameter* _tmp1012_ = NULL;
-                                                       gboolean _tmp1013_ = FALSE;
-                                                       gboolean _tmp1014_ = FALSE;
-                                                       _tmp1012_ = param;
-                                                       _tmp1013_ = vala_parameter_get_params_array (_tmp1012_);
-                                                       _tmp1014_ = _tmp1013_;
-                                                       _tmp1008_ = _tmp1014_;
+                                                       ValaParameter* _tmp832_ = NULL;
+                                                       gboolean _tmp833_ = FALSE;
+                                                       gboolean _tmp834_ = FALSE;
+                                                       _tmp832_ = param;
+                                                       _tmp833_ = vala_parameter_get_params_array (_tmp832_);
+                                                       _tmp834_ = _tmp833_;
+                                                       _tmp828_ = _tmp834_;
                                                }
-                                               if (_tmp1008_) {
+                                               if (_tmp828_) {
                                                        _vala_code_node_unref0 (param);
                                                        break;
                                                }
-                                               _tmp1015_ = arg_it;
-                                               _tmp1016_ = vala_iterator_next (_tmp1015_);
-                                               if (_tmp1016_) {
+                                               _tmp835_ = arg_it;
+                                               _tmp836_ = vala_iterator_next (_tmp835_);
+                                               if (_tmp836_) {
                                                        ValaExpression* arg = NULL;
-                                                       ValaIterator* _tmp1017_ = NULL;
-                                                       gpointer _tmp1018_ = NULL;
-                                                       ValaExpression* _tmp1019_ = NULL;
-                                                       ValaExpression* _tmp1020_ = NULL;
-                                                       ValaDataType* _tmp1021_ = NULL;
-                                                       ValaDataType* _tmp1022_ = NULL;
-                                                       ValaDataType* _tmp1023_ = NULL;
-                                                       ValaExpression* _tmp1024_ = NULL;
-                                                       ValaExpression* _tmp1025_ = NULL;
-                                                       ValaDataType* _tmp1026_ = NULL;
-                                                       ValaDataType* _tmp1027_ = NULL;
-                                                       _tmp1017_ = arg_it;
-                                                       _tmp1018_ = vala_iterator_get (_tmp1017_);
-                                                       arg = (ValaExpression*) _tmp1018_;
-                                                       _tmp1019_ = arg;
-                                                       _tmp1020_ = arg;
-                                                       _tmp1021_ = vala_expression_get_formal_target_type (_tmp1020_);
-                                                       _tmp1022_ = _tmp1021_;
-                                                       _tmp1023_ = target_object_type;
-                                                       _tmp1024_ = vala_method_call_get_call (self);
-                                                       _tmp1025_ = _tmp1024_;
-                                                       _tmp1026_ = vala_data_type_get_actual_type (_tmp1022_, _tmp1023_, G_TYPE_CHECK_INSTANCE_TYPE (_tmp1025_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp1025_) : NULL, (ValaCodeNode*) self);
-                                                       _tmp1027_ = _tmp1026_;
-                                                       vala_expression_set_target_type (_tmp1019_, _tmp1027_);
-                                                       _vala_code_node_unref0 (_tmp1027_);
+                                                       ValaIterator* _tmp837_ = NULL;
+                                                       gpointer _tmp838_ = NULL;
+                                                       ValaExpression* _tmp839_ = NULL;
+                                                       ValaExpression* _tmp840_ = NULL;
+                                                       ValaDataType* _tmp841_ = NULL;
+                                                       ValaDataType* _tmp842_ = NULL;
+                                                       ValaDataType* _tmp843_ = NULL;
+                                                       ValaExpression* _tmp844_ = NULL;
+                                                       ValaExpression* _tmp845_ = NULL;
+                                                       ValaDataType* _tmp846_ = NULL;
+                                                       ValaDataType* _tmp847_ = NULL;
+                                                       _tmp837_ = arg_it;
+                                                       _tmp838_ = vala_iterator_get (_tmp837_);
+                                                       arg = (ValaExpression*) _tmp838_;
+                                                       _tmp839_ = arg;
+                                                       _tmp840_ = arg;
+                                                       _tmp841_ = vala_expression_get_formal_target_type (_tmp840_);
+                                                       _tmp842_ = _tmp841_;
+                                                       _tmp843_ = target_object_type;
+                                                       _tmp844_ = vala_method_call_get_call (self);
+                                                       _tmp845_ = _tmp844_;
+                                                       _tmp846_ = vala_data_type_get_actual_type (_tmp842_, _tmp843_, G_TYPE_CHECK_INSTANCE_TYPE (_tmp845_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp845_) : NULL, (ValaCodeNode*) self);
+                                                       _tmp847_ = _tmp846_;
+                                                       vala_expression_set_target_type (_tmp839_, _tmp847_);
+                                                       _vala_code_node_unref0 (_tmp847_);
                                                        _vala_code_node_unref0 (arg);
                                                }
                                                _vala_code_node_unref0 (param);
                                        }
                                        _vala_iterable_unref0 (_param_list);
                                }
-                               _tmp1028_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
-                               _tmp1029_ = _tmp1028_;
-                               _tmp1030_ = target_object_type;
-                               _tmp1031_ = vala_method_call_get_call (self);
-                               _tmp1032_ = _tmp1031_;
-                               _tmp1033_ = vala_data_type_get_actual_type (_tmp1029_, _tmp1030_, G_TYPE_CHECK_INSTANCE_TYPE (_tmp1032_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp1032_) : NULL, (ValaCodeNode*) self);
-                               _tmp1034_ = _tmp1033_;
-                               vala_expression_set_value_type ((ValaExpression*) self, _tmp1034_);
-                               _vala_code_node_unref0 (_tmp1034_);
+                               _tmp848_ = vala_expression_get_formal_value_type ((ValaExpression*) self);
+                               _tmp849_ = _tmp848_;
+                               _tmp850_ = target_object_type;
+                               _tmp851_ = vala_method_call_get_call (self);
+                               _tmp852_ = _tmp851_;
+                               _tmp853_ = vala_data_type_get_actual_type (_tmp849_, _tmp850_, G_TYPE_CHECK_INSTANCE_TYPE (_tmp852_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp852_) : NULL, (ValaCodeNode*) self);
+                               _tmp854_ = _tmp853_;
+                               vala_expression_set_value_type ((ValaExpression*) self, _tmp854_);
+                               _vala_code_node_unref0 (_tmp854_);
                        }
                        _vala_code_node_unref0 (ma);
                }
                _vala_code_node_unref0 (dynamic_sig);
                _vala_code_node_unref0 (m);
        } else {
-               ValaDataType* _tmp1035_ = NULL;
-               _tmp1035_ = mtype;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1035_, VALA_TYPE_OBJECT_TYPE)) {
+               ValaDataType* _tmp855_ = NULL;
+               _tmp855_ = mtype;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp855_, VALA_TYPE_OBJECT_TYPE)) {
                        ValaClass* cl = NULL;
-                       ValaDataType* _tmp1036_ = NULL;
-                       ValaObjectTypeSymbol* _tmp1037_ = NULL;
-                       ValaObjectTypeSymbol* _tmp1038_ = NULL;
-                       ValaClass* _tmp1039_ = NULL;
+                       ValaDataType* _tmp856_ = NULL;
+                       ValaObjectTypeSymbol* _tmp857_ = NULL;
+                       ValaObjectTypeSymbol* _tmp858_ = NULL;
+                       ValaClass* _tmp859_ = NULL;
                        ValaCreationMethod* m = NULL;
-                       ValaClass* _tmp1040_ = NULL;
-                       ValaCreationMethod* _tmp1041_ = NULL;
-                       ValaCreationMethod* _tmp1042_ = NULL;
-                       ValaCreationMethod* _tmp1043_ = NULL;
-                       _tmp1036_ = mtype;
-                       _tmp1037_ = vala_object_type_get_type_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp1036_, VALA_TYPE_OBJECT_TYPE, ValaObjectType));
-                       _tmp1038_ = _tmp1037_;
-                       _tmp1039_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1038_, VALA_TYPE_CLASS, ValaClass));
-                       cl = _tmp1039_;
-                       _tmp1040_ = cl;
-                       _tmp1041_ = vala_class_get_default_construction_method (_tmp1040_);
-                       _tmp1042_ = _tmp1041_;
-                       _tmp1043_ = _vala_code_node_ref0 (_tmp1042_);
-                       m = _tmp1043_;
+                       ValaClass* _tmp860_ = NULL;
+                       ValaCreationMethod* _tmp861_ = NULL;
+                       ValaCreationMethod* _tmp862_ = NULL;
+                       ValaCreationMethod* _tmp863_ = NULL;
+                       _tmp856_ = mtype;
+                       _tmp857_ = vala_object_type_get_type_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp856_, VALA_TYPE_OBJECT_TYPE, ValaObjectType));
+                       _tmp858_ = _tmp857_;
+                       _tmp859_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp858_, VALA_TYPE_CLASS, ValaClass));
+                       cl = _tmp859_;
+                       _tmp860_ = cl;
+                       _tmp861_ = vala_class_get_default_construction_method (_tmp860_);
+                       _tmp862_ = _tmp861_;
+                       _tmp863_ = _vala_code_node_ref0 (_tmp862_);
+                       m = _tmp863_;
                        {
                                ValaList* _error_type_list = NULL;
-                               ValaCreationMethod* _tmp1044_ = NULL;
-                               ValaList* _tmp1045_ = NULL;
+                               ValaCreationMethod* _tmp864_ = NULL;
+                               ValaList* _tmp865_ = NULL;
                                gint _error_type_size = 0;
-                               ValaList* _tmp1046_ = NULL;
-                               gint _tmp1047_ = 0;
-                               gint _tmp1048_ = 0;
+                               ValaList* _tmp866_ = NULL;
+                               gint _tmp867_ = 0;
+                               gint _tmp868_ = 0;
                                gint _error_type_index = 0;
-                               _tmp1044_ = m;
-                               _tmp1045_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp1044_);
-                               _error_type_list = _tmp1045_;
-                               _tmp1046_ = _error_type_list;
-                               _tmp1047_ = vala_collection_get_size ((ValaCollection*) _tmp1046_);
-                               _tmp1048_ = _tmp1047_;
-                               _error_type_size = _tmp1048_;
+                               _tmp864_ = m;
+                               _tmp865_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp864_);
+                               _error_type_list = _tmp865_;
+                               _tmp866_ = _error_type_list;
+                               _tmp867_ = vala_collection_get_size ((ValaCollection*) _tmp866_);
+                               _tmp868_ = _tmp867_;
+                               _error_type_size = _tmp868_;
                                _error_type_index = -1;
                                while (TRUE) {
-                                       gint _tmp1049_ = 0;
-                                       gint _tmp1050_ = 0;
-                                       gint _tmp1051_ = 0;
+                                       gint _tmp869_ = 0;
+                                       gint _tmp870_ = 0;
+                                       gint _tmp871_ = 0;
                                        ValaDataType* error_type = NULL;
-                                       ValaList* _tmp1052_ = NULL;
-                                       gint _tmp1053_ = 0;
-                                       gpointer _tmp1054_ = NULL;
+                                       ValaList* _tmp872_ = NULL;
+                                       gint _tmp873_ = 0;
+                                       gpointer _tmp874_ = NULL;
                                        ValaDataType* call_error_type = NULL;
-                                       ValaDataType* _tmp1055_ = NULL;
-                                       ValaDataType* _tmp1056_ = NULL;
-                                       ValaDataType* _tmp1057_ = NULL;
-                                       ValaSourceReference* _tmp1058_ = NULL;
-                                       ValaSourceReference* _tmp1059_ = NULL;
-                                       ValaDataType* _tmp1060_ = NULL;
-                                       _tmp1049_ = _error_type_index;
-                                       _error_type_index = _tmp1049_ + 1;
-                                       _tmp1050_ = _error_type_index;
-                                       _tmp1051_ = _error_type_size;
-                                       if (!(_tmp1050_ < _tmp1051_)) {
+                                       ValaDataType* _tmp875_ = NULL;
+                                       ValaDataType* _tmp876_ = NULL;
+                                       ValaDataType* _tmp877_ = NULL;
+                                       ValaSourceReference* _tmp878_ = NULL;
+                                       ValaSourceReference* _tmp879_ = NULL;
+                                       ValaDataType* _tmp880_ = NULL;
+                                       _tmp869_ = _error_type_index;
+                                       _error_type_index = _tmp869_ + 1;
+                                       _tmp870_ = _error_type_index;
+                                       _tmp871_ = _error_type_size;
+                                       if (!(_tmp870_ < _tmp871_)) {
                                                break;
                                        }
-                                       _tmp1052_ = _error_type_list;
-                                       _tmp1053_ = _error_type_index;
-                                       _tmp1054_ = vala_list_get (_tmp1052_, _tmp1053_);
-                                       error_type = (ValaDataType*) _tmp1054_;
+                                       _tmp872_ = _error_type_list;
+                                       _tmp873_ = _error_type_index;
+                                       _tmp874_ = vala_list_get (_tmp872_, _tmp873_);
+                                       error_type = (ValaDataType*) _tmp874_;
                                        may_throw = TRUE;
-                                       _tmp1055_ = error_type;
-                                       _tmp1056_ = vala_data_type_copy (_tmp1055_);
-                                       call_error_type = _tmp1056_;
-                                       _tmp1057_ = call_error_type;
-                                       _tmp1058_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                       _tmp1059_ = _tmp1058_;
-                                       vala_code_node_set_source_reference ((ValaCodeNode*) _tmp1057_, _tmp1059_);
-                                       _tmp1060_ = call_error_type;
-                                       vala_code_node_add_error_type ((ValaCodeNode*) self, _tmp1060_);
+                                       _tmp875_ = error_type;
+                                       _tmp876_ = vala_data_type_copy (_tmp875_);
+                                       call_error_type = _tmp876_;
+                                       _tmp877_ = call_error_type;
+                                       _tmp878_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                       _tmp879_ = _tmp878_;
+                                       vala_code_node_set_source_reference ((ValaCodeNode*) _tmp877_, _tmp879_);
+                                       _tmp880_ = call_error_type;
+                                       vala_code_node_add_error_type ((ValaCodeNode*) self, _tmp880_);
                                        _vala_code_node_unref0 (call_error_type);
                                        _vala_code_node_unref0 (error_type);
                                }
@@ -5316,72 +4682,72 @@ static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext
                        _vala_code_node_unref0 (m);
                        _vala_code_node_unref0 (cl);
                } else {
-                       ValaDataType* _tmp1061_ = NULL;
-                       _tmp1061_ = mtype;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1061_, VALA_TYPE_DELEGATE_TYPE)) {
+                       ValaDataType* _tmp881_ = NULL;
+                       _tmp881_ = mtype;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp881_, VALA_TYPE_DELEGATE_TYPE)) {
                                ValaDelegate* d = NULL;
-                               ValaDataType* _tmp1062_ = NULL;
-                               ValaDelegate* _tmp1063_ = NULL;
-                               ValaDelegate* _tmp1064_ = NULL;
-                               ValaDelegate* _tmp1065_ = NULL;
-                               _tmp1062_ = mtype;
-                               _tmp1063_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp1062_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
-                               _tmp1064_ = _tmp1063_;
-                               _tmp1065_ = _vala_code_node_ref0 (_tmp1064_);
-                               d = _tmp1065_;
+                               ValaDataType* _tmp882_ = NULL;
+                               ValaDelegate* _tmp883_ = NULL;
+                               ValaDelegate* _tmp884_ = NULL;
+                               ValaDelegate* _tmp885_ = NULL;
+                               _tmp882_ = mtype;
+                               _tmp883_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp882_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
+                               _tmp884_ = _tmp883_;
+                               _tmp885_ = _vala_code_node_ref0 (_tmp884_);
+                               d = _tmp885_;
                                {
                                        ValaList* _error_type_list = NULL;
-                                       ValaDelegate* _tmp1066_ = NULL;
-                                       ValaList* _tmp1067_ = NULL;
+                                       ValaDelegate* _tmp886_ = NULL;
+                                       ValaList* _tmp887_ = NULL;
                                        gint _error_type_size = 0;
-                                       ValaList* _tmp1068_ = NULL;
-                                       gint _tmp1069_ = 0;
-                                       gint _tmp1070_ = 0;
+                                       ValaList* _tmp888_ = NULL;
+                                       gint _tmp889_ = 0;
+                                       gint _tmp890_ = 0;
                                        gint _error_type_index = 0;
-                                       _tmp1066_ = d;
-                                       _tmp1067_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp1066_);
-                                       _error_type_list = _tmp1067_;
-                                       _tmp1068_ = _error_type_list;
-                                       _tmp1069_ = vala_collection_get_size ((ValaCollection*) _tmp1068_);
-                                       _tmp1070_ = _tmp1069_;
-                                       _error_type_size = _tmp1070_;
+                                       _tmp886_ = d;
+                                       _tmp887_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp886_);
+                                       _error_type_list = _tmp887_;
+                                       _tmp888_ = _error_type_list;
+                                       _tmp889_ = vala_collection_get_size ((ValaCollection*) _tmp888_);
+                                       _tmp890_ = _tmp889_;
+                                       _error_type_size = _tmp890_;
                                        _error_type_index = -1;
                                        while (TRUE) {
-                                               gint _tmp1071_ = 0;
-                                               gint _tmp1072_ = 0;
-                                               gint _tmp1073_ = 0;
+                                               gint _tmp891_ = 0;
+                                               gint _tmp892_ = 0;
+                                               gint _tmp893_ = 0;
                                                ValaDataType* error_type = NULL;
-                                               ValaList* _tmp1074_ = NULL;
-                                               gint _tmp1075_ = 0;
-                                               gpointer _tmp1076_ = NULL;
+                                               ValaList* _tmp894_ = NULL;
+                                               gint _tmp895_ = 0;
+                                               gpointer _tmp896_ = NULL;
                                                ValaDataType* call_error_type = NULL;
-                                               ValaDataType* _tmp1077_ = NULL;
-                                               ValaDataType* _tmp1078_ = NULL;
-                                               ValaDataType* _tmp1079_ = NULL;
-                                               ValaSourceReference* _tmp1080_ = NULL;
-                                               ValaSourceReference* _tmp1081_ = NULL;
-                                               ValaDataType* _tmp1082_ = NULL;
-                                               _tmp1071_ = _error_type_index;
-                                               _error_type_index = _tmp1071_ + 1;
-                                               _tmp1072_ = _error_type_index;
-                                               _tmp1073_ = _error_type_size;
-                                               if (!(_tmp1072_ < _tmp1073_)) {
+                                               ValaDataType* _tmp897_ = NULL;
+                                               ValaDataType* _tmp898_ = NULL;
+                                               ValaDataType* _tmp899_ = NULL;
+                                               ValaSourceReference* _tmp900_ = NULL;
+                                               ValaSourceReference* _tmp901_ = NULL;
+                                               ValaDataType* _tmp902_ = NULL;
+                                               _tmp891_ = _error_type_index;
+                                               _error_type_index = _tmp891_ + 1;
+                                               _tmp892_ = _error_type_index;
+                                               _tmp893_ = _error_type_size;
+                                               if (!(_tmp892_ < _tmp893_)) {
                                                        break;
                                                }
-                                               _tmp1074_ = _error_type_list;
-                                               _tmp1075_ = _error_type_index;
-                                               _tmp1076_ = vala_list_get (_tmp1074_, _tmp1075_);
-                                               error_type = (ValaDataType*) _tmp1076_;
+                                               _tmp894_ = _error_type_list;
+                                               _tmp895_ = _error_type_index;
+                                               _tmp896_ = vala_list_get (_tmp894_, _tmp895_);
+                                               error_type = (ValaDataType*) _tmp896_;
                                                may_throw = TRUE;
-                                               _tmp1077_ = error_type;
-                                               _tmp1078_ = vala_data_type_copy (_tmp1077_);
-                                               call_error_type = _tmp1078_;
-                                               _tmp1079_ = call_error_type;
-                                               _tmp1080_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                               _tmp1081_ = _tmp1080_;
-                                               vala_code_node_set_source_reference ((ValaCodeNode*) _tmp1079_, _tmp1081_);
-                                               _tmp1082_ = call_error_type;
-                                               vala_code_node_add_error_type ((ValaCodeNode*) self, _tmp1082_);
+                                               _tmp897_ = error_type;
+                                               _tmp898_ = vala_data_type_copy (_tmp897_);
+                                               call_error_type = _tmp898_;
+                                               _tmp899_ = call_error_type;
+                                               _tmp900_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                               _tmp901_ = _tmp900_;
+                                               vala_code_node_set_source_reference ((ValaCodeNode*) _tmp899_, _tmp901_);
+                                               _tmp902_ = call_error_type;
+                                               vala_code_node_add_error_type ((ValaCodeNode*) self, _tmp902_);
                                                _vala_code_node_unref0 (call_error_type);
                                                _vala_code_node_unref0 (error_type);
                                        }
@@ -5391,17 +4757,17 @@ static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext
                        }
                }
        }
-       _tmp1083_ = context;
-       _tmp1084_ = vala_code_context_get_analyzer (_tmp1083_);
-       _tmp1085_ = _tmp1084_;
-       _tmp1086_ = mtype;
-       _tmp1087_ = params;
-       _tmp1088_ = vala_method_call_get_argument_list (self);
-       _tmp1089_ = _tmp1088_;
-       _tmp1090_ = vala_semantic_analyzer_check_arguments (_tmp1085_, (ValaExpression*) self, _tmp1086_, _tmp1087_, _tmp1089_);
-       _tmp1091_ = !_tmp1090_;
-       _vala_iterable_unref0 (_tmp1089_);
-       if (_tmp1091_) {
+       _tmp903_ = context;
+       _tmp904_ = vala_code_context_get_analyzer (_tmp903_);
+       _tmp905_ = _tmp904_;
+       _tmp906_ = mtype;
+       _tmp907_ = params;
+       _tmp908_ = vala_method_call_get_argument_list (self);
+       _tmp909_ = _tmp908_;
+       _tmp910_ = vala_semantic_analyzer_check_arguments (_tmp905_, (ValaExpression*) self, _tmp906_, _tmp907_, _tmp909_);
+       _tmp911_ = !_tmp910_;
+       _vala_iterable_unref0 (_tmp909_);
+       if (_tmp911_) {
                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                result = FALSE;
                _vala_iterator_unref0 (arg_it);
@@ -5414,236 +4780,236 @@ static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext
                _vala_code_node_unref0 (target_object_type);
                return result;
        }
-       _tmp1094_ = base_cm;
-       if (_tmp1094_ != NULL) {
-               ValaCreationMethod* _tmp1095_ = NULL;
-               gboolean _tmp1096_ = FALSE;
-               _tmp1095_ = base_cm;
-               _tmp1096_ = vala_method_is_variadic ((ValaMethod*) _tmp1095_);
-               _tmp1093_ = _tmp1096_;
+       _tmp914_ = base_cm;
+       if (_tmp914_ != NULL) {
+               ValaCreationMethod* _tmp915_ = NULL;
+               gboolean _tmp916_ = FALSE;
+               _tmp915_ = base_cm;
+               _tmp916_ = vala_method_is_variadic ((ValaMethod*) _tmp915_);
+               _tmp913_ = _tmp916_;
        } else {
-               _tmp1093_ = FALSE;
+               _tmp913_ = FALSE;
        }
-       if (_tmp1093_) {
-               ValaList* _tmp1097_ = NULL;
-               gint _tmp1098_ = 0;
-               gint _tmp1099_ = 0;
-               ValaCreationMethod* _tmp1100_ = NULL;
-               ValaList* _tmp1101_ = NULL;
-               ValaList* _tmp1102_ = NULL;
-               gint _tmp1103_ = 0;
-               gint _tmp1104_ = 0;
-               _tmp1097_ = args;
-               _tmp1098_ = vala_collection_get_size ((ValaCollection*) _tmp1097_);
-               _tmp1099_ = _tmp1098_;
-               _tmp1100_ = base_cm;
-               _tmp1101_ = vala_method_get_parameters ((ValaMethod*) _tmp1100_);
-               _tmp1102_ = _tmp1101_;
-               _tmp1103_ = vala_collection_get_size ((ValaCollection*) _tmp1102_);
-               _tmp1104_ = _tmp1103_;
-               _tmp1092_ = _tmp1099_ == _tmp1104_;
-               _vala_iterable_unref0 (_tmp1102_);
+       if (_tmp913_) {
+               ValaList* _tmp917_ = NULL;
+               gint _tmp918_ = 0;
+               gint _tmp919_ = 0;
+               ValaCreationMethod* _tmp920_ = NULL;
+               ValaList* _tmp921_ = NULL;
+               ValaList* _tmp922_ = NULL;
+               gint _tmp923_ = 0;
+               gint _tmp924_ = 0;
+               _tmp917_ = args;
+               _tmp918_ = vala_collection_get_size ((ValaCollection*) _tmp917_);
+               _tmp919_ = _tmp918_;
+               _tmp920_ = base_cm;
+               _tmp921_ = vala_method_get_parameters ((ValaMethod*) _tmp920_);
+               _tmp922_ = _tmp921_;
+               _tmp923_ = vala_collection_get_size ((ValaCollection*) _tmp922_);
+               _tmp924_ = _tmp923_;
+               _tmp912_ = _tmp919_ == _tmp924_;
+               _vala_iterable_unref0 (_tmp922_);
        } else {
-               _tmp1092_ = FALSE;
+               _tmp912_ = FALSE;
        }
-       if (_tmp1092_) {
+       if (_tmp912_) {
                ValaExpression* this_last_arg = NULL;
-               ValaList* _tmp1105_ = NULL;
-               ValaList* _tmp1106_ = NULL;
-               gint _tmp1107_ = 0;
-               gint _tmp1108_ = 0;
-               gpointer _tmp1109_ = NULL;
-               gboolean _tmp1110_ = FALSE;
-               ValaExpression* _tmp1111_ = NULL;
-               ValaDataType* _tmp1112_ = NULL;
-               ValaDataType* _tmp1113_ = NULL;
-               _tmp1105_ = args;
-               _tmp1106_ = args;
-               _tmp1107_ = vala_collection_get_size ((ValaCollection*) _tmp1106_);
-               _tmp1108_ = _tmp1107_;
-               _tmp1109_ = vala_list_get (_tmp1105_, _tmp1108_ - 1);
-               this_last_arg = (ValaExpression*) _tmp1109_;
-               _tmp1111_ = this_last_arg;
-               _tmp1112_ = vala_expression_get_value_type (_tmp1111_);
-               _tmp1113_ = _tmp1112_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1113_, VALA_TYPE_STRUCT_VALUE_TYPE)) {
-                       ValaExpression* _tmp1114_ = NULL;
-                       ValaDataType* _tmp1115_ = NULL;
-                       ValaDataType* _tmp1116_ = NULL;
-                       ValaTypeSymbol* _tmp1117_ = NULL;
-                       ValaTypeSymbol* _tmp1118_ = NULL;
-                       ValaCodeContext* _tmp1119_ = NULL;
-                       ValaSemanticAnalyzer* _tmp1120_ = NULL;
-                       ValaSemanticAnalyzer* _tmp1121_ = NULL;
-                       ValaDataType* _tmp1122_ = NULL;
-                       ValaTypeSymbol* _tmp1123_ = NULL;
-                       ValaTypeSymbol* _tmp1124_ = NULL;
-                       _tmp1114_ = this_last_arg;
-                       _tmp1115_ = vala_expression_get_value_type (_tmp1114_);
-                       _tmp1116_ = _tmp1115_;
-                       _tmp1117_ = vala_data_type_get_data_type (_tmp1116_);
-                       _tmp1118_ = _tmp1117_;
-                       _tmp1119_ = context;
-                       _tmp1120_ = vala_code_context_get_analyzer (_tmp1119_);
-                       _tmp1121_ = _tmp1120_;
-                       _tmp1122_ = _tmp1121_->va_list_type;
-                       _tmp1123_ = vala_data_type_get_data_type (_tmp1122_);
-                       _tmp1124_ = _tmp1123_;
-                       _tmp1110_ = _tmp1118_ == _tmp1124_;
+               ValaList* _tmp925_ = NULL;
+               ValaList* _tmp926_ = NULL;
+               gint _tmp927_ = 0;
+               gint _tmp928_ = 0;
+               gpointer _tmp929_ = NULL;
+               gboolean _tmp930_ = FALSE;
+               ValaExpression* _tmp931_ = NULL;
+               ValaDataType* _tmp932_ = NULL;
+               ValaDataType* _tmp933_ = NULL;
+               _tmp925_ = args;
+               _tmp926_ = args;
+               _tmp927_ = vala_collection_get_size ((ValaCollection*) _tmp926_);
+               _tmp928_ = _tmp927_;
+               _tmp929_ = vala_list_get (_tmp925_, _tmp928_ - 1);
+               this_last_arg = (ValaExpression*) _tmp929_;
+               _tmp931_ = this_last_arg;
+               _tmp932_ = vala_expression_get_value_type (_tmp931_);
+               _tmp933_ = _tmp932_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp933_, VALA_TYPE_STRUCT_VALUE_TYPE)) {
+                       ValaExpression* _tmp934_ = NULL;
+                       ValaDataType* _tmp935_ = NULL;
+                       ValaDataType* _tmp936_ = NULL;
+                       ValaTypeSymbol* _tmp937_ = NULL;
+                       ValaTypeSymbol* _tmp938_ = NULL;
+                       ValaCodeContext* _tmp939_ = NULL;
+                       ValaSemanticAnalyzer* _tmp940_ = NULL;
+                       ValaSemanticAnalyzer* _tmp941_ = NULL;
+                       ValaDataType* _tmp942_ = NULL;
+                       ValaTypeSymbol* _tmp943_ = NULL;
+                       ValaTypeSymbol* _tmp944_ = NULL;
+                       _tmp934_ = this_last_arg;
+                       _tmp935_ = vala_expression_get_value_type (_tmp934_);
+                       _tmp936_ = _tmp935_;
+                       _tmp937_ = vala_data_type_get_data_type (_tmp936_);
+                       _tmp938_ = _tmp937_;
+                       _tmp939_ = context;
+                       _tmp940_ = vala_code_context_get_analyzer (_tmp939_);
+                       _tmp941_ = _tmp940_;
+                       _tmp942_ = _tmp941_->va_list_type;
+                       _tmp943_ = vala_data_type_get_data_type (_tmp942_);
+                       _tmp944_ = _tmp943_;
+                       _tmp930_ = _tmp938_ == _tmp944_;
                } else {
-                       _tmp1110_ = FALSE;
+                       _tmp930_ = FALSE;
                }
-               if (_tmp1110_) {
+               if (_tmp930_) {
                        vala_method_call_set_is_constructv_chainup (self, TRUE);
                }
                _vala_code_node_unref0 (this_last_arg);
        }
-       _tmp1125_ = may_throw;
-       if (_tmp1125_) {
-               gboolean _tmp1126_ = FALSE;
-               ValaCodeNode* _tmp1127_ = NULL;
-               ValaCodeNode* _tmp1128_ = NULL;
-               _tmp1127_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
-               _tmp1128_ = _tmp1127_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1128_, VALA_TYPE_LOCAL_VARIABLE)) {
-                       _tmp1126_ = TRUE;
+       _tmp945_ = may_throw;
+       if (_tmp945_) {
+               gboolean _tmp946_ = FALSE;
+               ValaCodeNode* _tmp947_ = NULL;
+               ValaCodeNode* _tmp948_ = NULL;
+               _tmp947_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
+               _tmp948_ = _tmp947_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp948_, VALA_TYPE_LOCAL_VARIABLE)) {
+                       _tmp946_ = TRUE;
                } else {
-                       ValaCodeNode* _tmp1129_ = NULL;
-                       ValaCodeNode* _tmp1130_ = NULL;
-                       _tmp1129_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
-                       _tmp1130_ = _tmp1129_;
-                       _tmp1126_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1130_, VALA_TYPE_EXPRESSION_STATEMENT);
+                       ValaCodeNode* _tmp949_ = NULL;
+                       ValaCodeNode* _tmp950_ = NULL;
+                       _tmp949_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
+                       _tmp950_ = _tmp949_;
+                       _tmp946_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp950_, VALA_TYPE_EXPRESSION_STATEMENT);
                }
-               if (_tmp1126_) {
+               if (_tmp946_) {
                } else {
-                       ValaCodeContext* _tmp1131_ = NULL;
-                       ValaSemanticAnalyzer* _tmp1132_ = NULL;
-                       ValaSemanticAnalyzer* _tmp1133_ = NULL;
-                       ValaSymbol* _tmp1134_ = NULL;
-                       ValaSymbol* _tmp1135_ = NULL;
-                       _tmp1131_ = context;
-                       _tmp1132_ = vala_code_context_get_analyzer (_tmp1131_);
-                       _tmp1133_ = _tmp1132_;
-                       _tmp1134_ = vala_semantic_analyzer_get_current_symbol (_tmp1133_);
-                       _tmp1135_ = _tmp1134_;
-                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp1135_, VALA_TYPE_BLOCK)) {
-                               ValaSourceReference* _tmp1136_ = NULL;
-                               ValaSourceReference* _tmp1137_ = NULL;
-                               _tmp1136_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp1137_ = _tmp1136_;
-                               vala_report_error (_tmp1137_, "Field initializers must not throw errors");
+                       ValaCodeContext* _tmp951_ = NULL;
+                       ValaSemanticAnalyzer* _tmp952_ = NULL;
+                       ValaSemanticAnalyzer* _tmp953_ = NULL;
+                       ValaSymbol* _tmp954_ = NULL;
+                       ValaSymbol* _tmp955_ = NULL;
+                       _tmp951_ = context;
+                       _tmp952_ = vala_code_context_get_analyzer (_tmp951_);
+                       _tmp953_ = _tmp952_;
+                       _tmp954_ = vala_semantic_analyzer_get_current_symbol (_tmp953_);
+                       _tmp955_ = _tmp954_;
+                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp955_, VALA_TYPE_BLOCK)) {
+                               ValaSourceReference* _tmp956_ = NULL;
+                               ValaSourceReference* _tmp957_ = NULL;
+                               _tmp956_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp957_ = _tmp956_;
+                               vala_report_error (_tmp957_, "Field initializers must not throw errors");
                        } else {
                                ValaCodeNode* old_parent_node = NULL;
-                               ValaCodeNode* _tmp1138_ = NULL;
-                               ValaCodeNode* _tmp1139_ = NULL;
-                               ValaCodeNode* _tmp1140_ = NULL;
+                               ValaCodeNode* _tmp958_ = NULL;
+                               ValaCodeNode* _tmp959_ = NULL;
+                               ValaCodeNode* _tmp960_ = NULL;
                                ValaLocalVariable* local = NULL;
-                               ValaDataType* _tmp1141_ = NULL;
-                               ValaDataType* _tmp1142_ = NULL;
-                               ValaDataType* _tmp1143_ = NULL;
-                               ValaDataType* _tmp1144_ = NULL;
-                               gchar* _tmp1145_ = NULL;
-                               gchar* _tmp1146_ = NULL;
-                               ValaSourceReference* _tmp1147_ = NULL;
-                               ValaSourceReference* _tmp1148_ = NULL;
-                               ValaLocalVariable* _tmp1149_ = NULL;
-                               ValaLocalVariable* _tmp1150_ = NULL;
+                               ValaDataType* _tmp961_ = NULL;
+                               ValaDataType* _tmp962_ = NULL;
+                               ValaDataType* _tmp963_ = NULL;
+                               ValaDataType* _tmp964_ = NULL;
+                               gchar* _tmp965_ = NULL;
+                               gchar* _tmp966_ = NULL;
+                               ValaSourceReference* _tmp967_ = NULL;
+                               ValaSourceReference* _tmp968_ = NULL;
+                               ValaLocalVariable* _tmp969_ = NULL;
+                               ValaLocalVariable* _tmp970_ = NULL;
                                ValaDeclarationStatement* decl = NULL;
-                               ValaLocalVariable* _tmp1151_ = NULL;
-                               ValaSourceReference* _tmp1152_ = NULL;
-                               ValaSourceReference* _tmp1153_ = NULL;
-                               ValaDeclarationStatement* _tmp1154_ = NULL;
-                               ValaCodeContext* _tmp1155_ = NULL;
-                               ValaSemanticAnalyzer* _tmp1156_ = NULL;
-                               ValaSemanticAnalyzer* _tmp1157_ = NULL;
-                               ValaBlock* _tmp1158_ = NULL;
-                               ValaDeclarationStatement* _tmp1159_ = NULL;
+                               ValaLocalVariable* _tmp971_ = NULL;
+                               ValaSourceReference* _tmp972_ = NULL;
+                               ValaSourceReference* _tmp973_ = NULL;
+                               ValaDeclarationStatement* _tmp974_ = NULL;
+                               ValaCodeContext* _tmp975_ = NULL;
+                               ValaSemanticAnalyzer* _tmp976_ = NULL;
+                               ValaSemanticAnalyzer* _tmp977_ = NULL;
+                               ValaBlock* _tmp978_ = NULL;
+                               ValaDeclarationStatement* _tmp979_ = NULL;
                                ValaExpression* temp_access = NULL;
-                               ValaLocalVariable* _tmp1160_ = NULL;
-                               ValaDataType* _tmp1161_ = NULL;
-                               ValaDataType* _tmp1162_ = NULL;
-                               ValaExpression* _tmp1163_ = NULL;
-                               ValaLocalVariable* _tmp1164_ = NULL;
-                               ValaDeclarationStatement* _tmp1165_ = NULL;
-                               ValaCodeContext* _tmp1166_ = NULL;
+                               ValaLocalVariable* _tmp980_ = NULL;
+                               ValaDataType* _tmp981_ = NULL;
+                               ValaDataType* _tmp982_ = NULL;
+                               ValaExpression* _tmp983_ = NULL;
+                               ValaLocalVariable* _tmp984_ = NULL;
+                               ValaDeclarationStatement* _tmp985_ = NULL;
+                               ValaCodeContext* _tmp986_ = NULL;
                                ValaBlock* block = NULL;
-                               ValaCodeContext* _tmp1167_ = NULL;
-                               ValaSemanticAnalyzer* _tmp1168_ = NULL;
-                               ValaSemanticAnalyzer* _tmp1169_ = NULL;
-                               ValaSymbol* _tmp1170_ = NULL;
-                               ValaSymbol* _tmp1171_ = NULL;
-                               ValaBlock* _tmp1172_ = NULL;
-                               ValaBlock* _tmp1173_ = NULL;
-                               ValaLocalVariable* _tmp1174_ = NULL;
-                               ValaCodeContext* _tmp1175_ = NULL;
-                               ValaSemanticAnalyzer* _tmp1176_ = NULL;
-                               ValaSemanticAnalyzer* _tmp1177_ = NULL;
-                               ValaBlock* _tmp1178_ = NULL;
-                               ValaLocalVariable* _tmp1179_ = NULL;
-                               ValaCodeNode* _tmp1180_ = NULL;
-                               ValaExpression* _tmp1181_ = NULL;
-                               ValaExpression* _tmp1182_ = NULL;
-                               ValaCodeContext* _tmp1183_ = NULL;
-                               _tmp1138_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
-                               _tmp1139_ = _tmp1138_;
-                               _tmp1140_ = _vala_code_node_ref0 (_tmp1139_);
-                               old_parent_node = _tmp1140_;
-                               _tmp1141_ = vala_expression_get_value_type ((ValaExpression*) self);
-                               _tmp1142_ = _tmp1141_;
-                               _tmp1143_ = vala_data_type_copy (_tmp1142_);
-                               _tmp1144_ = _tmp1143_;
-                               _tmp1145_ = vala_code_node_get_temp_name ();
-                               _tmp1146_ = _tmp1145_;
-                               _tmp1147_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp1148_ = _tmp1147_;
-                               _tmp1149_ = vala_local_variable_new (_tmp1144_, _tmp1146_, NULL, _tmp1148_);
-                               _tmp1150_ = _tmp1149_;
-                               _g_free0 (_tmp1146_);
-                               _vala_code_node_unref0 (_tmp1144_);
-                               local = _tmp1150_;
-                               _tmp1151_ = local;
-                               _tmp1152_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp1153_ = _tmp1152_;
-                               _tmp1154_ = vala_declaration_statement_new ((ValaSymbol*) _tmp1151_, _tmp1153_);
-                               decl = _tmp1154_;
-                               _tmp1155_ = context;
-                               _tmp1156_ = vala_code_context_get_analyzer (_tmp1155_);
-                               _tmp1157_ = _tmp1156_;
-                               _tmp1158_ = _tmp1157_->insert_block;
-                               _tmp1159_ = decl;
-                               vala_expression_insert_statement ((ValaExpression*) self, _tmp1158_, (ValaStatement*) _tmp1159_);
-                               _tmp1160_ = local;
-                               _tmp1161_ = vala_expression_get_target_type ((ValaExpression*) self);
-                               _tmp1162_ = _tmp1161_;
-                               _tmp1163_ = vala_semantic_analyzer_create_temp_access (_tmp1160_, _tmp1162_);
-                               temp_access = _tmp1163_;
-                               _tmp1164_ = local;
-                               vala_variable_set_initializer ((ValaVariable*) _tmp1164_, (ValaExpression*) self);
-                               _tmp1165_ = decl;
-                               _tmp1166_ = context;
-                               vala_code_node_check ((ValaCodeNode*) _tmp1165_, _tmp1166_);
-                               _tmp1167_ = context;
-                               _tmp1168_ = vala_code_context_get_analyzer (_tmp1167_);
-                               _tmp1169_ = _tmp1168_;
-                               _tmp1170_ = vala_semantic_analyzer_get_current_symbol (_tmp1169_);
-                               _tmp1171_ = _tmp1170_;
-                               _tmp1172_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1171_, VALA_TYPE_BLOCK, ValaBlock));
-                               block = _tmp1172_;
-                               _tmp1173_ = block;
-                               _tmp1174_ = local;
-                               vala_block_remove_local_variable (_tmp1173_, _tmp1174_);
-                               _tmp1175_ = context;
-                               _tmp1176_ = vala_code_context_get_analyzer (_tmp1175_);
-                               _tmp1177_ = _tmp1176_;
-                               _tmp1178_ = _tmp1177_->insert_block;
-                               _tmp1179_ = local;
-                               vala_block_add_local_variable (_tmp1178_, _tmp1179_);
-                               _tmp1180_ = old_parent_node;
-                               _tmp1181_ = temp_access;
-                               vala_code_node_replace_expression (_tmp1180_, (ValaExpression*) self, _tmp1181_);
-                               _tmp1182_ = temp_access;
-                               _tmp1183_ = context;
-                               vala_code_node_check ((ValaCodeNode*) _tmp1182_, _tmp1183_);
+                               ValaCodeContext* _tmp987_ = NULL;
+                               ValaSemanticAnalyzer* _tmp988_ = NULL;
+                               ValaSemanticAnalyzer* _tmp989_ = NULL;
+                               ValaSymbol* _tmp990_ = NULL;
+                               ValaSymbol* _tmp991_ = NULL;
+                               ValaBlock* _tmp992_ = NULL;
+                               ValaBlock* _tmp993_ = NULL;
+                               ValaLocalVariable* _tmp994_ = NULL;
+                               ValaCodeContext* _tmp995_ = NULL;
+                               ValaSemanticAnalyzer* _tmp996_ = NULL;
+                               ValaSemanticAnalyzer* _tmp997_ = NULL;
+                               ValaBlock* _tmp998_ = NULL;
+                               ValaLocalVariable* _tmp999_ = NULL;
+                               ValaCodeNode* _tmp1000_ = NULL;
+                               ValaExpression* _tmp1001_ = NULL;
+                               ValaExpression* _tmp1002_ = NULL;
+                               ValaCodeContext* _tmp1003_ = NULL;
+                               _tmp958_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
+                               _tmp959_ = _tmp958_;
+                               _tmp960_ = _vala_code_node_ref0 (_tmp959_);
+                               old_parent_node = _tmp960_;
+                               _tmp961_ = vala_expression_get_value_type ((ValaExpression*) self);
+                               _tmp962_ = _tmp961_;
+                               _tmp963_ = vala_data_type_copy (_tmp962_);
+                               _tmp964_ = _tmp963_;
+                               _tmp965_ = vala_code_node_get_temp_name ();
+                               _tmp966_ = _tmp965_;
+                               _tmp967_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp968_ = _tmp967_;
+                               _tmp969_ = vala_local_variable_new (_tmp964_, _tmp966_, NULL, _tmp968_);
+                               _tmp970_ = _tmp969_;
+                               _g_free0 (_tmp966_);
+                               _vala_code_node_unref0 (_tmp964_);
+                               local = _tmp970_;
+                               _tmp971_ = local;
+                               _tmp972_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp973_ = _tmp972_;
+                               _tmp974_ = vala_declaration_statement_new ((ValaSymbol*) _tmp971_, _tmp973_);
+                               decl = _tmp974_;
+                               _tmp975_ = context;
+                               _tmp976_ = vala_code_context_get_analyzer (_tmp975_);
+                               _tmp977_ = _tmp976_;
+                               _tmp978_ = _tmp977_->insert_block;
+                               _tmp979_ = decl;
+                               vala_expression_insert_statement ((ValaExpression*) self, _tmp978_, (ValaStatement*) _tmp979_);
+                               _tmp980_ = local;
+                               _tmp981_ = vala_expression_get_target_type ((ValaExpression*) self);
+                               _tmp982_ = _tmp981_;
+                               _tmp983_ = vala_semantic_analyzer_create_temp_access (_tmp980_, _tmp982_);
+                               temp_access = _tmp983_;
+                               _tmp984_ = local;
+                               vala_variable_set_initializer ((ValaVariable*) _tmp984_, (ValaExpression*) self);
+                               _tmp985_ = decl;
+                               _tmp986_ = context;
+                               vala_code_node_check ((ValaCodeNode*) _tmp985_, _tmp986_);
+                               _tmp987_ = context;
+                               _tmp988_ = vala_code_context_get_analyzer (_tmp987_);
+                               _tmp989_ = _tmp988_;
+                               _tmp990_ = vala_semantic_analyzer_get_current_symbol (_tmp989_);
+                               _tmp991_ = _tmp990_;
+                               _tmp992_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp991_, VALA_TYPE_BLOCK, ValaBlock));
+                               block = _tmp992_;
+                               _tmp993_ = block;
+                               _tmp994_ = local;
+                               vala_block_remove_local_variable (_tmp993_, _tmp994_);
+                               _tmp995_ = context;
+                               _tmp996_ = vala_code_context_get_analyzer (_tmp995_);
+                               _tmp997_ = _tmp996_;
+                               _tmp998_ = _tmp997_->insert_block;
+                               _tmp999_ = local;
+                               vala_block_add_local_variable (_tmp998_, _tmp999_);
+                               _tmp1000_ = old_parent_node;
+                               _tmp1001_ = temp_access;
+                               vala_code_node_replace_expression (_tmp1000_, (ValaExpression*) self, _tmp1001_);
+                               _tmp1002_ = temp_access;
+                               _tmp1003_ = context;
+                               vala_code_node_check ((ValaCodeNode*) _tmp1002_, _tmp1003_);
                                _vala_code_node_unref0 (block);
                                _vala_code_node_unref0 (temp_access);
                                _vala_code_node_unref0 (decl);
@@ -5652,9 +5018,9 @@ static gboolean vala_method_call_real_check (ValaCodeNode* base, ValaCodeContext
                        }
                }
        }
-       _tmp1184_ = vala_code_node_get_error ((ValaCodeNode*) self);
-       _tmp1185_ = _tmp1184_;
-       result = !_tmp1185_;
+       _tmp1004_ = vala_code_node_get_error ((ValaCodeNode*) self);
+       _tmp1005_ = _tmp1004_;
+       result = !_tmp1005_;
        _vala_iterator_unref0 (arg_it);
        _vala_iterable_unref0 (args);
        _vala_code_node_unref0 (last_arg);
@@ -6065,17 +5431,17 @@ static void vala_method_call_set_is_constructv_chainup (ValaMethodCall* self, gb
 
 static void vala_method_call_class_init (ValaMethodCallClass * klass) {
        vala_method_call_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_method_call_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_method_call_finalize;
        g_type_class_add_private (klass, sizeof (ValaMethodCallPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_method_call_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_method_call_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_method_call_real_replace_expression;
-       VALA_EXPRESSION_CLASS (klass)->is_constant = vala_method_call_real_is_constant;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_method_call_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_method_call_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_method_call_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_method_call_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_method_call_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_method_call_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_method_call_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_method_call_real_replace_expression;
+       ((ValaExpressionClass *) klass)->is_constant = vala_method_call_real_is_constant;
+       ((ValaExpressionClass *) klass)->is_pure = vala_method_call_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_method_call_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_method_call_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_method_call_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_method_call_real_get_used_variables;
 }
 
 
index 077131c..efce548 100644 (file)
@@ -443,120 +443,7 @@ public class Vala.MethodCall : Expression {
                        }
                        if (format_literal != null) {
                                string format = format_literal.eval ();
-
-                               bool unsupported_format = false;
-
-                               weak string format_it = format;
-                               unichar c = format_it.get_char ();
-                               while (c != '\0') {
-                                       if (c != '%') {
-                                               format_it = format_it.next_char ();
-                                               c = format_it.get_char ();
-                                               continue;
-                                       }
-
-                                       format_it = format_it.next_char ();
-                                       c = format_it.get_char ();
-                                       // flags
-                                       while (c == '#' || c == '0' || c == '-' || c == ' ' || c == '+') {
-                                               format_it = format_it.next_char ();
-                                               c = format_it.get_char ();
-                                       }
-                                       // field width
-                                       while (c >= '0' && c <= '9') {
-                                               format_it = format_it.next_char ();
-                                               c = format_it.get_char ();
-                                       }
-                                       // precision
-                                       if (c == '.') {
-                                               format_it = format_it.next_char ();
-                                               c = format_it.get_char ();
-                                               while (c >= '0' && c <= '9') {
-                                                       format_it = format_it.next_char ();
-                                                       c = format_it.get_char ();
-                                               }
-                                       }
-                                       // length modifier
-                                       int length = 0;
-                                       if (c == 'h') {
-                                               length = -1;
-                                               format_it = format_it.next_char ();
-                                               c = format_it.get_char ();
-                                               if (c == 'h') {
-                                                       length = -2;
-                                                       format_it = format_it.next_char ();
-                                                       c = format_it.get_char ();
-                                               }
-                                       } else if (c == 'l') {
-                                               length = 1;
-                                               format_it = format_it.next_char ();
-                                               c = format_it.get_char ();
-                                       } else if (c == 'z') {
-                                               length = 2;
-                                               format_it = format_it.next_char ();
-                                               c = format_it.get_char ();
-                                       }
-                                       // conversion specifier
-                                       DataType param_type = null;
-                                       if (c == 'd' || c == 'i' || c == 'c') {
-                                               // integer
-                                               if (length == -2) {
-                                                       param_type = context.analyzer.int8_type;
-                                               } else if (length == -1) {
-                                                       param_type = context.analyzer.short_type;
-                                               } else if (length == 0) {
-                                                       param_type = context.analyzer.int_type;
-                                               } else if (length == 1) {
-                                                       param_type = context.analyzer.long_type;
-                                               } else if (length == 2) {
-                                                       param_type = context.analyzer.ssize_t_type;
-                                               }
-                                       } else if (c == 'o' || c == 'u' || c == 'x' || c == 'X') {
-                                               // unsigned integer
-                                               if (length == -2) {
-                                                       param_type = context.analyzer.uchar_type;
-                                               } else if (length == -1) {
-                                                       param_type = context.analyzer.ushort_type;
-                                               } else if (length == 0) {
-                                                       param_type = context.analyzer.uint_type;
-                                               } else if (length == 1) {
-                                                       param_type = context.analyzer.ulong_type;
-                                               } else if (length == 2) {
-                                                       param_type = context.analyzer.size_t_type;
-                                               }
-                                       } else if (c == 'e' || c == 'E' || c == 'f' || c == 'F'
-                                                  || c == 'g' || c == 'G' || c == 'a' || c == 'A') {
-                                               // double
-                                               param_type = context.analyzer.double_type;
-                                       } else if (c == 's') {
-                                               // string
-                                               param_type = context.analyzer.string_type;
-                                       } else if (c == 'p') {
-                                               // pointer
-                                               param_type = new PointerType (new VoidType ());
-                                       } else if (c == '%') {
-                                               // literal %
-                                       } else {
-                                               unsupported_format = true;
-                                               break;
-                                       }
-                                       if (c != '\0') {
-                                               format_it = format_it.next_char ();
-                                               c = format_it.get_char ();
-                                       }
-                                       if (param_type != null) {
-                                               if (arg_it.next ()) {
-                                                       Expression arg = arg_it.get ();
-
-                                                       arg.target_type = param_type;
-                                               } else {
-                                                       Report.error (source_reference, "Too few arguments for specified format");
-                                                       return false;
-                                               }
-                                       }
-                               }
-                               if (!unsupported_format && arg_it.next ()) {
-                                       Report.error (source_reference, "Too many arguments for specified format");
+                               if (!context.analyzer.check_print_format (format, arg_it, source_reference)) {
                                        return false;
                                }
                        }
index f914dc0..47953a2 100644 (file)
@@ -813,15 +813,15 @@ void vala_method_type_set_method_symbol (ValaMethodType* self, ValaMethod* value
 
 static void vala_method_type_class_init (ValaMethodTypeClass * klass) {
        vala_method_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_method_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_method_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaMethodTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->is_invokable = vala_method_type_real_is_invokable;
-       VALA_DATA_TYPE_CLASS (klass)->get_return_type = vala_method_type_real_get_return_type;
-       VALA_DATA_TYPE_CLASS (klass)->get_parameters = vala_method_type_real_get_parameters;
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_method_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->compatible = vala_method_type_real_compatible;
-       VALA_DATA_TYPE_CLASS (klass)->to_qualified_string = vala_method_type_real_to_qualified_string;
-       VALA_DATA_TYPE_CLASS (klass)->get_member = vala_method_type_real_get_member;
+       ((ValaDataTypeClass *) klass)->is_invokable = vala_method_type_real_is_invokable;
+       ((ValaDataTypeClass *) klass)->get_return_type = vala_method_type_real_get_return_type;
+       ((ValaDataTypeClass *) klass)->get_parameters = vala_method_type_real_get_parameters;
+       ((ValaDataTypeClass *) klass)->copy = vala_method_type_real_copy;
+       ((ValaDataTypeClass *) klass)->compatible = vala_method_type_real_compatible;
+       ((ValaDataTypeClass *) klass)->to_qualified_string = vala_method_type_real_to_qualified_string;
+       ((ValaDataTypeClass *) klass)->get_member = vala_method_type_real_get_member;
 }
 
 
index 5db7cb8..22c8d86 100644 (file)
@@ -525,16 +525,16 @@ void vala_named_argument_set_inner (ValaNamedArgument* self, ValaExpression* val
 
 static void vala_named_argument_class_init (ValaNamedArgumentClass * klass) {
        vala_named_argument_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_named_argument_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_named_argument_finalize;
        g_type_class_add_private (klass, sizeof (ValaNamedArgumentPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_named_argument_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_named_argument_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_named_argument_real_replace_expression;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_named_argument_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_named_argument_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_named_argument_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_named_argument_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_named_argument_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_named_argument_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_named_argument_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_named_argument_real_replace_expression;
+       ((ValaExpressionClass *) klass)->is_pure = vala_named_argument_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_named_argument_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_named_argument_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_named_argument_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_named_argument_real_get_used_variables;
 }
 
 
index 8fd1855..ef27db7 100644 (file)
@@ -2984,21 +2984,21 @@ static gboolean vala_namespace_real_check (ValaCodeNode* base, ValaCodeContext*
 
 static void vala_namespace_class_init (ValaNamespaceClass * klass) {
        vala_namespace_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_namespace_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_namespace_finalize;
        g_type_class_add_private (klass, sizeof (ValaNamespacePrivate));
-       VALA_SYMBOL_CLASS (klass)->add_namespace = vala_namespace_real_add_namespace;
-       VALA_SYMBOL_CLASS (klass)->add_class = vala_namespace_real_add_class;
-       VALA_SYMBOL_CLASS (klass)->add_interface = vala_namespace_real_add_interface;
-       VALA_SYMBOL_CLASS (klass)->add_struct = vala_namespace_real_add_struct;
-       VALA_SYMBOL_CLASS (klass)->add_enum = vala_namespace_real_add_enum;
-       VALA_SYMBOL_CLASS (klass)->add_error_domain = vala_namespace_real_add_error_domain;
-       VALA_SYMBOL_CLASS (klass)->add_delegate = vala_namespace_real_add_delegate;
-       VALA_SYMBOL_CLASS (klass)->add_constant = vala_namespace_real_add_constant;
-       VALA_SYMBOL_CLASS (klass)->add_field = vala_namespace_real_add_field;
-       VALA_SYMBOL_CLASS (klass)->add_method = vala_namespace_real_add_method;
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_namespace_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_namespace_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_namespace_real_check;
+       ((ValaSymbolClass *) klass)->add_namespace = vala_namespace_real_add_namespace;
+       ((ValaSymbolClass *) klass)->add_class = vala_namespace_real_add_class;
+       ((ValaSymbolClass *) klass)->add_interface = vala_namespace_real_add_interface;
+       ((ValaSymbolClass *) klass)->add_struct = vala_namespace_real_add_struct;
+       ((ValaSymbolClass *) klass)->add_enum = vala_namespace_real_add_enum;
+       ((ValaSymbolClass *) klass)->add_error_domain = vala_namespace_real_add_error_domain;
+       ((ValaSymbolClass *) klass)->add_delegate = vala_namespace_real_add_delegate;
+       ((ValaSymbolClass *) klass)->add_constant = vala_namespace_real_add_constant;
+       ((ValaSymbolClass *) klass)->add_field = vala_namespace_real_add_field;
+       ((ValaSymbolClass *) klass)->add_method = vala_namespace_real_add_method;
+       ((ValaCodeNodeClass *) klass)->accept = vala_namespace_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_namespace_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_namespace_real_check;
 }
 
 
index 32021ab..fde0089 100644 (file)
@@ -396,11 +396,11 @@ static void vala_null_literal_real_emit (ValaCodeNode* base, ValaCodeGenerator*
 
 static void vala_null_literal_class_init (ValaNullLiteralClass * klass) {
        vala_null_literal_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_null_literal_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_null_literal_real_to_string;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_null_literal_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_null_literal_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_null_literal_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_null_literal_real_accept;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_null_literal_real_to_string;
+       ((ValaExpressionClass *) klass)->is_pure = vala_null_literal_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_null_literal_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_null_literal_real_emit;
 }
 
 
index 8f62d49..3fc6f93 100644 (file)
@@ -572,10 +572,10 @@ static gchar* vala_null_type_real_to_qualified_string (ValaDataType* base, ValaS
 
 static void vala_null_type_class_init (ValaNullTypeClass * klass) {
        vala_null_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_DATA_TYPE_CLASS (klass)->compatible = vala_null_type_real_compatible;
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_null_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->is_disposable = vala_null_type_real_is_disposable;
-       VALA_DATA_TYPE_CLASS (klass)->to_qualified_string = vala_null_type_real_to_qualified_string;
+       ((ValaDataTypeClass *) klass)->compatible = vala_null_type_real_compatible;
+       ((ValaDataTypeClass *) klass)->copy = vala_null_type_real_copy;
+       ((ValaDataTypeClass *) klass)->is_disposable = vala_null_type_real_is_disposable;
+       ((ValaDataTypeClass *) klass)->to_qualified_string = vala_null_type_real_to_qualified_string;
 }
 
 
index 17b38fc..bf2e481 100644 (file)
@@ -1457,6 +1457,9 @@ GType vala_typecheck_get_type (void) G_GNUC_CONST;
 GType vala_conditional_expression_get_type (void) G_GNUC_CONST;
 GType vala_lambda_expression_get_type (void) G_GNUC_CONST;
 GType vala_assignment_get_type (void) G_GNUC_CONST;
+gchar* vala_string_literal_eval (ValaStringLiteral* self);
+gboolean vala_semantic_analyzer_check_print_format (ValaSemanticAnalyzer* self, const gchar* format, ValaIterator* arg_it, ValaSourceReference* source_reference);
+gboolean vala_semantic_analyzer_check_variadic_arguments (ValaSemanticAnalyzer* self, ValaIterator* arg_it, gint i, ValaSourceReference* source_reference);
 void vala_semantic_analyzer_visit_member_initializer (ValaSemanticAnalyzer* self, ValaMemberInitializer* init, ValaDataType* type);
 gchar* vala_code_node_get_temp_name (void);
 ValaLocalVariable* vala_local_variable_new (ValaDataType* variable_type, const gchar* name, ValaExpression* initializer, ValaSourceReference* source_reference);
@@ -1826,9 +1829,9 @@ static gboolean vala_object_creation_expression_real_check (ValaCodeNode* base,
        ValaSymbol* _tmp240_ = NULL;
        ValaSymbol* _tmp252_ = NULL;
        ValaSymbol* _tmp253_ = NULL;
-       gboolean _tmp438_ = FALSE;
-       gboolean _tmp497_ = FALSE;
-       gboolean _tmp498_ = FALSE;
+       gboolean _tmp462_ = FALSE;
+       gboolean _tmp521_ = FALSE;
+       gboolean _tmp522_ = FALSE;
        self = (ValaObjectCreationExpression*) base;
        g_return_val_if_fail (context != NULL, FALSE);
        _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
@@ -3051,6 +3054,21 @@ static gboolean vala_object_creation_expression_real_check (ValaCodeNode* base,
                                ValaExpression* _tmp409_ = NULL;
                                ValaDataType* _tmp410_ = NULL;
                                ValaDataType* _tmp411_ = NULL;
+                               ValaStringLiteral* format_literal = NULL;
+                               ValaExpression* _tmp422_ = NULL;
+                               ValaStringLiteral* _tmp423_ = NULL;
+                               ValaStringLiteral* _tmp424_ = NULL;
+                               ValaList* _tmp435_ = NULL;
+                               ValaList* _tmp436_ = NULL;
+                               ValaIterator* _tmp437_ = NULL;
+                               ValaIterator* _tmp438_ = NULL;
+                               ValaCodeContext* _tmp439_ = NULL;
+                               ValaSemanticAnalyzer* _tmp440_ = NULL;
+                               ValaSemanticAnalyzer* _tmp441_ = NULL;
+                               ValaIterator* _tmp442_ = NULL;
+                               ValaSourceReference* _tmp443_ = NULL;
+                               ValaSourceReference* _tmp444_ = NULL;
+                               gboolean _tmp445_ = FALSE;
                                _tmp401_ = vala_object_creation_expression_get_argument_list (self);
                                _tmp402_ = _tmp401_;
                                _tmp403_ = vala_iterable_iterator ((ValaIterable*) _tmp402_);
@@ -3094,6 +3112,70 @@ static gboolean vala_object_creation_expression_real_check (ValaCodeNode* base,
                                        _tmp421_ = _tmp420_;
                                        vala_report_error (_tmp421_, "Invalid type for argument 1");
                                }
+                               _tmp422_ = ex;
+                               _tmp423_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp422_, VALA_TYPE_STRING_LITERAL) ? ((ValaStringLiteral*) _tmp422_) : NULL);
+                               format_literal = _tmp423_;
+                               _tmp424_ = format_literal;
+                               if (_tmp424_ != NULL) {
+                                       gchar* format = NULL;
+                                       ValaStringLiteral* _tmp425_ = NULL;
+                                       gchar* _tmp426_ = NULL;
+                                       ValaCodeContext* _tmp427_ = NULL;
+                                       ValaSemanticAnalyzer* _tmp428_ = NULL;
+                                       ValaSemanticAnalyzer* _tmp429_ = NULL;
+                                       const gchar* _tmp430_ = NULL;
+                                       ValaIterator* _tmp431_ = NULL;
+                                       ValaSourceReference* _tmp432_ = NULL;
+                                       ValaSourceReference* _tmp433_ = NULL;
+                                       gboolean _tmp434_ = FALSE;
+                                       _tmp425_ = format_literal;
+                                       _tmp426_ = vala_string_literal_eval (_tmp425_);
+                                       format = _tmp426_;
+                                       _tmp427_ = context;
+                                       _tmp428_ = vala_code_context_get_analyzer (_tmp427_);
+                                       _tmp429_ = _tmp428_;
+                                       _tmp430_ = format;
+                                       _tmp431_ = arg_it;
+                                       _tmp432_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                       _tmp433_ = _tmp432_;
+                                       _tmp434_ = vala_semantic_analyzer_check_print_format (_tmp429_, _tmp430_, _tmp431_, _tmp433_);
+                                       if (!_tmp434_) {
+                                               vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
+                                               result = FALSE;
+                                               _g_free0 (format);
+                                               _vala_code_node_unref0 (format_literal);
+                                               _vala_code_node_unref0 (ex);
+                                               _vala_iterator_unref0 (arg_it);
+                                               _vala_code_node_unref0 (type);
+                                               return result;
+                                       }
+                                       _g_free0 (format);
+                               }
+                               _tmp435_ = vala_object_creation_expression_get_argument_list (self);
+                               _tmp436_ = _tmp435_;
+                               _tmp437_ = vala_iterable_iterator ((ValaIterable*) _tmp436_);
+                               _vala_iterator_unref0 (arg_it);
+                               arg_it = _tmp437_;
+                               _vala_iterable_unref0 (_tmp436_);
+                               _tmp438_ = arg_it;
+                               vala_iterator_next (_tmp438_);
+                               _tmp439_ = context;
+                               _tmp440_ = vala_code_context_get_analyzer (_tmp439_);
+                               _tmp441_ = _tmp440_;
+                               _tmp442_ = arg_it;
+                               _tmp443_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp444_ = _tmp443_;
+                               _tmp445_ = vala_semantic_analyzer_check_variadic_arguments (_tmp441_, _tmp442_, 1, _tmp444_);
+                               if (!_tmp445_) {
+                                       vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
+                                       result = FALSE;
+                                       _vala_code_node_unref0 (format_literal);
+                                       _vala_code_node_unref0 (ex);
+                                       _vala_iterator_unref0 (arg_it);
+                                       _vala_code_node_unref0 (type);
+                                       return result;
+                               }
+                               _vala_code_node_unref0 (format_literal);
                                _vala_code_node_unref0 (ex);
                                _vala_iterator_unref0 (arg_it);
                        }
@@ -3101,201 +3183,201 @@ static gboolean vala_object_creation_expression_real_check (ValaCodeNode* base,
        }
        {
                ValaList* _init_list = NULL;
-               ValaList* _tmp422_ = NULL;
+               ValaList* _tmp446_ = NULL;
                gint _init_size = 0;
-               ValaList* _tmp423_ = NULL;
-               gint _tmp424_ = 0;
-               gint _tmp425_ = 0;
+               ValaList* _tmp447_ = NULL;
+               gint _tmp448_ = 0;
+               gint _tmp449_ = 0;
                gint _init_index = 0;
-               _tmp422_ = vala_object_creation_expression_get_object_initializer (self);
-               _init_list = _tmp422_;
-               _tmp423_ = _init_list;
-               _tmp424_ = vala_collection_get_size ((ValaCollection*) _tmp423_);
-               _tmp425_ = _tmp424_;
-               _init_size = _tmp425_;
+               _tmp446_ = vala_object_creation_expression_get_object_initializer (self);
+               _init_list = _tmp446_;
+               _tmp447_ = _init_list;
+               _tmp448_ = vala_collection_get_size ((ValaCollection*) _tmp447_);
+               _tmp449_ = _tmp448_;
+               _init_size = _tmp449_;
                _init_index = -1;
                while (TRUE) {
-                       gint _tmp426_ = 0;
-                       gint _tmp427_ = 0;
-                       gint _tmp428_ = 0;
+                       gint _tmp450_ = 0;
+                       gint _tmp451_ = 0;
+                       gint _tmp452_ = 0;
                        ValaMemberInitializer* init = NULL;
-                       ValaList* _tmp429_ = NULL;
-                       gint _tmp430_ = 0;
-                       gpointer _tmp431_ = NULL;
-                       ValaCodeContext* _tmp432_ = NULL;
-                       ValaSemanticAnalyzer* _tmp433_ = NULL;
-                       ValaSemanticAnalyzer* _tmp434_ = NULL;
-                       ValaMemberInitializer* _tmp435_ = NULL;
-                       ValaDataType* _tmp436_ = NULL;
-                       ValaDataType* _tmp437_ = NULL;
-                       _tmp426_ = _init_index;
-                       _init_index = _tmp426_ + 1;
-                       _tmp427_ = _init_index;
-                       _tmp428_ = _init_size;
-                       if (!(_tmp427_ < _tmp428_)) {
+                       ValaList* _tmp453_ = NULL;
+                       gint _tmp454_ = 0;
+                       gpointer _tmp455_ = NULL;
+                       ValaCodeContext* _tmp456_ = NULL;
+                       ValaSemanticAnalyzer* _tmp457_ = NULL;
+                       ValaSemanticAnalyzer* _tmp458_ = NULL;
+                       ValaMemberInitializer* _tmp459_ = NULL;
+                       ValaDataType* _tmp460_ = NULL;
+                       ValaDataType* _tmp461_ = NULL;
+                       _tmp450_ = _init_index;
+                       _init_index = _tmp450_ + 1;
+                       _tmp451_ = _init_index;
+                       _tmp452_ = _init_size;
+                       if (!(_tmp451_ < _tmp452_)) {
                                break;
                        }
-                       _tmp429_ = _init_list;
-                       _tmp430_ = _init_index;
-                       _tmp431_ = vala_list_get (_tmp429_, _tmp430_);
-                       init = (ValaMemberInitializer*) _tmp431_;
-                       _tmp432_ = context;
-                       _tmp433_ = vala_code_context_get_analyzer (_tmp432_);
-                       _tmp434_ = _tmp433_;
-                       _tmp435_ = init;
-                       _tmp436_ = vala_object_creation_expression_get_type_reference (self);
-                       _tmp437_ = _tmp436_;
-                       vala_semantic_analyzer_visit_member_initializer (_tmp434_, _tmp435_, _tmp437_);
+                       _tmp453_ = _init_list;
+                       _tmp454_ = _init_index;
+                       _tmp455_ = vala_list_get (_tmp453_, _tmp454_);
+                       init = (ValaMemberInitializer*) _tmp455_;
+                       _tmp456_ = context;
+                       _tmp457_ = vala_code_context_get_analyzer (_tmp456_);
+                       _tmp458_ = _tmp457_;
+                       _tmp459_ = init;
+                       _tmp460_ = vala_object_creation_expression_get_type_reference (self);
+                       _tmp461_ = _tmp460_;
+                       vala_semantic_analyzer_visit_member_initializer (_tmp458_, _tmp459_, _tmp461_);
                        _vala_code_node_unref0 (init);
                }
                _vala_iterable_unref0 (_init_list);
        }
-       _tmp438_ = may_throw;
-       if (_tmp438_) {
-               gboolean _tmp439_ = FALSE;
-               ValaCodeNode* _tmp440_ = NULL;
-               ValaCodeNode* _tmp441_ = NULL;
-               _tmp440_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
-               _tmp441_ = _tmp440_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp441_, VALA_TYPE_LOCAL_VARIABLE)) {
-                       _tmp439_ = TRUE;
+       _tmp462_ = may_throw;
+       if (_tmp462_) {
+               gboolean _tmp463_ = FALSE;
+               ValaCodeNode* _tmp464_ = NULL;
+               ValaCodeNode* _tmp465_ = NULL;
+               _tmp464_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
+               _tmp465_ = _tmp464_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp465_, VALA_TYPE_LOCAL_VARIABLE)) {
+                       _tmp463_ = TRUE;
                } else {
-                       ValaCodeNode* _tmp442_ = NULL;
-                       ValaCodeNode* _tmp443_ = NULL;
-                       _tmp442_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
-                       _tmp443_ = _tmp442_;
-                       _tmp439_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp443_, VALA_TYPE_EXPRESSION_STATEMENT);
+                       ValaCodeNode* _tmp466_ = NULL;
+                       ValaCodeNode* _tmp467_ = NULL;
+                       _tmp466_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
+                       _tmp467_ = _tmp466_;
+                       _tmp463_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp467_, VALA_TYPE_EXPRESSION_STATEMENT);
                }
-               if (_tmp439_) {
+               if (_tmp463_) {
                } else {
-                       ValaCodeContext* _tmp444_ = NULL;
-                       ValaSemanticAnalyzer* _tmp445_ = NULL;
-                       ValaSemanticAnalyzer* _tmp446_ = NULL;
-                       ValaSymbol* _tmp447_ = NULL;
-                       ValaSymbol* _tmp448_ = NULL;
-                       _tmp444_ = context;
-                       _tmp445_ = vala_code_context_get_analyzer (_tmp444_);
-                       _tmp446_ = _tmp445_;
-                       _tmp447_ = vala_semantic_analyzer_get_current_symbol (_tmp446_);
-                       _tmp448_ = _tmp447_;
-                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp448_, VALA_TYPE_BLOCK)) {
-                               ValaSourceReference* _tmp449_ = NULL;
-                               ValaSourceReference* _tmp450_ = NULL;
-                               _tmp449_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp450_ = _tmp449_;
-                               vala_report_error (_tmp450_, "Field initializers must not throw errors");
+                       ValaCodeContext* _tmp468_ = NULL;
+                       ValaSemanticAnalyzer* _tmp469_ = NULL;
+                       ValaSemanticAnalyzer* _tmp470_ = NULL;
+                       ValaSymbol* _tmp471_ = NULL;
+                       ValaSymbol* _tmp472_ = NULL;
+                       _tmp468_ = context;
+                       _tmp469_ = vala_code_context_get_analyzer (_tmp468_);
+                       _tmp470_ = _tmp469_;
+                       _tmp471_ = vala_semantic_analyzer_get_current_symbol (_tmp470_);
+                       _tmp472_ = _tmp471_;
+                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp472_, VALA_TYPE_BLOCK)) {
+                               ValaSourceReference* _tmp473_ = NULL;
+                               ValaSourceReference* _tmp474_ = NULL;
+                               _tmp473_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp474_ = _tmp473_;
+                               vala_report_error (_tmp474_, "Field initializers must not throw errors");
                        } else {
                                ValaCodeNode* old_parent_node = NULL;
-                               ValaCodeNode* _tmp451_ = NULL;
-                               ValaCodeNode* _tmp452_ = NULL;
-                               ValaCodeNode* _tmp453_ = NULL;
+                               ValaCodeNode* _tmp475_ = NULL;
+                               ValaCodeNode* _tmp476_ = NULL;
+                               ValaCodeNode* _tmp477_ = NULL;
                                ValaLocalVariable* local = NULL;
-                               ValaDataType* _tmp454_ = NULL;
-                               ValaDataType* _tmp455_ = NULL;
-                               ValaDataType* _tmp456_ = NULL;
-                               ValaDataType* _tmp457_ = NULL;
-                               gchar* _tmp458_ = NULL;
-                               gchar* _tmp459_ = NULL;
-                               ValaSourceReference* _tmp460_ = NULL;
-                               ValaSourceReference* _tmp461_ = NULL;
-                               ValaLocalVariable* _tmp462_ = NULL;
-                               ValaLocalVariable* _tmp463_ = NULL;
+                               ValaDataType* _tmp478_ = NULL;
+                               ValaDataType* _tmp479_ = NULL;
+                               ValaDataType* _tmp480_ = NULL;
+                               ValaDataType* _tmp481_ = NULL;
+                               gchar* _tmp482_ = NULL;
+                               gchar* _tmp483_ = NULL;
+                               ValaSourceReference* _tmp484_ = NULL;
+                               ValaSourceReference* _tmp485_ = NULL;
+                               ValaLocalVariable* _tmp486_ = NULL;
+                               ValaLocalVariable* _tmp487_ = NULL;
                                ValaDeclarationStatement* decl = NULL;
-                               ValaLocalVariable* _tmp464_ = NULL;
-                               ValaSourceReference* _tmp465_ = NULL;
-                               ValaSourceReference* _tmp466_ = NULL;
-                               ValaDeclarationStatement* _tmp467_ = NULL;
-                               ValaCodeContext* _tmp468_ = NULL;
-                               ValaSemanticAnalyzer* _tmp469_ = NULL;
-                               ValaSemanticAnalyzer* _tmp470_ = NULL;
-                               ValaBlock* _tmp471_ = NULL;
-                               ValaDeclarationStatement* _tmp472_ = NULL;
+                               ValaLocalVariable* _tmp488_ = NULL;
+                               ValaSourceReference* _tmp489_ = NULL;
+                               ValaSourceReference* _tmp490_ = NULL;
+                               ValaDeclarationStatement* _tmp491_ = NULL;
+                               ValaCodeContext* _tmp492_ = NULL;
+                               ValaSemanticAnalyzer* _tmp493_ = NULL;
+                               ValaSemanticAnalyzer* _tmp494_ = NULL;
+                               ValaBlock* _tmp495_ = NULL;
+                               ValaDeclarationStatement* _tmp496_ = NULL;
                                ValaExpression* temp_access = NULL;
-                               ValaLocalVariable* _tmp473_ = NULL;
-                               ValaDataType* _tmp474_ = NULL;
-                               ValaDataType* _tmp475_ = NULL;
-                               ValaExpression* _tmp476_ = NULL;
-                               ValaLocalVariable* _tmp477_ = NULL;
-                               ValaDeclarationStatement* _tmp478_ = NULL;
-                               ValaCodeContext* _tmp479_ = NULL;
+                               ValaLocalVariable* _tmp497_ = NULL;
+                               ValaDataType* _tmp498_ = NULL;
+                               ValaDataType* _tmp499_ = NULL;
+                               ValaExpression* _tmp500_ = NULL;
+                               ValaLocalVariable* _tmp501_ = NULL;
+                               ValaDeclarationStatement* _tmp502_ = NULL;
+                               ValaCodeContext* _tmp503_ = NULL;
                                ValaBlock* block = NULL;
-                               ValaCodeContext* _tmp480_ = NULL;
-                               ValaSemanticAnalyzer* _tmp481_ = NULL;
-                               ValaSemanticAnalyzer* _tmp482_ = NULL;
-                               ValaSymbol* _tmp483_ = NULL;
-                               ValaSymbol* _tmp484_ = NULL;
-                               ValaBlock* _tmp485_ = NULL;
-                               ValaBlock* _tmp486_ = NULL;
-                               ValaLocalVariable* _tmp487_ = NULL;
-                               ValaCodeContext* _tmp488_ = NULL;
-                               ValaSemanticAnalyzer* _tmp489_ = NULL;
-                               ValaSemanticAnalyzer* _tmp490_ = NULL;
-                               ValaBlock* _tmp491_ = NULL;
-                               ValaLocalVariable* _tmp492_ = NULL;
-                               ValaCodeNode* _tmp493_ = NULL;
-                               ValaExpression* _tmp494_ = NULL;
-                               ValaExpression* _tmp495_ = NULL;
-                               ValaCodeContext* _tmp496_ = NULL;
-                               _tmp451_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
-                               _tmp452_ = _tmp451_;
-                               _tmp453_ = _vala_code_node_ref0 (_tmp452_);
-                               old_parent_node = _tmp453_;
-                               _tmp454_ = vala_expression_get_value_type ((ValaExpression*) self);
-                               _tmp455_ = _tmp454_;
-                               _tmp456_ = vala_data_type_copy (_tmp455_);
-                               _tmp457_ = _tmp456_;
-                               _tmp458_ = vala_code_node_get_temp_name ();
-                               _tmp459_ = _tmp458_;
-                               _tmp460_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp461_ = _tmp460_;
-                               _tmp462_ = vala_local_variable_new (_tmp457_, _tmp459_, NULL, _tmp461_);
-                               _tmp463_ = _tmp462_;
-                               _g_free0 (_tmp459_);
-                               _vala_code_node_unref0 (_tmp457_);
-                               local = _tmp463_;
-                               _tmp464_ = local;
-                               _tmp465_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp466_ = _tmp465_;
-                               _tmp467_ = vala_declaration_statement_new ((ValaSymbol*) _tmp464_, _tmp466_);
-                               decl = _tmp467_;
-                               _tmp468_ = context;
-                               _tmp469_ = vala_code_context_get_analyzer (_tmp468_);
-                               _tmp470_ = _tmp469_;
-                               _tmp471_ = _tmp470_->insert_block;
-                               _tmp472_ = decl;
-                               vala_expression_insert_statement ((ValaExpression*) self, _tmp471_, (ValaStatement*) _tmp472_);
-                               _tmp473_ = local;
-                               _tmp474_ = vala_expression_get_target_type ((ValaExpression*) self);
-                               _tmp475_ = _tmp474_;
-                               _tmp476_ = vala_semantic_analyzer_create_temp_access (_tmp473_, _tmp475_);
-                               temp_access = _tmp476_;
-                               _tmp477_ = local;
-                               vala_variable_set_initializer ((ValaVariable*) _tmp477_, (ValaExpression*) self);
-                               _tmp478_ = decl;
-                               _tmp479_ = context;
-                               vala_code_node_check ((ValaCodeNode*) _tmp478_, _tmp479_);
-                               _tmp480_ = context;
-                               _tmp481_ = vala_code_context_get_analyzer (_tmp480_);
-                               _tmp482_ = _tmp481_;
-                               _tmp483_ = vala_semantic_analyzer_get_current_symbol (_tmp482_);
-                               _tmp484_ = _tmp483_;
-                               _tmp485_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp484_, VALA_TYPE_BLOCK, ValaBlock));
-                               block = _tmp485_;
-                               _tmp486_ = block;
-                               _tmp487_ = local;
-                               vala_block_remove_local_variable (_tmp486_, _tmp487_);
-                               _tmp488_ = context;
-                               _tmp489_ = vala_code_context_get_analyzer (_tmp488_);
+                               ValaCodeContext* _tmp504_ = NULL;
+                               ValaSemanticAnalyzer* _tmp505_ = NULL;
+                               ValaSemanticAnalyzer* _tmp506_ = NULL;
+                               ValaSymbol* _tmp507_ = NULL;
+                               ValaSymbol* _tmp508_ = NULL;
+                               ValaBlock* _tmp509_ = NULL;
+                               ValaBlock* _tmp510_ = NULL;
+                               ValaLocalVariable* _tmp511_ = NULL;
+                               ValaCodeContext* _tmp512_ = NULL;
+                               ValaSemanticAnalyzer* _tmp513_ = NULL;
+                               ValaSemanticAnalyzer* _tmp514_ = NULL;
+                               ValaBlock* _tmp515_ = NULL;
+                               ValaLocalVariable* _tmp516_ = NULL;
+                               ValaCodeNode* _tmp517_ = NULL;
+                               ValaExpression* _tmp518_ = NULL;
+                               ValaExpression* _tmp519_ = NULL;
+                               ValaCodeContext* _tmp520_ = NULL;
+                               _tmp475_ = vala_code_node_get_parent_node ((ValaCodeNode*) self);
+                               _tmp476_ = _tmp475_;
+                               _tmp477_ = _vala_code_node_ref0 (_tmp476_);
+                               old_parent_node = _tmp477_;
+                               _tmp478_ = vala_expression_get_value_type ((ValaExpression*) self);
+                               _tmp479_ = _tmp478_;
+                               _tmp480_ = vala_data_type_copy (_tmp479_);
+                               _tmp481_ = _tmp480_;
+                               _tmp482_ = vala_code_node_get_temp_name ();
+                               _tmp483_ = _tmp482_;
+                               _tmp484_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp485_ = _tmp484_;
+                               _tmp486_ = vala_local_variable_new (_tmp481_, _tmp483_, NULL, _tmp485_);
+                               _tmp487_ = _tmp486_;
+                               _g_free0 (_tmp483_);
+                               _vala_code_node_unref0 (_tmp481_);
+                               local = _tmp487_;
+                               _tmp488_ = local;
+                               _tmp489_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                _tmp490_ = _tmp489_;
-                               _tmp491_ = _tmp490_->insert_block;
-                               _tmp492_ = local;
-                               vala_block_add_local_variable (_tmp491_, _tmp492_);
-                               _tmp493_ = old_parent_node;
-                               _tmp494_ = temp_access;
-                               vala_code_node_replace_expression (_tmp493_, (ValaExpression*) self, _tmp494_);
-                               _tmp495_ = temp_access;
-                               _tmp496_ = context;
-                               vala_code_node_check ((ValaCodeNode*) _tmp495_, _tmp496_);
+                               _tmp491_ = vala_declaration_statement_new ((ValaSymbol*) _tmp488_, _tmp490_);
+                               decl = _tmp491_;
+                               _tmp492_ = context;
+                               _tmp493_ = vala_code_context_get_analyzer (_tmp492_);
+                               _tmp494_ = _tmp493_;
+                               _tmp495_ = _tmp494_->insert_block;
+                               _tmp496_ = decl;
+                               vala_expression_insert_statement ((ValaExpression*) self, _tmp495_, (ValaStatement*) _tmp496_);
+                               _tmp497_ = local;
+                               _tmp498_ = vala_expression_get_target_type ((ValaExpression*) self);
+                               _tmp499_ = _tmp498_;
+                               _tmp500_ = vala_semantic_analyzer_create_temp_access (_tmp497_, _tmp499_);
+                               temp_access = _tmp500_;
+                               _tmp501_ = local;
+                               vala_variable_set_initializer ((ValaVariable*) _tmp501_, (ValaExpression*) self);
+                               _tmp502_ = decl;
+                               _tmp503_ = context;
+                               vala_code_node_check ((ValaCodeNode*) _tmp502_, _tmp503_);
+                               _tmp504_ = context;
+                               _tmp505_ = vala_code_context_get_analyzer (_tmp504_);
+                               _tmp506_ = _tmp505_;
+                               _tmp507_ = vala_semantic_analyzer_get_current_symbol (_tmp506_);
+                               _tmp508_ = _tmp507_;
+                               _tmp509_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp508_, VALA_TYPE_BLOCK, ValaBlock));
+                               block = _tmp509_;
+                               _tmp510_ = block;
+                               _tmp511_ = local;
+                               vala_block_remove_local_variable (_tmp510_, _tmp511_);
+                               _tmp512_ = context;
+                               _tmp513_ = vala_code_context_get_analyzer (_tmp512_);
+                               _tmp514_ = _tmp513_;
+                               _tmp515_ = _tmp514_->insert_block;
+                               _tmp516_ = local;
+                               vala_block_add_local_variable (_tmp515_, _tmp516_);
+                               _tmp517_ = old_parent_node;
+                               _tmp518_ = temp_access;
+                               vala_code_node_replace_expression (_tmp517_, (ValaExpression*) self, _tmp518_);
+                               _tmp519_ = temp_access;
+                               _tmp520_ = context;
+                               vala_code_node_check ((ValaCodeNode*) _tmp519_, _tmp520_);
                                _vala_code_node_unref0 (block);
                                _vala_code_node_unref0 (temp_access);
                                _vala_code_node_unref0 (decl);
@@ -3304,9 +3386,9 @@ static gboolean vala_object_creation_expression_real_check (ValaCodeNode* base,
                        }
                }
        }
-       _tmp497_ = vala_code_node_get_error ((ValaCodeNode*) self);
-       _tmp498_ = _tmp497_;
-       result = !_tmp498_;
+       _tmp521_ = vala_code_node_get_error ((ValaCodeNode*) self);
+       _tmp522_ = _tmp521_;
+       result = !_tmp522_;
        _vala_code_node_unref0 (type);
        return result;
 }
@@ -3516,6 +3598,51 @@ static void vala_object_creation_expression_real_get_used_variables (ValaCodeNod
                }
                _vala_iterable_unref0 (_arg_list);
        }
+       {
+               ValaList* _init_list = NULL;
+               ValaList* _tmp13_ = NULL;
+               ValaList* _tmp14_ = NULL;
+               gint _init_size = 0;
+               ValaList* _tmp15_ = NULL;
+               gint _tmp16_ = 0;
+               gint _tmp17_ = 0;
+               gint _init_index = 0;
+               _tmp13_ = self->priv->object_initializer;
+               _tmp14_ = _vala_iterable_ref0 (_tmp13_);
+               _init_list = _tmp14_;
+               _tmp15_ = _init_list;
+               _tmp16_ = vala_collection_get_size ((ValaCollection*) _tmp15_);
+               _tmp17_ = _tmp16_;
+               _init_size = _tmp17_;
+               _init_index = -1;
+               while (TRUE) {
+                       gint _tmp18_ = 0;
+                       gint _tmp19_ = 0;
+                       gint _tmp20_ = 0;
+                       ValaMemberInitializer* init = NULL;
+                       ValaList* _tmp21_ = NULL;
+                       gint _tmp22_ = 0;
+                       gpointer _tmp23_ = NULL;
+                       ValaMemberInitializer* _tmp24_ = NULL;
+                       ValaCollection* _tmp25_ = NULL;
+                       _tmp18_ = _init_index;
+                       _init_index = _tmp18_ + 1;
+                       _tmp19_ = _init_index;
+                       _tmp20_ = _init_size;
+                       if (!(_tmp19_ < _tmp20_)) {
+                               break;
+                       }
+                       _tmp21_ = _init_list;
+                       _tmp22_ = _init_index;
+                       _tmp23_ = vala_list_get (_tmp21_, _tmp22_);
+                       init = (ValaMemberInitializer*) _tmp23_;
+                       _tmp24_ = init;
+                       _tmp25_ = collection;
+                       vala_code_node_get_used_variables ((ValaCodeNode*) _tmp24_, _tmp25_);
+                       _vala_code_node_unref0 (init);
+               }
+               _vala_iterable_unref0 (_init_list);
+       }
 }
 
 
@@ -3602,17 +3729,17 @@ void vala_object_creation_expression_set_struct_creation (ValaObjectCreationExpr
 
 static void vala_object_creation_expression_class_init (ValaObjectCreationExpressionClass * klass) {
        vala_object_creation_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_object_creation_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_object_creation_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaObjectCreationExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_object_creation_expression_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_object_creation_expression_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_object_creation_expression_real_replace_expression;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_object_creation_expression_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_object_creation_expression_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_object_creation_expression_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_object_creation_expression_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_object_creation_expression_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_object_creation_expression_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_object_creation_expression_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_object_creation_expression_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_object_creation_expression_real_replace_expression;
+       ((ValaExpressionClass *) klass)->is_pure = vala_object_creation_expression_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_object_creation_expression_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_object_creation_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_object_creation_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_object_creation_expression_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_object_creation_expression_real_get_used_variables;
 }
 
 
index 939b8a6..daf3113 100644 (file)
@@ -396,6 +396,22 @@ public class Vala.ObjectCreationExpression : Expression {
                                        error = true;
                                        Report.error (source_reference, "Invalid type for argument 1");
                                }
+
+                               var format_literal = ex as StringLiteral;
+                               if (format_literal != null) {
+                                       var format = format_literal.eval ();
+                                       if (!context.analyzer.check_print_format (format, arg_it, source_reference)) {
+                                               error = true;
+                                               return false;
+                                       }
+                               }
+
+                               arg_it = get_argument_list ().iterator ();
+                               arg_it.next ();
+                               if (!context.analyzer.check_variadic_arguments (arg_it, 1, source_reference)) {
+                                       error = true;
+                                       return false;
+                               }
                        }
                }
 
@@ -463,5 +479,9 @@ public class Vala.ObjectCreationExpression : Expression {
                foreach (Expression arg in argument_list) {
                        arg.get_used_variables (collection);
                }
+
+               foreach (MemberInitializer init in object_initializer) {
+                       init.get_used_variables (collection);
+               }
        }
 }
index 469864c..e8a9af0 100644 (file)
@@ -853,14 +853,14 @@ void vala_object_type_set_type_symbol (ValaObjectType* self, ValaObjectTypeSymbo
 
 static void vala_object_type_class_init (ValaObjectTypeClass * klass) {
        vala_object_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_object_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_object_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaObjectTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_object_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->stricter = vala_object_type_real_stricter;
-       VALA_DATA_TYPE_CLASS (klass)->is_invokable = vala_object_type_real_is_invokable;
-       VALA_DATA_TYPE_CLASS (klass)->get_return_type = vala_object_type_real_get_return_type;
-       VALA_DATA_TYPE_CLASS (klass)->get_parameters = vala_object_type_real_get_parameters;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_object_type_real_check;
+       ((ValaDataTypeClass *) klass)->copy = vala_object_type_real_copy;
+       ((ValaDataTypeClass *) klass)->stricter = vala_object_type_real_stricter;
+       ((ValaDataTypeClass *) klass)->is_invokable = vala_object_type_real_is_invokable;
+       ((ValaDataTypeClass *) klass)->get_return_type = vala_object_type_real_get_return_type;
+       ((ValaDataTypeClass *) klass)->get_parameters = vala_object_type_real_get_parameters;
+       ((ValaCodeNodeClass *) klass)->check = vala_object_type_real_check;
 }
 
 
index 727fda8..865d805 100644 (file)
@@ -1005,12 +1005,12 @@ void vala_object_type_symbol_add_hidden_method (ValaObjectTypeSymbol* self, Vala
 
 static void vala_object_type_symbol_class_init (ValaObjectTypeSymbolClass * klass) {
        vala_object_type_symbol_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_object_type_symbol_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_object_type_symbol_finalize;
        g_type_class_add_private (klass, sizeof (ValaObjectTypeSymbolPrivate));
-       VALA_OBJECT_TYPE_SYMBOL_CLASS (klass)->get_methods = vala_object_type_symbol_real_get_methods;
-       VALA_OBJECT_TYPE_SYMBOL_CLASS (klass)->get_signals = vala_object_type_symbol_real_get_signals;
-       VALA_OBJECT_TYPE_SYMBOL_CLASS (klass)->get_properties = vala_object_type_symbol_real_get_properties;
-       VALA_TYPESYMBOL_CLASS (klass)->get_type_parameter_index = vala_object_type_symbol_real_get_type_parameter_index;
+       ((ValaObjectTypeSymbolClass *) klass)->get_methods = vala_object_type_symbol_real_get_methods;
+       ((ValaObjectTypeSymbolClass *) klass)->get_signals = vala_object_type_symbol_real_get_signals;
+       ((ValaObjectTypeSymbolClass *) klass)->get_properties = vala_object_type_symbol_real_get_properties;
+       ((ValaTypeSymbolClass *) klass)->get_type_parameter_index = vala_object_type_symbol_real_get_type_parameter_index;
 }
 
 
index a2c0675..61a745e 100644 (file)
@@ -1463,13 +1463,13 @@ void vala_parameter_set_base_parameter (ValaParameter* self, ValaParameter* valu
 
 static void vala_parameter_class_init (ValaParameterClass * klass) {
        vala_parameter_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_parameter_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_parameter_finalize;
        g_type_class_add_private (klass, sizeof (ValaParameterPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_parameter_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_parameter_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_parameter_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_parameter_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_parameter_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_parameter_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_parameter_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_parameter_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_parameter_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->check = vala_parameter_real_check;
 }
 
 
index 083a8da..a360a1f 100644 (file)
@@ -1646,8 +1646,8 @@ GType vala_comment_get_type (void) G_GNUC_CONST;
 enum  {
        VALA_PARSER_DUMMY_PROPERTY
 };
-static GType vala_parser_modifier_flags_get_type (void) G_GNUC_UNUSED;
-static GType vala_parser_recovery_state_get_type (void) G_GNUC_UNUSED;
+static GType vala_parser_modifier_flags_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
+static GType vala_parser_recovery_state_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
 #define VALA_PARSER_BUFFER_SIZE 32
 ValaParser* vala_parser_new (void);
 ValaParser* vala_parser_construct (GType object_type);
@@ -1722,9 +1722,10 @@ ValaUnresolvedSymbol* vala_unresolved_symbol_new (ValaUnresolvedSymbol* inner, c
 ValaUnresolvedSymbol* vala_unresolved_symbol_construct (GType object_type, ValaUnresolvedSymbol* inner, const gchar* name, ValaSourceReference* source_reference);
 void vala_unresolved_symbol_set_qualified (ValaUnresolvedSymbol* self, gboolean value);
 static void vala_parser_skip_type (ValaParser* self, GError** error);
+static gboolean vala_parser_is_inner_array_type (ValaParser* self);
 static void vala_parser_skip_type_argument_list (ValaParser* self, GError** error);
 static ValaExpression* vala_parser_parse_expression (ValaParser* self, GError** error);
-static ValaDataType* vala_parser_parse_type (ValaParser* self, gboolean owned_by_default, gboolean can_weak_ref, GError** error);
+static ValaDataType* vala_parser_parse_type (ValaParser* self, gboolean owned_by_default, gboolean can_weak_ref, gboolean require_unowned, GError** error);
 gboolean vala_code_context_get_deprecated (ValaCodeContext* self);
 void vala_report_warning (ValaSourceReference* source, const gchar* message);
 ValaVoidType* vala_void_type_new (ValaSourceReference* source_reference);
@@ -1747,10 +1748,9 @@ ValaArrayType* vala_array_type_construct (GType object_type, ValaDataType* eleme
 void vala_array_type_set_invalid_syntax (ValaArrayType* self, gboolean value);
 void vala_data_type_set_is_dynamic (ValaDataType* self, gboolean value);
 static ValaDataType* vala_parser_parse_inline_array_type (ValaParser* self, ValaDataType* type, GError** error);
-const gchar* vala_integer_literal_get_value (ValaIntegerLiteral* self);
 void vala_array_type_set_inline_allocated (ValaArrayType* self, gboolean value);
 void vala_array_type_set_fixed_length (ValaArrayType* self, gboolean value);
-void vala_array_type_set_length (ValaArrayType* self, gint value);
+void vala_array_type_set_length (ValaArrayType* self, ValaExpression* value);
 gboolean vala_data_type_get_value_owned (ValaDataType* self);
 static ValaList* vala_parser_parse_argument_list (ValaParser* self, GError** error);
 static ValaExpression* vala_parser_parse_argument (ValaParser* self, GError** error);
@@ -1813,9 +1813,9 @@ ValaBaseAccess* vala_base_access_new (ValaSourceReference* source);
 ValaBaseAccess* vala_base_access_construct (GType object_type, ValaSourceReference* source);
 ValaPostfixExpression* vala_postfix_expression_new (ValaExpression* _inner, gboolean inc, ValaSourceReference* source);
 ValaPostfixExpression* vala_postfix_expression_construct (GType object_type, ValaExpression* _inner, gboolean inc, ValaSourceReference* source);
+static ValaExpression* vala_parser_parse_array_creation_expression (ValaParser* self, GError** error);
 static ValaMemberAccess* vala_parser_parse_member_name (ValaParser* self, ValaExpression* base_expr, GError** error);
 static ValaExpression* vala_parser_parse_object_creation_expression (ValaParser* self, ValaSourceLocation* begin, ValaMemberAccess* member, GError** error);
-static ValaExpression* vala_parser_parse_array_creation_expression (ValaParser* self, GError** error);
 ValaUnresolvedType* vala_unresolved_type_new_from_expression (ValaExpression* expr);
 ValaArrayCreationExpression* vala_array_creation_expression_new (ValaDataType* element_type, gint rank, ValaInitializerList* initializer_list, ValaSourceReference* source_reference);
 ValaArrayCreationExpression* vala_array_creation_expression_construct (GType object_type, ValaDataType* element_type, gint rank, ValaInitializerList* initializer_list, ValaSourceReference* source_reference);
@@ -2043,11 +2043,14 @@ ValaField* vala_field_new (const gchar* name, ValaDataType* variable_type, ValaE
 ValaField* vala_field_construct (GType object_type, const gchar* name, ValaDataType* variable_type, ValaExpression* initializer, ValaSourceReference* source_reference, ValaComment* comment);
 GType vala_member_binding_get_type (void) G_GNUC_CONST;
 void vala_field_set_binding (ValaField* self, ValaMemberBinding value);
+ValaSymbolAccessibility vala_symbol_get_access (ValaSymbol* self);
+ValaMemberBinding vala_field_get_binding (ValaField* self);
 void vala_variable_set_initializer (ValaVariable* self, ValaExpression* value);
 void vala_symbol_add_field (ValaSymbol* self, ValaField* f);
 ValaInitializerList* vala_initializer_list_new (ValaSourceReference* source_reference);
 ValaInitializerList* vala_initializer_list_construct (GType object_type, ValaSourceReference* source_reference);
 void vala_initializer_list_append (ValaInitializerList* self, ValaExpression* expr);
+void vala_method_set_base_interface_type (ValaMethod* self, ValaDataType* value);
 void vala_method_add_type_parameter (ValaMethod* self, ValaTypeParameter* p);
 void vala_method_set_binding (ValaMethod* self, ValaMemberBinding value);
 void vala_method_set_coroutine (ValaMethod* self, gboolean value);
@@ -2977,7 +2980,7 @@ static gchar* vala_parser_parse_identifier (ValaParser* self, GError** error) {
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_parser_skip_identifier (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -3144,7 +3147,7 @@ static ValaExpression* vala_parser_parse_literal (ValaParser* self, GError** err
                        _tmp41_ = vala_parser_get_src (self, &_tmp40_);
                        src_begin = _tmp41_;
                        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_REGEX_LITERAL, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_source_reference_unref0 (src_begin);
@@ -3340,9 +3343,9 @@ void vala_parser_parse_file (ValaParser* self, ValaSourceFile* source_file) {
                _tmp3_ = vala_code_context_get_root (_tmp2_);
                _tmp4_ = _tmp3_;
                vala_parser_parse_using_directives (self, _tmp4_, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                               goto __catch10_vala_parse_error;
+                               goto __catch12_vala_parse_error;
                        }
                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
@@ -3352,9 +3355,9 @@ void vala_parser_parse_file (ValaParser* self, ValaSourceFile* source_file) {
                _tmp6_ = vala_code_context_get_root (_tmp5_);
                _tmp7_ = _tmp6_;
                vala_parser_parse_declarations (self, (ValaSymbol*) _tmp7_, TRUE, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                               goto __catch10_vala_parse_error;
+                               goto __catch12_vala_parse_error;
                        }
                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
@@ -3380,16 +3383,16 @@ void vala_parser_parse_file (ValaParser* self, ValaSourceFile* source_file) {
                        }
                }
        }
-       goto __finally10;
-       __catch10_vala_parse_error:
+       goto __finally12;
+       __catch12_vala_parse_error:
        {
                GError* e = NULL;
                e = _inner_error_;
                _inner_error_ = NULL;
                _g_error_free0 (e);
        }
-       __finally10:
-       if (_inner_error_ != NULL) {
+       __finally12:
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return;
@@ -3431,7 +3434,7 @@ static void vala_parser_skip_symbol_name (ValaParser* self, GError** error) {
                        }
                        _tmp0_ = FALSE;
                        vala_parser_skip_identifier (self, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return;
@@ -3480,7 +3483,7 @@ static ValaUnresolvedSymbol* vala_parser_parse_symbol_name (ValaParser* self, GE
                        _tmp1_ = FALSE;
                        _tmp3_ = vala_parser_parse_identifier (self, &_inner_error_);
                        name = _tmp3_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (sym);
@@ -3513,7 +3516,7 @@ static ValaUnresolvedSymbol* vala_parser_parse_symbol_name (ValaParser* self, GE
                                ValaUnresolvedSymbol* _tmp16_ = NULL;
                                _tmp8_ = vala_parser_parse_identifier (self, &_inner_error_);
                                _tmp7_ = _tmp8_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _g_free0 (name);
@@ -3571,11 +3574,10 @@ static void vala_parser_skip_type (ValaParser* self, GError** error) {
        vala_parser_accept (self, VALA_TOKEN_TYPE_OWNED);
        vala_parser_accept (self, VALA_TOKEN_TYPE_UNOWNED);
        vala_parser_accept (self, VALA_TOKEN_TYPE_WEAK);
-       _tmp0_ = vala_parser_accept (self, VALA_TOKEN_TYPE_VOID);
+       _tmp0_ = vala_parser_is_inner_array_type (self);
        if (_tmp0_) {
-       } else {
-               vala_parser_skip_symbol_name (self, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -3585,8 +3587,8 @@ static void vala_parser_skip_type (ValaParser* self, GError** error) {
                                return;
                        }
                }
-               vala_parser_skip_type_argument_list (self, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               vala_parser_expect (self, VALA_TOKEN_TYPE_UNOWNED, &_inner_error_);
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -3596,50 +3598,112 @@ static void vala_parser_skip_type (ValaParser* self, GError** error) {
                                return;
                        }
                }
-       }
-       while (TRUE) {
+               vala_parser_skip_type (self, &_inner_error_);
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
+                       if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                               g_propagate_error (error, _inner_error_);
+                               return;
+                       } else {
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                               g_clear_error (&_inner_error_);
+                               return;
+                       }
+               }
+               vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
+                       if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                               g_propagate_error (error, _inner_error_);
+                               return;
+                       } else {
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                               g_clear_error (&_inner_error_);
+                               return;
+                       }
+               }
+               vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_BRACKET, &_inner_error_);
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
+                       if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                               g_propagate_error (error, _inner_error_);
+                               return;
+                       } else {
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                               g_clear_error (&_inner_error_);
+                               return;
+                       }
+               }
+               vala_parser_prev (self);
+       } else {
                gboolean _tmp1_ = FALSE;
-               _tmp1_ = vala_parser_accept (self, VALA_TOKEN_TYPE_STAR);
-               if (!_tmp1_) {
-                       break;
+               _tmp1_ = vala_parser_accept (self, VALA_TOKEN_TYPE_VOID);
+               if (_tmp1_) {
+               } else {
+                       vala_parser_skip_symbol_name (self, &_inner_error_);
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
+                               if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                                       g_propagate_error (error, _inner_error_);
+                                       return;
+                               } else {
+                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                                       g_clear_error (&_inner_error_);
+                                       return;
+                               }
+                       }
+                       vala_parser_skip_type_argument_list (self, &_inner_error_);
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
+                               if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                                       g_propagate_error (error, _inner_error_);
+                                       return;
+                               } else {
+                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                                       g_clear_error (&_inner_error_);
+                                       return;
+                               }
+                       }
+               }
+               while (TRUE) {
+                       gboolean _tmp2_ = FALSE;
+                       _tmp2_ = vala_parser_accept (self, VALA_TOKEN_TYPE_STAR);
+                       if (!_tmp2_) {
+                               break;
+                       }
                }
+               vala_parser_accept (self, VALA_TOKEN_TYPE_INTERR);
        }
-       vala_parser_accept (self, VALA_TOKEN_TYPE_INTERR);
        while (TRUE) {
-               gboolean _tmp2_ = FALSE;
-               _tmp2_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_BRACKET);
-               if (!_tmp2_) {
+               gboolean _tmp3_ = FALSE;
+               _tmp3_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_BRACKET);
+               if (!_tmp3_) {
                        break;
                }
                {
-                       gboolean _tmp3_ = FALSE;
-                       _tmp3_ = TRUE;
+                       gboolean _tmp4_ = FALSE;
+                       _tmp4_ = TRUE;
                        while (TRUE) {
-                               gboolean _tmp5_ = FALSE;
-                               ValaTokenType _tmp6_ = 0;
-                               if (!_tmp3_) {
-                                       gboolean _tmp4_ = FALSE;
-                                       _tmp4_ = vala_parser_accept (self, VALA_TOKEN_TYPE_COMMA);
-                                       if (!_tmp4_) {
+                               gboolean _tmp6_ = FALSE;
+                               ValaTokenType _tmp7_ = 0;
+                               if (!_tmp4_) {
+                                       gboolean _tmp5_ = FALSE;
+                                       _tmp5_ = vala_parser_accept (self, VALA_TOKEN_TYPE_COMMA);
+                                       if (!_tmp5_) {
                                                break;
                                        }
                                }
-                               _tmp3_ = FALSE;
-                               _tmp6_ = vala_parser_current (self);
-                               if (_tmp6_ != VALA_TOKEN_TYPE_COMMA) {
-                                       ValaTokenType _tmp7_ = 0;
-                                       _tmp7_ = vala_parser_current (self);
-                                       _tmp5_ = _tmp7_ != VALA_TOKEN_TYPE_CLOSE_BRACKET;
+                               _tmp4_ = FALSE;
+                               _tmp7_ = vala_parser_current (self);
+                               if (_tmp7_ != VALA_TOKEN_TYPE_COMMA) {
+                                       ValaTokenType _tmp8_ = 0;
+                                       _tmp8_ = vala_parser_current (self);
+                                       _tmp6_ = _tmp8_ != VALA_TOKEN_TYPE_CLOSE_BRACKET;
                                } else {
-                                       _tmp5_ = FALSE;
+                                       _tmp6_ = FALSE;
                                }
-                               if (_tmp5_) {
-                                       ValaExpression* _tmp8_ = NULL;
+                               if (_tmp6_) {
                                        ValaExpression* _tmp9_ = NULL;
-                                       _tmp8_ = vala_parser_parse_expression (self, &_inner_error_);
-                                       _tmp9_ = _tmp8_;
-                                       _vala_code_node_unref0 (_tmp9_);
-                                       if (_inner_error_ != NULL) {
+                                       ValaExpression* _tmp10_ = NULL;
+                                       _tmp9_ = vala_parser_parse_expression (self, &_inner_error_);
+                                       _tmp10_ = _tmp9_;
+                                       _vala_code_node_unref0 (_tmp10_);
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        return;
@@ -3653,7 +3717,7 @@ static void vala_parser_skip_type (ValaParser* self, GError** error) {
                        }
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -3670,6 +3734,41 @@ static void vala_parser_skip_type (ValaParser* self, GError** error) {
 }
 
 
+static gboolean vala_parser_is_inner_array_type (ValaParser* self) {
+       gboolean result = FALSE;
+       ValaSourceLocation begin = {0};
+       ValaSourceLocation _tmp0_ = {0};
+       gboolean _tmp1_ = FALSE;
+       gboolean _tmp2_ = FALSE;
+       gboolean _tmp3_ = FALSE;
+       gboolean _result_ = FALSE;
+       ValaSourceLocation _tmp6_ = {0};
+       g_return_val_if_fail (self != NULL, FALSE);
+       vala_parser_get_location (self, &_tmp0_);
+       begin = _tmp0_;
+       _tmp3_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_PARENS);
+       if (_tmp3_) {
+               gboolean _tmp4_ = FALSE;
+               _tmp4_ = vala_parser_accept (self, VALA_TOKEN_TYPE_UNOWNED);
+               _tmp2_ = _tmp4_;
+       } else {
+               _tmp2_ = FALSE;
+       }
+       if (_tmp2_) {
+               ValaTokenType _tmp5_ = 0;
+               _tmp5_ = vala_parser_current (self);
+               _tmp1_ = _tmp5_ != VALA_TOKEN_TYPE_CLOSE_PARENS;
+       } else {
+               _tmp1_ = FALSE;
+       }
+       _result_ = _tmp1_;
+       _tmp6_ = begin;
+       vala_parser_rollback (self, &_tmp6_);
+       result = _result_;
+       return result;
+}
+
+
 static gpointer _vala_iterable_ref0 (gpointer self) {
        return self ? vala_iterable_ref (self) : NULL;
 }
@@ -3680,7 +3779,7 @@ static gpointer _vala_code_node_ref0 (gpointer self) {
 }
 
 
-static ValaDataType* vala_parser_parse_type (ValaParser* self, gboolean owned_by_default, gboolean can_weak_ref, GError** error) {
+static ValaDataType* vala_parser_parse_type (ValaParser* self, gboolean owned_by_default, gboolean can_weak_ref, gboolean require_unowned, GError** error) {
        ValaDataType* result = NULL;
        ValaSourceLocation begin = {0};
        ValaSourceLocation _tmp0_ = {0};
@@ -3690,17 +3789,15 @@ static ValaDataType* vala_parser_parse_type (ValaParser* self, gboolean owned_by
        gboolean _tmp2_ = FALSE;
        gboolean _tmp3_ = FALSE;
        ValaDataType* type = NULL;
-       gboolean _tmp14_ = FALSE;
+       gboolean inner_type_owned = FALSE;
        gboolean _tmp15_ = FALSE;
-       gboolean _tmp16_ = FALSE;
-       ValaDataType* _tmp51_ = NULL;
-       gboolean _tmp77_ = FALSE;
-       gboolean _tmp80_ = FALSE;
-       ValaDataType* _tmp87_ = NULL;
-       ValaDataType* _tmp88_ = NULL;
-       gboolean _tmp89_ = FALSE;
-       ValaDataType* _tmp90_ = NULL;
-       gboolean _tmp91_ = FALSE;
+       gboolean _tmp83_ = FALSE;
+       gboolean _tmp86_ = FALSE;
+       ValaDataType* _tmp93_ = NULL;
+       ValaDataType* _tmp94_ = NULL;
+       gboolean _tmp95_ = FALSE;
+       ValaDataType* _tmp96_ = NULL;
+       gboolean _tmp97_ = FALSE;
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_parser_get_location (self, &_tmp0_);
@@ -3709,89 +3806,71 @@ static ValaDataType* vala_parser_parse_type (ValaParser* self, gboolean owned_by
        is_dynamic = _tmp1_;
        _tmp2_ = owned_by_default;
        value_owned = _tmp2_;
-       _tmp3_ = owned_by_default;
+       _tmp3_ = require_unowned;
        if (_tmp3_) {
+               vala_parser_expect (self, VALA_TOKEN_TYPE_UNOWNED, &_inner_error_);
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
+                       if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                               g_propagate_error (error, _inner_error_);
+                               return NULL;
+                       } else {
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                               g_clear_error (&_inner_error_);
+                               return NULL;
+                       }
+               }
+       } else {
                gboolean _tmp4_ = FALSE;
-               _tmp4_ = vala_parser_accept (self, VALA_TOKEN_TYPE_UNOWNED);
+               _tmp4_ = owned_by_default;
                if (_tmp4_) {
-                       value_owned = FALSE;
-               } else {
                        gboolean _tmp5_ = FALSE;
-                       _tmp5_ = vala_parser_accept (self, VALA_TOKEN_TYPE_WEAK);
+                       _tmp5_ = vala_parser_accept (self, VALA_TOKEN_TYPE_UNOWNED);
                        if (_tmp5_) {
+                               value_owned = FALSE;
+                       } else {
                                gboolean _tmp6_ = FALSE;
-                               gboolean _tmp7_ = FALSE;
-                               _tmp7_ = can_weak_ref;
-                               if (!_tmp7_) {
-                                       ValaCodeContext* _tmp8_ = NULL;
-                                       gboolean _tmp9_ = FALSE;
-                                       gboolean _tmp10_ = FALSE;
-                                       _tmp8_ = self->priv->context;
-                                       _tmp9_ = vala_code_context_get_deprecated (_tmp8_);
-                                       _tmp10_ = _tmp9_;
-                                       _tmp6_ = !_tmp10_;
-                               } else {
-                                       _tmp6_ = FALSE;
-                               }
+                               _tmp6_ = vala_parser_accept (self, VALA_TOKEN_TYPE_WEAK);
                                if (_tmp6_) {
-                                       ValaSourceReference* _tmp11_ = NULL;
-                                       ValaSourceReference* _tmp12_ = NULL;
-                                       _tmp11_ = vala_parser_get_last_src (self);
-                                       _tmp12_ = _tmp11_;
-                                       vala_report_warning (_tmp12_, "deprecated syntax, use `unowned` modifier");
-                                       _vala_source_reference_unref0 (_tmp12_);
+                                       gboolean _tmp7_ = FALSE;
+                                       gboolean _tmp8_ = FALSE;
+                                       _tmp8_ = can_weak_ref;
+                                       if (!_tmp8_) {
+                                               ValaCodeContext* _tmp9_ = NULL;
+                                               gboolean _tmp10_ = FALSE;
+                                               gboolean _tmp11_ = FALSE;
+                                               _tmp9_ = self->priv->context;
+                                               _tmp10_ = vala_code_context_get_deprecated (_tmp9_);
+                                               _tmp11_ = _tmp10_;
+                                               _tmp7_ = !_tmp11_;
+                                       } else {
+                                               _tmp7_ = FALSE;
+                                       }
+                                       if (_tmp7_) {
+                                               ValaSourceReference* _tmp12_ = NULL;
+                                               ValaSourceReference* _tmp13_ = NULL;
+                                               _tmp12_ = vala_parser_get_last_src (self);
+                                               _tmp13_ = _tmp12_;
+                                               vala_report_warning (_tmp13_, "deprecated syntax, use `unowned` modifier");
+                                               _vala_source_reference_unref0 (_tmp13_);
+                                       }
+                                       value_owned = FALSE;
                                }
-                               value_owned = FALSE;
                        }
+               } else {
+                       gboolean _tmp14_ = FALSE;
+                       _tmp14_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OWNED);
+                       value_owned = _tmp14_;
                }
-       } else {
-               gboolean _tmp13_ = FALSE;
-               _tmp13_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OWNED);
-               value_owned = _tmp13_;
-       }
-       _tmp16_ = is_dynamic;
-       if (!_tmp16_) {
-               gboolean _tmp17_ = FALSE;
-               gboolean _tmp18_ = FALSE;
-               _tmp17_ = value_owned;
-               _tmp18_ = owned_by_default;
-               _tmp15_ = _tmp17_ == _tmp18_;
-       } else {
-               _tmp15_ = FALSE;
        }
+       inner_type_owned = TRUE;
+       _tmp15_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_PARENS);
        if (_tmp15_) {
-               gboolean _tmp19_ = FALSE;
-               _tmp19_ = vala_parser_accept (self, VALA_TOKEN_TYPE_VOID);
-               _tmp14_ = _tmp19_;
-       } else {
-               _tmp14_ = FALSE;
-       }
-       if (_tmp14_) {
-               ValaSourceLocation _tmp20_ = {0};
-               ValaSourceReference* _tmp21_ = NULL;
-               ValaSourceReference* _tmp22_ = NULL;
-               ValaVoidType* _tmp23_ = NULL;
-               _tmp20_ = begin;
-               _tmp21_ = vala_parser_get_src (self, &_tmp20_);
-               _tmp22_ = _tmp21_;
-               _tmp23_ = vala_void_type_new (_tmp22_);
-               _vala_code_node_unref0 (type);
-               type = (ValaDataType*) _tmp23_;
-               _vala_source_reference_unref0 (_tmp22_);
-       } else {
-               ValaUnresolvedSymbol* sym = NULL;
-               ValaUnresolvedSymbol* _tmp24_ = NULL;
-               ValaList* type_arg_list = NULL;
-               ValaList* _tmp25_ = NULL;
-               ValaUnresolvedSymbol* _tmp26_ = NULL;
-               ValaSourceLocation _tmp27_ = {0};
-               ValaSourceReference* _tmp28_ = NULL;
-               ValaSourceReference* _tmp29_ = NULL;
-               ValaUnresolvedType* _tmp30_ = NULL;
-               ValaList* _tmp31_ = NULL;
-               _tmp24_ = vala_parser_parse_symbol_name (self, &_inner_error_);
-               sym = _tmp24_;
-               if (_inner_error_ != NULL) {
+               ValaDataType* _tmp16_ = NULL;
+               ValaDataType* _tmp17_ = NULL;
+               ValaDataType* _tmp18_ = NULL;
+               _tmp17_ = vala_parser_parse_type (self, FALSE, FALSE, TRUE, &_inner_error_);
+               _tmp16_ = _tmp17_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (type);
@@ -3803,276 +3882,375 @@ static ValaDataType* vala_parser_parse_type (ValaParser* self, gboolean owned_by
                                return NULL;
                        }
                }
-               _tmp25_ = vala_parser_parse_type_argument_list (self, FALSE, &_inner_error_);
-               type_arg_list = _tmp25_;
-               if (_inner_error_ != NULL) {
+               _tmp18_ = _tmp16_;
+               _tmp16_ = NULL;
+               _vala_code_node_unref0 (type);
+               type = _tmp18_;
+               vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
-                               _vala_code_node_unref0 (sym);
+                               _vala_code_node_unref0 (_tmp16_);
                                _vala_code_node_unref0 (type);
                                return NULL;
                        } else {
-                               _vala_code_node_unref0 (sym);
+                               _vala_code_node_unref0 (_tmp16_);
                                _vala_code_node_unref0 (type);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return NULL;
                        }
                }
-               _tmp26_ = sym;
-               _tmp27_ = begin;
-               _tmp28_ = vala_parser_get_src (self, &_tmp27_);
-               _tmp29_ = _tmp28_;
-               _tmp30_ = vala_unresolved_type_new_from_symbol (_tmp26_, _tmp29_);
-               _vala_code_node_unref0 (type);
-               type = (ValaDataType*) _tmp30_;
-               _vala_source_reference_unref0 (_tmp29_);
-               _tmp31_ = type_arg_list;
-               if (_tmp31_ != NULL) {
-                       {
-                               ValaList* _type_arg_list = NULL;
-                               ValaList* _tmp32_ = NULL;
-                               ValaList* _tmp33_ = NULL;
-                               gint _type_arg_size = 0;
-                               ValaList* _tmp34_ = NULL;
-                               gint _tmp35_ = 0;
-                               gint _tmp36_ = 0;
-                               gint _type_arg_index = 0;
-                               _tmp32_ = type_arg_list;
-                               _tmp33_ = _vala_iterable_ref0 (_tmp32_);
-                               _type_arg_list = _tmp33_;
-                               _tmp34_ = _type_arg_list;
-                               _tmp35_ = vala_collection_get_size ((ValaCollection*) _tmp34_);
-                               _tmp36_ = _tmp35_;
-                               _type_arg_size = _tmp36_;
-                               _type_arg_index = -1;
-                               while (TRUE) {
-                                       gint _tmp37_ = 0;
-                                       gint _tmp38_ = 0;
-                                       gint _tmp39_ = 0;
-                                       ValaDataType* type_arg = NULL;
-                                       ValaList* _tmp40_ = NULL;
-                                       gint _tmp41_ = 0;
-                                       gpointer _tmp42_ = NULL;
-                                       ValaDataType* _tmp43_ = NULL;
-                                       ValaDataType* _tmp44_ = NULL;
-                                       _tmp37_ = _type_arg_index;
-                                       _type_arg_index = _tmp37_ + 1;
-                                       _tmp38_ = _type_arg_index;
-                                       _tmp39_ = _type_arg_size;
-                                       if (!(_tmp38_ < _tmp39_)) {
-                                               break;
-                                       }
-                                       _tmp40_ = _type_arg_list;
-                                       _tmp41_ = _type_arg_index;
-                                       _tmp42_ = vala_list_get (_tmp40_, _tmp41_);
-                                       type_arg = (ValaDataType*) _tmp42_;
-                                       _tmp43_ = type;
-                                       _tmp44_ = type_arg;
-                                       vala_data_type_add_type_argument (_tmp43_, _tmp44_);
-                                       _vala_code_node_unref0 (type_arg);
-                               }
-                               _vala_iterable_unref0 (_type_arg_list);
-                       }
-               }
-               _vala_iterable_unref0 (type_arg_list);
-               _vala_code_node_unref0 (sym);
-       }
-       while (TRUE) {
-               gboolean _tmp45_ = FALSE;
-               ValaDataType* _tmp46_ = NULL;
-               ValaSourceLocation _tmp47_ = {0};
-               ValaSourceReference* _tmp48_ = NULL;
-               ValaSourceReference* _tmp49_ = NULL;
-               ValaPointerType* _tmp50_ = NULL;
-               _tmp45_ = vala_parser_accept (self, VALA_TOKEN_TYPE_STAR);
-               if (!_tmp45_) {
-                       break;
-               }
-               _tmp46_ = type;
-               _tmp47_ = begin;
-               _tmp48_ = vala_parser_get_src (self, &_tmp47_);
-               _tmp49_ = _tmp48_;
-               _tmp50_ = vala_pointer_type_new (_tmp46_, _tmp49_);
-               _vala_code_node_unref0 (type);
-               type = (ValaDataType*) _tmp50_;
-               _vala_source_reference_unref0 (_tmp49_);
-       }
-       _tmp51_ = type;
-       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp51_, VALA_TYPE_POINTER_TYPE)) {
-               ValaDataType* _tmp52_ = NULL;
-               gboolean _tmp53_ = FALSE;
-               _tmp52_ = type;
-               _tmp53_ = vala_parser_accept (self, VALA_TOKEN_TYPE_INTERR);
-               vala_data_type_set_nullable (_tmp52_, _tmp53_);
-       }
-       while (TRUE) {
-               gboolean _tmp54_ = FALSE;
-               gboolean invalid_array = FALSE;
-               gint array_rank = 0;
-               ValaDataType* _tmp63_ = NULL;
-               ValaArrayType* array_type = NULL;
-               ValaDataType* _tmp64_ = NULL;
-               gint _tmp65_ = 0;
-               ValaSourceLocation _tmp66_ = {0};
-               ValaSourceReference* _tmp67_ = NULL;
-               ValaSourceReference* _tmp68_ = NULL;
-               ValaArrayType* _tmp69_ = NULL;
-               ValaArrayType* _tmp70_ = NULL;
-               ValaArrayType* _tmp71_ = NULL;
-               gboolean _tmp72_ = FALSE;
-               ValaArrayType* _tmp73_ = NULL;
-               gboolean _tmp74_ = FALSE;
-               ValaArrayType* _tmp75_ = NULL;
-               ValaDataType* _tmp76_ = NULL;
-               _tmp54_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_BRACKET);
-               if (!_tmp54_) {
-                       break;
-               }
-               invalid_array = FALSE;
-               array_rank = 0;
-               {
-                       gboolean _tmp55_ = FALSE;
-                       _tmp55_ = TRUE;
-                       while (TRUE) {
-                               gint _tmp57_ = 0;
-                               gboolean _tmp58_ = FALSE;
-                               ValaTokenType _tmp59_ = 0;
-                               if (!_tmp55_) {
-                                       gboolean _tmp56_ = FALSE;
-                                       _tmp56_ = vala_parser_accept (self, VALA_TOKEN_TYPE_COMMA);
-                                       if (!_tmp56_) {
-                                               break;
-                                       }
-                               }
-                               _tmp55_ = FALSE;
-                               _tmp57_ = array_rank;
-                               array_rank = _tmp57_ + 1;
-                               _tmp59_ = vala_parser_current (self);
-                               if (_tmp59_ != VALA_TOKEN_TYPE_COMMA) {
-                                       ValaTokenType _tmp60_ = 0;
-                                       _tmp60_ = vala_parser_current (self);
-                                       _tmp58_ = _tmp60_ != VALA_TOKEN_TYPE_CLOSE_BRACKET;
-                               } else {
-                                       _tmp58_ = FALSE;
-                               }
-                               if (_tmp58_) {
-                                       ValaExpression* _tmp61_ = NULL;
-                                       ValaExpression* _tmp62_ = NULL;
-                                       _tmp61_ = vala_parser_parse_expression (self, &_inner_error_);
-                                       _tmp62_ = _tmp61_;
-                                       _vala_code_node_unref0 (_tmp62_);
-                                       if (_inner_error_ != NULL) {
-                                               if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       g_propagate_error (error, _inner_error_);
-                                                       _vala_code_node_unref0 (type);
-                                                       return NULL;
-                                               } else {
-                                                       _vala_code_node_unref0 (type);
-                                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
-                                                       g_clear_error (&_inner_error_);
-                                                       return NULL;
-                                               }
-                                       }
-                                       invalid_array = TRUE;
-                               }
-                       }
-               }
-               vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               inner_type_owned = FALSE;
+               vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_BRACKET, &_inner_error_);
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
+                               _vala_code_node_unref0 (_tmp16_);
                                _vala_code_node_unref0 (type);
                                return NULL;
                        } else {
+                               _vala_code_node_unref0 (_tmp16_);
                                _vala_code_node_unref0 (type);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return NULL;
                        }
                }
-               _tmp63_ = type;
-               vala_data_type_set_value_owned (_tmp63_, TRUE);
-               _tmp64_ = type;
-               _tmp65_ = array_rank;
-               _tmp66_ = begin;
-               _tmp67_ = vala_parser_get_src (self, &_tmp66_);
-               _tmp68_ = _tmp67_;
-               _tmp69_ = vala_array_type_new (_tmp64_, _tmp65_, _tmp68_);
-               _tmp70_ = _tmp69_;
-               _vala_source_reference_unref0 (_tmp68_);
-               array_type = _tmp70_;
-               _tmp71_ = array_type;
-               _tmp72_ = vala_parser_accept (self, VALA_TOKEN_TYPE_INTERR);
-               vala_data_type_set_nullable ((ValaDataType*) _tmp71_, _tmp72_);
-               _tmp73_ = array_type;
-               _tmp74_ = invalid_array;
-               vala_array_type_set_invalid_syntax (_tmp73_, _tmp74_);
-               _tmp75_ = array_type;
-               _tmp76_ = _vala_code_node_ref0 ((ValaDataType*) _tmp75_);
-               _vala_code_node_unref0 (type);
-               type = _tmp76_;
-               _vala_code_node_unref0 (array_type);
-       }
-       _tmp77_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OP_NEG);
-       if (_tmp77_) {
-               ValaSourceReference* _tmp78_ = NULL;
-               ValaSourceReference* _tmp79_ = NULL;
-               _tmp78_ = vala_parser_get_last_src (self);
-               _tmp79_ = _tmp78_;
-               vala_report_warning (_tmp79_, "obsolete syntax, types are non-null by default");
-               _vala_source_reference_unref0 (_tmp79_);
-       }
-       _tmp80_ = owned_by_default;
-       if (!_tmp80_) {
-               gboolean _tmp81_ = FALSE;
-               _tmp81_ = vala_parser_accept (self, VALA_TOKEN_TYPE_HASH);
-               if (_tmp81_) {
-                       ValaCodeContext* _tmp82_ = NULL;
-                       gboolean _tmp83_ = FALSE;
-                       gboolean _tmp84_ = FALSE;
-                       _tmp82_ = self->priv->context;
-                       _tmp83_ = vala_code_context_get_deprecated (_tmp82_);
-                       _tmp84_ = _tmp83_;
-                       if (!_tmp84_) {
-                               ValaSourceReference* _tmp85_ = NULL;
-                               ValaSourceReference* _tmp86_ = NULL;
-                               _tmp85_ = vala_parser_get_last_src (self);
-                               _tmp86_ = _tmp85_;
-                               vala_report_warning (_tmp86_, "deprecated syntax, use `owned` modifier");
-                               _vala_source_reference_unref0 (_tmp86_);
-                       }
-                       value_owned = TRUE;
+               vala_parser_prev (self);
+               _vala_code_node_unref0 (_tmp16_);
+       } else {
+               gboolean _tmp19_ = FALSE;
+               gboolean _tmp20_ = FALSE;
+               gboolean _tmp21_ = FALSE;
+               ValaDataType* _tmp56_ = NULL;
+               _tmp21_ = is_dynamic;
+               if (!_tmp21_) {
+                       gboolean _tmp22_ = FALSE;
+                       gboolean _tmp23_ = FALSE;
+                       _tmp22_ = value_owned;
+                       _tmp23_ = owned_by_default;
+                       _tmp20_ = _tmp22_ == _tmp23_;
+               } else {
+                       _tmp20_ = FALSE;
                }
-       }
-       _tmp87_ = type;
-       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp87_, VALA_TYPE_POINTER_TYPE)) {
-               value_owned = FALSE;
-       }
-       _tmp88_ = type;
-       _tmp89_ = is_dynamic;
-       vala_data_type_set_is_dynamic (_tmp88_, _tmp89_);
-       _tmp90_ = type;
-       _tmp91_ = value_owned;
-       vala_data_type_set_value_owned (_tmp90_, _tmp91_);
-       result = type;
-       return result;
-}
-
-
-static ValaDataType* vala_parser_parse_inline_array_type (ValaParser* self, ValaDataType* type, GError** error) {
-       ValaDataType* result = NULL;
-       ValaSourceLocation begin = {0};
-       ValaSourceLocation _tmp0_ = {0};
-       gboolean _tmp1_ = FALSE;
-       ValaDataType* _tmp2_ = NULL;
-       ValaDataType* _tmp32_ = NULL;
-       ValaDataType* _tmp33_ = NULL;
-       GError * _inner_error_ = NULL;
-       g_return_val_if_fail (self != NULL, NULL);
-       vala_parser_get_location (self, &_tmp0_);
-       begin = _tmp0_;
-       _tmp2_ = type;
+               if (_tmp20_) {
+                       gboolean _tmp24_ = FALSE;
+                       _tmp24_ = vala_parser_accept (self, VALA_TOKEN_TYPE_VOID);
+                       _tmp19_ = _tmp24_;
+               } else {
+                       _tmp19_ = FALSE;
+               }
+               if (_tmp19_) {
+                       ValaSourceLocation _tmp25_ = {0};
+                       ValaSourceReference* _tmp26_ = NULL;
+                       ValaSourceReference* _tmp27_ = NULL;
+                       ValaVoidType* _tmp28_ = NULL;
+                       _tmp25_ = begin;
+                       _tmp26_ = vala_parser_get_src (self, &_tmp25_);
+                       _tmp27_ = _tmp26_;
+                       _tmp28_ = vala_void_type_new (_tmp27_);
+                       _vala_code_node_unref0 (type);
+                       type = (ValaDataType*) _tmp28_;
+                       _vala_source_reference_unref0 (_tmp27_);
+               } else {
+                       ValaUnresolvedSymbol* sym = NULL;
+                       ValaUnresolvedSymbol* _tmp29_ = NULL;
+                       ValaList* type_arg_list = NULL;
+                       ValaList* _tmp30_ = NULL;
+                       ValaUnresolvedSymbol* _tmp31_ = NULL;
+                       ValaSourceLocation _tmp32_ = {0};
+                       ValaSourceReference* _tmp33_ = NULL;
+                       ValaSourceReference* _tmp34_ = NULL;
+                       ValaUnresolvedType* _tmp35_ = NULL;
+                       ValaList* _tmp36_ = NULL;
+                       _tmp29_ = vala_parser_parse_symbol_name (self, &_inner_error_);
+                       sym = _tmp29_;
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
+                               if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                                       g_propagate_error (error, _inner_error_);
+                                       _vala_code_node_unref0 (type);
+                                       return NULL;
+                               } else {
+                                       _vala_code_node_unref0 (type);
+                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                                       g_clear_error (&_inner_error_);
+                                       return NULL;
+                               }
+                       }
+                       _tmp30_ = vala_parser_parse_type_argument_list (self, FALSE, &_inner_error_);
+                       type_arg_list = _tmp30_;
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
+                               if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                                       g_propagate_error (error, _inner_error_);
+                                       _vala_code_node_unref0 (sym);
+                                       _vala_code_node_unref0 (type);
+                                       return NULL;
+                               } else {
+                                       _vala_code_node_unref0 (sym);
+                                       _vala_code_node_unref0 (type);
+                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                                       g_clear_error (&_inner_error_);
+                                       return NULL;
+                               }
+                       }
+                       _tmp31_ = sym;
+                       _tmp32_ = begin;
+                       _tmp33_ = vala_parser_get_src (self, &_tmp32_);
+                       _tmp34_ = _tmp33_;
+                       _tmp35_ = vala_unresolved_type_new_from_symbol (_tmp31_, _tmp34_);
+                       _vala_code_node_unref0 (type);
+                       type = (ValaDataType*) _tmp35_;
+                       _vala_source_reference_unref0 (_tmp34_);
+                       _tmp36_ = type_arg_list;
+                       if (_tmp36_ != NULL) {
+                               {
+                                       ValaList* _type_arg_list = NULL;
+                                       ValaList* _tmp37_ = NULL;
+                                       ValaList* _tmp38_ = NULL;
+                                       gint _type_arg_size = 0;
+                                       ValaList* _tmp39_ = NULL;
+                                       gint _tmp40_ = 0;
+                                       gint _tmp41_ = 0;
+                                       gint _type_arg_index = 0;
+                                       _tmp37_ = type_arg_list;
+                                       _tmp38_ = _vala_iterable_ref0 (_tmp37_);
+                                       _type_arg_list = _tmp38_;
+                                       _tmp39_ = _type_arg_list;
+                                       _tmp40_ = vala_collection_get_size ((ValaCollection*) _tmp39_);
+                                       _tmp41_ = _tmp40_;
+                                       _type_arg_size = _tmp41_;
+                                       _type_arg_index = -1;
+                                       while (TRUE) {
+                                               gint _tmp42_ = 0;
+                                               gint _tmp43_ = 0;
+                                               gint _tmp44_ = 0;
+                                               ValaDataType* type_arg = NULL;
+                                               ValaList* _tmp45_ = NULL;
+                                               gint _tmp46_ = 0;
+                                               gpointer _tmp47_ = NULL;
+                                               ValaDataType* _tmp48_ = NULL;
+                                               ValaDataType* _tmp49_ = NULL;
+                                               _tmp42_ = _type_arg_index;
+                                               _type_arg_index = _tmp42_ + 1;
+                                               _tmp43_ = _type_arg_index;
+                                               _tmp44_ = _type_arg_size;
+                                               if (!(_tmp43_ < _tmp44_)) {
+                                                       break;
+                                               }
+                                               _tmp45_ = _type_arg_list;
+                                               _tmp46_ = _type_arg_index;
+                                               _tmp47_ = vala_list_get (_tmp45_, _tmp46_);
+                                               type_arg = (ValaDataType*) _tmp47_;
+                                               _tmp48_ = type;
+                                               _tmp49_ = type_arg;
+                                               vala_data_type_add_type_argument (_tmp48_, _tmp49_);
+                                               _vala_code_node_unref0 (type_arg);
+                                       }
+                                       _vala_iterable_unref0 (_type_arg_list);
+                               }
+                       }
+                       _vala_iterable_unref0 (type_arg_list);
+                       _vala_code_node_unref0 (sym);
+               }
+               while (TRUE) {
+                       gboolean _tmp50_ = FALSE;
+                       ValaDataType* _tmp51_ = NULL;
+                       ValaSourceLocation _tmp52_ = {0};
+                       ValaSourceReference* _tmp53_ = NULL;
+                       ValaSourceReference* _tmp54_ = NULL;
+                       ValaPointerType* _tmp55_ = NULL;
+                       _tmp50_ = vala_parser_accept (self, VALA_TOKEN_TYPE_STAR);
+                       if (!_tmp50_) {
+                               break;
+                       }
+                       _tmp51_ = type;
+                       _tmp52_ = begin;
+                       _tmp53_ = vala_parser_get_src (self, &_tmp52_);
+                       _tmp54_ = _tmp53_;
+                       _tmp55_ = vala_pointer_type_new (_tmp51_, _tmp54_);
+                       _vala_code_node_unref0 (type);
+                       type = (ValaDataType*) _tmp55_;
+                       _vala_source_reference_unref0 (_tmp54_);
+               }
+               _tmp56_ = type;
+               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp56_, VALA_TYPE_POINTER_TYPE)) {
+                       ValaDataType* _tmp57_ = NULL;
+                       gboolean _tmp58_ = FALSE;
+                       _tmp57_ = type;
+                       _tmp58_ = vala_parser_accept (self, VALA_TOKEN_TYPE_INTERR);
+                       vala_data_type_set_nullable (_tmp57_, _tmp58_);
+               }
+       }
+       while (TRUE) {
+               gboolean _tmp59_ = FALSE;
+               gboolean invalid_array = FALSE;
+               gint array_rank = 0;
+               ValaDataType* _tmp68_ = NULL;
+               gboolean _tmp69_ = FALSE;
+               ValaArrayType* array_type = NULL;
+               ValaDataType* _tmp70_ = NULL;
+               gint _tmp71_ = 0;
+               ValaSourceLocation _tmp72_ = {0};
+               ValaSourceReference* _tmp73_ = NULL;
+               ValaSourceReference* _tmp74_ = NULL;
+               ValaArrayType* _tmp75_ = NULL;
+               ValaArrayType* _tmp76_ = NULL;
+               ValaArrayType* _tmp77_ = NULL;
+               gboolean _tmp78_ = FALSE;
+               ValaArrayType* _tmp79_ = NULL;
+               gboolean _tmp80_ = FALSE;
+               ValaArrayType* _tmp81_ = NULL;
+               ValaDataType* _tmp82_ = NULL;
+               _tmp59_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_BRACKET);
+               if (!_tmp59_) {
+                       break;
+               }
+               invalid_array = FALSE;
+               array_rank = 0;
+               {
+                       gboolean _tmp60_ = FALSE;
+                       _tmp60_ = TRUE;
+                       while (TRUE) {
+                               gint _tmp62_ = 0;
+                               gboolean _tmp63_ = FALSE;
+                               ValaTokenType _tmp64_ = 0;
+                               if (!_tmp60_) {
+                                       gboolean _tmp61_ = FALSE;
+                                       _tmp61_ = vala_parser_accept (self, VALA_TOKEN_TYPE_COMMA);
+                                       if (!_tmp61_) {
+                                               break;
+                                       }
+                               }
+                               _tmp60_ = FALSE;
+                               _tmp62_ = array_rank;
+                               array_rank = _tmp62_ + 1;
+                               _tmp64_ = vala_parser_current (self);
+                               if (_tmp64_ != VALA_TOKEN_TYPE_COMMA) {
+                                       ValaTokenType _tmp65_ = 0;
+                                       _tmp65_ = vala_parser_current (self);
+                                       _tmp63_ = _tmp65_ != VALA_TOKEN_TYPE_CLOSE_BRACKET;
+                               } else {
+                                       _tmp63_ = FALSE;
+                               }
+                               if (_tmp63_) {
+                                       ValaExpression* _tmp66_ = NULL;
+                                       ValaExpression* _tmp67_ = NULL;
+                                       _tmp66_ = vala_parser_parse_expression (self, &_inner_error_);
+                                       _tmp67_ = _tmp66_;
+                                       _vala_code_node_unref0 (_tmp67_);
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
+                                               if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                                                       g_propagate_error (error, _inner_error_);
+                                                       _vala_code_node_unref0 (type);
+                                                       return NULL;
+                                               } else {
+                                                       _vala_code_node_unref0 (type);
+                                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                                                       g_clear_error (&_inner_error_);
+                                                       return NULL;
+                                               }
+                                       }
+                                       invalid_array = TRUE;
+                               }
+                       }
+               }
+               vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
+                       if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                               g_propagate_error (error, _inner_error_);
+                               _vala_code_node_unref0 (type);
+                               return NULL;
+                       } else {
+                               _vala_code_node_unref0 (type);
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                               g_clear_error (&_inner_error_);
+                               return NULL;
+                       }
+               }
+               _tmp68_ = type;
+               _tmp69_ = inner_type_owned;
+               vala_data_type_set_value_owned (_tmp68_, _tmp69_);
+               _tmp70_ = type;
+               _tmp71_ = array_rank;
+               _tmp72_ = begin;
+               _tmp73_ = vala_parser_get_src (self, &_tmp72_);
+               _tmp74_ = _tmp73_;
+               _tmp75_ = vala_array_type_new (_tmp70_, _tmp71_, _tmp74_);
+               _tmp76_ = _tmp75_;
+               _vala_source_reference_unref0 (_tmp74_);
+               array_type = _tmp76_;
+               _tmp77_ = array_type;
+               _tmp78_ = vala_parser_accept (self, VALA_TOKEN_TYPE_INTERR);
+               vala_data_type_set_nullable ((ValaDataType*) _tmp77_, _tmp78_);
+               _tmp79_ = array_type;
+               _tmp80_ = invalid_array;
+               vala_array_type_set_invalid_syntax (_tmp79_, _tmp80_);
+               _tmp81_ = array_type;
+               _tmp82_ = _vala_code_node_ref0 ((ValaDataType*) _tmp81_);
+               _vala_code_node_unref0 (type);
+               type = _tmp82_;
+               _vala_code_node_unref0 (array_type);
+       }
+       _tmp83_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OP_NEG);
+       if (_tmp83_) {
+               ValaSourceReference* _tmp84_ = NULL;
+               ValaSourceReference* _tmp85_ = NULL;
+               _tmp84_ = vala_parser_get_last_src (self);
+               _tmp85_ = _tmp84_;
+               vala_report_warning (_tmp85_, "obsolete syntax, types are non-null by default");
+               _vala_source_reference_unref0 (_tmp85_);
+       }
+       _tmp86_ = owned_by_default;
+       if (!_tmp86_) {
+               gboolean _tmp87_ = FALSE;
+               _tmp87_ = vala_parser_accept (self, VALA_TOKEN_TYPE_HASH);
+               if (_tmp87_) {
+                       ValaCodeContext* _tmp88_ = NULL;
+                       gboolean _tmp89_ = FALSE;
+                       gboolean _tmp90_ = FALSE;
+                       _tmp88_ = self->priv->context;
+                       _tmp89_ = vala_code_context_get_deprecated (_tmp88_);
+                       _tmp90_ = _tmp89_;
+                       if (!_tmp90_) {
+                               ValaSourceReference* _tmp91_ = NULL;
+                               ValaSourceReference* _tmp92_ = NULL;
+                               _tmp91_ = vala_parser_get_last_src (self);
+                               _tmp92_ = _tmp91_;
+                               vala_report_warning (_tmp92_, "deprecated syntax, use `owned` modifier");
+                               _vala_source_reference_unref0 (_tmp92_);
+                       }
+                       value_owned = TRUE;
+               }
+       }
+       _tmp93_ = type;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp93_, VALA_TYPE_POINTER_TYPE)) {
+               value_owned = FALSE;
+       }
+       _tmp94_ = type;
+       _tmp95_ = is_dynamic;
+       vala_data_type_set_is_dynamic (_tmp94_, _tmp95_);
+       _tmp96_ = type;
+       _tmp97_ = value_owned;
+       vala_data_type_set_value_owned (_tmp96_, _tmp97_);
+       result = type;
+       return result;
+}
+
+
+static ValaDataType* vala_parser_parse_inline_array_type (ValaParser* self, ValaDataType* type, GError** error) {
+       ValaDataType* result = NULL;
+       ValaSourceLocation begin = {0};
+       ValaSourceLocation _tmp0_ = {0};
+       gboolean _tmp1_ = FALSE;
+       ValaDataType* _tmp2_ = NULL;
+       ValaDataType* _tmp23_ = NULL;
+       ValaDataType* _tmp24_ = NULL;
+       GError * _inner_error_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       vala_parser_get_location (self, &_tmp0_);
+       begin = _tmp0_;
+       _tmp2_ = type;
        if (_tmp2_ != NULL) {
                gboolean _tmp3_ = FALSE;
                _tmp3_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_BRACKET);
@@ -4081,120 +4259,93 @@ static ValaDataType* vala_parser_parse_inline_array_type (ValaParser* self, Vala
                _tmp1_ = FALSE;
        }
        if (_tmp1_) {
-               gint array_length = 0;
+               ValaExpression* array_length = NULL;
                ValaTokenType _tmp4_ = 0;
                ValaArrayType* array_type = NULL;
-               ValaDataType* _tmp17_ = NULL;
-               ValaSourceLocation _tmp18_ = {0};
-               ValaSourceReference* _tmp19_ = NULL;
-               ValaSourceReference* _tmp20_ = NULL;
-               ValaArrayType* _tmp21_ = NULL;
-               ValaArrayType* _tmp22_ = NULL;
-               ValaArrayType* _tmp23_ = NULL;
-               gint _tmp24_ = 0;
-               ValaArrayType* _tmp28_ = NULL;
-               ValaDataType* _tmp29_ = NULL;
-               gboolean _tmp30_ = FALSE;
-               gboolean _tmp31_ = FALSE;
-               array_length = -1;
+               ValaDataType* _tmp8_ = NULL;
+               ValaSourceLocation _tmp9_ = {0};
+               ValaSourceReference* _tmp10_ = NULL;
+               ValaSourceReference* _tmp11_ = NULL;
+               ValaArrayType* _tmp12_ = NULL;
+               ValaArrayType* _tmp13_ = NULL;
+               ValaArrayType* _tmp14_ = NULL;
+               ValaExpression* _tmp15_ = NULL;
+               ValaArrayType* _tmp19_ = NULL;
+               ValaDataType* _tmp20_ = NULL;
+               gboolean _tmp21_ = FALSE;
+               gboolean _tmp22_ = FALSE;
+               array_length = NULL;
                _tmp4_ = vala_parser_current (self);
                if (_tmp4_ != VALA_TOKEN_TYPE_CLOSE_BRACKET) {
-                       ValaTokenType _tmp5_ = 0;
-                       ValaExpression* _tmp10_ = NULL;
-                       ValaExpression* _tmp11_ = NULL;
-                       ValaIntegerLiteral* length_literal = NULL;
-                       ValaExpression* _tmp12_ = NULL;
-                       ValaIntegerLiteral* _tmp13_ = NULL;
-                       const gchar* _tmp14_ = NULL;
-                       const gchar* _tmp15_ = NULL;
-                       gint _tmp16_ = 0;
-                       _tmp5_ = vala_parser_current (self);
-                       if (_tmp5_ != VALA_TOKEN_TYPE_INTEGER_LITERAL) {
-                               gchar* _tmp6_ = NULL;
-                               gchar* _tmp7_ = NULL;
-                               GError* _tmp8_ = NULL;
-                               GError* _tmp9_ = NULL;
-                               _tmp6_ = vala_parser_get_error (self, "expected `]' or integer literal");
-                               _tmp7_ = _tmp6_;
-                               _tmp8_ = g_error_new_literal (VALA_PARSE_ERROR, VALA_PARSE_ERROR_SYNTAX, _tmp7_);
-                               _tmp9_ = _tmp8_;
-                               _g_free0 (_tmp7_);
-                               _inner_error_ = _tmp9_;
-                               if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                       g_propagate_error (error, _inner_error_);
-                                       return NULL;
-                               } else {
-                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
-                                       g_clear_error (&_inner_error_);
-                                       return NULL;
-                               }
-                       }
-                       _tmp11_ = vala_parser_parse_literal (self, &_inner_error_);
-                       _tmp10_ = _tmp11_;
-                       if (_inner_error_ != NULL) {
+                       ValaExpression* _tmp5_ = NULL;
+                       ValaExpression* _tmp6_ = NULL;
+                       ValaExpression* _tmp7_ = NULL;
+                       _tmp6_ = vala_parser_parse_expression (self, &_inner_error_);
+                       _tmp5_ = _tmp6_;
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
+                                       _vala_code_node_unref0 (array_length);
                                        return NULL;
                                } else {
+                                       _vala_code_node_unref0 (array_length);
                                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                        g_clear_error (&_inner_error_);
                                        return NULL;
                                }
                        }
-                       _tmp12_ = _tmp10_;
-                       _tmp10_ = NULL;
-                       length_literal = G_TYPE_CHECK_INSTANCE_CAST (_tmp12_, VALA_TYPE_INTEGER_LITERAL, ValaIntegerLiteral);
-                       _tmp13_ = length_literal;
-                       _tmp14_ = vala_integer_literal_get_value (_tmp13_);
-                       _tmp15_ = _tmp14_;
-                       _tmp16_ = atoi (_tmp15_);
-                       array_length = _tmp16_;
-                       _vala_code_node_unref0 (length_literal);
-                       _vala_code_node_unref0 (_tmp10_);
+                       _tmp7_ = _tmp5_;
+                       _tmp5_ = NULL;
+                       _vala_code_node_unref0 (array_length);
+                       array_length = _tmp7_;
+                       _vala_code_node_unref0 (_tmp5_);
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
+                               _vala_code_node_unref0 (array_length);
                                return NULL;
                        } else {
+                               _vala_code_node_unref0 (array_length);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return NULL;
                        }
                }
-               _tmp17_ = type;
-               _tmp18_ = begin;
-               _tmp19_ = vala_parser_get_src (self, &_tmp18_);
-               _tmp20_ = _tmp19_;
-               _tmp21_ = vala_array_type_new (_tmp17_, 1, _tmp20_);
+               _tmp8_ = type;
+               _tmp9_ = begin;
+               _tmp10_ = vala_parser_get_src (self, &_tmp9_);
+               _tmp11_ = _tmp10_;
+               _tmp12_ = vala_array_type_new (_tmp8_, 1, _tmp11_);
+               _tmp13_ = _tmp12_;
+               _vala_source_reference_unref0 (_tmp11_);
+               array_type = _tmp13_;
+               _tmp14_ = array_type;
+               vala_array_type_set_inline_allocated (_tmp14_, TRUE);
+               _tmp15_ = array_length;
+               if (_tmp15_ != NULL) {
+                       ValaArrayType* _tmp16_ = NULL;
+                       ValaArrayType* _tmp17_ = NULL;
+                       ValaExpression* _tmp18_ = NULL;
+                       _tmp16_ = array_type;
+                       vala_array_type_set_fixed_length (_tmp16_, TRUE);
+                       _tmp17_ = array_type;
+                       _tmp18_ = array_length;
+                       vala_array_type_set_length (_tmp17_, _tmp18_);
+               }
+               _tmp19_ = array_type;
+               _tmp20_ = type;
+               _tmp21_ = vala_data_type_get_value_owned (_tmp20_);
                _tmp22_ = _tmp21_;
-               _vala_source_reference_unref0 (_tmp20_);
-               array_type = _tmp22_;
-               _tmp23_ = array_type;
-               vala_array_type_set_inline_allocated (_tmp23_, TRUE);
-               _tmp24_ = array_length;
-               if (_tmp24_ > 0) {
-                       ValaArrayType* _tmp25_ = NULL;
-                       ValaArrayType* _tmp26_ = NULL;
-                       gint _tmp27_ = 0;
-                       _tmp25_ = array_type;
-                       vala_array_type_set_fixed_length (_tmp25_, TRUE);
-                       _tmp26_ = array_type;
-                       _tmp27_ = array_length;
-                       vala_array_type_set_length (_tmp26_, _tmp27_);
-               }
-               _tmp28_ = array_type;
-               _tmp29_ = type;
-               _tmp30_ = vala_data_type_get_value_owned (_tmp29_);
-               _tmp31_ = _tmp30_;
-               vala_data_type_set_value_owned ((ValaDataType*) _tmp28_, _tmp31_);
+               vala_data_type_set_value_owned ((ValaDataType*) _tmp19_, _tmp22_);
                result = (ValaDataType*) array_type;
+               _vala_code_node_unref0 (array_length);
                return result;
        }
-       _tmp32_ = type;
-       _tmp33_ = _vala_code_node_ref0 (_tmp32_);
-       result = _tmp33_;
+       _tmp23_ = type;
+       _tmp24_ = _vala_code_node_ref0 (_tmp23_);
+       result = _tmp24_;
        return result;
 }
 
@@ -4229,7 +4380,7 @@ static ValaList* vala_parser_parse_argument_list (ValaParser* self, GError** err
                                _tmp3_ = FALSE;
                                _tmp6_ = vala_parser_parse_argument (self, &_inner_error_);
                                _tmp5_ = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (list);
@@ -4273,7 +4424,7 @@ static ValaExpression* vala_parser_parse_argument (ValaParser* self, GError** er
                ValaExpression* _tmp8_ = NULL;
                _tmp2_ = vala_parser_parse_expression (self, &_inner_error_);
                inner = _tmp2_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -4307,7 +4458,7 @@ static ValaExpression* vala_parser_parse_argument (ValaParser* self, GError** er
                        ValaExpression* _tmp16_ = NULL;
                        _tmp10_ = vala_parser_parse_expression (self, &_inner_error_);
                        inner = _tmp10_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -4338,7 +4489,7 @@ static ValaExpression* vala_parser_parse_argument (ValaParser* self, GError** er
                        ValaMemberAccess* _tmp22_ = NULL;
                        _tmp17_ = vala_parser_parse_expression (self, &_inner_error_);
                        expr = _tmp17_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -4385,7 +4536,7 @@ static ValaExpression* vala_parser_parse_argument (ValaParser* self, GError** er
                                ValaExpression* _tmp38_ = NULL;
                                _tmp28_ = vala_parser_parse_expression (self, &_inner_error_);
                                _tmp27_ = _tmp28_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (ma);
@@ -4459,7 +4610,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaExpression* _tmp4_ = NULL;
                        _tmp3_ = vala_parser_parse_literal (self, &_inner_error_);
                        _tmp2_ = _tmp3_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4485,7 +4636,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaInitializerList* _tmp7_ = NULL;
                        _tmp6_ = vala_parser_parse_initializer (self, &_inner_error_);
                        _tmp5_ = _tmp6_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4511,7 +4662,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaExpression* _tmp10_ = NULL;
                        _tmp9_ = vala_parser_parse_simple_name (self, &_inner_error_);
                        _tmp8_ = _tmp9_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4537,7 +4688,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaExpression* _tmp13_ = NULL;
                        _tmp12_ = vala_parser_parse_tuple (self, &_inner_error_);
                        _tmp11_ = _tmp12_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4563,7 +4714,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaExpression* _tmp16_ = NULL;
                        _tmp15_ = vala_parser_parse_template (self, &_inner_error_);
                        _tmp14_ = _tmp15_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4589,7 +4740,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaExpression* _tmp19_ = NULL;
                        _tmp18_ = vala_parser_parse_regex_literal (self, &_inner_error_);
                        _tmp17_ = _tmp18_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4615,7 +4766,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaExpression* _tmp22_ = NULL;
                        _tmp21_ = vala_parser_parse_this_access (self, &_inner_error_);
                        _tmp20_ = _tmp21_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4641,7 +4792,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaExpression* _tmp25_ = NULL;
                        _tmp24_ = vala_parser_parse_base_access (self, &_inner_error_);
                        _tmp23_ = _tmp24_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4667,7 +4818,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaExpression* _tmp28_ = NULL;
                        _tmp27_ = vala_parser_parse_object_or_array_creation_expression (self, &_inner_error_);
                        _tmp26_ = _tmp27_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4693,7 +4844,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaExpression* _tmp31_ = NULL;
                        _tmp30_ = vala_parser_parse_yield_expression (self, &_inner_error_);
                        _tmp29_ = _tmp30_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4719,7 +4870,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaExpression* _tmp34_ = NULL;
                        _tmp33_ = vala_parser_parse_sizeof_expression (self, &_inner_error_);
                        _tmp32_ = _tmp33_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4745,7 +4896,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaExpression* _tmp37_ = NULL;
                        _tmp36_ = vala_parser_parse_typeof_expression (self, &_inner_error_);
                        _tmp35_ = _tmp36_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4771,7 +4922,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                        ValaExpression* _tmp40_ = NULL;
                        _tmp39_ = vala_parser_parse_simple_name (self, &_inner_error_);
                        _tmp38_ = _tmp39_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -4812,7 +4963,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                                _tmp45_ = expr;
                                _tmp46_ = vala_parser_parse_member_access (self, &_tmp44_, _tmp45_, &_inner_error_);
                                _tmp43_ = _tmp46_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (expr);
@@ -4842,7 +4993,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                                _tmp50_ = expr;
                                _tmp51_ = vala_parser_parse_pointer_member_access (self, &_tmp49_, _tmp50_, &_inner_error_);
                                _tmp48_ = _tmp51_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (expr);
@@ -4872,7 +5023,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                                _tmp55_ = expr;
                                _tmp56_ = vala_parser_parse_method_call (self, &_tmp54_, _tmp55_, &_inner_error_);
                                _tmp53_ = _tmp56_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (expr);
@@ -4902,7 +5053,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                                _tmp60_ = expr;
                                _tmp61_ = vala_parser_parse_element_access (self, &_tmp59_, _tmp60_, &_inner_error_);
                                _tmp58_ = _tmp61_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (expr);
@@ -4932,7 +5083,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                                _tmp65_ = expr;
                                _tmp66_ = vala_parser_parse_post_increment_expression (self, &_tmp64_, _tmp65_, &_inner_error_);
                                _tmp63_ = _tmp66_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (expr);
@@ -4962,7 +5113,7 @@ static ValaExpression* vala_parser_parse_primary_expression (ValaParser* self, G
                                _tmp70_ = expr;
                                _tmp71_ = vala_parser_parse_post_decrement_expression (self, &_tmp69_, _tmp70_, &_inner_error_);
                                _tmp68_ = _tmp71_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (expr);
@@ -5020,7 +5171,7 @@ static ValaExpression* vala_parser_parse_simple_name (ValaParser* self, GError**
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_identifier (self, &_inner_error_);
        id = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5045,7 +5196,7 @@ static ValaExpression* vala_parser_parse_simple_name (ValaParser* self, GError**
                gchar* _tmp7_ = NULL;
                _tmp6_ = vala_parser_parse_identifier (self, &_inner_error_);
                _tmp5_ = _tmp6_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _g_free0 (id);
@@ -5066,7 +5217,7 @@ static ValaExpression* vala_parser_parse_simple_name (ValaParser* self, GError**
        }
        _tmp8_ = vala_parser_parse_type_argument_list (self, TRUE, &_inner_error_);
        type_arg_list = _tmp8_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -5162,7 +5313,7 @@ static ValaExpression* vala_parser_parse_tuple (ValaParser* self, GError** error
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5194,7 +5345,7 @@ static ValaExpression* vala_parser_parse_tuple (ValaParser* self, GError** error
                                _tmp4_ = FALSE;
                                _tmp7_ = vala_parser_parse_expression (self, &_inner_error_);
                                _tmp6_ = _tmp7_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (expr_list);
@@ -5213,7 +5364,7 @@ static ValaExpression* vala_parser_parse_tuple (ValaParser* self, GError** error
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (expr_list);
@@ -5316,7 +5467,7 @@ static ValaExpression* vala_parser_parse_template (ValaParser* self, GError** er
        _tmp1_ = vala_template_new (NULL);
        template = _tmp1_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_TEMPLATE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (template);
@@ -5339,7 +5490,7 @@ static ValaExpression* vala_parser_parse_template (ValaParser* self, GError** er
                }
                _tmp4_ = vala_parser_parse_expression (self, &_inner_error_);
                _tmp3_ = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (template);
@@ -5354,7 +5505,7 @@ static ValaExpression* vala_parser_parse_template (ValaParser* self, GError** er
                _tmp5_ = template;
                vala_template_add_expression (_tmp5_, _tmp3_);
                vala_parser_expect (self, VALA_TOKEN_TYPE_COMMA, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (_tmp3_);
@@ -5371,7 +5522,7 @@ static ValaExpression* vala_parser_parse_template (ValaParser* self, GError** er
                _vala_code_node_unref0 (_tmp3_);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_TEMPLATE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (template);
@@ -5401,7 +5552,7 @@ static ValaExpression* vala_parser_parse_regex_literal (ValaParser* self, GError
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_REGEX_LITERAL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5413,7 +5564,7 @@ static ValaExpression* vala_parser_parse_regex_literal (ValaParser* self, GError
        }
        _tmp0_ = vala_parser_parse_literal (self, &_inner_error_);
        expr = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5448,7 +5599,7 @@ static ValaExpression* vala_parser_parse_member_access (ValaParser* self, ValaSo
        g_return_val_if_fail (begin != NULL, NULL);
        g_return_val_if_fail (inner != NULL, NULL);
        vala_parser_expect (self, VALA_TOKEN_TYPE_DOT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5460,7 +5611,7 @@ static ValaExpression* vala_parser_parse_member_access (ValaParser* self, ValaSo
        }
        _tmp0_ = vala_parser_parse_identifier (self, &_inner_error_);
        id = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5472,7 +5623,7 @@ static ValaExpression* vala_parser_parse_member_access (ValaParser* self, ValaSo
        }
        _tmp1_ = vala_parser_parse_type_argument_list (self, TRUE, &_inner_error_);
        type_arg_list = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -5568,7 +5719,7 @@ static ValaExpression* vala_parser_parse_pointer_member_access (ValaParser* self
        g_return_val_if_fail (begin != NULL, NULL);
        g_return_val_if_fail (inner != NULL, NULL);
        vala_parser_expect (self, VALA_TOKEN_TYPE_OP_PTR, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5580,7 +5731,7 @@ static ValaExpression* vala_parser_parse_pointer_member_access (ValaParser* self
        }
        _tmp0_ = vala_parser_parse_identifier (self, &_inner_error_);
        id = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5592,7 +5743,7 @@ static ValaExpression* vala_parser_parse_pointer_member_access (ValaParser* self
        }
        _tmp1_ = vala_parser_parse_type_argument_list (self, TRUE, &_inner_error_);
        type_arg_list = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -5683,7 +5834,7 @@ static ValaExpression* vala_parser_parse_method_call (ValaParser* self, ValaSour
        g_return_val_if_fail (begin != NULL, NULL);
        g_return_val_if_fail (inner != NULL, NULL);
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5695,7 +5846,7 @@ static ValaExpression* vala_parser_parse_method_call (ValaParser* self, ValaSour
        }
        _tmp0_ = vala_parser_parse_argument_list (self, &_inner_error_);
        arg_list = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5706,7 +5857,7 @@ static ValaExpression* vala_parser_parse_method_call (ValaParser* self, ValaSour
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (arg_list);
@@ -5720,7 +5871,7 @@ static ValaExpression* vala_parser_parse_method_call (ValaParser* self, ValaSour
        }
        _tmp1_ = vala_parser_parse_object_initializer (self, &_inner_error_);
        init_list = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (arg_list);
@@ -5951,7 +6102,7 @@ static ValaExpression* vala_parser_parse_element_access (ValaParser* self, ValaS
        g_return_val_if_fail (begin != NULL, NULL);
        g_return_val_if_fail (inner != NULL, NULL);
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_BRACKET, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5963,7 +6114,7 @@ static ValaExpression* vala_parser_parse_element_access (ValaParser* self, ValaS
        }
        _tmp0_ = vala_parser_parse_expression_list (self, &_inner_error_);
        index_list = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -5990,7 +6141,7 @@ static ValaExpression* vala_parser_parse_element_access (ValaParser* self, ValaS
                ValaExpression* _tmp8_ = NULL;
                _tmp7_ = vala_parser_parse_expression (self, &_inner_error_);
                _tmp6_ = _tmp7_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (stop);
@@ -6011,7 +6162,7 @@ static ValaExpression* vala_parser_parse_element_access (ValaParser* self, ValaS
                _vala_code_node_unref0 (_tmp6_);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (stop);
@@ -6151,7 +6302,7 @@ static ValaList* vala_parser_parse_expression_list (ValaParser* self, GError** e
                        _tmp2_ = FALSE;
                        _tmp5_ = vala_parser_parse_expression (self, &_inner_error_);
                        _tmp4_ = _tmp5_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (list);
@@ -6187,7 +6338,7 @@ static ValaExpression* vala_parser_parse_this_access (ValaParser* self, GError**
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_THIS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6222,7 +6373,7 @@ static ValaExpression* vala_parser_parse_base_access (ValaParser* self, GError**
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_BASE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6256,7 +6407,7 @@ static ValaExpression* vala_parser_parse_post_increment_expression (ValaParser*
        g_return_val_if_fail (begin != NULL, NULL);
        g_return_val_if_fail (inner != NULL, NULL);
        vala_parser_expect (self, VALA_TOKEN_TYPE_OP_INC, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6291,7 +6442,7 @@ static ValaExpression* vala_parser_parse_post_decrement_expression (ValaParser*
        g_return_val_if_fail (begin != NULL, NULL);
        g_return_val_if_fail (inner != NULL, NULL);
        vala_parser_expect (self, VALA_TOKEN_TYPE_OP_DEC, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6317,15 +6468,16 @@ static ValaExpression* vala_parser_parse_object_or_array_creation_expression (Va
        ValaExpression* result = NULL;
        ValaSourceLocation begin = {0};
        ValaSourceLocation _tmp0_ = {0};
+       gboolean _tmp1_ = FALSE;
        ValaMemberAccess* member = NULL;
-       ValaMemberAccess* _tmp1_ = NULL;
-       gboolean _tmp2_ = FALSE;
+       ValaMemberAccess* _tmp6_ = NULL;
+       gboolean _tmp7_ = FALSE;
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_NEW, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6335,9 +6487,35 @@ static ValaExpression* vala_parser_parse_object_or_array_creation_expression (Va
                        return NULL;
                }
        }
-       _tmp1_ = vala_parser_parse_member_name (self, NULL, &_inner_error_);
-       member = _tmp1_;
-       if (_inner_error_ != NULL) {
+       _tmp1_ = vala_parser_is_inner_array_type (self);
+       if (_tmp1_) {
+               ValaSourceLocation _tmp2_ = {0};
+               ValaExpression* _tmp3_ = NULL;
+               ValaExpression* _tmp4_ = NULL;
+               ValaExpression* _tmp5_ = NULL;
+               _tmp2_ = begin;
+               vala_parser_rollback (self, &_tmp2_);
+               _tmp4_ = vala_parser_parse_array_creation_expression (self, &_inner_error_);
+               _tmp3_ = _tmp4_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
+                       if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                               g_propagate_error (error, _inner_error_);
+                               return NULL;
+                       } else {
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                               g_clear_error (&_inner_error_);
+                               return NULL;
+                       }
+               }
+               _tmp5_ = _tmp3_;
+               _tmp3_ = NULL;
+               result = _tmp5_;
+               _vala_code_node_unref0 (_tmp3_);
+               return result;
+       }
+       _tmp6_ = vala_parser_parse_member_name (self, NULL, &_inner_error_);
+       member = _tmp6_;
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6347,17 +6525,17 @@ static ValaExpression* vala_parser_parse_object_or_array_creation_expression (Va
                        return NULL;
                }
        }
-       _tmp2_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_PARENS);
-       if (_tmp2_) {
+       _tmp7_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_PARENS);
+       if (_tmp7_) {
                ValaExpression* expr = NULL;
-               ValaSourceLocation _tmp3_ = {0};
-               ValaMemberAccess* _tmp4_ = NULL;
-               ValaExpression* _tmp5_ = NULL;
-               _tmp3_ = begin;
-               _tmp4_ = member;
-               _tmp5_ = vala_parser_parse_object_creation_expression (self, &_tmp3_, _tmp4_, &_inner_error_);
-               expr = _tmp5_;
-               if (_inner_error_ != NULL) {
+               ValaSourceLocation _tmp8_ = {0};
+               ValaMemberAccess* _tmp9_ = NULL;
+               ValaExpression* _tmp10_ = NULL;
+               _tmp8_ = begin;
+               _tmp9_ = member;
+               _tmp10_ = vala_parser_parse_object_creation_expression (self, &_tmp8_, _tmp9_, &_inner_error_);
+               expr = _tmp10_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (member);
@@ -6374,31 +6552,31 @@ static ValaExpression* vala_parser_parse_object_or_array_creation_expression (Va
                return result;
        } else {
                gboolean is_pointer_type = FALSE;
-               gboolean _tmp7_ = FALSE;
-               gboolean _tmp8_ = FALSE;
+               gboolean _tmp12_ = FALSE;
+               gboolean _tmp13_ = FALSE;
                is_pointer_type = FALSE;
                while (TRUE) {
-                       gboolean _tmp6_ = FALSE;
-                       _tmp6_ = vala_parser_accept (self, VALA_TOKEN_TYPE_STAR);
-                       if (!_tmp6_) {
+                       gboolean _tmp11_ = FALSE;
+                       _tmp11_ = vala_parser_accept (self, VALA_TOKEN_TYPE_STAR);
+                       if (!_tmp11_) {
                                break;
                        }
                        is_pointer_type = TRUE;
                }
-               _tmp7_ = is_pointer_type;
-               if (!_tmp7_) {
+               _tmp12_ = is_pointer_type;
+               if (!_tmp12_) {
                        vala_parser_accept (self, VALA_TOKEN_TYPE_INTERR);
                }
-               _tmp8_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_BRACKET);
-               if (_tmp8_) {
-                       ValaSourceLocation _tmp9_ = {0};
+               _tmp13_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_BRACKET);
+               if (_tmp13_) {
+                       ValaSourceLocation _tmp14_ = {0};
                        ValaExpression* expr = NULL;
-                       ValaExpression* _tmp10_ = NULL;
-                       _tmp9_ = begin;
-                       vala_parser_rollback (self, &_tmp9_);
-                       _tmp10_ = vala_parser_parse_array_creation_expression (self, &_inner_error_);
-                       expr = _tmp10_;
-                       if (_inner_error_ != NULL) {
+                       ValaExpression* _tmp15_ = NULL;
+                       _tmp14_ = begin;
+                       vala_parser_rollback (self, &_tmp14_);
+                       _tmp15_ = vala_parser_parse_array_creation_expression (self, &_inner_error_);
+                       expr = _tmp15_;
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (member);
@@ -6414,16 +6592,16 @@ static ValaExpression* vala_parser_parse_object_or_array_creation_expression (Va
                        _vala_code_node_unref0 (member);
                        return result;
                } else {
-                       gchar* _tmp11_ = NULL;
-                       gchar* _tmp12_ = NULL;
-                       GError* _tmp13_ = NULL;
-                       GError* _tmp14_ = NULL;
-                       _tmp11_ = vala_parser_get_error (self, "expected ( or [");
-                       _tmp12_ = _tmp11_;
-                       _tmp13_ = g_error_new_literal (VALA_PARSE_ERROR, VALA_PARSE_ERROR_SYNTAX, _tmp12_);
-                       _tmp14_ = _tmp13_;
-                       _g_free0 (_tmp12_);
-                       _inner_error_ = _tmp14_;
+                       gchar* _tmp16_ = NULL;
+                       gchar* _tmp17_ = NULL;
+                       GError* _tmp18_ = NULL;
+                       GError* _tmp19_ = NULL;
+                       _tmp16_ = vala_parser_get_error (self, "expected ( or [");
+                       _tmp17_ = _tmp16_;
+                       _tmp18_ = g_error_new_literal (VALA_PARSE_ERROR, VALA_PARSE_ERROR_SYNTAX, _tmp17_);
+                       _tmp19_ = _tmp18_;
+                       _g_free0 (_tmp17_);
+                       _inner_error_ = _tmp19_;
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (member);
@@ -6462,7 +6640,7 @@ static ValaExpression* vala_parser_parse_object_creation_expression (ValaParser*
        vala_member_access_set_creation_member (_tmp0_, TRUE);
        _tmp1_ = vala_parser_parse_argument_list (self, &_inner_error_);
        arg_list = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6473,7 +6651,7 @@ static ValaExpression* vala_parser_parse_object_creation_expression (ValaParser*
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (arg_list);
@@ -6487,7 +6665,7 @@ static ValaExpression* vala_parser_parse_object_creation_expression (ValaParser*
        }
        _tmp2_ = vala_parser_parse_object_initializer (self, &_inner_error_);
        init_list = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (arg_list);
@@ -6608,36 +6786,40 @@ static ValaExpression* vala_parser_parse_array_creation_expression (ValaParser*
        ValaExpression* result = NULL;
        ValaSourceLocation begin = {0};
        ValaSourceLocation _tmp0_ = {0};
+       gboolean inner_array_type = FALSE;
+       gboolean _tmp1_ = FALSE;
+       gboolean _tmp2_ = FALSE;
        ValaMemberAccess* member = NULL;
-       ValaMemberAccess* _tmp1_ = NULL;
+       ValaMemberAccess* _tmp3_ = NULL;
        ValaDataType* element_type = NULL;
-       ValaMemberAccess* _tmp2_ = NULL;
-       ValaUnresolvedType* _tmp3_ = NULL;
+       ValaMemberAccess* _tmp4_ = NULL;
+       ValaUnresolvedType* _tmp5_ = NULL;
        gboolean is_pointer_type = FALSE;
-       gboolean _tmp10_ = FALSE;
+       gboolean _tmp12_ = FALSE;
+       gboolean _tmp15_ = FALSE;
        gboolean size_specified = FALSE;
        ValaList* size_specifier_list = NULL;
        gboolean first = FALSE;
        ValaInitializerList* initializer = NULL;
-       ValaTokenType _tmp41_ = 0;
+       ValaTokenType _tmp46_ = 0;
        ValaArrayCreationExpression* expr = NULL;
-       ValaDataType* _tmp45_ = NULL;
-       ValaList* _tmp46_ = NULL;
-       gint _tmp47_ = 0;
-       gint _tmp48_ = 0;
-       ValaInitializerList* _tmp49_ = NULL;
-       ValaSourceLocation _tmp50_ = {0};
-       ValaSourceReference* _tmp51_ = NULL;
-       ValaSourceReference* _tmp52_ = NULL;
-       ValaArrayCreationExpression* _tmp53_ = NULL;
-       ValaArrayCreationExpression* _tmp54_ = NULL;
-       gboolean _tmp55_ = FALSE;
+       ValaDataType* _tmp50_ = NULL;
+       ValaList* _tmp51_ = NULL;
+       gint _tmp52_ = 0;
+       gint _tmp53_ = 0;
+       ValaInitializerList* _tmp54_ = NULL;
+       ValaSourceLocation _tmp55_ = {0};
+       ValaSourceReference* _tmp56_ = NULL;
+       ValaSourceReference* _tmp57_ = NULL;
+       ValaArrayCreationExpression* _tmp58_ = NULL;
+       ValaArrayCreationExpression* _tmp59_ = NULL;
+       gboolean _tmp60_ = FALSE;
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_NEW, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6647,9 +6829,36 @@ static ValaExpression* vala_parser_parse_array_creation_expression (ValaParser*
                        return NULL;
                }
        }
-       _tmp1_ = vala_parser_parse_member_name (self, NULL, &_inner_error_);
-       member = _tmp1_;
-       if (_inner_error_ != NULL) {
+       _tmp1_ = vala_parser_is_inner_array_type (self);
+       inner_array_type = _tmp1_;
+       _tmp2_ = inner_array_type;
+       if (_tmp2_) {
+               vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
+                       if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                               g_propagate_error (error, _inner_error_);
+                               return NULL;
+                       } else {
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                               g_clear_error (&_inner_error_);
+                               return NULL;
+                       }
+               }
+               vala_parser_expect (self, VALA_TOKEN_TYPE_UNOWNED, &_inner_error_);
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
+                       if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                               g_propagate_error (error, _inner_error_);
+                               return NULL;
+                       } else {
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                               g_clear_error (&_inner_error_);
+                               return NULL;
+                       }
+               }
+       }
+       _tmp3_ = vala_parser_parse_member_name (self, NULL, &_inner_error_);
+       member = _tmp3_;
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -6659,43 +6868,68 @@ static ValaExpression* vala_parser_parse_array_creation_expression (ValaParser*
                        return NULL;
                }
        }
-       _tmp2_ = member;
-       _tmp3_ = vala_unresolved_type_new_from_expression ((ValaExpression*) _tmp2_);
-       element_type = (ValaDataType*) _tmp3_;
+       _tmp4_ = member;
+       _tmp5_ = vala_unresolved_type_new_from_expression ((ValaExpression*) _tmp4_);
+       element_type = (ValaDataType*) _tmp5_;
        is_pointer_type = FALSE;
        while (TRUE) {
-               gboolean _tmp4_ = FALSE;
-               ValaDataType* _tmp5_ = NULL;
-               ValaSourceLocation _tmp6_ = {0};
-               ValaSourceReference* _tmp7_ = NULL;
-               ValaSourceReference* _tmp8_ = NULL;
-               ValaPointerType* _tmp9_ = NULL;
-               _tmp4_ = vala_parser_accept (self, VALA_TOKEN_TYPE_STAR);
-               if (!_tmp4_) {
+               gboolean _tmp6_ = FALSE;
+               ValaDataType* _tmp7_ = NULL;
+               ValaSourceLocation _tmp8_ = {0};
+               ValaSourceReference* _tmp9_ = NULL;
+               ValaSourceReference* _tmp10_ = NULL;
+               ValaPointerType* _tmp11_ = NULL;
+               _tmp6_ = vala_parser_accept (self, VALA_TOKEN_TYPE_STAR);
+               if (!_tmp6_) {
                        break;
                }
-               _tmp5_ = element_type;
-               _tmp6_ = begin;
-               _tmp7_ = vala_parser_get_src (self, &_tmp6_);
-               _tmp8_ = _tmp7_;
-               _tmp9_ = vala_pointer_type_new (_tmp5_, _tmp8_);
+               _tmp7_ = element_type;
+               _tmp8_ = begin;
+               _tmp9_ = vala_parser_get_src (self, &_tmp8_);
+               _tmp10_ = _tmp9_;
+               _tmp11_ = vala_pointer_type_new (_tmp7_, _tmp10_);
                _vala_code_node_unref0 (element_type);
-               element_type = (ValaDataType*) _tmp9_;
-               _vala_source_reference_unref0 (_tmp8_);
+               element_type = (ValaDataType*) _tmp11_;
+               _vala_source_reference_unref0 (_tmp10_);
                is_pointer_type = TRUE;
        }
-       _tmp10_ = is_pointer_type;
-       if (!_tmp10_) {
-               gboolean _tmp11_ = FALSE;
-               _tmp11_ = vala_parser_accept (self, VALA_TOKEN_TYPE_INTERR);
-               if (_tmp11_) {
-                       ValaDataType* _tmp12_ = NULL;
-                       _tmp12_ = element_type;
-                       vala_data_type_set_nullable (_tmp12_, TRUE);
+       _tmp12_ = is_pointer_type;
+       if (!_tmp12_) {
+               gboolean _tmp13_ = FALSE;
+               _tmp13_ = vala_parser_accept (self, VALA_TOKEN_TYPE_INTERR);
+               if (_tmp13_) {
+                       ValaDataType* _tmp14_ = NULL;
+                       _tmp14_ = element_type;
+                       vala_data_type_set_nullable (_tmp14_, TRUE);
+               }
+       }
+       _tmp15_ = inner_array_type;
+       if (_tmp15_) {
+               ValaDataType* _tmp16_ = NULL;
+               vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
+                       if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                               g_propagate_error (error, _inner_error_);
+                               _vala_code_node_unref0 (element_type);
+                               _vala_code_node_unref0 (member);
+                               return NULL;
+                       } else {
+                               _vala_code_node_unref0 (element_type);
+                               _vala_code_node_unref0 (member);
+                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                               g_clear_error (&_inner_error_);
+                               return NULL;
+                       }
                }
+               _tmp16_ = element_type;
+               vala_data_type_set_value_owned (_tmp16_, FALSE);
+       } else {
+               ValaDataType* _tmp17_ = NULL;
+               _tmp17_ = element_type;
+               vala_data_type_set_value_owned (_tmp17_, TRUE);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_BRACKET, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (element_type);
@@ -6713,44 +6947,44 @@ static ValaExpression* vala_parser_parse_array_creation_expression (ValaParser*
        size_specifier_list = NULL;
        first = TRUE;
        {
-               gboolean _tmp13_ = FALSE;
-               _tmp13_ = TRUE;
+               gboolean _tmp18_ = FALSE;
+               _tmp18_ = TRUE;
                while (TRUE) {
-                       gboolean _tmp15_ = FALSE;
-                       GEqualFunc _tmp29_ = NULL;
-                       ValaArrayList* _tmp30_ = NULL;
-                       if (!_tmp13_) {
-                               gboolean _tmp14_ = FALSE;
-                               _tmp14_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_BRACKET);
-                               if (!_tmp14_) {
+                       gboolean _tmp20_ = FALSE;
+                       GEqualFunc _tmp34_ = NULL;
+                       ValaArrayList* _tmp35_ = NULL;
+                       if (!_tmp18_) {
+                               gboolean _tmp19_ = FALSE;
+                               _tmp19_ = vala_parser_accept (self, VALA_TOKEN_TYPE_OPEN_BRACKET);
+                               if (!_tmp19_) {
                                        break;
                                }
                        }
-                       _tmp13_ = FALSE;
-                       _tmp15_ = first;
-                       if (!_tmp15_) {
-                               gboolean _tmp16_ = FALSE;
-                               ValaDataType* _tmp21_ = NULL;
-                               ValaList* _tmp22_ = NULL;
-                               gint _tmp23_ = 0;
-                               gint _tmp24_ = 0;
-                               ValaDataType* _tmp25_ = NULL;
-                               ValaSourceReference* _tmp26_ = NULL;
-                               ValaSourceReference* _tmp27_ = NULL;
-                               ValaArrayType* _tmp28_ = NULL;
-                               _tmp16_ = size_specified;
-                               if (_tmp16_) {
-                                       gchar* _tmp17_ = NULL;
-                                       gchar* _tmp18_ = NULL;
-                                       GError* _tmp19_ = NULL;
-                                       GError* _tmp20_ = NULL;
-                                       _tmp17_ = vala_parser_get_error (self, "size of inner arrays must not be specified in array creation expressio" \
+                       _tmp18_ = FALSE;
+                       _tmp20_ = first;
+                       if (!_tmp20_) {
+                               gboolean _tmp21_ = FALSE;
+                               ValaDataType* _tmp26_ = NULL;
+                               ValaList* _tmp27_ = NULL;
+                               gint _tmp28_ = 0;
+                               gint _tmp29_ = 0;
+                               ValaDataType* _tmp30_ = NULL;
+                               ValaSourceReference* _tmp31_ = NULL;
+                               ValaSourceReference* _tmp32_ = NULL;
+                               ValaArrayType* _tmp33_ = NULL;
+                               _tmp21_ = size_specified;
+                               if (_tmp21_) {
+                                       gchar* _tmp22_ = NULL;
+                                       gchar* _tmp23_ = NULL;
+                                       GError* _tmp24_ = NULL;
+                                       GError* _tmp25_ = NULL;
+                                       _tmp22_ = vala_parser_get_error (self, "size of inner arrays must not be specified in array creation expressio" \
 "n");
-                                       _tmp18_ = _tmp17_;
-                                       _tmp19_ = g_error_new_literal (VALA_PARSE_ERROR, VALA_PARSE_ERROR_SYNTAX, _tmp18_);
-                                       _tmp20_ = _tmp19_;
-                                       _g_free0 (_tmp18_);
-                                       _inner_error_ = _tmp20_;
+                                       _tmp23_ = _tmp22_;
+                                       _tmp24_ = g_error_new_literal (VALA_PARSE_ERROR, VALA_PARSE_ERROR_SYNTAX, _tmp23_);
+                                       _tmp25_ = _tmp24_;
+                                       _g_free0 (_tmp23_);
+                                       _inner_error_ = _tmp25_;
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (size_specifier_list);
@@ -6766,56 +7000,56 @@ static ValaExpression* vala_parser_parse_array_creation_expression (ValaParser*
                                                return NULL;
                                        }
                                }
-                               _tmp21_ = element_type;
-                               _tmp22_ = size_specifier_list;
-                               _tmp23_ = vala_collection_get_size ((ValaCollection*) _tmp22_);
-                               _tmp24_ = _tmp23_;
-                               _tmp25_ = element_type;
-                               _tmp26_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp25_);
-                               _tmp27_ = _tmp26_;
-                               _tmp28_ = vala_array_type_new (_tmp21_, _tmp24_, _tmp27_);
+                               _tmp26_ = element_type;
+                               _tmp27_ = size_specifier_list;
+                               _tmp28_ = vala_collection_get_size ((ValaCollection*) _tmp27_);
+                               _tmp29_ = _tmp28_;
+                               _tmp30_ = element_type;
+                               _tmp31_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp30_);
+                               _tmp32_ = _tmp31_;
+                               _tmp33_ = vala_array_type_new (_tmp26_, _tmp29_, _tmp32_);
                                _vala_code_node_unref0 (element_type);
-                               element_type = (ValaDataType*) _tmp28_;
+                               element_type = (ValaDataType*) _tmp33_;
                        } else {
                                first = FALSE;
                        }
-                       _tmp29_ = g_direct_equal;
-                       _tmp30_ = vala_array_list_new (VALA_TYPE_EXPRESSION, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp29_);
+                       _tmp34_ = g_direct_equal;
+                       _tmp35_ = vala_array_list_new (VALA_TYPE_EXPRESSION, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, _tmp34_);
                        _vala_iterable_unref0 (size_specifier_list);
-                       size_specifier_list = (ValaList*) _tmp30_;
+                       size_specifier_list = (ValaList*) _tmp35_;
                        {
-                               gboolean _tmp31_ = FALSE;
-                               _tmp31_ = TRUE;
+                               gboolean _tmp36_ = FALSE;
+                               _tmp36_ = TRUE;
                                while (TRUE) {
                                        ValaExpression* size = NULL;
-                                       gboolean _tmp33_ = FALSE;
-                                       ValaTokenType _tmp34_ = 0;
-                                       ValaList* _tmp39_ = NULL;
-                                       ValaExpression* _tmp40_ = NULL;
-                                       if (!_tmp31_) {
-                                               gboolean _tmp32_ = FALSE;
-                                               _tmp32_ = vala_parser_accept (self, VALA_TOKEN_TYPE_COMMA);
-                                               if (!_tmp32_) {
+                                       gboolean _tmp38_ = FALSE;
+                                       ValaTokenType _tmp39_ = 0;
+                                       ValaList* _tmp44_ = NULL;
+                                       ValaExpression* _tmp45_ = NULL;
+                                       if (!_tmp36_) {
+                                               gboolean _tmp37_ = FALSE;
+                                               _tmp37_ = vala_parser_accept (self, VALA_TOKEN_TYPE_COMMA);
+                                               if (!_tmp37_) {
                                                        break;
                                                }
                                        }
-                                       _tmp31_ = FALSE;
+                                       _tmp36_ = FALSE;
                                        size = NULL;
-                                       _tmp34_ = vala_parser_current (self);
-                                       if (_tmp34_ != VALA_TOKEN_TYPE_CLOSE_BRACKET) {
-                                               ValaTokenType _tmp35_ = 0;
-                                               _tmp35_ = vala_parser_current (self);
-                                               _tmp33_ = _tmp35_ != VALA_TOKEN_TYPE_COMMA;
+                                       _tmp39_ = vala_parser_current (self);
+                                       if (_tmp39_ != VALA_TOKEN_TYPE_CLOSE_BRACKET) {
+                                               ValaTokenType _tmp40_ = 0;
+                                               _tmp40_ = vala_parser_current (self);
+                                               _tmp38_ = _tmp40_ != VALA_TOKEN_TYPE_COMMA;
                                        } else {
-                                               _tmp33_ = FALSE;
+                                               _tmp38_ = FALSE;
                                        }
-                                       if (_tmp33_) {
-                                               ValaExpression* _tmp36_ = NULL;
-                                               ValaExpression* _tmp37_ = NULL;
-                                               ValaExpression* _tmp38_ = NULL;
-                                               _tmp37_ = vala_parser_parse_expression (self, &_inner_error_);
-                                               _tmp36_ = _tmp37_;
-                                               if (_inner_error_ != NULL) {
+                                       if (_tmp38_) {
+                                               ValaExpression* _tmp41_ = NULL;
+                                               ValaExpression* _tmp42_ = NULL;
+                                               ValaExpression* _tmp43_ = NULL;
+                                               _tmp42_ = vala_parser_parse_expression (self, &_inner_error_);
+                                               _tmp41_ = _tmp42_;
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                _vala_code_node_unref0 (size);
@@ -6833,21 +7067,21 @@ static ValaExpression* vala_parser_parse_array_creation_expression (ValaParser*
                                                                return NULL;
                                                        }
                                                }
-                                               _tmp38_ = _tmp36_;
-                                               _tmp36_ = NULL;
+                                               _tmp43_ = _tmp41_;
+                                               _tmp41_ = NULL;
                                                _vala_code_node_unref0 (size);
-                                               size = _tmp38_;
+                                               size = _tmp43_;
                                                size_specified = TRUE;
-                                               _vala_code_node_unref0 (_tmp36_);
+                                               _vala_code_node_unref0 (_tmp41_);
                                        }
-                                       _tmp39_ = size_specifier_list;
-                                       _tmp40_ = size;
-                                       vala_collection_add ((ValaCollection*) _tmp39_, _tmp40_);
+                                       _tmp44_ = size_specifier_list;
+                                       _tmp45_ = size;
+                                       vala_collection_add ((ValaCollection*) _tmp44_, _tmp45_);
                                        _vala_code_node_unref0 (size);
                                }
                        }
                        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (size_specifier_list);
@@ -6866,14 +7100,14 @@ static ValaExpression* vala_parser_parse_array_creation_expression (ValaParser*
                }
        }
        initializer = NULL;
-       _tmp41_ = vala_parser_current (self);
-       if (_tmp41_ == VALA_TOKEN_TYPE_OPEN_BRACE) {
-               ValaInitializerList* _tmp42_ = NULL;
-               ValaInitializerList* _tmp43_ = NULL;
-               ValaInitializerList* _tmp44_ = NULL;
-               _tmp43_ = vala_parser_parse_initializer (self, &_inner_error_);
-               _tmp42_ = _tmp43_;
-               if (_inner_error_ != NULL) {
+       _tmp46_ = vala_parser_current (self);
+       if (_tmp46_ == VALA_TOKEN_TYPE_OPEN_BRACE) {
+               ValaInitializerList* _tmp47_ = NULL;
+               ValaInitializerList* _tmp48_ = NULL;
+               ValaInitializerList* _tmp49_ = NULL;
+               _tmp48_ = vala_parser_parse_initializer (self, &_inner_error_);
+               _tmp47_ = _tmp48_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (initializer);
@@ -6891,67 +7125,67 @@ static ValaExpression* vala_parser_parse_array_creation_expression (ValaParser*
                                return NULL;
                        }
                }
-               _tmp44_ = _tmp42_;
-               _tmp42_ = NULL;
+               _tmp49_ = _tmp47_;
+               _tmp47_ = NULL;
                _vala_code_node_unref0 (initializer);
-               initializer = _tmp44_;
-               _vala_code_node_unref0 (_tmp42_);
-       }
-       _tmp45_ = element_type;
-       _tmp46_ = size_specifier_list;
-       _tmp47_ = vala_collection_get_size ((ValaCollection*) _tmp46_);
-       _tmp48_ = _tmp47_;
-       _tmp49_ = initializer;
-       _tmp50_ = begin;
-       _tmp51_ = vala_parser_get_src (self, &_tmp50_);
-       _tmp52_ = _tmp51_;
-       _tmp53_ = vala_array_creation_expression_new (_tmp45_, _tmp48_, _tmp49_, _tmp52_);
-       _tmp54_ = _tmp53_;
-       _vala_source_reference_unref0 (_tmp52_);
-       expr = _tmp54_;
-       _tmp55_ = size_specified;
-       if (_tmp55_) {
+               initializer = _tmp49_;
+               _vala_code_node_unref0 (_tmp47_);
+       }
+       _tmp50_ = element_type;
+       _tmp51_ = size_specifier_list;
+       _tmp52_ = vala_collection_get_size ((ValaCollection*) _tmp51_);
+       _tmp53_ = _tmp52_;
+       _tmp54_ = initializer;
+       _tmp55_ = begin;
+       _tmp56_ = vala_parser_get_src (self, &_tmp55_);
+       _tmp57_ = _tmp56_;
+       _tmp58_ = vala_array_creation_expression_new (_tmp50_, _tmp53_, _tmp54_, _tmp57_);
+       _tmp59_ = _tmp58_;
+       _vala_source_reference_unref0 (_tmp57_);
+       expr = _tmp59_;
+       _tmp60_ = size_specified;
+       if (_tmp60_) {
                {
                        ValaList* _size_list = NULL;
-                       ValaList* _tmp56_ = NULL;
-                       ValaList* _tmp57_ = NULL;
+                       ValaList* _tmp61_ = NULL;
+                       ValaList* _tmp62_ = NULL;
                        gint _size_size = 0;
-                       ValaList* _tmp58_ = NULL;
-                       gint _tmp59_ = 0;
-                       gint _tmp60_ = 0;
+                       ValaList* _tmp63_ = NULL;
+                       gint _tmp64_ = 0;
+                       gint _tmp65_ = 0;
                        gint _size_index = 0;
-                       _tmp56_ = size_specifier_list;
-                       _tmp57_ = _vala_iterable_ref0 (_tmp56_);
-                       _size_list = _tmp57_;
-                       _tmp58_ = _size_list;
-                       _tmp59_ = vala_collection_get_size ((ValaCollection*) _tmp58_);
-                       _tmp60_ = _tmp59_;
-                       _size_size = _tmp60_;
+                       _tmp61_ = size_specifier_list;
+                       _tmp62_ = _vala_iterable_ref0 (_tmp61_);
+                       _size_list = _tmp62_;
+                       _tmp63_ = _size_list;
+                       _tmp64_ = vala_collection_get_size ((ValaCollection*) _tmp63_);
+                       _tmp65_ = _tmp64_;
+                       _size_size = _tmp65_;
                        _size_index = -1;
                        while (TRUE) {
-                               gint _tmp61_ = 0;
-                               gint _tmp62_ = 0;
-                               gint _tmp63_ = 0;
+                               gint _tmp66_ = 0;
+                               gint _tmp67_ = 0;
+                               gint _tmp68_ = 0;
                                ValaExpression* size = NULL;
-                               ValaList* _tmp64_ = NULL;
-                               gint _tmp65_ = 0;
-                               gpointer _tmp66_ = NULL;
-                               ValaArrayCreationExpression* _tmp67_ = NULL;
-                               ValaExpression* _tmp68_ = NULL;
-                               _tmp61_ = _size_index;
-                               _size_index = _tmp61_ + 1;
-                               _tmp62_ = _size_index;
-                               _tmp63_ = _size_size;
-                               if (!(_tmp62_ < _tmp63_)) {
+                               ValaList* _tmp69_ = NULL;
+                               gint _tmp70_ = 0;
+                               gpointer _tmp71_ = NULL;
+                               ValaArrayCreationExpression* _tmp72_ = NULL;
+                               ValaExpression* _tmp73_ = NULL;
+                               _tmp66_ = _size_index;
+                               _size_index = _tmp66_ + 1;
+                               _tmp67_ = _size_index;
+                               _tmp68_ = _size_size;
+                               if (!(_tmp67_ < _tmp68_)) {
                                        break;
                                }
-                               _tmp64_ = _size_list;
-                               _tmp65_ = _size_index;
-                               _tmp66_ = vala_list_get (_tmp64_, _tmp65_);
-                               size = (ValaExpression*) _tmp66_;
-                               _tmp67_ = expr;
-                               _tmp68_ = size;
-                               vala_array_creation_expression_append_size (_tmp67_, _tmp68_);
+                               _tmp69_ = _size_list;
+                               _tmp70_ = _size_index;
+                               _tmp71_ = vala_list_get (_tmp69_, _tmp70_);
+                               size = (ValaExpression*) _tmp71_;
+                               _tmp72_ = expr;
+                               _tmp73_ = size;
+                               vala_array_creation_expression_append_size (_tmp72_, _tmp73_);
                                _vala_code_node_unref0 (size);
                        }
                        _vala_iterable_unref0 (_size_list);
@@ -6996,7 +7230,7 @@ static ValaList* vala_parser_parse_object_initializer (ValaParser* self, GError*
                                _tmp3_ = FALSE;
                                _tmp6_ = vala_parser_parse_member_initializer (self, &_inner_error_);
                                _tmp5_ = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (list);
@@ -7014,7 +7248,7 @@ static ValaList* vala_parser_parse_object_initializer (ValaParser* self, GError*
                        }
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACE, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (list);
@@ -7053,7 +7287,7 @@ static ValaMemberInitializer* vala_parser_parse_member_initializer (ValaParser*
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_identifier (self, &_inner_error_);
        id = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7064,7 +7298,7 @@ static ValaMemberInitializer* vala_parser_parse_member_initializer (ValaParser*
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_ASSIGN, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -7078,7 +7312,7 @@ static ValaMemberInitializer* vala_parser_parse_member_initializer (ValaParser*
        }
        _tmp2_ = vala_parser_parse_expression (self, &_inner_error_);
        expr = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -7121,7 +7355,7 @@ static ValaExpression* vala_parser_parse_yield_expression (ValaParser* self, GEr
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_parser_expect (self, VALA_TOKEN_TYPE_YIELD, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7133,7 +7367,7 @@ static ValaExpression* vala_parser_parse_yield_expression (ValaParser* self, GEr
        }
        _tmp0_ = vala_parser_parse_expression (self, &_inner_error_);
        expr = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7221,7 +7455,7 @@ static ValaExpression* vala_parser_parse_sizeof_expression (ValaParser* self, GE
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_SIZEOF, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7232,7 +7466,7 @@ static ValaExpression* vala_parser_parse_sizeof_expression (ValaParser* self, GE
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7242,9 +7476,9 @@ static ValaExpression* vala_parser_parse_sizeof_expression (ValaParser* self, GE
                        return NULL;
                }
        }
-       _tmp1_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+       _tmp1_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
        type = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7255,7 +7489,7 @@ static ValaExpression* vala_parser_parse_sizeof_expression (ValaParser* self, GE
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -7297,7 +7531,7 @@ static ValaExpression* vala_parser_parse_typeof_expression (ValaParser* self, GE
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_TYPEOF, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7308,7 +7542,7 @@ static ValaExpression* vala_parser_parse_typeof_expression (ValaParser* self, GE
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7318,9 +7552,9 @@ static ValaExpression* vala_parser_parse_typeof_expression (ValaParser* self, GE
                        return NULL;
                }
        }
-       _tmp1_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+       _tmp1_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
        type = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7331,7 +7565,7 @@ static ValaExpression* vala_parser_parse_typeof_expression (ValaParser* self, GE
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -7411,7 +7645,7 @@ static ValaExpression* vala_parser_parse_unary_expression (ValaParser* self, GEr
        ValaUnaryOperator _tmp3_ = 0;
        ValaTokenType _tmp12_ = 0;
        ValaExpression* expr = NULL;
-       ValaExpression* _tmp68_ = NULL;
+       ValaExpression* _tmp71_ = NULL;
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_parser_get_location (self, &_tmp0_);
@@ -7433,7 +7667,7 @@ static ValaExpression* vala_parser_parse_unary_expression (ValaParser* self, GEr
                vala_parser_next (self);
                _tmp4_ = vala_parser_parse_unary_expression (self, &_inner_error_);
                op = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -7484,7 +7718,7 @@ static ValaExpression* vala_parser_parse_unary_expression (ValaParser* self, GEr
                        vala_parser_next (self);
                        _tmp18_ = vala_parser_parse_unary_expression (self, &_inner_error_);
                        op = _tmp18_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -7508,10 +7742,14 @@ static ValaExpression* vala_parser_parse_unary_expression (ValaParser* self, GEr
                case VALA_TOKEN_TYPE_OPEN_PARENS:
                {
                        ValaTokenType _tmp25_ = 0;
-                       ValaSourceLocation _tmp53_ = {0};
+                       ValaSourceLocation _tmp56_ = {0};
                        vala_parser_next (self);
                        _tmp25_ = vala_parser_current (self);
                        switch (_tmp25_) {
+                               case VALA_TOKEN_TYPE_UNOWNED:
+                               {
+                                       break;
+                               }
                                case VALA_TOKEN_TYPE_OWNED:
                                {
                                        gboolean _tmp26_ = FALSE;
@@ -7528,7 +7766,7 @@ static ValaExpression* vala_parser_parse_unary_expression (ValaParser* self, GEr
                                                ValaExpression* _tmp33_ = NULL;
                                                _tmp27_ = vala_parser_parse_unary_expression (self, &_inner_error_);
                                                op = _tmp27_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                return NULL;
@@ -7553,112 +7791,125 @@ static ValaExpression* vala_parser_parse_unary_expression (ValaParser* self, GEr
                                }
                                case VALA_TOKEN_TYPE_VOID:
                                case VALA_TOKEN_TYPE_DYNAMIC:
+                               case VALA_TOKEN_TYPE_OPEN_PARENS:
                                case VALA_TOKEN_TYPE_IDENTIFIER:
                                {
-                                       ValaDataType* type = NULL;
-                                       ValaDataType* _tmp34_ = NULL;
-                                       gboolean _tmp35_ = FALSE;
-                                       _tmp34_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
-                                       type = _tmp34_;
-                                       if (_inner_error_ != NULL) {
-                                               if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       g_propagate_error (error, _inner_error_);
-                                                       return NULL;
-                                               } else {
-                                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
-                                                       g_clear_error (&_inner_error_);
-                                                       return NULL;
-                                               }
+                                       gboolean _tmp34_ = FALSE;
+                                       ValaTokenType _tmp35_ = 0;
+                                       _tmp35_ = vala_parser_current (self);
+                                       if (_tmp35_ != VALA_TOKEN_TYPE_OPEN_PARENS) {
+                                               _tmp34_ = TRUE;
+                                       } else {
+                                               gboolean _tmp36_ = FALSE;
+                                               _tmp36_ = vala_parser_is_inner_array_type (self);
+                                               _tmp34_ = _tmp36_;
                                        }
-                                       _tmp35_ = vala_parser_accept (self, VALA_TOKEN_TYPE_CLOSE_PARENS);
-                                       if (_tmp35_) {
-                                               ValaTokenType _tmp36_ = 0;
-                                               _tmp36_ = vala_parser_current (self);
-                                               switch (_tmp36_) {
-                                                       case VALA_TOKEN_TYPE_OP_NEG:
-                                                       case VALA_TOKEN_TYPE_TILDE:
-                                                       case VALA_TOKEN_TYPE_OPEN_PARENS:
-                                                       case VALA_TOKEN_TYPE_TRUE:
-                                                       case VALA_TOKEN_TYPE_FALSE:
-                                                       case VALA_TOKEN_TYPE_INTEGER_LITERAL:
-                                                       case VALA_TOKEN_TYPE_REAL_LITERAL:
-                                                       case VALA_TOKEN_TYPE_CHARACTER_LITERAL:
-                                                       case VALA_TOKEN_TYPE_STRING_LITERAL:
-                                                       case VALA_TOKEN_TYPE_TEMPLATE_STRING_LITERAL:
-                                                       case VALA_TOKEN_TYPE_VERBATIM_STRING_LITERAL:
-                                                       case VALA_TOKEN_TYPE_REGEX_LITERAL:
-                                                       case VALA_TOKEN_TYPE_NULL:
-                                                       case VALA_TOKEN_TYPE_THIS:
-                                                       case VALA_TOKEN_TYPE_BASE:
-                                                       case VALA_TOKEN_TYPE_NEW:
-                                                       case VALA_TOKEN_TYPE_YIELD:
-                                                       case VALA_TOKEN_TYPE_SIZEOF:
-                                                       case VALA_TOKEN_TYPE_TYPEOF:
-                                                       case VALA_TOKEN_TYPE_IDENTIFIER:
-                                                       case VALA_TOKEN_TYPE_PARAMS:
-                                                       {
-                                                               ValaExpression* inner = NULL;
-                                                               ValaExpression* _tmp37_ = NULL;
-                                                               ValaExpression* _tmp38_ = NULL;
-                                                               ValaDataType* _tmp39_ = NULL;
-                                                               ValaSourceLocation _tmp40_ = {0};
-                                                               ValaSourceReference* _tmp41_ = NULL;
-                                                               ValaSourceReference* _tmp42_ = NULL;
-                                                               ValaCastExpression* _tmp43_ = NULL;
-                                                               ValaExpression* _tmp44_ = NULL;
-                                                               _tmp37_ = vala_parser_parse_unary_expression (self, &_inner_error_);
-                                                               inner = _tmp37_;
-                                                               if (_inner_error_ != NULL) {
-                                                                       if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                                               g_propagate_error (error, _inner_error_);
-                                                                               _vala_code_node_unref0 (type);
-                                                                               return NULL;
-                                                                       } else {
-                                                                               _vala_code_node_unref0 (type);
-                                                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
-                                                                               g_clear_error (&_inner_error_);
-                                                                               return NULL;
+                                       if (_tmp34_) {
+                                               ValaDataType* type = NULL;
+                                               ValaDataType* _tmp37_ = NULL;
+                                               gboolean _tmp38_ = FALSE;
+                                               _tmp37_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
+                                               type = _tmp37_;
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
+                                                       if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                                                               g_propagate_error (error, _inner_error_);
+                                                               return NULL;
+                                                       } else {
+                                                               g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                                                               g_clear_error (&_inner_error_);
+                                                               return NULL;
+                                                       }
+                                               }
+                                               _tmp38_ = vala_parser_accept (self, VALA_TOKEN_TYPE_CLOSE_PARENS);
+                                               if (_tmp38_) {
+                                                       ValaTokenType _tmp39_ = 0;
+                                                       _tmp39_ = vala_parser_current (self);
+                                                       switch (_tmp39_) {
+                                                               case VALA_TOKEN_TYPE_OP_NEG:
+                                                               case VALA_TOKEN_TYPE_TILDE:
+                                                               case VALA_TOKEN_TYPE_OPEN_PARENS:
+                                                               case VALA_TOKEN_TYPE_TRUE:
+                                                               case VALA_TOKEN_TYPE_FALSE:
+                                                               case VALA_TOKEN_TYPE_INTEGER_LITERAL:
+                                                               case VALA_TOKEN_TYPE_REAL_LITERAL:
+                                                               case VALA_TOKEN_TYPE_CHARACTER_LITERAL:
+                                                               case VALA_TOKEN_TYPE_STRING_LITERAL:
+                                                               case VALA_TOKEN_TYPE_TEMPLATE_STRING_LITERAL:
+                                                               case VALA_TOKEN_TYPE_VERBATIM_STRING_LITERAL:
+                                                               case VALA_TOKEN_TYPE_REGEX_LITERAL:
+                                                               case VALA_TOKEN_TYPE_NULL:
+                                                               case VALA_TOKEN_TYPE_THIS:
+                                                               case VALA_TOKEN_TYPE_BASE:
+                                                               case VALA_TOKEN_TYPE_NEW:
+                                                               case VALA_TOKEN_TYPE_YIELD:
+                                                               case VALA_TOKEN_TYPE_SIZEOF:
+                                                               case VALA_TOKEN_TYPE_TYPEOF:
+                                                               case VALA_TOKEN_TYPE_IDENTIFIER:
+                                                               case VALA_TOKEN_TYPE_PARAMS:
+                                                               {
+                                                                       ValaExpression* inner = NULL;
+                                                                       ValaExpression* _tmp40_ = NULL;
+                                                                       ValaExpression* _tmp41_ = NULL;
+                                                                       ValaDataType* _tmp42_ = NULL;
+                                                                       ValaSourceLocation _tmp43_ = {0};
+                                                                       ValaSourceReference* _tmp44_ = NULL;
+                                                                       ValaSourceReference* _tmp45_ = NULL;
+                                                                       ValaCastExpression* _tmp46_ = NULL;
+                                                                       ValaExpression* _tmp47_ = NULL;
+                                                                       _tmp40_ = vala_parser_parse_unary_expression (self, &_inner_error_);
+                                                                       inner = _tmp40_;
+                                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
+                                                                               if (_inner_error_->domain == VALA_PARSE_ERROR) {
+                                                                                       g_propagate_error (error, _inner_error_);
+                                                                                       _vala_code_node_unref0 (type);
+                                                                                       return NULL;
+                                                                               } else {
+                                                                                       _vala_code_node_unref0 (type);
+                                                                                       g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+                                                                                       g_clear_error (&_inner_error_);
+                                                                                       return NULL;
+                                                                               }
                                                                        }
+                                                                       _tmp41_ = inner;
+                                                                       _tmp42_ = type;
+                                                                       _tmp43_ = begin;
+                                                                       _tmp44_ = vala_parser_get_src (self, &_tmp43_);
+                                                                       _tmp45_ = _tmp44_;
+                                                                       _tmp46_ = vala_cast_expression_new (_tmp41_, _tmp42_, _tmp45_, FALSE);
+                                                                       _tmp47_ = (ValaExpression*) _tmp46_;
+                                                                       _vala_source_reference_unref0 (_tmp45_);
+                                                                       result = _tmp47_;
+                                                                       _vala_code_node_unref0 (inner);
+                                                                       _vala_code_node_unref0 (type);
+                                                                       return result;
+                                                               }
+                                                               default:
+                                                               {
+                                                                       break;
                                                                }
-                                                               _tmp38_ = inner;
-                                                               _tmp39_ = type;
-                                                               _tmp40_ = begin;
-                                                               _tmp41_ = vala_parser_get_src (self, &_tmp40_);
-                                                               _tmp42_ = _tmp41_;
-                                                               _tmp43_ = vala_cast_expression_new (_tmp38_, _tmp39_, _tmp42_, FALSE);
-                                                               _tmp44_ = (ValaExpression*) _tmp43_;
-                                                               _vala_source_reference_unref0 (_tmp42_);
-                                                               result = _tmp44_;
-                                                               _vala_code_node_unref0 (inner);
-                                                               _vala_code_node_unref0 (type);
-                                                               return result;
-                                                       }
-                                                       default:
-                                                       {
-                                                               break;
                                                        }
                                                }
+                                               _vala_code_node_unref0 (type);
                                        }
-                                       _vala_code_node_unref0 (type);
                                        break;
                                }
                                case VALA_TOKEN_TYPE_OP_NEG:
                                {
-                                       gboolean _tmp45_ = FALSE;
+                                       gboolean _tmp48_ = FALSE;
                                        vala_parser_next (self);
-                                       _tmp45_ = vala_parser_accept (self, VALA_TOKEN_TYPE_CLOSE_PARENS);
-                                       if (_tmp45_) {
+                                       _tmp48_ = vala_parser_accept (self, VALA_TOKEN_TYPE_CLOSE_PARENS);
+                                       if (_tmp48_) {
                                                ValaExpression* inner = NULL;
-                                               ValaExpression* _tmp46_ = NULL;
-                                               ValaExpression* _tmp47_ = NULL;
-                                               ValaSourceLocation _tmp48_ = {0};
-                                               ValaSourceReference* _tmp49_ = NULL;
-                                               ValaSourceReference* _tmp50_ = NULL;
-                                               ValaCastExpression* _tmp51_ = NULL;
-                                               ValaExpression* _tmp52_ = NULL;
-                                               _tmp46_ = vala_parser_parse_unary_expression (self, &_inner_error_);
-                                               inner = _tmp46_;
-                                               if (_inner_error_ != NULL) {
+                                               ValaExpression* _tmp49_ = NULL;
+                                               ValaExpression* _tmp50_ = NULL;
+                                               ValaSourceLocation _tmp51_ = {0};
+                                               ValaSourceReference* _tmp52_ = NULL;
+                                               ValaSourceReference* _tmp53_ = NULL;
+                                               ValaCastExpression* _tmp54_ = NULL;
+                                               ValaExpression* _tmp55_ = NULL;
+                                               _tmp49_ = vala_parser_parse_unary_expression (self, &_inner_error_);
+                                               inner = _tmp49_;
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                return NULL;
@@ -7668,14 +7919,14 @@ static ValaExpression* vala_parser_parse_unary_expression (ValaParser* self, GEr
                                                                return NULL;
                                                        }
                                                }
-                                               _tmp47_ = inner;
-                                               _tmp48_ = begin;
-                                               _tmp49_ = vala_parser_get_src (self, &_tmp48_);
-                                               _tmp50_ = _tmp49_;
-                                               _tmp51_ = vala_cast_expression_new_non_null (_tmp47_, _tmp50_);
-                                               _tmp52_ = (ValaExpression*) _tmp51_;
-                                               _vala_source_reference_unref0 (_tmp50_);
-                                               result = _tmp52_;
+                                               _tmp50_ = inner;
+                                               _tmp51_ = begin;
+                                               _tmp52_ = vala_parser_get_src (self, &_tmp51_);
+                                               _tmp53_ = _tmp52_;
+                                               _tmp54_ = vala_cast_expression_new_non_null (_tmp50_, _tmp53_);
+                                               _tmp55_ = (ValaExpression*) _tmp54_;
+                                               _vala_source_reference_unref0 (_tmp53_);
+                                               result = _tmp55_;
                                                _vala_code_node_unref0 (inner);
                                                return result;
                                        }
@@ -7686,24 +7937,24 @@ static ValaExpression* vala_parser_parse_unary_expression (ValaParser* self, GEr
                                        break;
                                }
                        }
-                       _tmp53_ = begin;
-                       vala_parser_rollback (self, &_tmp53_);
+                       _tmp56_ = begin;
+                       vala_parser_rollback (self, &_tmp56_);
                        break;
                }
                case VALA_TOKEN_TYPE_STAR:
                {
                        ValaExpression* op = NULL;
-                       ValaExpression* _tmp54_ = NULL;
-                       ValaExpression* _tmp55_ = NULL;
-                       ValaSourceLocation _tmp56_ = {0};
-                       ValaSourceReference* _tmp57_ = NULL;
-                       ValaSourceReference* _tmp58_ = NULL;
-                       ValaPointerIndirection* _tmp59_ = NULL;
-                       ValaExpression* _tmp60_ = NULL;
+                       ValaExpression* _tmp57_ = NULL;
+                       ValaExpression* _tmp58_ = NULL;
+                       ValaSourceLocation _tmp59_ = {0};
+                       ValaSourceReference* _tmp60_ = NULL;
+                       ValaSourceReference* _tmp61_ = NULL;
+                       ValaPointerIndirection* _tmp62_ = NULL;
+                       ValaExpression* _tmp63_ = NULL;
                        vala_parser_next (self);
-                       _tmp54_ = vala_parser_parse_unary_expression (self, &_inner_error_);
-                       op = _tmp54_;
-                       if (_inner_error_ != NULL) {
+                       _tmp57_ = vala_parser_parse_unary_expression (self, &_inner_error_);
+                       op = _tmp57_;
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -7713,31 +7964,31 @@ static ValaExpression* vala_parser_parse_unary_expression (ValaParser* self, GEr
                                        return NULL;
                                }
                        }
-                       _tmp55_ = op;
-                       _tmp56_ = begin;
-                       _tmp57_ = vala_parser_get_src (self, &_tmp56_);
-                       _tmp58_ = _tmp57_;
-                       _tmp59_ = vala_pointer_indirection_new (_tmp55_, _tmp58_);
-                       _tmp60_ = (ValaExpression*) _tmp59_;
-                       _vala_source_reference_unref0 (_tmp58_);
-                       result = _tmp60_;
+                       _tmp58_ = op;
+                       _tmp59_ = begin;
+                       _tmp60_ = vala_parser_get_src (self, &_tmp59_);
+                       _tmp61_ = _tmp60_;
+                       _tmp62_ = vala_pointer_indirection_new (_tmp58_, _tmp61_);
+                       _tmp63_ = (ValaExpression*) _tmp62_;
+                       _vala_source_reference_unref0 (_tmp61_);
+                       result = _tmp63_;
                        _vala_code_node_unref0 (op);
                        return result;
                }
                case VALA_TOKEN_TYPE_BITWISE_AND:
                {
                        ValaExpression* op = NULL;
-                       ValaExpression* _tmp61_ = NULL;
-                       ValaExpression* _tmp62_ = NULL;
-                       ValaSourceLocation _tmp63_ = {0};
-                       ValaSourceReference* _tmp64_ = NULL;
-                       ValaSourceReference* _tmp65_ = NULL;
-                       ValaAddressofExpression* _tmp66_ = NULL;
-                       ValaExpression* _tmp67_ = NULL;
+                       ValaExpression* _tmp64_ = NULL;
+                       ValaExpression* _tmp65_ = NULL;
+                       ValaSourceLocation _tmp66_ = {0};
+                       ValaSourceReference* _tmp67_ = NULL;
+                       ValaSourceReference* _tmp68_ = NULL;
+                       ValaAddressofExpression* _tmp69_ = NULL;
+                       ValaExpression* _tmp70_ = NULL;
                        vala_parser_next (self);
-                       _tmp61_ = vala_parser_parse_unary_expression (self, &_inner_error_);
-                       op = _tmp61_;
-                       if (_inner_error_ != NULL) {
+                       _tmp64_ = vala_parser_parse_unary_expression (self, &_inner_error_);
+                       op = _tmp64_;
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -7747,14 +7998,14 @@ static ValaExpression* vala_parser_parse_unary_expression (ValaParser* self, GEr
                                        return NULL;
                                }
                        }
-                       _tmp62_ = op;
-                       _tmp63_ = begin;
-                       _tmp64_ = vala_parser_get_src (self, &_tmp63_);
-                       _tmp65_ = _tmp64_;
-                       _tmp66_ = vala_addressof_expression_new (_tmp62_, _tmp65_);
-                       _tmp67_ = (ValaExpression*) _tmp66_;
-                       _vala_source_reference_unref0 (_tmp65_);
-                       result = _tmp67_;
+                       _tmp65_ = op;
+                       _tmp66_ = begin;
+                       _tmp67_ = vala_parser_get_src (self, &_tmp66_);
+                       _tmp68_ = _tmp67_;
+                       _tmp69_ = vala_addressof_expression_new (_tmp65_, _tmp68_);
+                       _tmp70_ = (ValaExpression*) _tmp69_;
+                       _vala_source_reference_unref0 (_tmp68_);
+                       result = _tmp70_;
                        _vala_code_node_unref0 (op);
                        return result;
                }
@@ -7763,9 +8014,9 @@ static ValaExpression* vala_parser_parse_unary_expression (ValaParser* self, GEr
                        break;
                }
        }
-       _tmp68_ = vala_parser_parse_primary_expression (self, &_inner_error_);
-       expr = _tmp68_;
-       if (_inner_error_ != NULL) {
+       _tmp71_ = vala_parser_parse_primary_expression (self, &_inner_error_);
+       expr = _tmp71_;
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7863,7 +8114,7 @@ static ValaExpression* vala_parser_parse_multiplicative_expression (ValaParser*
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_unary_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7905,7 +8156,7 @@ static ValaExpression* vala_parser_parse_multiplicative_expression (ValaParser*
                                vala_parser_next (self);
                                _tmp6_ = vala_parser_parse_unary_expression (self, &_inner_error_);
                                right = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (left);
@@ -7955,7 +8206,7 @@ static ValaExpression* vala_parser_parse_additive_expression (ValaParser* self,
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_multiplicative_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -7996,7 +8247,7 @@ static ValaExpression* vala_parser_parse_additive_expression (ValaParser* self,
                                vala_parser_next (self);
                                _tmp6_ = vala_parser_parse_multiplicative_expression (self, &_inner_error_);
                                right = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (left);
@@ -8046,7 +8297,7 @@ static ValaExpression* vala_parser_parse_shift_expression (ValaParser* self, GEr
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_additive_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8079,7 +8330,7 @@ static ValaExpression* vala_parser_parse_shift_expression (ValaParser* self, GEr
                                vala_parser_next (self);
                                _tmp4_ = vala_parser_parse_additive_expression (self, &_inner_error_);
                                right = _tmp4_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (left);
@@ -8154,7 +8405,7 @@ static ValaExpression* vala_parser_parse_shift_expression (ValaParser* self, GEr
                                        vala_parser_next (self);
                                        _tmp24_ = vala_parser_parse_additive_expression (self, &_inner_error_);
                                        right = _tmp24_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (left);
@@ -8208,7 +8459,7 @@ static ValaExpression* vala_parser_parse_relational_expression (ValaParser* self
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_shift_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8252,7 +8503,7 @@ static ValaExpression* vala_parser_parse_relational_expression (ValaParser* self
                                vala_parser_next (self);
                                _tmp6_ = vala_parser_parse_shift_expression (self, &_inner_error_);
                                right = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (left);
@@ -8332,7 +8583,7 @@ static ValaExpression* vala_parser_parse_relational_expression (ValaParser* self
                                        gboolean _tmp35_ = FALSE;
                                        _tmp27_ = vala_parser_parse_shift_expression (self, &_inner_error_);
                                        right = _tmp27_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (left);
@@ -8406,9 +8657,9 @@ static ValaExpression* vala_parser_parse_relational_expression (ValaParser* self
                                                ValaSourceReference* _tmp51_ = NULL;
                                                ValaTypeCheck* _tmp52_ = NULL;
                                                vala_parser_next (self);
-                                               _tmp46_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+                                               _tmp46_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
                                                type = _tmp46_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                _vala_code_node_unref0 (left);
@@ -8443,9 +8694,9 @@ static ValaExpression* vala_parser_parse_relational_expression (ValaParser* self
                                                ValaSourceReference* _tmp58_ = NULL;
                                                ValaCastExpression* _tmp59_ = NULL;
                                                vala_parser_next (self);
-                                               _tmp53_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+                                               _tmp53_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
                                                type = _tmp53_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                _vala_code_node_unref0 (left);
@@ -8497,7 +8748,7 @@ static ValaExpression* vala_parser_parse_equality_expression (ValaParser* self,
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_relational_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8538,7 +8789,7 @@ static ValaExpression* vala_parser_parse_equality_expression (ValaParser* self,
                                vala_parser_next (self);
                                _tmp6_ = vala_parser_parse_relational_expression (self, &_inner_error_);
                                right = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (left);
@@ -8587,7 +8838,7 @@ static ValaExpression* vala_parser_parse_and_expression (ValaParser* self, GErro
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_equality_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8613,7 +8864,7 @@ static ValaExpression* vala_parser_parse_and_expression (ValaParser* self, GErro
                }
                _tmp3_ = vala_parser_parse_equality_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -8653,7 +8904,7 @@ static ValaExpression* vala_parser_parse_exclusive_or_expression (ValaParser* se
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_and_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8679,7 +8930,7 @@ static ValaExpression* vala_parser_parse_exclusive_or_expression (ValaParser* se
                }
                _tmp3_ = vala_parser_parse_and_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -8719,7 +8970,7 @@ static ValaExpression* vala_parser_parse_inclusive_or_expression (ValaParser* se
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_exclusive_or_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8745,7 +8996,7 @@ static ValaExpression* vala_parser_parse_inclusive_or_expression (ValaParser* se
                }
                _tmp3_ = vala_parser_parse_exclusive_or_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -8785,7 +9036,7 @@ static ValaExpression* vala_parser_parse_in_expression (ValaParser* self, GError
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_inclusive_or_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8811,7 +9062,7 @@ static ValaExpression* vala_parser_parse_in_expression (ValaParser* self, GError
                }
                _tmp3_ = vala_parser_parse_inclusive_or_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -8851,7 +9102,7 @@ static ValaExpression* vala_parser_parse_conditional_and_expression (ValaParser*
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_in_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8877,7 +9128,7 @@ static ValaExpression* vala_parser_parse_conditional_and_expression (ValaParser*
                }
                _tmp3_ = vala_parser_parse_in_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -8917,7 +9168,7 @@ static ValaExpression* vala_parser_parse_conditional_or_expression (ValaParser*
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_conditional_and_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -8943,7 +9194,7 @@ static ValaExpression* vala_parser_parse_conditional_or_expression (ValaParser*
                }
                _tmp3_ = vala_parser_parse_conditional_and_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -8984,7 +9235,7 @@ static ValaExpression* vala_parser_parse_coalescing_expression (ValaParser* self
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_conditional_or_expression (self, &_inner_error_);
        left = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9007,7 +9258,7 @@ static ValaExpression* vala_parser_parse_coalescing_expression (ValaParser* self
                ValaExpression* _tmp10_ = NULL;
                _tmp3_ = vala_parser_parse_coalescing_expression (self, &_inner_error_);
                right = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (left);
@@ -9052,7 +9303,7 @@ static ValaExpression* vala_parser_parse_conditional_expression (ValaParser* sel
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_coalescing_expression (self, &_inner_error_);
        condition = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9078,7 +9329,7 @@ static ValaExpression* vala_parser_parse_conditional_expression (ValaParser* sel
                ValaExpression* _tmp12_ = NULL;
                _tmp3_ = vala_parser_parse_expression (self, &_inner_error_);
                true_expr = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (condition);
@@ -9091,7 +9342,7 @@ static ValaExpression* vala_parser_parse_conditional_expression (ValaParser* sel
                        }
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_COLON, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (true_expr);
@@ -9107,7 +9358,7 @@ static ValaExpression* vala_parser_parse_conditional_expression (ValaParser* sel
                }
                _tmp4_ = vala_parser_parse_expression (self, &_inner_error_);
                false_expr = _tmp4_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (true_expr);
@@ -9176,7 +9427,7 @@ static ValaParameter* vala_parser_parse_lambda_parameter (ValaParser* self, GErr
        }
        _tmp3_ = vala_parser_parse_identifier (self, &_inner_error_);
        id = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9241,7 +9492,7 @@ static ValaExpression* vala_parser_parse_lambda_expression (ValaParser* self, GE
                                        _tmp5_ = FALSE;
                                        _tmp8_ = vala_parser_parse_lambda_parameter (self, &_inner_error_);
                                        _tmp7_ = _tmp8_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_iterable_unref0 (params);
@@ -9260,7 +9511,7 @@ static ValaExpression* vala_parser_parse_lambda_expression (ValaParser* self, GE
                        }
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (params);
@@ -9278,7 +9529,7 @@ static ValaExpression* vala_parser_parse_lambda_expression (ValaParser* self, GE
                ValaList* _tmp12_ = NULL;
                _tmp11_ = vala_parser_parse_lambda_parameter (self, &_inner_error_);
                _tmp10_ = _tmp11_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (params);
@@ -9295,7 +9546,7 @@ static ValaExpression* vala_parser_parse_lambda_expression (ValaParser* self, GE
                _vala_code_node_unref0 (_tmp10_);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_LAMBDA, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (params);
@@ -9318,7 +9569,7 @@ static ValaExpression* vala_parser_parse_lambda_expression (ValaParser* self, GE
                ValaLambdaExpression* _tmp19_ = NULL;
                _tmp14_ = vala_parser_parse_block (self, &_inner_error_);
                block = _tmp14_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (lambda);
@@ -9351,7 +9602,7 @@ static ValaExpression* vala_parser_parse_lambda_expression (ValaParser* self, GE
                ValaLambdaExpression* _tmp25_ = NULL;
                _tmp20_ = vala_parser_parse_expression (self, &_inner_error_);
                expr = _tmp20_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (lambda);
@@ -9507,7 +9758,7 @@ static ValaExpression* vala_parser_parse_expression (ValaParser* self, GError**
                ValaExpression* _tmp3_ = NULL;
                _tmp2_ = vala_parser_parse_lambda_expression (self, &_inner_error_);
                _tmp1_ = _tmp2_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -9527,7 +9778,7 @@ static ValaExpression* vala_parser_parse_expression (ValaParser* self, GError**
        begin = _tmp4_;
        _tmp5_ = vala_parser_parse_conditional_expression (self, &_inner_error_);
        expr = _tmp5_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -9559,7 +9810,7 @@ static ValaExpression* vala_parser_parse_expression (ValaParser* self, GError**
                        vala_parser_next (self);
                        _tmp9_ = vala_parser_parse_expression (self, &_inner_error_);
                        rhs = _tmp9_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -9635,7 +9886,7 @@ static ValaExpression* vala_parser_parse_expression (ValaParser* self, GError**
                                        vala_parser_next (self);
                                        _tmp31_ = vala_parser_parse_expression (self, &_inner_error_);
                                        rhs = _tmp31_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (expr);
@@ -9727,10 +9978,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaBlock* _tmp12_ = NULL;
                                        _tmp11_ = vala_parser_parse_block (self, &_inner_error_);
                                        _tmp10_ = _tmp11_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -9751,10 +10002,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp15_ = NULL;
                                        _tmp14_ = vala_parser_parse_empty_statement (self, &_inner_error_);
                                        _tmp13_ = _tmp14_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -9775,10 +10026,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp18_ = NULL;
                                        _tmp17_ = vala_parser_parse_if_statement (self, &_inner_error_);
                                        _tmp16_ = _tmp17_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -9799,10 +10050,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp21_ = NULL;
                                        _tmp20_ = vala_parser_parse_switch_statement (self, &_inner_error_);
                                        _tmp19_ = _tmp20_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -9823,10 +10074,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp24_ = NULL;
                                        _tmp23_ = vala_parser_parse_while_statement (self, &_inner_error_);
                                        _tmp22_ = _tmp23_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -9847,10 +10098,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp27_ = NULL;
                                        _tmp26_ = vala_parser_parse_do_statement (self, &_inner_error_);
                                        _tmp25_ = _tmp26_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -9871,10 +10122,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp30_ = NULL;
                                        _tmp29_ = vala_parser_parse_for_statement (self, &_inner_error_);
                                        _tmp28_ = _tmp29_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -9895,10 +10146,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp33_ = NULL;
                                        _tmp32_ = vala_parser_parse_foreach_statement (self, &_inner_error_);
                                        _tmp31_ = _tmp32_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -9919,10 +10170,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp36_ = NULL;
                                        _tmp35_ = vala_parser_parse_break_statement (self, &_inner_error_);
                                        _tmp34_ = _tmp35_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -9943,10 +10194,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp39_ = NULL;
                                        _tmp38_ = vala_parser_parse_continue_statement (self, &_inner_error_);
                                        _tmp37_ = _tmp38_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -9967,10 +10218,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp42_ = NULL;
                                        _tmp41_ = vala_parser_parse_return_statement (self, &_inner_error_);
                                        _tmp40_ = _tmp41_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -9991,10 +10242,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp45_ = NULL;
                                        _tmp44_ = vala_parser_parse_yield_statement (self, &_inner_error_);
                                        _tmp43_ = _tmp44_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10015,10 +10266,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp48_ = NULL;
                                        _tmp47_ = vala_parser_parse_throw_statement (self, &_inner_error_);
                                        _tmp46_ = _tmp47_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10039,10 +10290,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp51_ = NULL;
                                        _tmp50_ = vala_parser_parse_try_statement (self, &_inner_error_);
                                        _tmp49_ = _tmp50_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10063,10 +10314,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp54_ = NULL;
                                        _tmp53_ = vala_parser_parse_lock_statement (self, &_inner_error_);
                                        _tmp52_ = _tmp53_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10087,10 +10338,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp57_ = NULL;
                                        _tmp56_ = vala_parser_parse_delete_statement (self, &_inner_error_);
                                        _tmp55_ = _tmp56_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10110,10 +10361,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        is_decl = TRUE;
                                        _tmp58_ = block;
                                        vala_parser_parse_local_variable_declarations (self, _tmp58_, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10128,10 +10379,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        is_decl = TRUE;
                                        _tmp59_ = block;
                                        vala_parser_parse_local_constant_declarations (self, _tmp59_, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10144,7 +10395,6 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                case VALA_TOKEN_TYPE_OP_DEC:
                                case VALA_TOKEN_TYPE_BASE:
                                case VALA_TOKEN_TYPE_THIS:
-                               case VALA_TOKEN_TYPE_OPEN_PARENS:
                                case VALA_TOKEN_TYPE_STAR:
                                case VALA_TOKEN_TYPE_NEW:
                                {
@@ -10153,10 +10403,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        ValaStatement* _tmp62_ = NULL;
                                        _tmp61_ = vala_parser_parse_expression_statement (self, &_inner_error_);
                                        _tmp60_ = _tmp61_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10177,10 +10427,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                        gboolean _tmp64_ = FALSE;
                                        _tmp63_ = vala_parser_is_expression (self, &_inner_error_);
                                        is_expr = _tmp63_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                _vala_code_node_unref0 (stmt);
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                       goto __catch11_vala_parse_error;
+                                                       goto __catch13_vala_parse_error;
                                                }
                                                _vala_code_node_unref0 (stmt);
                                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10194,10 +10444,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                                ValaStatement* _tmp67_ = NULL;
                                                _tmp66_ = vala_parser_parse_expression_statement (self, &_inner_error_);
                                                _tmp65_ = _tmp66_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        _vala_code_node_unref0 (stmt);
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                               goto __catch11_vala_parse_error;
+                                                               goto __catch13_vala_parse_error;
                                                        }
                                                        _vala_code_node_unref0 (stmt);
                                                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10214,10 +10464,10 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                                                is_decl = TRUE;
                                                _tmp68_ = block;
                                                vala_parser_parse_local_variable_declarations (self, _tmp68_, &_inner_error_);
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        _vala_code_node_unref0 (stmt);
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                                               goto __catch11_vala_parse_error;
+                                                               goto __catch13_vala_parse_error;
                                                        }
                                                        _vala_code_node_unref0 (stmt);
                                                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -10238,8 +10488,8 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                        }
                        _vala_code_node_unref0 (stmt);
                }
-               goto __finally11;
-               __catch11_vala_parse_error:
+               goto __finally13;
+               __catch13_vala_parse_error:
                {
                        GError* e = NULL;
                        ValaParserRecoveryState _tmp72_ = 0;
@@ -10252,8 +10502,8 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
                        }
                        _g_error_free0 (e);
                }
-               __finally11:
-               if (_inner_error_ != NULL) {
+               __finally13:
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -10269,15 +10519,23 @@ static void vala_parser_parse_statements (ValaParser* self, ValaBlock* block, GE
 
 static gboolean vala_parser_is_expression (ValaParser* self, GError** error) {
        gboolean result = FALSE;
+       ValaTokenType _tmp0_ = 0;
        ValaSourceLocation begin = {0};
-       ValaSourceLocation _tmp0_ = {0};
-       ValaTokenType _tmp1_ = 0;
+       ValaSourceLocation _tmp2_ = {0};
+       ValaTokenType _tmp3_ = 0;
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, FALSE);
-       vala_parser_get_location (self, &_tmp0_);
-       begin = _tmp0_;
+       _tmp0_ = vala_parser_current (self);
+       if (_tmp0_ == VALA_TOKEN_TYPE_OPEN_PARENS) {
+               gboolean _tmp1_ = FALSE;
+               _tmp1_ = vala_parser_is_inner_array_type (self);
+               result = !_tmp1_;
+               return result;
+       }
+       vala_parser_get_location (self, &_tmp2_);
+       begin = _tmp2_;
        vala_parser_skip_type (self, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return FALSE;
@@ -10287,8 +10545,8 @@ static gboolean vala_parser_is_expression (ValaParser* self, GError** error) {
                        return FALSE;
                }
        }
-       _tmp1_ = vala_parser_current (self);
-       switch (_tmp1_) {
+       _tmp3_ = vala_parser_current (self);
+       switch (_tmp3_) {
                case VALA_TOKEN_TYPE_OPEN_PARENS:
                case VALA_TOKEN_TYPE_OP_INC:
                case VALA_TOKEN_TYPE_OP_DEC:
@@ -10306,17 +10564,17 @@ static gboolean vala_parser_is_expression (ValaParser* self, GError** error) {
                case VALA_TOKEN_TYPE_DOT:
                case VALA_TOKEN_TYPE_OP_PTR:
                {
-                       ValaSourceLocation _tmp2_ = {0};
-                       _tmp2_ = begin;
-                       vala_parser_rollback (self, &_tmp2_);
+                       ValaSourceLocation _tmp4_ = {0};
+                       _tmp4_ = begin;
+                       vala_parser_rollback (self, &_tmp4_);
                        result = TRUE;
                        return result;
                }
                default:
                {
-                       ValaSourceLocation _tmp3_ = {0};
-                       _tmp3_ = begin;
-                       vala_parser_rollback (self, &_tmp3_);
+                       ValaSourceLocation _tmp5_ = {0};
+                       _tmp5_ = begin;
+                       vala_parser_rollback (self, &_tmp5_);
                        result = FALSE;
                        return result;
                }
@@ -10467,7 +10725,7 @@ static ValaBlock* vala_parser_parse_embedded_statement (ValaParser* self, GError
                ValaBlock* _tmp1_ = NULL;
                _tmp1_ = vala_parser_parse_block (self, &_inner_error_);
                block = _tmp1_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -10493,7 +10751,7 @@ static ValaBlock* vala_parser_parse_embedded_statement (ValaParser* self, GError
        block = _tmp8_;
        _tmp9_ = vala_parser_parse_embedded_statement_without_block (self, &_inner_error_);
        stmt = _tmp9_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (block);
@@ -10528,7 +10786,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp3_ = NULL;
                        _tmp2_ = vala_parser_parse_empty_statement (self, &_inner_error_);
                        _tmp1_ = _tmp2_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10551,7 +10809,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp6_ = NULL;
                        _tmp5_ = vala_parser_parse_if_statement (self, &_inner_error_);
                        _tmp4_ = _tmp5_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10574,7 +10832,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp9_ = NULL;
                        _tmp8_ = vala_parser_parse_switch_statement (self, &_inner_error_);
                        _tmp7_ = _tmp8_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10597,7 +10855,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp12_ = NULL;
                        _tmp11_ = vala_parser_parse_while_statement (self, &_inner_error_);
                        _tmp10_ = _tmp11_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10620,7 +10878,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp15_ = NULL;
                        _tmp14_ = vala_parser_parse_do_statement (self, &_inner_error_);
                        _tmp13_ = _tmp14_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10643,7 +10901,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp18_ = NULL;
                        _tmp17_ = vala_parser_parse_for_statement (self, &_inner_error_);
                        _tmp16_ = _tmp17_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10666,7 +10924,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp21_ = NULL;
                        _tmp20_ = vala_parser_parse_foreach_statement (self, &_inner_error_);
                        _tmp19_ = _tmp20_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10689,7 +10947,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp24_ = NULL;
                        _tmp23_ = vala_parser_parse_break_statement (self, &_inner_error_);
                        _tmp22_ = _tmp23_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10712,7 +10970,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp27_ = NULL;
                        _tmp26_ = vala_parser_parse_continue_statement (self, &_inner_error_);
                        _tmp25_ = _tmp26_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10735,7 +10993,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp30_ = NULL;
                        _tmp29_ = vala_parser_parse_return_statement (self, &_inner_error_);
                        _tmp28_ = _tmp29_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10758,7 +11016,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp33_ = NULL;
                        _tmp32_ = vala_parser_parse_yield_statement (self, &_inner_error_);
                        _tmp31_ = _tmp32_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10781,7 +11039,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp36_ = NULL;
                        _tmp35_ = vala_parser_parse_throw_statement (self, &_inner_error_);
                        _tmp34_ = _tmp35_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10804,7 +11062,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp39_ = NULL;
                        _tmp38_ = vala_parser_parse_try_statement (self, &_inner_error_);
                        _tmp37_ = _tmp38_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10827,7 +11085,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp42_ = NULL;
                        _tmp41_ = vala_parser_parse_lock_statement (self, &_inner_error_);
                        _tmp40_ = _tmp41_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10850,7 +11108,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp45_ = NULL;
                        _tmp44_ = vala_parser_parse_delete_statement (self, &_inner_error_);
                        _tmp43_ = _tmp44_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10901,7 +11159,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        ValaStatement* _tmp52_ = NULL;
                        _tmp51_ = vala_parser_parse_expression_statement (self, &_inner_error_);
                        _tmp50_ = _tmp51_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10923,7 +11181,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                        gboolean _tmp54_ = FALSE;
                        _tmp54_ = vala_parser_is_expression (self, &_inner_error_);
                        _tmp53_ = _tmp54_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        return NULL;
@@ -10939,7 +11197,7 @@ static ValaStatement* vala_parser_parse_embedded_statement_without_block (ValaPa
                                ValaStatement* _tmp57_ = NULL;
                                _tmp56_ = vala_parser_parse_expression_statement (self, &_inner_error_);
                                _tmp55_ = _tmp56_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                return NULL;
@@ -11003,7 +11261,7 @@ static ValaBlock* vala_parser_parse_block (ValaParser* self, GError** error) {
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_BRACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -11022,7 +11280,7 @@ static ValaBlock* vala_parser_parse_block (ValaParser* self, GError** error) {
        block = _tmp5_;
        _tmp6_ = block;
        vala_parser_parse_statements (self, _tmp6_, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (block);
@@ -11081,7 +11339,7 @@ static ValaStatement* vala_parser_parse_empty_statement (ValaParser* self, GErro
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -11126,9 +11384,9 @@ static void vala_parser_parse_local_variable_declarations (ValaParser* self, Val
                ValaDataType* _tmp1_ = NULL;
                ValaDataType* _tmp2_ = NULL;
                ValaDataType* _tmp3_ = NULL;
-               _tmp2_ = vala_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
+               _tmp2_ = vala_parser_parse_type (self, TRUE, TRUE, FALSE, &_inner_error_);
                _tmp1_ = _tmp2_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (variable_type);
@@ -11230,7 +11488,7 @@ static void vala_parser_parse_local_variable_declarations (ValaParser* self, Val
                                                _tmp11_ = FALSE;
                                                _tmp14_ = vala_parser_parse_identifier (self, &_inner_error_);
                                                _tmp13_ = _tmp14_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                identifiers = (_vala_array_free (identifiers, identifiers_length1, (GDestroyNotify) g_free), NULL);
@@ -11253,7 +11511,7 @@ static void vala_parser_parse_local_variable_declarations (ValaParser* self, Val
                                        }
                                }
                                vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                identifiers = (_vala_array_free (identifiers, identifiers_length1, (GDestroyNotify) g_free), NULL);
@@ -11268,7 +11526,7 @@ static void vala_parser_parse_local_variable_declarations (ValaParser* self, Val
                                        }
                                }
                                vala_parser_expect (self, VALA_TOKEN_TYPE_ASSIGN, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                identifiers = (_vala_array_free (identifiers, identifiers_length1, (GDestroyNotify) g_free), NULL);
@@ -11284,7 +11542,7 @@ static void vala_parser_parse_local_variable_declarations (ValaParser* self, Val
                                }
                                _tmp17_ = vala_parser_parse_expression (self, &_inner_error_);
                                tuple = _tmp17_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                identifiers = (_vala_array_free (identifiers, identifiers_length1, (GDestroyNotify) g_free), NULL);
@@ -11443,7 +11701,7 @@ static void vala_parser_parse_local_variable_declarations (ValaParser* self, Val
                        _tmp73_ = type_copy;
                        _tmp74_ = vala_parser_parse_local_variable (self, _tmp73_, &_inner_error_);
                        local = _tmp74_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (type_copy);
@@ -11471,7 +11729,7 @@ static void vala_parser_parse_local_variable_declarations (ValaParser* self, Val
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (variable_type);
@@ -11512,7 +11770,7 @@ static ValaLocalVariable* vala_parser_parse_local_variable (ValaParser* self, Va
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_identifier (self, &_inner_error_);
        id = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -11525,7 +11783,7 @@ static ValaLocalVariable* vala_parser_parse_local_variable (ValaParser* self, Va
        _tmp2_ = variable_type;
        _tmp3_ = vala_parser_parse_inline_array_type (self, _tmp2_, &_inner_error_);
        type = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -11545,7 +11803,7 @@ static ValaLocalVariable* vala_parser_parse_local_variable (ValaParser* self, Va
                ValaExpression* _tmp7_ = NULL;
                _tmp6_ = vala_parser_parse_expression (self, &_inner_error_);
                _tmp5_ = _tmp6_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (initializer);
@@ -11595,7 +11853,7 @@ static void vala_parser_parse_local_constant_declarations (ValaParser* self, Val
        g_return_if_fail (self != NULL);
        g_return_if_fail (block != NULL);
        vala_parser_expect (self, VALA_TOKEN_TYPE_CONST, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -11605,9 +11863,9 @@ static void vala_parser_parse_local_constant_declarations (ValaParser* self, Val
                        return;
                }
        }
-       _tmp0_ = vala_parser_parse_type (self, FALSE, FALSE, &_inner_error_);
+       _tmp0_ = vala_parser_parse_type (self, FALSE, FALSE, FALSE, &_inner_error_);
        constant_type = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -11664,7 +11922,7 @@ static void vala_parser_parse_local_constant_declarations (ValaParser* self, Val
                        _tmp11_ = type_copy;
                        _tmp12_ = vala_parser_parse_local_constant (self, _tmp11_, &_inner_error_);
                        local = _tmp12_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (type_copy);
@@ -11699,7 +11957,7 @@ static void vala_parser_parse_local_constant_declarations (ValaParser* self, Val
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (array_type);
@@ -11744,7 +12002,7 @@ static ValaConstant* vala_parser_parse_local_constant (ValaParser* self, ValaDat
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_identifier (self, &_inner_error_);
        id = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -11757,7 +12015,7 @@ static ValaConstant* vala_parser_parse_local_constant (ValaParser* self, ValaDat
        _tmp2_ = constant_type;
        _tmp3_ = vala_parser_parse_inline_array_type (self, _tmp2_, &_inner_error_);
        type = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -11770,7 +12028,7 @@ static ValaConstant* vala_parser_parse_local_constant (ValaParser* self, ValaDat
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_ASSIGN, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -11786,7 +12044,7 @@ static ValaConstant* vala_parser_parse_local_constant (ValaParser* self, ValaDat
        }
        _tmp4_ = vala_parser_parse_expression (self, &_inner_error_);
        initializer = _tmp4_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -11835,7 +12093,7 @@ static ValaStatement* vala_parser_parse_expression_statement (ValaParser* self,
        begin = _tmp0_;
        _tmp1_ = vala_parser_parse_statement_expression (self, &_inner_error_);
        expr = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -11846,7 +12104,7 @@ static ValaStatement* vala_parser_parse_expression_statement (ValaParser* self,
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -11879,7 +12137,7 @@ static ValaExpression* vala_parser_parse_statement_expression (ValaParser* self,
        g_return_val_if_fail (self != NULL, NULL);
        _tmp0_ = vala_parser_parse_expression (self, &_inner_error_);
        expr = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -11917,7 +12175,7 @@ static ValaStatement* vala_parser_parse_if_statement (ValaParser* self, GError**
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_IF, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -11928,7 +12186,7 @@ static ValaStatement* vala_parser_parse_if_statement (ValaParser* self, GError**
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -11940,7 +12198,7 @@ static ValaStatement* vala_parser_parse_if_statement (ValaParser* self, GError**
        }
        _tmp1_ = vala_parser_parse_expression (self, &_inner_error_);
        condition = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -11951,7 +12209,7 @@ static ValaStatement* vala_parser_parse_if_statement (ValaParser* self, GError**
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (condition);
@@ -11968,7 +12226,7 @@ static ValaStatement* vala_parser_parse_if_statement (ValaParser* self, GError**
        src = _tmp3_;
        _tmp4_ = vala_parser_parse_embedded_statement (self, &_inner_error_);
        true_stmt = _tmp4_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_source_reference_unref0 (src);
@@ -11990,7 +12248,7 @@ static ValaStatement* vala_parser_parse_if_statement (ValaParser* self, GError**
                ValaBlock* _tmp8_ = NULL;
                _tmp7_ = vala_parser_parse_embedded_statement (self, &_inner_error_);
                _tmp6_ = _tmp7_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (false_stmt);
@@ -12046,7 +12304,7 @@ static ValaStatement* vala_parser_parse_switch_statement (ValaParser* self, GErr
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_SWITCH, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12057,7 +12315,7 @@ static ValaStatement* vala_parser_parse_switch_statement (ValaParser* self, GErr
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12069,7 +12327,7 @@ static ValaStatement* vala_parser_parse_switch_statement (ValaParser* self, GErr
        }
        _tmp1_ = vala_parser_parse_expression (self, &_inner_error_);
        condition = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12080,7 +12338,7 @@ static ValaStatement* vala_parser_parse_switch_statement (ValaParser* self, GErr
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (condition);
@@ -12101,7 +12359,7 @@ static ValaStatement* vala_parser_parse_switch_statement (ValaParser* self, GErr
        _vala_source_reference_unref0 (_tmp5_);
        stmt = _tmp7_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_BRACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (stmt);
@@ -12173,7 +12431,7 @@ static ValaStatement* vala_parser_parse_switch_statement (ValaParser* self, GErr
                                        ValaSwitchLabel* _tmp27_ = NULL;
                                        _tmp21_ = vala_parser_parse_expression (self, &_inner_error_);
                                        _tmp20_ = _tmp21_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (section);
@@ -12207,7 +12465,7 @@ static ValaStatement* vala_parser_parse_switch_statement (ValaParser* self, GErr
                                        ValaSwitchLabel* _tmp32_ = NULL;
                                        ValaSwitchLabel* _tmp33_ = NULL;
                                        vala_parser_expect (self, VALA_TOKEN_TYPE_DEFAULT, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (section);
@@ -12234,7 +12492,7 @@ static ValaStatement* vala_parser_parse_switch_statement (ValaParser* self, GErr
                                        _vala_source_reference_unref0 (_tmp31_);
                                }
                                vala_parser_expect (self, VALA_TOKEN_TYPE_COLON, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (section);
@@ -12254,7 +12512,7 @@ static ValaStatement* vala_parser_parse_switch_statement (ValaParser* self, GErr
                }
                _tmp34_ = section;
                vala_parser_parse_statements (self, (ValaBlock*) _tmp34_, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (section);
@@ -12276,7 +12534,7 @@ static ValaStatement* vala_parser_parse_switch_statement (ValaParser* self, GErr
                _vala_code_node_unref0 (section);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (stmt);
@@ -12316,7 +12574,7 @@ static ValaStatement* vala_parser_parse_while_statement (ValaParser* self, GErro
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_WHILE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12327,7 +12585,7 @@ static ValaStatement* vala_parser_parse_while_statement (ValaParser* self, GErro
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12339,7 +12597,7 @@ static ValaStatement* vala_parser_parse_while_statement (ValaParser* self, GErro
        }
        _tmp1_ = vala_parser_parse_expression (self, &_inner_error_);
        condition = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12350,7 +12608,7 @@ static ValaStatement* vala_parser_parse_while_statement (ValaParser* self, GErro
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (condition);
@@ -12364,7 +12622,7 @@ static ValaStatement* vala_parser_parse_while_statement (ValaParser* self, GErro
        }
        _tmp2_ = vala_parser_parse_embedded_statement (self, &_inner_error_);
        body = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (condition);
@@ -12411,7 +12669,7 @@ static ValaStatement* vala_parser_parse_do_statement (ValaParser* self, GError**
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_DO, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12423,7 +12681,7 @@ static ValaStatement* vala_parser_parse_do_statement (ValaParser* self, GError**
        }
        _tmp1_ = vala_parser_parse_embedded_statement (self, &_inner_error_);
        body = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -12434,7 +12692,7 @@ static ValaStatement* vala_parser_parse_do_statement (ValaParser* self, GError**
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_WHILE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (body);
@@ -12447,7 +12705,7 @@ static ValaStatement* vala_parser_parse_do_statement (ValaParser* self, GError**
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (body);
@@ -12461,7 +12719,7 @@ static ValaStatement* vala_parser_parse_do_statement (ValaParser* self, GError**
        }
        _tmp2_ = vala_parser_parse_expression (self, &_inner_error_);
        condition = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (body);
@@ -12474,7 +12732,7 @@ static ValaStatement* vala_parser_parse_do_statement (ValaParser* self, GError**
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (condition);
@@ -12489,7 +12747,7 @@ static ValaStatement* vala_parser_parse_do_statement (ValaParser* self, GError**
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (condition);
@@ -12550,7 +12808,7 @@ static ValaStatement* vala_parser_parse_for_statement (ValaParser* self, GError*
        begin = _tmp0_;
        block = NULL;
        vala_parser_expect (self, VALA_TOKEN_TYPE_FOR, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (block);
@@ -12563,7 +12821,7 @@ static ValaStatement* vala_parser_parse_for_statement (ValaParser* self, GError*
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (block);
@@ -12602,7 +12860,7 @@ static ValaStatement* vala_parser_parse_for_statement (ValaParser* self, GError*
                                gboolean _tmp6_ = FALSE;
                                _tmp6_ = vala_parser_is_expression (self, &_inner_error_);
                                _tmp5_ = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (initializer_list);
@@ -12639,7 +12897,7 @@ static ValaStatement* vala_parser_parse_for_statement (ValaParser* self, GError*
                                        _tmp8_ = FALSE;
                                        _tmp11_ = vala_parser_parse_statement_expression (self, &_inner_error_);
                                        _tmp10_ = _tmp11_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_iterable_unref0 (initializer_list);
@@ -12659,7 +12917,7 @@ static ValaStatement* vala_parser_parse_for_statement (ValaParser* self, GError*
                                }
                        }
                        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (initializer_list);
@@ -12688,7 +12946,7 @@ static ValaStatement* vala_parser_parse_for_statement (ValaParser* self, GError*
                        _vala_source_reference_unref0 (_tmp15_);
                        _tmp17_ = block;
                        vala_parser_parse_local_variable_declarations (self, _tmp17_, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (initializer_list);
@@ -12712,7 +12970,7 @@ static ValaStatement* vala_parser_parse_for_statement (ValaParser* self, GError*
                ValaExpression* _tmp21_ = NULL;
                _tmp20_ = vala_parser_parse_expression (self, &_inner_error_);
                _tmp19_ = _tmp20_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (condition);
@@ -12735,7 +12993,7 @@ static ValaStatement* vala_parser_parse_for_statement (ValaParser* self, GError*
                _vala_code_node_unref0 (_tmp19_);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (condition);
@@ -12773,7 +13031,7 @@ static ValaStatement* vala_parser_parse_for_statement (ValaParser* self, GError*
                                _tmp25_ = FALSE;
                                _tmp28_ = vala_parser_parse_statement_expression (self, &_inner_error_);
                                _tmp27_ = _tmp28_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (iterator_list);
@@ -12798,7 +13056,7 @@ static ValaStatement* vala_parser_parse_for_statement (ValaParser* self, GError*
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (iterator_list);
@@ -12821,7 +13079,7 @@ static ValaStatement* vala_parser_parse_for_statement (ValaParser* self, GError*
        src = _tmp31_;
        _tmp32_ = vala_parser_parse_embedded_statement (self, &_inner_error_);
        body = _tmp32_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_source_reference_unref0 (src);
@@ -12997,7 +13255,7 @@ static ValaStatement* vala_parser_parse_foreach_statement (ValaParser* self, GEr
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_FOREACH, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13008,7 +13266,7 @@ static ValaStatement* vala_parser_parse_foreach_statement (ValaParser* self, GEr
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13025,9 +13283,9 @@ static ValaStatement* vala_parser_parse_foreach_statement (ValaParser* self, GEr
                ValaDataType* _tmp3_ = NULL;
                ValaDataType* _tmp4_ = NULL;
                gboolean _tmp5_ = FALSE;
-               _tmp3_ = vala_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
+               _tmp3_ = vala_parser_parse_type (self, TRUE, TRUE, FALSE, &_inner_error_);
                _tmp2_ = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (type);
@@ -13072,7 +13330,7 @@ static ValaStatement* vala_parser_parse_foreach_statement (ValaParser* self, GEr
        }
        _tmp10_ = vala_parser_parse_identifier (self, &_inner_error_);
        id = _tmp10_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -13085,7 +13343,7 @@ static ValaStatement* vala_parser_parse_foreach_statement (ValaParser* self, GEr
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_IN, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -13101,7 +13359,7 @@ static ValaStatement* vala_parser_parse_foreach_statement (ValaParser* self, GEr
        }
        _tmp11_ = vala_parser_parse_expression (self, &_inner_error_);
        collection = _tmp11_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -13116,7 +13374,7 @@ static ValaStatement* vala_parser_parse_foreach_statement (ValaParser* self, GEr
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (collection);
@@ -13137,7 +13395,7 @@ static ValaStatement* vala_parser_parse_foreach_statement (ValaParser* self, GEr
        src = _tmp13_;
        _tmp14_ = vala_parser_parse_embedded_statement (self, &_inner_error_);
        body = _tmp14_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_source_reference_unref0 (src);
@@ -13185,7 +13443,7 @@ static ValaStatement* vala_parser_parse_break_statement (ValaParser* self, GErro
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_BREAK, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13196,7 +13454,7 @@ static ValaStatement* vala_parser_parse_break_statement (ValaParser* self, GErro
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13231,7 +13489,7 @@ static ValaStatement* vala_parser_parse_continue_statement (ValaParser* self, GE
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_CONTINUE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13242,7 +13500,7 @@ static ValaStatement* vala_parser_parse_continue_statement (ValaParser* self, GE
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13280,7 +13538,7 @@ static ValaStatement* vala_parser_parse_return_statement (ValaParser* self, GErr
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_RETURN, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13298,7 +13556,7 @@ static ValaStatement* vala_parser_parse_return_statement (ValaParser* self, GErr
                ValaExpression* _tmp4_ = NULL;
                _tmp3_ = vala_parser_parse_expression (self, &_inner_error_);
                _tmp2_ = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (expr);
@@ -13317,7 +13575,7 @@ static ValaStatement* vala_parser_parse_return_statement (ValaParser* self, GErr
                _vala_code_node_unref0 (_tmp2_);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -13361,7 +13619,7 @@ static ValaStatement* vala_parser_parse_yield_statement (ValaParser* self, GErro
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_YIELD, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13386,7 +13644,7 @@ static ValaStatement* vala_parser_parse_yield_statement (ValaParser* self, GErro
                vala_parser_prev (self);
                _tmp5_ = vala_parser_parse_expression_statement (self, &_inner_error_);
                _tmp4_ = _tmp5_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return NULL;
@@ -13410,7 +13668,7 @@ static ValaStatement* vala_parser_parse_yield_statement (ValaParser* self, GErro
                ValaExpression* _tmp10_ = NULL;
                _tmp9_ = vala_parser_parse_expression (self, &_inner_error_);
                _tmp8_ = _tmp9_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (expr);
@@ -13429,7 +13687,7 @@ static ValaStatement* vala_parser_parse_yield_statement (ValaParser* self, GErro
                _vala_code_node_unref0 (_tmp8_);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -13471,7 +13729,7 @@ static ValaStatement* vala_parser_parse_throw_statement (ValaParser* self, GErro
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_THROW, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13483,7 +13741,7 @@ static ValaStatement* vala_parser_parse_throw_statement (ValaParser* self, GErro
        }
        _tmp1_ = vala_parser_parse_expression (self, &_inner_error_);
        expr = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13494,7 +13752,7 @@ static ValaStatement* vala_parser_parse_throw_statement (ValaParser* self, GErro
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -13543,7 +13801,7 @@ static ValaStatement* vala_parser_parse_try_statement (ValaParser* self, GError*
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_TRY, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13555,7 +13813,7 @@ static ValaStatement* vala_parser_parse_try_statement (ValaParser* self, GError*
        }
        _tmp1_ = vala_parser_parse_block (self, &_inner_error_);
        try_block = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13575,7 +13833,7 @@ static ValaStatement* vala_parser_parse_try_statement (ValaParser* self, GError*
                ValaTokenType _tmp6_ = 0;
                _tmp5_ = catch_clauses;
                vala_parser_parse_catch_clauses (self, (ValaList*) _tmp5_, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (catch_clauses);
@@ -13598,7 +13856,7 @@ static ValaStatement* vala_parser_parse_try_statement (ValaParser* self, GError*
                        ValaBlock* _tmp9_ = NULL;
                        _tmp8_ = vala_parser_parse_finally_clause (self, &_inner_error_);
                        _tmp7_ = _tmp8_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (catch_clauses);
@@ -13626,7 +13884,7 @@ static ValaStatement* vala_parser_parse_try_statement (ValaParser* self, GError*
                ValaBlock* _tmp12_ = NULL;
                _tmp11_ = vala_parser_parse_finally_clause (self, &_inner_error_);
                _tmp10_ = _tmp11_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (catch_clauses);
@@ -13748,9 +14006,9 @@ static void vala_parser_parse_catch_clauses (ValaParser* self, ValaList* catch_c
                        gchar* _tmp6_ = NULL;
                        gchar* _tmp7_ = NULL;
                        gchar* _tmp8_ = NULL;
-                       _tmp4_ = vala_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
+                       _tmp4_ = vala_parser_parse_type (self, TRUE, TRUE, FALSE, &_inner_error_);
                        _tmp3_ = _tmp4_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (id);
@@ -13770,7 +14028,7 @@ static void vala_parser_parse_catch_clauses (ValaParser* self, ValaList* catch_c
                        type = _tmp5_;
                        _tmp7_ = vala_parser_parse_identifier (self, &_inner_error_);
                        _tmp6_ = _tmp7_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (_tmp3_);
@@ -13791,7 +14049,7 @@ static void vala_parser_parse_catch_clauses (ValaParser* self, ValaList* catch_c
                        _g_free0 (id);
                        id = _tmp8_;
                        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (_tmp6_);
@@ -13814,7 +14072,7 @@ static void vala_parser_parse_catch_clauses (ValaParser* self, ValaList* catch_c
                }
                _tmp9_ = vala_parser_parse_block (self, &_inner_error_);
                block = _tmp9_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _g_free0 (id);
@@ -13854,7 +14112,7 @@ static ValaBlock* vala_parser_parse_finally_clause (ValaParser* self, GError** e
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        vala_parser_expect (self, VALA_TOKEN_TYPE_FINALLY, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13866,7 +14124,7 @@ static ValaBlock* vala_parser_parse_finally_clause (ValaParser* self, GError** e
        }
        _tmp0_ = vala_parser_parse_block (self, &_inner_error_);
        block = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13901,7 +14159,7 @@ static ValaStatement* vala_parser_parse_lock_statement (ValaParser* self, GError
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_LOCK, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13912,7 +14170,7 @@ static ValaStatement* vala_parser_parse_lock_statement (ValaParser* self, GError
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13924,7 +14182,7 @@ static ValaStatement* vala_parser_parse_lock_statement (ValaParser* self, GError
        }
        _tmp1_ = vala_parser_parse_expression (self, &_inner_error_);
        expr = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -13935,7 +14193,7 @@ static ValaStatement* vala_parser_parse_lock_statement (ValaParser* self, GError
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -13949,7 +14207,7 @@ static ValaStatement* vala_parser_parse_lock_statement (ValaParser* self, GError
        }
        _tmp2_ = vala_parser_parse_embedded_statement (self, &_inner_error_);
        stmt = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -13993,7 +14251,7 @@ static ValaStatement* vala_parser_parse_delete_statement (ValaParser* self, GErr
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_DELETE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14005,7 +14263,7 @@ static ValaStatement* vala_parser_parse_delete_statement (ValaParser* self, GErr
        }
        _tmp1_ = vala_parser_parse_expression (self, &_inner_error_);
        expr = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -14016,7 +14274,7 @@ static ValaStatement* vala_parser_parse_delete_statement (ValaParser* self, GErr
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (expr);
@@ -14183,7 +14441,7 @@ static ValaList* vala_parser_parse_attributes (ValaParser* self, GError** error)
                                begin = _tmp6_;
                                _tmp7_ = vala_parser_parse_identifier (self, &_inner_error_);
                                id = _tmp7_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (attrs);
@@ -14229,7 +14487,7 @@ static ValaList* vala_parser_parse_attributes (ValaParser* self, GError** error)
                                                                _tmp16_ = FALSE;
                                                                _tmp19_ = vala_parser_parse_identifier (self, &_inner_error_);
                                                                _tmp18_ = _tmp19_;
-                                                               if (_inner_error_ != NULL) {
+                                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                                g_propagate_error (error, _inner_error_);
                                                                                _vala_code_node_unref0 (attr);
@@ -14250,7 +14508,7 @@ static ValaList* vala_parser_parse_attributes (ValaParser* self, GError** error)
                                                                _g_free0 (id);
                                                                id = _tmp20_;
                                                                vala_parser_expect (self, VALA_TOKEN_TYPE_ASSIGN, &_inner_error_);
-                                                               if (_inner_error_ != NULL) {
+                                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                                g_propagate_error (error, _inner_error_);
                                                                                _g_free0 (_tmp18_);
@@ -14270,7 +14528,7 @@ static ValaList* vala_parser_parse_attributes (ValaParser* self, GError** error)
                                                                }
                                                                _tmp22_ = vala_parser_parse_attribute_value (self, &_inner_error_);
                                                                _tmp21_ = _tmp22_;
-                                                               if (_inner_error_ != NULL) {
+                                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                                g_propagate_error (error, _inner_error_);
                                                                                _g_free0 (_tmp18_);
@@ -14297,7 +14555,7 @@ static ValaList* vala_parser_parse_attributes (ValaParser* self, GError** error)
                                                }
                                        }
                                        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (attr);
@@ -14322,7 +14580,7 @@ static ValaList* vala_parser_parse_attributes (ValaParser* self, GError** error)
                        }
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACKET, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (attrs);
@@ -14489,7 +14747,7 @@ static void vala_parser_parse_main_block (ValaParser* self, ValaSymbol* parent,
        _tmp13_ = vala_subroutine_get_body ((ValaSubroutine*) method);
        _tmp14_ = _tmp13_;
        vala_parser_parse_statements (self, _tmp14_, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (method);
@@ -14560,7 +14818,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
        self->priv->comment = _tmp1_;
        _tmp2_ = vala_parser_parse_attributes (self, &_inner_error_);
        attrs = _tmp2_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -14599,7 +14857,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                        _tmp10_ = parent;
                        _tmp11_ = attrs;
                        vala_parser_parse_constructor_declaration (self, _tmp10_, _tmp11_, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -14624,7 +14882,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                        _tmp13_ = parent;
                        _tmp14_ = attrs;
                        vala_parser_parse_destructor_declaration (self, _tmp13_, _tmp14_, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -14660,7 +14918,6 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                case VALA_TOKEN_TYPE_OP_DEC:
                case VALA_TOKEN_TYPE_BASE:
                case VALA_TOKEN_TYPE_THIS:
-               case VALA_TOKEN_TYPE_OPEN_PARENS:
                case VALA_TOKEN_TYPE_STAR:
                case VALA_TOKEN_TYPE_NEW:
                {
@@ -14718,7 +14975,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                        vala_parser_rollback (self, &_tmp25_);
                        _tmp26_ = parent;
                        vala_parser_parse_main_block (self, _tmp26_, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -14744,7 +15001,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                gboolean _tmp29_ = FALSE;
                                _tmp28_ = vala_parser_is_expression (self, &_inner_error_);
                                is_expr = _tmp28_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (attrs);
@@ -14764,7 +15021,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                        vala_parser_rollback (self, &_tmp30_);
                                        _tmp31_ = parent;
                                        vala_parser_parse_main_block (self, _tmp31_, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_iterable_unref0 (attrs);
@@ -14781,7 +15038,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                }
                        }
                        vala_parser_skip_type (self, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (attrs);
@@ -14812,7 +15069,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                                        _tmp35_ = parent;
                                                        _tmp36_ = attrs;
                                                        vala_parser_parse_class_declaration (self, _tmp35_, _tmp36_, &_inner_error_);
-                                                       if (_inner_error_ != NULL) {
+                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                        g_propagate_error (error, _inner_error_);
                                                                        _vala_iterable_unref0 (attrs);
@@ -14834,7 +15091,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                                        _tmp37_ = parent;
                                                        _tmp38_ = attrs;
                                                        vala_parser_parse_enum_declaration (self, _tmp37_, _tmp38_, &_inner_error_);
-                                                       if (_inner_error_ != NULL) {
+                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                        g_propagate_error (error, _inner_error_);
                                                                        _vala_iterable_unref0 (attrs);
@@ -14856,7 +15113,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                                        _tmp39_ = parent;
                                                        _tmp40_ = attrs;
                                                        vala_parser_parse_errordomain_declaration (self, _tmp39_, _tmp40_, &_inner_error_);
-                                                       if (_inner_error_ != NULL) {
+                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                        g_propagate_error (error, _inner_error_);
                                                                        _vala_iterable_unref0 (attrs);
@@ -14878,7 +15135,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                                        _tmp41_ = parent;
                                                        _tmp42_ = attrs;
                                                        vala_parser_parse_interface_declaration (self, _tmp41_, _tmp42_, &_inner_error_);
-                                                       if (_inner_error_ != NULL) {
+                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                        g_propagate_error (error, _inner_error_);
                                                                        _vala_iterable_unref0 (attrs);
@@ -14900,7 +15157,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                                        _tmp43_ = parent;
                                                        _tmp44_ = attrs;
                                                        vala_parser_parse_namespace_declaration (self, _tmp43_, _tmp44_, &_inner_error_);
-                                                       if (_inner_error_ != NULL) {
+                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                        g_propagate_error (error, _inner_error_);
                                                                        _vala_iterable_unref0 (attrs);
@@ -14922,7 +15179,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                                        _tmp45_ = parent;
                                                        _tmp46_ = attrs;
                                                        vala_parser_parse_struct_declaration (self, _tmp45_, _tmp46_, &_inner_error_);
-                                                       if (_inner_error_ != NULL) {
+                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                        g_propagate_error (error, _inner_error_);
                                                                        _vala_iterable_unref0 (attrs);
@@ -14954,7 +15211,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                        _tmp48_ = parent;
                                        _tmp49_ = attrs;
                                        vala_parser_parse_creation_method_declaration (self, _tmp48_, _tmp49_, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_iterable_unref0 (attrs);
@@ -14973,7 +15230,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                {
                                        ValaTokenType _tmp50_ = 0;
                                        vala_parser_skip_type (self, &_inner_error_);
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_iterable_unref0 (attrs);
@@ -15002,7 +15259,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                                                        _tmp53_ = parent;
                                                                        _tmp54_ = attrs;
                                                                        vala_parser_parse_delegate_declaration (self, _tmp53_, _tmp54_, &_inner_error_);
-                                                                       if (_inner_error_ != NULL) {
+                                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                                        g_propagate_error (error, _inner_error_);
                                                                                        _vala_iterable_unref0 (attrs);
@@ -15024,7 +15281,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                                                        _tmp55_ = parent;
                                                                        _tmp56_ = attrs;
                                                                        vala_parser_parse_signal_declaration (self, _tmp55_, _tmp56_, &_inner_error_);
-                                                                       if (_inner_error_ != NULL) {
+                                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                                        g_propagate_error (error, _inner_error_);
                                                                                        _vala_iterable_unref0 (attrs);
@@ -15046,7 +15303,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                                                        _tmp57_ = parent;
                                                                        _tmp58_ = attrs;
                                                                        vala_parser_parse_method_declaration (self, _tmp57_, _tmp58_, &_inner_error_);
-                                                                       if (_inner_error_ != NULL) {
+                                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                                        g_propagate_error (error, _inner_error_);
                                                                                        _vala_iterable_unref0 (attrs);
@@ -15079,7 +15336,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                                                        _tmp61_ = parent;
                                                                        _tmp62_ = attrs;
                                                                        vala_parser_parse_constant_declaration (self, _tmp61_, _tmp62_, &_inner_error_);
-                                                                       if (_inner_error_ != NULL) {
+                                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                                        g_propagate_error (error, _inner_error_);
                                                                                        _vala_iterable_unref0 (attrs);
@@ -15101,7 +15358,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                                                        _tmp63_ = parent;
                                                                        _tmp64_ = attrs;
                                                                        vala_parser_parse_field_declaration (self, _tmp63_, _tmp64_, &_inner_error_);
-                                                                       if (_inner_error_ != NULL) {
+                                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                                        g_propagate_error (error, _inner_error_);
                                                                                        _vala_iterable_unref0 (attrs);
@@ -15129,7 +15386,7 @@ static void vala_parser_parse_declaration (ValaParser* self, ValaSymbol* parent,
                                                        _tmp66_ = parent;
                                                        _tmp67_ = attrs;
                                                        vala_parser_parse_property_declaration (self, _tmp66_, _tmp67_, &_inner_error_);
-                                                       if (_inner_error_ != NULL) {
+                                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                        g_propagate_error (error, _inner_error_);
                                                                        _vala_iterable_unref0 (attrs);
@@ -15186,7 +15443,7 @@ static void vala_parser_parse_declarations (ValaParser* self, ValaSymbol* parent
        _tmp0_ = root;
        if (!_tmp0_) {
                vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_BRACE, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -15223,17 +15480,17 @@ static void vala_parser_parse_declarations (ValaParser* self, ValaSymbol* parent
                        _tmp7_ = vala_code_context_get_root (_tmp6_);
                        _tmp8_ = _tmp7_;
                        vala_parser_parse_declaration (self, _tmp4_, _tmp5_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_SYMBOL, ValaSymbol), &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
-                                       goto __catch12_vala_parse_error;
+                                       goto __catch14_vala_parse_error;
                                }
                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return;
                        }
                }
-               goto __finally12;
-               __catch12_vala_parse_error:
+               goto __finally14;
+               __catch14_vala_parse_error:
                {
                        GError* e = NULL;
                        gint r = 0;
@@ -15259,8 +15516,8 @@ static void vala_parser_parse_declarations (ValaParser* self, ValaSymbol* parent
                        }
                        _g_error_free0 (e);
                }
-               __finally12:
-               if (_inner_error_ != NULL) {
+               __finally14:
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -15407,7 +15664,7 @@ static void vala_parser_parse_namespace_declaration (ValaParser* self, ValaSymbo
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_NAMESPACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -15419,7 +15676,7 @@ static void vala_parser_parse_namespace_declaration (ValaParser* self, ValaSymbo
        }
        _tmp1_ = vala_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp1_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -15453,7 +15710,7 @@ static void vala_parser_parse_namespace_declaration (ValaParser* self, ValaSymbo
        _tmp14_ = attrs;
        vala_parser_set_attributes (self, (ValaCodeNode*) _tmp13_, _tmp14_);
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_BRACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (ns);
@@ -15476,7 +15733,7 @@ static void vala_parser_parse_namespace_declaration (ValaParser* self, ValaSymbo
        old_using_directives = _tmp20_;
        _tmp21_ = ns;
        vala_parser_parse_using_directives (self, _tmp21_, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (old_using_directives);
@@ -15494,7 +15751,7 @@ static void vala_parser_parse_namespace_declaration (ValaParser* self, ValaSymbo
        }
        _tmp22_ = ns;
        vala_parser_parse_declarations (self, (ValaSymbol*) _tmp22_, TRUE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_iterable_unref0 (old_using_directives);
@@ -15649,7 +15906,7 @@ static void vala_parser_parse_using_directives (ValaParser* self, ValaNamespace*
                                begin = _tmp3_;
                                _tmp4_ = vala_parser_parse_symbol_name (self, &_inner_error_);
                                sym = _tmp4_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                return;
@@ -15680,7 +15937,7 @@ static void vala_parser_parse_using_directives (ValaParser* self, ValaNamespace*
                        }
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -15746,7 +16003,7 @@ static void vala_parser_parse_class_declaration (ValaParser* self, ValaSymbol* p
        _tmp2_ = vala_parser_parse_type_declaration_modifiers (self);
        flags = _tmp2_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLASS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -15758,7 +16015,7 @@ static void vala_parser_parse_class_declaration (ValaParser* self, ValaSymbol* p
        }
        _tmp3_ = vala_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -15770,7 +16027,7 @@ static void vala_parser_parse_class_declaration (ValaParser* self, ValaSymbol* p
        }
        _tmp4_ = vala_parser_parse_type_parameter_list (self, &_inner_error_);
        type_param_list = _tmp4_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (sym);
@@ -15802,9 +16059,9 @@ static void vala_parser_parse_class_declaration (ValaParser* self, ValaSymbol* p
                                        }
                                }
                                _tmp8_ = FALSE;
-                               _tmp11_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+                               _tmp11_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
                                _tmp10_ = _tmp11_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (base_types);
@@ -15962,7 +16219,7 @@ static void vala_parser_parse_class_declaration (ValaParser* self, ValaSymbol* p
        }
        _tmp62_ = cl;
        vala_parser_parse_declarations (self, (ValaSymbol*) _tmp62_, FALSE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (cl);
@@ -16170,7 +16427,7 @@ static void vala_parser_parse_constant_declaration (ValaParser* self, ValaSymbol
        _tmp2_ = vala_parser_parse_member_declaration_modifiers (self);
        flags = _tmp2_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_CONST, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -16180,9 +16437,9 @@ static void vala_parser_parse_constant_declaration (ValaParser* self, ValaSymbol
                        return;
                }
        }
-       _tmp3_ = vala_parser_parse_type (self, FALSE, FALSE, &_inner_error_);
+       _tmp3_ = vala_parser_parse_type (self, FALSE, FALSE, FALSE, &_inner_error_);
        type = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -16194,7 +16451,7 @@ static void vala_parser_parse_constant_declaration (ValaParser* self, ValaSymbol
        }
        _tmp4_ = vala_parser_parse_identifier (self, &_inner_error_);
        id = _tmp4_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -16209,7 +16466,7 @@ static void vala_parser_parse_constant_declaration (ValaParser* self, ValaSymbol
        _tmp6_ = type;
        _tmp7_ = vala_parser_parse_inline_array_type (self, _tmp6_, &_inner_error_);
        _tmp5_ = _tmp7_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -16235,7 +16492,7 @@ static void vala_parser_parse_constant_declaration (ValaParser* self, ValaSymbol
                ValaExpression* _tmp12_ = NULL;
                _tmp11_ = vala_parser_parse_expression (self, &_inner_error_);
                _tmp10_ = _tmp11_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (initializer);
@@ -16260,7 +16517,7 @@ static void vala_parser_parse_constant_declaration (ValaParser* self, ValaSymbol
                _vala_code_node_unref0 (_tmp10_);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (initializer);
@@ -16350,53 +16607,64 @@ static void vala_parser_parse_constant_declaration (ValaParser* self, ValaSymbol
 static void vala_parser_parse_field_declaration (ValaParser* self, ValaSymbol* parent, ValaList* attrs, GError** error) {
        ValaSourceLocation begin = {0};
        ValaSourceLocation _tmp0_ = {0};
-       ValaSymbolAccessibility access = 0;
        ValaSymbolAccessibility _tmp1_ = 0;
+       ValaSymbol* _tmp2_ = NULL;
+       ValaSymbolAccessibility access = 0;
+       ValaSymbolAccessibility _tmp3_ = 0;
        ValaParserModifierFlags flags = 0;
-       ValaParserModifierFlags _tmp2_ = 0;
+       ValaParserModifierFlags _tmp4_ = 0;
        ValaDataType* type = NULL;
-       ValaDataType* _tmp3_ = NULL;
-       gchar* id = NULL;
-       gchar* _tmp4_ = NULL;
        ValaDataType* _tmp5_ = NULL;
-       ValaDataType* _tmp6_ = NULL;
+       gchar* id = NULL;
+       gchar* _tmp6_ = NULL;
        ValaDataType* _tmp7_ = NULL;
        ValaDataType* _tmp8_ = NULL;
-       ValaField* f = NULL;
-       const gchar* _tmp9_ = NULL;
+       ValaDataType* _tmp9_ = NULL;
        ValaDataType* _tmp10_ = NULL;
-       ValaSourceLocation _tmp11_ = {0};
-       ValaSourceReference* _tmp12_ = NULL;
-       ValaSourceReference* _tmp13_ = NULL;
-       ValaComment* _tmp14_ = NULL;
-       ValaField* _tmp15_ = NULL;
-       ValaField* _tmp16_ = NULL;
+       ValaField* f = NULL;
+       const gchar* _tmp11_ = NULL;
+       ValaDataType* _tmp12_ = NULL;
+       ValaSourceLocation _tmp13_ = {0};
+       ValaSourceReference* _tmp14_ = NULL;
+       ValaSourceReference* _tmp15_ = NULL;
+       ValaComment* _tmp16_ = NULL;
        ValaField* _tmp17_ = NULL;
-       ValaSymbolAccessibility _tmp18_ = 0;
+       ValaField* _tmp18_ = NULL;
        ValaField* _tmp19_ = NULL;
-       ValaList* _tmp20_ = NULL;
-       ValaParserModifierFlags _tmp21_ = 0;
-       gboolean _tmp25_ = FALSE;
-       gboolean _tmp26_ = FALSE;
-       ValaParserModifierFlags _tmp27_ = 0;
-       gboolean _tmp33_ = FALSE;
-       ValaParserModifierFlags _tmp34_ = 0;
+       ValaSymbolAccessibility _tmp20_ = 0;
+       ValaField* _tmp21_ = NULL;
+       ValaList* _tmp22_ = NULL;
+       ValaParserModifierFlags _tmp23_ = 0;
+       gboolean _tmp27_ = FALSE;
+       gboolean _tmp28_ = FALSE;
+       ValaSymbol* _tmp29_ = NULL;
+       gboolean _tmp39_ = FALSE;
+       gboolean _tmp40_ = FALSE;
        ValaParserModifierFlags _tmp41_ = 0;
-       gboolean _tmp43_ = FALSE;
-       ValaSymbol* _tmp47_ = NULL;
-       ValaField* _tmp48_ = NULL;
+       gboolean _tmp47_ = FALSE;
+       ValaParserModifierFlags _tmp48_ = 0;
+       ValaParserModifierFlags _tmp55_ = 0;
+       gboolean _tmp57_ = FALSE;
+       ValaSymbol* _tmp61_ = NULL;
+       ValaField* _tmp62_ = NULL;
        GError * _inner_error_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (parent != NULL);
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
-       _tmp1_ = vala_parser_parse_access_modifier (self, VALA_SYMBOL_ACCESSIBILITY_PRIVATE);
-       access = _tmp1_;
-       _tmp2_ = vala_parser_parse_member_declaration_modifiers (self);
-       flags = _tmp2_;
-       _tmp3_ = vala_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
-       type = _tmp3_;
-       if (_inner_error_ != NULL) {
+       _tmp2_ = parent;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_STRUCT)) {
+               _tmp1_ = VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
+       } else {
+               _tmp1_ = VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
+       }
+       _tmp3_ = vala_parser_parse_access_modifier (self, _tmp1_);
+       access = _tmp3_;
+       _tmp4_ = vala_parser_parse_member_declaration_modifiers (self);
+       flags = _tmp4_;
+       _tmp5_ = vala_parser_parse_type (self, TRUE, TRUE, FALSE, &_inner_error_);
+       type = _tmp5_;
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -16406,9 +16674,9 @@ static void vala_parser_parse_field_declaration (ValaParser* self, ValaSymbol* p
                        return;
                }
        }
-       _tmp4_ = vala_parser_parse_identifier (self, &_inner_error_);
-       id = _tmp4_;
-       if (_inner_error_ != NULL) {
+       _tmp6_ = vala_parser_parse_identifier (self, &_inner_error_);
+       id = _tmp6_;
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -16420,10 +16688,10 @@ static void vala_parser_parse_field_declaration (ValaParser* self, ValaSymbol* p
                        return;
                }
        }
-       _tmp6_ = type;
-       _tmp7_ = vala_parser_parse_inline_array_type (self, _tmp6_, &_inner_error_);
-       _tmp5_ = _tmp7_;
-       if (_inner_error_ != NULL) {
+       _tmp8_ = type;
+       _tmp9_ = vala_parser_parse_inline_array_type (self, _tmp8_, &_inner_error_);
+       _tmp7_ = _tmp9_;
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -16437,109 +16705,141 @@ static void vala_parser_parse_field_declaration (ValaParser* self, ValaSymbol* p
                        return;
                }
        }
-       _tmp8_ = _tmp5_;
-       _tmp5_ = NULL;
+       _tmp10_ = _tmp7_;
+       _tmp7_ = NULL;
        _vala_code_node_unref0 (type);
-       type = _tmp8_;
-       _tmp9_ = id;
-       _tmp10_ = type;
-       _tmp11_ = begin;
-       _tmp12_ = vala_parser_get_src (self, &_tmp11_);
-       _tmp13_ = _tmp12_;
-       _tmp14_ = self->priv->comment;
-       _tmp15_ = vala_field_new (_tmp9_, _tmp10_, NULL, _tmp13_, _tmp14_);
-       _tmp16_ = _tmp15_;
-       _vala_source_reference_unref0 (_tmp13_);
-       f = _tmp16_;
-       _tmp17_ = f;
-       _tmp18_ = access;
-       vala_symbol_set_access ((ValaSymbol*) _tmp17_, _tmp18_);
+       type = _tmp10_;
+       _tmp11_ = id;
+       _tmp12_ = type;
+       _tmp13_ = begin;
+       _tmp14_ = vala_parser_get_src (self, &_tmp13_);
+       _tmp15_ = _tmp14_;
+       _tmp16_ = self->priv->comment;
+       _tmp17_ = vala_field_new (_tmp11_, _tmp12_, NULL, _tmp15_, _tmp16_);
+       _tmp18_ = _tmp17_;
+       _vala_source_reference_unref0 (_tmp15_);
+       f = _tmp18_;
        _tmp19_ = f;
-       _tmp20_ = attrs;
-       vala_parser_set_attributes (self, (ValaCodeNode*) _tmp19_, _tmp20_);
-       _tmp21_ = flags;
-       if ((_tmp21_ & VALA_PARSER_MODIFIER_FLAGS_STATIC) == VALA_PARSER_MODIFIER_FLAGS_STATIC) {
-               ValaField* _tmp22_ = NULL;
-               _tmp22_ = f;
-               vala_field_set_binding (_tmp22_, VALA_MEMBER_BINDING_STATIC);
+       _tmp20_ = access;
+       vala_symbol_set_access ((ValaSymbol*) _tmp19_, _tmp20_);
+       _tmp21_ = f;
+       _tmp22_ = attrs;
+       vala_parser_set_attributes (self, (ValaCodeNode*) _tmp21_, _tmp22_);
+       _tmp23_ = flags;
+       if ((_tmp23_ & VALA_PARSER_MODIFIER_FLAGS_STATIC) == VALA_PARSER_MODIFIER_FLAGS_STATIC) {
+               ValaField* _tmp24_ = NULL;
+               _tmp24_ = f;
+               vala_field_set_binding (_tmp24_, VALA_MEMBER_BINDING_STATIC);
        } else {
-               ValaParserModifierFlags _tmp23_ = 0;
-               _tmp23_ = flags;
-               if ((_tmp23_ & VALA_PARSER_MODIFIER_FLAGS_CLASS) == VALA_PARSER_MODIFIER_FLAGS_CLASS) {
-                       ValaField* _tmp24_ = NULL;
-                       _tmp24_ = f;
-                       vala_field_set_binding (_tmp24_, VALA_MEMBER_BINDING_CLASS);
+               ValaParserModifierFlags _tmp25_ = 0;
+               _tmp25_ = flags;
+               if ((_tmp25_ & VALA_PARSER_MODIFIER_FLAGS_CLASS) == VALA_PARSER_MODIFIER_FLAGS_CLASS) {
+                       ValaField* _tmp26_ = NULL;
+                       _tmp26_ = f;
+                       vala_field_set_binding (_tmp26_, VALA_MEMBER_BINDING_CLASS);
                }
        }
-       _tmp27_ = flags;
-       if ((_tmp27_ & VALA_PARSER_MODIFIER_FLAGS_ABSTRACT) == VALA_PARSER_MODIFIER_FLAGS_ABSTRACT) {
-               _tmp26_ = TRUE;
-       } else {
-               ValaParserModifierFlags _tmp28_ = 0;
-               _tmp28_ = flags;
-               _tmp26_ = (_tmp28_ & VALA_PARSER_MODIFIER_FLAGS_VIRTUAL) == VALA_PARSER_MODIFIER_FLAGS_VIRTUAL;
-       }
-       if (_tmp26_) {
-               _tmp25_ = TRUE;
-       } else {
-               ValaParserModifierFlags _tmp29_ = 0;
-               _tmp29_ = flags;
-               _tmp25_ = (_tmp29_ & VALA_PARSER_MODIFIER_FLAGS_OVERRIDE) == VALA_PARSER_MODIFIER_FLAGS_OVERRIDE;
-       }
-       if (_tmp25_) {
+       _tmp29_ = parent;
+       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, VALA_TYPE_STRUCT)) {
                ValaField* _tmp30_ = NULL;
-               ValaSourceReference* _tmp31_ = NULL;
-               ValaSourceReference* _tmp32_ = NULL;
+               ValaSymbolAccessibility _tmp31_ = 0;
+               ValaSymbolAccessibility _tmp32_ = 0;
                _tmp30_ = f;
-               _tmp31_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp30_);
+               _tmp31_ = vala_symbol_get_access ((ValaSymbol*) _tmp30_);
                _tmp32_ = _tmp31_;
-               vala_report_error (_tmp32_, "abstract, virtual, and override modifiers are not applicable to fields");
-       }
-       _tmp34_ = flags;
-       if ((_tmp34_ & VALA_PARSER_MODIFIER_FLAGS_EXTERN) == VALA_PARSER_MODIFIER_FLAGS_EXTERN) {
-               _tmp33_ = TRUE;
+               _tmp28_ = _tmp32_ != VALA_SYMBOL_ACCESSIBILITY_PUBLIC;
        } else {
-               ValaScanner* _tmp35_ = NULL;
-               ValaSourceFile* _tmp36_ = NULL;
-               ValaSourceFile* _tmp37_ = NULL;
-               ValaSourceFileType _tmp38_ = 0;
-               ValaSourceFileType _tmp39_ = 0;
-               _tmp35_ = self->priv->scanner;
-               _tmp36_ = vala_scanner_get_source_file (_tmp35_);
-               _tmp37_ = _tmp36_;
-               _tmp38_ = vala_source_file_get_file_type (_tmp37_);
-               _tmp39_ = _tmp38_;
-               _tmp33_ = _tmp39_ == VALA_SOURCE_FILE_TYPE_PACKAGE;
+               _tmp28_ = FALSE;
+       }
+       if (_tmp28_) {
+               ValaField* _tmp33_ = NULL;
+               ValaMemberBinding _tmp34_ = 0;
+               ValaMemberBinding _tmp35_ = 0;
+               _tmp33_ = f;
+               _tmp34_ = vala_field_get_binding (_tmp33_);
+               _tmp35_ = _tmp34_;
+               _tmp27_ = _tmp35_ == VALA_MEMBER_BINDING_INSTANCE;
+       } else {
+               _tmp27_ = FALSE;
        }
-       if (_tmp33_) {
-               ValaField* _tmp40_ = NULL;
-               _tmp40_ = f;
-               vala_symbol_set_external ((ValaSymbol*) _tmp40_, TRUE);
+       if (_tmp27_) {
+               ValaField* _tmp36_ = NULL;
+               ValaSourceReference* _tmp37_ = NULL;
+               ValaSourceReference* _tmp38_ = NULL;
+               _tmp36_ = f;
+               _tmp37_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp36_);
+               _tmp38_ = _tmp37_;
+               vala_report_warning (_tmp38_, "accessibility of struct fields can only be `public`");
        }
        _tmp41_ = flags;
-       if ((_tmp41_ & VALA_PARSER_MODIFIER_FLAGS_NEW) == VALA_PARSER_MODIFIER_FLAGS_NEW) {
-               ValaField* _tmp42_ = NULL;
-               _tmp42_ = f;
-               vala_symbol_set_hides ((ValaSymbol*) _tmp42_, TRUE);
-       }
-       _tmp43_ = vala_parser_accept (self, VALA_TOKEN_TYPE_ASSIGN);
-       if (_tmp43_) {
-               ValaExpression* _tmp44_ = NULL;
-               ValaExpression* _tmp45_ = NULL;
-               ValaField* _tmp46_ = NULL;
-               _tmp45_ = vala_parser_parse_expression (self, &_inner_error_);
-               _tmp44_ = _tmp45_;
-               if (_inner_error_ != NULL) {
+       if ((_tmp41_ & VALA_PARSER_MODIFIER_FLAGS_ABSTRACT) == VALA_PARSER_MODIFIER_FLAGS_ABSTRACT) {
+               _tmp40_ = TRUE;
+       } else {
+               ValaParserModifierFlags _tmp42_ = 0;
+               _tmp42_ = flags;
+               _tmp40_ = (_tmp42_ & VALA_PARSER_MODIFIER_FLAGS_VIRTUAL) == VALA_PARSER_MODIFIER_FLAGS_VIRTUAL;
+       }
+       if (_tmp40_) {
+               _tmp39_ = TRUE;
+       } else {
+               ValaParserModifierFlags _tmp43_ = 0;
+               _tmp43_ = flags;
+               _tmp39_ = (_tmp43_ & VALA_PARSER_MODIFIER_FLAGS_OVERRIDE) == VALA_PARSER_MODIFIER_FLAGS_OVERRIDE;
+       }
+       if (_tmp39_) {
+               ValaField* _tmp44_ = NULL;
+               ValaSourceReference* _tmp45_ = NULL;
+               ValaSourceReference* _tmp46_ = NULL;
+               _tmp44_ = f;
+               _tmp45_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp44_);
+               _tmp46_ = _tmp45_;
+               vala_report_error (_tmp46_, "abstract, virtual, and override modifiers are not applicable to fields");
+       }
+       _tmp48_ = flags;
+       if ((_tmp48_ & VALA_PARSER_MODIFIER_FLAGS_EXTERN) == VALA_PARSER_MODIFIER_FLAGS_EXTERN) {
+               _tmp47_ = TRUE;
+       } else {
+               ValaScanner* _tmp49_ = NULL;
+               ValaSourceFile* _tmp50_ = NULL;
+               ValaSourceFile* _tmp51_ = NULL;
+               ValaSourceFileType _tmp52_ = 0;
+               ValaSourceFileType _tmp53_ = 0;
+               _tmp49_ = self->priv->scanner;
+               _tmp50_ = vala_scanner_get_source_file (_tmp49_);
+               _tmp51_ = _tmp50_;
+               _tmp52_ = vala_source_file_get_file_type (_tmp51_);
+               _tmp53_ = _tmp52_;
+               _tmp47_ = _tmp53_ == VALA_SOURCE_FILE_TYPE_PACKAGE;
+       }
+       if (_tmp47_) {
+               ValaField* _tmp54_ = NULL;
+               _tmp54_ = f;
+               vala_symbol_set_external ((ValaSymbol*) _tmp54_, TRUE);
+       }
+       _tmp55_ = flags;
+       if ((_tmp55_ & VALA_PARSER_MODIFIER_FLAGS_NEW) == VALA_PARSER_MODIFIER_FLAGS_NEW) {
+               ValaField* _tmp56_ = NULL;
+               _tmp56_ = f;
+               vala_symbol_set_hides ((ValaSymbol*) _tmp56_, TRUE);
+       }
+       _tmp57_ = vala_parser_accept (self, VALA_TOKEN_TYPE_ASSIGN);
+       if (_tmp57_) {
+               ValaExpression* _tmp58_ = NULL;
+               ValaExpression* _tmp59_ = NULL;
+               ValaField* _tmp60_ = NULL;
+               _tmp59_ = vala_parser_parse_expression (self, &_inner_error_);
+               _tmp58_ = _tmp59_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (f);
-                               _vala_code_node_unref0 (_tmp5_);
+                               _vala_code_node_unref0 (_tmp7_);
                                _g_free0 (id);
                                _vala_code_node_unref0 (type);
                                return;
                        } else {
                                _vala_code_node_unref0 (f);
-                               _vala_code_node_unref0 (_tmp5_);
+                               _vala_code_node_unref0 (_tmp7_);
                                _g_free0 (id);
                                _vala_code_node_unref0 (type);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -16547,22 +16847,22 @@ static void vala_parser_parse_field_declaration (ValaParser* self, ValaSymbol* p
                                return;
                        }
                }
-               _tmp46_ = f;
-               vala_variable_set_initializer ((ValaVariable*) _tmp46_, _tmp44_);
-               _vala_code_node_unref0 (_tmp44_);
+               _tmp60_ = f;
+               vala_variable_set_initializer ((ValaVariable*) _tmp60_, _tmp58_);
+               _vala_code_node_unref0 (_tmp58_);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (f);
-                       _vala_code_node_unref0 (_tmp5_);
+                       _vala_code_node_unref0 (_tmp7_);
                        _g_free0 (id);
                        _vala_code_node_unref0 (type);
                        return;
                } else {
                        _vala_code_node_unref0 (f);
-                       _vala_code_node_unref0 (_tmp5_);
+                       _vala_code_node_unref0 (_tmp7_);
                        _g_free0 (id);
                        _vala_code_node_unref0 (type);
                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -16570,11 +16870,11 @@ static void vala_parser_parse_field_declaration (ValaParser* self, ValaSymbol* p
                        return;
                }
        }
-       _tmp47_ = parent;
-       _tmp48_ = f;
-       vala_symbol_add_field (_tmp47_, _tmp48_);
+       _tmp61_ = parent;
+       _tmp62_ = f;
+       vala_symbol_add_field (_tmp61_, _tmp62_);
        _vala_code_node_unref0 (f);
-       _vala_code_node_unref0 (_tmp5_);
+       _vala_code_node_unref0 (_tmp7_);
        _g_free0 (id);
        _vala_code_node_unref0 (type);
 }
@@ -16595,7 +16895,7 @@ static ValaInitializerList* vala_parser_parse_initializer (ValaParser* self, GEr
        vala_parser_get_location (self, &_tmp0_);
        begin = _tmp0_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_BRACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -16625,7 +16925,7 @@ static ValaInitializerList* vala_parser_parse_initializer (ValaParser* self, GEr
                }
                _tmp7_ = vala_parser_parse_argument (self, &_inner_error_);
                init = _tmp7_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (initializer);
@@ -16648,7 +16948,7 @@ static ValaInitializerList* vala_parser_parse_initializer (ValaParser* self, GEr
                _vala_code_node_unref0 (init);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (initializer);
@@ -16674,36 +16974,41 @@ static void vala_parser_parse_method_declaration (ValaParser* self, ValaSymbol*
        ValaParserModifierFlags _tmp2_ = 0;
        ValaDataType* type = NULL;
        ValaDataType* _tmp3_ = NULL;
-       gchar* id = NULL;
-       gchar* _tmp4_ = NULL;
+       ValaUnresolvedSymbol* sym = NULL;
+       ValaUnresolvedSymbol* _tmp4_ = NULL;
        ValaList* type_param_list = NULL;
        ValaList* _tmp5_ = NULL;
        ValaMethod* method = NULL;
-       const gchar* _tmp6_ = NULL;
-       ValaDataType* _tmp7_ = NULL;
-       ValaSourceLocation _tmp8_ = {0};
-       ValaSourceReference* _tmp9_ = NULL;
-       ValaSourceReference* _tmp10_ = NULL;
-       ValaComment* _tmp11_ = NULL;
-       ValaMethod* _tmp12_ = NULL;
-       ValaMethod* _tmp13_ = NULL;
+       ValaUnresolvedSymbol* _tmp6_ = NULL;
+       const gchar* _tmp7_ = NULL;
+       const gchar* _tmp8_ = NULL;
+       ValaDataType* _tmp9_ = NULL;
+       ValaSourceLocation _tmp10_ = {0};
+       ValaSourceReference* _tmp11_ = NULL;
+       ValaSourceReference* _tmp12_ = NULL;
+       ValaComment* _tmp13_ = NULL;
        ValaMethod* _tmp14_ = NULL;
-       ValaSymbolAccessibility _tmp15_ = 0;
-       ValaMethod* _tmp16_ = NULL;
-       ValaList* _tmp17_ = NULL;
-       ValaParserModifierFlags _tmp31_ = 0;
-       ValaParserModifierFlags _tmp35_ = 0;
-       ValaParserModifierFlags _tmp37_ = 0;
-       ValaMethod* _tmp39_ = NULL;
-       ValaMemberBinding _tmp40_ = 0;
-       ValaMemberBinding _tmp41_ = 0;
-       ValaParserModifierFlags _tmp84_ = 0;
-       ValaParserModifierFlags _tmp86_ = 0;
-       ValaTokenType _tmp88_ = 0;
-       gboolean _tmp94_ = FALSE;
-       gboolean _tmp108_ = FALSE;
-       ValaSymbol* _tmp118_ = NULL;
-       ValaMethod* _tmp119_ = NULL;
+       ValaMethod* _tmp15_ = NULL;
+       ValaUnresolvedSymbol* _tmp16_ = NULL;
+       ValaUnresolvedSymbol* _tmp17_ = NULL;
+       ValaUnresolvedSymbol* _tmp18_ = NULL;
+       ValaMethod* _tmp30_ = NULL;
+       ValaSymbolAccessibility _tmp31_ = 0;
+       ValaMethod* _tmp32_ = NULL;
+       ValaList* _tmp33_ = NULL;
+       ValaParserModifierFlags _tmp47_ = 0;
+       ValaParserModifierFlags _tmp51_ = 0;
+       ValaParserModifierFlags _tmp53_ = 0;
+       ValaMethod* _tmp55_ = NULL;
+       ValaMemberBinding _tmp56_ = 0;
+       ValaMemberBinding _tmp57_ = 0;
+       ValaParserModifierFlags _tmp100_ = 0;
+       ValaParserModifierFlags _tmp102_ = 0;
+       ValaTokenType _tmp104_ = 0;
+       gboolean _tmp110_ = FALSE;
+       gboolean _tmp124_ = FALSE;
+       ValaSymbol* _tmp134_ = NULL;
+       ValaMethod* _tmp135_ = NULL;
        GError * _inner_error_ = NULL;
        g_return_if_fail (self != NULL);
        g_return_if_fail (parent != NULL);
@@ -16713,9 +17018,9 @@ static void vala_parser_parse_method_declaration (ValaParser* self, ValaSymbol*
        access = _tmp1_;
        _tmp2_ = vala_parser_parse_member_declaration_modifiers (self);
        flags = _tmp2_;
-       _tmp3_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+       _tmp3_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
        type = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -16725,9 +17030,9 @@ static void vala_parser_parse_method_declaration (ValaParser* self, ValaSymbol*
                        return;
                }
        }
-       _tmp4_ = vala_parser_parse_identifier (self, &_inner_error_);
-       id = _tmp4_;
-       if (_inner_error_ != NULL) {
+       _tmp4_ = vala_parser_parse_symbol_name (self, &_inner_error_);
+       sym = _tmp4_;
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -16741,220 +17046,251 @@ static void vala_parser_parse_method_declaration (ValaParser* self, ValaSymbol*
        }
        _tmp5_ = vala_parser_parse_type_parameter_list (self, &_inner_error_);
        type_param_list = _tmp5_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
-                       _g_free0 (id);
+                       _vala_code_node_unref0 (sym);
                        _vala_code_node_unref0 (type);
                        return;
                } else {
-                       _g_free0 (id);
+                       _vala_code_node_unref0 (sym);
                        _vala_code_node_unref0 (type);
                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
                        return;
                }
        }
-       _tmp6_ = id;
-       _tmp7_ = type;
-       _tmp8_ = begin;
-       _tmp9_ = vala_parser_get_src (self, &_tmp8_);
-       _tmp10_ = _tmp9_;
-       _tmp11_ = self->priv->comment;
-       _tmp12_ = vala_method_new (_tmp6_, _tmp7_, _tmp10_, _tmp11_);
-       _tmp13_ = _tmp12_;
-       _vala_source_reference_unref0 (_tmp10_);
-       method = _tmp13_;
-       _tmp14_ = method;
-       _tmp15_ = access;
-       vala_symbol_set_access ((ValaSymbol*) _tmp14_, _tmp15_);
-       _tmp16_ = method;
-       _tmp17_ = attrs;
-       vala_parser_set_attributes (self, (ValaCodeNode*) _tmp16_, _tmp17_);
+       _tmp6_ = sym;
+       _tmp7_ = vala_symbol_get_name ((ValaSymbol*) _tmp6_);
+       _tmp8_ = _tmp7_;
+       _tmp9_ = type;
+       _tmp10_ = begin;
+       _tmp11_ = vala_parser_get_src (self, &_tmp10_);
+       _tmp12_ = _tmp11_;
+       _tmp13_ = self->priv->comment;
+       _tmp14_ = vala_method_new (_tmp8_, _tmp9_, _tmp12_, _tmp13_);
+       _tmp15_ = _tmp14_;
+       _vala_source_reference_unref0 (_tmp12_);
+       method = _tmp15_;
+       _tmp16_ = sym;
+       _tmp17_ = vala_unresolved_symbol_get_inner (_tmp16_);
+       _tmp18_ = _tmp17_;
+       if (_tmp18_ != NULL) {
+               ValaMethod* _tmp19_ = NULL;
+               ValaUnresolvedSymbol* _tmp20_ = NULL;
+               ValaUnresolvedSymbol* _tmp21_ = NULL;
+               ValaUnresolvedSymbol* _tmp22_ = NULL;
+               ValaUnresolvedSymbol* _tmp23_ = NULL;
+               ValaUnresolvedSymbol* _tmp24_ = NULL;
+               ValaUnresolvedSymbol* _tmp25_ = NULL;
+               ValaSourceReference* _tmp26_ = NULL;
+               ValaSourceReference* _tmp27_ = NULL;
+               ValaUnresolvedType* _tmp28_ = NULL;
+               ValaUnresolvedType* _tmp29_ = NULL;
+               _tmp19_ = method;
+               _tmp20_ = sym;
+               _tmp21_ = vala_unresolved_symbol_get_inner (_tmp20_);
+               _tmp22_ = _tmp21_;
+               _tmp23_ = sym;
+               _tmp24_ = vala_unresolved_symbol_get_inner (_tmp23_);
+               _tmp25_ = _tmp24_;
+               _tmp26_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp25_);
+               _tmp27_ = _tmp26_;
+               _tmp28_ = vala_unresolved_type_new_from_symbol (_tmp22_, _tmp27_);
+               _tmp29_ = _tmp28_;
+               vala_method_set_base_interface_type (_tmp19_, (ValaDataType*) _tmp29_);
+               _vala_code_node_unref0 (_tmp29_);
+       }
+       _tmp30_ = method;
+       _tmp31_ = access;
+       vala_symbol_set_access ((ValaSymbol*) _tmp30_, _tmp31_);
+       _tmp32_ = method;
+       _tmp33_ = attrs;
+       vala_parser_set_attributes (self, (ValaCodeNode*) _tmp32_, _tmp33_);
        {
                ValaList* _type_param_list = NULL;
-               ValaList* _tmp18_ = NULL;
-               ValaList* _tmp19_ = NULL;
+               ValaList* _tmp34_ = NULL;
+               ValaList* _tmp35_ = NULL;
                gint _type_param_size = 0;
-               ValaList* _tmp20_ = NULL;
-               gint _tmp21_ = 0;
-               gint _tmp22_ = 0;
+               ValaList* _tmp36_ = NULL;
+               gint _tmp37_ = 0;
+               gint _tmp38_ = 0;
                gint _type_param_index = 0;
-               _tmp18_ = type_param_list;
-               _tmp19_ = _vala_iterable_ref0 (_tmp18_);
-               _type_param_list = _tmp19_;
-               _tmp20_ = _type_param_list;
-               _tmp21_ = vala_collection_get_size ((ValaCollection*) _tmp20_);
-               _tmp22_ = _tmp21_;
-               _type_param_size = _tmp22_;
+               _tmp34_ = type_param_list;
+               _tmp35_ = _vala_iterable_ref0 (_tmp34_);
+               _type_param_list = _tmp35_;
+               _tmp36_ = _type_param_list;
+               _tmp37_ = vala_collection_get_size ((ValaCollection*) _tmp36_);
+               _tmp38_ = _tmp37_;
+               _type_param_size = _tmp38_;
                _type_param_index = -1;
                while (TRUE) {
-                       gint _tmp23_ = 0;
-                       gint _tmp24_ = 0;
-                       gint _tmp25_ = 0;
+                       gint _tmp39_ = 0;
+                       gint _tmp40_ = 0;
+                       gint _tmp41_ = 0;
                        ValaTypeParameter* type_param = NULL;
-                       ValaList* _tmp26_ = NULL;
-                       gint _tmp27_ = 0;
-                       gpointer _tmp28_ = NULL;
-                       ValaMethod* _tmp29_ = NULL;
-                       ValaTypeParameter* _tmp30_ = NULL;
-                       _tmp23_ = _type_param_index;
-                       _type_param_index = _tmp23_ + 1;
-                       _tmp24_ = _type_param_index;
-                       _tmp25_ = _type_param_size;
-                       if (!(_tmp24_ < _tmp25_)) {
+                       ValaList* _tmp42_ = NULL;
+                       gint _tmp43_ = 0;
+                       gpointer _tmp44_ = NULL;
+                       ValaMethod* _tmp45_ = NULL;
+                       ValaTypeParameter* _tmp46_ = NULL;
+                       _tmp39_ = _type_param_index;
+                       _type_param_index = _tmp39_ + 1;
+                       _tmp40_ = _type_param_index;
+                       _tmp41_ = _type_param_size;
+                       if (!(_tmp40_ < _tmp41_)) {
                                break;
                        }
-                       _tmp26_ = _type_param_list;
-                       _tmp27_ = _type_param_index;
-                       _tmp28_ = vala_list_get (_tmp26_, _tmp27_);
-                       type_param = (ValaTypeParameter*) _tmp28_;
-                       _tmp29_ = method;
-                       _tmp30_ = type_param;
-                       vala_method_add_type_parameter (_tmp29_, _tmp30_);
+                       _tmp42_ = _type_param_list;
+                       _tmp43_ = _type_param_index;
+                       _tmp44_ = vala_list_get (_tmp42_, _tmp43_);
+                       type_param = (ValaTypeParameter*) _tmp44_;
+                       _tmp45_ = method;
+                       _tmp46_ = type_param;
+                       vala_method_add_type_parameter (_tmp45_, _tmp46_);
                        _vala_code_node_unref0 (type_param);
                }
                _vala_iterable_unref0 (_type_param_list);
        }
-       _tmp31_ = flags;
-       if ((_tmp31_ & VALA_PARSER_MODIFIER_FLAGS_STATIC) == VALA_PARSER_MODIFIER_FLAGS_STATIC) {
-               ValaMethod* _tmp32_ = NULL;
-               _tmp32_ = method;
-               vala_method_set_binding (_tmp32_, VALA_MEMBER_BINDING_STATIC);
+       _tmp47_ = flags;
+       if ((_tmp47_ & VALA_PARSER_MODIFIER_FLAGS_STATIC) == VALA_PARSER_MODIFIER_FLAGS_STATIC) {
+               ValaMethod* _tmp48_ = NULL;
+               _tmp48_ = method;
+               vala_method_set_binding (_tmp48_, VALA_MEMBER_BINDING_STATIC);
        } else {
-               ValaParserModifierFlags _tmp33_ = 0;
-               _tmp33_ = flags;
-               if ((_tmp33_ & VALA_PARSER_MODIFIER_FLAGS_CLASS) == VALA_PARSER_MODIFIER_FLAGS_CLASS) {
-                       ValaMethod* _tmp34_ = NULL;
-                       _tmp34_ = method;
-                       vala_method_set_binding (_tmp34_, VALA_MEMBER_BINDING_CLASS);
-               }
-       }
-       _tmp35_ = flags;
-       if ((_tmp35_ & VALA_PARSER_MODIFIER_FLAGS_ASYNC) == VALA_PARSER_MODIFIER_FLAGS_ASYNC) {
-               ValaMethod* _tmp36_ = NULL;
-               _tmp36_ = method;
-               vala_method_set_coroutine (_tmp36_, TRUE);
-       }
-       _tmp37_ = flags;
-       if ((_tmp37_ & VALA_PARSER_MODIFIER_FLAGS_NEW) == VALA_PARSER_MODIFIER_FLAGS_NEW) {
-               ValaMethod* _tmp38_ = NULL;
-               _tmp38_ = method;
-               vala_symbol_set_hides ((ValaSymbol*) _tmp38_, TRUE);
-       }
-       _tmp39_ = method;
-       _tmp40_ = vala_method_get_binding (_tmp39_);
-       _tmp41_ = _tmp40_;
-       if (_tmp41_ == VALA_MEMBER_BINDING_INSTANCE) {
-               ValaParserModifierFlags _tmp42_ = 0;
-               ValaParserModifierFlags _tmp44_ = 0;
-               ValaParserModifierFlags _tmp46_ = 0;
-               gboolean _tmp48_ = FALSE;
-               gboolean _tmp49_ = FALSE;
-               gboolean _tmp50_ = FALSE;
-               ValaMethod* _tmp51_ = NULL;
-               gboolean _tmp52_ = FALSE;
-               gboolean _tmp53_ = FALSE;
-               _tmp42_ = flags;
-               if ((_tmp42_ & VALA_PARSER_MODIFIER_FLAGS_ABSTRACT) == VALA_PARSER_MODIFIER_FLAGS_ABSTRACT) {
-                       ValaMethod* _tmp43_ = NULL;
-                       _tmp43_ = method;
-                       vala_method_set_is_abstract (_tmp43_, TRUE);
-               }
-               _tmp44_ = flags;
-               if ((_tmp44_ & VALA_PARSER_MODIFIER_FLAGS_VIRTUAL) == VALA_PARSER_MODIFIER_FLAGS_VIRTUAL) {
-                       ValaMethod* _tmp45_ = NULL;
-                       _tmp45_ = method;
-                       vala_method_set_is_virtual (_tmp45_, TRUE);
-               }
-               _tmp46_ = flags;
-               if ((_tmp46_ & VALA_PARSER_MODIFIER_FLAGS_OVERRIDE) == VALA_PARSER_MODIFIER_FLAGS_OVERRIDE) {
-                       ValaMethod* _tmp47_ = NULL;
-                       _tmp47_ = method;
-                       vala_method_set_overrides (_tmp47_, TRUE);
+               ValaParserModifierFlags _tmp49_ = 0;
+               _tmp49_ = flags;
+               if ((_tmp49_ & VALA_PARSER_MODIFIER_FLAGS_CLASS) == VALA_PARSER_MODIFIER_FLAGS_CLASS) {
+                       ValaMethod* _tmp50_ = NULL;
+                       _tmp50_ = method;
+                       vala_method_set_binding (_tmp50_, VALA_MEMBER_BINDING_CLASS);
+               }
+       }
+       _tmp51_ = flags;
+       if ((_tmp51_ & VALA_PARSER_MODIFIER_FLAGS_ASYNC) == VALA_PARSER_MODIFIER_FLAGS_ASYNC) {
+               ValaMethod* _tmp52_ = NULL;
+               _tmp52_ = method;
+               vala_method_set_coroutine (_tmp52_, TRUE);
+       }
+       _tmp53_ = flags;
+       if ((_tmp53_ & VALA_PARSER_MODIFIER_FLAGS_NEW) == VALA_PARSER_MODIFIER_FLAGS_NEW) {
+               ValaMethod* _tmp54_ = NULL;
+               _tmp54_ = method;
+               vala_symbol_set_hides ((ValaSymbol*) _tmp54_, TRUE);
+       }
+       _tmp55_ = method;
+       _tmp56_ = vala_method_get_binding (_tmp55_);
+       _tmp57_ = _tmp56_;
+       if (_tmp57_ == VALA_MEMBER_BINDING_INSTANCE) {
+               ValaParserModifierFlags _tmp58_ = 0;
+               ValaParserModifierFlags _tmp60_ = 0;
+               ValaParserModifierFlags _tmp62_ = 0;
+               gboolean _tmp64_ = FALSE;
+               gboolean _tmp65_ = FALSE;
+               gboolean _tmp66_ = FALSE;
+               ValaMethod* _tmp67_ = NULL;
+               gboolean _tmp68_ = FALSE;
+               gboolean _tmp69_ = FALSE;
+               _tmp58_ = flags;
+               if ((_tmp58_ & VALA_PARSER_MODIFIER_FLAGS_ABSTRACT) == VALA_PARSER_MODIFIER_FLAGS_ABSTRACT) {
+                       ValaMethod* _tmp59_ = NULL;
+                       _tmp59_ = method;
+                       vala_method_set_is_abstract (_tmp59_, TRUE);
+               }
+               _tmp60_ = flags;
+               if ((_tmp60_ & VALA_PARSER_MODIFIER_FLAGS_VIRTUAL) == VALA_PARSER_MODIFIER_FLAGS_VIRTUAL) {
+                       ValaMethod* _tmp61_ = NULL;
+                       _tmp61_ = method;
+                       vala_method_set_is_virtual (_tmp61_, TRUE);
+               }
+               _tmp62_ = flags;
+               if ((_tmp62_ & VALA_PARSER_MODIFIER_FLAGS_OVERRIDE) == VALA_PARSER_MODIFIER_FLAGS_OVERRIDE) {
+                       ValaMethod* _tmp63_ = NULL;
+                       _tmp63_ = method;
+                       vala_method_set_overrides (_tmp63_, TRUE);
+               }
+               _tmp67_ = method;
+               _tmp68_ = vala_method_get_is_abstract (_tmp67_);
+               _tmp69_ = _tmp68_;
+               if (_tmp69_) {
+                       ValaMethod* _tmp70_ = NULL;
+                       gboolean _tmp71_ = FALSE;
+                       gboolean _tmp72_ = FALSE;
+                       _tmp70_ = method;
+                       _tmp71_ = vala_method_get_is_virtual (_tmp70_);
+                       _tmp72_ = _tmp71_;
+                       _tmp66_ = _tmp72_;
+               } else {
+                       _tmp66_ = FALSE;
                }
-               _tmp51_ = method;
-               _tmp52_ = vala_method_get_is_abstract (_tmp51_);
-               _tmp53_ = _tmp52_;
-               if (_tmp53_) {
-                       ValaMethod* _tmp54_ = NULL;
-                       gboolean _tmp55_ = FALSE;
-                       gboolean _tmp56_ = FALSE;
-                       _tmp54_ = method;
-                       _tmp55_ = vala_method_get_is_virtual (_tmp54_);
-                       _tmp56_ = _tmp55_;
-                       _tmp50_ = _tmp56_;
-               } else {
-                       _tmp50_ = FALSE;
-               }
-               if (_tmp50_) {
-                       _tmp49_ = TRUE;
-               } else {
-                       gboolean _tmp57_ = FALSE;
-                       ValaMethod* _tmp58_ = NULL;
-                       gboolean _tmp59_ = FALSE;
-                       gboolean _tmp60_ = FALSE;
-                       _tmp58_ = method;
-                       _tmp59_ = vala_method_get_is_abstract (_tmp58_);
-                       _tmp60_ = _tmp59_;
-                       if (_tmp60_) {
-                               ValaMethod* _tmp61_ = NULL;
-                               gboolean _tmp62_ = FALSE;
-                               gboolean _tmp63_ = FALSE;
-                               _tmp61_ = method;
-                               _tmp62_ = vala_method_get_overrides (_tmp61_);
-                               _tmp63_ = _tmp62_;
-                               _tmp57_ = _tmp63_;
+               if (_tmp66_) {
+                       _tmp65_ = TRUE;
+               } else {
+                       gboolean _tmp73_ = FALSE;
+                       ValaMethod* _tmp74_ = NULL;
+                       gboolean _tmp75_ = FALSE;
+                       gboolean _tmp76_ = FALSE;
+                       _tmp74_ = method;
+                       _tmp75_ = vala_method_get_is_abstract (_tmp74_);
+                       _tmp76_ = _tmp75_;
+                       if (_tmp76_) {
+                               ValaMethod* _tmp77_ = NULL;
+                               gboolean _tmp78_ = FALSE;
+                               gboolean _tmp79_ = FALSE;
+                               _tmp77_ = method;
+                               _tmp78_ = vala_method_get_overrides (_tmp77_);
+                               _tmp79_ = _tmp78_;
+                               _tmp73_ = _tmp79_;
                        } else {
-                               _tmp57_ = FALSE;
-                       }
-                       _tmp49_ = _tmp57_;
-               }
-               if (_tmp49_) {
-                       _tmp48_ = TRUE;
-               } else {
-                       gboolean _tmp64_ = FALSE;
-                       ValaMethod* _tmp65_ = NULL;
-                       gboolean _tmp66_ = FALSE;
-                       gboolean _tmp67_ = FALSE;
-                       _tmp65_ = method;
-                       _tmp66_ = vala_method_get_is_virtual (_tmp65_);
-                       _tmp67_ = _tmp66_;
-                       if (_tmp67_) {
-                               ValaMethod* _tmp68_ = NULL;
-                               gboolean _tmp69_ = FALSE;
-                               gboolean _tmp70_ = FALSE;
-                               _tmp68_ = method;
-                               _tmp69_ = vala_method_get_overrides (_tmp68_);
-                               _tmp70_ = _tmp69_;
-                               _tmp64_ = _tmp70_;
+                               _tmp73_ = FALSE;
+                       }
+                       _tmp65_ = _tmp73_;
+               }
+               if (_tmp65_) {
+                       _tmp64_ = TRUE;
+               } else {
+                       gboolean _tmp80_ = FALSE;
+                       ValaMethod* _tmp81_ = NULL;
+                       gboolean _tmp82_ = FALSE;
+                       gboolean _tmp83_ = FALSE;
+                       _tmp81_ = method;
+                       _tmp82_ = vala_method_get_is_virtual (_tmp81_);
+                       _tmp83_ = _tmp82_;
+                       if (_tmp83_) {
+                               ValaMethod* _tmp84_ = NULL;
+                               gboolean _tmp85_ = FALSE;
+                               gboolean _tmp86_ = FALSE;
+                               _tmp84_ = method;
+                               _tmp85_ = vala_method_get_overrides (_tmp84_);
+                               _tmp86_ = _tmp85_;
+                               _tmp80_ = _tmp86_;
                        } else {
-                               _tmp64_ = FALSE;
+                               _tmp80_ = FALSE;
                        }
-                       _tmp48_ = _tmp64_;
+                       _tmp64_ = _tmp80_;
                }
-               if (_tmp48_) {
-                       gchar* _tmp71_ = NULL;
-                       gchar* _tmp72_ = NULL;
-                       GError* _tmp73_ = NULL;
-                       GError* _tmp74_ = NULL;
-                       _tmp71_ = vala_parser_get_error (self, "only one of `abstract', `virtual', or `override' may be specified");
-                       _tmp72_ = _tmp71_;
-                       _tmp73_ = g_error_new_literal (VALA_PARSE_ERROR, VALA_PARSE_ERROR_SYNTAX, _tmp72_);
-                       _tmp74_ = _tmp73_;
-                       _g_free0 (_tmp72_);
-                       _inner_error_ = _tmp74_;
+               if (_tmp64_) {
+                       gchar* _tmp87_ = NULL;
+                       gchar* _tmp88_ = NULL;
+                       GError* _tmp89_ = NULL;
+                       GError* _tmp90_ = NULL;
+                       _tmp87_ = vala_parser_get_error (self, "only one of `abstract', `virtual', or `override' may be specified");
+                       _tmp88_ = _tmp87_;
+                       _tmp89_ = g_error_new_literal (VALA_PARSE_ERROR, VALA_PARSE_ERROR_SYNTAX, _tmp88_);
+                       _tmp90_ = _tmp89_;
+                       _g_free0 (_tmp88_);
+                       _inner_error_ = _tmp90_;
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                return;
                        } else {
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
@@ -16962,47 +17298,47 @@ static void vala_parser_parse_method_declaration (ValaParser* self, ValaSymbol*
                        }
                }
        } else {
-               gboolean _tmp75_ = FALSE;
-               gboolean _tmp76_ = FALSE;
-               ValaParserModifierFlags _tmp77_ = 0;
-               _tmp77_ = flags;
-               if ((_tmp77_ & VALA_PARSER_MODIFIER_FLAGS_ABSTRACT) == VALA_PARSER_MODIFIER_FLAGS_ABSTRACT) {
-                       _tmp76_ = TRUE;
-               } else {
-                       ValaParserModifierFlags _tmp78_ = 0;
-                       _tmp78_ = flags;
-                       _tmp76_ = (_tmp78_ & VALA_PARSER_MODIFIER_FLAGS_VIRTUAL) == VALA_PARSER_MODIFIER_FLAGS_VIRTUAL;
-               }
-               if (_tmp76_) {
-                       _tmp75_ = TRUE;
+               gboolean _tmp91_ = FALSE;
+               gboolean _tmp92_ = FALSE;
+               ValaParserModifierFlags _tmp93_ = 0;
+               _tmp93_ = flags;
+               if ((_tmp93_ & VALA_PARSER_MODIFIER_FLAGS_ABSTRACT) == VALA_PARSER_MODIFIER_FLAGS_ABSTRACT) {
+                       _tmp92_ = TRUE;
                } else {
-                       ValaParserModifierFlags _tmp79_ = 0;
-                       _tmp79_ = flags;
-                       _tmp75_ = (_tmp79_ & VALA_PARSER_MODIFIER_FLAGS_OVERRIDE) == VALA_PARSER_MODIFIER_FLAGS_OVERRIDE;
+                       ValaParserModifierFlags _tmp94_ = 0;
+                       _tmp94_ = flags;
+                       _tmp92_ = (_tmp94_ & VALA_PARSER_MODIFIER_FLAGS_VIRTUAL) == VALA_PARSER_MODIFIER_FLAGS_VIRTUAL;
                }
-               if (_tmp75_) {
-                       gchar* _tmp80_ = NULL;
-                       gchar* _tmp81_ = NULL;
-                       GError* _tmp82_ = NULL;
-                       GError* _tmp83_ = NULL;
-                       _tmp80_ = vala_parser_get_error (self, "the modifiers `abstract', `virtual', and `override' are not valid for " \
+               if (_tmp92_) {
+                       _tmp91_ = TRUE;
+               } else {
+                       ValaParserModifierFlags _tmp95_ = 0;
+                       _tmp95_ = flags;
+                       _tmp91_ = (_tmp95_ & VALA_PARSER_MODIFIER_FLAGS_OVERRIDE) == VALA_PARSER_MODIFIER_FLAGS_OVERRIDE;
+               }
+               if (_tmp91_) {
+                       gchar* _tmp96_ = NULL;
+                       gchar* _tmp97_ = NULL;
+                       GError* _tmp98_ = NULL;
+                       GError* _tmp99_ = NULL;
+                       _tmp96_ = vala_parser_get_error (self, "the modifiers `abstract', `virtual', and `override' are not valid for " \
 "static methods");
-                       _tmp81_ = _tmp80_;
-                       _tmp82_ = g_error_new_literal (VALA_PARSE_ERROR, VALA_PARSE_ERROR_SYNTAX, _tmp81_);
-                       _tmp83_ = _tmp82_;
-                       _g_free0 (_tmp81_);
-                       _inner_error_ = _tmp83_;
+                       _tmp97_ = _tmp96_;
+                       _tmp98_ = g_error_new_literal (VALA_PARSE_ERROR, VALA_PARSE_ERROR_SYNTAX, _tmp97_);
+                       _tmp99_ = _tmp98_;
+                       _g_free0 (_tmp97_);
+                       _inner_error_ = _tmp99_;
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                return;
                        } else {
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
@@ -17010,341 +17346,341 @@ static void vala_parser_parse_method_declaration (ValaParser* self, ValaSymbol*
                        }
                }
        }
-       _tmp84_ = flags;
-       if ((_tmp84_ & VALA_PARSER_MODIFIER_FLAGS_INLINE) == VALA_PARSER_MODIFIER_FLAGS_INLINE) {
-               ValaMethod* _tmp85_ = NULL;
-               _tmp85_ = method;
-               vala_method_set_is_inline (_tmp85_, TRUE);
+       _tmp100_ = flags;
+       if ((_tmp100_ & VALA_PARSER_MODIFIER_FLAGS_INLINE) == VALA_PARSER_MODIFIER_FLAGS_INLINE) {
+               ValaMethod* _tmp101_ = NULL;
+               _tmp101_ = method;
+               vala_method_set_is_inline (_tmp101_, TRUE);
        }
-       _tmp86_ = flags;
-       if ((_tmp86_ & VALA_PARSER_MODIFIER_FLAGS_EXTERN) == VALA_PARSER_MODIFIER_FLAGS_EXTERN) {
-               ValaMethod* _tmp87_ = NULL;
-               _tmp87_ = method;
-               vala_symbol_set_external ((ValaSymbol*) _tmp87_, TRUE);
+       _tmp102_ = flags;
+       if ((_tmp102_ & VALA_PARSER_MODIFIER_FLAGS_EXTERN) == VALA_PARSER_MODIFIER_FLAGS_EXTERN) {
+               ValaMethod* _tmp103_ = NULL;
+               _tmp103_ = method;
+               vala_symbol_set_external ((ValaSymbol*) _tmp103_, TRUE);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (method);
                        _vala_iterable_unref0 (type_param_list);
-                       _g_free0 (id);
+                       _vala_code_node_unref0 (sym);
                        _vala_code_node_unref0 (type);
                        return;
                } else {
                        _vala_code_node_unref0 (method);
                        _vala_iterable_unref0 (type_param_list);
-                       _g_free0 (id);
+                       _vala_code_node_unref0 (sym);
                        _vala_code_node_unref0 (type);
                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
                        return;
                }
        }
-       _tmp88_ = vala_parser_current (self);
-       if (_tmp88_ != VALA_TOKEN_TYPE_CLOSE_PARENS) {
+       _tmp104_ = vala_parser_current (self);
+       if (_tmp104_ != VALA_TOKEN_TYPE_CLOSE_PARENS) {
                {
-                       gboolean _tmp89_ = FALSE;
-                       _tmp89_ = TRUE;
+                       gboolean _tmp105_ = FALSE;
+                       _tmp105_ = TRUE;
                        while (TRUE) {
                                ValaParameter* param = NULL;
-                               ValaParameter* _tmp91_ = NULL;
-                               ValaMethod* _tmp92_ = NULL;
-                               ValaParameter* _tmp93_ = NULL;
-                               if (!_tmp89_) {
-                                       gboolean _tmp90_ = FALSE;
-                                       _tmp90_ = vala_parser_accept (self, VALA_TOKEN_TYPE_COMMA);
-                                       if (!_tmp90_) {
+                               ValaParameter* _tmp107_ = NULL;
+                               ValaMethod* _tmp108_ = NULL;
+                               ValaParameter* _tmp109_ = NULL;
+                               if (!_tmp105_) {
+                                       gboolean _tmp106_ = FALSE;
+                                       _tmp106_ = vala_parser_accept (self, VALA_TOKEN_TYPE_COMMA);
+                                       if (!_tmp106_) {
                                                break;
                                        }
                                }
-                               _tmp89_ = FALSE;
-                               _tmp91_ = vala_parser_parse_parameter (self, &_inner_error_);
-                               param = _tmp91_;
-                               if (_inner_error_ != NULL) {
+                               _tmp105_ = FALSE;
+                               _tmp107_ = vala_parser_parse_parameter (self, &_inner_error_);
+                               param = _tmp107_;
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (method);
                                                _vala_iterable_unref0 (type_param_list);
-                                               _g_free0 (id);
+                                               _vala_code_node_unref0 (sym);
                                                _vala_code_node_unref0 (type);
                                                return;
                                        } else {
                                                _vala_code_node_unref0 (method);
                                                _vala_iterable_unref0 (type_param_list);
-                                               _g_free0 (id);
+                                               _vala_code_node_unref0 (sym);
                                                _vala_code_node_unref0 (type);
                                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                                g_clear_error (&_inner_error_);
                                                return;
                                        }
                                }
-                               _tmp92_ = method;
-                               _tmp93_ = param;
-                               vala_method_add_parameter (_tmp92_, _tmp93_);
+                               _tmp108_ = method;
+                               _tmp109_ = param;
+                               vala_method_add_parameter (_tmp108_, _tmp109_);
                                _vala_code_node_unref0 (param);
                        }
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (method);
                        _vala_iterable_unref0 (type_param_list);
-                       _g_free0 (id);
+                       _vala_code_node_unref0 (sym);
                        _vala_code_node_unref0 (type);
                        return;
                } else {
                        _vala_code_node_unref0 (method);
                        _vala_iterable_unref0 (type_param_list);
-                       _g_free0 (id);
+                       _vala_code_node_unref0 (sym);
                        _vala_code_node_unref0 (type);
                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
                        return;
                }
        }
-       _tmp94_ = vala_parser_accept (self, VALA_TOKEN_TYPE_THROWS);
-       if (_tmp94_) {
+       _tmp110_ = vala_parser_accept (self, VALA_TOKEN_TYPE_THROWS);
+       if (_tmp110_) {
                {
-                       gboolean _tmp95_ = FALSE;
-                       _tmp95_ = TRUE;
+                       gboolean _tmp111_ = FALSE;
+                       _tmp111_ = TRUE;
                        while (TRUE) {
-                               ValaDataType* _tmp97_ = NULL;
-                               ValaDataType* _tmp98_ = NULL;
-                               ValaMethod* _tmp99_ = NULL;
-                               if (!_tmp95_) {
-                                       gboolean _tmp96_ = FALSE;
-                                       _tmp96_ = vala_parser_accept (self, VALA_TOKEN_TYPE_COMMA);
-                                       if (!_tmp96_) {
+                               ValaDataType* _tmp113_ = NULL;
+                               ValaDataType* _tmp114_ = NULL;
+                               ValaMethod* _tmp115_ = NULL;
+                               if (!_tmp111_) {
+                                       gboolean _tmp112_ = FALSE;
+                                       _tmp112_ = vala_parser_accept (self, VALA_TOKEN_TYPE_COMMA);
+                                       if (!_tmp112_) {
                                                break;
                                        }
                                }
-                               _tmp95_ = FALSE;
-                               _tmp98_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
-                               _tmp97_ = _tmp98_;
-                               if (_inner_error_ != NULL) {
+                               _tmp111_ = FALSE;
+                               _tmp114_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
+                               _tmp113_ = _tmp114_;
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (method);
                                                _vala_iterable_unref0 (type_param_list);
-                                               _g_free0 (id);
+                                               _vala_code_node_unref0 (sym);
                                                _vala_code_node_unref0 (type);
                                                return;
                                        } else {
                                                _vala_code_node_unref0 (method);
                                                _vala_iterable_unref0 (type_param_list);
-                                               _g_free0 (id);
+                                               _vala_code_node_unref0 (sym);
                                                _vala_code_node_unref0 (type);
                                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                                g_clear_error (&_inner_error_);
                                                return;
                                        }
                                }
-                               _tmp99_ = method;
-                               vala_code_node_add_error_type ((ValaCodeNode*) _tmp99_, _tmp97_);
-                               _vala_code_node_unref0 (_tmp97_);
+                               _tmp115_ = method;
+                               vala_code_node_add_error_type ((ValaCodeNode*) _tmp115_, _tmp113_);
+                               _vala_code_node_unref0 (_tmp113_);
                        }
                }
        }
        while (TRUE) {
-               gboolean _tmp100_ = FALSE;
-               ValaExpression* _tmp101_ = NULL;
-               ValaExpression* _tmp102_ = NULL;
-               ValaMethod* _tmp103_ = NULL;
-               _tmp100_ = vala_parser_accept (self, VALA_TOKEN_TYPE_REQUIRES);
-               if (!_tmp100_) {
+               gboolean _tmp116_ = FALSE;
+               ValaExpression* _tmp117_ = NULL;
+               ValaExpression* _tmp118_ = NULL;
+               ValaMethod* _tmp119_ = NULL;
+               _tmp116_ = vala_parser_accept (self, VALA_TOKEN_TYPE_REQUIRES);
+               if (!_tmp116_) {
                        break;
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                return;
                        } else {
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return;
                        }
                }
-               _tmp102_ = vala_parser_parse_expression (self, &_inner_error_);
-               _tmp101_ = _tmp102_;
-               if (_inner_error_ != NULL) {
+               _tmp118_ = vala_parser_parse_expression (self, &_inner_error_);
+               _tmp117_ = _tmp118_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                return;
                        } else {
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return;
                        }
                }
-               _tmp103_ = method;
-               vala_method_add_precondition (_tmp103_, _tmp101_);
+               _tmp119_ = method;
+               vala_method_add_precondition (_tmp119_, _tmp117_);
                vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
-                               _vala_code_node_unref0 (_tmp101_);
+                               _vala_code_node_unref0 (_tmp117_);
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                return;
                        } else {
-                               _vala_code_node_unref0 (_tmp101_);
+                               _vala_code_node_unref0 (_tmp117_);
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return;
                        }
                }
-               _vala_code_node_unref0 (_tmp101_);
+               _vala_code_node_unref0 (_tmp117_);
        }
        while (TRUE) {
-               gboolean _tmp104_ = FALSE;
-               ValaExpression* _tmp105_ = NULL;
-               ValaExpression* _tmp106_ = NULL;
-               ValaMethod* _tmp107_ = NULL;
-               _tmp104_ = vala_parser_accept (self, VALA_TOKEN_TYPE_ENSURES);
-               if (!_tmp104_) {
+               gboolean _tmp120_ = FALSE;
+               ValaExpression* _tmp121_ = NULL;
+               ValaExpression* _tmp122_ = NULL;
+               ValaMethod* _tmp123_ = NULL;
+               _tmp120_ = vala_parser_accept (self, VALA_TOKEN_TYPE_ENSURES);
+               if (!_tmp120_) {
                        break;
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                return;
                        } else {
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return;
                        }
                }
-               _tmp106_ = vala_parser_parse_expression (self, &_inner_error_);
-               _tmp105_ = _tmp106_;
-               if (_inner_error_ != NULL) {
+               _tmp122_ = vala_parser_parse_expression (self, &_inner_error_);
+               _tmp121_ = _tmp122_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                return;
                        } else {
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return;
                        }
                }
-               _tmp107_ = method;
-               vala_method_add_postcondition (_tmp107_, _tmp105_);
+               _tmp123_ = method;
+               vala_method_add_postcondition (_tmp123_, _tmp121_);
                vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
-                               _vala_code_node_unref0 (_tmp105_);
+                               _vala_code_node_unref0 (_tmp121_);
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                return;
                        } else {
-                               _vala_code_node_unref0 (_tmp105_);
+                               _vala_code_node_unref0 (_tmp121_);
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return;
                        }
                }
-               _vala_code_node_unref0 (_tmp105_);
+               _vala_code_node_unref0 (_tmp121_);
        }
-       _tmp108_ = vala_parser_accept (self, VALA_TOKEN_TYPE_SEMICOLON);
-       if (!_tmp108_) {
-               ValaBlock* _tmp109_ = NULL;
-               ValaBlock* _tmp110_ = NULL;
-               ValaMethod* _tmp111_ = NULL;
-               _tmp110_ = vala_parser_parse_block (self, &_inner_error_);
-               _tmp109_ = _tmp110_;
-               if (_inner_error_ != NULL) {
+       _tmp124_ = vala_parser_accept (self, VALA_TOKEN_TYPE_SEMICOLON);
+       if (!_tmp124_) {
+               ValaBlock* _tmp125_ = NULL;
+               ValaBlock* _tmp126_ = NULL;
+               ValaMethod* _tmp127_ = NULL;
+               _tmp126_ = vala_parser_parse_block (self, &_inner_error_);
+               _tmp125_ = _tmp126_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                return;
                        } else {
                                _vala_code_node_unref0 (method);
                                _vala_iterable_unref0 (type_param_list);
-                               _g_free0 (id);
+                               _vala_code_node_unref0 (sym);
                                _vala_code_node_unref0 (type);
                                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
                                return;
                        }
                }
-               _tmp111_ = method;
-               vala_subroutine_set_body ((ValaSubroutine*) _tmp111_, _tmp109_);
-               _vala_code_node_unref0 (_tmp109_);
+               _tmp127_ = method;
+               vala_subroutine_set_body ((ValaSubroutine*) _tmp127_, _tmp125_);
+               _vala_code_node_unref0 (_tmp125_);
        } else {
-               ValaScanner* _tmp112_ = NULL;
-               ValaSourceFile* _tmp113_ = NULL;
-               ValaSourceFile* _tmp114_ = NULL;
-               ValaSourceFileType _tmp115_ = 0;
-               ValaSourceFileType _tmp116_ = 0;
-               _tmp112_ = self->priv->scanner;
-               _tmp113_ = vala_scanner_get_source_file (_tmp112_);
-               _tmp114_ = _tmp113_;
-               _tmp115_ = vala_source_file_get_file_type (_tmp114_);
-               _tmp116_ = _tmp115_;
-               if (_tmp116_ == VALA_SOURCE_FILE_TYPE_PACKAGE) {
-                       ValaMethod* _tmp117_ = NULL;
-                       _tmp117_ = method;
-                       vala_symbol_set_external ((ValaSymbol*) _tmp117_, TRUE);
-               }
-       }
-       _tmp118_ = parent;
-       _tmp119_ = method;
-       vala_symbol_add_method (_tmp118_, _tmp119_);
+               ValaScanner* _tmp128_ = NULL;
+               ValaSourceFile* _tmp129_ = NULL;
+               ValaSourceFile* _tmp130_ = NULL;
+               ValaSourceFileType _tmp131_ = 0;
+               ValaSourceFileType _tmp132_ = 0;
+               _tmp128_ = self->priv->scanner;
+               _tmp129_ = vala_scanner_get_source_file (_tmp128_);
+               _tmp130_ = _tmp129_;
+               _tmp131_ = vala_source_file_get_file_type (_tmp130_);
+               _tmp132_ = _tmp131_;
+               if (_tmp132_ == VALA_SOURCE_FILE_TYPE_PACKAGE) {
+                       ValaMethod* _tmp133_ = NULL;
+                       _tmp133_ = method;
+                       vala_symbol_set_external ((ValaSymbol*) _tmp133_, TRUE);
+               }
+       }
+       _tmp134_ = parent;
+       _tmp135_ = method;
+       vala_symbol_add_method (_tmp134_, _tmp135_);
        _vala_code_node_unref0 (method);
        _vala_iterable_unref0 (type_param_list);
-       _g_free0 (id);
+       _vala_code_node_unref0 (sym);
        _vala_code_node_unref0 (type);
 }
 
@@ -17405,9 +17741,9 @@ static void vala_parser_parse_property_declaration (ValaParser* self, ValaSymbol
        access = _tmp1_;
        _tmp2_ = vala_parser_parse_member_declaration_modifiers (self);
        flags = _tmp2_;
-       _tmp3_ = vala_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
+       _tmp3_ = vala_parser_parse_type (self, TRUE, TRUE, FALSE, &_inner_error_);
        type = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -17438,7 +17774,7 @@ static void vala_parser_parse_property_declaration (ValaParser* self, ValaSymbol
        }
        _tmp10_ = vala_parser_parse_identifier (self, &_inner_error_);
        id = _tmp10_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -17641,9 +17977,9 @@ static void vala_parser_parse_property_declaration (ValaParser* self, ValaSymbol
                                        }
                                }
                                _tmp75_ = FALSE;
-                               _tmp78_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+                               _tmp78_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
                                _tmp77_ = _tmp78_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (prop);
@@ -17670,7 +18006,7 @@ static void vala_parser_parse_property_declaration (ValaParser* self, ValaSymbol
                vala_report_error (_tmp82_, "properties throwing errors are not supported yet");
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_BRACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (prop);
@@ -17731,7 +18067,7 @@ static void vala_parser_parse_property_declaration (ValaParser* self, ValaSymbol
                                }
                        }
                        vala_parser_expect (self, VALA_TOKEN_TYPE_ASSIGN, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (prop);
@@ -17749,7 +18085,7 @@ static void vala_parser_parse_property_declaration (ValaParser* self, ValaSymbol
                        }
                        _tmp93_ = vala_parser_parse_expression (self, &_inner_error_);
                        _tmp92_ = _tmp93_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (prop);
@@ -17768,7 +18104,7 @@ static void vala_parser_parse_property_declaration (ValaParser* self, ValaSymbol
                        _tmp94_ = prop;
                        vala_property_set_initializer (_tmp94_, _tmp92_);
                        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (_tmp92_);
@@ -17810,7 +18146,7 @@ static void vala_parser_parse_property_declaration (ValaParser* self, ValaSymbol
                        accessor_begin = _tmp97_;
                        _tmp98_ = vala_parser_parse_attributes (self, &_inner_error_);
                        accessor_attrs = _tmp98_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (prop);
@@ -17907,7 +18243,7 @@ static void vala_parser_parse_property_declaration (ValaParser* self, ValaSymbol
                                        ValaProperty* _tmp118_ = NULL;
                                        _tmp116_ = vala_parser_parse_block (self, &_inner_error_);
                                        _tmp115_ = _tmp116_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (block);
@@ -18075,7 +18411,7 @@ static void vala_parser_parse_property_declaration (ValaParser* self, ValaSymbol
                                        ValaProperty* _tmp155_ = NULL;
                                        _tmp153_ = vala_parser_parse_block (self, &_inner_error_);
                                        _tmp152_ = _tmp153_;
-                                       if (_inner_error_ != NULL) {
+                                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                        g_propagate_error (error, _inner_error_);
                                                        _vala_code_node_unref0 (block);
@@ -18136,7 +18472,7 @@ static void vala_parser_parse_property_declaration (ValaParser* self, ValaSymbol
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (prop);
@@ -18374,7 +18710,7 @@ static void vala_parser_parse_signal_declaration (ValaParser* self, ValaSymbol*
        _tmp2_ = vala_parser_parse_member_declaration_modifiers (self);
        flags = _tmp2_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_SIGNAL, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -18384,9 +18720,9 @@ static void vala_parser_parse_signal_declaration (ValaParser* self, ValaSymbol*
                        return;
                }
        }
-       _tmp3_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+       _tmp3_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
        type = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -18398,7 +18734,7 @@ static void vala_parser_parse_signal_declaration (ValaParser* self, ValaSymbol*
        }
        _tmp4_ = vala_parser_parse_identifier (self, &_inner_error_);
        id = _tmp4_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -18495,7 +18831,7 @@ static void vala_parser_parse_signal_declaration (ValaParser* self, ValaSymbol*
                vala_symbol_set_hides ((ValaSymbol*) _tmp30_, TRUE);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (sig);
@@ -18531,7 +18867,7 @@ static void vala_parser_parse_signal_declaration (ValaParser* self, ValaSymbol*
                                _tmp32_ = FALSE;
                                _tmp34_ = vala_parser_parse_parameter (self, &_inner_error_);
                                param = _tmp34_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (sig);
@@ -18555,7 +18891,7 @@ static void vala_parser_parse_signal_declaration (ValaParser* self, ValaSymbol*
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (sig);
@@ -18578,7 +18914,7 @@ static void vala_parser_parse_signal_declaration (ValaParser* self, ValaSymbol*
                ValaSignal* _tmp40_ = NULL;
                _tmp39_ = vala_parser_parse_block (self, &_inner_error_);
                _tmp38_ = _tmp39_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (sig);
@@ -18633,7 +18969,7 @@ static void vala_parser_parse_constructor_declaration (ValaParser* self, ValaSym
        _tmp1_ = vala_parser_parse_member_declaration_modifiers (self);
        flags = _tmp1_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_CONSTRUCT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -18687,7 +19023,7 @@ static void vala_parser_parse_constructor_declaration (ValaParser* self, ValaSym
        }
        _tmp17_ = vala_parser_parse_block (self, &_inner_error_);
        _tmp16_ = _tmp17_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (c);
@@ -18737,7 +19073,7 @@ static void vala_parser_parse_destructor_declaration (ValaParser* self, ValaSymb
        _tmp1_ = vala_parser_parse_member_declaration_modifiers (self);
        flags = _tmp1_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_TILDE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -18750,7 +19086,7 @@ static void vala_parser_parse_destructor_declaration (ValaParser* self, ValaSymb
        _tmp2_ = vala_parser_parse_identifier (self, &_inner_error_);
        _tmp3_ = _tmp2_;
        _g_free0 (_tmp3_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -18761,7 +19097,7 @@ static void vala_parser_parse_destructor_declaration (ValaParser* self, ValaSymb
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -18772,7 +19108,7 @@ static void vala_parser_parse_destructor_declaration (ValaParser* self, ValaSymb
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -18826,7 +19162,7 @@ static void vala_parser_parse_destructor_declaration (ValaParser* self, ValaSymb
        }
        _tmp19_ = vala_parser_parse_block (self, &_inner_error_);
        _tmp18_ = _tmp19_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (d);
@@ -18892,7 +19228,7 @@ static void vala_parser_parse_struct_declaration (ValaParser* self, ValaSymbol*
        _tmp2_ = vala_parser_parse_type_declaration_modifiers (self);
        flags = _tmp2_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_STRUCT, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -18904,7 +19240,7 @@ static void vala_parser_parse_struct_declaration (ValaParser* self, ValaSymbol*
        }
        _tmp3_ = vala_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -18916,7 +19252,7 @@ static void vala_parser_parse_struct_declaration (ValaParser* self, ValaSymbol*
        }
        _tmp4_ = vala_parser_parse_type_parameter_list (self, &_inner_error_);
        type_param_list = _tmp4_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (sym);
@@ -18934,9 +19270,9 @@ static void vala_parser_parse_struct_declaration (ValaParser* self, ValaSymbol*
                ValaDataType* _tmp6_ = NULL;
                ValaDataType* _tmp7_ = NULL;
                ValaDataType* _tmp8_ = NULL;
-               _tmp7_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+               _tmp7_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
                _tmp6_ = _tmp7_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (base_type);
@@ -19051,7 +19387,7 @@ static void vala_parser_parse_struct_declaration (ValaParser* self, ValaSymbol*
        }
        _tmp46_ = st;
        vala_parser_parse_declarations (self, (ValaSymbol*) _tmp46_, FALSE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (st);
@@ -19197,7 +19533,7 @@ static void vala_parser_parse_interface_declaration (ValaParser* self, ValaSymbo
        _tmp2_ = vala_parser_parse_type_declaration_modifiers (self);
        flags = _tmp2_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_INTERFACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -19209,7 +19545,7 @@ static void vala_parser_parse_interface_declaration (ValaParser* self, ValaSymbo
        }
        _tmp3_ = vala_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -19221,7 +19557,7 @@ static void vala_parser_parse_interface_declaration (ValaParser* self, ValaSymbo
        }
        _tmp4_ = vala_parser_parse_type_parameter_list (self, &_inner_error_);
        type_param_list = _tmp4_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (sym);
@@ -19254,9 +19590,9 @@ static void vala_parser_parse_interface_declaration (ValaParser* self, ValaSymbo
                                        }
                                }
                                _tmp8_ = FALSE;
-                               _tmp10_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+                               _tmp10_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
                                type = _tmp10_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (base_types);
@@ -19409,7 +19745,7 @@ static void vala_parser_parse_interface_declaration (ValaParser* self, ValaSymbo
        }
        _tmp60_ = iface;
        vala_parser_parse_declarations (self, (ValaSymbol*) _tmp60_, FALSE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (iface);
@@ -19549,7 +19885,7 @@ static void vala_parser_parse_enum_declaration (ValaParser* self, ValaSymbol* pa
        _tmp2_ = vala_parser_parse_type_declaration_modifiers (self);
        flags = _tmp2_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_ENUM, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -19561,7 +19897,7 @@ static void vala_parser_parse_enum_declaration (ValaParser* self, ValaSymbol* pa
        }
        _tmp3_ = vala_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -19610,7 +19946,7 @@ static void vala_parser_parse_enum_declaration (ValaParser* self, ValaSymbol* pa
        _tmp24_ = attrs;
        vala_parser_set_attributes (self, (ValaCodeNode*) _tmp23_, _tmp24_);
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_BRACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (en);
@@ -19684,7 +20020,7 @@ static void vala_parser_parse_enum_declaration (ValaParser* self, ValaSymbol* pa
                        }
                        _tmp34_ = vala_parser_parse_attributes (self, &_inner_error_);
                        value_attrs = _tmp34_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (en);
@@ -19702,7 +20038,7 @@ static void vala_parser_parse_enum_declaration (ValaParser* self, ValaSymbol* pa
                        value_begin = _tmp35_;
                        _tmp36_ = vala_parser_parse_identifier (self, &_inner_error_);
                        id = _tmp36_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (value_attrs);
@@ -19730,7 +20066,7 @@ static void vala_parser_parse_enum_declaration (ValaParser* self, ValaSymbol* pa
                                ValaExpression* _tmp42_ = NULL;
                                _tmp41_ = vala_parser_parse_expression (self, &_inner_error_);
                                _tmp40_ = _tmp41_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (value);
@@ -19791,7 +20127,7 @@ static void vala_parser_parse_enum_declaration (ValaParser* self, ValaSymbol* pa
                        }
                        _tmp58_ = en;
                        vala_parser_parse_declaration (self, (ValaSymbol*) _tmp58_, FALSE, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (en);
@@ -19808,7 +20144,7 @@ static void vala_parser_parse_enum_declaration (ValaParser* self, ValaSymbol* pa
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (en);
@@ -19942,7 +20278,7 @@ static void vala_parser_parse_errordomain_declaration (ValaParser* self, ValaSym
        _tmp2_ = vala_parser_parse_type_declaration_modifiers (self);
        flags = _tmp2_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_ERRORDOMAIN, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -19954,7 +20290,7 @@ static void vala_parser_parse_errordomain_declaration (ValaParser* self, ValaSym
        }
        _tmp3_ = vala_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -20003,7 +20339,7 @@ static void vala_parser_parse_errordomain_declaration (ValaParser* self, ValaSym
        _tmp24_ = attrs;
        vala_parser_set_attributes (self, (ValaCodeNode*) _tmp23_, _tmp24_);
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_BRACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (ed);
@@ -20074,7 +20410,7 @@ static void vala_parser_parse_errordomain_declaration (ValaParser* self, ValaSym
                        }
                        _tmp34_ = vala_parser_parse_attributes (self, &_inner_error_);
                        code_attrs = _tmp34_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (ed);
@@ -20092,7 +20428,7 @@ static void vala_parser_parse_errordomain_declaration (ValaParser* self, ValaSym
                        code_begin = _tmp35_;
                        _tmp36_ = vala_parser_parse_identifier (self, &_inner_error_);
                        id = _tmp36_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_iterable_unref0 (code_attrs);
@@ -20131,7 +20467,7 @@ static void vala_parser_parse_errordomain_declaration (ValaParser* self, ValaSym
                                ValaErrorCode* _tmp51_ = NULL;
                                _tmp50_ = vala_parser_parse_expression (self, &_inner_error_);
                                _tmp49_ = _tmp50_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (ec);
@@ -20174,7 +20510,7 @@ static void vala_parser_parse_errordomain_declaration (ValaParser* self, ValaSym
                        }
                        _tmp56_ = ed;
                        vala_parser_parse_declaration (self, (ValaSymbol*) _tmp56_, FALSE, &_inner_error_);
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (ed);
@@ -20191,7 +20527,7 @@ static void vala_parser_parse_errordomain_declaration (ValaParser* self, ValaSym
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_BRACE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (ed);
@@ -20507,7 +20843,7 @@ static ValaParameter* vala_parser_parse_parameter (ValaParser* self, GError** er
        g_return_val_if_fail (self != NULL, NULL);
        _tmp0_ = vala_parser_parse_attributes (self, &_inner_error_);
        attrs = _tmp0_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return NULL;
@@ -20554,9 +20890,9 @@ static ValaParameter* vala_parser_parse_parameter (ValaParser* self, GError** er
                ValaDataType* _tmp12_ = NULL;
                ValaDataType* _tmp13_ = NULL;
                ValaDataType* _tmp14_ = NULL;
-               _tmp13_ = vala_parser_parse_type (self, FALSE, FALSE, &_inner_error_);
+               _tmp13_ = vala_parser_parse_type (self, FALSE, FALSE, FALSE, &_inner_error_);
                _tmp12_ = _tmp13_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (type);
@@ -20582,9 +20918,9 @@ static ValaParameter* vala_parser_parse_parameter (ValaParser* self, GError** er
                        ValaDataType* _tmp16_ = NULL;
                        ValaDataType* _tmp17_ = NULL;
                        ValaDataType* _tmp18_ = NULL;
-                       _tmp17_ = vala_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
+                       _tmp17_ = vala_parser_parse_type (self, TRUE, TRUE, FALSE, &_inner_error_);
                        _tmp16_ = _tmp17_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (type);
@@ -20607,9 +20943,9 @@ static ValaParameter* vala_parser_parse_parameter (ValaParser* self, GError** er
                        ValaDataType* _tmp19_ = NULL;
                        ValaDataType* _tmp20_ = NULL;
                        ValaDataType* _tmp21_ = NULL;
-                       _tmp20_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+                       _tmp20_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
                        _tmp19_ = _tmp20_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (type);
@@ -20632,7 +20968,7 @@ static ValaParameter* vala_parser_parse_parameter (ValaParser* self, GError** er
        }
        _tmp22_ = vala_parser_parse_identifier (self, &_inner_error_);
        id = _tmp22_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -20649,7 +20985,7 @@ static ValaParameter* vala_parser_parse_parameter (ValaParser* self, GError** er
        _tmp24_ = type;
        _tmp25_ = vala_parser_parse_inline_array_type (self, _tmp24_, &_inner_error_);
        _tmp23_ = _tmp25_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _g_free0 (id);
@@ -20694,7 +21030,7 @@ static ValaParameter* vala_parser_parse_parameter (ValaParser* self, GError** er
                ValaParameter* _tmp43_ = NULL;
                _tmp42_ = vala_parser_parse_expression (self, &_inner_error_);
                _tmp41_ = _tmp42_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (param);
@@ -20766,7 +21102,7 @@ static void vala_parser_parse_creation_method_declaration (ValaParser* self, Val
        flags = _tmp2_;
        _tmp3_ = vala_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp3_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -20891,7 +21227,7 @@ static void vala_parser_parse_creation_method_declaration (ValaParser* self, Val
                vala_method_set_coroutine ((ValaMethod*) _tmp44_, TRUE);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (method);
@@ -20925,7 +21261,7 @@ static void vala_parser_parse_creation_method_declaration (ValaParser* self, Val
                                _tmp46_ = FALSE;
                                _tmp48_ = vala_parser_parse_parameter (self, &_inner_error_);
                                param = _tmp48_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (method);
@@ -20947,7 +21283,7 @@ static void vala_parser_parse_creation_method_declaration (ValaParser* self, Val
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (method);
@@ -20978,9 +21314,9 @@ static void vala_parser_parse_creation_method_declaration (ValaParser* self, Val
                                        }
                                }
                                _tmp52_ = FALSE;
-                               _tmp55_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+                               _tmp55_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
                                _tmp54_ = _tmp55_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (method);
@@ -21010,7 +21346,7 @@ static void vala_parser_parse_creation_method_declaration (ValaParser* self, Val
                        break;
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
@@ -21026,7 +21362,7 @@ static void vala_parser_parse_creation_method_declaration (ValaParser* self, Val
                }
                _tmp59_ = vala_parser_parse_expression (self, &_inner_error_);
                _tmp58_ = _tmp59_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
@@ -21043,7 +21379,7 @@ static void vala_parser_parse_creation_method_declaration (ValaParser* self, Val
                _tmp60_ = method;
                vala_method_add_precondition ((ValaMethod*) _tmp60_, _tmp58_);
                vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (_tmp58_);
@@ -21071,7 +21407,7 @@ static void vala_parser_parse_creation_method_declaration (ValaParser* self, Val
                        break;
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
@@ -21087,7 +21423,7 @@ static void vala_parser_parse_creation_method_declaration (ValaParser* self, Val
                }
                _tmp63_ = vala_parser_parse_expression (self, &_inner_error_);
                _tmp62_ = _tmp63_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
@@ -21104,7 +21440,7 @@ static void vala_parser_parse_creation_method_declaration (ValaParser* self, Val
                _tmp64_ = method;
                vala_method_add_postcondition ((ValaMethod*) _tmp64_, _tmp62_);
                vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (_tmp62_);
@@ -21135,7 +21471,7 @@ static void vala_parser_parse_creation_method_declaration (ValaParser* self, Val
                ValaCreationMethod* _tmp72_ = NULL;
                _tmp71_ = vala_parser_parse_block (self, &_inner_error_);
                _tmp70_ = _tmp71_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_code_node_unref0 (method);
@@ -21224,7 +21560,7 @@ static void vala_parser_parse_delegate_declaration (ValaParser* self, ValaSymbol
        _tmp2_ = vala_parser_parse_member_declaration_modifiers (self);
        flags = _tmp2_;
        vala_parser_expect (self, VALA_TOKEN_TYPE_DELEGATE, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -21255,9 +21591,9 @@ static void vala_parser_parse_delegate_declaration (ValaParser* self, ValaSymbol
                        return;
                }
        }
-       _tmp8_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+       _tmp8_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
        type = _tmp8_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        return;
@@ -21269,7 +21605,7 @@ static void vala_parser_parse_delegate_declaration (ValaParser* self, ValaSymbol
        }
        _tmp9_ = vala_parser_parse_symbol_name (self, &_inner_error_);
        sym = _tmp9_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (type);
@@ -21283,7 +21619,7 @@ static void vala_parser_parse_delegate_declaration (ValaParser* self, ValaSymbol
        }
        _tmp10_ = vala_parser_parse_type_parameter_list (self, &_inner_error_);
        type_param_list = _tmp10_;
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (sym);
@@ -21402,7 +21738,7 @@ static void vala_parser_parse_delegate_declaration (ValaParser* self, ValaSymbol
                _vala_iterable_unref0 (_type_param_list);
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_OPEN_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (d);
@@ -21440,7 +21776,7 @@ static void vala_parser_parse_delegate_declaration (ValaParser* self, ValaSymbol
                                _tmp54_ = FALSE;
                                _tmp56_ = vala_parser_parse_parameter (self, &_inner_error_);
                                param = _tmp56_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (d);
@@ -21466,7 +21802,7 @@ static void vala_parser_parse_delegate_declaration (ValaParser* self, ValaSymbol
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_CLOSE_PARENS, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (d);
@@ -21501,9 +21837,9 @@ static void vala_parser_parse_delegate_declaration (ValaParser* self, ValaSymbol
                                        }
                                }
                                _tmp60_ = FALSE;
-                               _tmp63_ = vala_parser_parse_type (self, TRUE, FALSE, &_inner_error_);
+                               _tmp63_ = vala_parser_parse_type (self, TRUE, FALSE, FALSE, &_inner_error_);
                                _tmp62_ = _tmp63_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_code_node_unref0 (d);
@@ -21528,7 +21864,7 @@ static void vala_parser_parse_delegate_declaration (ValaParser* self, ValaSymbol
                }
        }
        vala_parser_expect (self, VALA_TOKEN_TYPE_SEMICOLON, &_inner_error_);
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                        g_propagate_error (error, _inner_error_);
                        _vala_code_node_unref0 (d);
@@ -21669,7 +22005,7 @@ static ValaList* vala_parser_parse_type_parameter_list (ValaParser* self, GError
                                begin = _tmp5_;
                                _tmp6_ = vala_parser_parse_identifier (self, &_inner_error_);
                                id = _tmp6_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _vala_iterable_unref0 (list);
@@ -21695,7 +22031,7 @@ static ValaList* vala_parser_parse_type_parameter_list (ValaParser* self, GError
                        }
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_OP_GT, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                _vala_iterable_unref0 (list);
@@ -21749,7 +22085,7 @@ static void vala_parser_skip_type_argument_list (ValaParser* self, GError** erro
                                }
                                _tmp1_ = FALSE;
                                vala_parser_skip_type (self, &_inner_error_);
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                return;
@@ -21762,7 +22098,7 @@ static void vala_parser_skip_type_argument_list (ValaParser* self, GError** erro
                        }
                }
                vala_parser_expect (self, VALA_TOKEN_TYPE_OP_GT, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                g_propagate_error (error, _inner_error_);
                                return;
@@ -21820,9 +22156,9 @@ static ValaList* vala_parser_parse_type_argument_list (ValaParser* self, gboolea
                                                ValaDataType* _tmp7_ = NULL;
                                                ValaArrayList* _tmp8_ = NULL;
                                                ValaDataType* _tmp9_ = NULL;
-                                               _tmp7_ = vala_parser_parse_type (self, TRUE, TRUE, &_inner_error_);
+                                               _tmp7_ = vala_parser_parse_type (self, TRUE, TRUE, FALSE, &_inner_error_);
                                                type = _tmp7_;
-                                               if (_inner_error_ != NULL) {
+                                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                                g_propagate_error (error, _inner_error_);
                                                                _vala_iterable_unref0 (list);
@@ -21943,7 +22279,7 @@ static ValaMemberAccess* vala_parser_parse_member_name (ValaParser* self, ValaEx
                        _tmp1_ = FALSE;
                        _tmp3_ = vala_parser_parse_identifier (self, &_inner_error_);
                        id = _tmp3_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _vala_code_node_unref0 (expr);
@@ -21977,7 +22313,7 @@ static ValaMemberAccess* vala_parser_parse_member_name (ValaParser* self, ValaEx
                                gchar* _tmp11_ = NULL;
                                _tmp10_ = vala_parser_parse_identifier (self, &_inner_error_);
                                _tmp9_ = _tmp10_;
-                               if (_inner_error_ != NULL) {
+                               if (G_UNLIKELY (_inner_error_ != NULL)) {
                                        if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                                g_propagate_error (error, _inner_error_);
                                                _g_free0 (id);
@@ -22000,7 +22336,7 @@ static ValaMemberAccess* vala_parser_parse_member_name (ValaParser* self, ValaEx
                        }
                        _tmp12_ = vala_parser_parse_type_argument_list (self, FALSE, &_inner_error_);
                        type_arg_list = _tmp12_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == VALA_PARSE_ERROR) {
                                        g_propagate_error (error, _inner_error_);
                                        _g_free0 (id);
@@ -22161,9 +22497,9 @@ static GType vala_parser_token_info_get_type (void) {
 
 static void vala_parser_class_init (ValaParserClass * klass) {
        vala_parser_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_parser_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_parser_finalize;
        g_type_class_add_private (klass, sizeof (ValaParserPrivate));
-       VALA_CODE_VISITOR_CLASS (klass)->visit_source_file = vala_parser_real_visit_source_file;
+       ((ValaCodeVisitorClass *) klass)->visit_source_file = vala_parser_real_visit_source_file;
 }
 
 
index a7ca9c0..3127f44 100644 (file)
@@ -379,14 +379,25 @@ public class Vala.Parser : CodeVisitor {
                accept (TokenType.OWNED);
                accept (TokenType.UNOWNED);
                accept (TokenType.WEAK);
-               if (accept (TokenType.VOID)) {
+
+               if (is_inner_array_type ()) {
+                       expect (TokenType.OPEN_PARENS);
+                       expect (TokenType.UNOWNED);
+                       skip_type ();
+                       expect (TokenType.CLOSE_PARENS);
+                       expect (TokenType.OPEN_BRACKET);
+                       prev ();
                } else {
-                       skip_symbol_name ();
-                       skip_type_argument_list ();
-               }
-               while (accept (TokenType.STAR)) {
+                       if (accept (TokenType.VOID)) {
+                       } else {
+                               skip_symbol_name ();
+                               skip_type_argument_list ();
+                       }
+                       while (accept (TokenType.STAR)) {
+                       }
+                       accept (TokenType.INTERR);
                }
-               accept (TokenType.INTERR);
+               
                while (accept (TokenType.OPEN_BRACKET)) {
                        do {
                                // required for decision between expression and declaration statement
@@ -401,50 +412,73 @@ public class Vala.Parser : CodeVisitor {
                accept (TokenType.HASH);
        }
 
-       DataType parse_type (bool owned_by_default, bool can_weak_ref) throws ParseError {
+       bool is_inner_array_type () {
+               var begin = get_location ();
+               
+               var result = accept (TokenType.OPEN_PARENS) && accept (TokenType.UNOWNED) && current() != TokenType.CLOSE_PARENS;
+               rollback (begin);
+               return result;
+       }
+       
+       DataType parse_type (bool owned_by_default, bool can_weak_ref, bool require_unowned = false) throws ParseError {
                var begin = get_location ();
 
                bool is_dynamic = accept (TokenType.DYNAMIC);
 
                bool value_owned = owned_by_default;
 
-               if (owned_by_default) {
-                       if (accept (TokenType.UNOWNED)) {
-                               value_owned = false;
-                       } else if (accept (TokenType.WEAK)) {
-                               if (!can_weak_ref && !context.deprecated) {
-                                       Report.warning (get_last_src (), "deprecated syntax, use `unowned` modifier");
+               if (require_unowned) {
+                       expect (TokenType.UNOWNED);
+               } else {
+                       if (owned_by_default) {
+                               if (accept (TokenType.UNOWNED)) {
+                                       value_owned = false;
+                               } else if (accept (TokenType.WEAK)) {
+                                       if (!can_weak_ref && !context.deprecated) {
+                                               Report.warning (get_last_src (), "deprecated syntax, use `unowned` modifier");
+                                       }
+                                       value_owned = false;
                                }
-                               value_owned = false;
+                       } else {
+                               value_owned = accept (TokenType.OWNED);
                        }
-               } else {
-                       value_owned = accept (TokenType.OWNED);
                }
 
                DataType type;
 
-               if (!is_dynamic && value_owned == owned_by_default && accept (TokenType.VOID)) {
-                       type = new VoidType (get_src (begin));
-               } else {
-                       var sym = parse_symbol_name ();
-                       List<DataType> type_arg_list = parse_type_argument_list (false);
+               bool inner_type_owned = true;
+               if (accept (TokenType.OPEN_PARENS)) {
+                       type = parse_type (false, false, true);
+                       expect (TokenType.CLOSE_PARENS);
+                       
+                       inner_type_owned = false;
 
-                       type = new UnresolvedType.from_symbol (sym, get_src (begin));
-                       if (type_arg_list != null) {
-                               foreach (DataType type_arg in type_arg_list) {
-                                       type.add_type_argument (type_arg);
+                       expect (TokenType.OPEN_BRACKET);
+                       prev ();
+               } else {
+                       if (!is_dynamic && value_owned == owned_by_default && accept (TokenType.VOID)) {
+                               type = new VoidType (get_src (begin));
+                       } else {
+                               var sym = parse_symbol_name ();
+                               List<DataType> type_arg_list = parse_type_argument_list (false);
+                               
+                               type = new UnresolvedType.from_symbol (sym, get_src (begin));
+                               if (type_arg_list != null) {
+                                       foreach (DataType type_arg in type_arg_list) {
+                                               type.add_type_argument (type_arg);
+                                       }
                                }
                        }
-               }
-
-               while (accept (TokenType.STAR)) {
-                       type = new PointerType (type, get_src (begin));
-               }
+                       
+                       while (accept (TokenType.STAR)) {
+                               type = new PointerType (type, get_src (begin));
+                       }
 
-               if (!(type is PointerType)) {
-                       type.nullable = accept (TokenType.INTERR);
+                       if (!(type is PointerType)) {
+                               type.nullable = accept (TokenType.INTERR);
+                       }
                }
-
+                       
                // array brackets in types are read from right to left,
                // this is more logical, especially when nullable arrays
                // or pointers are involved
@@ -462,8 +496,7 @@ public class Vala.Parser : CodeVisitor {
                        } while (accept (TokenType.COMMA));
                        expect (TokenType.CLOSE_BRACKET);
 
-                       // arrays contain strong references by default
-                       type.value_owned = true;
+                       type.value_owned = inner_type_owned;
 
                        var array_type = new ArrayType (type, array_rank, get_src (begin));
                        array_type.nullable = accept (TokenType.INTERR);
@@ -499,21 +532,16 @@ public class Vala.Parser : CodeVisitor {
 
                // inline-allocated array
                if (type != null && accept (TokenType.OPEN_BRACKET)) {
-                       int array_length = -1;
+                       Expression array_length = null;
 
                        if (current () != TokenType.CLOSE_BRACKET) {
-                               if (current () != TokenType.INTEGER_LITERAL) {
-                                       throw new ParseError.SYNTAX (get_error ("expected `]' or integer literal"));
-                               }
-
-                               var length_literal = (IntegerLiteral) parse_literal ();
-                               array_length = int.parse (length_literal.value);
+                               array_length = parse_expression ();
                        }
                        expect (TokenType.CLOSE_BRACKET);
 
                        var array_type = new ArrayType (type, 1, get_src (begin));
                        array_type.inline_allocated = true;
-                       if (array_length > 0) {
+                       if (array_length != null) {
                                array_type.fixed_length = true;
                                array_type.length = array_length;
                        }
@@ -815,6 +843,12 @@ public class Vala.Parser : CodeVisitor {
        Expression parse_object_or_array_creation_expression () throws ParseError {
                var begin = get_location ();
                expect (TokenType.NEW);
+
+               if (is_inner_array_type ()) {
+                       rollback (begin);
+                       return parse_array_creation_expression ();
+               }
+
                var member = parse_member_name ();
                if (accept (TokenType.OPEN_PARENS)) {
                        var expr = parse_object_creation_expression (begin, member);
@@ -856,6 +890,13 @@ public class Vala.Parser : CodeVisitor {
        Expression parse_array_creation_expression () throws ParseError {
                var begin = get_location ();
                expect (TokenType.NEW);
+
+               bool inner_array_type = is_inner_array_type ();
+               if (inner_array_type) {
+                       expect (TokenType.OPEN_PARENS);
+                       expect (TokenType.UNOWNED);
+               }
+               
                var member = parse_member_name ();
                DataType element_type = UnresolvedType.new_from_expression (member);
                bool is_pointer_type = false;
@@ -868,6 +909,14 @@ public class Vala.Parser : CodeVisitor {
                                element_type.nullable = true;
                        }
                }
+               
+               if (inner_array_type) {
+                       expect (TokenType.CLOSE_PARENS);
+                       element_type.value_owned = false;
+               } else {
+                       element_type.value_owned = true;
+               }
+               
                expect (TokenType.OPEN_BRACKET);
 
                bool size_specified = false;
@@ -1003,6 +1052,9 @@ public class Vala.Parser : CodeVisitor {
                case TokenType.OPEN_PARENS:
                        next ();
                        switch (current ()) {
+                       case TokenType.UNOWNED:
+                               // inner array type
+                               break;
                        case TokenType.OWNED:
                                // (owned) foo
                                next ();
@@ -1013,36 +1065,39 @@ public class Vala.Parser : CodeVisitor {
                                break;
                        case TokenType.VOID:
                        case TokenType.DYNAMIC:
+                       case TokenType.OPEN_PARENS:
                        case TokenType.IDENTIFIER:
-                               var type = parse_type (true, false);
-                               if (accept (TokenType.CLOSE_PARENS)) {
-                                       // check follower to decide whether to create cast expression
-                                       switch (current ()) {
-                                       case TokenType.OP_NEG:
-                                       case TokenType.TILDE:
-                                       case TokenType.OPEN_PARENS:
-                                       case TokenType.TRUE:
-                                       case TokenType.FALSE:
-                                       case TokenType.INTEGER_LITERAL:
-                                       case TokenType.REAL_LITERAL:
-                                       case TokenType.CHARACTER_LITERAL:
-                                       case TokenType.STRING_LITERAL:
-                                       case TokenType.TEMPLATE_STRING_LITERAL:
-                                       case TokenType.VERBATIM_STRING_LITERAL:
-                                       case TokenType.REGEX_LITERAL:
-                                       case TokenType.NULL:
-                                       case TokenType.THIS:
-                                       case TokenType.BASE:
-                                       case TokenType.NEW:
-                                       case TokenType.YIELD:
-                                       case TokenType.SIZEOF:
-                                       case TokenType.TYPEOF:
-                                       case TokenType.IDENTIFIER:
-                                       case TokenType.PARAMS:
-                                               var inner = parse_unary_expression ();
-                                               return new CastExpression (inner, type, get_src (begin), false);
-                                       default:
-                                               break;
+                               if (current () != TokenType.OPEN_PARENS || is_inner_array_type ()) {
+                                       var type = parse_type (true, false);
+                                       if (accept (TokenType.CLOSE_PARENS)) {
+                                               // check follower to decide whether to create cast expression
+                                               switch (current ()) {
+                                               case TokenType.OP_NEG:
+                                               case TokenType.TILDE:
+                                               case TokenType.OPEN_PARENS:
+                                               case TokenType.TRUE:
+                                               case TokenType.FALSE:
+                                               case TokenType.INTEGER_LITERAL:
+                                               case TokenType.REAL_LITERAL:
+                                               case TokenType.CHARACTER_LITERAL:
+                                               case TokenType.STRING_LITERAL:
+                                               case TokenType.TEMPLATE_STRING_LITERAL:
+                                               case TokenType.VERBATIM_STRING_LITERAL:
+                                               case TokenType.REGEX_LITERAL:
+                                               case TokenType.NULL:
+                                               case TokenType.THIS:
+                                               case TokenType.BASE:
+                                               case TokenType.NEW:
+                                               case TokenType.YIELD:
+                                               case TokenType.SIZEOF:
+                                               case TokenType.TYPEOF:
+                                               case TokenType.IDENTIFIER:
+                                               case TokenType.PARAMS:
+                                                       var inner = parse_unary_expression ();
+                                                       return new CastExpression (inner, type, get_src (begin), false);
+                                               default:
+                                                       break;
+                                               }
                                        }
                                }
                                break;
@@ -1506,7 +1561,6 @@ public class Vala.Parser : CodeVisitor {
                                case TokenType.OP_DEC:
                                case TokenType.BASE:
                                case TokenType.THIS:
-                               case TokenType.OPEN_PARENS:
                                case TokenType.STAR:
                                case TokenType.NEW:
                                        stmt = parse_expression_statement ();
@@ -1536,6 +1590,10 @@ public class Vala.Parser : CodeVisitor {
        }
 
        bool is_expression () throws ParseError {
+               if (current () == TokenType.OPEN_PARENS) {
+                       return !is_inner_array_type ();
+               }
+               
                var begin = get_location ();
 
                // decide between declaration and expression statement
@@ -2174,7 +2232,6 @@ public class Vala.Parser : CodeVisitor {
                case TokenType.OP_DEC:
                case TokenType.BASE:
                case TokenType.THIS:
-               case TokenType.OPEN_PARENS:
                case TokenType.STAR:
                case TokenType.NEW:
                        // statement
@@ -2508,21 +2565,26 @@ public class Vala.Parser : CodeVisitor {
 
        void parse_field_declaration (Symbol parent, List<Attribute>? attrs) throws ParseError {
                var begin = get_location ();
-               var access = parse_access_modifier ();
+               var access = parse_access_modifier ((parent is Struct) ? SymbolAccessibility.PUBLIC : SymbolAccessibility.PRIVATE);
                var flags = parse_member_declaration_modifiers ();
                var type = parse_type (true, true);
                string id = parse_identifier ();
-
                type = parse_inline_array_type (type);
 
                var f = new Field (id, type, null, get_src (begin), comment);
                f.access = access;
+
                set_attributes (f, attrs);
                if (ModifierFlags.STATIC in flags) {
                        f.binding = MemberBinding.STATIC;
                } else if (ModifierFlags.CLASS in flags) {
                        f.binding = MemberBinding.CLASS;
                }
+
+               if (parent is Struct && f.access != SymbolAccessibility.PUBLIC && f.binding == MemberBinding.INSTANCE) {
+                       Report.warning (f.source_reference, "accessibility of struct fields can only be `public`");
+               }
+
                if (ModifierFlags.ABSTRACT in flags
                    || ModifierFlags.VIRTUAL in flags
                    || ModifierFlags.OVERRIDE in flags) {
@@ -2563,9 +2625,12 @@ public class Vala.Parser : CodeVisitor {
                var access = parse_access_modifier ();
                var flags = parse_member_declaration_modifiers ();
                var type = parse_type (true, false);
-               string id = parse_identifier ();
+               var sym = parse_symbol_name ();
                var type_param_list = parse_type_parameter_list ();
-               var method = new Method (id, type, get_src (begin), comment);
+               var method = new Method (sym.name, type, get_src (begin), comment);
+               if (sym.inner != null) {
+                       method.base_interface_type = new UnresolvedType.from_symbol (sym.inner, sym.inner.source_reference);
+               }
                method.access = access;
                set_attributes (method, attrs);
                foreach (TypeParameter type_param in type_param_list) {
index 735545c..ed05960 100644 (file)
@@ -339,7 +339,7 @@ void vala_value_take_phi_function (GValue* value, gpointer v_object) {
 
 static void vala_phi_function_class_init (ValaPhiFunctionClass * klass) {
        vala_phi_function_parent_class = g_type_class_peek_parent (klass);
-       VALA_PHI_FUNCTION_CLASS (klass)->finalize = vala_phi_function_finalize;
+       ((ValaPhiFunctionClass *) klass)->finalize = vala_phi_function_finalize;
        g_type_class_add_private (klass, sizeof (ValaPhiFunctionPrivate));
 }
 
@@ -353,6 +353,7 @@ static void vala_phi_function_instance_init (ValaPhiFunction * self) {
 static void vala_phi_function_finalize (ValaPhiFunction* obj) {
        ValaPhiFunction * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_PHI_FUNCTION, ValaPhiFunction);
+       g_signal_handlers_destroy (self);
        _vala_code_node_unref0 (self->priv->_original_variable);
        _vala_iterable_unref0 (self->priv->_operands);
 }
index 33a4b50..e007e53 100644 (file)
@@ -582,15 +582,15 @@ void vala_pointer_indirection_set_inner (ValaPointerIndirection* self, ValaExpre
 
 static void vala_pointer_indirection_class_init (ValaPointerIndirectionClass * klass) {
        vala_pointer_indirection_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_pointer_indirection_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_pointer_indirection_finalize;
        g_type_class_add_private (klass, sizeof (ValaPointerIndirectionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_pointer_indirection_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_pointer_indirection_real_replace_expression;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_pointer_indirection_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_pointer_indirection_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_pointer_indirection_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_pointer_indirection_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_pointer_indirection_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_pointer_indirection_real_accept;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_pointer_indirection_real_replace_expression;
+       ((ValaExpressionClass *) klass)->is_pure = vala_pointer_indirection_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_pointer_indirection_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_pointer_indirection_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_pointer_indirection_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_pointer_indirection_real_get_used_variables;
 }
 
 
index 73cef6e..0bd95d3 100644 (file)
@@ -1875,19 +1875,19 @@ void vala_pointer_type_set_base_type (ValaPointerType* self, ValaDataType* value
 
 static void vala_pointer_type_class_init (ValaPointerTypeClass * klass) {
        vala_pointer_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_pointer_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_pointer_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaPointerTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->to_qualified_string = vala_pointer_type_real_to_qualified_string;
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_pointer_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->compatible = vala_pointer_type_real_compatible;
-       VALA_DATA_TYPE_CLASS (klass)->get_member = vala_pointer_type_real_get_member;
-       VALA_DATA_TYPE_CLASS (klass)->get_pointer_member = vala_pointer_type_real_get_pointer_member;
-       VALA_DATA_TYPE_CLASS (klass)->is_accessible = vala_pointer_type_real_is_accessible;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_pointer_type_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_pointer_type_real_replace_type;
-       VALA_DATA_TYPE_CLASS (klass)->is_disposable = vala_pointer_type_real_is_disposable;
-       VALA_DATA_TYPE_CLASS (klass)->get_actual_type = vala_pointer_type_real_get_actual_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_pointer_type_real_check;
+       ((ValaDataTypeClass *) klass)->to_qualified_string = vala_pointer_type_real_to_qualified_string;
+       ((ValaDataTypeClass *) klass)->copy = vala_pointer_type_real_copy;
+       ((ValaDataTypeClass *) klass)->compatible = vala_pointer_type_real_compatible;
+       ((ValaDataTypeClass *) klass)->get_member = vala_pointer_type_real_get_member;
+       ((ValaDataTypeClass *) klass)->get_pointer_member = vala_pointer_type_real_get_pointer_member;
+       ((ValaDataTypeClass *) klass)->is_accessible = vala_pointer_type_real_is_accessible;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_pointer_type_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_pointer_type_real_replace_type;
+       ((ValaDataTypeClass *) klass)->is_disposable = vala_pointer_type_real_is_disposable;
+       ((ValaDataTypeClass *) klass)->get_actual_type = vala_pointer_type_real_get_actual_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_pointer_type_real_check;
 }
 
 
index 6bde1b0..1e186b6 100644 (file)
@@ -951,15 +951,15 @@ void vala_postfix_expression_set_increment (ValaPostfixExpression* self, gboolea
 
 static void vala_postfix_expression_class_init (ValaPostfixExpressionClass * klass) {
        vala_postfix_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_postfix_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_postfix_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaPostfixExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_postfix_expression_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_postfix_expression_real_accept_children;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_postfix_expression_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_postfix_expression_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_postfix_expression_real_get_used_variables;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_postfix_expression_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_postfix_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_postfix_expression_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_postfix_expression_real_accept_children;
+       ((ValaExpressionClass *) klass)->is_pure = vala_postfix_expression_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_postfix_expression_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_postfix_expression_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->check = vala_postfix_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_postfix_expression_real_emit;
 }
 
 
index 63bb446..89f7a98 100644 (file)
@@ -2324,13 +2324,13 @@ void vala_property_set_initializer (ValaProperty* self, ValaExpression* value) {
 
 static void vala_property_class_init (ValaPropertyClass * klass) {
        vala_property_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_property_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_property_finalize;
        g_type_class_add_private (klass, sizeof (ValaPropertyPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_property_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_property_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_property_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_property_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_property_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_property_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_property_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_property_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_property_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->check = vala_property_real_check;
 }
 
 
index 34ada5d..00fbb71 100644 (file)
@@ -356,6 +356,29 @@ typedef struct _ValaCommentClass ValaCommentClass;
 
 typedef struct _ValaLocalVariable ValaLocalVariable;
 typedef struct _ValaLocalVariableClass ValaLocalVariableClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+#define VALA_TYPE_VOID_TYPE (vala_void_type_get_type ())
+#define VALA_VOID_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VOID_TYPE, ValaVoidType))
+#define VALA_VOID_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VOID_TYPE, ValaVoidTypeClass))
+#define VALA_IS_VOID_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_VOID_TYPE))
+#define VALA_IS_VOID_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_VOID_TYPE))
+#define VALA_VOID_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_VOID_TYPE, ValaVoidTypeClass))
+
+typedef struct _ValaVoidType ValaVoidType;
+typedef struct _ValaVoidTypeClass ValaVoidTypeClass;
+
+#define VALA_TYPE_SCOPE (vala_scope_get_type ())
+#define VALA_SCOPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SCOPE, ValaScope))
+#define VALA_SCOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SCOPE, ValaScopeClass))
+#define VALA_IS_SCOPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SCOPE))
+#define VALA_IS_SCOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SCOPE))
+#define VALA_SCOPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SCOPE, ValaScopeClass))
+
+typedef struct _ValaScope ValaScope;
+typedef struct _ValaScopeClass ValaScopeClass;
+
+#define VALA_TYPE_MEMBER_BINDING (vala_member_binding_get_type ())
 
 #define VALA_TYPE_SEMANTIC_ANALYZER (vala_semantic_analyzer_get_type ())
 #define VALA_SEMANTIC_ANALYZER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SEMANTIC_ANALYZER, ValaSemanticAnalyzer))
@@ -378,7 +401,6 @@ typedef struct _ValaSemanticAnalyzerClass ValaSemanticAnalyzerClass;
 
 typedef struct _ValaMemberAccess ValaMemberAccess;
 typedef struct _ValaMemberAccessClass ValaMemberAccessClass;
-#define _g_free0(var) (var = (g_free (var), NULL))
 
 #define VALA_TYPE_STATEMENT (vala_statement_get_type ())
 #define VALA_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_STATEMENT, ValaStatement))
@@ -430,16 +452,6 @@ typedef struct _ValaAssignmentClass ValaAssignmentClass;
 typedef struct _ValaExpressionStatement ValaExpressionStatement;
 typedef struct _ValaExpressionStatementClass ValaExpressionStatementClass;
 
-#define VALA_TYPE_SCOPE (vala_scope_get_type ())
-#define VALA_SCOPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SCOPE, ValaScope))
-#define VALA_SCOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SCOPE, ValaScopeClass))
-#define VALA_IS_SCOPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SCOPE))
-#define VALA_IS_SCOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SCOPE))
-#define VALA_SCOPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SCOPE, ValaScopeClass))
-
-typedef struct _ValaScope ValaScope;
-typedef struct _ValaScopeClass ValaScopeClass;
-
 #define VALA_TYPE_REFERENCE_TYPE (vala_reference_type_get_type ())
 #define VALA_REFERENCE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_REFERENCE_TYPE, ValaReferenceType))
 #define VALA_REFERENCE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_REFERENCE_TYPE, ValaReferenceTypeClass))
@@ -543,6 +555,12 @@ typedef enum  {
 } ValaSymbolAccessibility;
 
 typedef enum  {
+       VALA_MEMBER_BINDING_INSTANCE,
+       VALA_MEMBER_BINDING_CLASS,
+       VALA_MEMBER_BINDING_STATIC
+} ValaMemberBinding;
+
+typedef enum  {
        VALA_SOURCE_FILE_TYPE_NONE,
        VALA_SOURCE_FILE_TYPE_SOURCE,
        VALA_SOURCE_FILE_TYPE_PACKAGE,
@@ -654,6 +672,38 @@ void vala_code_node_accept (ValaCodeNode* self, ValaCodeVisitor* visitor);
 GType vala_local_variable_get_type (void) G_GNUC_CONST;
 ValaLocalVariable* vala_subroutine_get_result_var (ValaSubroutine* self);
 ValaBlock* vala_subroutine_get_body (ValaSubroutine* self);
+ValaMethod* vala_property_accessor_get_method (ValaPropertyAccessor* self);
+gboolean vala_property_accessor_get_readable (ValaPropertyAccessor* self);
+ValaProperty* vala_property_accessor_get_prop (ValaPropertyAccessor* self);
+const gchar* vala_symbol_get_name (ValaSymbol* self);
+ValaSourceReference* vala_code_node_get_source_reference (ValaCodeNode* self);
+ValaComment* vala_symbol_get_comment (ValaSymbol* self);
+ValaMethod* vala_method_new (const gchar* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment);
+ValaMethod* vala_method_construct (GType object_type, const gchar* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment);
+gboolean vala_property_accessor_get_writable (ValaPropertyAccessor* self);
+ValaVoidType* vala_void_type_new (ValaSourceReference* source_reference);
+ValaVoidType* vala_void_type_construct (GType object_type, ValaSourceReference* source_reference);
+GType vala_void_type_get_type (void) G_GNUC_CONST;
+void vala_method_add_parameter (ValaMethod* self, ValaParameter* param);
+ValaParameter* vala_property_accessor_get_value_parameter (ValaPropertyAccessor* self);
+ValaParameter* vala_parameter_copy (ValaParameter* self);
+gpointer vala_scope_ref (gpointer instance);
+void vala_scope_unref (gpointer instance);
+GParamSpec* vala_param_spec_scope (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void vala_value_set_scope (GValue* value, gpointer v_object);
+void vala_value_take_scope (GValue* value, gpointer v_object);
+gpointer vala_value_get_scope (const GValue* value);
+GType vala_scope_get_type (void) G_GNUC_CONST;
+ValaScope* vala_symbol_get_owner (ValaSymbol* self);
+void vala_symbol_set_owner (ValaSymbol* self, ValaScope* value);
+ValaSymbolAccessibility vala_symbol_get_access (ValaSymbol* self);
+GType vala_member_binding_get_type (void) G_GNUC_CONST;
+ValaMemberBinding vala_property_get_binding (ValaProperty* self);
+void vala_method_set_binding (ValaMethod* self, ValaMemberBinding value);
+gboolean vala_property_get_is_abstract (ValaProperty* self);
+void vala_method_set_is_abstract (ValaMethod* self, gboolean value);
+gboolean vala_property_get_is_virtual (ValaProperty* self);
+void vala_method_set_is_virtual (ValaMethod* self, gboolean value);
 static gboolean vala_property_accessor_real_check (ValaCodeNode* base, ValaCodeContext* context);
 gboolean vala_code_node_get_checked (ValaCodeNode* self);
 gboolean vala_code_node_get_error (ValaCodeNode* self);
@@ -664,22 +714,21 @@ GType vala_semantic_analyzer_get_type (void) G_GNUC_CONST;
 ValaSemanticAnalyzer* vala_code_context_get_analyzer (ValaCodeContext* self);
 ValaSymbol* vala_semantic_analyzer_get_current_symbol (ValaSemanticAnalyzer* self);
 void vala_semantic_analyzer_set_current_symbol (ValaSemanticAnalyzer* self, ValaSymbol* value);
-ValaProperty* vala_property_accessor_get_prop (ValaPropertyAccessor* self);
+gboolean vala_property_accessor_get_construction (ValaPropertyAccessor* self);
+ValaParameter* vala_parameter_new (const gchar* name, ValaDataType* variable_type, ValaSourceReference* source_reference);
+ValaParameter* vala_parameter_construct (GType object_type, const gchar* name, ValaDataType* variable_type, ValaSourceReference* source_reference);
+void vala_property_accessor_set_value_parameter (ValaPropertyAccessor* self, ValaParameter* value);
 GType vala_source_file_type_get_type (void) G_GNUC_CONST;
 ValaSourceFileType vala_symbol_get_source_type (ValaSymbol* self);
 gboolean vala_property_get_interface_only (ValaProperty* self);
-gboolean vala_property_get_is_abstract (ValaProperty* self);
 ValaSymbol* vala_symbol_get_parent_symbol (ValaSymbol* self);
 void vala_report_error (ValaSourceReference* source, const gchar* message);
-ValaSourceReference* vala_code_node_get_source_reference (ValaCodeNode* self);
 void vala_property_accessor_set_automatic_body (ValaPropertyAccessor* self, gboolean value);
 ValaBlock* vala_block_new (ValaSourceReference* source_reference);
 ValaBlock* vala_block_construct (GType object_type, ValaSourceReference* source_reference);
 GType vala_member_access_get_type (void) G_GNUC_CONST;
-const gchar* vala_symbol_get_name (ValaSymbol* self);
 ValaMemberAccess* vala_member_access_new_simple (const gchar* member_name, ValaSourceReference* source_reference);
 ValaMemberAccess* vala_member_access_construct_simple (GType object_type, const gchar* member_name, ValaSourceReference* source_reference);
-gboolean vala_property_accessor_get_readable (ValaPropertyAccessor* self);
 GType vala_statement_get_type (void) G_GNUC_CONST;
 void vala_block_add_statement (ValaBlock* self, ValaStatement* stmt);
 ValaReturnStatement* vala_return_statement_new (ValaExpression* return_expression, ValaSourceReference* source_reference);
@@ -696,21 +745,8 @@ ValaAssignment* vala_assignment_construct (GType object_type, ValaExpression* le
 ValaExpressionStatement* vala_expression_statement_new (ValaExpression* expression, ValaSourceReference* source_reference);
 ValaExpressionStatement* vala_expression_statement_construct (GType object_type, ValaExpression* expression, ValaSourceReference* source_reference);
 GType vala_expression_statement_get_type (void) G_GNUC_CONST;
-gboolean vala_property_accessor_get_writable (ValaPropertyAccessor* self);
-gboolean vala_property_accessor_get_construction (ValaPropertyAccessor* self);
-ValaParameter* vala_parameter_new (const gchar* name, ValaDataType* variable_type, ValaSourceReference* source_reference);
-ValaParameter* vala_parameter_construct (GType object_type, const gchar* name, ValaDataType* variable_type, ValaSourceReference* source_reference);
-void vala_property_accessor_set_value_parameter (ValaPropertyAccessor* self, ValaParameter* value);
-gpointer vala_scope_ref (gpointer instance);
-void vala_scope_unref (gpointer instance);
-GParamSpec* vala_param_spec_scope (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
-void vala_value_set_scope (GValue* value, gpointer v_object);
-void vala_value_take_scope (GValue* value, gpointer v_object);
-gpointer vala_value_get_scope (const GValue* value);
-GType vala_scope_get_type (void) G_GNUC_CONST;
 ValaScope* vala_symbol_get_scope (ValaSymbol* self);
 void vala_scope_add (ValaScope* self, const gchar* name, ValaSymbol* sym);
-ValaParameter* vala_property_accessor_get_value_parameter (ValaPropertyAccessor* self);
 ValaList* vala_code_node_get_error_types (ValaCodeNode* self);
 GType vala_reference_type_get_type (void) G_GNUC_CONST;
 GType vala_error_type_get_type (void) G_GNUC_CONST;
@@ -815,6 +851,153 @@ static void vala_property_accessor_real_accept_children (ValaCodeNode* base, Val
 }
 
 
+/**
+ * Get the method representing this property accessor
+ * @return   null if the accessor is neither readable nor writable
+ */
+ValaMethod* vala_property_accessor_get_method (ValaPropertyAccessor* self) {
+       ValaMethod* result = NULL;
+       ValaMethod* m = NULL;
+       gboolean _tmp0_ = FALSE;
+       ValaMethod* _tmp32_ = NULL;
+       g_return_val_if_fail (self != NULL, NULL);
+       m = NULL;
+       _tmp0_ = self->priv->_readable;
+       if (_tmp0_) {
+               ValaProperty* _tmp1_ = NULL;
+               ValaProperty* _tmp2_ = NULL;
+               const gchar* _tmp3_ = NULL;
+               const gchar* _tmp4_ = NULL;
+               gchar* _tmp5_ = NULL;
+               gchar* _tmp6_ = NULL;
+               ValaDataType* _tmp7_ = NULL;
+               ValaDataType* _tmp8_ = NULL;
+               ValaSourceReference* _tmp9_ = NULL;
+               ValaSourceReference* _tmp10_ = NULL;
+               ValaComment* _tmp11_ = NULL;
+               ValaComment* _tmp12_ = NULL;
+               ValaMethod* _tmp13_ = NULL;
+               _tmp1_ = vala_property_accessor_get_prop (self);
+               _tmp2_ = _tmp1_;
+               _tmp3_ = vala_symbol_get_name ((ValaSymbol*) _tmp2_);
+               _tmp4_ = _tmp3_;
+               _tmp5_ = g_strconcat ("get_", _tmp4_, NULL);
+               _tmp6_ = _tmp5_;
+               _tmp7_ = vala_property_accessor_get_value_type (self);
+               _tmp8_ = _tmp7_;
+               _tmp9_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp10_ = _tmp9_;
+               _tmp11_ = vala_symbol_get_comment ((ValaSymbol*) self);
+               _tmp12_ = _tmp11_;
+               _tmp13_ = vala_method_new (_tmp6_, _tmp8_, _tmp10_, _tmp12_);
+               _vala_code_node_unref0 (m);
+               m = _tmp13_;
+               _g_free0 (_tmp6_);
+       } else {
+               gboolean _tmp14_ = FALSE;
+               _tmp14_ = self->priv->_writable;
+               if (_tmp14_) {
+                       ValaProperty* _tmp15_ = NULL;
+                       ValaProperty* _tmp16_ = NULL;
+                       const gchar* _tmp17_ = NULL;
+                       const gchar* _tmp18_ = NULL;
+                       gchar* _tmp19_ = NULL;
+                       gchar* _tmp20_ = NULL;
+                       ValaVoidType* _tmp21_ = NULL;
+                       ValaVoidType* _tmp22_ = NULL;
+                       ValaSourceReference* _tmp23_ = NULL;
+                       ValaSourceReference* _tmp24_ = NULL;
+                       ValaComment* _tmp25_ = NULL;
+                       ValaComment* _tmp26_ = NULL;
+                       ValaMethod* _tmp27_ = NULL;
+                       ValaMethod* _tmp28_ = NULL;
+                       ValaParameter* _tmp29_ = NULL;
+                       ValaParameter* _tmp30_ = NULL;
+                       ValaParameter* _tmp31_ = NULL;
+                       _tmp15_ = vala_property_accessor_get_prop (self);
+                       _tmp16_ = _tmp15_;
+                       _tmp17_ = vala_symbol_get_name ((ValaSymbol*) _tmp16_);
+                       _tmp18_ = _tmp17_;
+                       _tmp19_ = g_strconcat ("set_", _tmp18_, NULL);
+                       _tmp20_ = _tmp19_;
+                       _tmp21_ = vala_void_type_new (NULL);
+                       _tmp22_ = _tmp21_;
+                       _tmp23_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                       _tmp24_ = _tmp23_;
+                       _tmp25_ = vala_symbol_get_comment ((ValaSymbol*) self);
+                       _tmp26_ = _tmp25_;
+                       _tmp27_ = vala_method_new (_tmp20_, (ValaDataType*) _tmp22_, _tmp24_, _tmp26_);
+                       _vala_code_node_unref0 (m);
+                       m = _tmp27_;
+                       _vala_code_node_unref0 (_tmp22_);
+                       _g_free0 (_tmp20_);
+                       _tmp28_ = m;
+                       _tmp29_ = self->priv->_value_parameter;
+                       _tmp30_ = vala_parameter_copy (_tmp29_);
+                       _tmp31_ = _tmp30_;
+                       vala_method_add_parameter (_tmp28_, _tmp31_);
+                       _vala_code_node_unref0 (_tmp31_);
+               }
+       }
+       _tmp32_ = m;
+       if (_tmp32_ != NULL) {
+               ValaMethod* _tmp33_ = NULL;
+               ValaProperty* _tmp34_ = NULL;
+               ValaProperty* _tmp35_ = NULL;
+               ValaScope* _tmp36_ = NULL;
+               ValaScope* _tmp37_ = NULL;
+               ValaMethod* _tmp38_ = NULL;
+               ValaSymbolAccessibility _tmp39_ = 0;
+               ValaSymbolAccessibility _tmp40_ = 0;
+               ValaMethod* _tmp41_ = NULL;
+               ValaProperty* _tmp42_ = NULL;
+               ValaProperty* _tmp43_ = NULL;
+               ValaMemberBinding _tmp44_ = 0;
+               ValaMemberBinding _tmp45_ = 0;
+               ValaMethod* _tmp46_ = NULL;
+               ValaProperty* _tmp47_ = NULL;
+               ValaProperty* _tmp48_ = NULL;
+               gboolean _tmp49_ = FALSE;
+               gboolean _tmp50_ = FALSE;
+               ValaMethod* _tmp51_ = NULL;
+               ValaProperty* _tmp52_ = NULL;
+               ValaProperty* _tmp53_ = NULL;
+               gboolean _tmp54_ = FALSE;
+               gboolean _tmp55_ = FALSE;
+               _tmp33_ = m;
+               _tmp34_ = vala_property_accessor_get_prop (self);
+               _tmp35_ = _tmp34_;
+               _tmp36_ = vala_symbol_get_owner ((ValaSymbol*) _tmp35_);
+               _tmp37_ = _tmp36_;
+               vala_symbol_set_owner ((ValaSymbol*) _tmp33_, _tmp37_);
+               _tmp38_ = m;
+               _tmp39_ = vala_symbol_get_access ((ValaSymbol*) self);
+               _tmp40_ = _tmp39_;
+               vala_symbol_set_access ((ValaSymbol*) _tmp38_, _tmp40_);
+               _tmp41_ = m;
+               _tmp42_ = vala_property_accessor_get_prop (self);
+               _tmp43_ = _tmp42_;
+               _tmp44_ = vala_property_get_binding (_tmp43_);
+               _tmp45_ = _tmp44_;
+               vala_method_set_binding (_tmp41_, _tmp45_);
+               _tmp46_ = m;
+               _tmp47_ = vala_property_accessor_get_prop (self);
+               _tmp48_ = _tmp47_;
+               _tmp49_ = vala_property_get_is_abstract (_tmp48_);
+               _tmp50_ = _tmp49_;
+               vala_method_set_is_abstract (_tmp46_, _tmp50_);
+               _tmp51_ = m;
+               _tmp52_ = vala_property_accessor_get_prop (self);
+               _tmp53_ = _tmp52_;
+               _tmp54_ = vala_property_get_is_virtual (_tmp53_);
+               _tmp55_ = _tmp54_;
+               vala_method_set_is_virtual (_tmp51_, _tmp55_);
+       }
+       result = m;
+       return result;
+}
+
+
 static gpointer _vala_code_node_ref0 (gpointer self) {
        return self ? vala_code_node_ref (self) : NULL;
 }
@@ -839,18 +1022,20 @@ static gboolean vala_property_accessor_real_check (ValaCodeNode* base, ValaCodeC
        ValaCodeContext* _tmp14_ = NULL;
        ValaSemanticAnalyzer* _tmp15_ = NULL;
        ValaSemanticAnalyzer* _tmp16_ = NULL;
-       ValaProperty* _tmp17_ = NULL;
-       ValaProperty* _tmp18_ = NULL;
-       ValaSourceFileType _tmp19_ = 0;
-       ValaSourceFileType _tmp20_ = 0;
-       ValaBlock* _tmp82_ = NULL;
-       ValaBlock* _tmp83_ = NULL;
-       ValaCodeContext* _tmp127_ = NULL;
-       ValaSemanticAnalyzer* _tmp128_ = NULL;
-       ValaSemanticAnalyzer* _tmp129_ = NULL;
-       ValaSymbol* _tmp130_ = NULL;
-       gboolean _tmp131_ = FALSE;
-       gboolean _tmp132_ = FALSE;
+       gboolean _tmp17_ = FALSE;
+       gboolean _tmp18_ = FALSE;
+       ValaProperty* _tmp26_ = NULL;
+       ValaProperty* _tmp27_ = NULL;
+       ValaSourceFileType _tmp28_ = 0;
+       ValaSourceFileType _tmp29_ = 0;
+       ValaBlock* _tmp91_ = NULL;
+       ValaBlock* _tmp92_ = NULL;
+       ValaCodeContext* _tmp130_ = NULL;
+       ValaSemanticAnalyzer* _tmp131_ = NULL;
+       ValaSemanticAnalyzer* _tmp132_ = NULL;
+       ValaSymbol* _tmp133_ = NULL;
+       gboolean _tmp134_ = FALSE;
+       gboolean _tmp135_ = FALSE;
        self = (ValaPropertyAccessor*) base;
        g_return_val_if_fail (context != NULL, FALSE);
        _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
@@ -884,306 +1069,316 @@ static gboolean vala_property_accessor_real_check (ValaCodeNode* base, ValaCodeC
        _tmp15_ = vala_code_context_get_analyzer (_tmp14_);
        _tmp16_ = _tmp15_;
        vala_semantic_analyzer_set_current_symbol (_tmp16_, (ValaSymbol*) self);
-       _tmp17_ = vala_property_accessor_get_prop (self);
-       _tmp18_ = _tmp17_;
-       _tmp19_ = vala_symbol_get_source_type ((ValaSymbol*) _tmp18_);
-       _tmp20_ = _tmp19_;
-       if (_tmp20_ == VALA_SOURCE_FILE_TYPE_SOURCE) {
-               gboolean _tmp21_ = FALSE;
-               gboolean _tmp22_ = FALSE;
-               ValaBlock* _tmp23_ = NULL;
-               ValaBlock* _tmp24_ = NULL;
-               _tmp23_ = vala_subroutine_get_body ((ValaSubroutine*) self);
-               _tmp24_ = _tmp23_;
-               if (_tmp24_ == NULL) {
-                       ValaProperty* _tmp25_ = NULL;
-                       ValaProperty* _tmp26_ = NULL;
-                       gboolean _tmp27_ = FALSE;
-                       gboolean _tmp28_ = FALSE;
-                       _tmp25_ = vala_property_accessor_get_prop (self);
-                       _tmp26_ = _tmp25_;
-                       _tmp27_ = vala_property_get_interface_only (_tmp26_);
-                       _tmp28_ = _tmp27_;
-                       _tmp22_ = !_tmp28_;
+       _tmp18_ = self->priv->_writable;
+       if (_tmp18_) {
+               _tmp17_ = TRUE;
+       } else {
+               gboolean _tmp19_ = FALSE;
+               _tmp19_ = self->priv->_construction;
+               _tmp17_ = _tmp19_;
+       }
+       if (_tmp17_) {
+               ValaDataType* _tmp20_ = NULL;
+               ValaDataType* _tmp21_ = NULL;
+               ValaSourceReference* _tmp22_ = NULL;
+               ValaSourceReference* _tmp23_ = NULL;
+               ValaParameter* _tmp24_ = NULL;
+               ValaParameter* _tmp25_ = NULL;
+               _tmp20_ = vala_property_accessor_get_value_type (self);
+               _tmp21_ = _tmp20_;
+               _tmp22_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp23_ = _tmp22_;
+               _tmp24_ = vala_parameter_new ("value", _tmp21_, _tmp23_);
+               _tmp25_ = _tmp24_;
+               vala_property_accessor_set_value_parameter (self, _tmp25_);
+               _vala_code_node_unref0 (_tmp25_);
+       }
+       _tmp26_ = vala_property_accessor_get_prop (self);
+       _tmp27_ = _tmp26_;
+       _tmp28_ = vala_symbol_get_source_type ((ValaSymbol*) _tmp27_);
+       _tmp29_ = _tmp28_;
+       if (_tmp29_ == VALA_SOURCE_FILE_TYPE_SOURCE) {
+               gboolean _tmp30_ = FALSE;
+               gboolean _tmp31_ = FALSE;
+               ValaBlock* _tmp32_ = NULL;
+               ValaBlock* _tmp33_ = NULL;
+               _tmp32_ = vala_subroutine_get_body ((ValaSubroutine*) self);
+               _tmp33_ = _tmp32_;
+               if (_tmp33_ == NULL) {
+                       ValaProperty* _tmp34_ = NULL;
+                       ValaProperty* _tmp35_ = NULL;
+                       gboolean _tmp36_ = FALSE;
+                       gboolean _tmp37_ = FALSE;
+                       _tmp34_ = vala_property_accessor_get_prop (self);
+                       _tmp35_ = _tmp34_;
+                       _tmp36_ = vala_property_get_interface_only (_tmp35_);
+                       _tmp37_ = _tmp36_;
+                       _tmp31_ = !_tmp37_;
                } else {
-                       _tmp22_ = FALSE;
+                       _tmp31_ = FALSE;
                }
-               if (_tmp22_) {
-                       ValaProperty* _tmp29_ = NULL;
-                       ValaProperty* _tmp30_ = NULL;
-                       gboolean _tmp31_ = FALSE;
-                       gboolean _tmp32_ = FALSE;
-                       _tmp29_ = vala_property_accessor_get_prop (self);
-                       _tmp30_ = _tmp29_;
-                       _tmp31_ = vala_property_get_is_abstract (_tmp30_);
-                       _tmp32_ = _tmp31_;
-                       _tmp21_ = !_tmp32_;
+               if (_tmp31_) {
+                       ValaProperty* _tmp38_ = NULL;
+                       ValaProperty* _tmp39_ = NULL;
+                       gboolean _tmp40_ = FALSE;
+                       gboolean _tmp41_ = FALSE;
+                       _tmp38_ = vala_property_accessor_get_prop (self);
+                       _tmp39_ = _tmp38_;
+                       _tmp40_ = vala_property_get_is_abstract (_tmp39_);
+                       _tmp41_ = _tmp40_;
+                       _tmp30_ = !_tmp41_;
                } else {
-                       _tmp21_ = FALSE;
+                       _tmp30_ = FALSE;
                }
-               if (_tmp21_) {
-                       ValaProperty* _tmp33_ = NULL;
-                       ValaProperty* _tmp34_ = NULL;
-                       ValaSymbol* _tmp35_ = NULL;
-                       ValaSymbol* _tmp36_ = NULL;
-                       ValaSourceReference* _tmp39_ = NULL;
-                       ValaSourceReference* _tmp40_ = NULL;
-                       ValaBlock* _tmp41_ = NULL;
-                       ValaBlock* _tmp42_ = NULL;
-                       ValaMemberAccess* ma = NULL;
+               if (_tmp30_) {
+                       ValaProperty* _tmp42_ = NULL;
                        ValaProperty* _tmp43_ = NULL;
-                       ValaProperty* _tmp44_ = NULL;
-                       const gchar* _tmp45_ = NULL;
-                       const gchar* _tmp46_ = NULL;
-                       gchar* _tmp47_ = NULL;
-                       gchar* _tmp48_ = NULL;
+                       ValaSymbol* _tmp44_ = NULL;
+                       ValaSymbol* _tmp45_ = NULL;
+                       ValaSourceReference* _tmp48_ = NULL;
                        ValaSourceReference* _tmp49_ = NULL;
-                       ValaSourceReference* _tmp50_ = NULL;
-                       ValaMemberAccess* _tmp51_ = NULL;
-                       ValaMemberAccess* _tmp52_ = NULL;
-                       gboolean _tmp53_ = FALSE;
-                       _tmp33_ = vala_property_accessor_get_prop (self);
-                       _tmp34_ = _tmp33_;
-                       _tmp35_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp34_);
-                       _tmp36_ = _tmp35_;
-                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp36_, VALA_TYPE_INTERFACE)) {
-                               ValaSourceReference* _tmp37_ = NULL;
-                               ValaSourceReference* _tmp38_ = NULL;
+                       ValaBlock* _tmp50_ = NULL;
+                       ValaBlock* _tmp51_ = NULL;
+                       ValaMemberAccess* ma = NULL;
+                       ValaProperty* _tmp52_ = NULL;
+                       ValaProperty* _tmp53_ = NULL;
+                       const gchar* _tmp54_ = NULL;
+                       const gchar* _tmp55_ = NULL;
+                       gchar* _tmp56_ = NULL;
+                       gchar* _tmp57_ = NULL;
+                       ValaSourceReference* _tmp58_ = NULL;
+                       ValaSourceReference* _tmp59_ = NULL;
+                       ValaMemberAccess* _tmp60_ = NULL;
+                       ValaMemberAccess* _tmp61_ = NULL;
+                       gboolean _tmp62_ = FALSE;
+                       _tmp42_ = vala_property_accessor_get_prop (self);
+                       _tmp43_ = _tmp42_;
+                       _tmp44_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp43_);
+                       _tmp45_ = _tmp44_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp45_, VALA_TYPE_INTERFACE)) {
+                               ValaSourceReference* _tmp46_ = NULL;
+                               ValaSourceReference* _tmp47_ = NULL;
                                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-                               _tmp37_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp38_ = _tmp37_;
-                               vala_report_error (_tmp38_, "Automatic properties can't be used in interfaces");
+                               _tmp46_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp47_ = _tmp46_;
+                               vala_report_error (_tmp47_, "Automatic properties can't be used in interfaces");
                                result = FALSE;
                                _vala_code_node_unref0 (old_symbol);
                                return result;
                        }
                        vala_property_accessor_set_automatic_body (self, TRUE);
-                       _tmp39_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                       _tmp40_ = _tmp39_;
-                       _tmp41_ = vala_block_new (_tmp40_);
-                       _tmp42_ = _tmp41_;
-                       vala_subroutine_set_body ((ValaSubroutine*) self, _tmp42_);
-                       _vala_code_node_unref0 (_tmp42_);
-                       _tmp43_ = vala_property_accessor_get_prop (self);
-                       _tmp44_ = _tmp43_;
-                       _tmp45_ = vala_symbol_get_name ((ValaSymbol*) _tmp44_);
-                       _tmp46_ = _tmp45_;
-                       _tmp47_ = g_strdup_printf ("_%s", _tmp46_);
-                       _tmp48_ = _tmp47_;
-                       _tmp49_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                       _tmp50_ = _tmp49_;
-                       _tmp51_ = vala_member_access_new_simple (_tmp48_, _tmp50_);
-                       _tmp52_ = _tmp51_;
-                       _g_free0 (_tmp48_);
-                       ma = _tmp52_;
-                       _tmp53_ = self->priv->_readable;
-                       if (_tmp53_) {
-                               ValaBlock* _tmp54_ = NULL;
-                               ValaBlock* _tmp55_ = NULL;
-                               ValaMemberAccess* _tmp56_ = NULL;
-                               ValaSourceReference* _tmp57_ = NULL;
-                               ValaSourceReference* _tmp58_ = NULL;
-                               ValaReturnStatement* _tmp59_ = NULL;
-                               ValaReturnStatement* _tmp60_ = NULL;
-                               _tmp54_ = vala_subroutine_get_body ((ValaSubroutine*) self);
-                               _tmp55_ = _tmp54_;
-                               _tmp56_ = ma;
-                               _tmp57_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp58_ = _tmp57_;
-                               _tmp59_ = vala_return_statement_new ((ValaExpression*) _tmp56_, _tmp58_);
-                               _tmp60_ = _tmp59_;
-                               vala_block_add_statement (_tmp55_, (ValaStatement*) _tmp60_);
-                               _vala_code_node_unref0 (_tmp60_);
+                       _tmp48_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                       _tmp49_ = _tmp48_;
+                       _tmp50_ = vala_block_new (_tmp49_);
+                       _tmp51_ = _tmp50_;
+                       vala_subroutine_set_body ((ValaSubroutine*) self, _tmp51_);
+                       _vala_code_node_unref0 (_tmp51_);
+                       _tmp52_ = vala_property_accessor_get_prop (self);
+                       _tmp53_ = _tmp52_;
+                       _tmp54_ = vala_symbol_get_name ((ValaSymbol*) _tmp53_);
+                       _tmp55_ = _tmp54_;
+                       _tmp56_ = g_strdup_printf ("_%s", _tmp55_);
+                       _tmp57_ = _tmp56_;
+                       _tmp58_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                       _tmp59_ = _tmp58_;
+                       _tmp60_ = vala_member_access_new_simple (_tmp57_, _tmp59_);
+                       _tmp61_ = _tmp60_;
+                       _g_free0 (_tmp57_);
+                       ma = _tmp61_;
+                       _tmp62_ = self->priv->_readable;
+                       if (_tmp62_) {
+                               ValaBlock* _tmp63_ = NULL;
+                               ValaBlock* _tmp64_ = NULL;
+                               ValaMemberAccess* _tmp65_ = NULL;
+                               ValaSourceReference* _tmp66_ = NULL;
+                               ValaSourceReference* _tmp67_ = NULL;
+                               ValaReturnStatement* _tmp68_ = NULL;
+                               ValaReturnStatement* _tmp69_ = NULL;
+                               _tmp63_ = vala_subroutine_get_body ((ValaSubroutine*) self);
+                               _tmp64_ = _tmp63_;
+                               _tmp65_ = ma;
+                               _tmp66_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp67_ = _tmp66_;
+                               _tmp68_ = vala_return_statement_new ((ValaExpression*) _tmp65_, _tmp67_);
+                               _tmp69_ = _tmp68_;
+                               vala_block_add_statement (_tmp64_, (ValaStatement*) _tmp69_);
+                               _vala_code_node_unref0 (_tmp69_);
                        } else {
                                ValaExpression* value = NULL;
-                               ValaSourceReference* _tmp61_ = NULL;
-                               ValaSourceReference* _tmp62_ = NULL;
-                               ValaMemberAccess* _tmp63_ = NULL;
-                               ValaDataType* _tmp64_ = NULL;
-                               ValaDataType* _tmp65_ = NULL;
-                               gboolean _tmp66_ = FALSE;
-                               gboolean _tmp67_ = FALSE;
-                               ValaAssignment* assignment = NULL;
+                               ValaSourceReference* _tmp70_ = NULL;
+                               ValaSourceReference* _tmp71_ = NULL;
                                ValaMemberAccess* _tmp72_ = NULL;
-                               ValaExpression* _tmp73_ = NULL;
-                               ValaSourceReference* _tmp74_ = NULL;
-                               ValaSourceReference* _tmp75_ = NULL;
-                               ValaAssignment* _tmp76_ = NULL;
-                               ValaBlock* _tmp77_ = NULL;
-                               ValaBlock* _tmp78_ = NULL;
-                               ValaAssignment* _tmp79_ = NULL;
-                               ValaExpressionStatement* _tmp80_ = NULL;
-                               ValaExpressionStatement* _tmp81_ = NULL;
-                               _tmp61_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp62_ = _tmp61_;
-                               _tmp63_ = vala_member_access_new_simple ("value", _tmp62_);
-                               value = (ValaExpression*) _tmp63_;
-                               _tmp64_ = vala_property_accessor_get_value_type (self);
-                               _tmp65_ = _tmp64_;
-                               _tmp66_ = vala_data_type_get_value_owned (_tmp65_);
-                               _tmp67_ = _tmp66_;
-                               if (_tmp67_) {
-                                       ValaExpression* _tmp68_ = NULL;
-                                       ValaSourceReference* _tmp69_ = NULL;
-                                       ValaSourceReference* _tmp70_ = NULL;
-                                       ValaReferenceTransferExpression* _tmp71_ = NULL;
-                                       _tmp68_ = value;
-                                       _tmp69_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                                       _tmp70_ = _tmp69_;
-                                       _tmp71_ = vala_reference_transfer_expression_new (_tmp68_, _tmp70_);
+                               ValaDataType* _tmp73_ = NULL;
+                               ValaDataType* _tmp74_ = NULL;
+                               gboolean _tmp75_ = FALSE;
+                               gboolean _tmp76_ = FALSE;
+                               ValaAssignment* assignment = NULL;
+                               ValaMemberAccess* _tmp81_ = NULL;
+                               ValaExpression* _tmp82_ = NULL;
+                               ValaSourceReference* _tmp83_ = NULL;
+                               ValaSourceReference* _tmp84_ = NULL;
+                               ValaAssignment* _tmp85_ = NULL;
+                               ValaBlock* _tmp86_ = NULL;
+                               ValaBlock* _tmp87_ = NULL;
+                               ValaAssignment* _tmp88_ = NULL;
+                               ValaExpressionStatement* _tmp89_ = NULL;
+                               ValaExpressionStatement* _tmp90_ = NULL;
+                               _tmp70_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp71_ = _tmp70_;
+                               _tmp72_ = vala_member_access_new_simple ("value", _tmp71_);
+                               value = (ValaExpression*) _tmp72_;
+                               _tmp73_ = vala_property_accessor_get_value_type (self);
+                               _tmp74_ = _tmp73_;
+                               _tmp75_ = vala_data_type_get_value_owned (_tmp74_);
+                               _tmp76_ = _tmp75_;
+                               if (_tmp76_) {
+                                       ValaExpression* _tmp77_ = NULL;
+                                       ValaSourceReference* _tmp78_ = NULL;
+                                       ValaSourceReference* _tmp79_ = NULL;
+                                       ValaReferenceTransferExpression* _tmp80_ = NULL;
+                                       _tmp77_ = value;
+                                       _tmp78_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                                       _tmp79_ = _tmp78_;
+                                       _tmp80_ = vala_reference_transfer_expression_new (_tmp77_, _tmp79_);
                                        _vala_code_node_unref0 (value);
-                                       value = (ValaExpression*) _tmp71_;
+                                       value = (ValaExpression*) _tmp80_;
                                }
-                               _tmp72_ = ma;
-                               _tmp73_ = value;
-                               _tmp74_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                               _tmp75_ = _tmp74_;
-                               _tmp76_ = vala_assignment_new ((ValaExpression*) _tmp72_, _tmp73_, VALA_ASSIGNMENT_OPERATOR_SIMPLE, _tmp75_);
-                               assignment = _tmp76_;
-                               _tmp77_ = vala_subroutine_get_body ((ValaSubroutine*) self);
-                               _tmp78_ = _tmp77_;
-                               _tmp79_ = assignment;
-                               _tmp80_ = vala_expression_statement_new ((ValaExpression*) _tmp79_, NULL);
-                               _tmp81_ = _tmp80_;
-                               vala_block_add_statement (_tmp78_, (ValaStatement*) _tmp81_);
-                               _vala_code_node_unref0 (_tmp81_);
+                               _tmp81_ = ma;
+                               _tmp82_ = value;
+                               _tmp83_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+                               _tmp84_ = _tmp83_;
+                               _tmp85_ = vala_assignment_new ((ValaExpression*) _tmp81_, _tmp82_, VALA_ASSIGNMENT_OPERATOR_SIMPLE, _tmp84_);
+                               assignment = _tmp85_;
+                               _tmp86_ = vala_subroutine_get_body ((ValaSubroutine*) self);
+                               _tmp87_ = _tmp86_;
+                               _tmp88_ = assignment;
+                               _tmp89_ = vala_expression_statement_new ((ValaExpression*) _tmp88_, NULL);
+                               _tmp90_ = _tmp89_;
+                               vala_block_add_statement (_tmp87_, (ValaStatement*) _tmp90_);
+                               _vala_code_node_unref0 (_tmp90_);
                                _vala_code_node_unref0 (assignment);
                                _vala_code_node_unref0 (value);
                        }
                        _vala_code_node_unref0 (ma);
                }
        }
-       _tmp82_ = vala_subroutine_get_body ((ValaSubroutine*) self);
-       _tmp83_ = _tmp82_;
-       if (_tmp83_ != NULL) {
-               gboolean _tmp84_ = FALSE;
-               gboolean _tmp85_ = FALSE;
-               ValaBlock* _tmp101_ = NULL;
-               ValaBlock* _tmp102_ = NULL;
-               ValaCodeContext* _tmp103_ = NULL;
-               _tmp85_ = self->priv->_writable;
-               if (_tmp85_) {
-                       _tmp84_ = TRUE;
+       _tmp91_ = vala_subroutine_get_body ((ValaSubroutine*) self);
+       _tmp92_ = _tmp91_;
+       if (_tmp92_ != NULL) {
+               gboolean _tmp93_ = FALSE;
+               gboolean _tmp94_ = FALSE;
+               ValaBlock* _tmp104_ = NULL;
+               ValaBlock* _tmp105_ = NULL;
+               ValaCodeContext* _tmp106_ = NULL;
+               _tmp94_ = self->priv->_writable;
+               if (_tmp94_) {
+                       _tmp93_ = TRUE;
                } else {
-                       gboolean _tmp86_ = FALSE;
-                       _tmp86_ = self->priv->_construction;
-                       _tmp84_ = _tmp86_;
+                       gboolean _tmp95_ = FALSE;
+                       _tmp95_ = self->priv->_construction;
+                       _tmp93_ = _tmp95_;
                }
-               if (_tmp84_) {
-                       ValaDataType* _tmp87_ = NULL;
-                       ValaDataType* _tmp88_ = NULL;
-                       ValaSourceReference* _tmp89_ = NULL;
-                       ValaSourceReference* _tmp90_ = NULL;
-                       ValaParameter* _tmp91_ = NULL;
-                       ValaParameter* _tmp92_ = NULL;
-                       ValaBlock* _tmp93_ = NULL;
-                       ValaBlock* _tmp94_ = NULL;
-                       ValaScope* _tmp95_ = NULL;
-                       ValaScope* _tmp96_ = NULL;
-                       ValaParameter* _tmp97_ = NULL;
-                       const gchar* _tmp98_ = NULL;
-                       const gchar* _tmp99_ = NULL;
+               if (_tmp93_) {
+                       ValaBlock* _tmp96_ = NULL;
+                       ValaBlock* _tmp97_ = NULL;
+                       ValaScope* _tmp98_ = NULL;
+                       ValaScope* _tmp99_ = NULL;
                        ValaParameter* _tmp100_ = NULL;
-                       _tmp87_ = vala_property_accessor_get_value_type (self);
-                       _tmp88_ = _tmp87_;
-                       _tmp89_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-                       _tmp90_ = _tmp89_;
-                       _tmp91_ = vala_parameter_new ("value", _tmp88_, _tmp90_);
-                       _tmp92_ = _tmp91_;
-                       vala_property_accessor_set_value_parameter (self, _tmp92_);
-                       _vala_code_node_unref0 (_tmp92_);
-                       _tmp93_ = vala_subroutine_get_body ((ValaSubroutine*) self);
-                       _tmp94_ = _tmp93_;
-                       _tmp95_ = vala_symbol_get_scope ((ValaSymbol*) _tmp94_);
-                       _tmp96_ = _tmp95_;
-                       _tmp97_ = self->priv->_value_parameter;
-                       _tmp98_ = vala_symbol_get_name ((ValaSymbol*) _tmp97_);
+                       const gchar* _tmp101_ = NULL;
+                       const gchar* _tmp102_ = NULL;
+                       ValaParameter* _tmp103_ = NULL;
+                       _tmp96_ = vala_subroutine_get_body ((ValaSubroutine*) self);
+                       _tmp97_ = _tmp96_;
+                       _tmp98_ = vala_symbol_get_scope ((ValaSymbol*) _tmp97_);
                        _tmp99_ = _tmp98_;
                        _tmp100_ = self->priv->_value_parameter;
-                       vala_scope_add (_tmp96_, _tmp99_, (ValaSymbol*) _tmp100_);
+                       _tmp101_ = vala_symbol_get_name ((ValaSymbol*) _tmp100_);
+                       _tmp102_ = _tmp101_;
+                       _tmp103_ = self->priv->_value_parameter;
+                       vala_scope_add (_tmp99_, _tmp102_, (ValaSymbol*) _tmp103_);
                }
-               _tmp101_ = vala_subroutine_get_body ((ValaSubroutine*) self);
-               _tmp102_ = _tmp101_;
-               _tmp103_ = context;
-               vala_code_node_check ((ValaCodeNode*) _tmp102_, _tmp103_);
+               _tmp104_ = vala_subroutine_get_body ((ValaSubroutine*) self);
+               _tmp105_ = _tmp104_;
+               _tmp106_ = context;
+               vala_code_node_check ((ValaCodeNode*) _tmp105_, _tmp106_);
                {
                        ValaList* _body_error_type_list = NULL;
-                       ValaBlock* _tmp104_ = NULL;
-                       ValaBlock* _tmp105_ = NULL;
-                       ValaList* _tmp106_ = NULL;
+                       ValaBlock* _tmp107_ = NULL;
+                       ValaBlock* _tmp108_ = NULL;
+                       ValaList* _tmp109_ = NULL;
                        gint _body_error_type_size = 0;
-                       ValaList* _tmp107_ = NULL;
-                       gint _tmp108_ = 0;
-                       gint _tmp109_ = 0;
+                       ValaList* _tmp110_ = NULL;
+                       gint _tmp111_ = 0;
+                       gint _tmp112_ = 0;
                        gint _body_error_type_index = 0;
-                       _tmp104_ = vala_subroutine_get_body ((ValaSubroutine*) self);
-                       _tmp105_ = _tmp104_;
-                       _tmp106_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp105_);
-                       _body_error_type_list = _tmp106_;
-                       _tmp107_ = _body_error_type_list;
-                       _tmp108_ = vala_collection_get_size ((ValaCollection*) _tmp107_);
-                       _tmp109_ = _tmp108_;
-                       _body_error_type_size = _tmp109_;
+                       _tmp107_ = vala_subroutine_get_body ((ValaSubroutine*) self);
+                       _tmp108_ = _tmp107_;
+                       _tmp109_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp108_);
+                       _body_error_type_list = _tmp109_;
+                       _tmp110_ = _body_error_type_list;
+                       _tmp111_ = vala_collection_get_size ((ValaCollection*) _tmp110_);
+                       _tmp112_ = _tmp111_;
+                       _body_error_type_size = _tmp112_;
                        _body_error_type_index = -1;
                        while (TRUE) {
-                               gint _tmp110_ = 0;
-                               gint _tmp111_ = 0;
-                               gint _tmp112_ = 0;
-                               ValaDataType* body_error_type = NULL;
-                               ValaList* _tmp113_ = NULL;
+                               gint _tmp113_ = 0;
                                gint _tmp114_ = 0;
-                               gpointer _tmp115_ = NULL;
-                               ValaDataType* _tmp116_ = NULL;
-                               gboolean _tmp117_ = FALSE;
-                               gboolean _tmp118_ = FALSE;
-                               _tmp110_ = _body_error_type_index;
-                               _body_error_type_index = _tmp110_ + 1;
-                               _tmp111_ = _body_error_type_index;
-                               _tmp112_ = _body_error_type_size;
-                               if (!(_tmp111_ < _tmp112_)) {
+                               gint _tmp115_ = 0;
+                               ValaDataType* body_error_type = NULL;
+                               ValaList* _tmp116_ = NULL;
+                               gint _tmp117_ = 0;
+                               gpointer _tmp118_ = NULL;
+                               ValaDataType* _tmp119_ = NULL;
+                               gboolean _tmp120_ = FALSE;
+                               gboolean _tmp121_ = FALSE;
+                               _tmp113_ = _body_error_type_index;
+                               _body_error_type_index = _tmp113_ + 1;
+                               _tmp114_ = _body_error_type_index;
+                               _tmp115_ = _body_error_type_size;
+                               if (!(_tmp114_ < _tmp115_)) {
                                        break;
                                }
-                               _tmp113_ = _body_error_type_list;
-                               _tmp114_ = _body_error_type_index;
-                               _tmp115_ = vala_list_get (_tmp113_, _tmp114_);
-                               body_error_type = (ValaDataType*) _tmp115_;
-                               _tmp116_ = body_error_type;
-                               _tmp117_ = vala_error_type_get_dynamic_error (G_TYPE_CHECK_INSTANCE_CAST (_tmp116_, VALA_TYPE_ERROR_TYPE, ValaErrorType));
-                               _tmp118_ = _tmp117_;
-                               if (!_tmp118_) {
-                                       ValaDataType* _tmp119_ = NULL;
-                                       ValaSourceReference* _tmp120_ = NULL;
-                                       ValaSourceReference* _tmp121_ = NULL;
+                               _tmp116_ = _body_error_type_list;
+                               _tmp117_ = _body_error_type_index;
+                               _tmp118_ = vala_list_get (_tmp116_, _tmp117_);
+                               body_error_type = (ValaDataType*) _tmp118_;
+                               _tmp119_ = body_error_type;
+                               _tmp120_ = vala_error_type_get_dynamic_error (G_TYPE_CHECK_INSTANCE_CAST (_tmp119_, VALA_TYPE_ERROR_TYPE, ValaErrorType));
+                               _tmp121_ = _tmp120_;
+                               if (!_tmp121_) {
                                        ValaDataType* _tmp122_ = NULL;
-                                       gchar* _tmp123_ = NULL;
-                                       gchar* _tmp124_ = NULL;
-                                       gchar* _tmp125_ = NULL;
+                                       ValaSourceReference* _tmp123_ = NULL;
+                                       ValaSourceReference* _tmp124_ = NULL;
+                                       ValaDataType* _tmp125_ = NULL;
                                        gchar* _tmp126_ = NULL;
-                                       _tmp119_ = body_error_type;
-                                       _tmp120_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp119_);
-                                       _tmp121_ = _tmp120_;
+                                       gchar* _tmp127_ = NULL;
+                                       gchar* _tmp128_ = NULL;
+                                       gchar* _tmp129_ = NULL;
                                        _tmp122_ = body_error_type;
-                                       _tmp123_ = vala_code_node_to_string ((ValaCodeNode*) _tmp122_);
+                                       _tmp123_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp122_);
                                        _tmp124_ = _tmp123_;
-                                       _tmp125_ = g_strdup_printf ("unhandled error `%s'", _tmp124_);
-                                       _tmp126_ = _tmp125_;
-                                       vala_report_warning (_tmp121_, _tmp126_);
-                                       _g_free0 (_tmp126_);
-                                       _g_free0 (_tmp124_);
+                                       _tmp125_ = body_error_type;
+                                       _tmp126_ = vala_code_node_to_string ((ValaCodeNode*) _tmp125_);
+                                       _tmp127_ = _tmp126_;
+                                       _tmp128_ = g_strdup_printf ("unhandled error `%s'", _tmp127_);
+                                       _tmp129_ = _tmp128_;
+                                       vala_report_warning (_tmp124_, _tmp129_);
+                                       _g_free0 (_tmp129_);
+                                       _g_free0 (_tmp127_);
                                }
                                _vala_code_node_unref0 (body_error_type);
                        }
                        _vala_iterable_unref0 (_body_error_type_list);
                }
        }
-       _tmp127_ = context;
-       _tmp128_ = vala_code_context_get_analyzer (_tmp127_);
-       _tmp129_ = _tmp128_;
-       _tmp130_ = old_symbol;
-       vala_semantic_analyzer_set_current_symbol (_tmp129_, _tmp130_);
-       _tmp131_ = vala_code_node_get_error ((ValaCodeNode*) self);
+       _tmp130_ = context;
+       _tmp131_ = vala_code_context_get_analyzer (_tmp130_);
        _tmp132_ = _tmp131_;
-       result = !_tmp132_;
+       _tmp133_ = old_symbol;
+       vala_semantic_analyzer_set_current_symbol (_tmp132_, _tmp133_);
+       _tmp134_ = vala_code_node_get_error ((ValaCodeNode*) self);
+       _tmp135_ = _tmp134_;
+       result = !_tmp135_;
        _vala_code_node_unref0 (old_symbol);
        return result;
 }
@@ -1354,12 +1549,12 @@ void vala_property_accessor_set_value_parameter (ValaPropertyAccessor* self, Val
 
 static void vala_property_accessor_class_init (ValaPropertyAccessorClass * klass) {
        vala_property_accessor_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_property_accessor_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_property_accessor_finalize;
        g_type_class_add_private (klass, sizeof (ValaPropertyAccessorPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_property_accessor_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_property_accessor_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_property_accessor_real_check;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_property_accessor_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->accept = vala_property_accessor_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_property_accessor_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_property_accessor_real_check;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_property_accessor_real_replace_type;
        VALA_SUBROUTINE_CLASS (klass)->get_has_result = vala_property_accessor_real_get_has_result;
 }
 
index 466fe6c..057e442 100644 (file)
@@ -114,6 +114,30 @@ public class Vala.PropertyAccessor : Subroutine {
                }
        }
 
+       /**
+        * Get the method representing this property accessor
+        * @return   null if the accessor is neither readable nor writable
+        */
+       public Method? get_method () {
+               Method? m = null;
+               if (readable) {
+                       m = new Method ("get_"+prop.name, value_type, source_reference, comment);
+               } else if (writable) {
+                       m = new Method ("set_"+prop.name, new VoidType(), source_reference, comment);
+                       m.add_parameter (value_parameter.copy ());
+               }
+
+               if (m != null) {
+                       m.owner = prop.owner;
+                       m.access = access;
+                       m.binding = prop.binding;
+                       m.is_abstract = prop.is_abstract;
+                       m.is_virtual = prop.is_virtual;
+               }
+
+               return m;
+       }
+
        public override bool check (CodeContext context) {
                if (checked) {
                        return !error;
@@ -130,6 +154,10 @@ public class Vala.PropertyAccessor : Subroutine {
 
                context.analyzer.current_symbol = this;
 
+               if (writable || construction) {
+                       value_parameter = new Parameter ("value", value_type, source_reference);
+               }
+
                if (prop.source_type == SourceFileType.SOURCE) {
                        if (body == null && !prop.interface_only && !prop.is_abstract) {
                                /* no accessor body specified, insert default body */
@@ -157,7 +185,6 @@ public class Vala.PropertyAccessor : Subroutine {
 
                if (body != null) {
                        if (writable || construction) {
-                               value_parameter = new Parameter ("value", value_type, source_reference);
                                body.scope.add (value_parameter.name, value_parameter);
                        }
 
index 668ea56..5903663 100644 (file)
@@ -1571,13 +1571,13 @@ void vala_real_literal_set_value (ValaRealLiteral* self, const gchar* value) {
 
 static void vala_real_literal_class_init (ValaRealLiteralClass * klass) {
        vala_real_literal_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_real_literal_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_real_literal_finalize;
        g_type_class_add_private (klass, sizeof (ValaRealLiteralPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_real_literal_real_accept;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_real_literal_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_real_literal_real_to_string;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_real_literal_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_real_literal_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_real_literal_real_accept;
+       ((ValaExpressionClass *) klass)->is_pure = vala_real_literal_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_real_literal_real_to_string;
+       ((ValaCodeNodeClass *) klass)->check = vala_real_literal_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_real_literal_real_emit;
 }
 
 
index d24d850..62088b2 100644 (file)
@@ -785,16 +785,16 @@ void vala_reference_transfer_expression_set_inner (ValaReferenceTransferExpressi
 
 static void vala_reference_transfer_expression_class_init (ValaReferenceTransferExpressionClass * klass) {
        vala_reference_transfer_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_reference_transfer_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_reference_transfer_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaReferenceTransferExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_reference_transfer_expression_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_reference_transfer_expression_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_reference_transfer_expression_real_replace_expression;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_reference_transfer_expression_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_reference_transfer_expression_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_reference_transfer_expression_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_reference_transfer_expression_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_reference_transfer_expression_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_reference_transfer_expression_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_reference_transfer_expression_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_reference_transfer_expression_real_replace_expression;
+       ((ValaExpressionClass *) klass)->is_pure = vala_reference_transfer_expression_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_reference_transfer_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_reference_transfer_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_reference_transfer_expression_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_reference_transfer_expression_real_get_used_variables;
 }
 
 
index f35ee6b..1ba1b1a 100644 (file)
@@ -1249,11 +1249,9 @@ static gboolean vala_regex_literal_real_check (ValaCodeNode* base, ValaCodeConte
 gboolean vala_code_node_get_checked (ValaCodeNode* self);
 gboolean vala_code_node_get_error (ValaCodeNode* self);
 void vala_code_node_set_checked (ValaCodeNode* self, gboolean value);
-gboolean vala_code_context_get_experimental (ValaCodeContext* self);
-void vala_report_warning (ValaSourceReference* source, const gchar* message);
-ValaSourceReference* vala_code_node_get_source_reference (ValaCodeNode* self);
 void vala_code_node_set_error (ValaCodeNode* self, gboolean value);
 void vala_report_error (ValaSourceReference* source, const gchar* message);
+ValaSourceReference* vala_code_node_get_source_reference (ValaCodeNode* self);
 GType vala_semantic_analyzer_get_type (void) G_GNUC_CONST;
 ValaSemanticAnalyzer* vala_code_context_get_analyzer (ValaCodeContext* self);
 gpointer vala_source_file_ref (gpointer instance);
@@ -1426,17 +1424,14 @@ static gboolean vala_regex_literal_real_check (ValaCodeNode* base, ValaCodeConte
        gboolean result = FALSE;
        gboolean _tmp0_ = FALSE;
        gboolean _tmp1_ = FALSE;
-       ValaCodeContext* _tmp4_ = NULL;
-       gboolean _tmp5_ = FALSE;
-       gboolean _tmp6_ = FALSE;
-       ValaCodeContext* _tmp17_ = NULL;
-       ValaSemanticAnalyzer* _tmp18_ = NULL;
-       ValaSemanticAnalyzer* _tmp19_ = NULL;
-       ValaDataType* _tmp20_ = NULL;
-       ValaDataType* _tmp21_ = NULL;
-       ValaDataType* _tmp22_ = NULL;
-       gboolean _tmp23_ = FALSE;
-       gboolean _tmp24_ = FALSE;
+       ValaCodeContext* _tmp12_ = NULL;
+       ValaSemanticAnalyzer* _tmp13_ = NULL;
+       ValaSemanticAnalyzer* _tmp14_ = NULL;
+       ValaDataType* _tmp15_ = NULL;
+       ValaDataType* _tmp16_ = NULL;
+       ValaDataType* _tmp17_ = NULL;
+       gboolean _tmp18_ = FALSE;
+       gboolean _tmp19_ = FALSE;
        GError * _inner_error_ = NULL;
        self = (ValaRegexLiteral*) base;
        g_return_val_if_fail (context != NULL, FALSE);
@@ -1451,77 +1446,67 @@ static gboolean vala_regex_literal_real_check (ValaCodeNode* base, ValaCodeConte
                return result;
        }
        vala_code_node_set_checked ((ValaCodeNode*) self, TRUE);
-       _tmp4_ = context;
-       _tmp5_ = vala_code_context_get_experimental (_tmp4_);
-       _tmp6_ = _tmp5_;
-       if (!_tmp6_) {
-               ValaSourceReference* _tmp7_ = NULL;
-               ValaSourceReference* _tmp8_ = NULL;
-               _tmp7_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-               _tmp8_ = _tmp7_;
-               vala_report_warning (_tmp8_, "regular expression literals are experimental");
-       }
        {
                GRegex* regex = NULL;
-               const gchar* _tmp9_ = NULL;
-               GRegex* _tmp10_ = NULL;
-               GRegex* _tmp11_ = NULL;
-               _tmp9_ = self->priv->_value;
-               _tmp10_ = g_regex_new (_tmp9_, 0, 0, &_inner_error_);
-               regex = _tmp10_;
-               if (_inner_error_ != NULL) {
+               const gchar* _tmp4_ = NULL;
+               GRegex* _tmp5_ = NULL;
+               GRegex* _tmp6_ = NULL;
+               _tmp4_ = self->priv->_value;
+               _tmp5_ = g_regex_new (_tmp4_, 0, 0, &_inner_error_);
+               regex = _tmp5_;
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_REGEX_ERROR) {
-                               goto __catch13_g_regex_error;
+                               goto __catch15_g_regex_error;
                        }
                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
                        return FALSE;
                }
-               _tmp11_ = regex;
-               if (_tmp11_ != NULL) {
+               _tmp6_ = regex;
+               if (_tmp6_ != NULL) {
                }
                _g_regex_unref0 (regex);
        }
-       goto __finally13;
-       __catch13_g_regex_error:
+       goto __finally15;
+       __catch15_g_regex_error:
        {
                GError* err = NULL;
-               ValaSourceReference* _tmp12_ = NULL;
-               ValaSourceReference* _tmp13_ = NULL;
-               const gchar* _tmp14_ = NULL;
-               gchar* _tmp15_ = NULL;
-               gchar* _tmp16_ = NULL;
+               ValaSourceReference* _tmp7_ = NULL;
+               ValaSourceReference* _tmp8_ = NULL;
+               const gchar* _tmp9_ = NULL;
+               gchar* _tmp10_ = NULL;
+               gchar* _tmp11_ = NULL;
                err = _inner_error_;
                _inner_error_ = NULL;
                vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
-               _tmp12_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
-               _tmp13_ = _tmp12_;
-               _tmp14_ = self->priv->_value;
-               _tmp15_ = g_strdup_printf ("Invalid regular expression `%s'.", _tmp14_);
-               _tmp16_ = _tmp15_;
-               vala_report_error (_tmp13_, _tmp16_);
-               _g_free0 (_tmp16_);
+               _tmp7_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
+               _tmp8_ = _tmp7_;
+               _tmp9_ = self->priv->_value;
+               _tmp10_ = g_strdup_printf ("Invalid regular expression `%s'.", _tmp9_);
+               _tmp11_ = _tmp10_;
+               vala_report_error (_tmp8_, _tmp11_);
+               _g_free0 (_tmp11_);
                result = FALSE;
                _g_error_free0 (err);
                return result;
        }
-       __finally13:
-       if (_inner_error_ != NULL) {
+       __finally15:
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return FALSE;
        }
-       _tmp17_ = context;
-       _tmp18_ = vala_code_context_get_analyzer (_tmp17_);
+       _tmp12_ = context;
+       _tmp13_ = vala_code_context_get_analyzer (_tmp12_);
+       _tmp14_ = _tmp13_;
+       _tmp15_ = _tmp14_->regex_type;
+       _tmp16_ = vala_data_type_copy (_tmp15_);
+       _tmp17_ = _tmp16_;
+       vala_expression_set_value_type ((ValaExpression*) self, _tmp17_);
+       _vala_code_node_unref0 (_tmp17_);
+       _tmp18_ = vala_code_node_get_error ((ValaCodeNode*) self);
        _tmp19_ = _tmp18_;
-       _tmp20_ = _tmp19_->regex_type;
-       _tmp21_ = vala_data_type_copy (_tmp20_);
-       _tmp22_ = _tmp21_;
-       vala_expression_set_value_type ((ValaExpression*) self, _tmp22_);
-       _vala_code_node_unref0 (_tmp22_);
-       _tmp23_ = vala_code_node_get_error ((ValaCodeNode*) self);
-       _tmp24_ = _tmp23_;
-       result = !_tmp24_;
+       result = !_tmp19_;
        return result;
 }
 
@@ -1562,14 +1547,14 @@ void vala_regex_literal_set_value (ValaRegexLiteral* self, const gchar* value) {
 
 static void vala_regex_literal_class_init (ValaRegexLiteralClass * klass) {
        vala_regex_literal_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_regex_literal_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_regex_literal_finalize;
        g_type_class_add_private (klass, sizeof (ValaRegexLiteralPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_regex_literal_real_accept;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_regex_literal_real_is_pure;
-       VALA_EXPRESSION_CLASS (klass)->is_non_null = vala_regex_literal_real_is_non_null;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_regex_literal_real_to_string;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_regex_literal_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_regex_literal_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_regex_literal_real_accept;
+       ((ValaExpressionClass *) klass)->is_pure = vala_regex_literal_real_is_pure;
+       ((ValaExpressionClass *) klass)->is_non_null = vala_regex_literal_real_is_non_null;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_regex_literal_real_to_string;
+       ((ValaCodeNodeClass *) klass)->check = vala_regex_literal_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_regex_literal_real_emit;
 }
 
 
index e8c9fa8..f91aa1a 100644 (file)
@@ -69,10 +69,6 @@ public class Vala.RegexLiteral : Literal {
 
                checked = true;
 
-               if (!context.experimental) {
-                       Report.warning (source_reference, "regular expression literals are experimental");
-               }
-
                try {
                        var regex = new GLib.Regex (value);
                        if (regex != null) { /* Regex is valid. */ }
index 50302bc..c8f8402 100644 (file)
@@ -696,10 +696,10 @@ void vala_report_set_enable_warnings (ValaReport* self, gboolean value) {
 static void vala_report_class_init (ValaReportClass * klass) {
        vala_report_parent_class = g_type_class_peek_parent (klass);
        g_type_class_add_private (klass, sizeof (ValaReportPrivate));
-       VALA_REPORT_CLASS (klass)->note = vala_report_real_note;
-       VALA_REPORT_CLASS (klass)->depr = vala_report_real_depr;
-       VALA_REPORT_CLASS (klass)->warn = vala_report_real_warn;
-       VALA_REPORT_CLASS (klass)->err = vala_report_real_err;
+       ((ValaReportClass *) klass)->note = vala_report_real_note;
+       ((ValaReportClass *) klass)->depr = vala_report_real_depr;
+       ((ValaReportClass *) klass)->warn = vala_report_real_warn;
+       ((ValaReportClass *) klass)->err = vala_report_real_err;
        G_OBJECT_CLASS (klass)->get_property = _vala_vala_report_get_property;
        G_OBJECT_CLASS (klass)->set_property = _vala_vala_report_set_property;
        G_OBJECT_CLASS (klass)->finalize = vala_report_finalize;
index f29a246..38b09cb 100644 (file)
@@ -904,15 +904,15 @@ void vala_return_statement_set_return_expression (ValaReturnStatement* self, Val
 
 static void vala_return_statement_class_init (ValaReturnStatementClass * klass) {
        vala_return_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_return_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_return_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaReturnStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_return_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_return_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_return_statement_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_return_statement_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_return_statement_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_return_statement_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_return_statement_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_return_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_return_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_return_statement_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->check = vala_return_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_return_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_return_statement_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_return_statement_real_get_used_variables;
 }
 
 
index 9e85856..17664e9 100644 (file)
@@ -310,7 +310,7 @@ GType vala_comment_get_type (void) G_GNUC_CONST;
 static GType vala_scanner_conditional_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
 static ValaScannerConditional* vala_scanner_conditional_dup (const ValaScannerConditional* self);
 static void vala_scanner_conditional_free (ValaScannerConditional* self);
-static GType vala_scanner_state_get_type (void) G_GNUC_UNUSED;
+static GType vala_scanner_state_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
 #define VALA_SCANNER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_SCANNER, ValaScannerPrivate))
 enum  {
        VALA_SCANNER_DUMMY_PROPERTY
@@ -6612,7 +6612,7 @@ void vala_value_take_scanner (GValue* value, gpointer v_object) {
 
 static void vala_scanner_class_init (ValaScannerClass * klass) {
        vala_scanner_parent_class = g_type_class_peek_parent (klass);
-       VALA_SCANNER_CLASS (klass)->finalize = vala_scanner_finalize;
+       ((ValaScannerClass *) klass)->finalize = vala_scanner_finalize;
        g_type_class_add_private (klass, sizeof (ValaScannerPrivate));
 }
 
@@ -6626,6 +6626,7 @@ static void vala_scanner_instance_init (ValaScanner * self) {
 static void vala_scanner_finalize (ValaScanner* obj) {
        ValaScanner * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_SCANNER, ValaScanner);
+       g_signal_handlers_destroy (self);
        _vala_source_file_unref0 (self->priv->_source_file);
        _vala_comment_unref0 (self->priv->_comment);
        self->priv->conditional_stack = (g_free (self->priv->conditional_stack), NULL);
index 6a43bd1..1ac5359 100644 (file)
@@ -582,7 +582,7 @@ void vala_value_take_scope (GValue* value, gpointer v_object) {
 
 static void vala_scope_class_init (ValaScopeClass * klass) {
        vala_scope_parent_class = g_type_class_peek_parent (klass);
-       VALA_SCOPE_CLASS (klass)->finalize = vala_scope_finalize;
+       ((ValaScopeClass *) klass)->finalize = vala_scope_finalize;
        g_type_class_add_private (klass, sizeof (ValaScopePrivate));
 }
 
@@ -596,6 +596,7 @@ static void vala_scope_instance_init (ValaScope * self) {
 static void vala_scope_finalize (ValaScope* obj) {
        ValaScope * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_SCOPE, ValaScope);
+       g_signal_handlers_destroy (self);
        _vala_map_unref0 (self->priv->symbol_table);
        _vala_iterable_unref0 (self->priv->anonymous_members);
 }
index 5fcc58e..7334b8b 100644 (file)
@@ -1559,11 +1559,7 @@ gchar* vala_method_type_to_prototype_string (ValaMethodType* self, gboolean with
 gchar* vala_code_node_to_string (ValaCodeNode* self);
 void vala_method_call_add_argument (ValaMethodCall* self, ValaExpression* arg);
 void vala_object_creation_expression_add_argument (ValaObjectCreationExpression* self, ValaExpression* arg);
-gboolean vala_code_node_get_error (ValaCodeNode* self);
-ValaDataType* vala_expression_get_value_type (ValaExpression* self);
-ValaSymbol* vala_expression_get_symbol_reference (ValaExpression* self);
-ValaDataType* vala_expression_get_target_type (ValaExpression* self);
-gboolean vala_data_type_compatible (ValaDataType* self, ValaDataType* target_type);
+gboolean vala_semantic_analyzer_check_variadic_arguments (ValaSemanticAnalyzer* self, ValaIterator* arg_it, gint i, ValaSourceReference* source_reference);
 ValaSourceFile* vala_source_reference_get_file (ValaSourceReference* self);
 const gchar* vala_source_file_get_filename (ValaSourceFile* self);
 GType vala_source_location_get_type (void) G_GNUC_CONST;
@@ -1572,7 +1568,12 @@ void vala_source_location_free (ValaSourceLocation* self);
 void vala_source_reference_get_begin (ValaSourceReference* self, ValaSourceLocation* result);
 const gchar* vala_string_literal_get_value (ValaStringLiteral* self);
 void vala_string_literal_set_value (ValaStringLiteral* self, const gchar* value);
+gboolean vala_code_node_get_error (ValaCodeNode* self);
+ValaDataType* vala_expression_get_value_type (ValaExpression* self);
+ValaDataType* vala_expression_get_target_type (ValaExpression* self);
 GType vala_delegate_type_get_type (void) G_GNUC_CONST;
+ValaSymbol* vala_expression_get_symbol_reference (ValaExpression* self);
+gboolean vala_data_type_compatible (ValaDataType* self, ValaDataType* target_type);
 GType vala_null_type_get_type (void) G_GNUC_CONST;
 GType vala_unary_operator_get_type (void) G_GNUC_CONST;
 ValaUnaryOperator vala_unary_expression_get_operator (ValaUnaryExpression* self);
@@ -1584,6 +1585,11 @@ gboolean vala_data_type_get_value_owned (ValaDataType* self);
 gboolean vala_member_access_get_prototype_access (ValaMemberAccess* self);
 ValaDelegate* vala_delegate_type_get_delegate_symbol (ValaDelegateType* self);
 gboolean vala_delegate_get_has_target (ValaDelegate* self);
+gboolean vala_semantic_analyzer_check_print_format (ValaSemanticAnalyzer* self, const gchar* format, ValaIterator* arg_it, ValaSourceReference* source_reference);
+ValaSemanticAnalyzer* vala_code_context_get_analyzer (ValaCodeContext* self);
+ValaPointerType* vala_pointer_type_new (ValaDataType* base_type, ValaSourceReference* source_reference);
+ValaPointerType* vala_pointer_type_construct (GType object_type, ValaDataType* base_type, ValaSourceReference* source_reference);
+void vala_expression_set_target_type (ValaExpression* self, ValaDataType* value);
 static ValaDataType* vala_semantic_analyzer_get_instance_base_type (ValaDataType* instance_type, ValaDataType* base_type, ValaCodeNode* node_reference);
 ValaList* vala_data_type_get_type_arguments (ValaDataType* self);
 ValaDataType* vala_data_type_get_actual_type (ValaDataType* self, ValaDataType* derived_instance_type, ValaMemberAccess* method_access, ValaCodeNode* node_reference);
@@ -1607,7 +1613,6 @@ ValaMemberAccess* vala_member_access_new_simple (const gchar* member_name, ValaS
 ValaMemberAccess* vala_member_access_construct_simple (GType object_type, const gchar* member_name, ValaSourceReference* source_reference);
 ValaReferenceTransferExpression* vala_reference_transfer_expression_new (ValaExpression* inner, ValaSourceReference* source_reference);
 ValaReferenceTransferExpression* vala_reference_transfer_expression_construct (GType object_type, ValaExpression* inner, ValaSourceReference* source_reference);
-void vala_expression_set_target_type (ValaExpression* self, ValaDataType* value);
 GType vala_member_initializer_get_type (void) G_GNUC_CONST;
 void vala_semantic_analyzer_visit_member_initializer (ValaSemanticAnalyzer* self, ValaMemberInitializer* init, ValaDataType* type);
 const gchar* vala_member_initializer_get_name (ValaMemberInitializer* self);
@@ -3022,8 +3027,9 @@ gboolean vala_semantic_analyzer_check_arguments (ValaSemanticAnalyzer* self, Val
        gboolean ellipsis = FALSE;
        gint i = 0;
        gboolean _tmp105_ = FALSE;
-       gboolean _tmp202_ = FALSE;
-       gboolean _tmp203_ = FALSE;
+       gboolean _tmp106_ = FALSE;
+       gboolean _tmp151_ = FALSE;
+       gboolean _tmp152_ = FALSE;
        g_return_val_if_fail (self != NULL, FALSE);
        g_return_val_if_fail (expr != NULL, FALSE);
        g_return_val_if_fail (mtype != NULL, FALSE);
@@ -3362,283 +3368,128 @@ gboolean vala_semantic_analyzer_check_arguments (ValaSemanticAnalyzer* self, Val
                }
                _vala_iterable_unref0 (_param_list);
        }
-       _tmp105_ = ellipsis;
+       _tmp106_ = ellipsis;
+       if (_tmp106_) {
+               ValaIterator* _tmp107_ = NULL;
+               gint _tmp108_ = 0;
+               ValaExpression* _tmp109_ = NULL;
+               ValaSourceReference* _tmp110_ = NULL;
+               ValaSourceReference* _tmp111_ = NULL;
+               gboolean _tmp112_ = FALSE;
+               _tmp107_ = arg_it;
+               _tmp108_ = i;
+               _tmp109_ = expr;
+               _tmp110_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp109_);
+               _tmp111_ = _tmp110_;
+               _tmp112_ = vala_semantic_analyzer_check_variadic_arguments (self, _tmp107_, _tmp108_, _tmp111_);
+               _tmp105_ = !_tmp112_;
+       } else {
+               _tmp105_ = FALSE;
+       }
        if (_tmp105_) {
-               while (TRUE) {
-                       gboolean _tmp106_ = FALSE;
-                       ValaIterator* _tmp107_ = NULL;
-                       ValaExpression* arg = NULL;
-                       ValaIterator* _tmp110_ = NULL;
-                       gpointer _tmp111_ = NULL;
-                       ValaExpression* _tmp112_ = NULL;
-                       gboolean _tmp113_ = FALSE;
-                       gboolean _tmp114_ = FALSE;
-                       gint _tmp164_ = 0;
-                       _tmp107_ = arg_it;
-                       if (_tmp107_ != NULL) {
-                               ValaIterator* _tmp108_ = NULL;
-                               gboolean _tmp109_ = FALSE;
-                               _tmp108_ = arg_it;
-                               _tmp109_ = vala_iterator_next (_tmp108_);
-                               _tmp106_ = _tmp109_;
-                       } else {
-                               _tmp106_ = FALSE;
-                       }
-                       if (!_tmp106_) {
-                               break;
-                       }
-                       _tmp110_ = arg_it;
-                       _tmp111_ = vala_iterator_get (_tmp110_);
-                       arg = (ValaExpression*) _tmp111_;
-                       _tmp112_ = arg;
-                       _tmp113_ = vala_code_node_get_error ((ValaCodeNode*) _tmp112_);
-                       _tmp114_ = _tmp113_;
-                       if (_tmp114_) {
-                               ValaExpression* _tmp115_ = NULL;
-                               _tmp115_ = expr;
-                               vala_code_node_set_error ((ValaCodeNode*) _tmp115_, TRUE);
-                               result = FALSE;
-                               _vala_code_node_unref0 (arg);
-                               _vala_iterator_unref0 (arg_it);
-                               _vala_code_node_unref0 (prev_arg);
-                               return result;
-                       } else {
-                               ValaExpression* _tmp116_ = NULL;
-                               ValaDataType* _tmp117_ = NULL;
-                               ValaDataType* _tmp118_ = NULL;
-                               _tmp116_ = arg;
-                               _tmp117_ = vala_expression_get_value_type (_tmp116_);
-                               _tmp118_ = _tmp117_;
-                               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp118_, VALA_TYPE_SIGNAL_TYPE)) {
-                                       ValaExpression* _tmp119_ = NULL;
-                                       ValaExpression* _tmp120_ = NULL;
-                                       ValaSourceReference* _tmp121_ = NULL;
-                                       ValaSourceReference* _tmp122_ = NULL;
-                                       _tmp119_ = arg;
-                                       vala_code_node_set_error ((ValaCodeNode*) _tmp119_, TRUE);
-                                       _tmp120_ = arg;
-                                       _tmp121_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp120_);
-                                       _tmp122_ = _tmp121_;
-                                       vala_report_error (_tmp122_, "Cannot pass signals as arguments");
-                                       result = FALSE;
-                                       _vala_code_node_unref0 (arg);
-                                       _vala_iterator_unref0 (arg_it);
-                                       _vala_code_node_unref0 (prev_arg);
-                                       return result;
-                               } else {
-                                       ValaExpression* _tmp123_ = NULL;
-                                       ValaDataType* _tmp124_ = NULL;
-                                       ValaDataType* _tmp125_ = NULL;
-                                       _tmp123_ = arg;
-                                       _tmp124_ = vala_expression_get_value_type (_tmp123_);
-                                       _tmp125_ = _tmp124_;
-                                       if (_tmp125_ == NULL) {
-                                               ValaExpression* _tmp126_ = NULL;
-                                               ValaSymbol* _tmp127_ = NULL;
-                                               ValaSymbol* _tmp128_ = NULL;
-                                               _tmp126_ = arg;
-                                               _tmp127_ = vala_expression_get_symbol_reference (_tmp126_);
-                                               _tmp128_ = _tmp127_;
-                                               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp128_, VALA_TYPE_METHOD)) {
-                                                       ValaExpression* _tmp129_ = NULL;
-                                                       ValaExpression* _tmp130_ = NULL;
-                                                       ValaSourceReference* _tmp131_ = NULL;
-                                                       ValaSourceReference* _tmp132_ = NULL;
-                                                       gint _tmp133_ = 0;
-                                                       gchar* _tmp134_ = NULL;
-                                                       gchar* _tmp135_ = NULL;
-                                                       _tmp129_ = expr;
-                                                       vala_code_node_set_error ((ValaCodeNode*) _tmp129_, TRUE);
-                                                       _tmp130_ = expr;
-                                                       _tmp131_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp130_);
-                                                       _tmp132_ = _tmp131_;
-                                                       _tmp133_ = i;
-                                                       _tmp134_ = g_strdup_printf ("Invalid type for argument %d", _tmp133_ + 1);
-                                                       _tmp135_ = _tmp134_;
-                                                       vala_report_error (_tmp132_, _tmp135_);
-                                                       _g_free0 (_tmp135_);
-                                                       result = FALSE;
-                                                       _vala_code_node_unref0 (arg);
-                                                       _vala_iterator_unref0 (arg_it);
-                                                       _vala_code_node_unref0 (prev_arg);
-                                                       return result;
-                                               }
-                                       } else {
-                                               gboolean _tmp136_ = FALSE;
-                                               ValaExpression* _tmp137_ = NULL;
-                                               ValaDataType* _tmp138_ = NULL;
-                                               ValaDataType* _tmp139_ = NULL;
-                                               _tmp137_ = arg;
-                                               _tmp138_ = vala_expression_get_target_type (_tmp137_);
-                                               _tmp139_ = _tmp138_;
-                                               if (_tmp139_ != NULL) {
-                                                       ValaExpression* _tmp140_ = NULL;
-                                                       ValaDataType* _tmp141_ = NULL;
-                                                       ValaDataType* _tmp142_ = NULL;
-                                                       ValaExpression* _tmp143_ = NULL;
-                                                       ValaDataType* _tmp144_ = NULL;
-                                                       ValaDataType* _tmp145_ = NULL;
-                                                       gboolean _tmp146_ = FALSE;
-                                                       _tmp140_ = arg;
-                                                       _tmp141_ = vala_expression_get_value_type (_tmp140_);
-                                                       _tmp142_ = _tmp141_;
-                                                       _tmp143_ = arg;
-                                                       _tmp144_ = vala_expression_get_target_type (_tmp143_);
-                                                       _tmp145_ = _tmp144_;
-                                                       _tmp146_ = vala_data_type_compatible (_tmp142_, _tmp145_);
-                                                       _tmp136_ = !_tmp146_;
-                                               } else {
-                                                       _tmp136_ = FALSE;
-                                               }
-                                               if (_tmp136_) {
-                                                       ValaExpression* _tmp147_ = NULL;
-                                                       ValaExpression* _tmp148_ = NULL;
-                                                       ValaSourceReference* _tmp149_ = NULL;
-                                                       ValaSourceReference* _tmp150_ = NULL;
-                                                       gint _tmp151_ = 0;
-                                                       ValaExpression* _tmp152_ = NULL;
-                                                       ValaDataType* _tmp153_ = NULL;
-                                                       ValaDataType* _tmp154_ = NULL;
-                                                       gchar* _tmp155_ = NULL;
-                                                       gchar* _tmp156_ = NULL;
-                                                       ValaExpression* _tmp157_ = NULL;
-                                                       ValaDataType* _tmp158_ = NULL;
-                                                       ValaDataType* _tmp159_ = NULL;
-                                                       gchar* _tmp160_ = NULL;
-                                                       gchar* _tmp161_ = NULL;
-                                                       gchar* _tmp162_ = NULL;
-                                                       gchar* _tmp163_ = NULL;
-                                                       _tmp147_ = expr;
-                                                       vala_code_node_set_error ((ValaCodeNode*) _tmp147_, TRUE);
-                                                       _tmp148_ = arg;
-                                                       _tmp149_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp148_);
-                                                       _tmp150_ = _tmp149_;
-                                                       _tmp151_ = i;
-                                                       _tmp152_ = arg;
-                                                       _tmp153_ = vala_expression_get_value_type (_tmp152_);
-                                                       _tmp154_ = _tmp153_;
-                                                       _tmp155_ = vala_code_node_to_string ((ValaCodeNode*) _tmp154_);
-                                                       _tmp156_ = _tmp155_;
-                                                       _tmp157_ = arg;
-                                                       _tmp158_ = vala_expression_get_target_type (_tmp157_);
-                                                       _tmp159_ = _tmp158_;
-                                                       _tmp160_ = vala_code_node_to_string ((ValaCodeNode*) _tmp159_);
-                                                       _tmp161_ = _tmp160_;
-                                                       _tmp162_ = g_strdup_printf ("Argument %d: Cannot convert from `%s' to `%s'", _tmp151_ + 1, _tmp156_, _tmp161_);
-                                                       _tmp163_ = _tmp162_;
-                                                       vala_report_error (_tmp150_, _tmp163_);
-                                                       _g_free0 (_tmp163_);
-                                                       _g_free0 (_tmp161_);
-                                                       _g_free0 (_tmp156_);
-                                                       result = FALSE;
-                                                       _vala_code_node_unref0 (arg);
-                                                       _vala_iterator_unref0 (arg_it);
-                                                       _vala_code_node_unref0 (prev_arg);
-                                                       return result;
-                                               }
-                                       }
-                               }
-                       }
-                       _tmp164_ = i;
-                       i = _tmp164_ + 1;
-                       _vala_code_node_unref0 (arg);
-               }
+               ValaExpression* _tmp113_ = NULL;
+               _tmp113_ = expr;
+               vala_code_node_set_error ((ValaCodeNode*) _tmp113_, TRUE);
+               result = FALSE;
+               _vala_iterator_unref0 (arg_it);
+               _vala_code_node_unref0 (prev_arg);
+               return result;
        } else {
-               gboolean _tmp165_ = FALSE;
-               gboolean _tmp166_ = FALSE;
-               gboolean _tmp167_ = FALSE;
-               _tmp167_ = ellipsis;
-               if (!_tmp167_) {
-                       ValaIterator* _tmp168_ = NULL;
-                       _tmp168_ = arg_it;
-                       _tmp166_ = _tmp168_ != NULL;
+               gboolean _tmp114_ = FALSE;
+               gboolean _tmp115_ = FALSE;
+               gboolean _tmp116_ = FALSE;
+               _tmp116_ = ellipsis;
+               if (!_tmp116_) {
+                       ValaIterator* _tmp117_ = NULL;
+                       _tmp117_ = arg_it;
+                       _tmp115_ = _tmp117_ != NULL;
                } else {
-                       _tmp166_ = FALSE;
+                       _tmp115_ = FALSE;
                }
-               if (_tmp166_) {
-                       ValaIterator* _tmp169_ = NULL;
-                       gboolean _tmp170_ = FALSE;
-                       _tmp169_ = arg_it;
-                       _tmp170_ = vala_iterator_next (_tmp169_);
-                       _tmp165_ = _tmp170_;
+               if (_tmp115_) {
+                       ValaIterator* _tmp118_ = NULL;
+                       gboolean _tmp119_ = FALSE;
+                       _tmp118_ = arg_it;
+                       _tmp119_ = vala_iterator_next (_tmp118_);
+                       _tmp114_ = _tmp119_;
                } else {
-                       _tmp165_ = FALSE;
+                       _tmp114_ = FALSE;
                }
-               if (_tmp165_) {
-                       ValaExpression* _tmp171_ = NULL;
+               if (_tmp114_) {
+                       ValaExpression* _tmp120_ = NULL;
                        ValaMethodType* m = NULL;
-                       ValaDataType* _tmp172_ = NULL;
-                       ValaMethodType* _tmp173_ = NULL;
-                       ValaMethodType* _tmp174_ = NULL;
-                       _tmp171_ = expr;
-                       vala_code_node_set_error ((ValaCodeNode*) _tmp171_, TRUE);
-                       _tmp172_ = mtype;
-                       _tmp173_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp172_, VALA_TYPE_METHOD_TYPE) ? ((ValaMethodType*) _tmp172_) : NULL);
-                       m = _tmp173_;
-                       _tmp174_ = m;
-                       if (_tmp174_ != NULL) {
-                               ValaExpression* _tmp175_ = NULL;
-                               ValaSourceReference* _tmp176_ = NULL;
-                               ValaSourceReference* _tmp177_ = NULL;
-                               ValaList* _tmp178_ = NULL;
-                               gint _tmp179_ = 0;
-                               gint _tmp180_ = 0;
-                               ValaMethodType* _tmp181_ = NULL;
-                               ValaList* _tmp182_ = NULL;
-                               ValaList* _tmp183_ = NULL;
-                               gint _tmp184_ = 0;
-                               gint _tmp185_ = 0;
-                               ValaMethodType* _tmp186_ = NULL;
-                               gchar* _tmp187_ = NULL;
-                               gchar* _tmp188_ = NULL;
-                               gchar* _tmp189_ = NULL;
-                               gchar* _tmp190_ = NULL;
-                               _tmp175_ = expr;
-                               _tmp176_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp175_);
-                               _tmp177_ = _tmp176_;
-                               _tmp178_ = args;
-                               _tmp179_ = vala_collection_get_size ((ValaCollection*) _tmp178_);
-                               _tmp180_ = _tmp179_;
-                               _tmp181_ = m;
-                               _tmp182_ = vala_data_type_get_parameters ((ValaDataType*) _tmp181_);
-                               _tmp183_ = _tmp182_;
-                               _tmp184_ = vala_collection_get_size ((ValaCollection*) _tmp183_);
-                               _tmp185_ = _tmp184_;
-                               _tmp186_ = m;
-                               _tmp187_ = vala_method_type_to_prototype_string (_tmp186_, FALSE);
-                               _tmp188_ = _tmp187_;
-                               _tmp189_ = g_strdup_printf ("%d extra arguments for `%s'", _tmp180_ - _tmp185_, _tmp188_);
-                               _tmp190_ = _tmp189_;
-                               vala_report_error (_tmp177_, _tmp190_);
-                               _g_free0 (_tmp190_);
-                               _g_free0 (_tmp188_);
-                               _vala_iterable_unref0 (_tmp183_);
+                       ValaDataType* _tmp121_ = NULL;
+                       ValaMethodType* _tmp122_ = NULL;
+                       ValaMethodType* _tmp123_ = NULL;
+                       _tmp120_ = expr;
+                       vala_code_node_set_error ((ValaCodeNode*) _tmp120_, TRUE);
+                       _tmp121_ = mtype;
+                       _tmp122_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp121_, VALA_TYPE_METHOD_TYPE) ? ((ValaMethodType*) _tmp121_) : NULL);
+                       m = _tmp122_;
+                       _tmp123_ = m;
+                       if (_tmp123_ != NULL) {
+                               ValaExpression* _tmp124_ = NULL;
+                               ValaSourceReference* _tmp125_ = NULL;
+                               ValaSourceReference* _tmp126_ = NULL;
+                               ValaList* _tmp127_ = NULL;
+                               gint _tmp128_ = 0;
+                               gint _tmp129_ = 0;
+                               ValaMethodType* _tmp130_ = NULL;
+                               ValaList* _tmp131_ = NULL;
+                               ValaList* _tmp132_ = NULL;
+                               gint _tmp133_ = 0;
+                               gint _tmp134_ = 0;
+                               ValaMethodType* _tmp135_ = NULL;
+                               gchar* _tmp136_ = NULL;
+                               gchar* _tmp137_ = NULL;
+                               gchar* _tmp138_ = NULL;
+                               gchar* _tmp139_ = NULL;
+                               _tmp124_ = expr;
+                               _tmp125_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp124_);
+                               _tmp126_ = _tmp125_;
+                               _tmp127_ = args;
+                               _tmp128_ = vala_collection_get_size ((ValaCollection*) _tmp127_);
+                               _tmp129_ = _tmp128_;
+                               _tmp130_ = m;
+                               _tmp131_ = vala_data_type_get_parameters ((ValaDataType*) _tmp130_);
+                               _tmp132_ = _tmp131_;
+                               _tmp133_ = vala_collection_get_size ((ValaCollection*) _tmp132_);
+                               _tmp134_ = _tmp133_;
+                               _tmp135_ = m;
+                               _tmp136_ = vala_method_type_to_prototype_string (_tmp135_, FALSE);
+                               _tmp137_ = _tmp136_;
+                               _tmp138_ = g_strdup_printf ("%d extra arguments for `%s'", _tmp129_ - _tmp134_, _tmp137_);
+                               _tmp139_ = _tmp138_;
+                               vala_report_error (_tmp126_, _tmp139_);
+                               _g_free0 (_tmp139_);
+                               _g_free0 (_tmp137_);
+                               _vala_iterable_unref0 (_tmp132_);
                        } else {
-                               ValaExpression* _tmp191_ = NULL;
-                               ValaSourceReference* _tmp192_ = NULL;
-                               ValaSourceReference* _tmp193_ = NULL;
-                               ValaDataType* _tmp194_ = NULL;
-                               gchar* _tmp195_ = NULL;
-                               gchar* _tmp196_ = NULL;
-                               ValaList* _tmp197_ = NULL;
-                               gint _tmp198_ = 0;
-                               gint _tmp199_ = 0;
-                               gchar* _tmp200_ = NULL;
-                               gchar* _tmp201_ = NULL;
-                               _tmp191_ = expr;
-                               _tmp192_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp191_);
-                               _tmp193_ = _tmp192_;
-                               _tmp194_ = mtype;
-                               _tmp195_ = vala_code_node_to_string ((ValaCodeNode*) _tmp194_);
-                               _tmp196_ = _tmp195_;
-                               _tmp197_ = args;
-                               _tmp198_ = vala_collection_get_size ((ValaCollection*) _tmp197_);
-                               _tmp199_ = _tmp198_;
-                               _tmp200_ = g_strdup_printf ("Too many arguments, method `%s' does not take %d arguments", _tmp196_, _tmp199_);
-                               _tmp201_ = _tmp200_;
-                               vala_report_error (_tmp193_, _tmp201_);
-                               _g_free0 (_tmp201_);
-                               _g_free0 (_tmp196_);
+                               ValaExpression* _tmp140_ = NULL;
+                               ValaSourceReference* _tmp141_ = NULL;
+                               ValaSourceReference* _tmp142_ = NULL;
+                               ValaDataType* _tmp143_ = NULL;
+                               gchar* _tmp144_ = NULL;
+                               gchar* _tmp145_ = NULL;
+                               ValaList* _tmp146_ = NULL;
+                               gint _tmp147_ = 0;
+                               gint _tmp148_ = 0;
+                               gchar* _tmp149_ = NULL;
+                               gchar* _tmp150_ = NULL;
+                               _tmp140_ = expr;
+                               _tmp141_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp140_);
+                               _tmp142_ = _tmp141_;
+                               _tmp143_ = mtype;
+                               _tmp144_ = vala_code_node_to_string ((ValaCodeNode*) _tmp143_);
+                               _tmp145_ = _tmp144_;
+                               _tmp146_ = args;
+                               _tmp147_ = vala_collection_get_size ((ValaCollection*) _tmp146_);
+                               _tmp148_ = _tmp147_;
+                               _tmp149_ = g_strdup_printf ("Too many arguments, method `%s' does not take %d arguments", _tmp145_, _tmp148_);
+                               _tmp150_ = _tmp149_;
+                               vala_report_error (_tmp142_, _tmp150_);
+                               _g_free0 (_tmp150_);
+                               _g_free0 (_tmp145_);
                        }
                        result = FALSE;
                        _vala_code_node_unref0 (m);
@@ -3647,74 +3498,74 @@ gboolean vala_semantic_analyzer_check_arguments (ValaSemanticAnalyzer* self, Val
                        return result;
                }
        }
-       _tmp203_ = diag;
-       if (_tmp203_) {
-               ValaExpression* _tmp204_ = NULL;
-               _tmp204_ = prev_arg;
-               _tmp202_ = _tmp204_ != NULL;
+       _tmp152_ = diag;
+       if (_tmp152_) {
+               ValaExpression* _tmp153_ = NULL;
+               _tmp153_ = prev_arg;
+               _tmp151_ = _tmp153_ != NULL;
        } else {
-               _tmp202_ = FALSE;
+               _tmp151_ = FALSE;
        }
-       if (_tmp202_) {
+       if (_tmp151_) {
                ValaStringLiteral* format_arg = NULL;
-               ValaExpression* _tmp205_ = NULL;
-               ValaStringLiteral* _tmp206_ = NULL;
-               ValaStringLiteral* _tmp207_ = NULL;
-               _tmp205_ = prev_arg;
-               _tmp206_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp205_, VALA_TYPE_STRING_LITERAL) ? ((ValaStringLiteral*) _tmp205_) : NULL);
-               format_arg = _tmp206_;
-               _tmp207_ = format_arg;
-               if (_tmp207_ != NULL) {
-                       ValaStringLiteral* _tmp208_ = NULL;
-                       ValaExpression* _tmp209_ = NULL;
-                       ValaSourceReference* _tmp210_ = NULL;
-                       ValaSourceReference* _tmp211_ = NULL;
-                       ValaSourceFile* _tmp212_ = NULL;
-                       ValaSourceFile* _tmp213_ = NULL;
-                       const gchar* _tmp214_ = NULL;
-                       const gchar* _tmp215_ = NULL;
-                       gchar* _tmp216_ = NULL;
-                       gchar* _tmp217_ = NULL;
-                       ValaExpression* _tmp218_ = NULL;
-                       ValaSourceReference* _tmp219_ = NULL;
-                       ValaSourceReference* _tmp220_ = NULL;
-                       ValaSourceLocation _tmp221_ = {0};
-                       ValaSourceLocation _tmp222_ = {0};
-                       gint _tmp223_ = 0;
-                       ValaStringLiteral* _tmp224_ = NULL;
-                       const gchar* _tmp225_ = NULL;
-                       const gchar* _tmp226_ = NULL;
-                       gchar* _tmp227_ = NULL;
-                       gchar* _tmp228_ = NULL;
-                       gchar* _tmp229_ = NULL;
-                       gchar* _tmp230_ = NULL;
-                       _tmp208_ = format_arg;
-                       _tmp209_ = expr;
-                       _tmp210_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp209_);
-                       _tmp211_ = _tmp210_;
-                       _tmp212_ = vala_source_reference_get_file (_tmp211_);
-                       _tmp213_ = _tmp212_;
-                       _tmp214_ = vala_source_file_get_filename (_tmp213_);
-                       _tmp215_ = _tmp214_;
-                       _tmp216_ = g_path_get_basename (_tmp215_);
-                       _tmp217_ = _tmp216_;
-                       _tmp218_ = expr;
-                       _tmp219_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp218_);
-                       _tmp220_ = _tmp219_;
-                       vala_source_reference_get_begin (_tmp220_, &_tmp221_);
-                       _tmp222_ = _tmp221_;
-                       _tmp223_ = _tmp222_.line;
-                       _tmp224_ = format_arg;
-                       _tmp225_ = vala_string_literal_get_value (_tmp224_);
-                       _tmp226_ = _tmp225_;
-                       _tmp227_ = string_substring (_tmp226_, (glong) 1, (glong) (-1));
-                       _tmp228_ = _tmp227_;
-                       _tmp229_ = g_strdup_printf ("\"%s:%d: %s", _tmp217_, _tmp223_, _tmp228_);
-                       _tmp230_ = _tmp229_;
-                       vala_string_literal_set_value (_tmp208_, _tmp230_);
-                       _g_free0 (_tmp230_);
-                       _g_free0 (_tmp228_);
-                       _g_free0 (_tmp217_);
+               ValaExpression* _tmp154_ = NULL;
+               ValaStringLiteral* _tmp155_ = NULL;
+               ValaStringLiteral* _tmp156_ = NULL;
+               _tmp154_ = prev_arg;
+               _tmp155_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp154_, VALA_TYPE_STRING_LITERAL) ? ((ValaStringLiteral*) _tmp154_) : NULL);
+               format_arg = _tmp155_;
+               _tmp156_ = format_arg;
+               if (_tmp156_ != NULL) {
+                       ValaStringLiteral* _tmp157_ = NULL;
+                       ValaExpression* _tmp158_ = NULL;
+                       ValaSourceReference* _tmp159_ = NULL;
+                       ValaSourceReference* _tmp160_ = NULL;
+                       ValaSourceFile* _tmp161_ = NULL;
+                       ValaSourceFile* _tmp162_ = NULL;
+                       const gchar* _tmp163_ = NULL;
+                       const gchar* _tmp164_ = NULL;
+                       gchar* _tmp165_ = NULL;
+                       gchar* _tmp166_ = NULL;
+                       ValaExpression* _tmp167_ = NULL;
+                       ValaSourceReference* _tmp168_ = NULL;
+                       ValaSourceReference* _tmp169_ = NULL;
+                       ValaSourceLocation _tmp170_ = {0};
+                       ValaSourceLocation _tmp171_ = {0};
+                       gint _tmp172_ = 0;
+                       ValaStringLiteral* _tmp173_ = NULL;
+                       const gchar* _tmp174_ = NULL;
+                       const gchar* _tmp175_ = NULL;
+                       gchar* _tmp176_ = NULL;
+                       gchar* _tmp177_ = NULL;
+                       gchar* _tmp178_ = NULL;
+                       gchar* _tmp179_ = NULL;
+                       _tmp157_ = format_arg;
+                       _tmp158_ = expr;
+                       _tmp159_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp158_);
+                       _tmp160_ = _tmp159_;
+                       _tmp161_ = vala_source_reference_get_file (_tmp160_);
+                       _tmp162_ = _tmp161_;
+                       _tmp163_ = vala_source_file_get_filename (_tmp162_);
+                       _tmp164_ = _tmp163_;
+                       _tmp165_ = g_path_get_basename (_tmp164_);
+                       _tmp166_ = _tmp165_;
+                       _tmp167_ = expr;
+                       _tmp168_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp167_);
+                       _tmp169_ = _tmp168_;
+                       vala_source_reference_get_begin (_tmp169_, &_tmp170_);
+                       _tmp171_ = _tmp170_;
+                       _tmp172_ = _tmp171_.line;
+                       _tmp173_ = format_arg;
+                       _tmp174_ = vala_string_literal_get_value (_tmp173_);
+                       _tmp175_ = _tmp174_;
+                       _tmp176_ = string_substring (_tmp175_, (glong) 1, (glong) (-1));
+                       _tmp177_ = _tmp176_;
+                       _tmp178_ = g_strdup_printf ("\"%s:%d: %s", _tmp166_, _tmp172_, _tmp177_);
+                       _tmp179_ = _tmp178_;
+                       vala_string_literal_set_value (_tmp157_, _tmp179_);
+                       _g_free0 (_tmp179_);
+                       _g_free0 (_tmp177_);
+                       _g_free0 (_tmp166_);
                }
                _vala_code_node_unref0 (format_arg);
        }
@@ -4368,6 +4219,812 @@ static gboolean vala_semantic_analyzer_check_argument (ValaSemanticAnalyzer* sel
 }
 
 
+gboolean vala_semantic_analyzer_check_variadic_arguments (ValaSemanticAnalyzer* self, ValaIterator* arg_it, gint i, ValaSourceReference* source_reference) {
+       gboolean result = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (source_reference != NULL, FALSE);
+       while (TRUE) {
+               gboolean _tmp0_ = FALSE;
+               ValaIterator* _tmp1_ = NULL;
+               ValaExpression* arg = NULL;
+               ValaIterator* _tmp4_ = NULL;
+               gpointer _tmp5_ = NULL;
+               ValaExpression* _tmp6_ = NULL;
+               gboolean _tmp7_ = FALSE;
+               gboolean _tmp8_ = FALSE;
+               gint _tmp53_ = 0;
+               _tmp1_ = arg_it;
+               if (_tmp1_ != NULL) {
+                       ValaIterator* _tmp2_ = NULL;
+                       gboolean _tmp3_ = FALSE;
+                       _tmp2_ = arg_it;
+                       _tmp3_ = vala_iterator_next (_tmp2_);
+                       _tmp0_ = _tmp3_;
+               } else {
+                       _tmp0_ = FALSE;
+               }
+               if (!_tmp0_) {
+                       break;
+               }
+               _tmp4_ = arg_it;
+               _tmp5_ = vala_iterator_get (_tmp4_);
+               arg = (ValaExpression*) _tmp5_;
+               _tmp6_ = arg;
+               _tmp7_ = vala_code_node_get_error ((ValaCodeNode*) _tmp6_);
+               _tmp8_ = _tmp7_;
+               if (_tmp8_) {
+                       result = FALSE;
+                       _vala_code_node_unref0 (arg);
+                       return result;
+               } else {
+                       ValaExpression* _tmp9_ = NULL;
+                       ValaDataType* _tmp10_ = NULL;
+                       ValaDataType* _tmp11_ = NULL;
+                       _tmp9_ = arg;
+                       _tmp10_ = vala_expression_get_value_type (_tmp9_);
+                       _tmp11_ = _tmp10_;
+                       if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp11_, VALA_TYPE_SIGNAL_TYPE)) {
+                               ValaExpression* _tmp12_ = NULL;
+                               ValaExpression* _tmp13_ = NULL;
+                               ValaSourceReference* _tmp14_ = NULL;
+                               ValaSourceReference* _tmp15_ = NULL;
+                               _tmp12_ = arg;
+                               vala_code_node_set_error ((ValaCodeNode*) _tmp12_, TRUE);
+                               _tmp13_ = arg;
+                               _tmp14_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp13_);
+                               _tmp15_ = _tmp14_;
+                               vala_report_error (_tmp15_, "Cannot pass signals as arguments");
+                               result = FALSE;
+                               _vala_code_node_unref0 (arg);
+                               return result;
+                       } else {
+                               ValaExpression* _tmp16_ = NULL;
+                               ValaDataType* _tmp17_ = NULL;
+                               ValaDataType* _tmp18_ = NULL;
+                               _tmp16_ = arg;
+                               _tmp17_ = vala_expression_get_value_type (_tmp16_);
+                               _tmp18_ = _tmp17_;
+                               if (_tmp18_ == NULL) {
+                                       ValaExpression* _tmp19_ = NULL;
+                                       ValaSymbol* _tmp20_ = NULL;
+                                       ValaSymbol* _tmp21_ = NULL;
+                                       _tmp19_ = arg;
+                                       _tmp20_ = vala_expression_get_symbol_reference (_tmp19_);
+                                       _tmp21_ = _tmp20_;
+                                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp21_, VALA_TYPE_METHOD)) {
+                                               ValaSourceReference* _tmp22_ = NULL;
+                                               gint _tmp23_ = 0;
+                                               gchar* _tmp24_ = NULL;
+                                               gchar* _tmp25_ = NULL;
+                                               _tmp22_ = source_reference;
+                                               _tmp23_ = i;
+                                               _tmp24_ = g_strdup_printf ("Invalid type for argument %d", _tmp23_ + 1);
+                                               _tmp25_ = _tmp24_;
+                                               vala_report_error (_tmp22_, _tmp25_);
+                                               _g_free0 (_tmp25_);
+                                               result = FALSE;
+                                               _vala_code_node_unref0 (arg);
+                                               return result;
+                                       }
+                               } else {
+                                       gboolean _tmp26_ = FALSE;
+                                       ValaExpression* _tmp27_ = NULL;
+                                       ValaDataType* _tmp28_ = NULL;
+                                       ValaDataType* _tmp29_ = NULL;
+                                       _tmp27_ = arg;
+                                       _tmp28_ = vala_expression_get_target_type (_tmp27_);
+                                       _tmp29_ = _tmp28_;
+                                       if (_tmp29_ != NULL) {
+                                               ValaExpression* _tmp30_ = NULL;
+                                               ValaDataType* _tmp31_ = NULL;
+                                               ValaDataType* _tmp32_ = NULL;
+                                               ValaExpression* _tmp33_ = NULL;
+                                               ValaDataType* _tmp34_ = NULL;
+                                               ValaDataType* _tmp35_ = NULL;
+                                               gboolean _tmp36_ = FALSE;
+                                               _tmp30_ = arg;
+                                               _tmp31_ = vala_expression_get_value_type (_tmp30_);
+                                               _tmp32_ = _tmp31_;
+                                               _tmp33_ = arg;
+                                               _tmp34_ = vala_expression_get_target_type (_tmp33_);
+                                               _tmp35_ = _tmp34_;
+                                               _tmp36_ = vala_data_type_compatible (_tmp32_, _tmp35_);
+                                               _tmp26_ = !_tmp36_;
+                                       } else {
+                                               _tmp26_ = FALSE;
+                                       }
+                                       if (_tmp26_) {
+                                               ValaExpression* _tmp37_ = NULL;
+                                               ValaSourceReference* _tmp38_ = NULL;
+                                               ValaSourceReference* _tmp39_ = NULL;
+                                               gint _tmp40_ = 0;
+                                               ValaExpression* _tmp41_ = NULL;
+                                               ValaDataType* _tmp42_ = NULL;
+                                               ValaDataType* _tmp43_ = NULL;
+                                               gchar* _tmp44_ = NULL;
+                                               gchar* _tmp45_ = NULL;
+                                               ValaExpression* _tmp46_ = NULL;
+                                               ValaDataType* _tmp47_ = NULL;
+                                               ValaDataType* _tmp48_ = NULL;
+                                               gchar* _tmp49_ = NULL;
+                                               gchar* _tmp50_ = NULL;
+                                               gchar* _tmp51_ = NULL;
+                                               gchar* _tmp52_ = NULL;
+                                               _tmp37_ = arg;
+                                               _tmp38_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp37_);
+                                               _tmp39_ = _tmp38_;
+                                               _tmp40_ = i;
+                                               _tmp41_ = arg;
+                                               _tmp42_ = vala_expression_get_value_type (_tmp41_);
+                                               _tmp43_ = _tmp42_;
+                                               _tmp44_ = vala_code_node_to_string ((ValaCodeNode*) _tmp43_);
+                                               _tmp45_ = _tmp44_;
+                                               _tmp46_ = arg;
+                                               _tmp47_ = vala_expression_get_target_type (_tmp46_);
+                                               _tmp48_ = _tmp47_;
+                                               _tmp49_ = vala_code_node_to_string ((ValaCodeNode*) _tmp48_);
+                                               _tmp50_ = _tmp49_;
+                                               _tmp51_ = g_strdup_printf ("Argument %d: Cannot convert from `%s' to `%s'", _tmp40_ + 1, _tmp45_, _tmp50_);
+                                               _tmp52_ = _tmp51_;
+                                               vala_report_error (_tmp39_, _tmp52_);
+                                               _g_free0 (_tmp52_);
+                                               _g_free0 (_tmp50_);
+                                               _g_free0 (_tmp45_);
+                                               result = FALSE;
+                                               _vala_code_node_unref0 (arg);
+                                               return result;
+                                       }
+                               }
+                       }
+               }
+               _tmp53_ = i;
+               i = _tmp53_ + 1;
+               _vala_code_node_unref0 (arg);
+       }
+       result = TRUE;
+       return result;
+}
+
+
+static gunichar string_get_char (const gchar* self, glong index) {
+       gunichar result = 0U;
+       glong _tmp0_ = 0L;
+       gunichar _tmp1_ = 0U;
+       g_return_val_if_fail (self != NULL, 0U);
+       _tmp0_ = index;
+       _tmp1_ = g_utf8_get_char (((gchar*) self) + _tmp0_);
+       result = _tmp1_;
+       return result;
+}
+
+
+gboolean vala_semantic_analyzer_check_print_format (ValaSemanticAnalyzer* self, const gchar* format, ValaIterator* arg_it, ValaSourceReference* source_reference) {
+       gboolean result = FALSE;
+       gboolean unsupported_format = FALSE;
+       const gchar* format_it = NULL;
+       const gchar* _tmp0_ = NULL;
+       gunichar c = 0U;
+       const gchar* _tmp1_ = NULL;
+       gunichar _tmp2_ = 0U;
+       gboolean _tmp181_ = FALSE;
+       gboolean _tmp182_ = FALSE;
+       g_return_val_if_fail (self != NULL, FALSE);
+       g_return_val_if_fail (format != NULL, FALSE);
+       g_return_val_if_fail (arg_it != NULL, FALSE);
+       g_return_val_if_fail (source_reference != NULL, FALSE);
+       unsupported_format = FALSE;
+       _tmp0_ = format;
+       format_it = _tmp0_;
+       _tmp1_ = format_it;
+       _tmp2_ = string_get_char (_tmp1_, (glong) 0);
+       c = _tmp2_;
+       while (TRUE) {
+               gunichar _tmp3_ = 0U;
+               gunichar _tmp4_ = 0U;
+               const gchar* _tmp9_ = NULL;
+               const gchar* _tmp10_ = NULL;
+               const gchar* _tmp11_ = NULL;
+               gunichar _tmp12_ = 0U;
+               gunichar _tmp33_ = 0U;
+               gint length = 0;
+               gunichar _tmp45_ = 0U;
+               ValaDataType* param_type = NULL;
+               gboolean _tmp65_ = FALSE;
+               gboolean _tmp66_ = FALSE;
+               gunichar _tmp67_ = 0U;
+               gunichar _tmp168_ = 0U;
+               ValaDataType* _tmp173_ = NULL;
+               _tmp3_ = c;
+               if (!(_tmp3_ != ((gunichar) '\0'))) {
+                       break;
+               }
+               _tmp4_ = c;
+               if (_tmp4_ != ((gunichar) '%')) {
+                       const gchar* _tmp5_ = NULL;
+                       const gchar* _tmp6_ = NULL;
+                       const gchar* _tmp7_ = NULL;
+                       gunichar _tmp8_ = 0U;
+                       _tmp5_ = format_it;
+                       _tmp6_ = g_utf8_next_char (_tmp5_);
+                       format_it = _tmp6_;
+                       _tmp7_ = format_it;
+                       _tmp8_ = string_get_char (_tmp7_, (glong) 0);
+                       c = _tmp8_;
+                       continue;
+               }
+               _tmp9_ = format_it;
+               _tmp10_ = g_utf8_next_char (_tmp9_);
+               format_it = _tmp10_;
+               _tmp11_ = format_it;
+               _tmp12_ = string_get_char (_tmp11_, (glong) 0);
+               c = _tmp12_;
+               while (TRUE) {
+                       gboolean _tmp13_ = FALSE;
+                       gboolean _tmp14_ = FALSE;
+                       gboolean _tmp15_ = FALSE;
+                       gboolean _tmp16_ = FALSE;
+                       gunichar _tmp17_ = 0U;
+                       const gchar* _tmp22_ = NULL;
+                       const gchar* _tmp23_ = NULL;
+                       const gchar* _tmp24_ = NULL;
+                       gunichar _tmp25_ = 0U;
+                       _tmp17_ = c;
+                       if (_tmp17_ == ((gunichar) '#')) {
+                               _tmp16_ = TRUE;
+                       } else {
+                               gunichar _tmp18_ = 0U;
+                               _tmp18_ = c;
+                               _tmp16_ = _tmp18_ == ((gunichar) '0');
+                       }
+                       if (_tmp16_) {
+                               _tmp15_ = TRUE;
+                       } else {
+                               gunichar _tmp19_ = 0U;
+                               _tmp19_ = c;
+                               _tmp15_ = _tmp19_ == ((gunichar) '-');
+                       }
+                       if (_tmp15_) {
+                               _tmp14_ = TRUE;
+                       } else {
+                               gunichar _tmp20_ = 0U;
+                               _tmp20_ = c;
+                               _tmp14_ = _tmp20_ == ((gunichar) ' ');
+                       }
+                       if (_tmp14_) {
+                               _tmp13_ = TRUE;
+                       } else {
+                               gunichar _tmp21_ = 0U;
+                               _tmp21_ = c;
+                               _tmp13_ = _tmp21_ == ((gunichar) '+');
+                       }
+                       if (!_tmp13_) {
+                               break;
+                       }
+                       _tmp22_ = format_it;
+                       _tmp23_ = g_utf8_next_char (_tmp22_);
+                       format_it = _tmp23_;
+                       _tmp24_ = format_it;
+                       _tmp25_ = string_get_char (_tmp24_, (glong) 0);
+                       c = _tmp25_;
+               }
+               while (TRUE) {
+                       gboolean _tmp26_ = FALSE;
+                       gunichar _tmp27_ = 0U;
+                       const gchar* _tmp29_ = NULL;
+                       const gchar* _tmp30_ = NULL;
+                       const gchar* _tmp31_ = NULL;
+                       gunichar _tmp32_ = 0U;
+                       _tmp27_ = c;
+                       if (_tmp27_ >= ((gunichar) '0')) {
+                               gunichar _tmp28_ = 0U;
+                               _tmp28_ = c;
+                               _tmp26_ = _tmp28_ <= ((gunichar) '9');
+                       } else {
+                               _tmp26_ = FALSE;
+                       }
+                       if (!_tmp26_) {
+                               break;
+                       }
+                       _tmp29_ = format_it;
+                       _tmp30_ = g_utf8_next_char (_tmp29_);
+                       format_it = _tmp30_;
+                       _tmp31_ = format_it;
+                       _tmp32_ = string_get_char (_tmp31_, (glong) 0);
+                       c = _tmp32_;
+               }
+               _tmp33_ = c;
+               if (_tmp33_ == ((gunichar) '.')) {
+                       const gchar* _tmp34_ = NULL;
+                       const gchar* _tmp35_ = NULL;
+                       const gchar* _tmp36_ = NULL;
+                       gunichar _tmp37_ = 0U;
+                       _tmp34_ = format_it;
+                       _tmp35_ = g_utf8_next_char (_tmp34_);
+                       format_it = _tmp35_;
+                       _tmp36_ = format_it;
+                       _tmp37_ = string_get_char (_tmp36_, (glong) 0);
+                       c = _tmp37_;
+                       while (TRUE) {
+                               gboolean _tmp38_ = FALSE;
+                               gunichar _tmp39_ = 0U;
+                               const gchar* _tmp41_ = NULL;
+                               const gchar* _tmp42_ = NULL;
+                               const gchar* _tmp43_ = NULL;
+                               gunichar _tmp44_ = 0U;
+                               _tmp39_ = c;
+                               if (_tmp39_ >= ((gunichar) '0')) {
+                                       gunichar _tmp40_ = 0U;
+                                       _tmp40_ = c;
+                                       _tmp38_ = _tmp40_ <= ((gunichar) '9');
+                               } else {
+                                       _tmp38_ = FALSE;
+                               }
+                               if (!_tmp38_) {
+                                       break;
+                               }
+                               _tmp41_ = format_it;
+                               _tmp42_ = g_utf8_next_char (_tmp41_);
+                               format_it = _tmp42_;
+                               _tmp43_ = format_it;
+                               _tmp44_ = string_get_char (_tmp43_, (glong) 0);
+                               c = _tmp44_;
+                       }
+               }
+               length = 0;
+               _tmp45_ = c;
+               if (_tmp45_ == ((gunichar) 'h')) {
+                       const gchar* _tmp46_ = NULL;
+                       const gchar* _tmp47_ = NULL;
+                       const gchar* _tmp48_ = NULL;
+                       gunichar _tmp49_ = 0U;
+                       gunichar _tmp50_ = 0U;
+                       length = -1;
+                       _tmp46_ = format_it;
+                       _tmp47_ = g_utf8_next_char (_tmp46_);
+                       format_it = _tmp47_;
+                       _tmp48_ = format_it;
+                       _tmp49_ = string_get_char (_tmp48_, (glong) 0);
+                       c = _tmp49_;
+                       _tmp50_ = c;
+                       if (_tmp50_ == ((gunichar) 'h')) {
+                               const gchar* _tmp51_ = NULL;
+                               const gchar* _tmp52_ = NULL;
+                               const gchar* _tmp53_ = NULL;
+                               gunichar _tmp54_ = 0U;
+                               length = -2;
+                               _tmp51_ = format_it;
+                               _tmp52_ = g_utf8_next_char (_tmp51_);
+                               format_it = _tmp52_;
+                               _tmp53_ = format_it;
+                               _tmp54_ = string_get_char (_tmp53_, (glong) 0);
+                               c = _tmp54_;
+                       }
+               } else {
+                       gunichar _tmp55_ = 0U;
+                       _tmp55_ = c;
+                       if (_tmp55_ == ((gunichar) 'l')) {
+                               const gchar* _tmp56_ = NULL;
+                               const gchar* _tmp57_ = NULL;
+                               const gchar* _tmp58_ = NULL;
+                               gunichar _tmp59_ = 0U;
+                               length = 1;
+                               _tmp56_ = format_it;
+                               _tmp57_ = g_utf8_next_char (_tmp56_);
+                               format_it = _tmp57_;
+                               _tmp58_ = format_it;
+                               _tmp59_ = string_get_char (_tmp58_, (glong) 0);
+                               c = _tmp59_;
+                       } else {
+                               gunichar _tmp60_ = 0U;
+                               _tmp60_ = c;
+                               if (_tmp60_ == ((gunichar) 'z')) {
+                                       const gchar* _tmp61_ = NULL;
+                                       const gchar* _tmp62_ = NULL;
+                                       const gchar* _tmp63_ = NULL;
+                                       gunichar _tmp64_ = 0U;
+                                       length = 2;
+                                       _tmp61_ = format_it;
+                                       _tmp62_ = g_utf8_next_char (_tmp61_);
+                                       format_it = _tmp62_;
+                                       _tmp63_ = format_it;
+                                       _tmp64_ = string_get_char (_tmp63_, (glong) 0);
+                                       c = _tmp64_;
+                               }
+                       }
+               }
+               param_type = NULL;
+               _tmp67_ = c;
+               if (_tmp67_ == ((gunichar) 'd')) {
+                       _tmp66_ = TRUE;
+               } else {
+                       gunichar _tmp68_ = 0U;
+                       _tmp68_ = c;
+                       _tmp66_ = _tmp68_ == ((gunichar) 'i');
+               }
+               if (_tmp66_) {
+                       _tmp65_ = TRUE;
+               } else {
+                       gunichar _tmp69_ = 0U;
+                       _tmp69_ = c;
+                       _tmp65_ = _tmp69_ == ((gunichar) 'c');
+               }
+               if (_tmp65_) {
+                       gint _tmp70_ = 0;
+                       _tmp70_ = length;
+                       if (_tmp70_ == (-2)) {
+                               ValaCodeContext* _tmp71_ = NULL;
+                               ValaSemanticAnalyzer* _tmp72_ = NULL;
+                               ValaSemanticAnalyzer* _tmp73_ = NULL;
+                               ValaDataType* _tmp74_ = NULL;
+                               ValaDataType* _tmp75_ = NULL;
+                               _tmp71_ = self->priv->_context;
+                               _tmp72_ = vala_code_context_get_analyzer (_tmp71_);
+                               _tmp73_ = _tmp72_;
+                               _tmp74_ = _tmp73_->int8_type;
+                               _tmp75_ = _vala_code_node_ref0 (_tmp74_);
+                               _vala_code_node_unref0 (param_type);
+                               param_type = _tmp75_;
+                       } else {
+                               gint _tmp76_ = 0;
+                               _tmp76_ = length;
+                               if (_tmp76_ == (-1)) {
+                                       ValaCodeContext* _tmp77_ = NULL;
+                                       ValaSemanticAnalyzer* _tmp78_ = NULL;
+                                       ValaSemanticAnalyzer* _tmp79_ = NULL;
+                                       ValaDataType* _tmp80_ = NULL;
+                                       ValaDataType* _tmp81_ = NULL;
+                                       _tmp77_ = self->priv->_context;
+                                       _tmp78_ = vala_code_context_get_analyzer (_tmp77_);
+                                       _tmp79_ = _tmp78_;
+                                       _tmp80_ = _tmp79_->short_type;
+                                       _tmp81_ = _vala_code_node_ref0 (_tmp80_);
+                                       _vala_code_node_unref0 (param_type);
+                                       param_type = _tmp81_;
+                               } else {
+                                       gint _tmp82_ = 0;
+                                       _tmp82_ = length;
+                                       if (_tmp82_ == 0) {
+                                               ValaCodeContext* _tmp83_ = NULL;
+                                               ValaSemanticAnalyzer* _tmp84_ = NULL;
+                                               ValaSemanticAnalyzer* _tmp85_ = NULL;
+                                               ValaDataType* _tmp86_ = NULL;
+                                               ValaDataType* _tmp87_ = NULL;
+                                               _tmp83_ = self->priv->_context;
+                                               _tmp84_ = vala_code_context_get_analyzer (_tmp83_);
+                                               _tmp85_ = _tmp84_;
+                                               _tmp86_ = _tmp85_->int_type;
+                                               _tmp87_ = _vala_code_node_ref0 (_tmp86_);
+                                               _vala_code_node_unref0 (param_type);
+                                               param_type = _tmp87_;
+                                       } else {
+                                               gint _tmp88_ = 0;
+                                               _tmp88_ = length;
+                                               if (_tmp88_ == 1) {
+                                                       ValaCodeContext* _tmp89_ = NULL;
+                                                       ValaSemanticAnalyzer* _tmp90_ = NULL;
+                                                       ValaSemanticAnalyzer* _tmp91_ = NULL;
+                                                       ValaDataType* _tmp92_ = NULL;
+                                                       ValaDataType* _tmp93_ = NULL;
+                                                       _tmp89_ = self->priv->_context;
+                                                       _tmp90_ = vala_code_context_get_analyzer (_tmp89_);
+                                                       _tmp91_ = _tmp90_;
+                                                       _tmp92_ = _tmp91_->long_type;
+                                                       _tmp93_ = _vala_code_node_ref0 (_tmp92_);
+                                                       _vala_code_node_unref0 (param_type);
+                                                       param_type = _tmp93_;
+                                               } else {
+                                                       gint _tmp94_ = 0;
+                                                       _tmp94_ = length;
+                                                       if (_tmp94_ == 2) {
+                                                               ValaCodeContext* _tmp95_ = NULL;
+                                                               ValaSemanticAnalyzer* _tmp96_ = NULL;
+                                                               ValaSemanticAnalyzer* _tmp97_ = NULL;
+                                                               ValaDataType* _tmp98_ = NULL;
+                                                               ValaDataType* _tmp99_ = NULL;
+                                                               _tmp95_ = self->priv->_context;
+                                                               _tmp96_ = vala_code_context_get_analyzer (_tmp95_);
+                                                               _tmp97_ = _tmp96_;
+                                                               _tmp98_ = _tmp97_->ssize_t_type;
+                                                               _tmp99_ = _vala_code_node_ref0 (_tmp98_);
+                                                               _vala_code_node_unref0 (param_type);
+                                                               param_type = _tmp99_;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               } else {
+                       gboolean _tmp100_ = FALSE;
+                       gboolean _tmp101_ = FALSE;
+                       gboolean _tmp102_ = FALSE;
+                       gunichar _tmp103_ = 0U;
+                       _tmp103_ = c;
+                       if (_tmp103_ == ((gunichar) 'o')) {
+                               _tmp102_ = TRUE;
+                       } else {
+                               gunichar _tmp104_ = 0U;
+                               _tmp104_ = c;
+                               _tmp102_ = _tmp104_ == ((gunichar) 'u');
+                       }
+                       if (_tmp102_) {
+                               _tmp101_ = TRUE;
+                       } else {
+                               gunichar _tmp105_ = 0U;
+                               _tmp105_ = c;
+                               _tmp101_ = _tmp105_ == ((gunichar) 'x');
+                       }
+                       if (_tmp101_) {
+                               _tmp100_ = TRUE;
+                       } else {
+                               gunichar _tmp106_ = 0U;
+                               _tmp106_ = c;
+                               _tmp100_ = _tmp106_ == ((gunichar) 'X');
+                       }
+                       if (_tmp100_) {
+                               gint _tmp107_ = 0;
+                               _tmp107_ = length;
+                               if (_tmp107_ == (-2)) {
+                                       ValaCodeContext* _tmp108_ = NULL;
+                                       ValaSemanticAnalyzer* _tmp109_ = NULL;
+                                       ValaSemanticAnalyzer* _tmp110_ = NULL;
+                                       ValaDataType* _tmp111_ = NULL;
+                                       ValaDataType* _tmp112_ = NULL;
+                                       _tmp108_ = self->priv->_context;
+                                       _tmp109_ = vala_code_context_get_analyzer (_tmp108_);
+                                       _tmp110_ = _tmp109_;
+                                       _tmp111_ = _tmp110_->uchar_type;
+                                       _tmp112_ = _vala_code_node_ref0 (_tmp111_);
+                                       _vala_code_node_unref0 (param_type);
+                                       param_type = _tmp112_;
+                               } else {
+                                       gint _tmp113_ = 0;
+                                       _tmp113_ = length;
+                                       if (_tmp113_ == (-1)) {
+                                               ValaCodeContext* _tmp114_ = NULL;
+                                               ValaSemanticAnalyzer* _tmp115_ = NULL;
+                                               ValaSemanticAnalyzer* _tmp116_ = NULL;
+                                               ValaDataType* _tmp117_ = NULL;
+                                               ValaDataType* _tmp118_ = NULL;
+                                               _tmp114_ = self->priv->_context;
+                                               _tmp115_ = vala_code_context_get_analyzer (_tmp114_);
+                                               _tmp116_ = _tmp115_;
+                                               _tmp117_ = _tmp116_->ushort_type;
+                                               _tmp118_ = _vala_code_node_ref0 (_tmp117_);
+                                               _vala_code_node_unref0 (param_type);
+                                               param_type = _tmp118_;
+                                       } else {
+                                               gint _tmp119_ = 0;
+                                               _tmp119_ = length;
+                                               if (_tmp119_ == 0) {
+                                                       ValaCodeContext* _tmp120_ = NULL;
+                                                       ValaSemanticAnalyzer* _tmp121_ = NULL;
+                                                       ValaSemanticAnalyzer* _tmp122_ = NULL;
+                                                       ValaDataType* _tmp123_ = NULL;
+                                                       ValaDataType* _tmp124_ = NULL;
+                                                       _tmp120_ = self->priv->_context;
+                                                       _tmp121_ = vala_code_context_get_analyzer (_tmp120_);
+                                                       _tmp122_ = _tmp121_;
+                                                       _tmp123_ = _tmp122_->uint_type;
+                                                       _tmp124_ = _vala_code_node_ref0 (_tmp123_);
+                                                       _vala_code_node_unref0 (param_type);
+                                                       param_type = _tmp124_;
+                                               } else {
+                                                       gint _tmp125_ = 0;
+                                                       _tmp125_ = length;
+                                                       if (_tmp125_ == 1) {
+                                                               ValaCodeContext* _tmp126_ = NULL;
+                                                               ValaSemanticAnalyzer* _tmp127_ = NULL;
+                                                               ValaSemanticAnalyzer* _tmp128_ = NULL;
+                                                               ValaDataType* _tmp129_ = NULL;
+                                                               ValaDataType* _tmp130_ = NULL;
+                                                               _tmp126_ = self->priv->_context;
+                                                               _tmp127_ = vala_code_context_get_analyzer (_tmp126_);
+                                                               _tmp128_ = _tmp127_;
+                                                               _tmp129_ = _tmp128_->ulong_type;
+                                                               _tmp130_ = _vala_code_node_ref0 (_tmp129_);
+                                                               _vala_code_node_unref0 (param_type);
+                                                               param_type = _tmp130_;
+                                                       } else {
+                                                               gint _tmp131_ = 0;
+                                                               _tmp131_ = length;
+                                                               if (_tmp131_ == 2) {
+                                                                       ValaCodeContext* _tmp132_ = NULL;
+                                                                       ValaSemanticAnalyzer* _tmp133_ = NULL;
+                                                                       ValaSemanticAnalyzer* _tmp134_ = NULL;
+                                                                       ValaDataType* _tmp135_ = NULL;
+                                                                       ValaDataType* _tmp136_ = NULL;
+                                                                       _tmp132_ = self->priv->_context;
+                                                                       _tmp133_ = vala_code_context_get_analyzer (_tmp132_);
+                                                                       _tmp134_ = _tmp133_;
+                                                                       _tmp135_ = _tmp134_->size_t_type;
+                                                                       _tmp136_ = _vala_code_node_ref0 (_tmp135_);
+                                                                       _vala_code_node_unref0 (param_type);
+                                                                       param_type = _tmp136_;
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                       } else {
+                               gboolean _tmp137_ = FALSE;
+                               gboolean _tmp138_ = FALSE;
+                               gboolean _tmp139_ = FALSE;
+                               gboolean _tmp140_ = FALSE;
+                               gboolean _tmp141_ = FALSE;
+                               gboolean _tmp142_ = FALSE;
+                               gboolean _tmp143_ = FALSE;
+                               gunichar _tmp144_ = 0U;
+                               _tmp144_ = c;
+                               if (_tmp144_ == ((gunichar) 'e')) {
+                                       _tmp143_ = TRUE;
+                               } else {
+                                       gunichar _tmp145_ = 0U;
+                                       _tmp145_ = c;
+                                       _tmp143_ = _tmp145_ == ((gunichar) 'E');
+                               }
+                               if (_tmp143_) {
+                                       _tmp142_ = TRUE;
+                               } else {
+                                       gunichar _tmp146_ = 0U;
+                                       _tmp146_ = c;
+                                       _tmp142_ = _tmp146_ == ((gunichar) 'f');
+                               }
+                               if (_tmp142_) {
+                                       _tmp141_ = TRUE;
+                               } else {
+                                       gunichar _tmp147_ = 0U;
+                                       _tmp147_ = c;
+                                       _tmp141_ = _tmp147_ == ((gunichar) 'F');
+                               }
+                               if (_tmp141_) {
+                                       _tmp140_ = TRUE;
+                               } else {
+                                       gunichar _tmp148_ = 0U;
+                                       _tmp148_ = c;
+                                       _tmp140_ = _tmp148_ == ((gunichar) 'g');
+                               }
+                               if (_tmp140_) {
+                                       _tmp139_ = TRUE;
+                               } else {
+                                       gunichar _tmp149_ = 0U;
+                                       _tmp149_ = c;
+                                       _tmp139_ = _tmp149_ == ((gunichar) 'G');
+                               }
+                               if (_tmp139_) {
+                                       _tmp138_ = TRUE;
+                               } else {
+                                       gunichar _tmp150_ = 0U;
+                                       _tmp150_ = c;
+                                       _tmp138_ = _tmp150_ == ((gunichar) 'a');
+                               }
+                               if (_tmp138_) {
+                                       _tmp137_ = TRUE;
+                               } else {
+                                       gunichar _tmp151_ = 0U;
+                                       _tmp151_ = c;
+                                       _tmp137_ = _tmp151_ == ((gunichar) 'A');
+                               }
+                               if (_tmp137_) {
+                                       ValaCodeContext* _tmp152_ = NULL;
+                                       ValaSemanticAnalyzer* _tmp153_ = NULL;
+                                       ValaSemanticAnalyzer* _tmp154_ = NULL;
+                                       ValaDataType* _tmp155_ = NULL;
+                                       ValaDataType* _tmp156_ = NULL;
+                                       _tmp152_ = self->priv->_context;
+                                       _tmp153_ = vala_code_context_get_analyzer (_tmp152_);
+                                       _tmp154_ = _tmp153_;
+                                       _tmp155_ = _tmp154_->double_type;
+                                       _tmp156_ = _vala_code_node_ref0 (_tmp155_);
+                                       _vala_code_node_unref0 (param_type);
+                                       param_type = _tmp156_;
+                               } else {
+                                       gunichar _tmp157_ = 0U;
+                                       _tmp157_ = c;
+                                       if (_tmp157_ == ((gunichar) 's')) {
+                                               ValaCodeContext* _tmp158_ = NULL;
+                                               ValaSemanticAnalyzer* _tmp159_ = NULL;
+                                               ValaSemanticAnalyzer* _tmp160_ = NULL;
+                                               ValaDataType* _tmp161_ = NULL;
+                                               ValaDataType* _tmp162_ = NULL;
+                                               _tmp158_ = self->priv->_context;
+                                               _tmp159_ = vala_code_context_get_analyzer (_tmp158_);
+                                               _tmp160_ = _tmp159_;
+                                               _tmp161_ = _tmp160_->string_type;
+                                               _tmp162_ = _vala_code_node_ref0 (_tmp161_);
+                                               _vala_code_node_unref0 (param_type);
+                                               param_type = _tmp162_;
+                                       } else {
+                                               gunichar _tmp163_ = 0U;
+                                               _tmp163_ = c;
+                                               if (_tmp163_ == ((gunichar) 'p')) {
+                                                       ValaVoidType* _tmp164_ = NULL;
+                                                       ValaVoidType* _tmp165_ = NULL;
+                                                       ValaPointerType* _tmp166_ = NULL;
+                                                       _tmp164_ = vala_void_type_new (NULL);
+                                                       _tmp165_ = _tmp164_;
+                                                       _tmp166_ = vala_pointer_type_new ((ValaDataType*) _tmp165_, NULL);
+                                                       _vala_code_node_unref0 (param_type);
+                                                       param_type = (ValaDataType*) _tmp166_;
+                                                       _vala_code_node_unref0 (_tmp165_);
+                                               } else {
+                                                       gunichar _tmp167_ = 0U;
+                                                       _tmp167_ = c;
+                                                       if (_tmp167_ == ((gunichar) '%')) {
+                                                       } else {
+                                                               unsupported_format = TRUE;
+                                                               _vala_code_node_unref0 (param_type);
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+               _tmp168_ = c;
+               if (_tmp168_ != ((gunichar) '\0')) {
+                       const gchar* _tmp169_ = NULL;
+                       const gchar* _tmp170_ = NULL;
+                       const gchar* _tmp171_ = NULL;
+                       gunichar _tmp172_ = 0U;
+                       _tmp169_ = format_it;
+                       _tmp170_ = g_utf8_next_char (_tmp169_);
+                       format_it = _tmp170_;
+                       _tmp171_ = format_it;
+                       _tmp172_ = string_get_char (_tmp171_, (glong) 0);
+                       c = _tmp172_;
+               }
+               _tmp173_ = param_type;
+               if (_tmp173_ != NULL) {
+                       ValaIterator* _tmp174_ = NULL;
+                       gboolean _tmp175_ = FALSE;
+                       _tmp174_ = arg_it;
+                       _tmp175_ = vala_iterator_next (_tmp174_);
+                       if (_tmp175_) {
+                               ValaExpression* arg = NULL;
+                               ValaIterator* _tmp176_ = NULL;
+                               gpointer _tmp177_ = NULL;
+                               ValaExpression* _tmp178_ = NULL;
+                               ValaDataType* _tmp179_ = NULL;
+                               _tmp176_ = arg_it;
+                               _tmp177_ = vala_iterator_get (_tmp176_);
+                               arg = (ValaExpression*) _tmp177_;
+                               _tmp178_ = arg;
+                               _tmp179_ = param_type;
+                               vala_expression_set_target_type (_tmp178_, _tmp179_);
+                               _vala_code_node_unref0 (arg);
+                       } else {
+                               ValaSourceReference* _tmp180_ = NULL;
+                               _tmp180_ = source_reference;
+                               vala_report_error (_tmp180_, "Too few arguments for specified format");
+                               result = FALSE;
+                               _vala_code_node_unref0 (param_type);
+                               return result;
+                       }
+               }
+               _vala_code_node_unref0 (param_type);
+       }
+       _tmp182_ = unsupported_format;
+       if (!_tmp182_) {
+               ValaIterator* _tmp183_ = NULL;
+               gboolean _tmp184_ = FALSE;
+               _tmp183_ = arg_it;
+               _tmp184_ = vala_iterator_next (_tmp183_);
+               _tmp181_ = _tmp184_;
+       } else {
+               _tmp181_ = FALSE;
+       }
+       if (_tmp181_) {
+               ValaSourceReference* _tmp185_ = NULL;
+               _tmp185_ = source_reference;
+               vala_report_error (_tmp185_, "Too many arguments for specified format");
+               result = FALSE;
+               return result;
+       }
+       result = TRUE;
+       return result;
+}
+
+
 static ValaDataType* vala_semantic_analyzer_get_instance_base_type (ValaDataType* instance_type, ValaDataType* base_type, ValaCodeNode* node_reference) {
        ValaDataType* result = NULL;
        ValaReferenceType* instance_base_type = NULL;
@@ -6594,9 +7251,9 @@ ValaDataType* vala_semantic_analyzer_get_current_return_type (ValaSemanticAnalyz
 
 static void vala_semantic_analyzer_class_init (ValaSemanticAnalyzerClass * klass) {
        vala_semantic_analyzer_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_semantic_analyzer_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_semantic_analyzer_finalize;
        g_type_class_add_private (klass, sizeof (ValaSemanticAnalyzerPrivate));
-       VALA_CODE_VISITOR_CLASS (klass)->visit_source_file = vala_semantic_analyzer_real_visit_source_file;
+       ((ValaCodeVisitorClass *) klass)->visit_source_file = vala_semantic_analyzer_real_visit_source_file;
 }
 
 
index 97dad79..cb1a575 100644 (file)
@@ -446,33 +446,9 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
                        }
                }
 
-               if (ellipsis) {
-                       while (arg_it != null && arg_it.next ()) {
-                               var arg = arg_it.get ();
-                               if (arg.error) {
-                                       // ignore inner error
-                                       expr.error = true;
-                                       return false;
-                               } else if (arg.value_type is SignalType) {
-                                       arg.error = true;
-                                       Report.error (arg.source_reference, "Cannot pass signals as arguments");
-                                       return false;
-                               } else if (arg.value_type == null) {
-                                       // disallow untyped arguments except for type inference of callbacks
-                                       if (!(arg.symbol_reference is Method)) {
-                                               expr.error = true;
-                                               Report.error (expr.source_reference, "Invalid type for argument %d".printf (i + 1));
-                                               return false;
-                                       }
-                               } else if (arg.target_type != null && !arg.value_type.compatible (arg.target_type)) {
-                                       // target_type known for printf arguments
-                                       expr.error = true;
-                                       Report.error (arg.source_reference, "Argument %d: Cannot convert from `%s' to `%s'".printf (i + 1, arg.value_type.to_string (), arg.target_type.to_string ()));
-                                       return false;
-                               }
-
-                               i++;
-                       }
+               if (ellipsis && !check_variadic_arguments (arg_it, i, expr.source_reference)) {
+                       expr.error = true;
+                       return false;
                } else if (!ellipsis && arg_it != null && arg_it.next ()) {
                        expr.error = true;
                        var m = mtype as MethodType;
@@ -595,6 +571,154 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
                return true;
        }
 
+       public bool check_variadic_arguments (Iterator<Expression>? arg_it, int i, SourceReference source_reference) {
+               while (arg_it != null && arg_it.next ()) {
+                       var arg = arg_it.get ();
+                       if (arg.error) {
+                               // ignore inner error
+                               return false;
+                       } else if (arg.value_type is SignalType) {
+                               arg.error = true;
+                               Report.error (arg.source_reference, "Cannot pass signals as arguments");
+                               return false;
+                       } else if (arg.value_type == null) {
+                               // disallow untyped arguments except for type inference of callbacks
+                               if (!(arg.symbol_reference is Method)) {
+                                       Report.error (source_reference, "Invalid type for argument %d".printf (i + 1));
+                                       return false;
+                               }
+                       } else if (arg.target_type != null && !arg.value_type.compatible (arg.target_type)) {
+                               // target_type known for printf arguments
+                               Report.error (arg.source_reference, "Argument %d: Cannot convert from `%s' to `%s'".printf (i + 1, arg.value_type.to_string (), arg.target_type.to_string ()));
+                               return false;
+                       }
+
+                       i++;
+               }
+
+               return true;
+       }
+
+       public bool check_print_format (string format, Iterator<Expression> arg_it, SourceReference source_reference) {
+               bool unsupported_format = false;
+
+               weak string format_it = format;
+               unichar c = format_it.get_char ();
+               while (c != '\0') {
+                       if (c != '%') {
+                               format_it = format_it.next_char ();
+                               c = format_it.get_char ();
+                               continue;
+                       }
+
+                       format_it = format_it.next_char ();
+                       c = format_it.get_char ();
+                       // flags
+                       while (c == '#' || c == '0' || c == '-' || c == ' ' || c == '+') {
+                               format_it = format_it.next_char ();
+                               c = format_it.get_char ();
+                       }
+                       // field width
+                       while (c >= '0' && c <= '9') {
+                               format_it = format_it.next_char ();
+                               c = format_it.get_char ();
+                       }
+                       // precision
+                       if (c == '.') {
+                               format_it = format_it.next_char ();
+                               c = format_it.get_char ();
+                               while (c >= '0' && c <= '9') {
+                                       format_it = format_it.next_char ();
+                                       c = format_it.get_char ();
+                               }
+                       }
+                       // length modifier
+                       int length = 0;
+                       if (c == 'h') {
+                               length = -1;
+                               format_it = format_it.next_char ();
+                               c = format_it.get_char ();
+                               if (c == 'h') {
+                                       length = -2;
+                                       format_it = format_it.next_char ();
+                                       c = format_it.get_char ();
+                               }
+                       } else if (c == 'l') {
+                               length = 1;
+                               format_it = format_it.next_char ();
+                               c = format_it.get_char ();
+                       } else if (c == 'z') {
+                               length = 2;
+                               format_it = format_it.next_char ();
+                               c = format_it.get_char ();
+                       }
+                       // conversion specifier
+                       DataType param_type = null;
+                       if (c == 'd' || c == 'i' || c == 'c') {
+                               // integer
+                               if (length == -2) {
+                                       param_type = context.analyzer.int8_type;
+                               } else if (length == -1) {
+                                       param_type = context.analyzer.short_type;
+                               } else if (length == 0) {
+                                       param_type = context.analyzer.int_type;
+                               } else if (length == 1) {
+                                       param_type = context.analyzer.long_type;
+                               } else if (length == 2) {
+                                       param_type = context.analyzer.ssize_t_type;
+                               }
+                       } else if (c == 'o' || c == 'u' || c == 'x' || c == 'X') {
+                               // unsigned integer
+                               if (length == -2) {
+                                       param_type = context.analyzer.uchar_type;
+                               } else if (length == -1) {
+                                       param_type = context.analyzer.ushort_type;
+                               } else if (length == 0) {
+                                       param_type = context.analyzer.uint_type;
+                               } else if (length == 1) {
+                                       param_type = context.analyzer.ulong_type;
+                               } else if (length == 2) {
+                                       param_type = context.analyzer.size_t_type;
+                               }
+                       } else if (c == 'e' || c == 'E' || c == 'f' || c == 'F'
+                                          || c == 'g' || c == 'G' || c == 'a' || c == 'A') {
+                               // double
+                               param_type = context.analyzer.double_type;
+                       } else if (c == 's') {
+                               // string
+                               param_type = context.analyzer.string_type;
+                       } else if (c == 'p') {
+                               // pointer
+                               param_type = new PointerType (new VoidType ());
+                       } else if (c == '%') {
+                               // literal %
+                       } else {
+                               unsupported_format = true;
+                               break;
+                       }
+                       if (c != '\0') {
+                               format_it = format_it.next_char ();
+                               c = format_it.get_char ();
+                       }
+                       if (param_type != null) {
+                               if (arg_it.next ()) {
+                                       Expression arg = arg_it.get ();
+
+                                       arg.target_type = param_type;
+                               } else {
+                                       Report.error (source_reference, "Too few arguments for specified format");
+                                       return false;
+                               }
+                       }
+               }
+               if (!unsupported_format && arg_it.next ()) {
+                       Report.error (source_reference, "Too many arguments for specified format");
+                       return false;
+               }
+
+               return true;
+       }
+
        private static DataType? get_instance_base_type (DataType instance_type, DataType base_type, CodeNode node_reference) {
                // construct a new type reference for the base type with correctly linked type arguments
                ReferenceType instance_base_type;
index 84aeee8..3c58888 100644 (file)
@@ -1542,12 +1542,12 @@ static void vala_signal_set_default_handler (ValaSignal* self, ValaMethod* value
 
 static void vala_signal_class_init (ValaSignalClass * klass) {
        vala_signal_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_signal_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_signal_finalize;
        g_type_class_add_private (klass, sizeof (ValaSignalPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_signal_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_signal_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_signal_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_signal_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_signal_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_signal_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_signal_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_signal_real_check;
 }
 
 
index 1821717..5482068 100644 (file)
@@ -1014,16 +1014,16 @@ void vala_signal_type_set_signal_symbol (ValaSignalType* self, ValaSignal* value
 
 static void vala_signal_type_class_init (ValaSignalTypeClass * klass) {
        vala_signal_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_signal_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_signal_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaSignalTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->is_invokable = vala_signal_type_real_is_invokable;
-       VALA_DATA_TYPE_CLASS (klass)->get_return_type = vala_signal_type_real_get_return_type;
-       VALA_DATA_TYPE_CLASS (klass)->get_parameters = vala_signal_type_real_get_parameters;
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_signal_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->compatible = vala_signal_type_real_compatible;
-       VALA_DATA_TYPE_CLASS (klass)->to_qualified_string = vala_signal_type_real_to_qualified_string;
-       VALA_DATA_TYPE_CLASS (klass)->get_member = vala_signal_type_real_get_member;
-       VALA_DATA_TYPE_CLASS (klass)->is_accessible = vala_signal_type_real_is_accessible;
+       ((ValaDataTypeClass *) klass)->is_invokable = vala_signal_type_real_is_invokable;
+       ((ValaDataTypeClass *) klass)->get_return_type = vala_signal_type_real_get_return_type;
+       ((ValaDataTypeClass *) klass)->get_parameters = vala_signal_type_real_get_parameters;
+       ((ValaDataTypeClass *) klass)->copy = vala_signal_type_real_copy;
+       ((ValaDataTypeClass *) klass)->compatible = vala_signal_type_real_compatible;
+       ((ValaDataTypeClass *) klass)->to_qualified_string = vala_signal_type_real_to_qualified_string;
+       ((ValaDataTypeClass *) klass)->get_member = vala_signal_type_real_get_member;
+       ((ValaDataTypeClass *) klass)->is_accessible = vala_signal_type_real_is_accessible;
 }
 
 
index 3c9986e..d4b7bcb 100644 (file)
@@ -1513,15 +1513,15 @@ void vala_sizeof_expression_set_type_reference (ValaSizeofExpression* self, Vala
 
 static void vala_sizeof_expression_class_init (ValaSizeofExpressionClass * klass) {
        vala_sizeof_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_sizeof_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_sizeof_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaSizeofExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_sizeof_expression_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_sizeof_expression_real_accept_children;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_sizeof_expression_real_is_pure;
-       VALA_EXPRESSION_CLASS (klass)->is_constant = vala_sizeof_expression_real_is_constant;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_sizeof_expression_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_sizeof_expression_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_sizeof_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_sizeof_expression_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_sizeof_expression_real_accept_children;
+       ((ValaExpressionClass *) klass)->is_pure = vala_sizeof_expression_real_is_pure;
+       ((ValaExpressionClass *) klass)->is_constant = vala_sizeof_expression_real_is_constant;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_sizeof_expression_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_sizeof_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_sizeof_expression_real_emit;
 }
 
 
index 95b347d..fd9f925 100644 (file)
@@ -2035,16 +2035,16 @@ static void vala_slice_expression_set_stop (ValaSliceExpression* self, ValaExpre
 
 static void vala_slice_expression_class_init (ValaSliceExpressionClass * klass) {
        vala_slice_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_slice_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_slice_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaSliceExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_slice_expression_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_slice_expression_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_slice_expression_real_replace_expression;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_slice_expression_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_slice_expression_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_slice_expression_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_slice_expression_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_slice_expression_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_slice_expression_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_slice_expression_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_slice_expression_real_replace_expression;
+       ((ValaExpressionClass *) klass)->is_pure = vala_slice_expression_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_slice_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_slice_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_slice_expression_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_slice_expression_real_get_used_variables;
 }
 
 
index 561eb60..bdbe06d 100644 (file)
@@ -86,7 +86,7 @@ typedef struct _ValaUsingDirective ValaUsingDirective;
 typedef struct _ValaUsingDirectiveClass ValaUsingDirectiveClass;
 #define _g_free0(var) (var = (g_free (var), NULL))
 #define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
-#define _g_mapped_file_free0(var) ((var == NULL) ? NULL : (var = (g_mapped_file_free (var), NULL)))
+#define _g_mapped_file_unref0(var) ((var == NULL) ? NULL : (var = (g_mapped_file_unref (var), NULL)))
 #define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
 
 #define VALA_TYPE_CODE_VISITOR (vala_code_visitor_get_type ())
@@ -1090,9 +1090,9 @@ static void vala_source_file_read_source_file (ValaSourceFile* self) {
                g_file_get_contents (_tmp0_, &_tmp1_, NULL, &_inner_error_);
                _g_free0 (cont);
                cont = _tmp1_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_FILE_ERROR) {
-                               goto __catch14_g_file_error;
+                               goto __catch16_g_file_error;
                        }
                        _g_free0 (cont);
                        g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
@@ -1100,8 +1100,8 @@ static void vala_source_file_read_source_file (ValaSourceFile* self) {
                        return;
                }
        }
-       goto __finally14;
-       __catch14_g_file_error:
+       goto __finally16;
+       __catch16_g_file_error:
        {
                GError* fe = NULL;
                fe = _inner_error_;
@@ -1110,8 +1110,8 @@ static void vala_source_file_read_source_file (ValaSourceFile* self) {
                _g_free0 (cont);
                return;
        }
-       __finally14:
-       if (_inner_error_ != NULL) {
+       __finally16:
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                _g_free0 (cont);
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
@@ -1212,9 +1212,9 @@ gchar* vala_source_file_get_mapped_contents (ValaSourceFile* self) {
                        _tmp6_ = self->priv->_filename;
                        _tmp7_ = g_mapped_file_new (_tmp6_, FALSE, &_inner_error_);
                        _tmp5_ = _tmp7_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == G_FILE_ERROR) {
-                                       goto __catch15_g_file_error;
+                                       goto __catch17_g_file_error;
                                }
                                g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                                g_clear_error (&_inner_error_);
@@ -1222,12 +1222,12 @@ gchar* vala_source_file_get_mapped_contents (ValaSourceFile* self) {
                        }
                        _tmp8_ = _tmp5_;
                        _tmp5_ = NULL;
-                       _g_mapped_file_free0 (self->priv->mapped_file);
+                       _g_mapped_file_unref0 (self->priv->mapped_file);
                        self->priv->mapped_file = _tmp8_;
-                       _g_mapped_file_free0 (_tmp5_);
+                       _g_mapped_file_unref0 (_tmp5_);
                }
-               goto __finally15;
-               __catch15_g_file_error:
+               goto __finally17;
+               __catch17_g_file_error:
                {
                        GError* e = NULL;
                        const gchar* _tmp9_ = NULL;
@@ -1248,8 +1248,8 @@ gchar* vala_source_file_get_mapped_contents (ValaSourceFile* self) {
                        _g_error_free0 (e);
                        return result;
                }
-               __finally15:
-               if (_inner_error_ != NULL) {
+               __finally17:
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
                        return NULL;
@@ -1646,7 +1646,7 @@ void vala_value_take_source_file (GValue* value, gpointer v_object) {
 
 static void vala_source_file_class_init (ValaSourceFileClass * klass) {
        vala_source_file_parent_class = g_type_class_peek_parent (klass);
-       VALA_SOURCE_FILE_CLASS (klass)->finalize = vala_source_file_finalize;
+       ((ValaSourceFileClass *) klass)->finalize = vala_source_file_finalize;
        g_type_class_add_private (klass, sizeof (ValaSourceFilePrivate));
 }
 
@@ -1680,6 +1680,7 @@ static void vala_source_file_instance_init (ValaSourceFile * self) {
 static void vala_source_file_finalize (ValaSourceFile* obj) {
        ValaSourceFile * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_SOURCE_FILE, ValaSourceFile);
+       g_signal_handlers_destroy (self);
        _g_free0 (self->priv->_filename);
        _g_free0 (self->priv->_gir_namespace);
        _g_free0 (self->priv->_gir_version);
@@ -1690,7 +1691,7 @@ static void vala_source_file_finalize (ValaSourceFile* obj) {
        _g_free0 (self->priv->csource_filename);
        _g_free0 (self->priv->cinclude_filename);
        _vala_iterable_unref0 (self->priv->source_array);
-       _g_mapped_file_free0 (self->priv->mapped_file);
+       _g_mapped_file_unref0 (self->priv->mapped_file);
        _g_free0 (self->priv->_content);
 }
 
index 7a3de4f..64ace05 100644 (file)
@@ -425,7 +425,7 @@ void vala_value_take_source_reference (GValue* value, gpointer v_object) {
 
 static void vala_source_reference_class_init (ValaSourceReferenceClass * klass) {
        vala_source_reference_parent_class = g_type_class_peek_parent (klass);
-       VALA_SOURCE_REFERENCE_CLASS (klass)->finalize = vala_source_reference_finalize;
+       ((ValaSourceReferenceClass *) klass)->finalize = vala_source_reference_finalize;
        g_type_class_add_private (klass, sizeof (ValaSourceReferencePrivate));
 }
 
@@ -439,6 +439,7 @@ static void vala_source_reference_instance_init (ValaSourceReference * self) {
 static void vala_source_reference_finalize (ValaSourceReference* obj) {
        ValaSourceReference * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_SOURCE_REFERENCE, ValaSourceReference);
+       g_signal_handlers_destroy (self);
        _vala_iterable_unref0 (self->priv->_using_directives);
 }
 
index 0cf363e..ee2713d 100644 (file)
@@ -442,10 +442,10 @@ gint vala_statement_list_get_length (ValaStatementList* self) {
 
 static void vala_statement_list_class_init (ValaStatementListClass * klass) {
        vala_statement_list_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_statement_list_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_statement_list_finalize;
        g_type_class_add_private (klass, sizeof (ValaStatementListPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_statement_list_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_statement_list_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_statement_list_real_accept;
+       ((ValaCodeNodeClass *) klass)->emit = vala_statement_list_real_emit;
 }
 
 
index 6b482f6..ea6133a 100644 (file)
@@ -1650,14 +1650,14 @@ void vala_string_literal_set_translate (ValaStringLiteral* self, gboolean value)
 
 static void vala_string_literal_class_init (ValaStringLiteralClass * klass) {
        vala_string_literal_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_string_literal_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_string_literal_finalize;
        g_type_class_add_private (klass, sizeof (ValaStringLiteralPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_string_literal_real_accept;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_string_literal_real_is_pure;
-       VALA_EXPRESSION_CLASS (klass)->is_non_null = vala_string_literal_real_is_non_null;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_string_literal_real_to_string;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_string_literal_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_string_literal_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_string_literal_real_accept;
+       ((ValaExpressionClass *) klass)->is_pure = vala_string_literal_real_is_pure;
+       ((ValaExpressionClass *) klass)->is_non_null = vala_string_literal_real_is_non_null;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_string_literal_real_to_string;
+       ((ValaCodeNodeClass *) klass)->check = vala_string_literal_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_string_literal_real_emit;
 }
 
 
index d1ec324..18f0a3a 100644 (file)
@@ -3053,18 +3053,18 @@ void vala_struct_set_signed (ValaStruct* self, gboolean value) {
 
 static void vala_struct_class_init (ValaStructClass * klass) {
        vala_struct_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_struct_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_struct_finalize;
        g_type_class_add_private (klass, sizeof (ValaStructPrivate));
-       VALA_SYMBOL_CLASS (klass)->add_constant = vala_struct_real_add_constant;
-       VALA_SYMBOL_CLASS (klass)->add_field = vala_struct_real_add_field;
-       VALA_SYMBOL_CLASS (klass)->add_method = vala_struct_real_add_method;
-       VALA_SYMBOL_CLASS (klass)->add_property = vala_struct_real_add_property;
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_struct_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_struct_real_accept_children;
-       VALA_TYPESYMBOL_CLASS (klass)->get_type_parameter_index = vala_struct_real_get_type_parameter_index;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_struct_real_replace_type;
-       VALA_TYPESYMBOL_CLASS (klass)->is_subtype_of = vala_struct_real_is_subtype_of;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_struct_real_check;
+       ((ValaSymbolClass *) klass)->add_constant = vala_struct_real_add_constant;
+       ((ValaSymbolClass *) klass)->add_field = vala_struct_real_add_field;
+       ((ValaSymbolClass *) klass)->add_method = vala_struct_real_add_method;
+       ((ValaSymbolClass *) klass)->add_property = vala_struct_real_add_property;
+       ((ValaCodeNodeClass *) klass)->accept = vala_struct_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_struct_real_accept_children;
+       ((ValaTypeSymbolClass *) klass)->get_type_parameter_index = vala_struct_real_get_type_parameter_index;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_struct_real_replace_type;
+       ((ValaTypeSymbolClass *) klass)->is_subtype_of = vala_struct_real_is_subtype_of;
+       ((ValaCodeNodeClass *) klass)->check = vala_struct_real_check;
 }
 
 
index b9229e0..dbbf629 100644 (file)
@@ -170,7 +170,6 @@ public class Vala.Struct : TypeSymbol {
         * @param f a field
         */
        public override void add_field (Field f) {
-               // TODO report error when `private' or `protected' has been specified
                f.access = SymbolAccessibility.PUBLIC;
 
                fields.add (f);
index da210dc..b0fd80b 100644 (file)
@@ -612,10 +612,10 @@ static ValaDataType* vala_struct_value_type_real_copy (ValaDataType* base) {
 
 static void vala_struct_value_type_class_init (ValaStructValueTypeClass * klass) {
        vala_struct_value_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_DATA_TYPE_CLASS (klass)->is_invokable = vala_struct_value_type_real_is_invokable;
-       VALA_DATA_TYPE_CLASS (klass)->get_return_type = vala_struct_value_type_real_get_return_type;
-       VALA_DATA_TYPE_CLASS (klass)->get_parameters = vala_struct_value_type_real_get_parameters;
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_struct_value_type_real_copy;
+       ((ValaDataTypeClass *) klass)->is_invokable = vala_struct_value_type_real_is_invokable;
+       ((ValaDataTypeClass *) klass)->get_return_type = vala_struct_value_type_real_get_return_type;
+       ((ValaDataTypeClass *) klass)->get_parameters = vala_struct_value_type_real_get_parameters;
+       ((ValaDataTypeClass *) klass)->copy = vala_struct_value_type_real_copy;
 }
 
 
index a071f2e..045f580 100644 (file)
@@ -665,7 +665,7 @@ void vala_subroutine_set_body (ValaSubroutine* self, ValaBlock* value) {
 
 static void vala_subroutine_class_init (ValaSubroutineClass * klass) {
        vala_subroutine_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_subroutine_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_subroutine_finalize;
        g_type_class_add_private (klass, sizeof (ValaSubroutinePrivate));
 }
 
index 0cddc8e..27ff75e 100644 (file)
@@ -527,12 +527,12 @@ void vala_switch_label_set_section (ValaSwitchLabel* self, ValaSwitchSection* va
 
 static void vala_switch_label_class_init (ValaSwitchLabelClass * klass) {
        vala_switch_label_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_switch_label_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_switch_label_finalize;
        g_type_class_add_private (klass, sizeof (ValaSwitchLabelPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_switch_label_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_switch_label_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_switch_label_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_switch_label_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_switch_label_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_switch_label_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_switch_label_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_switch_label_real_emit;
 }
 
 
index 7cfc71c..b9c76d4 100644 (file)
@@ -1982,12 +1982,12 @@ static void vala_switch_section_real_emit (ValaCodeNode* base, ValaCodeGenerator
 
 static void vala_switch_section_class_init (ValaSwitchSectionClass * klass) {
        vala_switch_section_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_switch_section_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_switch_section_finalize;
        g_type_class_add_private (klass, sizeof (ValaSwitchSectionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_switch_section_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_switch_section_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_switch_section_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_switch_section_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_switch_section_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_switch_section_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_switch_section_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_switch_section_real_emit;
 }
 
 
index 1df7cdc..893a2c0 100644 (file)
@@ -1934,13 +1934,13 @@ void vala_switch_statement_set_expression (ValaSwitchStatement* self, ValaExpres
 
 static void vala_switch_statement_class_init (ValaSwitchStatementClass * klass) {
        vala_switch_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_switch_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_switch_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaSwitchStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_switch_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_switch_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_switch_statement_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_switch_statement_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_switch_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_switch_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_switch_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_switch_statement_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->check = vala_switch_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_switch_statement_real_emit;
 }
 
 
index 36dfe77..eafd1e3 100644 (file)
@@ -2409,24 +2409,24 @@ ValaSourceFileType vala_symbol_get_source_type (ValaSymbol* self) {
 
 static void vala_symbol_class_init (ValaSymbolClass * klass) {
        vala_symbol_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_symbol_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_symbol_finalize;
        g_type_class_add_private (klass, sizeof (ValaSymbolPrivate));
-       VALA_SYMBOL_CLASS (klass)->is_instance_member = vala_symbol_real_is_instance_member;
-       VALA_SYMBOL_CLASS (klass)->is_class_member = vala_symbol_real_is_class_member;
-       VALA_SYMBOL_CLASS (klass)->add_namespace = vala_symbol_real_add_namespace;
-       VALA_SYMBOL_CLASS (klass)->add_class = vala_symbol_real_add_class;
-       VALA_SYMBOL_CLASS (klass)->add_interface = vala_symbol_real_add_interface;
-       VALA_SYMBOL_CLASS (klass)->add_struct = vala_symbol_real_add_struct;
-       VALA_SYMBOL_CLASS (klass)->add_enum = vala_symbol_real_add_enum;
-       VALA_SYMBOL_CLASS (klass)->add_error_domain = vala_symbol_real_add_error_domain;
-       VALA_SYMBOL_CLASS (klass)->add_delegate = vala_symbol_real_add_delegate;
-       VALA_SYMBOL_CLASS (klass)->add_constant = vala_symbol_real_add_constant;
-       VALA_SYMBOL_CLASS (klass)->add_field = vala_symbol_real_add_field;
-       VALA_SYMBOL_CLASS (klass)->add_method = vala_symbol_real_add_method;
-       VALA_SYMBOL_CLASS (klass)->add_property = vala_symbol_real_add_property;
-       VALA_SYMBOL_CLASS (klass)->add_signal = vala_symbol_real_add_signal;
-       VALA_SYMBOL_CLASS (klass)->add_constructor = vala_symbol_real_add_constructor;
-       VALA_SYMBOL_CLASS (klass)->add_destructor = vala_symbol_real_add_destructor;
+       ((ValaSymbolClass *) klass)->is_instance_member = vala_symbol_real_is_instance_member;
+       ((ValaSymbolClass *) klass)->is_class_member = vala_symbol_real_is_class_member;
+       ((ValaSymbolClass *) klass)->add_namespace = vala_symbol_real_add_namespace;
+       ((ValaSymbolClass *) klass)->add_class = vala_symbol_real_add_class;
+       ((ValaSymbolClass *) klass)->add_interface = vala_symbol_real_add_interface;
+       ((ValaSymbolClass *) klass)->add_struct = vala_symbol_real_add_struct;
+       ((ValaSymbolClass *) klass)->add_enum = vala_symbol_real_add_enum;
+       ((ValaSymbolClass *) klass)->add_error_domain = vala_symbol_real_add_error_domain;
+       ((ValaSymbolClass *) klass)->add_delegate = vala_symbol_real_add_delegate;
+       ((ValaSymbolClass *) klass)->add_constant = vala_symbol_real_add_constant;
+       ((ValaSymbolClass *) klass)->add_field = vala_symbol_real_add_field;
+       ((ValaSymbolClass *) klass)->add_method = vala_symbol_real_add_method;
+       ((ValaSymbolClass *) klass)->add_property = vala_symbol_real_add_property;
+       ((ValaSymbolClass *) klass)->add_signal = vala_symbol_real_add_signal;
+       ((ValaSymbolClass *) klass)->add_constructor = vala_symbol_real_add_constructor;
+       ((ValaSymbolClass *) klass)->add_destructor = vala_symbol_real_add_destructor;
 }
 
 
index 283f138..86d761c 100644 (file)
@@ -1499,6 +1499,7 @@ static void vala_symbol_resolver_real_visit_sizeof_expression (ValaCodeVisitor*
 static void vala_symbol_resolver_real_visit_typeof_expression (ValaCodeVisitor* base, ValaTypeofExpression* expr);
 static void vala_symbol_resolver_real_visit_unary_expression (ValaCodeVisitor* base, ValaUnaryExpression* expr);
 static void vala_symbol_resolver_real_visit_cast_expression (ValaCodeVisitor* base, ValaCastExpression* expr);
+static void vala_symbol_resolver_real_visit_named_argument (ValaCodeVisitor* base, ValaNamedArgument* expr);
 static void vala_symbol_resolver_real_visit_addressof_expression (ValaCodeVisitor* base, ValaAddressofExpression* expr);
 static void vala_symbol_resolver_real_visit_reference_transfer_expression (ValaCodeVisitor* base, ValaReferenceTransferExpression* expr);
 static void vala_symbol_resolver_real_visit_binary_expression (ValaCodeVisitor* base, ValaBinaryExpression* expr);
@@ -3619,6 +3620,16 @@ static void vala_symbol_resolver_real_visit_cast_expression (ValaCodeVisitor* ba
 }
 
 
+static void vala_symbol_resolver_real_visit_named_argument (ValaCodeVisitor* base, ValaNamedArgument* expr) {
+       ValaSymbolResolver * self;
+       ValaNamedArgument* _tmp0_ = NULL;
+       self = (ValaSymbolResolver*) base;
+       g_return_if_fail (expr != NULL);
+       _tmp0_ = expr;
+       vala_code_node_accept_children ((ValaCodeNode*) _tmp0_, (ValaCodeVisitor*) self);
+}
+
+
 static void vala_symbol_resolver_real_visit_addressof_expression (ValaCodeVisitor* base, ValaAddressofExpression* expr) {
        ValaSymbolResolver * self;
        ValaAddressofExpression* _tmp0_ = NULL;
@@ -3703,67 +3714,68 @@ ValaSymbolResolver* vala_symbol_resolver_new (void) {
 
 static void vala_symbol_resolver_class_init (ValaSymbolResolverClass * klass) {
        vala_symbol_resolver_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_symbol_resolver_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_symbol_resolver_finalize;
        g_type_class_add_private (klass, sizeof (ValaSymbolResolverPrivate));
-       VALA_CODE_VISITOR_CLASS (klass)->visit_namespace = vala_symbol_resolver_real_visit_namespace;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_symbol_resolver_real_visit_class;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_struct = vala_symbol_resolver_real_visit_struct;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_interface = vala_symbol_resolver_real_visit_interface;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_symbol_resolver_real_visit_enum;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_error_domain = vala_symbol_resolver_real_visit_error_domain;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_delegate = vala_symbol_resolver_real_visit_delegate;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_constant = vala_symbol_resolver_real_visit_constant;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_field = vala_symbol_resolver_real_visit_field;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method = vala_symbol_resolver_real_visit_method;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_creation_method = vala_symbol_resolver_real_visit_creation_method;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_formal_parameter = vala_symbol_resolver_real_visit_formal_parameter;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_property = vala_symbol_resolver_real_visit_property;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_property_accessor = vala_symbol_resolver_real_visit_property_accessor;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_signal = vala_symbol_resolver_real_visit_signal;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_constructor = vala_symbol_resolver_real_visit_constructor;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_destructor = vala_symbol_resolver_real_visit_destructor;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_block = vala_symbol_resolver_real_visit_block;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_using_directive = vala_symbol_resolver_real_visit_using_directive;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_data_type = vala_symbol_resolver_real_visit_data_type;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_declaration_statement = vala_symbol_resolver_real_visit_declaration_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_local_variable = vala_symbol_resolver_real_visit_local_variable;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_initializer_list = vala_symbol_resolver_real_visit_initializer_list;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_expression_statement = vala_symbol_resolver_real_visit_expression_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_if_statement = vala_symbol_resolver_real_visit_if_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_switch_statement = vala_symbol_resolver_real_visit_switch_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_switch_section = vala_symbol_resolver_real_visit_switch_section;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_switch_label = vala_symbol_resolver_real_visit_switch_label;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_loop = vala_symbol_resolver_real_visit_loop;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_while_statement = vala_symbol_resolver_real_visit_while_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_do_statement = vala_symbol_resolver_real_visit_do_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_for_statement = vala_symbol_resolver_real_visit_for_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_foreach_statement = vala_symbol_resolver_real_visit_foreach_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_return_statement = vala_symbol_resolver_real_visit_return_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_yield_statement = vala_symbol_resolver_real_visit_yield_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_throw_statement = vala_symbol_resolver_real_visit_throw_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_try_statement = vala_symbol_resolver_real_visit_try_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_delete_statement = vala_symbol_resolver_real_visit_delete_statement;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_catch_clause = vala_symbol_resolver_real_visit_catch_clause;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_array_creation_expression = vala_symbol_resolver_real_visit_array_creation_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_template = vala_symbol_resolver_real_visit_template;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_tuple = vala_symbol_resolver_real_visit_tuple;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_member_access = vala_symbol_resolver_real_visit_member_access;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_method_call = vala_symbol_resolver_real_visit_method_call;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_element_access = vala_symbol_resolver_real_visit_element_access;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_slice_expression = vala_symbol_resolver_real_visit_slice_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_postfix_expression = vala_symbol_resolver_real_visit_postfix_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_object_creation_expression = vala_symbol_resolver_real_visit_object_creation_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_sizeof_expression = vala_symbol_resolver_real_visit_sizeof_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_typeof_expression = vala_symbol_resolver_real_visit_typeof_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_unary_expression = vala_symbol_resolver_real_visit_unary_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_cast_expression = vala_symbol_resolver_real_visit_cast_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_addressof_expression = vala_symbol_resolver_real_visit_addressof_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_reference_transfer_expression = vala_symbol_resolver_real_visit_reference_transfer_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_binary_expression = vala_symbol_resolver_real_visit_binary_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_type_check = vala_symbol_resolver_real_visit_type_check;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_conditional_expression = vala_symbol_resolver_real_visit_conditional_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_lambda_expression = vala_symbol_resolver_real_visit_lambda_expression;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_assignment = vala_symbol_resolver_real_visit_assignment;
+       ((ValaCodeVisitorClass *) klass)->visit_namespace = vala_symbol_resolver_real_visit_namespace;
+       ((ValaCodeVisitorClass *) klass)->visit_class = vala_symbol_resolver_real_visit_class;
+       ((ValaCodeVisitorClass *) klass)->visit_struct = vala_symbol_resolver_real_visit_struct;
+       ((ValaCodeVisitorClass *) klass)->visit_interface = vala_symbol_resolver_real_visit_interface;
+       ((ValaCodeVisitorClass *) klass)->visit_enum = vala_symbol_resolver_real_visit_enum;
+       ((ValaCodeVisitorClass *) klass)->visit_error_domain = vala_symbol_resolver_real_visit_error_domain;
+       ((ValaCodeVisitorClass *) klass)->visit_delegate = vala_symbol_resolver_real_visit_delegate;
+       ((ValaCodeVisitorClass *) klass)->visit_constant = vala_symbol_resolver_real_visit_constant;
+       ((ValaCodeVisitorClass *) klass)->visit_field = vala_symbol_resolver_real_visit_field;
+       ((ValaCodeVisitorClass *) klass)->visit_method = vala_symbol_resolver_real_visit_method;
+       ((ValaCodeVisitorClass *) klass)->visit_creation_method = vala_symbol_resolver_real_visit_creation_method;
+       ((ValaCodeVisitorClass *) klass)->visit_formal_parameter = vala_symbol_resolver_real_visit_formal_parameter;
+       ((ValaCodeVisitorClass *) klass)->visit_property = vala_symbol_resolver_real_visit_property;
+       ((ValaCodeVisitorClass *) klass)->visit_property_accessor = vala_symbol_resolver_real_visit_property_accessor;
+       ((ValaCodeVisitorClass *) klass)->visit_signal = vala_symbol_resolver_real_visit_signal;
+       ((ValaCodeVisitorClass *) klass)->visit_constructor = vala_symbol_resolver_real_visit_constructor;
+       ((ValaCodeVisitorClass *) klass)->visit_destructor = vala_symbol_resolver_real_visit_destructor;
+       ((ValaCodeVisitorClass *) klass)->visit_block = vala_symbol_resolver_real_visit_block;
+       ((ValaCodeVisitorClass *) klass)->visit_using_directive = vala_symbol_resolver_real_visit_using_directive;
+       ((ValaCodeVisitorClass *) klass)->visit_data_type = vala_symbol_resolver_real_visit_data_type;
+       ((ValaCodeVisitorClass *) klass)->visit_declaration_statement = vala_symbol_resolver_real_visit_declaration_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_local_variable = vala_symbol_resolver_real_visit_local_variable;
+       ((ValaCodeVisitorClass *) klass)->visit_initializer_list = vala_symbol_resolver_real_visit_initializer_list;
+       ((ValaCodeVisitorClass *) klass)->visit_expression_statement = vala_symbol_resolver_real_visit_expression_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_if_statement = vala_symbol_resolver_real_visit_if_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_switch_statement = vala_symbol_resolver_real_visit_switch_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_switch_section = vala_symbol_resolver_real_visit_switch_section;
+       ((ValaCodeVisitorClass *) klass)->visit_switch_label = vala_symbol_resolver_real_visit_switch_label;
+       ((ValaCodeVisitorClass *) klass)->visit_loop = vala_symbol_resolver_real_visit_loop;
+       ((ValaCodeVisitorClass *) klass)->visit_while_statement = vala_symbol_resolver_real_visit_while_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_do_statement = vala_symbol_resolver_real_visit_do_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_for_statement = vala_symbol_resolver_real_visit_for_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_foreach_statement = vala_symbol_resolver_real_visit_foreach_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_return_statement = vala_symbol_resolver_real_visit_return_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_yield_statement = vala_symbol_resolver_real_visit_yield_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_throw_statement = vala_symbol_resolver_real_visit_throw_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_try_statement = vala_symbol_resolver_real_visit_try_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_delete_statement = vala_symbol_resolver_real_visit_delete_statement;
+       ((ValaCodeVisitorClass *) klass)->visit_catch_clause = vala_symbol_resolver_real_visit_catch_clause;
+       ((ValaCodeVisitorClass *) klass)->visit_array_creation_expression = vala_symbol_resolver_real_visit_array_creation_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_template = vala_symbol_resolver_real_visit_template;
+       ((ValaCodeVisitorClass *) klass)->visit_tuple = vala_symbol_resolver_real_visit_tuple;
+       ((ValaCodeVisitorClass *) klass)->visit_member_access = vala_symbol_resolver_real_visit_member_access;
+       ((ValaCodeVisitorClass *) klass)->visit_method_call = vala_symbol_resolver_real_visit_method_call;
+       ((ValaCodeVisitorClass *) klass)->visit_element_access = vala_symbol_resolver_real_visit_element_access;
+       ((ValaCodeVisitorClass *) klass)->visit_slice_expression = vala_symbol_resolver_real_visit_slice_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_postfix_expression = vala_symbol_resolver_real_visit_postfix_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_object_creation_expression = vala_symbol_resolver_real_visit_object_creation_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_sizeof_expression = vala_symbol_resolver_real_visit_sizeof_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_typeof_expression = vala_symbol_resolver_real_visit_typeof_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_unary_expression = vala_symbol_resolver_real_visit_unary_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_cast_expression = vala_symbol_resolver_real_visit_cast_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_named_argument = vala_symbol_resolver_real_visit_named_argument;
+       ((ValaCodeVisitorClass *) klass)->visit_addressof_expression = vala_symbol_resolver_real_visit_addressof_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_reference_transfer_expression = vala_symbol_resolver_real_visit_reference_transfer_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_binary_expression = vala_symbol_resolver_real_visit_binary_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_type_check = vala_symbol_resolver_real_visit_type_check;
+       ((ValaCodeVisitorClass *) klass)->visit_conditional_expression = vala_symbol_resolver_real_visit_conditional_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_lambda_expression = vala_symbol_resolver_real_visit_lambda_expression;
+       ((ValaCodeVisitorClass *) klass)->visit_assignment = vala_symbol_resolver_real_visit_assignment;
 }
 
 
index 94858e3..32c84e4 100644 (file)
@@ -511,6 +511,10 @@ public class Vala.SymbolResolver : CodeVisitor {
                expr.accept_children (this);
        }
 
+       public override void visit_named_argument (NamedArgument expr) {
+               expr.accept_children (this);
+       }
+
        public override void visit_addressof_expression (AddressofExpression expr) {
                expr.accept_children (this);
        }
index 46591b4..0f3b07b 100644 (file)
@@ -280,7 +280,7 @@ void vala_value_take_target_value (GValue* value, gpointer v_object) {
 
 static void vala_target_value_class_init (ValaTargetValueClass * klass) {
        vala_target_value_parent_class = g_type_class_peek_parent (klass);
-       VALA_TARGET_VALUE_CLASS (klass)->finalize = vala_target_value_finalize;
+       ((ValaTargetValueClass *) klass)->finalize = vala_target_value_finalize;
        g_type_class_add_private (klass, sizeof (ValaTargetValuePrivate));
 }
 
@@ -294,6 +294,7 @@ static void vala_target_value_instance_init (ValaTargetValue * self) {
 static void vala_target_value_finalize (ValaTargetValue* obj) {
        ValaTargetValue * self;
        self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_TARGET_VALUE, ValaTargetValue);
+       g_signal_handlers_destroy (self);
        _vala_code_node_unref0 (self->priv->_value_type);
        _vala_code_node_unref0 (self->priv->_actual_value_type);
 }
index 8d328b4..f66b959 100644 (file)
@@ -1669,12 +1669,12 @@ static gboolean vala_template_real_check (ValaCodeNode* base, ValaCodeContext* c
 
 static void vala_template_class_init (ValaTemplateClass * klass) {
        vala_template_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_template_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_template_finalize;
        g_type_class_add_private (klass, sizeof (ValaTemplatePrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_template_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_template_real_accept_children;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_template_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_template_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_template_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_template_real_accept_children;
+       ((ValaExpressionClass *) klass)->is_pure = vala_template_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_template_real_check;
 }
 
 
index 2637e6f..a24b3e8 100644 (file)
@@ -657,15 +657,15 @@ void vala_throw_statement_set_error_expression (ValaThrowStatement* self, ValaEx
 
 static void vala_throw_statement_class_init (ValaThrowStatementClass * klass) {
        vala_throw_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_throw_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_throw_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaThrowStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_throw_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_throw_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_throw_statement_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_throw_statement_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_throw_statement_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_throw_statement_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_throw_statement_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_throw_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_throw_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_throw_statement_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->check = vala_throw_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_throw_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_throw_statement_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_throw_statement_real_get_used_variables;
 }
 
 
index 562712c..751421b 100644 (file)
@@ -899,12 +899,12 @@ void vala_try_statement_set_after_try_block_reachable (ValaTryStatement* self, g
 
 static void vala_try_statement_class_init (ValaTryStatementClass * klass) {
        vala_try_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_try_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_try_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaTryStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_try_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_try_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_try_statement_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_try_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_try_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_try_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_try_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_try_statement_real_emit;
 }
 
 
index 0daf270..13a617a 100644 (file)
@@ -521,14 +521,14 @@ static void vala_tuple_real_emit (ValaCodeNode* base, ValaCodeGenerator* codegen
 
 static void vala_tuple_class_init (ValaTupleClass * klass) {
        vala_tuple_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_tuple_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_tuple_finalize;
        g_type_class_add_private (klass, sizeof (ValaTuplePrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_tuple_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_tuple_real_accept;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_tuple_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_tuple_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_tuple_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_tuple_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_tuple_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->accept = vala_tuple_real_accept;
+       ((ValaExpressionClass *) klass)->is_pure = vala_tuple_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_tuple_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->check = vala_tuple_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_tuple_real_emit;
 }
 
 
index 7e9547f..21b0afc 100644 (file)
@@ -1651,15 +1651,15 @@ void vala_typecheck_set_type_reference (ValaTypeCheck* self, ValaDataType* value
 
 static void vala_typecheck_class_init (ValaTypeCheckClass * klass) {
        vala_typecheck_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_typecheck_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_typecheck_finalize;
        g_type_class_add_private (klass, sizeof (ValaTypeCheckPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_typecheck_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_typecheck_real_accept_children;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_typecheck_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_typecheck_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_typecheck_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_typecheck_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_typecheck_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_typecheck_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_typecheck_real_accept_children;
+       ((ValaExpressionClass *) klass)->is_pure = vala_typecheck_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_typecheck_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_typecheck_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->check = vala_typecheck_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_typecheck_real_emit;
 }
 
 
index e20a9cd..6a7603d 100644 (file)
@@ -1531,14 +1531,14 @@ void vala_typeof_expression_set_type_reference (ValaTypeofExpression* self, Vala
 
 static void vala_typeof_expression_class_init (ValaTypeofExpressionClass * klass) {
        vala_typeof_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_typeof_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_typeof_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaTypeofExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_typeof_expression_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_typeof_expression_real_accept_children;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_typeof_expression_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->replace_type = vala_typeof_expression_real_replace_type;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_typeof_expression_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_typeof_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_typeof_expression_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_typeof_expression_real_accept_children;
+       ((ValaExpressionClass *) klass)->is_pure = vala_typeof_expression_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->replace_type = vala_typeof_expression_real_replace_type;
+       ((ValaCodeNodeClass *) klass)->check = vala_typeof_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_typeof_expression_real_emit;
 }
 
 
index 63a3e29..d90677c 100644 (file)
@@ -504,7 +504,7 @@ gboolean vala_typeparameter_equals (ValaTypeParameter* self, ValaTypeParameter*
 
 static void vala_typeparameter_class_init (ValaTypeParameterClass * klass) {
        vala_typeparameter_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_typeparameter_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept = vala_typeparameter_real_accept;
 }
 
 
index 1f531ae..015d350 100644 (file)
@@ -520,9 +520,9 @@ gint vala_typesymbol_get_type_parameter_index (ValaTypeSymbol* self, const gchar
 
 static void vala_typesymbol_class_init (ValaTypeSymbolClass * klass) {
        vala_typesymbol_parent_class = g_type_class_peek_parent (klass);
-       VALA_TYPESYMBOL_CLASS (klass)->is_reference_type = vala_typesymbol_real_is_reference_type;
-       VALA_TYPESYMBOL_CLASS (klass)->is_subtype_of = vala_typesymbol_real_is_subtype_of;
-       VALA_TYPESYMBOL_CLASS (klass)->get_type_parameter_index = vala_typesymbol_real_get_type_parameter_index;
+       ((ValaTypeSymbolClass *) klass)->is_reference_type = vala_typesymbol_real_is_reference_type;
+       ((ValaTypeSymbolClass *) klass)->is_subtype_of = vala_typesymbol_real_is_subtype_of;
+       ((ValaTypeSymbolClass *) klass)->get_type_parameter_index = vala_typesymbol_real_get_type_parameter_index;
 }
 
 
index 0bb94d5..80e8fd9 100644 (file)
@@ -2625,18 +2625,18 @@ void vala_unary_expression_set_inner (ValaUnaryExpression* self, ValaExpression*
 
 static void vala_unary_expression_class_init (ValaUnaryExpressionClass * klass) {
        vala_unary_expression_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_unary_expression_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_unary_expression_finalize;
        g_type_class_add_private (klass, sizeof (ValaUnaryExpressionPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_unary_expression_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_unary_expression_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_unary_expression_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_unary_expression_real_to_string;
-       VALA_EXPRESSION_CLASS (klass)->is_constant = vala_unary_expression_real_is_constant;
-       VALA_EXPRESSION_CLASS (klass)->is_pure = vala_unary_expression_real_is_pure;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_unary_expression_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_unary_expression_real_emit;
-       VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_unary_expression_real_get_defined_variables;
-       VALA_CODE_NODE_CLASS (klass)->get_used_variables = vala_unary_expression_real_get_used_variables;
+       ((ValaCodeNodeClass *) klass)->accept = vala_unary_expression_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_unary_expression_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_unary_expression_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_unary_expression_real_to_string;
+       ((ValaExpressionClass *) klass)->is_constant = vala_unary_expression_real_is_constant;
+       ((ValaExpressionClass *) klass)->is_pure = vala_unary_expression_real_is_pure;
+       ((ValaCodeNodeClass *) klass)->check = vala_unary_expression_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_unary_expression_real_emit;
+       ((ValaCodeNodeClass *) klass)->get_defined_variables = vala_unary_expression_real_get_defined_variables;
+       ((ValaCodeNodeClass *) klass)->get_used_variables = vala_unary_expression_real_get_used_variables;
 }
 
 
index d51601e..5b445d2 100644 (file)
@@ -510,11 +510,11 @@ void vala_unlock_statement_set_resource (ValaUnlockStatement* self, ValaExpressi
 
 static void vala_unlock_statement_class_init (ValaUnlockStatementClass * klass) {
        vala_unlock_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_unlock_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_unlock_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaUnlockStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_unlock_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_unlock_statement_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_unlock_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_unlock_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->check = vala_unlock_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_unlock_statement_real_emit;
 }
 
 
index 31a59a0..c55a28e 100644 (file)
@@ -686,9 +686,9 @@ void vala_unresolved_symbol_set_qualified (ValaUnresolvedSymbol* self, gboolean
 
 static void vala_unresolved_symbol_class_init (ValaUnresolvedSymbolClass * klass) {
        vala_unresolved_symbol_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_unresolved_symbol_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_unresolved_symbol_finalize;
        g_type_class_add_private (klass, sizeof (ValaUnresolvedSymbolPrivate));
-       VALA_CODE_NODE_CLASS (klass)->to_string = vala_unresolved_symbol_real_to_string;
+       ((ValaCodeNodeClass *) klass)->to_string = vala_unresolved_symbol_real_to_string;
 }
 
 
index c0f1384..5bad93a 100644 (file)
@@ -741,11 +741,11 @@ void vala_unresolved_type_set_unresolved_symbol (ValaUnresolvedType* self, ValaU
 
 static void vala_unresolved_type_class_init (ValaUnresolvedTypeClass * klass) {
        vala_unresolved_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_unresolved_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_unresolved_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaUnresolvedTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_unresolved_type_real_copy;
-       VALA_DATA_TYPE_CLASS (klass)->to_qualified_string = vala_unresolved_type_real_to_qualified_string;
-       VALA_DATA_TYPE_CLASS (klass)->is_disposable = vala_unresolved_type_real_is_disposable;
+       ((ValaDataTypeClass *) klass)->copy = vala_unresolved_type_real_copy;
+       ((ValaDataTypeClass *) klass)->to_qualified_string = vala_unresolved_type_real_to_qualified_string;
+       ((ValaDataTypeClass *) klass)->is_disposable = vala_unresolved_type_real_is_disposable;
 }
 
 
index 5c73a5c..2b6111c 100644 (file)
@@ -293,9 +293,9 @@ void vala_using_directive_set_namespace_symbol (ValaUsingDirective* self, ValaSy
 
 static void vala_using_directive_class_init (ValaUsingDirectiveClass * klass) {
        vala_using_directive_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_using_directive_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_using_directive_finalize;
        g_type_class_add_private (klass, sizeof (ValaUsingDirectivePrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_using_directive_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept = vala_using_directive_real_accept;
 }
 
 
index 4a5c540..101b669 100644 (file)
@@ -401,10 +401,10 @@ void vala_value_type_set_type_symbol (ValaValueType* self, ValaTypeSymbol* value
 
 static void vala_value_type_class_init (ValaValueTypeClass * klass) {
        vala_value_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_value_type_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_value_type_finalize;
        g_type_class_add_private (klass, sizeof (ValaValueTypePrivate));
-       VALA_DATA_TYPE_CLASS (klass)->is_disposable = vala_value_type_real_is_disposable;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_value_type_real_check;
+       ((ValaDataTypeClass *) klass)->is_disposable = vala_value_type_real_is_disposable;
+       ((ValaCodeNodeClass *) klass)->check = vala_value_type_real_check;
 }
 
 
index 6b5bb08..e6cd4df 100644 (file)
@@ -558,7 +558,7 @@ void vala_variable_set_single_assignment (ValaVariable* self, gboolean value) {
 
 static void vala_variable_class_init (ValaVariableClass * klass) {
        vala_variable_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_variable_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_variable_finalize;
        g_type_class_add_private (klass, sizeof (ValaVariablePrivate));
 }
 
index 8e9c4e3..8c5226e 100644 (file)
@@ -343,9 +343,9 @@ static ValaDataType* vala_void_type_real_copy (ValaDataType* base) {
 
 static void vala_void_type_class_init (ValaVoidTypeClass * klass) {
        vala_void_type_parent_class = g_type_class_peek_parent (klass);
-       VALA_DATA_TYPE_CLASS (klass)->stricter = vala_void_type_real_stricter;
-       VALA_DATA_TYPE_CLASS (klass)->to_qualified_string = vala_void_type_real_to_qualified_string;
-       VALA_DATA_TYPE_CLASS (klass)->copy = vala_void_type_real_copy;
+       ((ValaDataTypeClass *) klass)->stricter = vala_void_type_real_stricter;
+       ((ValaDataTypeClass *) klass)->to_qualified_string = vala_void_type_real_to_qualified_string;
+       ((ValaDataTypeClass *) klass)->copy = vala_void_type_real_copy;
 }
 
 
index 9080636..d276916 100644 (file)
@@ -690,11 +690,11 @@ void vala_while_statement_set_body (ValaWhileStatement* self, ValaBlock* value)
 
 static void vala_while_statement_class_init (ValaWhileStatementClass * klass) {
        vala_while_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_while_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_while_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaWhileStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_while_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_while_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_while_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->accept = vala_while_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_while_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->check = vala_while_statement_real_check;
 }
 
 
index 21638b9..8aaa602 100644 (file)
@@ -489,13 +489,13 @@ void vala_yield_statement_set_yield_expression (ValaYieldStatement* self, ValaEx
 
 static void vala_yield_statement_class_init (ValaYieldStatementClass * klass) {
        vala_yield_statement_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_NODE_CLASS (klass)->finalize = vala_yield_statement_finalize;
+       ((ValaCodeNodeClass *) klass)->finalize = vala_yield_statement_finalize;
        g_type_class_add_private (klass, sizeof (ValaYieldStatementPrivate));
-       VALA_CODE_NODE_CLASS (klass)->accept = vala_yield_statement_real_accept;
-       VALA_CODE_NODE_CLASS (klass)->accept_children = vala_yield_statement_real_accept_children;
-       VALA_CODE_NODE_CLASS (klass)->replace_expression = vala_yield_statement_real_replace_expression;
-       VALA_CODE_NODE_CLASS (klass)->check = vala_yield_statement_real_check;
-       VALA_CODE_NODE_CLASS (klass)->emit = vala_yield_statement_real_emit;
+       ((ValaCodeNodeClass *) klass)->accept = vala_yield_statement_real_accept;
+       ((ValaCodeNodeClass *) klass)->accept_children = vala_yield_statement_real_accept_children;
+       ((ValaCodeNodeClass *) klass)->replace_expression = vala_yield_statement_real_replace_expression;
+       ((ValaCodeNodeClass *) klass)->check = vala_yield_statement_real_check;
+       ((ValaCodeNodeClass *) klass)->emit = vala_yield_statement_real_emit;
 }
 
 
index 1250636..f9cb467 100644 (file)
@@ -2,7 +2,7 @@ NULL =
 
 vapidir = $(pkgdatadir)/vapi
 
-libvala@PACKAGE_SUFFIX@.vapi: ../gee/gee.vapi ../ccode/ccode.vapi ../vala/vala.vapi ../codegen/codegen.vapi
+libvala@PACKAGE_SUFFIX@.vapi: $(top_srcdir)/gee/gee.vapi $(top_srcdir)/ccode/ccode.vapi $(top_srcdir)/vala/vala.vapi $(top_srcdir)/codegen/codegen.vapi
        cat $^ > $@
 
 dist_vapi_DATA = \
@@ -120,6 +120,8 @@ dist_vapi_DATA = \
        gstreamer-video-0.10.deps \
        gstreamer-video-0.10.vapi \
        gstreamer-1.0.vapi \
+       gstreamer-allocators-1.0.vapi \
+       gstreamer-allocators-1.0.deps \
        gstreamer-app-1.0.vapi \
        gstreamer-app-1.0.deps \
        gstreamer-audio-1.0.vapi \
@@ -136,6 +138,8 @@ dist_vapi_DATA = \
        gstreamer-net-1.0.deps \
        gstreamer-pbutils-1.0.vapi \
        gstreamer-pbutils-1.0.deps \
+       gstreamer-riff-1.0.deps \
+       gstreamer-riff-1.0.vapi \
        gstreamer-rtp-1.0.vapi \
        gstreamer-rtp-1.0.deps \
        gstreamer-rtsp-1.0.vapi \
@@ -284,6 +288,10 @@ dist_vapi_DATA = \
        vte-2.90.vapi \
        webkit-1.0.deps \
        webkit-1.0.vapi \
+       webkit2gtk-4.0.vapi \
+       webkit2gtk-4.0.deps \
+       webkit2gtk-web-extension-4.0.vapi \
+       webkit2gtk-web-extension-4.0.deps \
        x11.vapi \
        xcb.vapi \
        xcb-icccm.vapi \
@@ -306,7 +314,6 @@ GIDL_BINDINGS = \
        gdl-1.0 \
        gdu \
        gdk-gtk \
-       gedit-2.20 \
        gio-unix-2.0 \
        gnome-desktop-2.0 \
        gnome-keyring-1 \
@@ -365,10 +372,12 @@ GSTREAMER_1_0_BINDINGS = \
        gstreamer-check-1.0 \
        gstreamer-controller-1.0 \
        gstreamer-net-1.0 \
+       gstreamer-allocators-1.0 \
        gstreamer-app-1.0 \
        gstreamer-audio-1.0 \
        gstreamer-fft-1.0 \
        gstreamer-pbutils-1.0 \
+       gstreamer-riff-1.0 \
        gstreamer-rtp-1.0 \
        gstreamer-sdp-1.0 \
        gstreamer-rtsp-1.0 \
@@ -388,7 +397,6 @@ GIR_BINDINGS = \
        gdk-3.0 \
        gdk-pixbuf-2.0 \
        gdl-3.0 \
-       gedit \
        geocode-glib-1.0 \
        gio-2.0 \
        gobject-introspection-1.0 \
@@ -400,7 +408,6 @@ GIR_BINDINGS = \
        libnotify \
        libpeas-1.0 \
        libpeas-gtk-1.0 \
-       librsvg-2.0 \
        libsoup-2.4 \
        libwnck-3.0 \
        mx-1.0 \
@@ -411,6 +418,8 @@ GIR_BINDINGS = \
        rest-0.7 \
        udisks2 \
        vte-2.90 \
+       webkit2gtk-4.0 \
+       webkit2gtk-web-extension-4.0 \
        $(GSTREAMER_1_0_BINDINGS) \
        $(NULL)
 
@@ -450,7 +459,7 @@ clutter-gtk-1.0:
        $(GENVAPI) --library $(srcdir)/clutter-gtk-1.0 --metadatadir $(METADATADIR) $(METADATADIR)/GtkClutter-1.0-custom.vala --pkg clutter-1.0 --pkg gtk+-3.0 --pkg cogl-pango-1.0 $(GIRDIR)/GtkClutter-1.0.gir
 
 clutter-gst-1.0:
-       $(GENVAPI) --library $(srcdir)/clutter-gst-1.0 --metadatadir $(METADATADIR) $(METADATADIR)/ClutterGst-1.0-custom.vala --pkg clutter-1.0 --pkg gstreamer-base-0.10 --pkg gstreamer-video-0.10 gstreamer-interfaces-0.10.vapi $(GIRDIR)/ClutterGst-1.0.gir
+       $(GENVAPI) --library $(srcdir)/clutter-gst-1.0 --metadatadir $(METADATADIR) $(METADATADIR)/ClutterGst-1.0-custom.vala --pkg clutter-1.0 --pkg gstreamer-base-0.10 --pkg gstreamer-video-0.10 --pkg gstreamer-interfaces-0.10 --pkg gstreamer-audio-0.10 $(GIRDIR)/ClutterGst-1.0.gir
 
 clutter-gst-2.0:
        $(GENVAPI) --library $(srcdir)/clutter-gst-2.0 --metadatadir $(METADATADIR) $(METADATADIR)/ClutterGst-2.0-custom.vala --pkg cogl-1.0 --pkg clutter-1.0 --pkg gstreamer-base-1.0 --pkg gstreamer-video-1.0 $(GIRDIR)/ClutterGst-2.0.gir
@@ -581,6 +590,9 @@ gstreamer-video-0.10:
 gstreamer-1.0:
        $(GENVAPI) --library $(srcdir)/gstreamer-1.0 --metadatadir $(METADATADIR) $(METADATADIR)/Gst-1.0-custom.vala $(GIRDIR)/Gst-1.0.gir
 
+gstreamer-allocators-1.0:
+       $(GENVAPI) --library $(srcdir)/gstreamer-allocators-1.0 --pkg gstreamer-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstAllocators-1.0.gir
+
 gstreamer-app-1.0:
        $(GENVAPI) --library $(srcdir)/gstreamer-app-1.0 --pkg gstreamer-base-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstApp-1.0.gir
 
@@ -605,6 +617,9 @@ gstreamer-net-1.0:
 gstreamer-pbutils-1.0:
        $(GENVAPI) --library $(srcdir)/gstreamer-pbutils-1.0 --pkg gstreamer-base-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstPbutils-1.0.gir
 
+gstreamer-riff-1.0:
+       $(GENVAPI) --library $(srcdir)/gstreamer-riff-1.0 --pkg gstreamer-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstRiff-1.0.gir
+
 gstreamer-rtp-1.0:
        $(GENVAPI) --library $(srcdir)/gstreamer-rtp-1.0 --pkg gstreamer-base-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstRtp-1.0.gir
 
@@ -612,7 +627,7 @@ gstreamer-rtsp-1.0:
        $(GENVAPI) --library $(srcdir)/gstreamer-rtsp-1.0 --pkg gstreamer-sdp-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstRtsp-1.0.gir
 
 gstreamer-rtsp-server-1.0:
-       $(GENVAPI) --library $(srcdir)/gstreamer-rtsp-server-1.0 --pkg gstreamer-rtsp-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstRtspServer-1.0.gir
+       $(GENVAPI) --library $(srcdir)/gstreamer-rtsp-server-1.0 --pkg gstreamer-rtsp-1.0 --pkg gstreamer-net-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstRtspServer-1.0.gir
 
 gstreamer-sdp-1.0:
        $(GENVAPI) --library $(srcdir)/gstreamer-sdp-1.0 --pkg gstreamer-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstSdp-1.0.gir
@@ -645,7 +660,7 @@ hildon-fm-2:
        $(GENVAPI) --library $(srcdir)/hildon-fm-2 $(PACKAGESDIR)/hildon-fm-2/hildon-fm-2.gi
 
 json-glib-1.0:
-       $(GENVAPI) --library $(srcdir)/json-glib-1.0 --metadatadir $(METADATADIR) $(METADATADIR)/Json-1.0-custom.vala --pkg gio-2.0 $(GIRDIR)/Json-1.0.gir
+       $(GENVAPI) --library $(srcdir)/json-glib-1.0 --metadatadir $(METADATADIR) --pkg gio-2.0 $(METADATADIR)/Json-1.0-custom.vala $(GIRDIR)/Json-1.0.gir
 
 libepc-1.0:
        $(GENVAPI) --library $(srcdir)/libepc-1.0 $(PACKAGESDIR)/libepc-1.0/libepc-1.0.gi
@@ -757,3 +772,9 @@ vte-2.90:
 
 webkit-1.0:
        $(GENVAPI) --library $(srcdir)/webkit-1.0 $(PACKAGESDIR)/webkit-1.0/webkit-1.0.gi
+
+webkit2gtk-4.0:
+       $(GENVAPI) --library $(srcdir)/webkit2gtk-4.0 --metadatadir $(METADATADIR) --pkg gtk+-3.0 --pkg libsoup-2.4 $(GIRDIR)/WebKit2-4.0.gir
+
+webkit2gtk-web-extension-4.0:
+       $(GENVAPI) --library $(srcdir)/webkit2gtk-web-extension-4.0 --metadatadir $(METADATADIR) --pkg gtk+-3.0 $(GIRDIR)/WebKit2WebExtension-4.0.gir
index 248c125..6eecccb 100644 (file)
@@ -249,7 +249,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -278,8 +277,6 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
 NULL = 
 vapidir = $(pkgdatadir)/vapi
 dist_vapi_DATA = \
@@ -397,6 +394,8 @@ dist_vapi_DATA = \
        gstreamer-video-0.10.deps \
        gstreamer-video-0.10.vapi \
        gstreamer-1.0.vapi \
+       gstreamer-allocators-1.0.vapi \
+       gstreamer-allocators-1.0.deps \
        gstreamer-app-1.0.vapi \
        gstreamer-app-1.0.deps \
        gstreamer-audio-1.0.vapi \
@@ -413,6 +412,8 @@ dist_vapi_DATA = \
        gstreamer-net-1.0.deps \
        gstreamer-pbutils-1.0.vapi \
        gstreamer-pbutils-1.0.deps \
+       gstreamer-riff-1.0.deps \
+       gstreamer-riff-1.0.vapi \
        gstreamer-rtp-1.0.vapi \
        gstreamer-rtp-1.0.deps \
        gstreamer-rtsp-1.0.vapi \
@@ -561,6 +562,10 @@ dist_vapi_DATA = \
        vte-2.90.vapi \
        webkit-1.0.deps \
        webkit-1.0.vapi \
+       webkit2gtk-4.0.vapi \
+       webkit2gtk-4.0.deps \
+       webkit2gtk-web-extension-4.0.vapi \
+       webkit2gtk-web-extension-4.0.deps \
        x11.vapi \
        xcb.vapi \
        xcb-icccm.vapi \
@@ -583,7 +588,6 @@ GIDL_BINDINGS = \
        gdl-1.0 \
        gdu \
        gdk-gtk \
-       gedit-2.20 \
        gio-unix-2.0 \
        gnome-desktop-2.0 \
        gnome-keyring-1 \
@@ -642,10 +646,12 @@ GSTREAMER_1_0_BINDINGS = \
        gstreamer-check-1.0 \
        gstreamer-controller-1.0 \
        gstreamer-net-1.0 \
+       gstreamer-allocators-1.0 \
        gstreamer-app-1.0 \
        gstreamer-audio-1.0 \
        gstreamer-fft-1.0 \
        gstreamer-pbutils-1.0 \
+       gstreamer-riff-1.0 \
        gstreamer-rtp-1.0 \
        gstreamer-sdp-1.0 \
        gstreamer-rtsp-1.0 \
@@ -665,7 +671,6 @@ GIR_BINDINGS = \
        gdk-3.0 \
        gdk-pixbuf-2.0 \
        gdl-3.0 \
-       gedit \
        geocode-glib-1.0 \
        gio-2.0 \
        gobject-introspection-1.0 \
@@ -677,7 +682,6 @@ GIR_BINDINGS = \
        libnotify \
        libpeas-1.0 \
        libpeas-gtk-1.0 \
-       librsvg-2.0 \
        libsoup-2.4 \
        libwnck-3.0 \
        mx-1.0 \
@@ -688,6 +692,8 @@ GIR_BINDINGS = \
        rest-0.7 \
        udisks2 \
        vte-2.90 \
+       webkit2gtk-4.0 \
+       webkit2gtk-web-extension-4.0 \
        $(GSTREAMER_1_0_BINDINGS) \
        $(NULL)
 
@@ -915,7 +921,7 @@ uninstall-am: uninstall-dist_vapiDATA
        uninstall-am uninstall-dist_vapiDATA
 
 
-libvala@PACKAGE_SUFFIX@.vapi: ../gee/gee.vapi ../ccode/ccode.vapi ../vala/vala.vapi ../codegen/codegen.vapi
+libvala@PACKAGE_SUFFIX@.vapi: $(top_srcdir)/gee/gee.vapi $(top_srcdir)/ccode/ccode.vapi $(top_srcdir)/vala/vala.vapi $(top_srcdir)/codegen/codegen.vapi
        cat $^ > $@
 
 .PHONY: all-bindings $(BINDINGS)
@@ -944,7 +950,7 @@ clutter-gtk-1.0:
        $(GENVAPI) --library $(srcdir)/clutter-gtk-1.0 --metadatadir $(METADATADIR) $(METADATADIR)/GtkClutter-1.0-custom.vala --pkg clutter-1.0 --pkg gtk+-3.0 --pkg cogl-pango-1.0 $(GIRDIR)/GtkClutter-1.0.gir
 
 clutter-gst-1.0:
-       $(GENVAPI) --library $(srcdir)/clutter-gst-1.0 --metadatadir $(METADATADIR) $(METADATADIR)/ClutterGst-1.0-custom.vala --pkg clutter-1.0 --pkg gstreamer-base-0.10 --pkg gstreamer-video-0.10 gstreamer-interfaces-0.10.vapi $(GIRDIR)/ClutterGst-1.0.gir
+       $(GENVAPI) --library $(srcdir)/clutter-gst-1.0 --metadatadir $(METADATADIR) $(METADATADIR)/ClutterGst-1.0-custom.vala --pkg clutter-1.0 --pkg gstreamer-base-0.10 --pkg gstreamer-video-0.10 --pkg gstreamer-interfaces-0.10 --pkg gstreamer-audio-0.10 $(GIRDIR)/ClutterGst-1.0.gir
 
 clutter-gst-2.0:
        $(GENVAPI) --library $(srcdir)/clutter-gst-2.0 --metadatadir $(METADATADIR) $(METADATADIR)/ClutterGst-2.0-custom.vala --pkg cogl-1.0 --pkg clutter-1.0 --pkg gstreamer-base-1.0 --pkg gstreamer-video-1.0 $(GIRDIR)/ClutterGst-2.0.gir
@@ -1075,6 +1081,9 @@ gstreamer-video-0.10:
 gstreamer-1.0:
        $(GENVAPI) --library $(srcdir)/gstreamer-1.0 --metadatadir $(METADATADIR) $(METADATADIR)/Gst-1.0-custom.vala $(GIRDIR)/Gst-1.0.gir
 
+gstreamer-allocators-1.0:
+       $(GENVAPI) --library $(srcdir)/gstreamer-allocators-1.0 --pkg gstreamer-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstAllocators-1.0.gir
+
 gstreamer-app-1.0:
        $(GENVAPI) --library $(srcdir)/gstreamer-app-1.0 --pkg gstreamer-base-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstApp-1.0.gir
 
@@ -1099,6 +1108,9 @@ gstreamer-net-1.0:
 gstreamer-pbutils-1.0:
        $(GENVAPI) --library $(srcdir)/gstreamer-pbutils-1.0 --pkg gstreamer-base-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstPbutils-1.0.gir
 
+gstreamer-riff-1.0:
+       $(GENVAPI) --library $(srcdir)/gstreamer-riff-1.0 --pkg gstreamer-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstRiff-1.0.gir
+
 gstreamer-rtp-1.0:
        $(GENVAPI) --library $(srcdir)/gstreamer-rtp-1.0 --pkg gstreamer-base-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstRtp-1.0.gir
 
@@ -1106,7 +1118,7 @@ gstreamer-rtsp-1.0:
        $(GENVAPI) --library $(srcdir)/gstreamer-rtsp-1.0 --pkg gstreamer-sdp-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstRtsp-1.0.gir
 
 gstreamer-rtsp-server-1.0:
-       $(GENVAPI) --library $(srcdir)/gstreamer-rtsp-server-1.0 --pkg gstreamer-rtsp-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstRtspServer-1.0.gir
+       $(GENVAPI) --library $(srcdir)/gstreamer-rtsp-server-1.0 --pkg gstreamer-rtsp-1.0 --pkg gstreamer-net-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstRtspServer-1.0.gir
 
 gstreamer-sdp-1.0:
        $(GENVAPI) --library $(srcdir)/gstreamer-sdp-1.0 --pkg gstreamer-1.0 --metadatadir $(METADATADIR) $(GIRDIR)/GstSdp-1.0.gir
@@ -1139,7 +1151,7 @@ hildon-fm-2:
        $(GENVAPI) --library $(srcdir)/hildon-fm-2 $(PACKAGESDIR)/hildon-fm-2/hildon-fm-2.gi
 
 json-glib-1.0:
-       $(GENVAPI) --library $(srcdir)/json-glib-1.0 --metadatadir $(METADATADIR) $(METADATADIR)/Json-1.0-custom.vala --pkg gio-2.0 $(GIRDIR)/Json-1.0.gir
+       $(GENVAPI) --library $(srcdir)/json-glib-1.0 --metadatadir $(METADATADIR) --pkg gio-2.0 $(METADATADIR)/Json-1.0-custom.vala $(GIRDIR)/Json-1.0.gir
 
 libepc-1.0:
        $(GENVAPI) --library $(srcdir)/libepc-1.0 $(PACKAGESDIR)/libepc-1.0/libepc-1.0.gi
@@ -1252,6 +1264,12 @@ vte-2.90:
 webkit-1.0:
        $(GENVAPI) --library $(srcdir)/webkit-1.0 $(PACKAGESDIR)/webkit-1.0/webkit-1.0.gi
 
+webkit2gtk-4.0:
+       $(GENVAPI) --library $(srcdir)/webkit2gtk-4.0 --metadatadir $(METADATADIR) --pkg gtk+-3.0 --pkg libsoup-2.4 $(GIRDIR)/WebKit2-4.0.gir
+
+webkit2gtk-web-extension-4.0:
+       $(GENVAPI) --library $(srcdir)/webkit2gtk-web-extension-4.0 --metadatadir $(METADATADIR) --pkg gtk+-3.0 $(GIRDIR)/WebKit2WebExtension-4.0.gir
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 55db067..e4d5c57 100644 (file)
@@ -41,12 +41,15 @@ namespace Atk {
        public class Misc : GLib.Object {
                [CCode (has_construct_function = false)]
                protected Misc ();
+               [Deprecated]
                public static unowned Atk.Misc get_instance ();
+               [Deprecated]
                public virtual void threads_enter ();
+               [Deprecated]
                public virtual void threads_leave ();
        }
        [CCode (cheader_filename = "atk/atk.h", type_id = "atk_no_op_object_get_type ()")]
-       public class NoOpObject : Atk.Object, Atk.Action, Atk.Component, Atk.Document, Atk.EditableText, Atk.Hypertext, Atk.Image, Atk.Selection, Atk.Table, Atk.Text, Atk.Value, Atk.Window {
+       public class NoOpObject : Atk.Object, Atk.Action, Atk.Component, Atk.Document, Atk.EditableText, Atk.Hypertext, Atk.Image, Atk.Selection, Atk.Table, Atk.TableCell, Atk.Text, Atk.Value, Atk.Window {
                [CCode (has_construct_function = false, type = "AtkObject*")]
                public NoOpObject (GLib.Object obj);
        }
@@ -65,6 +68,7 @@ namespace Atk {
                [CCode (has_construct_function = false)]
                protected Object ();
                public bool add_relationship (Atk.RelationType relationship, Atk.Object target);
+               [Deprecated]
                public virtual uint connect_property_change_handler (Atk.PropertyChangeHandler handler);
                public virtual Atk.AttributeSet get_attributes ();
                public virtual unowned string get_description ();
@@ -82,9 +86,11 @@ namespace Atk {
                public virtual Atk.Role get_role ();
                public virtual void initialize (void* data);
                public void notify_state_change (Atk.State state, bool value);
+               public unowned Atk.Object peek_parent ();
                public Atk.Object ref_accessible_child (int i);
                public virtual Atk.RelationSet ref_relation_set ();
                public virtual Atk.StateSet ref_state_set ();
+               [Deprecated]
                public virtual void remove_property_change_handler (uint handler_id);
                public bool remove_relationship (Atk.RelationType relationship, Atk.Object target);
                public virtual void set_description (string description);
@@ -105,27 +111,33 @@ namespace Atk {
                public Atk.Object accessible_parent { owned get; set; }
                [NoAccessorMethod]
                public int accessible_role { get; set; }
+               [Deprecated]
                [NoAccessorMethod]
                public string accessible_table_caption { owned get; set; }
                [NoAccessorMethod]
                public Atk.Object accessible_table_caption_object { owned get; set; }
+               [Deprecated]
                [NoAccessorMethod]
                public string accessible_table_column_description { owned get; set; }
+               [Deprecated]
                [NoAccessorMethod]
                public Atk.Object accessible_table_column_header { owned get; set; }
+               [Deprecated]
                [NoAccessorMethod]
                public string accessible_table_row_description { owned get; set; }
+               [Deprecated]
                [NoAccessorMethod]
                public Atk.Object accessible_table_row_header { owned get; set; }
                [NoAccessorMethod]
                public Atk.Object accessible_table_summary { owned get; set; }
+               [Deprecated]
                [NoAccessorMethod]
                public double accessible_value { get; set; }
                public virtual signal void active_descendant_changed (void* child);
                public virtual signal void children_changed (uint change_index, void* changed_child);
                [Deprecated]
                public virtual signal void focus_event (bool focus_in);
-               public signal void property_change (void* arg1);
+               public virtual signal void property_change (void* values);
                public virtual signal void state_change (string name, bool state_set);
                public virtual signal void visible_data_changed ();
        }
@@ -145,6 +157,17 @@ namespace Atk {
                [NoWrapper]
                public virtual string get_object_id ();
        }
+       [CCode (cheader_filename = "atk/atk.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "atk_range_get_type ()")]
+       [Compact]
+       public class Range {
+               [CCode (has_construct_function = false)]
+               public Range (double lower_limit, double upper_limit, string description);
+               public Atk.Range copy ();
+               public void free ();
+               public unowned string get_description ();
+               public double get_lower_limit ();
+               public double get_upper_limit ();
+       }
        [CCode (cheader_filename = "atk/atk.h")]
        public class Registry : GLib.Object {
                [Deprecated]
@@ -214,7 +237,7 @@ namespace Atk {
                public bool contains_state (Atk.StateType type);
                public bool contains_states ([CCode (array_length_cname = "n_types", array_length_pos = 1.1)] Atk.StateType[] types);
                public bool is_empty ();
-               public Atk.StateSet or_sets (Atk.StateSet compare_set);
+               public Atk.StateSet? or_sets (Atk.StateSet compare_set);
                public bool remove_state (Atk.StateType type);
                public Atk.StateSet xor_sets (Atk.StateSet compare_set);
        }
@@ -264,11 +287,11 @@ namespace Atk {
        [CCode (cheader_filename = "atk/atk.h", type_id = "atk_action_get_type ()")]
        public interface Action : GLib.Object {
                public abstract bool do_action (int i);
-               public abstract unowned string get_description (int i);
-               public abstract unowned string get_keybinding (int i);
-               public abstract unowned string get_localized_name (int i);
+               public abstract unowned string? get_description (int i);
+               public abstract unowned string? get_keybinding (int i);
+               public abstract unowned string? get_localized_name (int i);
                public abstract int get_n_actions ();
-               public abstract unowned string get_name (int i);
+               public abstract unowned string? get_name (int i);
                public abstract bool set_description (int i, string desc);
        }
        [CCode (cheader_filename = "atk/atk.h", type_id = "atk_component_get_type ()")]
@@ -280,10 +303,12 @@ namespace Atk {
                public abstract void get_extents (int x, int y, int width, int height, Atk.CoordType coord_type);
                public abstract Atk.Layer get_layer ();
                public abstract int get_mdi_zorder ();
+               [Deprecated]
                public abstract void get_position (int x, int y, Atk.CoordType coord_type);
+               [Deprecated]
                public abstract void get_size (int width, int height);
                public abstract bool grab_focus ();
-               public abstract Atk.Object ref_accessible_at_point (int x, int y, Atk.CoordType coord_type);
+               public abstract Atk.Object? ref_accessible_at_point (int x, int y, Atk.CoordType coord_type);
                [Deprecated]
                public abstract void remove_focus_handler (uint handler_id);
                public abstract bool set_extents (int x, int y, int width, int height, Atk.CoordType coord_type);
@@ -294,7 +319,7 @@ namespace Atk {
        [CCode (cheader_filename = "atk/atk.h", type_id = "atk_document_get_type ()")]
        public interface Document : GLib.Object {
                [CCode (vfunc_name = "get_document_attribute_value")]
-               public virtual unowned string get_attribute_value (string attribute_name);
+               public virtual unowned string? get_attribute_value (string attribute_name);
                [CCode (vfunc_name = "get_document_attributes")]
                public virtual unowned Atk.AttributeSet get_attributes ();
                public virtual int get_current_page_number ();
@@ -339,7 +364,7 @@ namespace Atk {
        [CCode (cheader_filename = "atk/atk.h", type_id = "atk_image_get_type ()")]
        public interface Image : GLib.Object {
                public abstract unowned string get_image_description ();
-               public abstract unowned string get_image_locale ();
+               public abstract unowned string? get_image_locale ();
                public abstract void get_image_position (int x, int y, Atk.CoordType coord_type);
                public abstract void get_image_size (int width, int height);
                public abstract bool set_image_description (string description);
@@ -354,7 +379,7 @@ namespace Atk {
                public abstract bool clear_selection ();
                public abstract int get_selection_count ();
                public abstract bool is_child_selected (int i);
-               public abstract Atk.Object ref_selection (int i);
+               public abstract Atk.Object? ref_selection (int i);
                public abstract bool remove_selection (int i);
                public abstract bool select_all_selection ();
                public virtual signal void selection_changed ();
@@ -364,24 +389,27 @@ namespace Atk {
                public abstract unowned string get_mime_type (int i);
                public abstract int get_n_mime_types ();
                public abstract GLib.IOChannel get_stream (string mime_type);
-               public abstract unowned string get_uri (string mime_type);
+               public abstract unowned string? get_uri (string mime_type);
        }
        [CCode (cheader_filename = "atk/atk.h", type_id = "atk_table_get_type ()")]
        public interface Table : GLib.Object {
                public abstract bool add_column_selection (int column);
                public abstract bool add_row_selection (int row);
-               public abstract unowned Atk.Object get_caption ();
+               public abstract unowned Atk.Object? get_caption ();
+               [Deprecated]
                public abstract int get_column_at_index (int index_);
                public abstract unowned string get_column_description (int column);
                public abstract int get_column_extent_at (int row, int column);
-               public abstract unowned Atk.Object get_column_header (int column);
+               public abstract unowned Atk.Object? get_column_header (int column);
+               [Deprecated]
                public abstract int get_index_at (int row, int column);
                public abstract int get_n_columns ();
                public abstract int get_n_rows ();
+               [Deprecated]
                public abstract int get_row_at_index (int index_);
-               public abstract unowned string get_row_description (int row);
+               public abstract unowned string? get_row_description (int row);
                public abstract int get_row_extent_at (int row, int column);
-               public abstract unowned Atk.Object get_row_header (int row);
+               public abstract unowned Atk.Object? get_row_header (int row);
                public abstract int get_selected_columns (int selected);
                public abstract int get_selected_rows (int selected);
                public abstract Atk.Object get_summary ();
@@ -405,6 +433,16 @@ namespace Atk {
                public virtual signal void row_inserted (int row, int num_inserted);
                public virtual signal void row_reordered ();
        }
+       [CCode (cheader_filename = "atk/atk.h", type_id = "atk_table_cell_get_type ()")]
+       public interface TableCell : Atk.Object {
+               public abstract GLib.GenericArray<Atk.Object> get_column_header_cells ();
+               public abstract int get_column_span ();
+               public abstract bool get_position (out int row, out int column);
+               public abstract bool get_row_column_span (out int row, out int column, out int row_span, out int column_span);
+               public abstract GLib.GenericArray<Atk.Object> get_row_header_cells ();
+               public abstract int get_row_span ();
+               public abstract Atk.Object get_table ();
+       }
        [CCode (cheader_filename = "atk/atk.h")]
        public interface Text : GLib.Object {
                public abstract bool add_selection (int start_offset, int end_offset);
@@ -417,7 +455,7 @@ namespace Atk {
                [Deprecated (replacement = "TextAttribute.register", since = "vala-0.16")]
                public static Atk.TextAttribute attribute_register (string name);
                public static void free_ranges ([CCode (array_length = false)] Atk.TextRange[] ranges);
-               [CCode (array_length = false, array_null_terminated = true)]
+               [CCode (array_length = false, array_null_terminated = true, cname = "atk_text_get_bounded_ranges")]
                public virtual Atk.TextRange[] get_bounded_ranges (Atk.TextRectangle rect, Atk.CoordType coord_type, Atk.TextClipType x_clip_type, Atk.TextClipType y_clip_type);
                public abstract int get_caret_offset ();
                public abstract unichar get_character_at_offset (int offset);
@@ -429,7 +467,7 @@ namespace Atk {
                public abstract void get_range_extents (int start_offset, int end_offset, Atk.CoordType coord_type, Atk.TextRectangle rect);
                public abstract Atk.AttributeSet get_run_attributes (int offset, out int start_offset, out int end_offset);
                public abstract string get_selection (int selection_num, out int start_offset, out int end_offset);
-               public abstract string get_string_at_offset (int offset, Atk.TextGranularity granularity, out int start_offset, out int end_offset);
+               public abstract string? get_string_at_offset (int offset, Atk.TextGranularity granularity, out int start_offset, out int end_offset);
                public abstract string get_text (int start_offset, int end_offset);
                [Deprecated]
                public abstract string get_text_after_offset (int offset, Atk.TextBoundary boundary_type, out int start_offset, out int end_offset);
@@ -450,11 +488,22 @@ namespace Atk {
        }
        [CCode (cheader_filename = "atk/atk.h", type_id = "atk_value_get_type ()")]
        public interface Value : GLib.Object {
+               [Deprecated]
                public abstract void get_current_value (GLib.Value value);
+               public abstract double get_increment ();
+               [Deprecated]
                public abstract void get_maximum_value (GLib.Value value);
+               [Deprecated]
                public abstract void get_minimum_increment (GLib.Value value);
+               [Deprecated]
                public abstract void get_minimum_value (GLib.Value value);
+               public abstract Atk.Range? get_range ();
+               public abstract GLib.SList<Atk.Range> get_sub_ranges ();
+               public abstract void get_value_and_text (out double value, out string text);
+               [Deprecated]
                public abstract bool set_current_value (GLib.Value value);
+               public abstract void set_value (double new_value);
+               public signal void value_changed (double value, string text);
        }
        [CCode (cheader_filename = "atk/atk.h", type_id = "atk_window_get_type ()")]
        public interface Window : Atk.Object {
@@ -484,8 +533,7 @@ namespace Atk {
                public uint16 keycode;
                public uint32 timestamp;
        }
-       [CCode (cheader_filename = "atk/atk.h", cname = "_AtkPropertyValues", has_type_id = false)]
-       [GIR (name = "_PropertyValues")]
+       [CCode (cheader_filename = "atk/atk.h", has_type_id = false)]
        public struct PropertyValues {
                public weak string property_name;
                public GLib.Value old_value;
@@ -688,6 +736,9 @@ namespace Atk {
                MATH,
                RATING,
                TIMER,
+               DESCRIPTION_LIST,
+               DESCRIPTION_TERM,
+               DESCRIPTION_VALUE,
                LAST_DEFINED;
                [CCode (cheader_filename = "atk/atk.h")]
                public static Atk.Role for_name (string name);
@@ -696,6 +747,7 @@ namespace Atk {
                [CCode (cheader_filename = "atk/atk.h")]
                public static unowned string get_name (Atk.Role role);
                [CCode (cheader_filename = "atk/atk.h")]
+               [Deprecated]
                public static Atk.Role register (string name);
        }
        [CCode (cheader_filename = "atk/atk.h", cprefix = "ATK_STATE_", type_id = "atk_state_type_get_type ()")]
@@ -785,7 +837,7 @@ namespace Atk {
                [CCode (cheader_filename = "atk/atk.h")]
                public static unowned string get_name (Atk.TextAttribute attr);
                [CCode (cheader_filename = "atk/atk.h")]
-               public static unowned string get_value (Atk.TextAttribute attr, int index_);
+               public static unowned string? get_value (Atk.TextAttribute attr, int index_);
                [CCode (cheader_filename = "atk/atk.h")]
                public static Atk.TextAttribute register (string name);
        }
@@ -814,6 +866,29 @@ namespace Atk {
                LINE,
                PARAGRAPH
        }
+       [CCode (cheader_filename = "atk/atk.h", cprefix = "ATK_VALUE_", type_id = "atk_value_type_get_type ()")]
+       public enum ValueType {
+               VERY_WEAK,
+               WEAK,
+               ACCEPTABLE,
+               STRONG,
+               VERY_STRONG,
+               VERY_LOW,
+               LOW,
+               MEDIUM,
+               HIGH,
+               VERY_HIGH,
+               VERY_BAD,
+               BAD,
+               GOOD,
+               VERY_GOOD,
+               BEST,
+               LAST_DEFINED;
+               [CCode (cheader_filename = "atk/atk.h")]
+               public static unowned string get_localized_name (Atk.ValueType value_type);
+               [CCode (cheader_filename = "atk/atk.h")]
+               public static unowned string get_name (Atk.ValueType value_type);
+       }
        [CCode (cheader_filename = "atk/atk.h", has_target = false)]
        public delegate void EventListener (Atk.Object obj);
        [CCode (cheader_filename = "atk/atk.h", has_target = false)]
@@ -826,6 +901,7 @@ namespace Atk {
        [CCode (cheader_filename = "atk/atk.h", instance_pos = 1.9)]
        public delegate int KeySnoopFunc (Atk.KeyEventStruct event);
        [CCode (cheader_filename = "atk/atk.h", has_target = false)]
+       [Deprecated]
        public delegate void PropertyChangeHandler (Atk.Object obj, Atk.PropertyValues vals);
        [CCode (cheader_filename = "atk/atk.h", cname = "GSignalEmissionHook", has_target = false)]
        public delegate bool SignalEmissionHook (GLib.SignalInvocationHint ihint, [CCode (array_length_pos = 1.9)] Atk.Value[] param_values, void* data);
@@ -839,6 +915,8 @@ namespace Atk {
        public const int MICRO_VERSION;
        [CCode (cheader_filename = "atk/atk.h", cname = "ATK_MINOR_VERSION")]
        public const int MINOR_VERSION;
+       [CCode (cheader_filename = "atk/atk.h", cname = "ATK_VERSION_MIN_REQUIRED")]
+       public const int VERSION_MIN_REQUIRED;
        [CCode (cheader_filename = "atk/atk.h")]
        [Deprecated (replacement = "Atk.Util.add_focus_tracker", since = "vala-0.16")]
        public static uint add_focus_tracker (Atk.EventListener focus_tracker);
index 6148478..73239ce 100644 (file)
@@ -3,7 +3,7 @@
 [CCode (cprefix = "Atspi", gir_namespace = "Atspi", gir_version = "2.0", lower_case_cprefix = "atspi_")]
 namespace Atspi {
        [CCode (cheader_filename = "atspi/atspi.h", type_id = "atspi_accessible_get_type ()")]
-       public class Accessible : Atspi.Object, Atspi.Action, Atspi.Collection, Atspi.Component, Atspi.Document, Atspi.EditableText, Atspi.Hypertext, Atspi.Image, Atspi.Selection, Atspi.Table, Atspi.Text, Atspi.Value {
+       public class Accessible : Atspi.Object, Atspi.Action, Atspi.Collection, Atspi.Component, Atspi.Document, Atspi.EditableText, Atspi.Hypertext, Atspi.Image, Atspi.Selection, Atspi.Table, Atspi.TableCell, Atspi.Text, Atspi.Value {
                public weak Atspi.Accessible accessible_parent;
                public weak GLib.HashTable<void*,void*> attributes;
                public uint cached_properties;
@@ -51,7 +51,7 @@ namespace Atspi {
                public string get_localized_role_name () throws GLib.Error;
                public string get_name () throws GLib.Error;
                public unowned string get_object_locale () throws GLib.Error;
-               public Atspi.Accessible get_parent () throws GLib.Error;
+               public Atspi.Accessible? get_parent () throws GLib.Error;
                public uint get_process_id () throws GLib.Error;
                public GLib.Array<Atspi.Accessible> get_relation_set () throws GLib.Error;
                public Atspi.Role get_role () throws GLib.Error;
@@ -62,6 +62,7 @@ namespace Atspi {
                public Atspi.StateSet get_state_set ();
                [Deprecated (since = "2.10")]
                public Atspi.Table get_table ();
+               public Atspi.TableCell get_table_cell ();
                public Atspi.Table get_table_iface ();
                [Deprecated (since = "2.10")]
                public Atspi.Text get_text ();
@@ -81,7 +82,7 @@ namespace Atspi {
                public DeviceListener (owned Atspi.DeviceListenerCB callback);
                public void add_callback ([CCode (delegate_target_pos = 1.2, destroy_notify_pos = 1.1)] owned Atspi.DeviceListenerCB callback);
                [NoWrapper]
-               public virtual bool device_event (Atspi.DeviceEvent arg1);
+               public virtual bool device_event (Atspi.DeviceEvent event);
                public void remove_callback (Atspi.DeviceListenerCB callback);
                [CCode (has_construct_function = false)]
                public DeviceListener.simple ([CCode (destroy_notify_pos = 1.1)] owned Atspi.DeviceListenerSimpleCB callback);
@@ -109,6 +110,7 @@ namespace Atspi {
                public static bool deregister_no_data (Atspi.EventListenerSimpleCB callback, string event_type) throws GLib.Error;
                public bool register (string event_type) throws GLib.Error;
                public static bool register_from_callback ([CCode (delegate_target_pos = 1.33333, destroy_notify_pos = 1.66667)] owned Atspi.EventListenerCB callback, string event_type) throws GLib.Error;
+               public bool register_full (string event_type, GLib.Array<string>? properties) throws GLib.Error;
                public static bool register_no_data ([CCode (destroy_notify_pos = 1.5)] owned Atspi.EventListenerSimpleCB callback, string event_type) throws GLib.Error;
                [CCode (has_construct_function = false)]
                public EventListener.simple ([CCode (destroy_notify_pos = 1.1)] owned Atspi.EventListenerSimpleCB callback);
@@ -225,6 +227,7 @@ namespace Atspi {
        }
        [CCode (cheader_filename = "atspi/atspi.h", type_id = "atspi_collection_get_type ()")]
        public interface Collection : GLib.Object {
+               public Atspi.Accessible get_active_descendant () throws GLib.Error;
                public GLib.Array<Atspi.Accessible> get_matches (Atspi.MatchRule rule, Atspi.CollectionSortOrder sortby, int count, bool traverse) throws GLib.Error;
                public GLib.Array<Atspi.Accessible> get_matches_from (Atspi.Accessible current_object, Atspi.MatchRule rule, Atspi.CollectionSortOrder sortby, Atspi.CollectionTreeTraversalType tree, int count, bool traverse) throws GLib.Error;
                public GLib.Array<Atspi.Accessible> get_matches_to (Atspi.Accessible current_object, Atspi.MatchRule rule, Atspi.CollectionSortOrder sortby, Atspi.CollectionTreeTraversalType tree, bool limit_scope, int count, bool traverse) throws GLib.Error;
@@ -233,7 +236,7 @@ namespace Atspi {
        [CCode (cheader_filename = "atspi/atspi.h", type_id = "atspi_component_get_type ()")]
        public interface Component : GLib.Object {
                public bool contains (int x, int y, Atspi.CoordType ctype) throws GLib.Error;
-               public Atspi.Accessible get_accessible_at_point (int x, int y, Atspi.CoordType ctype) throws GLib.Error;
+               public Atspi.Accessible? get_accessible_at_point (int x, int y, Atspi.CoordType ctype) throws GLib.Error;
                public double get_alpha () throws GLib.Error;
                public Atspi.Rect get_extents (Atspi.CoordType ctype) throws GLib.Error;
                public Atspi.ComponentLayer get_layer () throws GLib.Error;
@@ -251,9 +254,11 @@ namespace Atspi {
                public string get_attribute_value (string attribute) throws GLib.Error;
                [Deprecated (since = "2.10")]
                public GLib.HashTable<string,string> get_attributes () throws GLib.Error;
+               public int get_current_page_number () throws GLib.Error;
                public string get_document_attribute_value (string attribute) throws GLib.Error;
                public GLib.HashTable<string,string> get_document_attributes () throws GLib.Error;
                public string get_locale () throws GLib.Error;
+               public int get_page_count () throws GLib.Error;
        }
        [CCode (cheader_filename = "atspi/atspi.h", type_id = "atspi_editable_text_get_type ()")]
        public interface EditableText : GLib.Object {
@@ -266,7 +271,7 @@ namespace Atspi {
        }
        [CCode (cheader_filename = "atspi/atspi.h", type_id = "atspi_hypertext_get_type ()")]
        public interface Hypertext : GLib.Object {
-               public Atspi.Hyperlink get_link (int link_index) throws GLib.Error;
+               public Atspi.Hyperlink? get_link (int link_index) throws GLib.Error;
                public int get_link_index (int character_offset) throws GLib.Error;
                public int get_n_links () throws GLib.Error;
        }
@@ -318,12 +323,23 @@ namespace Atspi {
                public bool remove_column_selection (int column) throws GLib.Error;
                public bool remove_row_selection (int row) throws GLib.Error;
        }
+       [CCode (cheader_filename = "atspi/atspi.h", type_id = "atspi_table_cell_get_type ()")]
+       public interface TableCell : GLib.Object {
+               public GLib.GenericArray<Atspi.Accessible> get_column_header_cells () throws GLib.Error;
+               public int get_column_index () throws GLib.Error;
+               public int get_column_span (GLib.Error error);
+               public void get_row_column_span (out int row, out int column, out int row_span, out int column_span) throws GLib.Error;
+               public GLib.GenericArray<Atspi.Accessible> get_row_header_cells () throws GLib.Error;
+               public int get_row_index () throws GLib.Error;
+               public int get_row_span () throws GLib.Error;
+               public Atspi.Accessible get_table () throws GLib.Error;
+       }
        [CCode (cheader_filename = "atspi/atspi.h", type_id = "atspi_text_get_type ()")]
        public interface Text : GLib.Object {
                public bool add_selection (int start_offset, int end_offset) throws GLib.Error;
                public GLib.HashTable<string,string> get_attribute_run (int offset, bool include_defaults, out int start_offset, out int end_offset) throws GLib.Error;
                [Deprecated (since = "2.10")]
-               public string get_attribute_value (int offset, string attribute_name) throws GLib.Error;
+               public string? get_attribute_value (int offset, string attribute_name) throws GLib.Error;
                [Deprecated (since = "2.10")]
                public GLib.HashTable<string,string> get_attributes (int offset, out int start_offset, out int end_offset) throws GLib.Error;
                public GLib.Array<Atspi.TextRange> get_bounded_ranges (int x, int y, int width, int height, Atspi.CoordType type, Atspi.TextClipType clipTypeX, Atspi.TextClipType clipTypeY) throws GLib.Error;
@@ -341,7 +357,7 @@ namespace Atspi {
                public Atspi.TextRange get_text_after_offset (int offset, Atspi.TextBoundaryType type) throws GLib.Error;
                [Deprecated (since = "2.10")]
                public Atspi.TextRange get_text_at_offset (int offset, Atspi.TextBoundaryType type) throws GLib.Error;
-               public string get_text_attribute_value (int offset, string attribute_name) throws GLib.Error;
+               public string? get_text_attribute_value (int offset, string attribute_name) throws GLib.Error;
                public GLib.HashTable<string,string> get_text_attributes (int offset, out int start_offset, out int end_offset) throws GLib.Error;
                public Atspi.TextRange get_text_before_offset (int offset, Atspi.TextBoundaryType type) throws GLib.Error;
                public bool remove_selection (int selection_num) throws GLib.Error;
@@ -376,7 +392,7 @@ namespace Atspi {
        [SimpleType]
        public struct ControllerEventMask : uint {
        }
-       [CCode (cheader_filename = "atspi/atspi.h", has_type_id = false)]
+       [CCode (cheader_filename = "atspi/atspi.h", type_id = "atspi_device_event_get_type ()")]
        public struct DeviceEvent {
                public Atspi.EventType type;
                public uint id;
@@ -404,6 +420,13 @@ namespace Atspi {
        [SimpleType]
        public struct KeyMaskType : uint {
        }
+       [CCode (cheader_filename = "atspi/atspi.h", has_type_id = false)]
+       public struct KeySet {
+               public uint keysyms;
+               public ushort keycodes;
+               public weak string keystrings;
+               public short len;
+       }
        [CCode (cheader_filename = "atspi/atspi.h")]
        [SimpleType]
        public struct KeystrokeListener {
@@ -413,13 +436,6 @@ namespace Atspi {
                public weak string name;
                public weak string path;
        }
-       [CCode (cheader_filename = "atspi/atspi.h", cname = "_AtspiKeySet", has_type_id = false)]
-       public struct _KeySet {
-               public uint keysyms;
-               public ushort keycodes;
-               public weak string keystrings;
-               public short len;
-       }
        [CCode (cheader_filename = "atspi/atspi.h", cprefix = "ATSPI_CACHE_", type_id = "atspi_cache_get_type ()")]
        [Flags]
        public enum Cache {
@@ -483,7 +499,8 @@ namespace Atspi {
        [CCode (cheader_filename = "atspi/atspi.h", cprefix = "ATSPI_ERROR_", has_type_id = false)]
        public enum Error {
                APPLICATION_GONE,
-               IPC
+               IPC,
+               SYNC_NOT_ALLOWED
        }
        [CCode (cheader_filename = "atspi/atspi.h", cprefix = "ATSPI_", type_id = "atspi_event_type_get_type ()")]
        public enum EventType {
@@ -662,6 +679,18 @@ namespace Atspi {
                NOTIFICATION,
                INFO_BAR,
                LEVEL_BAR,
+               TITLE_BAR,
+               BLOCK_QUOTE,
+               AUDIO,
+               VIDEO,
+               DEFINITION,
+               ARTICLE,
+               LANDMARK,
+               LOG,
+               MARQUEE,
+               MATH,
+               RATING,
+               TIMER,
                LAST_DEFINED;
                public static string get_name (Atspi.Role role);
        }
@@ -708,6 +737,8 @@ namespace Atspi {
                SELECTABLE_TEXT,
                IS_DEFAULT,
                VISITED,
+               CHECKABLE,
+               HAS_POPUP,
                LAST_DEFINED
        }
        [CCode (cheader_filename = "atspi/atspi.h", cprefix = "ATSPI_TEXT_BOUNDARY_", type_id = "atspi_text_boundary_type_get_type ()")]
@@ -787,6 +818,8 @@ namespace Atspi {
        public const string DBUS_INTERFACE_SOCKET;
        [CCode (cheader_filename = "atspi/atspi.h", cname = "ATSPI_DBUS_INTERFACE_TABLE")]
        public const string DBUS_INTERFACE_TABLE;
+       [CCode (cheader_filename = "atspi/atspi.h", cname = "ATSPI_DBUS_INTERFACE_TABLE_CELL")]
+       public const string DBUS_INTERFACE_TABLE_CELL;
        [CCode (cheader_filename = "atspi/atspi.h", cname = "ATSPI_DBUS_INTERFACE_TEXT")]
        public const string DBUS_INTERFACE_TEXT;
        [CCode (cheader_filename = "atspi/atspi.h", cname = "ATSPI_DBUS_INTERFACE_VALUE")]
@@ -838,6 +871,8 @@ namespace Atspi {
        [CCode (cheader_filename = "atspi/atspi.h")]
        public static int get_desktop_count ();
        [CCode (cheader_filename = "atspi/atspi.h")]
+       public static GLib.Array<Atspi.Accessible> get_desktop_list ();
+       [CCode (cheader_filename = "atspi/atspi.h")]
        public static int init ();
        [CCode (cheader_filename = "atspi/atspi.h")]
        public static bool is_initialized ();
index 066ac9f..fae14ef 100644 (file)
@@ -20,6 +20,7 @@
  *     Jürg Billeter <j@bitron.ch>
  */
 
+[Deprecated (since = "vala-0.26", replacement = "bindings distributed with vala-extra-vapis")]
 namespace Cairo {
        [Compact]
        [CCode (cname = "cairo_surface_t", cheader_filename = "cairo-xcb.h")]
index 0f589bf..a4ae6e7 100644 (file)
@@ -169,7 +169,10 @@ namespace Cairo {
                DEFAULT,
                NONE,
                GRAY,
-               SUBPIXEL
+               SUBPIXEL,
+               FAST,
+               GOOD,
+               BEST
        }
 
        [CCode (cname = "cairo_fill_rule_t", has_type_id = false)]
@@ -367,7 +370,9 @@ namespace Cairo {
                SOLID,
                SURFACE,
                LINEAR,
-               RADIAL
+               RADIAL,
+               MESH,
+               RASTER_SOURCE
        }
 
        [Compact]
@@ -474,7 +479,8 @@ namespace Cairo {
                TOY,
                FT,
                WIN32,
-               ATSUI
+               QUARTZ,
+               USER
        }
 
        [Compact]
@@ -589,7 +595,9 @@ namespace Cairo {
                SCRIPT,
                XCB,
                XLIB,
-               XML
+               XML,
+               COGL,
+               WIN32
        }
 
        [Compact]
@@ -630,6 +638,8 @@ namespace Cairo {
        public class Surface {
                [CCode (cname = "cairo_surface_create_similar")]
                public Surface.similar (Surface other, Content content, int width, int height);
+               [CCode (cname = "cairo_surface_create_similar_image")]
+               public Surface.similar_image (Surface other, Format format, int width, int height);
                [CCode (cname = "cairo_surface_create_for_rectangle")]
                public Surface.for_rectangle (Surface target, double x, double y, double width, double height);
                public void copy_page ();
@@ -638,17 +648,22 @@ namespace Cairo {
                public void get_font_options (out FontOptions options);
                public Content get_content ();
                public Device get_device ();
+               public void get_device_offset (out double x_offset, out double y_offset);
+               public void get_device_scale (out double x_scale, out double y_scale);
                public void get_fallback_resolution (out double x_pixels_per_inch, out double y_pixels_per_inch);
                public uint get_reference_count ();
+               public SurfaceType get_type ();
                public bool has_show_text_glyphs ();
                public void mark_dirty ();
                public void mark_dirty_rectangle (int x, int y, int width, int height);
+               public Surface map_to_image (RectangleInt extents);
                public void set_device_offset (double x_offset, double y_offset);
-               public void get_device_offset (out double x_offset, out double y_offset);
+               public void set_device_scale (double x_scale, double y_scale);
                public void set_fallback_resolution (double x_pixels_per_inch, double y_pixels_per_inch);
                public void show_page ();
                public Status status ();
-               public SurfaceType get_type ();
+               public bool supports_mime_type (string mime_type);
+               public void unmap_image (Surface image);
 
                public Status write_to_png (string filename);
                public Status write_to_png_stream (WriteFunc write_func);
@@ -657,6 +672,44 @@ namespace Cairo {
                public Surface? win32_get_image ();
        }
 
+       [Compact]
+       [CCode (ref_function = "cairo_device_reference", unref_function = "cairo_device_destroy", cname = "cairo_device_t", cheader_filename = "cairo.h")]
+       public class DeviceObserver {
+               protected DeviceObserver ();
+               public double elapsed ();
+               public double fill_elapsed ();
+               public double glyphs_elapsed ();
+               public double mask_elapsed ();
+               public double paint_elapsed ();
+               public double stroke_elapsed ();
+               public Status print (WriteFunc write_func);
+       }
+
+       [Compact]
+       [CCode (ref_function = "cairo_surface_reference", unref_function = "cairo_surface_destroy", cname = "cairo_surface_t", cheader_filename = "cairo.h")]
+       public class SurfaceObserver {
+               [CCode (cname = "cairo_surface_create_observer")]
+               public SurfaceObserver (Surface target, SurfaceObserverMode mode);
+               public Status add_fill_callback (SurfaceObserverCallback func);
+               public Status add_finish_callback (SurfaceObserverCallback func);
+               public Status add_flush_callback (SurfaceObserverCallback func);
+               public Status add_glyphs_callback (SurfaceObserverCallback func);
+               public Status add_mask_callback (SurfaceObserverCallback func);
+               public Status add_paint_callback (SurfaceObserverCallback func);
+               public Status add_stroke_callback (SurfaceObserverCallback func);
+               public double elapsed ();
+               public Status print (WriteFunc write_func);
+       }
+
+       [CCode (cname = "cairo_surface_observer_callback_t", instance_pos = 2.9)]
+       public delegate void SurfaceObserverCallback (SurfaceObserver observer, Surface target);
+
+       [CCode (cname = "cairo_surface_observer_mode_t", has_type_id = false)]
+       public enum SurfaceObserverMode {
+               NORMAL,
+               RECORD_OPERATIONS
+       }
+
        [CCode (cname = "cairo_content_t", has_type_id = false)]
        public enum Content {
                COLOR,
@@ -676,7 +729,21 @@ namespace Cairo {
                WIN32,
                BEOS,
                DIRECTFB,
-               SVG
+               SVG,
+               OS2,
+               WIN32_PRINTING,
+               QUARTZ_IMAGE,
+               SCRIPT,
+               QT,
+               RECORDING,
+               VG,
+               GL,
+               DRM,
+               TEE,
+               XML,
+               SKIA,
+               SUBSURFACE,
+               COGL
        }
 
        [CCode (cname = "cairo_format_t", has_type_id = false)]
@@ -685,7 +752,8 @@ namespace Cairo {
                RGB24,
                A8,
                A1,
-               RGB16_565;
+               RGB16_565,
+               RGB30;
 
                public int stride_for_width (int width);
        }
@@ -903,7 +971,10 @@ namespace Cairo {
                INVALID_SIZE,
                USER_FONT_NOT_IMPLEMENTED,
                DEVICE_TYPE_MISMATCH,
-               DEVICE_ERROR;
+               DEVICE_ERROR,
+               INVALID_MESH_CONSTRUCTION,
+               DEVICE_FINISHED,
+               JBIG2_GLOBAL_MISSING;
                [CCode (cname = "cairo_status_to_string")]
                public unowned string to_string ();
        }
@@ -914,6 +985,10 @@ namespace Cairo {
                public const string JPEG;
                public const string PNG;
                public const string URI;
+               public const string UNIQUE_ID;
+               public const string JBIG2;
+               public const string JBIG2_GLOBAL;
+               public const string JBIG2_GLOBAL_ID;
        }
 
        public int version ();
index 9ab9272..4ce9e09 100644 (file)
@@ -5230,39 +5230,22 @@ namespace Clutter {
        [Deprecated (since = "1.12")]
        public class Animator : GLib.Object, Clutter.Scriptable {
                [CCode (has_construct_function = false)]
-               [Deprecated (since = "1.12")]
                public Animator ();
-               [Deprecated (since = "1.12")]
                public bool compute_value (GLib.Object object, string property_name, double progress, GLib.Value value);
-               [Deprecated (since = "1.12")]
                public uint get_duration ();
-               [Deprecated (since = "1.12")]
                public GLib.List<weak Clutter.AnimatorKey> get_keys (GLib.Object? object, string? property_name, double progress);
-               [Deprecated (since = "1.12")]
                public unowned Clutter.Timeline get_timeline ();
-               [Deprecated (since = "1.12")]
                public bool property_get_ease_in (GLib.Object object, string property_name);
-               [Deprecated (since = "1.12")]
                public Clutter.Interpolation property_get_interpolation (GLib.Object object, string property_name);
-               [Deprecated (since = "1.12")]
                public void property_set_ease_in (GLib.Object object, string property_name, bool ease_in);
-               [Deprecated (since = "1.12")]
                public void property_set_interpolation (GLib.Object object, string property_name, Clutter.Interpolation interpolation);
-               [Deprecated (since = "1.12")]
                public void remove_key (GLib.Object? object, string? property_name, double progress);
-               [Deprecated (since = "1.12")]
                public void @set (void* first_object, string first_property_name, uint first_mode, ...);
-               [Deprecated (since = "1.12")]
                public void set_duration (uint duration);
-               [Deprecated (since = "1.12")]
                public unowned Clutter.Animator set_key (GLib.Object object, string property_name, uint mode, double progress, GLib.Value value);
-               [Deprecated (since = "1.12")]
                public void set_timeline (Clutter.Timeline timeline);
-               [Deprecated (since = "1.12")]
                public unowned Clutter.Timeline start ();
-               [Deprecated (since = "1.12")]
                public uint duration { get; set; }
-               [Deprecated (since = "1.12")]
                public Clutter.Timeline timeline { get; set; }
        }
        [CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_animator_key_get_type ()")]
@@ -5333,49 +5316,31 @@ namespace Clutter {
        public abstract class Behaviour : GLib.Object, Clutter.Scriptable {
                [CCode (has_construct_function = false)]
                protected Behaviour ();
-               [Deprecated (since = "1.6")]
                public void actors_foreach (Clutter.BehaviourForeachFunc func);
                [NoWrapper]
                public virtual void alpha_notify (double alpha_value);
-               [Deprecated (since = "1.6")]
                public void apply (Clutter.Actor actor);
-               [Deprecated (since = "1.6")]
                public GLib.SList<weak Clutter.Actor> get_actors ();
-               [Deprecated (since = "1.6")]
                public unowned Clutter.Alpha get_alpha ();
-               [Deprecated (since = "1.6")]
                public int get_n_actors ();
-               [Deprecated (since = "1.6")]
                public unowned Clutter.Actor get_nth_actor (int index_);
-               [Deprecated (since = "1.6")]
                public bool is_applied (Clutter.Actor actor);
-               [Deprecated (since = "1.6")]
                public void remove (Clutter.Actor actor);
-               [Deprecated (since = "1.6")]
                public void remove_all ();
-               [Deprecated (since = "1.6")]
                public void set_alpha (Clutter.Alpha alpha);
-               [Deprecated (since = "1.6")]
                public Clutter.Alpha alpha { get; set; }
-               [Deprecated (since = "1.6")]
                public virtual signal void applied (Clutter.Actor actor);
-               [Deprecated (since = "1.6")]
                public virtual signal void removed (Clutter.Actor actor);
        }
        [CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_behaviour_depth_get_type ()")]
        [Deprecated (since = "1.6")]
        public class BehaviourDepth : Clutter.Behaviour, Clutter.Scriptable {
                [CCode (has_construct_function = false, type = "ClutterBehaviour*")]
-               [Deprecated (since = "1.6")]
                public BehaviourDepth (Clutter.Alpha? alpha, int depth_start, int depth_end);
-               [Deprecated (since = "1.6")]
                public void get_bounds (out int depth_start, out int depth_end);
-               [Deprecated (since = "1.6")]
                public void set_bounds (int depth_start, int depth_end);
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public int depth_end { get; set; }
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public int depth_start { get; set; }
        }
@@ -5418,16 +5383,11 @@ namespace Clutter {
        [Deprecated (since = "1.6")]
        public class BehaviourOpacity : Clutter.Behaviour, Clutter.Scriptable {
                [CCode (has_construct_function = false, type = "ClutterBehaviour*")]
-               [Deprecated (since = "1.6")]
                public BehaviourOpacity (Clutter.Alpha? alpha, uint8 opacity_start, uint8 opacity_end);
-               [Deprecated (since = "1.6")]
                public void get_bounds (out uint8 opacity_start, out uint8 opacity_end);
-               [Deprecated (since = "1.6")]
                public void set_bounds (uint8 opacity_start, uint8 opacity_end);
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public uint opacity_end { get; set; }
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public uint opacity_start { get; set; }
        }
@@ -5435,20 +5395,14 @@ namespace Clutter {
        [Deprecated (since = "1.6")]
        public class BehaviourPath : Clutter.Behaviour, Clutter.Scriptable {
                [CCode (has_construct_function = false, type = "ClutterBehaviour*")]
-               [Deprecated (since = "1.6")]
                public BehaviourPath (Clutter.Alpha? alpha, Clutter.Path path);
-               [Deprecated (since = "1.6")]
                public unowned Clutter.Path get_path ();
-               [Deprecated (since = "1.6")]
                public void set_path (Clutter.Path path);
                [CCode (has_construct_function = false, type = "ClutterBehaviour*")]
-               [Deprecated (since = "1.6")]
                public BehaviourPath.with_description (Clutter.Alpha? alpha, string desc);
                [CCode (has_construct_function = false, type = "ClutterBehaviour*")]
-               [Deprecated (since = "1.6")]
                public BehaviourPath.with_knots (Clutter.Alpha? alpha, [CCode (array_length_cname = "n_knots", array_length_pos = 2.1, array_length_type = "guint")] Clutter.Knot[] knots);
                public Clutter.Path path { get; set; }
-               [Deprecated (since = "1.6")]
                public virtual signal void knot_reached (uint knot_num);
        }
        [CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_behaviour_rotate_get_type ()")]
@@ -5481,22 +5435,15 @@ namespace Clutter {
        [Deprecated (since = "1.6")]
        public class BehaviourScale : Clutter.Behaviour, Clutter.Scriptable {
                [CCode (has_construct_function = false, type = "ClutterBehaviour*")]
-               [Deprecated (since = "1.6")]
                public BehaviourScale (Clutter.Alpha? alpha, double x_scale_start, double y_scale_start, double x_scale_end, double y_scale_end);
-               [Deprecated (since = "1.6")]
                public void get_bounds (out double x_scale_start, out double y_scale_start, out double x_scale_end, out double y_scale_end);
-               [Deprecated (since = "1.6")]
                public void set_bounds (double x_scale_start, double y_scale_start, double x_scale_end, double y_scale_end);
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public double x_scale_end { get; set; }
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public double x_scale_start { get; set; }
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public double y_scale_end { get; set; }
-               [Deprecated (since = "1.6")]
                [NoAccessorMethod]
                public double y_scale_start { get; set; }
        }
@@ -5656,37 +5603,24 @@ namespace Clutter {
        [Deprecated (since = "1.12")]
        public class CairoTexture : Clutter.Texture, Atk.Implementor, Clutter.Animatable, Clutter.Container, Clutter.Scriptable {
                [CCode (has_construct_function = false, type = "ClutterActor*")]
-               [Deprecated (since = "1.12")]
                public CairoTexture (uint width, uint height);
-               [Deprecated (since = "1.12")]
                public void clear ();
                [Deprecated (since = "1.8")]
                public Cairo.Context create ();
                [Deprecated (since = "1.8")]
                public Cairo.Context create_region (int x_offset, int y_offset, int width, int height);
-               [Deprecated (since = "1.12")]
                public bool get_auto_resize ();
-               [Deprecated (since = "1.12")]
                public void get_surface_size (out uint width, out uint height);
-               [Deprecated (since = "1.12")]
                public void invalidate ();
-               [Deprecated (since = "1.12")]
                public void invalidate_rectangle (Cairo.RectangleInt? rect);
-               [Deprecated (since = "1.12")]
                public void set_auto_resize (bool value);
-               [Deprecated (since = "1.12")]
                public void set_surface_size (uint width, uint height);
-               [Deprecated (since = "1.12")]
                public bool auto_resize { get; set; }
-               [Deprecated (since = "1.12")]
                [NoAccessorMethod]
                public uint surface_height { get; set; }
-               [Deprecated (since = "1.12")]
                [NoAccessorMethod]
                public uint surface_width { get; set; }
-               [Deprecated (since = "1.12")]
                public virtual signal Cairo.Surface create_surface (uint width, uint height);
-               [Deprecated (since = "1.12")]
                public virtual signal bool draw (Cairo.Context cr);
        }
        [CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_canvas_get_type ()")]
@@ -5932,7 +5866,7 @@ namespace Clutter {
                public void set_state (Clutter.ModifierType state);
                public void set_time (uint32 time_);
        }
-       [CCode (cheader_filename = "clutter/clutter.h")]
+       [CCode (cheader_filename = "clutter/clutter.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "clutter_event_sequence_get_type ()")]
        [Compact]
        public class EventSequence {
        }
@@ -5989,12 +5923,19 @@ namespace Clutter {
                public void get_press_coords (uint point, out float press_x, out float press_y);
                public void get_release_coords (uint point, out float release_x, out float release_y);
                public unowned Clutter.EventSequence get_sequence (uint point);
+               public void get_threshold_trigger_distance (out float x, out float y);
+               public Clutter.GestureTriggerEdge get_threshold_trigger_edge ();
+               [Deprecated (since = "1.20")]
                public Clutter.GestureTriggerEdge get_threshold_trigger_egde ();
                public float get_velocity (uint point, out float velocity_x, out float velocity_y);
                public void set_n_touch_points (int nb_points);
+               public void set_threshold_trigger_distance (float x, float y);
                public void set_threshold_trigger_edge (Clutter.GestureTriggerEdge edge);
                public int n_touch_points { get; set; }
                [NoAccessorMethod]
+               public float threshold_trigger_distance_x { get; construct; }
+               [NoAccessorMethod]
+               public float threshold_trigger_distance_y { get; construct; }
                public Clutter.GestureTriggerEdge threshold_trigger_edge { get; construct; }
                public virtual signal bool gesture_begin (Clutter.Actor actor);
                public virtual signal void gesture_cancel (Clutter.Actor actor);
@@ -6580,45 +6521,27 @@ namespace Clutter {
        [Deprecated (since = "1.8")]
        public class Shader : GLib.Object {
                [CCode (has_construct_function = false)]
-               [Deprecated (since = "1.8")]
                public Shader ();
-               [Deprecated (since = "1.8")]
                public bool compile () throws GLib.Error;
                public static GLib.Quark error_quark ();
-               [Deprecated (since = "1.8")]
                public unowned Cogl.Handle get_cogl_fragment_shader ();
-               [Deprecated (since = "1.8")]
                public unowned Cogl.Handle get_cogl_program ();
-               [Deprecated (since = "1.8")]
                public unowned Cogl.Handle get_cogl_vertex_shader ();
-               [Deprecated (since = "1.8")]
                public unowned string get_fragment_source ();
-               [Deprecated (since = "1.8")]
                public bool get_is_enabled ();
-               [Deprecated (since = "1.8")]
                public unowned string get_vertex_source ();
-               [Deprecated (since = "1.8")]
                public bool is_compiled ();
-               [Deprecated (since = "1.8")]
                public void release ();
-               [Deprecated (since = "1.8")]
                public void set_fragment_source (string data, ssize_t length);
-               [Deprecated (since = "1.8")]
                public void set_is_enabled (bool enabled);
-               [Deprecated (since = "1.8")]
                public void set_uniform (string name, GLib.Value value);
-               [Deprecated (since = "1.8")]
                public void set_vertex_source (string data, ssize_t length);
-               [Deprecated (since = "1.8")]
                [NoAccessorMethod]
                public bool compiled { get; }
-               [Deprecated (since = "1.8")]
                [NoAccessorMethod]
                public bool enabled { get; set; }
-               [Deprecated (since = "1.8")]
                [NoAccessorMethod]
                public string fragment_source { owned get; set; }
-               [Deprecated (since = "1.8")]
                [NoAccessorMethod]
                public string vertex_source { owned get; set; }
        }
@@ -6755,6 +6678,7 @@ namespace Clutter {
                public bool use_fog { get; set; }
                public bool user_resizable { get; set; }
                public virtual signal void activate ();
+               public signal void after_paint ();
                public virtual signal void deactivate ();
                public virtual signal bool delete_event (Clutter.Event event);
                public virtual signal void fullscreen ();
@@ -6846,13 +6770,10 @@ namespace Clutter {
        [Deprecated (since = "1.18")]
        public class TableLayout : Clutter.LayoutManager {
                [CCode (has_construct_function = false, type = "ClutterLayoutManager*")]
-               [Deprecated (since = "1.18")]
                public TableLayout ();
                [Deprecated (since = "1.12")]
                public void get_alignment (Clutter.Actor actor, out Clutter.TableAlignment x_align, out Clutter.TableAlignment y_align);
-               [Deprecated (since = "1.18")]
                public int get_column_count ();
-               [Deprecated (since = "1.18")]
                public uint get_column_spacing ();
                [Deprecated (since = "1.12")]
                public uint get_easing_duration ();
@@ -6862,19 +6783,14 @@ namespace Clutter {
                public void get_expand (Clutter.Actor actor, out bool x_expand, out bool y_expand);
                [Deprecated (since = "1.12")]
                public void get_fill (Clutter.Actor actor, out bool x_fill, out bool y_fill);
-               [Deprecated (since = "1.18")]
                public int get_row_count ();
-               [Deprecated (since = "1.18")]
                public uint get_row_spacing ();
-               [Deprecated (since = "1.18")]
                public void get_span (Clutter.Actor actor, out int column_span, out int row_span);
                [Deprecated (since = "1.12")]
                public bool get_use_animations ();
-               [Deprecated (since = "1.18")]
                public void pack (Clutter.Actor actor, int column, int row);
                [Deprecated (since = "1.12")]
                public void set_alignment (Clutter.Actor actor, Clutter.TableAlignment x_align, Clutter.TableAlignment y_align);
-               [Deprecated (since = "1.18")]
                public void set_column_spacing (uint spacing);
                [Deprecated (since = "1.12")]
                public void set_easing_duration (uint msecs);
@@ -6884,19 +6800,15 @@ namespace Clutter {
                public void set_expand (Clutter.Actor actor, bool x_expand, bool y_expand);
                [Deprecated (since = "1.12")]
                public void set_fill (Clutter.Actor actor, bool x_fill, bool y_fill);
-               [Deprecated (since = "1.18")]
                public void set_row_spacing (uint spacing);
-               [Deprecated (since = "1.18")]
                public void set_span (Clutter.Actor actor, int column_span, int row_span);
                [Deprecated (since = "1.12")]
                public void set_use_animations (bool animate);
-               [Deprecated (since = "1.18")]
                public uint column_spacing { get; set; }
                [Deprecated (since = "1.12")]
                public uint easing_duration { get; set; }
                [Deprecated (since = "1.12")]
                public ulong easing_mode { get; set; }
-               [Deprecated (since = "1.18")]
                public uint row_spacing { get; set; }
                [Deprecated (since = "1.12")]
                public bool use_animations { get; set; }
@@ -7217,9 +7129,7 @@ namespace Clutter {
        public class TimeoutPool {
                [CCode (has_construct_function = false)]
                public TimeoutPool (int priority);
-               [Deprecated (since = "1.6")]
                public uint add (uint fps, owned GLib.SourceFunc func);
-               [Deprecated (since = "1.6")]
                public void remove (uint id_);
        }
        [CCode (cheader_filename = "clutter/clutter.h", type_id = "clutter_transition_get_type ()")]
@@ -7552,9 +7462,7 @@ namespace Clutter {
                public int y;
                public uint width;
                public uint height;
-               [Deprecated (since = "1.16")]
                public bool intersects (Clutter.Geometry geometry1);
-               [Deprecated (since = "1.16")]
                public Clutter.Geometry union (Clutter.Geometry geometry_b);
        }
        [CCode (cheader_filename = "clutter/clutter.h", has_type_id = false)]
@@ -8382,8 +8290,6 @@ namespace Clutter {
        [CCode (cheader_filename = "clutter/clutter.h")]
        public static bool test_check_color_at_point (Clutter.Actor stage, Clutter.Point point, Clutter.Color color, Clutter.Color result);
        [CCode (cheader_filename = "clutter/clutter.h")]
-       public static unowned Clutter.Actor test_get_stage ();
-       [CCode (cheader_filename = "clutter/clutter.h")]
        public static void test_init (int argc, string argv);
        [CCode (cheader_filename = "clutter/clutter.h")]
        public static int test_run ();
index 266e1b2..7c89adc 100644 (file)
@@ -1,3 +1,4 @@
 clutter-1.0
 gstreamer-0.10
 gstreamer-base-0.10
+gstreamer-interfaces-0.10
index 20e0ae5..689e2a0 100644 (file)
@@ -2,18 +2,6 @@
 
 [CCode (cprefix = "CoglPango", gir_namespace = "CoglPango", gir_version = "1.0", lower_case_cprefix = "cogl_pango_")]
 namespace CoglPango {
-       [CCode (cheader_filename = "cogl-pango/cogl-pango.h")]
-       public class FontMap : Pango.FontMap {
-               [CCode (has_construct_function = false)]
-               protected FontMap ();
-               public static void clear_glyph_cache (Pango.CairoFontMap font_map);
-               public static Pango.Context create_context (Pango.CairoFontMap font_map);
-               public static unowned Pango.Renderer get_renderer (Pango.CairoFontMap font_map);
-               public static Cogl.Bool get_use_mipmapping (Pango.CairoFontMap font_map);
-               public static Pango.FontMap @new ();
-               public static void set_resolution (Pango.CairoFontMap font_map, double dpi);
-               public static void set_use_mipmapping (Pango.CairoFontMap font_map, Cogl.Bool value);
-       }
        [CCode (cheader_filename = "cogl-pango/cogl-pango.h", type_id = "cogl_pango_renderer_get_type ()")]
        public class Renderer : Pango.Renderer {
                [CCode (has_construct_function = false)]
@@ -21,6 +9,16 @@ namespace CoglPango {
                public void* context { construct; }
        }
        [CCode (cheader_filename = "cogl-pango/cogl-pango.h")]
+       public interface FontMap : Pango.CairoFontMap, GLib.Object {
+               public static void clear_glyph_cache (CoglPango.FontMap font_map);
+               public static Pango.Context create_context (CoglPango.FontMap font_map);
+               public static unowned Pango.Renderer get_renderer (CoglPango.FontMap font_map);
+               public static Cogl.Bool get_use_mipmapping (CoglPango.FontMap font_map);
+               public static Pango.FontMap @new ();
+               public static void set_resolution (CoglPango.FontMap font_map, double dpi);
+               public static void set_use_mipmapping (CoglPango.FontMap font_map, Cogl.Bool value);
+       }
+       [CCode (cheader_filename = "cogl-pango/cogl-pango.h")]
        public static void ensure_glyph_cache_for_layout (Pango.Layout layout);
        [CCode (cheader_filename = "cogl-pango/cogl-pango.h")]
        [Deprecated (since = "1.16")]
index f034ed1..29a230d 100644 (file)
@@ -4548,13 +4548,13 @@ namespace Gdk {
                [CCode (cheader_filename = "gdk/gdk.h")]
                public static void convert (Gdk.Window requestor, Gdk.Atom selection, Gdk.Atom target, uint32 time_);
                [CCode (cheader_filename = "gdk/gdk.h")]
-               public static unowned Gdk.Window owner_get (Gdk.Atom selection);
+               public static unowned Gdk.Window? owner_get (Gdk.Atom selection);
                [CCode (cheader_filename = "gdk/gdk.h")]
-               public static unowned Gdk.Window owner_get_for_display (Gdk.Display display, Gdk.Atom selection);
+               public static unowned Gdk.Window? owner_get_for_display (Gdk.Display display, Gdk.Atom selection);
                [CCode (cheader_filename = "gdk/gdk.h")]
-               public static bool owner_set (Gdk.Window owner, Gdk.Atom selection, uint32 time_, bool send_event);
+               public static bool owner_set (Gdk.Window? owner, Gdk.Atom selection, uint32 time_, bool send_event);
                [CCode (cheader_filename = "gdk/gdk.h")]
-               public static bool owner_set_for_display (Gdk.Display display, Gdk.Window owner, Gdk.Atom selection, uint32 time_, bool send_event);
+               public static bool owner_set_for_display (Gdk.Display display, Gdk.Window? owner, Gdk.Atom selection, uint32 time_, bool send_event);
                [CCode (cheader_filename = "gdk/gdk.h")]
                public static int property_get (Gdk.Window requestor, [CCode (array_length = false, type = "guchar**")] uint8[] data, Gdk.Atom prop_type, int prop_format);
                [CCode (cheader_filename = "gdk/gdk.h")]
@@ -4592,7 +4592,7 @@ namespace Gdk {
                public Gdk.CursorType get_cursor_type ();
                public unowned Gdk.Display get_display ();
                public Gdk.Pixbuf? get_image ();
-               public Cairo.Surface? get_surface (double x_hot, double y_hot);
+               public Cairo.Surface? get_surface (out double x_hot, out double y_hot);
                [Deprecated (since = "3.0")]
                public Gdk.Cursor @ref ();
                [Deprecated (since = "3.0")]
@@ -4604,7 +4604,7 @@ namespace Gdk {
        public abstract class Device : GLib.Object {
                [CCode (has_construct_function = false)]
                protected Device ();
-               public static void free_history ([CCode (array_length_cname = "n_events", array_length_pos = 1.1, type = "GdkTimeCoord**")] Gdk.TimeCoord[] events);
+               public static void free_history ([CCode (array_length_cname = "n_events", array_length_pos = 1.1)] Gdk.TimeCoord[] events);
                public unowned Gdk.Device? get_associated_device ();
                public bool get_axis ([CCode (array_length = false)] double[] axes, Gdk.AxisUse use, out double value);
                public Gdk.AxisUse get_axis_use (uint index_);
@@ -4614,6 +4614,7 @@ namespace Gdk {
                public bool get_has_cursor ();
                public bool get_history (Gdk.Window window, uint32 start, uint32 stop, [CCode (array_length_cname = "n_events", array_length_pos = 4.1)] out Gdk.TimeCoord[] events);
                public bool get_key (uint index_, out uint keyval, out Gdk.ModifierType modifiers);
+               public unowned Gdk.Window get_last_event_window ();
                public Gdk.InputMode get_mode ();
                public int get_n_axes ();
                public int get_n_keys ();
@@ -4621,9 +4622,9 @@ namespace Gdk {
                public void get_position (out unowned Gdk.Screen screen, out int x, out int y);
                public void get_position_double (out unowned Gdk.Screen screen, out double x, out double y);
                public Gdk.InputSource get_source ();
-               public void get_state (Gdk.Window window, [CCode (array_length = false, type = "gdouble*")] double[] axes, out Gdk.ModifierType mask);
-               public unowned Gdk.Window get_window_at_position (out int win_x, out int win_y);
-               public unowned Gdk.Window get_window_at_position_double (out double win_x, out double win_y);
+               public void get_state (Gdk.Window window, [CCode (array_length = false)] double[]? axes, out Gdk.ModifierType mask);
+               public unowned Gdk.Window? get_window_at_position (out int win_x, out int win_y);
+               public unowned Gdk.Window? get_window_at_position_double (out double win_x, out double win_y);
                public Gdk.GrabStatus grab (Gdk.Window window, Gdk.GrabOwnership grab_ownership, bool owner_events, Gdk.EventMask event_mask, Gdk.Cursor? cursor, uint32 time_);
                public GLib.List<weak Gdk.Atom> list_axes ();
                public GLib.List<weak Gdk.Device>? list_slave_devices ();
@@ -4652,7 +4653,7 @@ namespace Gdk {
                [CCode (has_construct_function = false)]
                protected DeviceManager ();
                public unowned Gdk.Device get_client_pointer ();
-               public unowned Gdk.Display get_display ();
+               public unowned Gdk.Display? get_display ();
                public GLib.List<weak Gdk.Device> list_devices (Gdk.DeviceType type);
                public Gdk.Display display { get; construct; }
                public signal void device_added (Gdk.Device device);
@@ -4668,12 +4669,12 @@ namespace Gdk {
                public bool device_is_grabbed (Gdk.Device device);
                public void flush ();
                public Gdk.AppLaunchContext get_app_launch_context ();
-               public static unowned Gdk.Display get_default ();
+               public static unowned Gdk.Display? get_default ();
                public uint get_default_cursor_size ();
                public unowned Gdk.Window get_default_group ();
                public unowned Gdk.Screen get_default_screen ();
-               public unowned Gdk.DeviceManager get_device_manager ();
-               public Gdk.Event get_event ();
+               public unowned Gdk.DeviceManager? get_device_manager ();
+               public Gdk.Event? get_event ();
                public void get_maximal_cursor_size (out uint width, out uint height);
                [Deprecated (since = "3.10")]
                public int get_n_screens ();
@@ -4682,7 +4683,7 @@ namespace Gdk {
                public void get_pointer (out unowned Gdk.Screen screen, out int x, out int y, out Gdk.ModifierType mask);
                public unowned Gdk.Screen get_screen (int screen_num);
                [Deprecated (since = "3.0")]
-               public unowned Gdk.Window get_window_at_pointer (out int win_x, out int win_y);
+               public unowned Gdk.Window? get_window_at_pointer (out int win_x, out int win_y);
                public bool has_pending ();
                public bool is_closed ();
                [Deprecated (since = "3.0")]
@@ -4690,9 +4691,9 @@ namespace Gdk {
                [Deprecated (since = "3.0")]
                public unowned GLib.List<Gdk.Device> list_devices ();
                public void notify_startup_complete (string startup_id);
-               public static unowned Gdk.Display open (string display_name);
-               public static unowned Gdk.Display open_default_libgtk_only ();
-               public Gdk.Event peek_event ();
+               public static unowned Gdk.Display? open (string display_name);
+               public static unowned Gdk.Display? open_default_libgtk_only ();
+               public Gdk.Event? peek_event ();
                [Deprecated (since = "3.0")]
                public bool pointer_is_grabbed ();
                [Deprecated (since = "3.0")]
@@ -4720,9 +4721,9 @@ namespace Gdk {
                [CCode (has_construct_function = false)]
                protected DisplayManager ();
                public static unowned Gdk.DisplayManager @get ();
-               public unowned Gdk.Display get_default_display ();
+               public unowned Gdk.Display? get_default_display ();
                public GLib.SList<weak Gdk.Display> list_displays ();
-               public unowned Gdk.Display open_display (string name);
+               public unowned Gdk.Display? open_display (string name);
                public void set_default_display (Gdk.Display display);
                public Gdk.Display default_display { get; set; }
                public signal void display_opened (Gdk.Display display);
@@ -4749,12 +4750,13 @@ namespace Gdk {
                public Event (Gdk.EventType type);
                public Gdk.Event copy ();
                public void free ();
-               public static Gdk.Event @get ();
+               public static Gdk.Event? @get ();
                public bool get_axis (Gdk.AxisUse axis_use, out double value);
                public bool get_button (out uint button);
                public bool get_click_count (out uint click_count);
                public bool get_coords (out double x_win, out double y_win);
-               public unowned Gdk.Device get_device ();
+               public unowned Gdk.Device? get_device ();
+               public unowned Gdk.EventSequence get_event_sequence ();
                public Gdk.EventType get_event_type ();
                public bool get_keycode (out uint16 keycode);
                public bool get_keyval (out uint keyval);
@@ -4762,12 +4764,12 @@ namespace Gdk {
                public unowned Gdk.Screen get_screen ();
                public bool get_scroll_deltas (out double delta_x, out double delta_y);
                public bool get_scroll_direction (out Gdk.ScrollDirection direction);
-               public unowned Gdk.Device get_source_device ();
+               public unowned Gdk.Device? get_source_device ();
                public bool get_state (out Gdk.ModifierType state);
                public uint32 get_time ();
                public unowned Gdk.Window get_window ();
                public static void handler_set (owned Gdk.EventFunc func);
-               public static Gdk.Event peek ();
+               public static Gdk.Event? peek ();
                public void put ();
                public static void request_motions (Gdk.EventMotion event);
                public void set_device (Gdk.Device device);
@@ -4977,7 +4979,7 @@ namespace Gdk {
                public Gdk.EventType type;
                public weak Gdk.Window window;
        }
-       [CCode (cheader_filename = "gdk/gdk.h")]
+       [CCode (cheader_filename = "gdk/gdk.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gdk_event_sequence_get_type ()")]
        [Compact]
        public class EventSequence {
        }
@@ -5009,6 +5011,7 @@ namespace Gdk {
        }
        [CCode (cheader_filename = "gdk/gdk.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gdk_event_get_type ()")]
        [Compact]
+       [Deprecated (since = "3.12")]
        public class EventVisibility : Gdk.Event {
                public int8 send_event;
                public Gdk.VisibilityState state;
@@ -5030,12 +5033,12 @@ namespace Gdk {
                protected FrameClock ();
                public void begin_updating ();
                public void end_updating ();
-               public Gdk.FrameTimings get_current_timings ();
+               public Gdk.FrameTimings? get_current_timings ();
                public int64 get_frame_counter ();
                public int64 get_frame_time ();
                public int64 get_history_start ();
                public void get_refresh_info (int64 base_time, int64 refresh_interval_return, int64 presentation_time_return);
-               public Gdk.FrameTimings get_timings (int64 frame_counter);
+               public Gdk.FrameTimings? get_timings (int64 frame_counter);
                public void request_phase (Gdk.FrameClockPhase phase);
                public signal void after_paint ();
                public signal void before_paint ();
@@ -5083,17 +5086,17 @@ namespace Gdk {
        public class Screen : GLib.Object {
                [CCode (has_construct_function = false)]
                protected Screen ();
-               public Gdk.Window get_active_window ();
-               public static unowned Gdk.Screen get_default ();
+               public Gdk.Window? get_active_window ();
+               public static unowned Gdk.Screen? get_default ();
                public unowned Gdk.Display get_display ();
-               public unowned Cairo.FontOptions get_font_options ();
+               public unowned Cairo.FontOptions? get_font_options ();
                public int get_height ();
                public int get_height_mm ();
                public int get_monitor_at_point (int x, int y);
                public int get_monitor_at_window (Gdk.Window window);
                public void get_monitor_geometry (int monitor_num, out Gdk.Rectangle dest);
                public int get_monitor_height_mm (int monitor_num);
-               public string get_monitor_plug_name (int monitor_num);
+               public string? get_monitor_plug_name (int monitor_num);
                public int get_monitor_scale_factor (int monitor_num);
                public int get_monitor_width_mm (int monitor_num);
                public Gdk.Rectangle get_monitor_workarea (int monitor_num);
@@ -5101,7 +5104,7 @@ namespace Gdk {
                public int get_number ();
                public int get_primary_monitor ();
                public double get_resolution ();
-               public unowned Gdk.Visual get_rgba_visual ();
+               public unowned Gdk.Visual? get_rgba_visual ();
                public unowned Gdk.Window get_root_window ();
                public bool get_setting (string name, GLib.Value value);
                public unowned Gdk.Visual get_system_visual ();
@@ -5131,7 +5134,7 @@ namespace Gdk {
                public static unowned Gdk.Visual get_best ();
                public static int get_best_depth ();
                public static Gdk.VisualType get_best_type ();
-               public static unowned Gdk.Visual get_best_with_both (int depth, Gdk.VisualType visual_type);
+               public static unowned Gdk.Visual? get_best_with_both (int depth, Gdk.VisualType visual_type);
                public static unowned Gdk.Visual get_best_with_depth (int depth);
                public static unowned Gdk.Visual get_best_with_type (Gdk.VisualType visual_type);
                public int get_bits_per_rgb ();
@@ -5173,6 +5176,7 @@ namespace Gdk {
                public void enable_synchronized_configure ();
                public void end_paint ();
                public bool ensure_native ();
+               [Deprecated (since = "3.14")]
                public void flush ();
                public void focus (uint32 timestamp);
                public void freeze_toplevel_updates_libgtk_only ();
@@ -5180,17 +5184,17 @@ namespace Gdk {
                public void fullscreen ();
                public void geometry_changed ();
                public bool get_accept_focus ();
-               public unowned Cairo.Pattern get_background_pattern ();
+               public unowned Cairo.Pattern? get_background_pattern ();
                public GLib.List<weak Gdk.Window> get_children ();
                public GLib.List<weak Gdk.Window> get_children_with_user_data (void* user_data);
                public Cairo.Region get_clip_region ();
                public bool get_composited ();
-               public unowned Gdk.Cursor get_cursor ();
+               public unowned Gdk.Cursor? get_cursor ();
                public bool get_decorations (out Gdk.WMDecoration decorations);
-               public unowned Gdk.Cursor get_device_cursor (Gdk.Device device);
+               public unowned Gdk.Cursor? get_device_cursor (Gdk.Device device);
                public Gdk.EventMask get_device_events (Gdk.Device device);
-               public unowned Gdk.Window get_device_position (Gdk.Device device, out int x, out int y, out Gdk.ModifierType mask);
-               public unowned Gdk.Window get_device_position_double (Gdk.Device device, out double x, out double y, out Gdk.ModifierType mask);
+               public unowned Gdk.Window? get_device_position (Gdk.Device device, out int x, out int y, out Gdk.ModifierType mask);
+               public unowned Gdk.Window? get_device_position_double (Gdk.Device device, out double x, out double y, out Gdk.ModifierType mask);
                public unowned Gdk.Display get_display ();
                public Gdk.DragProtocol get_drag_protocol (out Gdk.Window target);
                public unowned Gdk.Window get_effective_parent ();
@@ -5208,7 +5212,7 @@ namespace Gdk {
                public int get_origin (out int x, out int y);
                public unowned Gdk.Window get_parent ();
                [Deprecated (since = "3.0")]
-               public unowned Gdk.Window get_pointer (out int x, out int y, out Gdk.ModifierType mask);
+               public unowned Gdk.Window? get_pointer (out int x, out int y, out Gdk.ModifierType mask);
                public void get_position (out int x, out int y);
                public void get_root_coords (int x, int y, out int root_x, out int root_y);
                public void get_root_origin (out int x, out int y);
@@ -5298,6 +5302,7 @@ namespace Gdk {
                public void shape_combine_region (Cairo.Region? shape_region, int offset_x, int offset_y);
                public void show ();
                public void show_unraised ();
+               public bool show_window_menu (Gdk.Event event);
                public void stick ();
                public void thaw_toplevel_updates_libgtk_only ();
                public void thaw_updates ();
@@ -5308,7 +5313,7 @@ namespace Gdk {
                public Gdk.Cursor cursor { get; set; }
                public virtual signal Cairo.Surface create_surface (int width, int height);
                public virtual signal void from_embedder (double embedder_x, double embedder_y, out double offscreen_x, out double offscreen_y);
-               public signal unowned Gdk.Window pick_embedded_child (double x, double y);
+               public signal unowned Gdk.Window? pick_embedded_child (double x, double y);
                public virtual signal void to_embedder (double offscreen_x, double offscreen_y, out double embedder_x, out double embedder_y);
        }
        [CCode (cheader_filename = "gdk/gdk.h", ref_function = "", unref_function = "")]
@@ -5325,6 +5330,7 @@ namespace Gdk {
                public string name ();
        }
        [CCode (cheader_filename = "gdk/gdk.h", type_id = "gdk_color_get_type ()")]
+       [Deprecated (since = "3.14")]
        public struct Color {
                public uint32 pixel;
                public uint16 red;
@@ -5538,7 +5544,8 @@ namespace Gdk {
                ROOTWIN,
                WIN32_DROPFILES,
                OLE2,
-               LOCAL
+               LOCAL,
+               WAYLAND
        }
        [CCode (cheader_filename = "gdk/gdk.h", cprefix = "GDK_", type_id = "gdk_event_mask_get_type ()")]
        [Flags]
@@ -5852,7 +5859,8 @@ namespace Gdk {
                CHILD,
                TEMP,
                FOREIGN,
-               OFFSCREEN
+               OFFSCREEN,
+               SUBSURFACE
        }
        [CCode (cheader_filename = "gdk/gdk.h", cprefix = "GDK_WINDOW_TYPE_HINT_", type_id = "gdk_window_type_hint_get_type ()")]
        public enum WindowTypeHint {
@@ -5934,7 +5942,7 @@ namespace Gdk {
        [CCode (cheader_filename = "gdk/gdk.h")]
        public static void cairo_set_source_window (Cairo.Context cr, Gdk.Window window, double x, double y);
        [CCode (cheader_filename = "gdk/gdk.h")]
-       public static Cairo.Surface cairo_surface_create_from_pixbuf (Gdk.Pixbuf pixbuf, int scale, Gdk.Window for_window);
+       public static Cairo.Surface cairo_surface_create_from_pixbuf (Gdk.Pixbuf pixbuf, int scale, Gdk.Window? for_window);
        [CCode (cheader_filename = "gdk/gdk.h")]
        public static void disable_multidevice ();
        [CCode (cheader_filename = "gdk/gdk.h")]
@@ -5966,11 +5974,11 @@ namespace Gdk {
        [CCode (cheader_filename = "gdk/gdk.h")]
        public static void error_trap_push ();
        [CCode (cheader_filename = "gdk/gdk.h")]
-       public static bool events_get_angle (Gdk.Event event1, Gdk.Event event2, double angle);
+       public static bool events_get_angle (Gdk.Event event1, Gdk.Event event2, out double angle);
        [CCode (cheader_filename = "gdk/gdk.h")]
-       public static bool events_get_center (Gdk.Event event1, Gdk.Event event2, double x, double y);
+       public static bool events_get_center (Gdk.Event event1, Gdk.Event event2, out double x, out double y);
        [CCode (cheader_filename = "gdk/gdk.h")]
-       public static bool events_get_distance (Gdk.Event event1, Gdk.Event event2, double distance);
+       public static bool events_get_distance (Gdk.Event event1, Gdk.Event event2, out double distance);
        [CCode (cheader_filename = "gdk/gdk.h")]
        public static bool events_pending ();
        [CCode (cheader_filename = "gdk/gdk.h")]
@@ -5981,7 +5989,7 @@ namespace Gdk {
        [Deprecated (since = "3.8")]
        public static string get_display ();
        [CCode (cheader_filename = "gdk/gdk.h")]
-       public static unowned string get_display_arg_name ();
+       public static unowned string? get_display_arg_name ();
        [CCode (cheader_filename = "gdk/gdk.h")]
        public static unowned string get_program_class ();
        [CCode (cheader_filename = "gdk/gdk.h")]
@@ -6005,7 +6013,7 @@ namespace Gdk {
        [CCode (cheader_filename = "gdk/gdk.h")]
        public static bool keyval_is_upper (uint keyval);
        [CCode (cheader_filename = "gdk/gdk.h")]
-       public static unowned string keyval_name (uint keyval);
+       public static unowned string? keyval_name (uint keyval);
        [CCode (cheader_filename = "gdk/gdk.h")]
        public static uint keyval_to_lower (uint keyval);
        [CCode (cheader_filename = "gdk/gdk.h")]
@@ -6021,7 +6029,7 @@ namespace Gdk {
        [CCode (cheader_filename = "gdk/gdk.h")]
        public static unowned Gdk.Window? offscreen_window_get_embedder (Gdk.Window window);
        [CCode (cheader_filename = "gdk/gdk.h")]
-       public static unowned Cairo.Surface offscreen_window_get_surface (Gdk.Window window);
+       public static unowned Cairo.Surface? offscreen_window_get_surface (Gdk.Window window);
        [CCode (cheader_filename = "gdk/gdk.h")]
        public static void offscreen_window_set_embedder (Gdk.Window window, Gdk.Window embedder);
        [CCode (cheader_filename = "gdk/gdk.h")]
@@ -6033,9 +6041,9 @@ namespace Gdk {
        [CCode (cheader_filename = "gdk/gdk.h")]
        public static void parse_args ([CCode (array_length_cname = "argc", array_length_pos = 0.5)] ref unowned string[] argv);
        [CCode (cheader_filename = "gdk/gdk.h")]
-       public static Gdk.Pixbuf pixbuf_get_from_surface (Cairo.Surface surface, int src_x, int src_y, int width, int height);
+       public static Gdk.Pixbuf? pixbuf_get_from_surface (Cairo.Surface surface, int src_x, int src_y, int width, int height);
        [CCode (cheader_filename = "gdk/gdk.h")]
-       public static Gdk.Pixbuf pixbuf_get_from_window (Gdk.Window window, int src_x, int src_y, int width, int height);
+       public static Gdk.Pixbuf? pixbuf_get_from_window (Gdk.Window window, int src_x, int src_y, int width, int height);
        [CCode (cheader_filename = "gdk/gdk.h")]
        [Deprecated (since = "3.0")]
        public static Gdk.GrabStatus pointer_grab (Gdk.Window window, bool owner_events, Gdk.EventMask event_mask, Gdk.Window? confine_to, Gdk.Cursor? cursor, uint32 time_);
@@ -6126,5 +6134,5 @@ namespace Gdk {
        [CCode (cheader_filename = "gdk/gdk.h")]
        public static uint unicode_to_keyval (uint32 wc);
        [CCode (cheader_filename = "gdk/gdk.h")]
-       public static string utf8_to_string_target (string str);
+       public static string? utf8_to_string_target (string str);
 }
index b2addc7..7dac67f 100644 (file)
@@ -10,12 +10,14 @@ namespace Gdk {
                public Gdk.Pixbuf apply_embedded_orientation ();
                public void composite (Gdk.Pixbuf dest, int dest_x, int dest_y, int dest_width, int dest_height, double offset_x, double offset_y, double scale_x, double scale_y, Gdk.InterpType interp_type, int overall_alpha);
                public void composite_color (Gdk.Pixbuf dest, int dest_x, int dest_y, int dest_width, int dest_height, double offset_x, double offset_y, double scale_x, double scale_y, Gdk.InterpType interp_type, int overall_alpha, int check_x, int check_y, int check_size, uint32 color1, uint32 color2);
-               public Gdk.Pixbuf? composite_color_simple (int dest_width, int dest_height, Gdk.InterpType interp_type, int overall_alpha, int check_size, uint32 color1, uint32 color2);
+               public Gdk.Pixbuf composite_color_simple (int dest_width, int dest_height, Gdk.InterpType interp_type, int overall_alpha, int check_size, uint32 color1, uint32 color2);
                public Gdk.Pixbuf copy ();
                public void copy_area (int src_x, int src_y, int width, int height, Gdk.Pixbuf dest_pixbuf, int dest_x, int dest_y);
                public void fill (uint32 pixel);
                public Gdk.Pixbuf? flip (bool horizontal);
                [CCode (has_construct_function = false)]
+               public Pixbuf.from_bytes (GLib.Bytes data, Gdk.Colorspace colorspace, bool has_alpha, int bits_per_sample, int width, int height, int rowstride);
+               [CCode (has_construct_function = false)]
                public Pixbuf.from_data ([CCode (array_length = false)] owned uint8[] data, Gdk.Colorspace colorspace, bool has_alpha, int bits_per_sample, int width, int height, int rowstride, [CCode (type = "GdkPixbufDestroyNotify")] Gdk.PixbufDestroyNotify? destroy_fn = GLib.free);
                [CCode (has_construct_function = false)]
                public Pixbuf.from_file (string filename) throws GLib.Error;
@@ -44,7 +46,8 @@ namespace Gdk {
                public int get_bits_per_sample ();
                public size_t get_byte_length ();
                public Gdk.Colorspace get_colorspace ();
-               public static unowned Gdk.PixbufFormat get_file_info (string filename, out int width, out int height);
+               public static unowned Gdk.PixbufFormat? get_file_info (string filename, out int width, out int height);
+               public static async unowned Gdk.PixbufFormat get_file_info_async (string filename, GLib.Cancellable? cancellable, out int width, out int height) throws GLib.Error;
                public static GLib.SList<weak Gdk.PixbufFormat> get_formats ();
                public bool get_has_alpha ();
                public int get_height ();
@@ -62,16 +65,18 @@ namespace Gdk {
                [CCode (cname = "gdk_pixbuf_new_from_stream_at_scale_async", finish_name = "gdk_pixbuf_new_from_stream_finish")]
                [Deprecated (replacement = "Pixbuf.from_stream_at_scale_async", since = "vala-0.18")]
                public static async Gdk.Pixbuf new_from_stream_at_scale_async (GLib.InputStream stream, int width, int height, bool preserve_aspect_ratio, GLib.Cancellable? cancellable = null) throws GLib.Error;
-               public Gdk.Pixbuf rotate_simple (Gdk.PixbufRotation angle);
+               public GLib.Bytes read_pixel_bytes ();
+               public uint8 read_pixels ();
+               public Gdk.Pixbuf? rotate_simple (Gdk.PixbufRotation angle);
                public void saturate_and_pixelate (Gdk.Pixbuf dest, float saturation, bool pixelate);
                public bool save (string filename, string type, ...) throws GLib.Error;
                public bool save_to_buffer ([CCode (array_length_type = "gsize", type = "gchar**")] out uint8[] buffer, string type, ...) throws GLib.Error;
                public bool save_to_bufferv ([CCode (array_length_cname = "buffer_size", array_length_pos = 1.5, array_length_type = "gsize")] out uint8[] buffer, string type, [CCode (array_length = false, array_null_terminated = true)] string[] option_keys, [CCode (array_length = false, array_null_terminated = true)] string[] option_values) throws GLib.Error;
                public bool save_to_callback (Gdk.PixbufSaveFunc save_func, string type, ...) throws GLib.Error;
                public bool save_to_callbackv ([CCode (delegate_target_pos = 1.5)] Gdk.PixbufSaveFunc save_func, string type, [CCode (array_length = false, array_null_terminated = true)] string[] option_keys, [CCode (array_length = false, array_null_terminated = true)] string[] option_values) throws GLib.Error;
-               public bool save_to_stream (GLib.OutputStream stream, string type, GLib.Cancellable? cancellable = null) throws GLib.Error;
+               public bool save_to_stream (GLib.OutputStream stream, string type, GLib.Cancellable? cancellable = null, ...) throws GLib.Error;
                [CCode (finish_name = "gdk_pixbuf_save_to_stream_finish")]
-               public async bool save_to_stream_async (GLib.OutputStream stream, string type, GLib.Cancellable? cancellable = null) throws GLib.Error;
+               public async bool save_to_stream_async (GLib.OutputStream stream, string type, GLib.Cancellable? cancellable = null, ...) throws GLib.Error;
                public bool savev (string filename, string type, [CCode (array_length = false, array_null_terminated = true)] string[] option_keys, [CCode (array_length = false, array_null_terminated = true)] string[] option_values) throws GLib.Error;
                public void scale (Gdk.Pixbuf dest, int dest_x, int dest_y, int dest_width, int dest_height, double offset_x, double offset_y, double scale_x, double scale_y, Gdk.InterpType interp_type);
                public Gdk.Pixbuf scale_simple (int dest_width, int dest_height, Gdk.InterpType interp_type);
@@ -84,6 +89,8 @@ namespace Gdk {
                public bool has_alpha { get; construct; }
                public int height { get; construct; }
                public int n_channels { get; construct; }
+               [NoAccessorMethod]
+               public GLib.Bytes pixel_bytes { owned get; construct; }
                public void* pixels { get; construct; }
                public int rowstride { get; construct; }
                public int width { get; construct; }
@@ -138,7 +145,7 @@ namespace Gdk {
                public PixbufLoader ();
                public bool close () throws GLib.Error;
                public unowned Gdk.PixbufAnimation get_animation ();
-               public unowned Gdk.PixbufFormat get_format ();
+               public unowned Gdk.PixbufFormat? get_format ();
                public unowned Gdk.Pixbuf get_pixbuf ();
                public void set_size (int width, int height);
                [CCode (has_construct_function = false)]
index 7fbf9d0..fc27098 100644 (file)
@@ -241,9 +241,9 @@ namespace Gdl {
        [CCode (cheader_filename = "gdl/gdl.h", type_id = "gdl_dock_placeholder_get_type ()")]
        public class DockPlaceholder : Gdl.DockObject, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
-               [Deprecated]
+               [Deprecated (since = "3.6")]
                public DockPlaceholder (string name, Gdl.DockObject object, Gdl.DockPlacement position, bool sticky);
-               [Deprecated]
+               [Deprecated (since = "3.6")]
                public void attach (Gdl.DockObject object);
                [NoAccessorMethod]
                public bool floating { get; construct; }
@@ -266,15 +266,15 @@ namespace Gdl {
        public class DockTablabel : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                public bool active;
                public uint drag_handle_size;
-               public Gdk.EventButton drag_start_event;
+               public weak Gdk.EventButton drag_start_event;
                public weak Gdk.Window event_window;
                public bool pre_drag;
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                [Deprecated (since = "3.6")]
                public DockTablabel (Gdl.DockItem item);
-               [Deprecated]
+               [Deprecated (since = "3.6")]
                public void activate ();
-               [Deprecated]
+               [Deprecated (since = "3.6")]
                public void deactivate ();
                [NoAccessorMethod]
                public Gdl.DockItem item { owned get; set; }
index 7bf2727..cba4d1b 100644 (file)
@@ -16,6 +16,19 @@ namespace Geocode {
                [CCode (cheader_filename = "geocode-glib/geocode-glib.h", cname = "GEOCODE_LOCATION_ACCURACY_UNKNOWN")]
                public const int UNKNOWN;
        }
+       [CCode (cheader_filename = "geocode-glib/geocode-glib.h", type_id = "geocode_bounding_box_get_type ()")]
+       public class BoundingBox : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public BoundingBox (double top, double bottom, double left, double right);
+               public double get_bottom ();
+               public double get_left ();
+               public double get_right ();
+               public double get_top ();
+               public double bottom { get; construct; }
+               public double left { get; construct; }
+               public double right { get; construct; }
+               public double top { get; construct; }
+       }
        [CCode (cheader_filename = "geocode-glib/geocode-glib.h", type_id = "geocode_forward_get_type ()")]
        public class Forward : GLib.Object {
                [CCode (has_construct_function = false)]
@@ -24,27 +37,45 @@ namespace Geocode {
                public Forward.for_params (GLib.HashTable<string,GLib.Value?> @params);
                [CCode (has_construct_function = false)]
                public Forward.for_string (string str);
+               public uint get_answer_count ();
+               public bool get_bounded ();
                public GLib.List<weak Geocode.Place> search () throws GLib.Error;
                public async GLib.List<weak Geocode.Place> search_async (GLib.Cancellable? cancellable = null) throws GLib.Error;
                public void set_answer_count (uint count);
+               public void set_bounded (bool bounded);
+               public void set_search_area (Geocode.BoundingBox box);
+               public uint answer_count { get; set; }
+               public bool bounded { get; set; }
+               [NoAccessorMethod]
+               public Geocode.BoundingBox search_area { owned get; set; }
        }
        [CCode (cheader_filename = "geocode-glib/geocode-glib.h", type_id = "geocode_location_get_type ()")]
        public class Location : GLib.Object {
                [CCode (has_construct_function = false)]
                public Location (double latitude, double longitude, double accuracy = LocationAccuracy.UNKNOWN);
                public double get_accuracy ();
+               public double get_altitude ();
+               public Geocode.LocationCRS get_crs ();
                public unowned string get_description ();
                public double get_distance_from (Geocode.Location locb);
                public double get_latitude ();
                public double get_longitude ();
                public uint64 get_timestamp ();
                public void set_description (string description);
+               public bool set_from_uri (string uri) throws GLib.Error;
+               public string to_uri (Geocode.LocationURIScheme scheme);
                [CCode (has_construct_function = false)]
                public Location.with_description (double latitude, double longitude, double accuracy, string description);
-               public double accuracy { get; construct; }
+               [NoAccessorMethod]
+               public double accuracy { get; set; }
+               [NoAccessorMethod]
+               public double altitude { get; set; }
+               public Geocode.LocationCRS crs { get; construct; }
                public string description { get; set; }
-               public double latitude { get; construct; }
-               public double longitude { get; construct; }
+               [NoAccessorMethod]
+               public double latitude { get; set; }
+               [NoAccessorMethod]
+               public double longitude { get; set; }
                public uint64 timestamp { get; }
        }
        [CCode (cheader_filename = "geocode-glib/geocode-glib.h", type_id = "geocode_place_get_type ()")]
@@ -53,6 +84,7 @@ namespace Geocode {
                public Place (string name, Geocode.PlaceType place_type);
                public unowned string get_administrative_area ();
                public unowned string get_area ();
+               public unowned Geocode.BoundingBox get_bounding_box ();
                public unowned string get_building ();
                public unowned string get_continent ();
                public unowned string get_country ();
@@ -61,6 +93,7 @@ namespace Geocode {
                public unowned GLib.Icon get_icon ();
                public unowned Geocode.Location get_location ();
                public unowned string get_name ();
+               public unowned string get_osm_id ();
                public Geocode.PlaceType get_place_type ();
                public unowned string get_postal_code ();
                public unowned string get_state ();
@@ -69,6 +102,7 @@ namespace Geocode {
                public unowned string get_town ();
                public void set_administrative_area (string admin_area);
                public void set_area (string area);
+               public void set_bounding_box (Geocode.BoundingBox bbox);
                public void set_building (string building);
                public void set_continent (string continent);
                public void set_country (string country);
@@ -85,15 +119,17 @@ namespace Geocode {
                public Place.with_location (string name, Geocode.PlaceType place_type, Geocode.Location location);
                public string administrative_area { get; set; }
                public string area { get; set; }
+               public Geocode.BoundingBox bounding_box { get; set; }
                public string building { get; set; }
                public string continent { get; set; }
                public string country { get; set; }
                public string country_code { get; set; }
                public string county { get; set; }
-               [NoAccessorMethod]
-               public GLib.Icon icon { owned get; set; }
+               public GLib.Icon icon { get; }
                public Geocode.Location location { get; set; }
                public string name { get; set; }
+               [NoAccessorMethod]
+               public string osm_id { owned get; set; }
                public Geocode.PlaceType place_type { get; construct; }
                public string postal_code { get; set; }
                public string state { get; set; }
@@ -110,6 +146,14 @@ namespace Geocode {
                public Geocode.Place resolve () throws GLib.Error;
                public async Geocode.Place resolve_async (GLib.Cancellable? cancellable = null) throws GLib.Error;
        }
+       [CCode (cheader_filename = "geocode-glib/geocode-glib.h", cprefix = "GEOCODE_LOCATION_CRS_", type_id = "geocode_location_crs_get_type ()")]
+       public enum LocationCRS {
+               WGS84
+       }
+       [CCode (cheader_filename = "geocode-glib/geocode-glib.h", cprefix = "GEOCODE_LOCATION_URI_SCHEME_", type_id = "geocode_location_uri_scheme_get_type ()")]
+       public enum LocationURIScheme {
+               GEO
+       }
        [CCode (cheader_filename = "geocode-glib/geocode-glib.h", cprefix = "GEOCODE_PLACE_TYPE_", type_id = "geocode_place_type_get_type ()")]
        public enum PlaceType {
                UNKNOWN,
@@ -141,7 +185,11 @@ namespace Geocode {
                ESTATE,
                HISTORICAL_TOWN,
                OCEAN,
-               SEA
+               SEA,
+               SCHOOL,
+               PLACE_OF_WORSHIP,
+               RESTAURANT,
+               BAR
        }
        [CCode (cheader_filename = "geocode-glib/geocode-glib.h", cprefix = "GEOCODE_ERROR_")]
        public errordomain Error {
index 93796fa..5703ea8 100644 (file)
@@ -279,6 +279,7 @@ namespace GLib {
        public class Application : GLib.Object, GLib.ActionGroup, GLib.ActionMap {
                [CCode (has_construct_function = false)]
                public Application (string? application_id, GLib.ApplicationFlags flags);
+               public void add_main_option (string long_name, char short_name, GLib.OptionFlags flags, GLib.OptionArg arg, string description, string? arg_description);
                public void add_main_option_entries ([CCode (array_length = false, array_null_terminated = true)] GLib.OptionEntry[] entries);
                public void add_option_group (GLib.OptionGroup group);
                [NoWrapper]
@@ -299,6 +300,7 @@ namespace GLib {
                public uint get_inactivity_timeout ();
                public bool get_is_registered ();
                public bool get_is_remote ();
+               public unowned string? get_resource_base_path ();
                public void hold ();
                public static bool id_is_valid (string application_id);
                [NoWrapper]
@@ -319,6 +321,7 @@ namespace GLib {
                public void set_default ();
                public void set_flags (GLib.ApplicationFlags flags);
                public void set_inactivity_timeout (uint inactivity_timeout);
+               public void set_resource_base_path (string? resource_path);
                public void unmark_busy ();
                public void withdraw_notification (string id);
                public GLib.ActionGroup action_group { set; }
@@ -327,6 +330,7 @@ namespace GLib {
                public uint inactivity_timeout { get; set; }
                public bool is_registered { get; }
                public bool is_remote { get; }
+               public string resource_base_path { get; set; }
                [HasEmitter]
                public virtual signal void activate ();
                public virtual signal int command_line (GLib.ApplicationCommandLine command_line);
@@ -1489,7 +1493,7 @@ namespace GLib {
                public virtual void get_item_attributes (int item_index, [CCode (type = "GHashTable**")] out GLib.HashTable<string,GLib.Variant>? attributes);
                public virtual GLib.MenuModel get_item_link (int item_index, string link);
                [NoWrapper]
-               public virtual void get_item_links (int item_index, [CCode (type = "GHashTable**")] out GLib.HashTable<string,GLib.MenuModel>? links);
+               public virtual void get_item_links (int item_index, out GLib.HashTable<string,GLib.MenuModel> links);
                public virtual int get_n_items ();
                public virtual bool is_mutable ();
                public virtual GLib.MenuAttributeIter iterate_item_attributes (int item_index);
@@ -1571,6 +1575,7 @@ namespace GLib {
                public void set_default_action (string detailed_action);
                public void set_default_action_and_target_value (string action, GLib.Variant? target);
                public void set_icon (GLib.Icon icon);
+               public void set_priority (GLib.NotificationPriority priority);
                public void set_title (string title);
                public void set_urgent (bool urgent);
        }
@@ -1822,7 +1827,7 @@ namespace GLib {
                public SettingsSchemaSource.from_directory (string directory, GLib.SettingsSchemaSource? parent, bool trusted) throws GLib.Error;
                [CCode (cheader_filename = "gio/gio.h")]
                public static unowned GLib.SettingsSchemaSource get_default ();
-               public void list_schemas (bool recursive, out string non_relocatable, out string relocatable);
+               public void list_schemas (bool recursive, [CCode (array_length = false, array_null_terminated = true)] out string[] non_relocatable, [CCode (array_length = false, array_null_terminated = true)] out string[] relocatable);
                public GLib.SettingsSchema? lookup (string schema_id, bool recursive);
                public GLib.SettingsSchemaSource @ref ();
                public void unref ();
@@ -2782,9 +2787,9 @@ namespace GLib {
                public abstract bool can_poll ();
                public abstract GLib.PollableSource create_source (GLib.Cancellable? cancellable = null);
                public abstract bool is_readable ();
-               public ssize_t read_nonblocking ([CCode (array_length_cname = "count", array_length_pos = 1.5, array_length_type = "gsize", type = "void*")] uint8[] buffer, GLib.Cancellable? cancellable = null) throws GLib.Error;
+               public ssize_t read_nonblocking ([CCode (array_length_cname = "count", array_length_pos = 1.5, array_length_type = "gsize")] uint8[] buffer, GLib.Cancellable? cancellable = null) throws GLib.Error;
                [CCode (vfunc_name = "read_nonblocking")]
-               public abstract ssize_t read_nonblocking_fn ([CCode (array_length_cname = "count", array_length_pos = 1.1, array_length_type = "gsize", type = "void*")] uint8[] buffer) throws GLib.Error;
+               public abstract ssize_t read_nonblocking_fn ([CCode (array_length_cname = "count", array_length_pos = 1.1, array_length_type = "gsize")] uint8[] buffer) throws GLib.Error;
        }
        [CCode (cheader_filename = "gio/gio.h", type_cname = "GPollableOutputStreamInterface", type_id = "g_pollable_output_stream_get_type ()")]
        public interface PollableOutputStream : GLib.OutputStream {
@@ -2893,13 +2898,19 @@ namespace GLib {
                public virtual signal void changed ();
                public virtual signal void removed ();
        }
-       [CCode (cheader_filename = "gio/gio.h", has_type_id = false)]
+       [CCode (cheader_filename = "gio/gio.h")]
        public struct ActionEntry {
                public weak string name;
-               public GLib.SimpleActionActivateCallback activate;
+               [Deprecated (replacement = "activate_callback", since = "vala-0.26")]
+               public GLib.SimpleActionActivateCallback? activate;
                public weak string parameter_type;
                public weak string state;
-               public GLib.SimpleActionChangeStateCallback change_state;
+               [Deprecated (replacement = "change_state_callback", since = "vala-0.26")]
+               public GLib.SimpleActionChangeStateCallback? change_state;
+               [CCode (cname = "activate")]
+               public GLib.SimpleActionActivateFunc activate_callback;
+               [CCode (cname = "change_state")]
+               public GLib.SimpleActionChangeStateCallback? change_state_callback;
        }
        [CCode (cheader_filename = "gio/gio.h", has_type_id = false)]
        public struct DBusErrorEntry {
@@ -3017,6 +3028,7 @@ namespace GLib {
                INVALID,
                LINUX_UCRED,
                FREEBSD_CMSGCRED,
+               NETBSD_UNPCBID,
                OPENBSD_SOCKPEERCRED,
                SOLARIS_UCRED
        }
@@ -3287,6 +3299,13 @@ namespace GLib {
                NONE,
                FORCE
        }
+       [CCode (cheader_filename = "gio/gio.h", cprefix = "G_NOTIFICATION_PRIORITY_", type_id = "g_notification_priority_get_type ()")]
+       public enum NotificationPriority {
+               NORMAL,
+               LOW,
+               HIGH,
+               URGENT
+       }
        [CCode (cheader_filename = "gio/gio.h", cprefix = "G_OUTPUT_STREAM_SPLICE_", type_id = "g_output_stream_splice_flags_get_type ()")]
        [Flags]
        public enum OutputStreamSpliceFlags {
@@ -3497,7 +3516,11 @@ namespace GLib {
                INVALID_FILE_CONTENT,
                SELINUX_SECURITY_CONTEXT_UNKNOWN,
                ADT_AUDIT_DATA_UNKNOWN,
-               OBJECT_PATH_IN_USE;
+               OBJECT_PATH_IN_USE,
+               UNKNOWN_OBJECT,
+               UNKNOWN_INTERFACE,
+               UNKNOWN_PROPERTY,
+               PROPERTY_READ_ONLY;
                [CCode (cheader_filename = "gio/gio.h")]
                public static string encode_gerror (GLib.Error error);
                [CCode (cheader_filename = "gio/gio.h")]
@@ -3650,10 +3673,16 @@ namespace GLib {
        [CCode (cheader_filename = "gio/gio.h", instance_pos = 2.9)]
        public delegate bool SettingsGetMapping (GLib.Variant value, out void* result);
        [CCode (cheader_filename = "gio/gio.h")]
+       [Deprecated (replacement = "SimplActionActivateFunc", since = "vala-0.26")]
        public delegate void SimpleActionActivateCallback (GLib.SimpleAction action, GLib.Variant? parameter);
+       [CCode (cheader_filename = "gio/gio.h", has_target = false)]
+       public delegate void SimpleActionActivateFunc (GLib.SimpleAction action, GLib.Variant? parameter, void* user_data);
        [CCode (cheader_filename = "gio/gio.h")]
+       [Deprecated (replacement = "SimplActionChangeStateFunc", since = "vala-0.26")]
        public delegate void SimpleActionChangeStateCallback (GLib.SimpleAction action, GLib.Variant value);
        [CCode (cheader_filename = "gio/gio.h", has_target = false)]
+       public delegate void SimpleActionChangeStateFunc (GLib.SimpleAction action, GLib.Variant value, void* user_data);
+       [CCode (cheader_filename = "gio/gio.h", has_target = false)]
        public delegate void SimpleAsyncThreadFunc (GLib.SimpleAsyncResult res, GLib.Object object, GLib.Cancellable? cancellable = null);
        [CCode (cheader_filename = "gio/gio.h", instance_pos = 2.9)]
        public delegate bool SocketSourceFunc (GLib.Socket socket, GLib.IOCondition condition);
@@ -4103,7 +4132,7 @@ namespace GLib {
        [CCode (cheader_filename = "gio/gio.h")]
        public static void networking_init ();
        [CCode (cheader_filename = "gio/gio.h")]
-       public static ssize_t pollable_stream_read (GLib.InputStream stream, [CCode (array_length_cname = "count", array_length_pos = 2.5, array_length_type = "gsize", type = "void*")] uint8[] buffer, bool blocking, GLib.Cancellable? cancellable = null) throws GLib.Error;
+       public static ssize_t pollable_stream_read (GLib.InputStream stream, [CCode (array_length_cname = "count", array_length_pos = 2.5, array_length_type = "gsize")] uint8[] buffer, bool blocking, GLib.Cancellable? cancellable = null) throws GLib.Error;
        [CCode (cheader_filename = "gio/gio.h")]
        public static ssize_t pollable_stream_write (GLib.OutputStream stream, [CCode (array_length_cname = "count", array_length_pos = 2.5, array_length_type = "gsize")] uint8[] buffer, bool blocking, GLib.Cancellable? cancellable = null) throws GLib.Error;
        [CCode (cheader_filename = "gio/gio.h")]
index 409995e..8a709fc 100644 (file)
@@ -15,6 +15,7 @@ namespace GLib {
                public unowned string get_categories ();
                public unowned string get_filename ();
                public unowned string get_generic_name ();
+               public static GLib.List<GLib.DesktopAppInfo> get_implementations (string @interface);
                public bool get_is_hidden ();
                public unowned string[] get_keywords ();
                public bool get_nodisplay ();
@@ -24,6 +25,7 @@ namespace GLib {
                public bool has_key (string key);
                public void launch_action (string action_name, GLib.AppLaunchContext launch_context);
                public bool launch_uris_as_manager (GLib.List uris, GLib.AppLaunchContext launch_context, GLib.SpawnFlags spawn_flags, GLib.SpawnChildSetupFunc user_setup, void* user_setup_data, GLib.DesktopAppLaunchCallback pid_callback, void* pid_callback_data) throws GLib.Error;
+               [CCode (array_length = false, array_null_terminated = true)]
                public unowned string[] list_actions ();
                public static void*[] search (string search_string);
                public static void set_desktop_env (string desktop_env);
index 2abbe5a..eb5ce06 100644 (file)
@@ -115,9 +115,9 @@ public struct uchar {
 [IntegerType (rank = 6)]
 public struct int {
        [CCode (cname = "G_MININT")]
-       public static int MIN;
+       public const int MIN;
        [CCode (cname = "G_MAXINT")]
-       public static int MAX;
+       public const int MAX;
 
        [CCode (cname = "g_strdup_printf", instance_pos = -1)]
        public string to_string (string format = "%i");
@@ -155,9 +155,9 @@ public struct int {
 [IntegerType (rank = 7)]
 public struct uint {
        [CCode (cname = "0")]
-       public static uint MIN;
+       public const uint MIN;
        [CCode (cname = "G_MAXUINT")]
-       public static uint MAX;
+       public const uint MAX;
 
        [CCode (cname = "g_strdup_printf", instance_pos = -1)]
        public string to_string (string format = "%u");
@@ -189,9 +189,9 @@ public struct uint {
 [IntegerType (rank = 4, min = -32768, max = 32767)]
 public struct short {
        [CCode (cname = "G_MINSHORT")]
-       public static short MIN;
+       public const short MIN;
        [CCode (cname = "G_MAXSHORT")]
-       public static short MAX;
+       public const short MAX;
 
        [CCode (cname = "g_strdup_printf", instance_pos = -1)]
        public string to_string (string format = "%hi");
@@ -212,9 +212,9 @@ public struct short {
 [IntegerType (rank = 5, min = 0, max = 65535)]
 public struct ushort {
        [CCode (cname = "0U")]
-       public static ushort MIN;
+       public const ushort MIN;
        [CCode (cname = "G_MAXUSHORT")]
-       public static ushort MAX;
+       public const ushort MAX;
 
        [CCode (cname = "g_strdup_printf", instance_pos = -1)]
        public string to_string (string format = "%hu");
@@ -233,9 +233,9 @@ public struct ushort {
 [IntegerType (rank = 8)]
 public struct long {
        [CCode (cname = "G_MINLONG")]
-       public static long MIN;
+       public const long MIN;
        [CCode (cname = "G_MAXLONG")]
-       public static long MAX;
+       public const long MAX;
 
        [CCode (cname = "g_strdup_printf", instance_pos = -1)]
        public string to_string (string format = "%li");
@@ -269,9 +269,9 @@ public struct long {
 [IntegerType (rank = 9)]
 public struct ulong {
        [CCode (cname = "0UL")]
-       public static ulong MIN;
+       public const ulong MIN;
        [CCode (cname = "G_MAXULONG")]
-       public static ulong MAX;
+       public const ulong MAX;
 
        [CCode (cname = "g_strdup_printf", instance_pos = -1)]
        public string to_string (string format = "%lu");
@@ -300,9 +300,9 @@ public struct ulong {
 [IntegerType (rank = 9)]
 public struct size_t {
        [CCode (cname = "0UL")]
-       public static ulong MIN;
+       public const ulong MIN;
        [CCode (cname = "G_MAXSIZE")]
-       public static ulong MAX;
+       public const ulong MAX;
 
        [CCode (cname = "G_GSIZE_FORMAT")]
        public const string FORMAT;
@@ -329,9 +329,9 @@ public struct size_t {
 [IntegerType (rank = 8)]
 public struct ssize_t {
        [CCode (cname = "G_MINSSIZE")]
-       public static long MIN;
+       public const long MIN;
        [CCode (cname = "G_MAXSSIZE")]
-       public static long MAX;
+       public const long MAX;
 
        [CCode (cname = "G_GSSIZE_FORMAT")]
        public const string FORMAT;
@@ -355,9 +355,9 @@ public struct ssize_t {
 [IntegerType (rank = 1, min = -128, max = 127)]
 public struct int8 {
        [CCode (cname = "G_MININT8")]
-       public static int8 MIN;
+       public const int8 MIN;
        [CCode (cname = "G_MAXINT8")]
-       public static int8 MAX;
+       public const int8 MAX;
 
        [CCode (cname = "g_strdup_printf", instance_pos = -1)]
        public string to_string (string format = "%hhi");
@@ -376,9 +376,9 @@ public struct int8 {
 [IntegerType (rank = 3, min = 0, max = 255)]
 public struct uint8 {
        [CCode (cname = "0U")]
-       public static uint8 MIN;
+       public const uint8 MIN;
        [CCode (cname = "G_MAXUINT8")]
-       public static uint8 MAX;
+       public const uint8 MAX;
 
        [CCode (cname = "g_strdup_printf", instance_pos = -1)]
        public string to_string (string format = "%hhu");
@@ -397,9 +397,9 @@ public struct uint8 {
 [IntegerType (rank = 4, min = -32768, max = 32767)]
 public struct int16 {
        [CCode (cname = "G_MININT16")]
-       public static int16 MIN;
+       public const int16 MIN;
        [CCode (cname = "G_MAXINT16")]
-       public static int16 MAX;
+       public const int16 MAX;
 
        [CCode (cname = "G_GINT16_FORMAT")]
        public const string FORMAT;
@@ -433,9 +433,9 @@ public struct int16 {
 [IntegerType (rank = 5, min = 0, max = 65535)]
 public struct uint16 {
        [CCode (cname = "0U")]
-       public static uint16 MIN;
+       public const uint16 MIN;
        [CCode (cname = "G_MAXUINT16")]
-       public static uint16 MAX;
+       public const uint16 MAX;
 
        [CCode (cname = "G_GUINT16_FORMAT")]
        public const string FORMAT;
@@ -481,9 +481,9 @@ public struct uint16 {
 [IntegerType (rank = 6)]
 public struct int32 {
        [CCode (cname = "G_MININT32")]
-       public static int32 MIN;
+       public const int32 MIN;
        [CCode (cname = "G_MAXINT32")]
-       public static int32 MAX;
+       public const int32 MAX;
 
        [CCode (cname = "G_GINT32_FORMAT")]
        public const string FORMAT;
@@ -517,9 +517,9 @@ public struct int32 {
 [IntegerType (rank = 7)]
 public struct uint32 {
        [CCode (cname = "0U")]
-       public static uint32 MIN;
+       public const uint32 MIN;
        [CCode (cname = "G_MAXUINT32")]
-       public static uint32 MAX;
+       public const uint32 MAX;
 
        [CCode (cname = "G_GUINT32_FORMAT")]
        public const string FORMAT;
@@ -565,9 +565,9 @@ public struct uint32 {
 [IntegerType (rank = 10)]
 public struct int64 {
        [CCode (cname = "G_MININT64")]
-       public static int64 MIN;
+       public const int64 MIN;
        [CCode (cname = "G_MAXINT64")]
-       public static int64 MAX;
+       public const int64 MAX;
 
        [CCode (cname = "G_GINT64_FORMAT")]
        public const string FORMAT;
@@ -622,9 +622,9 @@ public struct int64 {
 [IntegerType (rank = 11)]
 public struct uint64 {
        [CCode (cname = "0ULL")]
-       public static uint64 MIN;
+       public const uint64 MIN;
        [CCode (cname = "G_MAXUINT64")]
-       public static uint64 MAX;
+       public const uint64 MAX;
 
        [CCode (cname = "G_GUINT64_FORMAT")]
        public const string FORMAT;
@@ -674,35 +674,35 @@ public struct uint64 {
 [FloatingType (rank = 1)]
 public struct float {
        [CCode (cname = "FLT_ROUNDS")]
-       public static int ROUNDS;
+       public const int ROUNDS;
        [CCode (cname = "FLT_RADIX")]
-       public static int RADIX;
+       public const int RADIX;
        [CCode (cname = "FLT_MANT_DIG")]
-       public static int MANT_DIG;
+       public const int MANT_DIG;
        [CCode (cname = "FLT_DIG")]
-       public static int DIG;
+       public const int DIG;
 
        [CCode (cname = "FLT_MIN_EXP")]
-       public static int MIN_EXP;
+       public const int MIN_EXP;
        [CCode (cname = "FLT_MAX_EXP")]
-       public static int MAX_EXP;
+       public const int MAX_EXP;
 
        [CCode (cname = "FLT_MIN_10_EXP")]
-       public static int MIN_10_EXP;
+       public const int MIN_10_EXP;
        [CCode (cname = "FLT_MAX_10_EXP")]
-       public static int MAX_10_EXP;
+       public const int MAX_10_EXP;
 
        [CCode (cname = "FLT_EPSILON")]
-       public static float EPSILON;
+       public const float EPSILON;
        [CCode (cname = "FLT_MIN")]
-       public static float MIN;
+       public const float MIN;
        [CCode (cname = "FLT_MAX")]
-       public static float MAX;
+       public const float MAX;
 
        [CCode (cname = "NAN")]
-       public static float NAN;
+       public const float NAN;
        [CCode (cname = "INFINITY")]
-       public static float INFINITY;
+       public const float INFINITY;
 
        [CCode (cname = "isnan")]
        public bool is_nan ();
@@ -730,31 +730,31 @@ public struct float {
 [FloatingType (rank = 2)]
 public struct double {
        [CCode (cname = "DBL_MANT_DIG")]
-       public static int MANT_DIG;
+       public const int MANT_DIG;
        [CCode (cname = "DBL_DIG")]
-       public static int DIG;
+       public const int DIG;
 
        [CCode (cname = "DBL_MIN_EXP")]
-       public static int MIN_EXP;
+       public const int MIN_EXP;
        [CCode (cname = "DBL_MAX_EXP")]
-       public static int MAX_EXP;
+       public const int MAX_EXP;
 
        [CCode (cname = "DBL_MIN_10_EXP")]
-       public static int MIN_10_EXP;
+       public const int MIN_10_EXP;
        [CCode (cname = "DBL_MAX_10_EXP")]
-       public static int MAX_10_EXP;
+       public const int MAX_10_EXP;
 
        [CCode (cname = "DBL_EPSILON")]
-       public static double EPSILON;
+       public const double EPSILON;
        [CCode (cname = "DBL_MIN")]
-       public static double MIN;
+       public const double MIN;
        [CCode (cname = "DBL_MAX")]
-       public static double MAX;
+       public const double MAX;
 
        [CCode (cname = "((double) NAN)")]
-       public static double NAN;
+       public const double NAN;
        [CCode (cname = "((double) INFINITY)")]
-       public static double INFINITY;
+       public const double INFINITY;
 
        [CCode (cname = "isnan")]
        public bool is_nan ();
@@ -960,7 +960,7 @@ public class string {
        [CCode (cname = "g_stpcpy")]
        private static void* copy_to_buffer (void* dest, string src);
        [CCode (cname = "_vala_g_strjoinv")]
-       public static string joinv (string? separator, string[]? str_array) {
+       public static string joinv (string? separator, string?[]? str_array) {
                if (separator == null) {
                        separator = "";
                }
@@ -968,19 +968,19 @@ public class string {
                        int i;
                        size_t len = 1;
                        for (i = 0 ; (str_array.length != -1 && i < str_array.length) || (str_array.length == -1 && str_array[i] != null) ; i++) {
-                               len += (str_array[i] != null) ? str_array[i].length : 0;
+                               len += (str_array[i] != null) ? ((!) str_array[i]).length : 0;
                        }
                        if (i == 0) {
                                return "";
                        }
                        str_array.length = i;
-                       len += separator.length * (i - 1);
+                       len += ((!) separator).length * (i - 1);
 
                        string* res = GLib.malloc (len);
-                       void* ptr = string.copy_to_buffer ((void*) res, str_array[0]);
+                       void* ptr = string.copy_to_buffer ((void*) res, (!) str_array[0]);
                        for (i = 1 ; i < str_array.length ; i++) {
-                               ptr = string.copy_to_buffer (ptr, separator);
-                               ptr = string.copy_to_buffer (ptr, str_array[i] ?? "");
+                               ptr = string.copy_to_buffer (ptr, (!) separator);
+                               ptr = string.copy_to_buffer (ptr, (str_array[i] != null) ? ((!) str_array[i]) : "");
                        }
 
                        return (owned) res;
@@ -1171,6 +1171,10 @@ public class string {
        public int ascii_casecmp (string s2);
        [CCode (cname = "g_ascii_strncasecmp")]
        public int ascii_ncasecmp (string s2, size_t n);
+       [CCode (cname = "g_ascii_strup")]
+       public string ascii_up (ssize_t len = -1);
+       [CCode (cname = "g_ascii_strdown")]
+       public string ascii_down (ssize_t len = -1);
 
        [CCode (cname = "g_utf8_skip")]
        public static char[] skip;
@@ -1671,6 +1675,12 @@ namespace GLib {
                public static bool remove (uint id);
                public static bool remove_by_funcs_user_data (void* user_data);
                public static bool remove_by_user_data (void* user_data);
+#if GLIB_2_32
+               [CCode (cname = "G_SOURCE_CONTINUE")]
+               public static const bool CONTINUE;
+               [CCode (cname = "G_SOURCE_REMOVE")]
+               public static const bool REMOVE;
+#endif
 
                protected abstract bool prepare (out int timeout_);
                protected abstract bool check ();
@@ -1765,7 +1775,7 @@ namespace GLib {
        }
 
 #if GLIB_2_32
-       [CCode (destroy_function = "g_mutex_clear")]
+       [CCode (destroy_function = "g_mutex_clear", lvalue_access = false)]
        public struct Mutex {
 #else
        [Compact]
@@ -1840,6 +1850,7 @@ namespace GLib {
        }
 
        [CCode (destroy_function = "g_static_private_free", default_value = "G_STATIC_PRIVATE_INIT")]
+       [Deprecated (since = "glib-2.32")]
        public struct StaticPrivate {
                public StaticPrivate ();
                public void* get ();
@@ -1847,7 +1858,7 @@ namespace GLib {
        }
 
 #if GLIB_2_32
-       [CCode (destroy_function = "g_cond_clear")]
+       [CCode (destroy_function = "g_cond_clear", lvalue_access = false)]
        public struct Cond {
 #else
        [Compact]
@@ -2317,7 +2328,7 @@ namespace GLib {
        public class Hmac {
                public Hmac (ChecksumType digest_type, [CCode (array_length_type = "gsize")] uint8[] key);
                public Hmac copy ();
-               public void update ([CCode (array_length_type = "gssize")] uint8[] data, size_t length);
+               public void update ([CCode (array_length_type = "gssize")] uint8[] data);
                public unowned string get_string ();
                public void get_digest ([CCode (array_length = false)] uint8[] buffer, ref size_t digest_len);
                [CCode (cname = "g_compute_hmac_for_data")]
@@ -2681,7 +2692,7 @@ namespace GLib {
                [CCode (cname = "g_get_environ", array_length = false, array_null_terminated = true)]
                public static string[] get ();
                [CCode (cname = "g_environ_getenv")]
-               public static string? get_variable ([CCode (array_length = false, array_null_terminated = true)] string[]? envp, string variable);
+               public static unowned string? get_variable ([CCode (array_length = false, array_null_terminated = true)] string[]? envp, string variable);
                [CCode (cname = "g_environ_setenv", array_length = false, array_null_terminated = true)]
                public static string[] set_variable ([CCode (array_length = false, array_null_terminated = true)] owned string[]? envp, string variable, string value, bool overwrite = true);
                [CCode (cname = "g_environ_unsetenv", array_length = false, array_null_terminated = true)]
@@ -3235,11 +3246,7 @@ namespace GLib {
        }
 
        [Compact]
-#if GLIB_2_22
        [CCode (ref_function = "g_mapped_file_ref", unref_function = "g_mapped_file_unref")]
-#else
-       [CCode (free_function = "g_mapped_file_free")]
-#endif
        public class MappedFile {
                public MappedFile (string filename, bool writable) throws FileError;
                public size_t get_length ();
@@ -3306,6 +3313,7 @@ namespace GLib {
                public void set_translate_func (TranslateFunc func, DestroyNotify? destroy_notify);
                public void set_translation_domain (string domain);
                public bool parse ([CCode (array_length_pos = 0.9)] ref unowned string[] argv) throws OptionError;
+               public bool parse_strv ([CCode (array_length = false, array_null_terminated = true)] ref string[] argv) throws OptionError;
                public void set_help_enabled (bool help_enabled);
                public bool get_help_enabled ();
                public void set_ignore_unknown_options (bool ignore_unknown);
@@ -3361,9 +3369,9 @@ namespace GLib {
        public class OptionGroup {
                public OptionGroup (string name, string description, string help_description, void* user_data = null, DestroyNotify? destroy = null);
                public void add_entries ([CCode (array_length = false)] OptionEntry[] entries);
-               public void set_parse_hooks (OptionParseFunc pre_parse_func, OptionParseFunc post_parse_hook);
-               public void set_error_hook (OptionErrorFunc error_func);
-               public void set_translate_func (TranslateFunc func, DestroyNotify? destroy_notify);
+               public void set_parse_hooks (OptionParseFunc? pre_parse_func, OptionParseFunc? post_parse_hook);
+               public void set_error_hook (OptionErrorFunc? error_func);
+               public void set_translate_func (owned TranslateFunc? func);
                public void set_translation_domain (string domain);
        }
 
@@ -4066,7 +4074,6 @@ namespace GLib {
                public Sequence ();
                public int get_length ();
                public void @foreach (Func<G> func);
-               public static void foreach_range (SequenceIter<G> begin, SequenceIter<G> end, Func<G> func);
                public void sort (CompareDataFunc<G> cmp_func);
                public void sort_iter (SequenceIterCompareFunc<G> func);
                public SequenceIter<G> get_begin_iter ();
@@ -4074,23 +4081,37 @@ namespace GLib {
                public SequenceIter<G> get_iter_at_pos (int pos);
                public SequenceIter<G> append (owned G data);
                public SequenceIter<G> prepend (owned G data);
+               public SequenceIter<G> insert_sorted (owned G data, CompareDataFunc<G> cmp_func);
+               public SequenceIter<G> insert_sorted_iter (owned G data, SequenceIterCompareFunc<G> iter_cmp);
+               public SequenceIter<G> search (G data, CompareDataFunc<G> cmp_func);
+               public SequenceIter<G> search_iter (G data, SequenceIterCompareFunc<G> iter_cmp);
+               public SequenceIter<G> lookup (G data, CompareDataFunc<G> cmp_func);
+               public SequenceIter<G> lookup_iter (G data, SequenceIterCompareFunc<G> iter_cmp);
+
+               [Deprecated (since = "vala-0.26", replacement = "SequenceIter.foreach_range")]
+               public static void foreach_range (SequenceIter<G> begin, SequenceIter<G> end, Func<G> func);
+               [Deprecated (since = "vala-0.26", replacement = "SequenceIter.insert_before")]
                public static SequenceIter<G> insert_before (SequenceIter<G> iter, owned G data);
+               [Deprecated (since = "vala-0.26", replacement = "SequenceIter.move_to")]
                public static void move (SequenceIter<G> src, SequenceIter<G> dest);
+               [Deprecated (since = "vala-0.26", replacement = "SequenceIter.swap")]
                public static void swap (SequenceIter<G> src, SequenceIter<G> dest);
-               public SequenceIter<G> insert_sorted (owned G data, CompareDataFunc<G> cmp_func);
-               public SequenceIter<G> insert_sorted_iter (owned G data, SequenceIterCompareFunc<G> iter_cmp);
+               [Deprecated (since = "vala-0.26", replacement = "SequenceIter.sort_changed")]
                public static void sort_changed (SequenceIter<G> iter, CompareDataFunc<G> cmp_func);
+               [Deprecated (since = "vala-0.26", replacement = "SequenceIter.sort_changed_iter")]
                public static void sort_changed_iter (SequenceIter<G> iter, SequenceIterCompareFunc<G> iter_cmp);
+               [Deprecated (since = "vala-0.26", replacement = "SequenceIter.remove")]
                public static void remove (SequenceIter<G> iter);
+               [Deprecated (since = "vala-0.26", replacement = "SequenceIter.remove_range")]
                public static void remove_range (SequenceIter<G> begin, SequenceIter<G> end);
+               [Deprecated (since = "vala-0.26", replacement = "SequenceIter.move_range")]
                public static void move_range (SequenceIter<G> dest, SequenceIter<G> begin, SequenceIter<G> end);
-               public SequenceIter<G> search (G data, CompareDataFunc<G> cmp_func);
-               public SequenceIter<G> search_iter (G data, SequenceIterCompareFunc<G> iter_cmp);
+               [Deprecated (since = "vala-0.26", replacement = "SequenceIter.get")]
                public static unowned G get (SequenceIter<G> iter);
+               [Deprecated (since = "vala-0.26", replacement = "SequenceIter.set")]
                public static void set (SequenceIter<G> iter, owned G data);
+               [Deprecated (since = "vala-0.26", replacement = "SequenceIter.range_get_midpoint")]
                public static SequenceIter<G> range_get_midpoint (SequenceIter<G> begin, SequenceIter<G> end);
-               public SequenceIter<G> lookup (G data, CompareDataFunc<G> cmp_func);
-               public SequenceIter<G> lookup_iter (G data, SequenceIterCompareFunc<G> iter_cmp);
        }
 
        [Compact]
@@ -4102,13 +4123,33 @@ namespace GLib {
                public SequenceIter<G> prev ();
                public int get_position ();
                public SequenceIter<G> move (int delta);
-               public Sequence<G> get_sequence ();
+               public unowned Sequence<G> get_sequence ();
                public int compare (SequenceIter<G> other);
 
+               [CCode (cname = "g_sequence_foreach_range")]
+               public void foreach_range (SequenceIter<G> end, Func<G> func);
+               [CCode (cname = "g_sequence_insert_before")]
+               public SequenceIter<G> insert_before (owned G data);
+               [CCode (cname = "g_sequence_move")]
+               public void move_to (SequenceIter<G> dest);
+               [CCode (cname = "g_sequence_swap")]
+               public void swap (SequenceIter<G> dest);
+               [CCode (cname = "g_sequence_sort_changed")]
+               public void sort_changed (CompareDataFunc<G> cmp_func);
+               [CCode (cname = "g_sequence_sort_changed_iter")]
+               public void sort_changed_iter (SequenceIterCompareFunc<G> iter_cmp);
+               [CCode (cname = "g_sequence_remove")]
+               public void remove ();
+               [CCode (cname = "g_sequence_remove_range")]
+               public void remove_range (SequenceIter<G> end);
+               [CCode (cname = "g_sequence_move_range")]
+               public void move_range (SequenceIter<G> begin, SequenceIter<G> end);
                [CCode (cname = "g_sequence_get")]
                public unowned G get ();
                [CCode (cname = "g_sequence_set")]
                public void set (owned G data);
+               [CCode (cname = "g_sequence_range_get_midpoint")]
+               public SequenceIter<G> range_get_midpoint (SequenceIter<G> end);
        }
 
        public delegate int SequenceIterCompareFunc<G> (SequenceIter<G> a, SequenceIter<G> b);
@@ -4123,6 +4164,7 @@ namespace GLib {
                public HashTable.full (HashFunc<K>? hash_func, EqualFunc<K>? key_equal_func, DestroyNotify? key_destroy_func, DestroyNotify? value_destroy_func);
                public void insert (owned K key, owned V value);
                public void replace (owned K key, owned V value);
+               [Deprecated (since = "vala-0.26", replacement = "GenericSet.add")]
                public void add (owned K key);
                public unowned V? lookup (K key);
                public bool lookup_extended (K lookup_key, out unowned K orig_key, out unowned V value);
@@ -4143,6 +4185,18 @@ namespace GLib {
                public uint size ();
                public bool steal (K key);
                public void steal_all ();
+               [CCode (cname = "_vala_g_hash_table_take")]
+               public V? take (K key, out bool exists = null) {
+                       GLib.HashTable<K,V>? ht = null;
+                       void** htp = &ht;
+                       *htp = this.lookup (key);
+                       exists = this.steal (key);
+                       return ht;
+               }
+               public uint length {
+                       [CCode (cname = "g_hash_table_size")]
+                       get;
+               }
        }
 
        public struct HashTableIter<K,V> {
@@ -4153,6 +4207,39 @@ namespace GLib {
                public unowned GLib.HashTable<K,V> get_hash_table ();
        }
 
+       [Compact, CCode (cname = "GHashTable", lower_case_cprefix = "g_hash_table_", ref_function = "g_hash_table_ref", unref_function = "g_hash_table_unref", type_id = "G_TYPE_HASH_TABLE", type_signature = "a{%s}")]
+       public class GenericSet<T> {
+               [CCode (cname = "g_hash_table_new_full", simple_generics = true)]
+               public GenericSet (HashFunc<T>? hash_func, EqualFunc<T>? equal_func, GLib.DestroyNotify? always_pass_null_here = null);
+               public void add (owned T value);
+               public bool contains (T valule);
+               public bool remove (T value);
+               public void remove_all ();
+               public GLib.List<unowned T> get_values ();
+               [CCode (cname = "g_hash_table_iter_init", instance_pos = -1)]
+               public GLib.GenericSetIter<T> iterator ();
+               [CCode (cname = "_vala_g_hash_set_foreach")]
+               public void @foreach (GLib.Func<T> func) {
+                       ((GLib.HashTable<unowned T,T>) this).foreach ((k, v) => func (v));
+               }
+               public uint length {
+                       [CCode (cname = "g_hash_table_size")]
+                       get;
+               }
+       }
+
+       [CCode (cname = "GHashTableIter", lower_case_cprefix = "g_hash_table_iter_")]
+       public struct GenericSetIter<T> {
+               [CCode (cname = "_vala_hash_set_next_value")]
+               public unowned T? next_value () {
+                       void* vi = &this;
+                       GLib.HashTableIter<unowned T,T>* htp = vi;
+                       unowned T? value;
+                       return htp->next (out value, null) ? value : null;
+               }
+               public void remove ();
+       }
+
        [CCode (has_target = false)]
        public delegate uint HashFunc<K> (K key);
        [CCode (has_target = false)]
@@ -4250,12 +4337,8 @@ namespace GLib {
 
        /* Pointer Arrays */
 
-       [Compact]
-#if GLIB_2_22
+       [Compact, Deprecated (since = "vala-0.26", replacement="GenericArray")]
        [CCode (ref_function = "g_ptr_array_ref", unref_function = "g_ptr_array_unref", type_id = "G_TYPE_PTR_ARRAY")]
-#else
-       [CCode (free_function = "g_ptr_array_free")]
-#endif
        public class PtrArray {
                public PtrArray ();
                public PtrArray.with_free_func (GLib.DestroyNotify? element_free_func);
@@ -4283,8 +4366,13 @@ namespace GLib {
        [CCode (cname = "GPtrArray", cprefix = "g_ptr_array_", ref_function = "g_ptr_array_ref", unref_function = "g_ptr_array_unref", type_id = "G_TYPE_PTR_ARRAY")]
        [GIR (name = "PtrArray")]
        public class GenericArray<G> {
+#if GLIB_2_30
+               [CCode (cname = "g_ptr_array_new_full", simple_generics = true)]
+               public GenericArray (uint reserved_size = 0);
+#else
                [CCode (cname = "g_ptr_array_new_with_free_func", simple_generics = true)]
                public GenericArray ();
+#endif
                public void add (owned G data);
                public void foreach (GLib.Func<G> func);
                [CCode (cname = "g_ptr_array_index")]
@@ -4369,11 +4457,7 @@ namespace GLib {
        /* Byte Arrays */
 
        [Compact]
-#if GLIB_2_22
        [CCode (cprefix = "g_byte_array_", ref_function = "g_byte_array_ref", unref_function = "g_byte_array_unref", type_id = "G_TYPE_BYTE_ARRAY")]
-#else
-       [CCode (cprefix = "g_byte_array_", free_function = "g_byte_array_free")]
-#endif
        public class ByteArray {
                public ByteArray ();
                [CCode (cname = "g_byte_array_sized_new")]
@@ -4500,14 +4584,12 @@ namespace GLib {
        /* GArray */
 
        [Compact]
-#if GLIB_2_22
        [CCode (ref_function = "g_array_ref", unref_function = "g_array_unref", type_id = "G_TYPE_ARRAY")]
-#else
-       [CCode (free_function = "g_array_free")]
-#endif
        public class Array<G> {
                [CCode (cname = "len")]
                public uint length;
+               [CCode (cname = "data", array_length_cname = "len", array_length_type = "uint")]
+               public G[] data;
 
                public Array (bool zero_terminated = true, bool clear = true, ulong element_size = 0);
                [CCode (cname = "g_array_sized_new")]
@@ -4543,11 +4625,7 @@ namespace GLib {
        public delegate int TreeSearchFunc<K> (K key);
 
        [Compact]
-#if GLIB_2_22
        [CCode (ref_function = "g_tree_ref", unref_function = "g_tree_unref")]
-#else
-       [CCode (free_function = "g_tree_destroy")]
-#endif
        public class Tree<K,V> {
                [CCode (cname = "g_tree_new_full", simple_generics = true)]
                public Tree (CompareDataFunc<K> key_compare_func);
@@ -4833,6 +4911,18 @@ namespace GLib {
                [CCode (array_length_type = "size_t")]
                public string[] dup_bytestring_array ();
 
+               #if GLIB_2_30
+               public Variant.objv (string[] value);
+               [CCode (array_length_type = "size_t")]
+               #if VALA_0_26
+               public (unowned string)[] get_objv ();
+               #else
+               public string*[] get_objv ();
+               #endif
+               [CCode (array_length_type = "size_t")]
+               public string[] dup_objv ();
+               #endif
+
                public Variant (string format, ...);
                // note: the function changes its behaviour when end_ptr is null, so 'out char *' is wrong
                public Variant.va (string format, char **end_ptr, va_list *app);
@@ -4933,7 +5023,7 @@ namespace GLib {
 
        [Compact, CCode (ref_function = "g_variant_dict_ref", unref_function = "g_variant_dict_unref")]
        public class VariantDict {
-               public VariantDict (GLib.Variant from_asv);
+               public VariantDict (GLib.Variant? from_asv = null);
                public bool lookup (string key, string format_string, ...);
                public GLib.Variant lookup_value (string key, GLib.VariantType expected_type);
                public bool contains (string key);
@@ -4941,6 +5031,7 @@ namespace GLib {
                public void insert_value (string key, GLib.Variant value);
                public bool remove (string key);
                public void clear ();
+               [CCode (returns_floating_reference = true)]
                public GLib.Variant end ();
        }
 
index bf5b6d7..0c3521f 100644 (file)
@@ -89,7 +89,7 @@ namespace GLib {
        }
 
        [Compact]
-       [CCode (ref_function = "g_type_class_ref", unref_function = "g_type_class_unref")]
+       [CCode (free_function = "g_type_class_unref")]
        public class TypeClass {
                [CCode (cname = "G_TYPE_FROM_CLASS")]
                public Type get_type ();
@@ -282,6 +282,7 @@ namespace GLib {
                READWRITE,
                STATIC_STRINGS,
                USER_SHIFT,
+               EXPLICIT_NOTIFY,
                DEPRECATED,
                MASK
        }
@@ -314,6 +315,7 @@ namespace GLib {
                public weak GLib.Object target { get; }
                public string target_property { get; }
                public GLib.BindingFlags flags { get; }
+               public void unbind ();
        }
 
        [CCode (has_target = false)]
@@ -384,7 +386,7 @@ namespace GLib {
                public unowned GLib.Binding bind_property (string source_property, GLib.Object target, string target_property, GLib.BindingFlags flags = GLib.BindingFlags.DEFAULT, [CCode (type = "GClosure*")] owned GLib.BindingTransformFunc? transform_to = null, [CCode (type = "GClosure*")] owned GLib.BindingTransformFunc? transform_from = null);
        }
 
-       [CCode (destroy_function = "g_weak_ref_clear")]
+       [CCode (destroy_function = "g_weak_ref_clear", lvalue_access = false)]
        public struct WeakRef {
                public WeakRef (GLib.Object? object);
                public GLib.Object? get ();
@@ -459,6 +461,7 @@ namespace GLib {
                public void copy (ref Value dest_value);
                public unowned Value? reset ();
                public void init (Type g_type);
+               public void init_from_instance (void* instance);
                public void unset ();
                public void set_instance (void* instance);
                public bool fits_pointer ();
index c5c6ad9..c5552bd 100644 (file)
@@ -48,6 +48,7 @@ namespace GI {
                public static bool can_throw_gerror (GI.CallableInfo info);
                public static GI.ArgInfo get_arg (GI.CallableInfo info, int n);
                public static GI.Transfer get_caller_owns (GI.CallableInfo info);
+               public static GI.Transfer get_instance_ownership_transfer (GI.CallableInfo info);
                public static int get_n_args (GI.CallableInfo info);
                public static unowned string get_return_attribute (GI.CallableInfo info, string name);
                public static GI.TypeInfo get_return_type (GI.CallableInfo info);
@@ -126,6 +127,7 @@ namespace GI {
                protected ObjectInfo ();
                public static GI.FunctionInfo find_method (GI.ObjectInfo info, string name);
                public static GI.FunctionInfo find_method_using_interfaces (GI.ObjectInfo info, string name, out GI.ObjectInfo implementor);
+               public static GI.SignalInfo find_signal (GI.ObjectInfo info, string name);
                public static GI.VFuncInfo find_vfunc (GI.ObjectInfo info, string name);
                public static GI.VFuncInfo find_vfunc_using_interfaces (GI.ObjectInfo info, string name, out GI.ObjectInfo implementor);
                public static bool get_abstract (GI.ObjectInfo info);
@@ -302,9 +304,6 @@ namespace GI {
        [CCode (cheader_filename = "girepository.h", has_type_id = false)]
        public struct AttributeIter {
        }
-       [CCode (cheader_filename = "girepository.h", cname = "_GIBaseInfoStub", has_type_id = false)]
-       public struct _BaseInfoStub {
-       }
        [CCode (cheader_filename = "girepository.h", cprefix = "GI_ARRAY_TYPE_", has_type_id = false)]
        public enum ArrayType {
                C,
index b0930a0..f688f44 100644 (file)
@@ -1,6 +1,7 @@
 /* goocanvas.vapi generated by vapigen, do not modify. */
 
 [CCode (cprefix = "Goo", lower_case_cprefix = "goo_")]
+[Deprecated (replacement = "goocanvas-2.0")]
 namespace Goo {
        [CCode (cheader_filename = "goocanvas.h", copy_function = "goo_cairo_matrix_copy", type_id = "GOO_TYPE_CAIRO_MATRIX")]
        [Compact]
index 1f82876..73a42c9 100644 (file)
@@ -23,6 +23,8 @@ namespace Gst {
                [CCode (cheader_filename = "gst/gst.h")]
                public static GLib.SList<weak Gst.DebugCategory> get_all_categories ();
                [CCode (cheader_filename = "gst/gst.h")]
+               public static Gst.DebugColorMode get_color_mode ();
+               [CCode (cheader_filename = "gst/gst.h")]
                public static Gst.DebugLevel get_default_threshold ();
                [CCode (cheader_filename = "gst/gst.h")]
                public static bool is_active ();
@@ -31,7 +33,12 @@ namespace Gst {
                [CCode (cheader_filename = "gst/gst.h")]
                public static unowned string level_get_name (Gst.DebugLevel level);
                [CCode (cheader_filename = "gst/gst.h")]
-               public static void log_default (Gst.DebugCategory category, Gst.DebugLevel level, string file, string function, int line, GLib.Object? object, Gst.DebugMessage message, void* unused);
+               [PrintfFormat]
+               public static void log (Gst.DebugCategory category, Gst.DebugLevel level, string file, string function, int line, GLib.Object? object, string format, ...);
+               [CCode (cheader_filename = "gst/gst.h")]
+               public static void log_default (Gst.DebugCategory category, Gst.DebugLevel level, string file, string function, int line, GLib.Object? object, Gst.DebugMessage message, void* unused = null);
+               [CCode (cheader_filename = "gst/gst.h")]
+               public static void log_valist (Gst.DebugCategory category, Gst.DebugLevel level, string file, string function, int line, GLib.Object? object, string format, va_list args);
                [CCode (cheader_filename = "gst/gst.h")]
                public static void print_stack_trace ();
                [CCode (cheader_filename = "gst/gst.h")]
@@ -41,12 +48,18 @@ namespace Gst {
                [CCode (cheader_filename = "gst/gst.h")]
                public static void set_active (bool active);
                [CCode (cheader_filename = "gst/gst.h")]
+               public static void set_color_mode (Gst.DebugColorMode mode);
+               [CCode (cheader_filename = "gst/gst.h")]
+               public static void set_color_mode_from_string (string mode);
+               [CCode (cheader_filename = "gst/gst.h")]
                public static void set_colored (bool colored);
                [CCode (cheader_filename = "gst/gst.h")]
                public static void set_default_threshold (Gst.DebugLevel level);
                [CCode (cheader_filename = "gst/gst.h")]
                public static void set_threshold_for_name (string name, Gst.DebugLevel level);
                [CCode (cheader_filename = "gst/gst.h")]
+               public static void set_threshold_from_string (string list, bool reset);
+               [CCode (cheader_filename = "gst/gst.h")]
                public static void unset_threshold_for_name (string name);
        }
        namespace ElementFactoryKlass {
@@ -228,6 +241,8 @@ namespace Gst {
                public const string IMAGE;
                [CCode (cheader_filename = "gst/gst.h", cname = "GST_TAG_IMAGE_ORIENTATION")]
                public const string IMAGE_ORIENTATION;
+               [CCode (cheader_filename = "gst/gst.h", cname = "GST_TAG_INTERPRETED_BY")]
+               public const string INTERPRETED_BY;
                [CCode (cheader_filename = "gst/gst.h", cname = "GST_TAG_ISRC")]
                public const string ISRC;
                [CCode (cheader_filename = "gst/gst.h", cname = "GST_TAG_KEYWORDS")]
@@ -246,6 +261,8 @@ namespace Gst {
                public const string LYRICS;
                [CCode (cheader_filename = "gst/gst.h", cname = "GST_TAG_MAXIMUM_BITRATE")]
                public const string MAXIMUM_BITRATE;
+               [CCode (cheader_filename = "gst/gst.h", cname = "GST_TAG_MIDI_BASE_NOTE")]
+               public const string MIDI_BASE_NOTE;
                [CCode (cheader_filename = "gst/gst.h", cname = "GST_TAG_MINIMUM_BITRATE")]
                public const string MINIMUM_BITRATE;
                [CCode (cheader_filename = "gst/gst.h", cname = "GST_TAG_NOMINAL_BITRATE")]
@@ -256,6 +273,8 @@ namespace Gst {
                public const string PERFORMER;
                [CCode (cheader_filename = "gst/gst.h", cname = "GST_TAG_PREVIEW_IMAGE")]
                public const string PREVIEW_IMAGE;
+               [CCode (cheader_filename = "gst/gst.h", cname = "GST_TAG_PUBLISHER")]
+               public const string PUBLISHER;
                [CCode (cheader_filename = "gst/gst.h", cname = "GST_TAG_REFERENCE_LEVEL")]
                public const string REFERENCE_LEVEL;
                [CCode (cheader_filename = "gst/gst.h", cname = "GST_TAG_SERIAL")]
@@ -306,6 +325,10 @@ namespace Gst {
                public static void merge_strings_with_comma (out GLib.Value dest, GLib.Value src);
                [CCode (cheader_filename = "gst/gst.h", cname = "gst_tag_merge_use_first")]
                public static void merge_use_first (out GLib.Value dest, GLib.Value src);
+               [CCode (cheader_filename = "gst/gst.h", cname = "gst_tag_register")]
+               public static void register (string name, Gst.TagFlag flag, GLib.Type type, string nick, string blurb, Gst.TagMergeFunc? func);
+               [CCode (cheader_filename = "gst/gst.h", cname = "gst_tag_register_static")]
+               public static void register_static (string name, Gst.TagFlag flag, GLib.Type type, string nick, string blurb, Gst.TagMergeFunc? func);
        }
        namespace URI {
                [CCode (cheader_filename = "gst/gst.h")]
@@ -349,6 +372,8 @@ namespace Gst {
                [CCode (cheader_filename = "gst/gst.h")]
                public static int64 greatest_common_divisor_int64 (int64 a, int64 b);
                [CCode (cheader_filename = "gst/gst.h")]
+               public static uint group_id_next ();
+               [CCode (cheader_filename = "gst/gst.h")]
                public static double guint64_to_gdouble (uint64 value);
                [CCode (cheader_filename = "gst/gst.h")]
                public static int32 seqnum_compare (uint32 s1, uint32 s2);
@@ -395,6 +420,8 @@ namespace Gst {
                [CCode (cheader_filename = "gst/gst.h")]
                public static unowned Gst.Caps get_caps (GLib.Value value);
                [CCode (cheader_filename = "gst/gst.h")]
+               public static unowned Gst.CapsFeatures get_caps_features (GLib.Value value);
+               [CCode (cheader_filename = "gst/gst.h")]
                public static double get_double_range_max (GLib.Value value);
                [CCode (cheader_filename = "gst/gst.h")]
                public static double get_double_range_min (GLib.Value value);
@@ -431,12 +458,14 @@ namespace Gst {
                [CCode (cheader_filename = "gst/gst.h")]
                public static void register (Gst.ValueTable table);
                [CCode (cheader_filename = "gst/gst.h")]
-               public static string serialize (GLib.Value value);
+               public static string? serialize (GLib.Value value);
                [CCode (cheader_filename = "gst/gst.h")]
                public static void set_bitmask (GLib.Value value, uint64 bitmask);
                [CCode (cheader_filename = "gst/gst.h")]
                public static void set_caps (GLib.Value value, Gst.Caps caps);
                [CCode (cheader_filename = "gst/gst.h")]
+               public static void set_caps_features (GLib.Value value, Gst.CapsFeatures features);
+               [CCode (cheader_filename = "gst/gst.h")]
                public static void set_double_range (GLib.Value value, double start, double end);
                [CCode (cheader_filename = "gst/gst.h")]
                public static void set_fraction (GLib.Value value, int numerator, int denominator);
@@ -480,7 +509,7 @@ namespace Gst {
                [CCode (has_construct_function = false)]
                protected Allocator ();
                public virtual Gst.Memory alloc (size_t size, Gst.AllocationParams? @params);
-               public static Gst.Allocator find (string? name);
+               public static Gst.Allocator? find (string? name);
                public virtual void free (owned Gst.Memory memory);
                public static void register (string name, owned Gst.Allocator allocator);
                public void set_default ();
@@ -510,27 +539,28 @@ namespace Gst {
                public Gst.Clock provided_clock;
                public bool state_dirty;
                [CCode (has_construct_function = false, returns_floating_reference = true, type = "GstElement*")]
-               public Bin (string name);
-               public bool add (Gst.Element element);
+               public Bin (string? name);
+               public bool add (owned Gst.Element element);
                [NoWrapper]
                public virtual bool add_element (Gst.Element element);
-               public void add_many (Gst.Element element_1, ...);
-               public Gst.Pad find_unlinked_pad (Gst.PadDirection direction);
+               public void add_many (params owned Gst.Element[] elements);
+               public Gst.Pad? find_unlinked_pad (Gst.PadDirection direction);
                public Gst.Element get_by_interface (GLib.Type iface);
-               public Gst.Element get_by_name (string name);
-               public Gst.Element get_by_name_recurse_up (string name);
+               public Gst.Element? get_by_name (string name);
+               public Gst.Element? get_by_name_recurse_up (string name);
                [NoWrapper]
                public virtual void handle_message (Gst.Message message);
-               public Gst.Iterator iterate_all_by_interface (GLib.Type iface);
-               public Gst.Iterator iterate_elements ();
-               public Gst.Iterator iterate_recurse ();
-               public Gst.Iterator iterate_sinks ();
-               public Gst.Iterator iterate_sorted ();
-               public Gst.Iterator iterate_sources ();
+               public Gst.Iterator? iterate_all_by_interface (GLib.Type iface);
+               public Gst.Iterator? iterate_elements ();
+               public Gst.Iterator? iterate_recurse ();
+               public Gst.Iterator? iterate_sinks ();
+               public Gst.Iterator? iterate_sorted ();
+               public Gst.Iterator? iterate_sources ();
                public bool recalculate_latency ();
                public bool remove (Gst.Element element);
                [NoWrapper]
                public virtual bool remove_element (Gst.Element element);
+               public void remove_many (params owned Gst.Element[] elements);
                [NoAccessorMethod]
                public bool async_handling { get; set; }
                [NoAccessorMethod]
@@ -561,7 +591,7 @@ namespace Gst {
                public Gst.Buffer append (owned Gst.Buffer buf2);
                public void append_memory (owned Gst.Memory mem);
                public Gst.Buffer append_region (owned Gst.Buffer buf2, ssize_t offset, ssize_t size);
-               public void copy_into (Gst.Buffer src, Gst.BufferCopyFlags flags, size_t offset, size_t size);
+               public bool copy_into (Gst.Buffer src, Gst.BufferCopyFlags flags, size_t offset, size_t size);
                public Gst.Buffer copy_region (Gst.BufferCopyFlags flags, size_t offset, size_t size);
                public size_t extract (size_t offset, void* dest, size_t size);
                public void extract_dup (size_t offset, size_t size, [CCode (array_length_cname = "dest_size", array_length_pos = 3.1, array_length_type = "gsize")] out uint8[] dest);
@@ -569,6 +599,7 @@ namespace Gst {
                public bool find_memory (size_t offset, size_t size, out uint idx, out uint length, out size_t skip);
                public bool foreach_meta (Gst.BufferForeachMetaFunc func);
                public Gst.Memory get_all_memory ();
+               public static uint get_max_memory ();
                public Gst.Memory get_memory (uint idx);
                public Gst.Memory get_memory_range (uint idx, int length);
                public unowned Gst.Meta? get_meta (GLib.Type api);
@@ -576,6 +607,8 @@ namespace Gst {
                public size_t get_sizes (out size_t offset, out size_t maxsize);
                public size_t get_sizes_range (uint idx, int length, out size_t offset, out size_t maxsize);
                public void insert_memory (int idx, owned Gst.Memory mem);
+               public bool is_all_memory_writable ();
+               public bool is_memory_range_writable (uint idx, int length);
                public unowned Gst.Meta? iterate_meta (void* state);
                public bool map (out Gst.MapInfo info, Gst.MapFlags flags);
                public bool map_range (uint idx, int length, out Gst.MapInfo info, Gst.MapFlags flags);
@@ -594,7 +627,7 @@ namespace Gst {
                public void replace_memory (uint idx, owned Gst.Memory mem);
                public void replace_memory_range (uint idx, int length, owned Gst.Memory mem);
                public void resize (ssize_t offset, ssize_t size);
-               public void resize_range (uint idx, int length, ssize_t offset, ssize_t size);
+               public bool resize_range (uint idx, int length, ssize_t offset, ssize_t size);
                public void set_size (ssize_t size);
                public void unmap (Gst.MapInfo info);
                [CCode (has_construct_function = false)]
@@ -606,7 +639,7 @@ namespace Gst {
                [CCode (has_construct_function = false)]
                public BufferList ();
                public bool @foreach (Gst.BufferListFunc func);
-               public unowned Gst.Buffer @get (uint idx);
+               public unowned Gst.Buffer? @get (uint idx);
                public void insert (int idx, owned Gst.Buffer buffer);
                public uint length ();
                public void remove (uint idx, uint length);
@@ -616,7 +649,7 @@ namespace Gst {
        [CCode (cheader_filename = "gst/gst.h", type_id = "gst_buffer_pool_get_type ()")]
        public class BufferPool : Gst.Object {
                public int flushing;
-               [CCode (has_construct_function = false)]
+               [CCode (has_construct_function = false, returns_floating_reference = true)]
                public BufferPool ();
                public virtual Gst.FlowReturn acquire_buffer (out Gst.Buffer buffer, Gst.BufferPoolAcquireParams? @params);
                [NoWrapper]
@@ -627,8 +660,13 @@ namespace Gst {
                public static bool config_get_params (Gst.Structure config, out unowned Gst.Caps caps, out uint size, out uint min_buffers, out uint max_buffers);
                public static bool config_has_option (Gst.Structure config, string option);
                public static uint config_n_options (Gst.Structure config);
-               public static void config_set_allocator (Gst.Structure config, Gst.Allocator allocator, Gst.AllocationParams @params);
+               public static void config_set_allocator (Gst.Structure config, Gst.Allocator? allocator, Gst.AllocationParams? @params);
                public static void config_set_params (Gst.Structure config, Gst.Caps caps, uint size, uint min_buffers, uint max_buffers);
+               public static bool config_validate_params (Gst.Structure config, Gst.Caps caps, uint size, uint min_buffers, uint max_buffers);
+               [NoWrapper]
+               public virtual void flush_start ();
+               [NoWrapper]
+               public virtual void flush_stop ();
                [NoWrapper]
                public virtual void free_buffer (Gst.Buffer buffer);
                public Gst.Structure get_config ();
@@ -641,6 +679,7 @@ namespace Gst {
                public virtual void reset_buffer (Gst.Buffer buffer);
                public bool set_active (bool active);
                public virtual bool set_config (owned Gst.Structure config);
+               public void set_flushing (bool flushing);
                [NoWrapper]
                public virtual bool start ();
                [NoWrapper]
@@ -659,17 +698,17 @@ namespace Gst {
                public void disable_sync_message_emission ();
                public void enable_sync_message_emission ();
                public bool have_pending ();
-               public Gst.Message peek ();
-               public Gst.Message poll (Gst.MessageType events, Gst.ClockTime timeout);
-               public Gst.Message pop ();
-               public Gst.Message pop_filtered (Gst.MessageType types);
+               public Gst.Message? peek ();
+               public Gst.Message? poll (Gst.MessageType events, Gst.ClockTime timeout);
+               public Gst.Message? pop ();
+               public Gst.Message? pop_filtered (Gst.MessageType types);
                public bool post (owned Gst.Message message);
                public void remove_signal_watch ();
                public void set_flushing (bool flushing);
                public void set_sync_handler (owned Gst.BusSyncHandler? func);
                public Gst.BusSyncReply sync_signal_handler (Gst.Message message, void* data);
-               public Gst.Message timed_pop (Gst.ClockTime timeout);
-               public Gst.Message timed_pop_filtered (Gst.ClockTime timeout, Gst.MessageType types);
+               public Gst.Message? timed_pop (Gst.ClockTime timeout);
+               public Gst.Message? timed_pop_filtered (Gst.ClockTime timeout, Gst.MessageType types);
                public bool enable_async { construct; }
                public virtual signal void message (Gst.Message message);
                public virtual signal void sync_message (Gst.Message message);
@@ -681,6 +720,7 @@ namespace Gst {
                public Caps.any ();
                public void append (owned Gst.Caps caps2);
                public void append_structure (owned Gst.Structure structure);
+               public void append_structure_full (owned Gst.Structure structure, owned Gst.CapsFeatures? features = null);
                public bool can_intersect (Gst.Caps caps2);
                public Gst.Caps copy_nth (uint nth);
                [CCode (has_construct_function = false)]
@@ -689,6 +729,11 @@ namespace Gst {
                public Caps.empty_simple (string media_type);
                public Gst.Caps fixate ();
                public static Gst.Caps from_string (string string);
+               [CCode (has_construct_function = false)]
+               public Caps.full (params Gst.Structure[] structure);
+               [CCode (has_construct_function = false)]
+               public Caps.full_valist (Gst.Structure structure, va_list var_args);
+               public unowned Gst.CapsFeatures get_features (uint index);
                public uint get_size ();
                public unowned Gst.Structure get_structure (uint index);
                [CCode (cname = "gst_caps_intersect_full")]
@@ -702,10 +747,15 @@ namespace Gst {
                public bool is_strictly_equal (Gst.Caps caps2);
                public bool is_subset (Gst.Caps superset);
                public bool is_subset_structure (Gst.Structure structure);
+               public bool is_subset_structure_full (Gst.Structure structure, Gst.CapsFeatures? features);
                public Gst.Caps merge (owned Gst.Caps caps2);
                public Gst.Caps merge_structure (owned Gst.Structure structure);
+               public Gst.Caps merge_structure_full (owned Gst.Structure structure, owned Gst.CapsFeatures? features);
                public Gst.Caps normalize ();
                public void remove_structure (uint idx);
+               public void set_features (uint index, owned Gst.CapsFeatures? features);
+               public void set_simple (string field, ...);
+               public void set_simple_valist (string field, va_list varargs);
                public void set_value (string field, GLib.Value value);
                public Gst.Caps simplify ();
                public Gst.Structure steal_structure (uint index);
@@ -713,6 +763,38 @@ namespace Gst {
                public string to_string ();
                public Gst.Caps truncate ();
        }
+       [CCode (cheader_filename = "gst/gst.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_caps_features_get_type ()")]
+       [Compact]
+       public class CapsFeatures {
+               [CCode (has_construct_function = false)]
+               public CapsFeatures (string feature1, ...);
+               public void add (string feature);
+               public void add_id (GLib.Quark feature);
+               [CCode (has_construct_function = false)]
+               public CapsFeatures.any ();
+               public bool contains (string feature);
+               public bool contains_id (GLib.Quark feature);
+               public Gst.CapsFeatures copy ();
+               [CCode (has_construct_function = false)]
+               public CapsFeatures.empty ();
+               public void free ();
+               public static Gst.CapsFeatures? from_string (string features);
+               public unowned string get_nth (uint i);
+               public GLib.Quark get_nth_id (uint i);
+               public uint get_size ();
+               [CCode (has_construct_function = false)]
+               public CapsFeatures.id (params GLib.Quark[] features);
+               [CCode (has_construct_function = false)]
+               public CapsFeatures.id_valist (GLib.Quark feature1, va_list varargs);
+               public bool is_any ();
+               public bool is_equal (Gst.CapsFeatures features2);
+               public void remove (string feature);
+               public void remove_id (GLib.Quark feature);
+               public bool set_parent_refcount (int refcount);
+               public string to_string ();
+               [CCode (has_construct_function = false)]
+               public CapsFeatures.valist (string feature1, va_list varargs);
+       }
        [CCode (cheader_filename = "gst/gst.h", type_id = "gst_clock_get_type ()")]
        public abstract class Clock : Gst.Object {
                [CCode (has_construct_function = false)]
@@ -723,7 +805,7 @@ namespace Gst {
                public virtual Gst.ClockTime change_resolution (Gst.ClockTime old_resolution, Gst.ClockTime new_resolution);
                public void get_calibration (out Gst.ClockTime @internal, out Gst.ClockTime external, out Gst.ClockTime rate_num, out Gst.ClockTime rate_denom);
                public virtual Gst.ClockTime get_internal_time ();
-               public Gst.Clock get_master ();
+               public Gst.Clock? get_master ();
                public virtual Gst.ClockTime get_resolution ();
                public Gst.ClockTime get_time ();
                public Gst.ClockTime get_timeout ();
@@ -755,14 +837,25 @@ namespace Gst {
                [NoAccessorMethod]
                public int window_threshold { get; set; }
        }
+       [CCode (cheader_filename = "gst/gst.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_context_get_type ()")]
+       [Compact]
+       public class Context {
+               [CCode (has_construct_function = false)]
+               public Context (string context_type, bool persistent);
+               public unowned string get_context_type ();
+               public unowned Gst.Structure get_structure ();
+               public bool has_context_type (string context_type);
+               public bool is_persistent ();
+               public Gst.Structure writable_structure ();
+       }
        [CCode (cheader_filename = "gst/gst.h", type_id = "gst_control_binding_get_type ()")]
        public abstract class ControlBinding : Gst.Object {
                public weak GLib.ParamSpec pspec;
                [CCode (has_construct_function = false)]
                protected ControlBinding ();
-               public virtual bool get_g_value_array (Gst.ClockTime timestamp, Gst.ClockTime interval, uint n_values, GLib.Value values);
+               public virtual bool get_g_value_array (Gst.ClockTime timestamp, Gst.ClockTime interval, [CCode (array_length_cname = "n_values", array_length_pos = 2.5, array_length_type = "guint")] GLib.Value[] values);
                public virtual GLib.Value? get_value (Gst.ClockTime timestamp);
-               public virtual bool get_value_array (Gst.ClockTime timestamp, Gst.ClockTime interval, uint n_values, void* values);
+               public virtual bool get_value_array<T> (Gst.ClockTime timestamp, Gst.ClockTime interval, [CCode (array_length_pos = 2.5, array_length_type = "guint")] T[] values);
                public bool is_disabled ();
                public void set_disabled (bool disabled);
                public virtual bool sync_values (Gst.Object object, Gst.ClockTime timestamp, Gst.ClockTime last_sync);
@@ -776,7 +869,7 @@ namespace Gst {
                [CCode (has_construct_function = false)]
                protected ControlSource ();
                public bool get_value (Gst.ClockTime timestamp, double value);
-               public bool get_value_array (Gst.ClockTime timestamp, Gst.ClockTime interval, [CCode (array_length_cname = "n_values", array_length_pos = 2.5, array_length_type = "guint", type = "gdouble*")] double[] values);
+               public bool get_value_array (Gst.ClockTime timestamp, Gst.ClockTime interval, [CCode (array_length_cname = "n_values", array_length_pos = 2.5, array_length_type = "guint")] double[] values);
        }
        [CCode (cheader_filename = "gst/gst.h", ref_function = "gst_date_time_ref", type_id = "gst_date_time_get_type ()", unref_function = "gst_date_time_unref")]
        [Compact]
@@ -811,8 +904,8 @@ namespace Gst {
                [CCode (has_construct_function = false)]
                public DateTime.now_utc ();
                public Gst.DateTime @ref ();
-               public GLib.DateTime to_g_date_time ();
-               public string to_iso8601_string ();
+               public GLib.DateTime? to_g_date_time ();
+               public string? to_iso8601_string ();
                public void unref ();
                [CCode (has_construct_function = false)]
                public DateTime.y (int year);
@@ -826,6 +919,73 @@ namespace Gst {
        public class DebugMessage {
                public unowned string @get ();
        }
+       [CCode (cheader_filename = "gst/gst.h", type_id = "gst_device_get_type ()")]
+       public abstract class Device : Gst.Object {
+               [CCode (has_construct_function = false)]
+               protected Device ();
+               public virtual Gst.Element create_element (string? name);
+               public Gst.Caps get_caps ();
+               public string get_device_class ();
+               public string get_display_name ();
+               public bool has_classes (string classes);
+               public bool has_classesv ([CCode (array_length = false, array_null_terminated = true)] string[] classes);
+               public virtual bool reconfigure_element (Gst.Element element);
+               public Gst.Caps caps { owned get; construct; }
+               public string device_class { owned get; construct; }
+               public string display_name { owned get; construct; }
+               public signal void removed ();
+       }
+       [CCode (cheader_filename = "gst/gst.h", type_id = "gst_device_monitor_get_type ()")]
+       public class DeviceMonitor : Gst.Object {
+               [CCode (has_construct_function = false)]
+               public DeviceMonitor ();
+               public uint add_filter (string? classes, Gst.Caps? caps);
+               public Gst.Bus get_bus ();
+               public GLib.List<Gst.Device> get_devices ();
+               public bool remove_filter (uint filter_id);
+               public bool start ();
+               public void stop ();
+       }
+       [CCode (cheader_filename = "gst/gst.h", type_id = "gst_device_provider_get_type ()")]
+       public abstract class DeviceProvider : Gst.Object {
+               public weak GLib.List<void*> devices;
+               [CCode (has_construct_function = false)]
+               protected DeviceProvider ();
+               [CCode (cname = "gst_device_provider_class_add_metadata")]
+               public class void add_metadata (string key, string value);
+               [CCode (cname = "gst_device_provider_class_add_static_metadata")]
+               public class void add_static_metadata (string key, owned string value);
+               public bool can_monitor ();
+               public void device_add (owned Gst.Device device);
+               public void device_remove (Gst.Device device);
+               public Gst.Bus get_bus ();
+               public GLib.List<Gst.Device> get_devices ();
+               public unowned Gst.DeviceProviderFactory get_factory ();
+               [CCode (cname = "gst_device_provider_class_get_metadata")]
+               public class unowned string get_metadata (string key);
+               public static bool register (Gst.Plugin? plugin, string name, uint rank, GLib.Type type);
+               [CCode (cname = "gst_device_provider_class_set_metadata")]
+               public class void set_metadata (string longname, string classification, string description, string author);
+               [CCode (cname = "gst_device_provider_class_set_static_metadata")]
+               public class void set_static_metadata (owned string longname, owned string classification, owned string description, owned string author);
+               public virtual bool start ();
+               public virtual void stop ();
+       }
+       [CCode (cheader_filename = "gst/gst.h", type_id = "gst_device_provider_factory_get_type ()")]
+       public class DeviceProviderFactory : Gst.PluginFeature {
+               [CCode (has_construct_function = false)]
+               protected DeviceProviderFactory ();
+               public static Gst.DeviceProviderFactory? find (string name);
+               public Gst.DeviceProvider? @get ();
+               public static Gst.DeviceProvider? get_by_name (string factoryname);
+               public GLib.Type get_device_provider_type ();
+               public unowned string? get_metadata (string key);
+               [CCode (array_length = false, array_null_terminated = true)]
+               public string[]? get_metadata_keys ();
+               public bool has_classes (string? classes);
+               public bool has_classesv ([CCode (array_length = false, array_null_terminated = true)] string[]? classes);
+               public static GLib.List<Gst.DeviceProviderFactory> list_get_device_providers (Gst.Rank minrank);
+       }
        [CCode (cheader_filename = "gst/gst.h", type_id = "gst_double_range_get_type ()")]
        public class DoubleRange {
                [CCode (has_construct_function = false)]
@@ -857,7 +1017,7 @@ namespace Gst {
                public void abort_state ();
                [CCode (cname = "gst_element_class_add_metadata")]
                public class void add_metadata (string key, string value);
-               public bool add_pad (Gst.Pad pad);
+               public bool add_pad (owned Gst.Pad pad);
                [CCode (cname = "gst_element_class_add_pad_template")]
                public class void add_pad_template (owned Gst.PadTemplate templ);
                [CCode (cname = "gst_element_class_add_static_metadata")]
@@ -868,26 +1028,26 @@ namespace Gst {
                public Gst.ClockTime get_base_time ();
                public Gst.Bus get_bus ();
                public Gst.Clock get_clock ();
-               public Gst.Pad get_compatible_pad (Gst.Pad pad, Gst.Caps? caps);
-               public unowned Gst.PadTemplate get_compatible_pad_template (Gst.PadTemplate compattempl);
+               public Gst.Pad? get_compatible_pad (Gst.Pad pad, Gst.Caps? caps);
+               public unowned Gst.PadTemplate? get_compatible_pad_template (Gst.PadTemplate compattempl);
                public unowned Gst.ElementFactory get_factory ();
                [CCode (cname = "gst_element_class_get_metadata")]
                public class unowned string get_metadata (string key);
                [CCode (cname = "gst_element_class_get_pad_template")]
-               public class unowned Gst.PadTemplate get_pad_template (string name);
+               public class unowned Gst.PadTemplate? get_pad_template (string name);
                [CCode (cname = "gst_element_class_get_pad_template_list")]
                public class unowned GLib.List<Gst.PadTemplate> get_pad_template_list ();
-               public Gst.Pad get_request_pad (string name);
+               public Gst.Pad? get_request_pad (string name);
                public Gst.ClockTime get_start_time ();
                public virtual Gst.StateChangeReturn get_state (out Gst.State state, out Gst.State pending, Gst.ClockTime timeout);
-               public Gst.Pad get_static_pad (string name);
+               public Gst.Pad? get_static_pad (string name);
                public bool is_locked_state ();
                public Gst.Iterator iterate_pads ();
                public Gst.Iterator iterate_sink_pads ();
                public Gst.Iterator iterate_src_pads ();
                public bool link (Gst.Element dest);
                public bool link_filtered (Gst.Element dest, Gst.Caps? filter);
-               public bool link_many (Gst.Element element_2, ...);
+               public bool link_many (params Gst.Element[] elements);
                [CCode (cname = "gst_element_link_pads_full")]
                public bool link_pads (string? srcpadname, Gst.Element dest, string? destpadname, Gst.PadLinkCheck flags = Gst.PadLinkCheck.DEFAULT);
                public bool link_pads_filtered (string? srcpadname, Gst.Element dest, string? destpadname, Gst.Caps? filter);
@@ -896,7 +1056,7 @@ namespace Gst {
                public static Gst.Element make_from_uri (Gst.URIType type, string uri, string? elementname) throws GLib.Error;
                public void message_full (Gst.MessageType type, GLib.Quark domain, int code, owned string? text, owned string? debug, string file, string function, int line);
                public virtual bool post_message (owned Gst.Message message);
-               public virtual Gst.Clock provide_clock ();
+               public virtual Gst.Clock? provide_clock ();
                public virtual bool query (Gst.Query query);
                public bool query_convert (ref Gst.Format src_format, int64 src_val, Gst.Format dest_format, out int64 dest_val);
                public bool query_duration (Gst.Format format, out int64 duration);
@@ -906,13 +1066,16 @@ namespace Gst {
                public virtual void release_pad (Gst.Pad pad);
                public void release_request_pad (Gst.Pad pad);
                public bool remove_pad (owned Gst.Pad pad);
-               public Gst.Pad request_pad (Gst.PadTemplate templ, string? name, Gst.Caps? caps);
+               [NoWrapper]
+               public virtual Gst.Pad? request_new_pad (Gst.PadTemplate templ, string name, Gst.Caps caps);
+               public Gst.Pad? request_pad (Gst.PadTemplate templ, string? name, Gst.Caps? caps);
                public bool seek (double rate, Gst.Format format, Gst.SeekFlags flags, Gst.SeekType start_type, int64 start, Gst.SeekType stop_type, int64 stop);
                public bool seek_simple (Gst.Format format, Gst.SeekFlags seek_flags, int64 seek_pos);
                public virtual bool send_event (owned Gst.Event event);
                public void set_base_time (Gst.ClockTime time);
                public virtual void set_bus (Gst.Bus bus);
                public virtual bool set_clock (Gst.Clock clock);
+               public virtual void set_context (Gst.Context context);
                public bool set_locked_state (bool locked_state);
                [CCode (cname = "gst_element_class_set_metadata")]
                public class void set_metadata (string longname, string classification, string description, string author);
@@ -926,6 +1089,7 @@ namespace Gst {
                public static unowned string state_get_name (Gst.State state);
                public bool sync_state_with_parent ();
                public void unlink (Gst.Element dest);
+               public void unlink_many (params Gst.Element[] elements);
                public void unlink_pads (string srcpadname, Gst.Element dest, string destpadname);
                [HasEmitter]
                public virtual signal void no_more_pads ();
@@ -941,14 +1105,14 @@ namespace Gst {
                public bool can_src_all_caps (Gst.Caps caps);
                public bool can_src_any_caps (Gst.Caps caps);
                [CCode (returns_floating_reference = true)]
-               public Gst.Element create (string? name);
-               public static Gst.ElementFactory find (string name);
+               public Gst.Element? create (string? name);
+               public static Gst.ElementFactory? find (string name);
                public GLib.Type get_element_type ();
-               public unowned string get_metadata (string key);
+               public unowned string? get_metadata (string key);
                [CCode (array_length = false, array_null_terminated = true)]
                public string[]? get_metadata_keys ();
                public uint get_num_pad_templates ();
-               public unowned GLib.List<weak Gst.StaticPadTemplate?> get_static_pad_templates ();
+               public GLib.List<Gst.StaticPadTemplate?> get_static_pad_templates ();
                [CCode (array_length = false, array_null_terminated = true)]
                public unowned string[] get_uri_protocols ();
                public Gst.URIType get_uri_type ();
@@ -957,7 +1121,7 @@ namespace Gst {
                public static GLib.List<Gst.ElementFactory> list_get_elements (Gst.ElementFactoryListType type, Gst.Rank minrank);
                public bool list_is_type (Gst.ElementFactoryListType type);
                [CCode (returns_floating_reference = true)]
-               public static Gst.Element make (string factoryname, string? name);
+               public static Gst.Element? make (string factoryname, string? name);
        }
        [CCode (cheader_filename = "gst/gst.h", ref_function = "gst_event_ref", type_id = "gst_event_get_type ()", unref_function = "gst_event_unref")]
        [Compact]
@@ -980,6 +1144,7 @@ namespace Gst {
                public Event.flush_stop (bool reset_time);
                [CCode (has_construct_function = false)]
                public Event.gap (Gst.ClockTime timestamp, Gst.ClockTime duration);
+               public int64 get_running_time_offset ();
                public uint32 get_seqnum ();
                public unowned Gst.Structure get_structure ();
                public bool has_name (string name);
@@ -991,6 +1156,7 @@ namespace Gst {
                public void parse_caps (out unowned Gst.Caps caps);
                public void parse_flush_stop (out bool reset_time);
                public void parse_gap (out Gst.ClockTime timestamp, out Gst.ClockTime duration);
+               public bool parse_group_id (out uint group_id);
                public void parse_latency (out Gst.ClockTime latency);
                public void parse_qos (out Gst.QOSType type, out double proportion, out Gst.ClockTimeDiff diff, out Gst.ClockTime timestamp);
                public void parse_seek (out double rate, out Gst.Format format, out Gst.SeekFlags flags, out Gst.SeekType start_type, out int64 start, out Gst.SeekType stop_type, out int64 stop);
@@ -998,6 +1164,7 @@ namespace Gst {
                public void parse_segment_done (out Gst.Format format, out int64 position);
                public void parse_sink_message (out Gst.Message msg);
                public void parse_step (out Gst.Format format, out uint64 amount, out double rate, out bool flush, out bool intermediate);
+               public void parse_stream_flags (out Gst.StreamFlags flags);
                public void parse_stream_start (out unowned string stream_id);
                public void parse_tag (out unowned Gst.TagList taglist);
                public void parse_toc (out Gst.Toc toc, out bool updated);
@@ -1012,7 +1179,10 @@ namespace Gst {
                public Event.segment (Gst.Segment segment);
                [CCode (has_construct_function = false)]
                public Event.segment_done (Gst.Format format, int64 position);
+               public void set_group_id (uint group_id);
+               public void set_running_time_offset (int64 offset);
                public void set_seqnum (uint32 seqnum);
+               public void set_stream_flags (Gst.StreamFlags flags);
                [CCode (has_construct_function = false)]
                public Event.sink_message (string name, Gst.Message msg);
                [CCode (has_construct_function = false)]
@@ -1025,7 +1195,7 @@ namespace Gst {
                public Event.toc (Gst.Toc toc, bool updated);
                [CCode (has_construct_function = false)]
                public Event.toc_select (string uid);
-               public Gst.Structure writable_structure ();
+               public unowned Gst.Structure writable_structure ();
        }
        [CCode (cheader_filename = "gst/gst.h", type_id = "gst_fraction_get_type ()")]
        public class Fraction {
@@ -1045,7 +1215,7 @@ namespace Gst {
                public bool @construct ();
                [CCode (has_construct_function = false, type = "GstPad*")]
                public GhostPad.from_template (string? name, Gst.Pad target, Gst.PadTemplate templ);
-               public Gst.Pad get_target ();
+               public Gst.Pad? get_target ();
                public static bool internal_activate_mode_default (Gst.Pad pad, Gst.Object? parent, Gst.PadMode mode, bool active);
                [CCode (has_construct_function = false, type = "GstPad*")]
                public GhostPad.no_target (string? name, Gst.PadDirection dir);
@@ -1073,8 +1243,10 @@ namespace Gst {
                public weak Gst.Iterator pushed;
                public uint size;
                public GLib.Type type;
-               public Gst.Iterator filter (GLib.CompareFunc func, GLib.Value user_data);
-               public bool find_custom ([CCode (delegate_target_pos = 2.1)] GLib.CompareFunc func, out GLib.Value elem);
+               [CCode (simple_generics = true)]
+               public Gst.Iterator filter<T> ([CCode (type = "GCompareFunc")] GLib.SearchFunc<GLib.Value,T> func, T user_data);
+               [CCode (simple_generics = true)]
+               public bool find_custom<T> ([CCode (type = "GCompareFunc")] GLib.SearchFunc<GLib.Value,T> func, out GLib.Value elem, T user_data);
                public Gst.IteratorResult fold ([CCode (delegate_target_pos = 2.1)] Gst.IteratorFoldFunction func, GLib.Value ret);
                public Gst.IteratorResult @foreach (Gst.IteratorForeachFunction func);
                public void free ();
@@ -1096,7 +1268,8 @@ namespace Gst {
                public Gst.Memory copy (ssize_t offset, ssize_t size);
                public size_t get_sizes (size_t offset, size_t maxsize);
                public bool is_span (Gst.Memory mem2, size_t offset);
-               public Gst.Memory make_mapped (out Gst.MapInfo info, Gst.MapFlags flags);
+               public bool is_type (string mem_type);
+               public Gst.Memory? make_mapped (out Gst.MapInfo info, Gst.MapFlags flags);
                public bool map (out Gst.MapInfo info, Gst.MapFlags flags);
                public void resize (ssize_t offset, size_t size);
                public Gst.Memory share (ssize_t offset, ssize_t size);
@@ -1124,7 +1297,11 @@ namespace Gst {
                [CCode (has_construct_function = false)]
                public Message.clock_provide (Gst.Object src, Gst.Clock clock, bool ready);
                [CCode (has_construct_function = false)]
-               public Message.custom (Gst.MessageType type, Gst.Object src, owned Gst.Structure structure);
+               public Message.custom (Gst.MessageType type, Gst.Object src, owned Gst.Structure? structure);
+               [CCode (has_construct_function = false)]
+               public Message.device_added (Gst.Object src, Gst.Device device);
+               [CCode (has_construct_function = false)]
+               public Message.device_removed (Gst.Object src, Gst.Device device);
                [CCode (has_construct_function = false)]
                public Message.duration_changed (Gst.Object src);
                [CCode (has_construct_function = false)]
@@ -1138,17 +1315,26 @@ namespace Gst {
                public unowned Gst.Structure get_structure ();
                public bool has_name (string name);
                [CCode (has_construct_function = false)]
+               public Message.have_context (Gst.Object src, owned Gst.Context context);
+               [CCode (has_construct_function = false)]
                public Message.info (Gst.Object src, GLib.Error error, string debug);
                [CCode (has_construct_function = false)]
                public Message.latency (Gst.Object src);
                [CCode (has_construct_function = false)]
+               public Message.need_context (Gst.Object src, string context_type);
+               [CCode (has_construct_function = false)]
                public Message.new_clock (Gst.Object src, Gst.Clock clock);
                public void parse_async_done (out Gst.ClockTime running_time);
                public void parse_buffering (out int percent);
                public void parse_buffering_stats (out Gst.BufferingMode mode, out int avg_in, out int avg_out, out int64 buffering_left);
                public void parse_clock_lost (out unowned Gst.Clock clock);
                public void parse_clock_provide (out unowned Gst.Clock clock, out bool ready);
+               public bool parse_context_type (out string context_type);
+               public void parse_device_added (out unowned Gst.Device device);
+               public void parse_device_removed (out unowned Gst.Device device);
                public void parse_error (out GLib.Error gerror, out string debug);
+               public bool parse_group_id (out uint group_id);
+               public void parse_have_context (out Gst.Context context);
                public void parse_info (out GLib.Error gerror, out string debug);
                public void parse_new_clock (out unowned Gst.Clock clock);
                public void parse_progress (out Gst.ProgressType type, out string code, out string text);
@@ -1180,6 +1366,7 @@ namespace Gst {
                [CCode (has_construct_function = false)]
                public Message.segment_start (Gst.Object src, Gst.Format format, int64 position);
                public void set_buffering_stats (Gst.BufferingMode mode, int avg_in, int avg_out, int64 buffering_left);
+               public void set_group_id (uint group_id);
                public void set_qos_stats (Gst.Format format, uint64 processed, uint64 dropped);
                public void set_qos_values (int64 jitter, double proportion, int quality);
                public void set_seqnum (uint32 seqnum);
@@ -1219,13 +1406,16 @@ namespace Gst {
                public bool is_writable ();
                public bool @lock (Gst.LockFlags flags);
                public Gst.MiniObject make_writable ();
-               public static bool replace (ref Gst.MiniObject olddata, Gst.MiniObject newdata);
+               public Gst.MiniObject @ref ();
+               public static bool replace (ref Gst.MiniObject? olddata, Gst.MiniObject? newdata);
                [CCode (simple_generics = true)]
                public void set_qdata<T> (GLib.Quark quark, owned T data);
                public void* steal_qdata (GLib.Quark quark);
                public static bool take (ref Gst.MiniObject olddata, Gst.MiniObject newdata);
                public void unlock (Gst.LockFlags flags);
                public void unref ();
+               public void weak_ref (Gst.MiniObjectNotify notify);
+               public void weak_unref (Gst.MiniObjectNotify notify);
        }
        [CCode (cheader_filename = "gst/gst.h", type_id = "gst_object_get_type ()")]
        public abstract class Object : GLib.InitiallyUnowned {
@@ -1237,11 +1427,11 @@ namespace Gst {
                public static bool check_uniqueness (GLib.List<Gst.Object> list, string name);
                public static void default_deep_notify (GLib.Object object, Gst.Object orig, GLib.ParamSpec pspec, [CCode (array_length = false, array_null_terminated = true)] string[]? excluded_props);
                public void default_error (GLib.Error error, string? debug);
-               public Gst.ControlBinding get_control_binding (string property_name);
+               public Gst.ControlBinding? get_control_binding (string property_name);
                public Gst.ClockTime get_control_rate ();
                public bool get_g_value_array (string property_name, Gst.ClockTime timestamp, Gst.ClockTime interval, uint n_values, GLib.Value values);
-               public string get_name ();
-               public Gst.Object get_parent ();
+               public string? get_name ();
+               public Gst.Object? get_parent ();
                public string get_path_string ();
                public GLib.Value? get_value (string property_name, Gst.ClockTime timestamp);
                public bool get_value_array (string property_name, Gst.ClockTime timestamp, Gst.ClockTime interval, uint n_values, void* values);
@@ -1249,11 +1439,11 @@ namespace Gst {
                public bool has_ancestor (Gst.Object ancestor);
                public Gst.Object @ref ();
                public bool remove_control_binding (Gst.ControlBinding binding);
-               public static bool replace (ref Gst.Object oldobj, Gst.Object newobj);
+               public static bool replace (ref Gst.Object? oldobj, Gst.Object? newobj);
                public void set_control_binding_disabled (string property_name, bool disabled);
                public void set_control_bindings_disabled (bool disabled);
                public void set_control_rate (Gst.ClockTime control_rate);
-               public bool set_name (string name);
+               public bool set_name (string? name);
                public bool set_parent (Gst.Object parent);
                public Gst.ClockTime suggest_next_sync ();
                public bool sync_values (Gst.ClockTime timestamp);
@@ -1270,7 +1460,7 @@ namespace Gst {
                public void* element_private;
                public weak Gst.PadTemplate padtemplate;
                [CCode (has_construct_function = false, returns_floating_reference = true)]
-               public Pad (string name, Gst.PadDirection direction);
+               public Pad (string? name, Gst.PadDirection direction);
                public bool activate_mode (Gst.PadMode mode, bool active);
                public ulong add_probe (Gst.PadProbeType mask, owned Gst.PadProbeCallback callback);
                public bool can_link (Gst.Pad sinkpad);
@@ -1278,32 +1468,38 @@ namespace Gst {
                public Gst.FlowReturn chain_list (owned Gst.BufferList list);
                public bool check_reconfigure ();
                public string create_stream_id (Gst.Element parent, string? stream_id);
+               [PrintfFormat]
+               public string create_stream_id_printf (Gst.Element parent, string? stream_id, ...);
+               public string create_stream_id_printf_valist (Gst.Element parent, string? stream_id, va_list var_args);
                public bool event_default (Gst.Object? parent, owned Gst.Event event);
                public bool forward (Gst.PadForwardFunction forward);
                [CCode (has_construct_function = false)]
                public Pad.from_static_template (Gst.StaticPadTemplate templ, string name);
-               [CCode (has_construct_function = false)]
-               public Pad.from_template (Gst.PadTemplate templ, string name);
-               public Gst.Caps get_allowed_caps ();
+               [CCode (has_construct_function = false, returns_floating_reference = true)]
+               public Pad.from_template (Gst.PadTemplate templ, string? name);
+               public Gst.Caps? get_allowed_caps ();
                public Gst.Caps get_current_caps ();
                public Gst.PadDirection get_direction ();
                public void* get_element_private ();
+               public Gst.FlowReturn get_last_flow_return ();
                public int64 get_offset ();
-               public Gst.PadTemplate get_pad_template ();
+               public Gst.PadTemplate? get_pad_template ();
                public Gst.Caps get_pad_template_caps ();
-               public Gst.Element get_parent_element ();
+               public Gst.Element? get_parent_element ();
                public Gst.Pad get_peer ();
                public Gst.FlowReturn get_range (uint64 offset, uint size, out Gst.Buffer buffer);
-               public Gst.Event get_sticky_event (Gst.EventType event_type, uint idx);
+               public Gst.Event? get_sticky_event (Gst.EventType event_type, uint idx);
+               public string? get_stream_id ();
                public bool has_current_caps ();
                public bool is_active ();
                public bool is_blocked ();
                public bool is_blocking ();
                public bool is_linked ();
-               public Gst.Iterator iterate_internal_links ();
-               public Gst.Iterator iterate_internal_links_default (Gst.Object? parent);
+               public Gst.Iterator? iterate_internal_links ();
+               public Gst.Iterator? iterate_internal_links_default (Gst.Object? parent);
                [CCode (cname = "gst_pad_link_full")]
                public Gst.PadLinkReturn link (Gst.Pad sinkpad, Gst.PadLinkCheck flags = Gst.PadLinkCheck.DEFAULT);
+               public static unowned string link_get_name (Gst.PadLinkReturn ret);
                public void mark_reconfigure ();
                public bool needs_reconfigure ();
                public bool pause_task ();
@@ -1354,6 +1550,7 @@ namespace Gst {
                public bool start_task (owned Gst.TaskFunction func);
                public void sticky_events_foreach (Gst.PadStickyEventsForeachFunction foreach_func);
                public bool stop_task ();
+               public Gst.FlowReturn store_sticky_event (Gst.Event event);
                public bool unlink (Gst.Pad sinkpad);
                public void use_fixed_caps ();
                [NoAccessorMethod]
@@ -1417,14 +1614,14 @@ namespace Gst {
                protected Plugin ();
                public void add_dependency (string? env_vars, string? paths, string? names, Gst.PluginDependencyFlags flags);
                public void add_dependency_simple (string? env_vars, string? paths, string? names, Gst.PluginDependencyFlags flags);
-               public unowned Gst.Structure get_cache_data ();
+               public unowned Gst.Structure? get_cache_data ();
                public unowned string get_description ();
                public unowned string get_filename ();
                public unowned string get_license ();
                public unowned string get_name ();
                public unowned string get_origin ();
                public unowned string get_package ();
-               public unowned string get_release_date_string ();
+               public unowned string? get_release_date_string ();
                public unowned string get_source ();
                public unowned string get_version ();
                public bool is_loaded ();
@@ -1441,18 +1638,21 @@ namespace Gst {
                [CCode (has_construct_function = false)]
                protected PluginFeature ();
                public bool check_version (uint min_major, uint min_minor, uint min_micro);
-               public Gst.Plugin get_plugin ();
+               public Gst.Plugin? get_plugin ();
+               public unowned string? get_plugin_name ();
                public uint get_rank ();
                public static GLib.List<Gst.PluginFeature> list_copy (GLib.List<Gst.PluginFeature> list);
                public static void list_debug (GLib.List<Gst.PluginFeature> list);
                public static void list_free (owned GLib.List<Gst.PluginFeature> list);
-               public Gst.PluginFeature load ();
+               public Gst.PluginFeature? load ();
                public static int rank_compare_func (void* p1, void* p2);
                public void set_rank (uint rank);
        }
        [CCode (cheader_filename = "gst/gst.h")]
        [Compact]
        public class Poll {
+               [CCode (has_construct_function = false)]
+               public Poll (bool controllable);
                public bool add_fd (Gst.PollFD fd);
                public bool fd_can_read (Gst.PollFD fd);
                public bool fd_can_write (Gst.PollFD fd);
@@ -1468,6 +1668,8 @@ namespace Gst {
                public void restart ();
                public bool set_controllable (bool controllable);
                public void set_flushing (bool flushing);
+               [CCode (has_construct_function = false)]
+               public Poll.timer ();
                public int wait (Gst.ClockTime timeout);
                public bool write_control ();
        }
@@ -1477,9 +1679,9 @@ namespace Gst {
                protected ProxyPad ();
                public static Gst.FlowReturn chain_default (Gst.Pad pad, Gst.Object? parent, owned Gst.Buffer buffer);
                public static Gst.FlowReturn chain_list_default (Gst.Pad pad, Gst.Object? parent, owned Gst.BufferList list);
-               public Gst.ProxyPad get_internal ();
+               public Gst.ProxyPad? get_internal ();
                public static Gst.FlowReturn getrange_default (Gst.Pad pad, Gst.Object parent, uint64 offset, uint size, out Gst.Buffer buffer);
-               public static Gst.Iterator iterate_internal_links_default (Gst.Pad pad, Gst.Object? parent);
+               public static Gst.Iterator? iterate_internal_links_default (Gst.Pad pad, Gst.Object? parent);
        }
        [CCode (cheader_filename = "gst/gst.h", ref_function = "gst_query_ref", type_id = "gst_query_get_type ()", unref_function = "gst_query_unref")]
        [Compact]
@@ -1489,7 +1691,7 @@ namespace Gst {
                public Query.accept_caps (Gst.Caps caps);
                public void add_allocation_meta (GLib.Type api, Gst.Structure? @params);
                public void add_allocation_param (Gst.Allocator? allocator, Gst.AllocationParams? @params);
-               public void add_allocation_pool (Gst.BufferPool pool, uint size, uint min_buffers, uint max_buffers);
+               public void add_allocation_pool (Gst.BufferPool? pool, uint size, uint min_buffers, uint max_buffers);
                public bool add_buffering_range (int64 start, int64 stop);
                public void add_scheduling_mode (Gst.PadMode mode);
                [CCode (has_construct_function = false)]
@@ -1499,9 +1701,11 @@ namespace Gst {
                [CCode (has_construct_function = false)]
                public Query.caps (Gst.Caps filter);
                [CCode (has_construct_function = false)]
+               public Query.context (string context_type);
+               [CCode (has_construct_function = false)]
                public Query.convert (Gst.Format src_format, int64 value, Gst.Format dest_format);
                [CCode (has_construct_function = false)]
-               public Query.custom (Gst.QueryType type, Gst.Structure structure);
+               public Query.custom (Gst.QueryType type, owned Gst.Structure? structure);
                [CCode (has_construct_function = false)]
                public Query.drain ();
                [CCode (has_construct_function = false)]
@@ -1527,6 +1731,8 @@ namespace Gst {
                public void parse_buffering_stats (out Gst.BufferingMode mode, out int avg_in, out int avg_out, out int64 buffering_left);
                public void parse_caps (out unowned Gst.Caps filter);
                public void parse_caps_result (out unowned Gst.Caps caps);
+               public void parse_context (out unowned Gst.Context context);
+               public bool parse_context_type (out unowned string context_type);
                public void parse_convert (out Gst.Format src_format, out int64 src_value, out Gst.Format dest_format, out int64 dest_value);
                public void parse_duration (out Gst.Format format, out int64 duration);
                public void parse_latency (out bool live, out Gst.ClockTime min_latency, out Gst.ClockTime max_latency);
@@ -1542,9 +1748,13 @@ namespace Gst {
                public void parse_seeking (out Gst.Format format, out bool seekable, out int64 segment_start, out int64 segment_end);
                public void parse_segment (out double rate, out Gst.Format format, out int64 start_value, out int64 stop_value);
                public void parse_uri (out string uri);
+               public void parse_uri_redirection (out string uri);
+               public void parse_uri_redirection_permanent (out bool permanent);
                [CCode (has_construct_function = false)]
                public Query.position (Gst.Format format);
                public void remove_nth_allocation_meta (uint index);
+               public void remove_nth_allocation_param (uint index);
+               public void remove_nth_allocation_pool (uint index);
                [CCode (has_construct_function = false)]
                public Query.scheduling ();
                [CCode (has_construct_function = false)]
@@ -1556,17 +1766,22 @@ namespace Gst {
                public void set_buffering_range (Gst.Format format, int64 start, int64 stop, int64 estimated_total);
                public void set_buffering_stats (Gst.BufferingMode mode, int avg_in, int avg_out, int64 buffering_left);
                public void set_caps_result (Gst.Caps caps);
+               public void set_context (Gst.Context context);
                public void set_convert (Gst.Format src_format, int64 src_value, Gst.Format dest_format, int64 dest_value);
                public void set_duration (Gst.Format format, int64 duration);
+               [CCode (sentinel = "")]
+               public void set_formats (int n_formats, params Gst.Format[] formats);
                public void set_formatsv ([CCode (array_length_cname = "n_formats", array_length_pos = 0.5)] Gst.Format[] formats);
                public void set_latency (bool live, Gst.ClockTime min_latency, Gst.ClockTime max_latency);
                public void set_nth_allocation_param (uint index, Gst.Allocator? allocator, Gst.AllocationParams? @params);
-               public void set_nth_allocation_pool (uint index, Gst.BufferPool pool, uint size, uint min_buffers, uint max_buffers);
+               public void set_nth_allocation_pool (uint index, Gst.BufferPool? pool, uint size, uint min_buffers, uint max_buffers);
                public void set_position (Gst.Format format, int64 cur);
                public void set_scheduling (Gst.SchedulingFlags flags, int minsize, int maxsize, int align);
                public void set_seeking (Gst.Format format, bool seekable, int64 segment_start, int64 segment_end);
                public void set_segment (double rate, Gst.Format format, int64 start_value, int64 stop_value);
                public void set_uri (string uri);
+               public void set_uri_redirection (string uri);
+               public void set_uri_redirection_permanent (bool permanent);
                [CCode (has_construct_function = false)]
                public Query.uri ();
                public unowned Gst.Structure writable_structure ();
@@ -1579,8 +1794,8 @@ namespace Gst {
                public bool add_plugin (owned Gst.Plugin plugin);
                public bool check_feature_version (string feature_name, uint min_major, uint min_minor, uint min_micro);
                public GLib.List<Gst.PluginFeature> feature_filter ([CCode (delegate_target_pos = 2.1)] Gst.PluginFeatureFilter filter, bool first);
-               public Gst.PluginFeature find_feature (string name, GLib.Type type);
-               public Gst.Plugin find_plugin (string name);
+               public Gst.PluginFeature? find_feature (string name, GLib.Type type);
+               public Gst.Plugin? find_plugin (string name);
                public static bool fork_is_enabled ();
                public static void fork_set_enabled (bool enabled);
                public static unowned Gst.Registry @get ();
@@ -1588,7 +1803,7 @@ namespace Gst {
                public GLib.List<Gst.PluginFeature> get_feature_list_by_plugin (string name);
                public uint32 get_feature_list_cookie ();
                public GLib.List<Gst.Plugin> get_plugin_list ();
-               public Gst.Plugin lookup (string filename);
+               public Gst.Plugin? lookup (string filename);
                public Gst.PluginFeature lookup_feature (string name);
                public GLib.List<Gst.Plugin> plugin_filter ([CCode (delegate_target_pos = 2.1)] Gst.PluginFilter filter, bool first);
                public void remove_feature (Gst.PluginFeature feature);
@@ -1602,8 +1817,8 @@ namespace Gst {
        public class Sample : Gst.MiniObject {
                [CCode (has_construct_function = false)]
                public Sample (Gst.Buffer? buffer, Gst.Caps? caps, Gst.Segment? segment, owned Gst.Structure? info);
-               public unowned Gst.Buffer get_buffer ();
-               public unowned Gst.Caps get_caps ();
+               public unowned Gst.Buffer? get_buffer ();
+               public unowned Gst.Caps? get_caps ();
                public unowned Gst.Structure get_info ();
                public unowned Gst.Segment get_segment ();
        }
@@ -1629,6 +1844,7 @@ namespace Gst {
                public bool do_seek (double rate, Gst.Format format, Gst.SeekFlags flags, Gst.SeekType start_type, uint64 start, Gst.SeekType stop_type, uint64 stop, bool update);
                public void free ();
                public void init (Gst.Format format);
+               public bool offset_running_time (Gst.Format format, int64 offset);
                public bool set_running_time (Gst.Format format, uint64 running_time);
                public uint64 to_position (Gst.Format format, uint64 running_time);
                public uint64 to_running_time (Gst.Format format, uint64 position);
@@ -1638,6 +1854,8 @@ namespace Gst {
        [Compact]
        public class Structure {
                public GLib.Type type;
+               [CCode (has_construct_function = false)]
+               public Structure (string name, string firstfield, ...);
                public bool can_intersect (Gst.Structure struct2);
                public Gst.Structure copy ();
                [CCode (has_construct_function = false)]
@@ -1651,7 +1869,8 @@ namespace Gst {
                public bool fixate_field_string (string field_name, string target);
                public bool @foreach (Gst.StructureForeachFunc func);
                public void free ();
-               public static Gst.Structure from_string (string string, out unowned string end);
+               public static Gst.Structure? from_string (string string, out unowned string end);
+               public bool @get (...);
                public bool get_boolean (string fieldname, out bool value);
                public bool get_clock_time (string fieldname, out Gst.ClockTime value);
                public bool get_date (string fieldname, out GLib.Date value);
@@ -1661,19 +1880,26 @@ namespace Gst {
                public GLib.Type get_field_type (string fieldname);
                public bool get_fraction (string fieldname, out int value_numerator, out int value_denominator);
                public bool get_int (string fieldname, out int value);
+               public bool get_int64 (string fieldname, out int64 value);
                public unowned string get_name ();
                public GLib.Quark get_name_id ();
-               public unowned string get_string (string fieldname);
+               public unowned string? get_string (string fieldname);
                public bool get_uint (string fieldname, out uint value);
+               public bool get_uint64 (string fieldname, out uint64 value);
+               public bool get_valist (string first_fieldname, va_list args);
                public unowned GLib.Value? get_value (string fieldname);
                public bool has_field (string fieldname);
                public bool has_field_typed (string fieldname, GLib.Type type);
                public bool has_name (string name);
                [CCode (has_construct_function = false)]
                public Structure.id_empty (GLib.Quark quark);
+               public bool id_get (...);
+               public bool id_get_valist (GLib.Quark first_field_id, va_list args);
                public unowned GLib.Value? id_get_value (GLib.Quark field);
                public bool id_has_field (GLib.Quark field);
                public bool id_has_field_typed (GLib.Quark field, GLib.Type type);
+               public void id_set (GLib.Quark fieldname, ...);
+               public void id_set_valist (GLib.Quark fieldname, va_list varargs);
                public void id_set_value (GLib.Quark field, GLib.Value value);
                public void id_take_value (GLib.Quark field, owned GLib.Value value);
                public Gst.Structure intersect (Gst.Structure struct2);
@@ -1684,24 +1910,35 @@ namespace Gst {
                public unowned string nth_field_name (uint index);
                public void remove_all_fields ();
                public void remove_field (string fieldname);
+               public void remove_fields (params string[] field_names);
+               public void remove_fields_valist (string fieldname, va_list varargs);
+               public void @set (string fieldname, ...);
                public void set_name (string name);
                public bool set_parent_refcount (int refcount);
+               public void set_valist (string fieldname, va_list varargs);
                public void set_value (string fieldname, GLib.Value value);
                public void take_value (string fieldname, owned GLib.Value value);
                public string to_string ();
+               [CCode (has_construct_function = false)]
+               public Structure.valist (string name, string firstfield, va_list varargs);
        }
        [CCode (cheader_filename = "gst/gst.h", type_id = "gst_system_clock_get_type ()")]
        public class SystemClock : Gst.Clock {
                [CCode (has_construct_function = false)]
                protected SystemClock ();
                public static Gst.Clock obtain ();
+               public static void set_default (Gst.Clock new_clock);
                [NoAccessorMethod]
                public Gst.ClockType clock_type { get; set; }
        }
        [CCode (cheader_filename = "gst/gst.h", ref_function = "gst_tag_list_ref", type_id = "gst_tag_list_get_type ()", unref_function = "gst_tag_list_unref")]
        [Compact]
        public class TagList : Gst.MiniObject {
+               public void add (Gst.TagMergeMode mode, string tag, ...);
+               public void add_valist (Gst.TagMergeMode mode, string tag, va_list var_args);
+               public void add_valist_values (Gst.TagMergeMode mode, string tag, va_list var_args);
                public void add_value (Gst.TagMergeMode mode, string tag, GLib.Value value);
+               public void add_values (Gst.TagMergeMode mode, string tag, ...);
                [CCode (has_construct_function = false)]
                public TagList.empty ();
                public void @foreach (Gst.TagForeachFunc func);
@@ -1737,13 +1974,15 @@ namespace Gst {
                public void insert (Gst.TagList from, Gst.TagMergeMode mode);
                public bool is_empty ();
                public bool is_equal (Gst.TagList list2);
-               public Gst.TagList merge (Gst.TagList list2, Gst.TagMergeMode mode);
+               public Gst.TagList? merge (Gst.TagList? list2, Gst.TagMergeMode mode);
                public int n_tags ();
                public unowned string nth_tag_name (uint index);
                public bool peek_string_index (string tag, uint index, out unowned string value);
                public void remove_tag (string tag);
                public void set_scope (Gst.TagScope scope);
-               public string to_string ();
+               public string? to_string ();
+               [CCode (has_construct_function = false)]
+               public TagList.valist (va_list var_args);
        }
        [CCode (cheader_filename = "gst/gst.h", type_id = "gst_task_get_type ()")]
        public class Task : Gst.Object {
@@ -1785,7 +2024,7 @@ namespace Gst {
                public Toc (Gst.TocScope scope);
                public void append_entry (owned Gst.TocEntry entry);
                public void dump ();
-               public unowned Gst.TocEntry find_entry (string uid);
+               public unowned Gst.TocEntry? find_entry (string uid);
                public unowned GLib.List<Gst.TocEntry> get_entries ();
                public Gst.TocScope get_scope ();
                public unowned Gst.TagList get_tags ();
@@ -1799,6 +2038,7 @@ namespace Gst {
                public TocEntry (Gst.TocEntryType type, string uid);
                public void append_sub_entry (owned Gst.TocEntry subentry);
                public Gst.TocEntryType get_entry_type ();
+               public bool get_loop (out Gst.TocLoopType loop_type, out int repeat_count);
                public unowned Gst.TocEntry get_parent ();
                public bool get_start_stop_times (out int64 start, out int64 stop);
                public unowned GLib.List<Gst.TocEntry> get_sub_entries ();
@@ -1808,6 +2048,7 @@ namespace Gst {
                public bool is_alternative ();
                public bool is_sequence ();
                public void merge_tags (Gst.TagList? tags, Gst.TagMergeMode mode);
+               public void set_loop (Gst.TocLoopType loop_type, int repeat_count);
                public void set_start_stop_times (int64 start, int64 stop);
                public void set_tags (owned Gst.TagList? tags);
        }
@@ -1818,7 +2059,7 @@ namespace Gst {
                public void call_function (Gst.TypeFind find);
                public unowned Gst.Caps get_caps ();
                [CCode (array_length = false, array_null_terminated = true)]
-               public unowned string[] get_extensions ();
+               public unowned string[]? get_extensions ();
                public static GLib.List<Gst.TypeFindFactory> get_list ();
                public bool has_function ();
        }
@@ -1826,6 +2067,7 @@ namespace Gst {
        public class ValueArray {
                [CCode (has_construct_function = false)]
                protected ValueArray ();
+               public static void append_and_take_value (GLib.Value value, owned GLib.Value append_value);
                public static void append_value (GLib.Value value, GLib.Value append_value);
                public static uint get_size (GLib.Value value);
                public static unowned GLib.Value? get_value (GLib.Value value, uint index);
@@ -1835,6 +2077,7 @@ namespace Gst {
        public class ValueList {
                [CCode (has_construct_function = false)]
                protected ValueList ();
+               public static void append_and_take_value (GLib.Value value, owned GLib.Value append_value);
                public static void append_value (GLib.Value value, GLib.Value append_value);
                public static void concat (out GLib.Value dest, GLib.Value value1, GLib.Value value2);
                public static uint get_size (GLib.Value value);
@@ -1844,12 +2087,16 @@ namespace Gst {
        }
        [CCode (cheader_filename = "gst/gst.h", type_cname = "GstChildProxyInterface", type_id = "gst_child_proxy_get_type ()")]
        public interface ChildProxy : GLib.Object {
-               public abstract GLib.Object get_child_by_index (uint index);
-               public abstract GLib.Object get_child_by_name (string name);
+               public void @get (...);
+               public abstract GLib.Object? get_child_by_index (uint index);
+               public abstract GLib.Object? get_child_by_name (string name);
                public abstract uint get_children_count ();
                public GLib.Value get_property (string name);
+               public void get_valist (string first_property_name, va_list var_args);
                public bool lookup (string name, out GLib.Object target, out unowned GLib.ParamSpec pspec);
+               public void @set (...);
                public void set_property (string name, GLib.Value value);
+               public void set_valist (string first_property_name, va_list var_args);
                [HasEmitter]
                public virtual signal void child_added (GLib.Object child, string name);
                [HasEmitter]
@@ -1858,7 +2105,7 @@ namespace Gst {
        [CCode (cheader_filename = "gst/gst.h", type_cname = "GstPresetInterface", type_id = "gst_preset_get_type ()")]
        public interface Preset : GLib.Object {
                public abstract bool delete_preset (string name);
-               public static unowned string get_app_dir ();
+               public static unowned string? get_app_dir ();
                public abstract bool get_meta (string name, string tag, out string value);
                [CCode (array_length = false, array_null_terminated = true)]
                public abstract string[] get_preset_names ();
@@ -1868,12 +2115,16 @@ namespace Gst {
                public abstract bool rename_preset (string old_name, string new_name);
                public abstract bool save_preset (string name);
                public static bool set_app_dir (string app_dir);
-               public abstract bool set_meta (string name, string tag, string value);
+               public abstract bool set_meta (string name, string tag, string? value);
        }
        [CCode (cheader_filename = "gst/gst.h", type_cname = "GstTagSetterInterface", type_id = "gst_tag_setter_get_type ()")]
        public interface TagSetter : Gst.Element {
+               public void add_tag_valist (Gst.TagMergeMode mode, string tag, va_list var_args);
+               public void add_tag_valist_values (Gst.TagMergeMode mode, string tag, va_list var_args);
                public void add_tag_value (Gst.TagMergeMode mode, string tag, GLib.Value value);
-               public unowned Gst.TagList get_tag_list ();
+               public void add_tag_values (Gst.TagMergeMode mode, string tag, ...);
+               public void add_tags (Gst.TagMergeMode mode, string tag, ...);
+               public unowned Gst.TagList? get_tag_list ();
                public Gst.TagMergeMode get_tag_merge_mode ();
                public void merge_tags (Gst.TagList list, Gst.TagMergeMode mode);
                public void reset_tags ();
@@ -1881,15 +2132,15 @@ namespace Gst {
        }
        [CCode (cheader_filename = "gst/gst.h", type_cname = "GstTocSetterInterface", type_id = "gst_toc_setter_get_type ()")]
        public interface TocSetter : Gst.Element {
-               public Gst.Toc get_toc ();
+               public Gst.Toc? get_toc ();
                public void reset ();
                public void set_toc (Gst.Toc? toc);
        }
        [CCode (cheader_filename = "gst/gst.h", type_cname = "GstURIHandlerInterface", type_id = "gst_uri_handler_get_type ()")]
        public interface URIHandler : GLib.Object {
                [CCode (array_length = false, array_null_terminated = true)]
-               public unowned string[] get_protocols ();
-               public abstract string get_uri ();
+               public unowned string[]? get_protocols ();
+               public abstract string? get_uri ();
                public Gst.URIType get_uri_type ();
                public abstract bool set_uri (string uri) throws GLib.Error;
        }
@@ -1951,7 +2202,7 @@ namespace Gst {
        public struct MapInfo {
                public weak Gst.Memory memory;
                public Gst.MapFlags flags;
-               [CCode (array_length_cname = "size", array_length_type = "gsize")]
+               [CCode (array_length = false, array_null_terminated = true)]
                public weak uint8[] data;
                public size_t size;
                public size_t maxsize;
@@ -1962,6 +2213,8 @@ namespace Gst {
        public struct Meta {
                public Gst.MetaFlags flags;
                public Gst.MetaInfo info;
+               [CCode (array_length = false, array_null_terminated = true)]
+               public static unowned string[] api_type_get_tags (GLib.Type api);
                public static bool api_type_has_tag (GLib.Type api, GLib.Quark tag);
                public static GLib.Type api_type_register (string api, string tags);
                public static unowned Gst.MetaInfo? get_info (string impl);
@@ -2051,9 +2304,10 @@ namespace Gst {
                public void* data;
                public static GLib.Type get_type ();
                [CCode (array_length_pos = 1.1, array_length_type = "guint")]
-               public unowned uint8[] peek (int64 offset);
+               public unowned uint8[]? peek (int64 offset);
                public static bool register (Gst.Plugin? plugin, string name, uint rank, [CCode (delegate_target_pos = 6.1, destroy_notify_pos = 6.2)] owned Gst.TypeFindFunction func, string? extensions, Gst.Caps possible_caps);
                public void suggest (uint probability, Gst.Caps caps);
+               public void suggest_simple (uint probability, string media_type, string? fieldname, ...);
        }
        [CCode (cheader_filename = "gst/gst.h", has_type_id = false)]
        public struct ValueTable {
@@ -2082,7 +2336,8 @@ namespace Gst {
                TIMESTAMPS,
                META,
                MEMORY,
-               MERGE
+               MERGE,
+               DEEP
        }
        [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_BUFFER_FLAG_", type_id = "gst_buffer_flags_get_type ()")]
        [Flags]
@@ -2097,6 +2352,7 @@ namespace Gst {
                GAP,
                DROPPABLE,
                DELTA_UNIT,
+               TAG_MEMORY,
                LAST
        }
        [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_BUFFER_POOL_ACQUIRE_FLAG_", type_id = "gst_buffer_pool_acquire_flags_get_type ()")]
@@ -2191,6 +2447,12 @@ namespace Gst {
                BOLD,
                UNDERLINE
        }
+       [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_DEBUG_COLOR_MODE_", type_id = "gst_debug_color_mode_get_type ()")]
+       public enum DebugColorMode {
+               OFF,
+               ON,
+               UNIX
+       }
        [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_DEBUG_GRAPH_SHOW_", type_id = "gst_debug_graph_details_get_type ()")]
        [Flags]
        public enum DebugGraphDetails {
@@ -2265,9 +2527,8 @@ namespace Gst {
                STICKY,
                STICKY_MULTI
        }
-       [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_FLOW_")]
+       [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_FLOW_", type_id = "gst_flow_return_get_type ()")]
        public enum FlowReturn {
-               CUSTOM_ERROR_2,
                CUSTOM_SUCCESS_2,
                CUSTOM_SUCCESS_1,
                CUSTOM_SUCCESS,
@@ -2279,8 +2540,9 @@ namespace Gst {
                ERROR,
                NOT_SUPPORTED,
                CUSTOM_ERROR,
-               CUSTOM_ERROR_1;
-               [CCode (cname = "gst_flow_get_name")]
+               CUSTOM_ERROR_1,
+               CUSTOM_ERROR_2;
+               [CCode (cname = "gst_flow_get_name", instance_pos = 0.5)]
                public unowned string get_name ();
        }
        [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_FORMAT_", type_id = "gst_format_get_type ()")]
@@ -2295,7 +2557,7 @@ namespace Gst {
                public static bool contains ([CCode (array_length = false, array_null_terminated = true)] Gst.Format[] formats, Gst.Format format);
                public static Gst.Format get_by_nick (string nick);
                public static unowned Gst.FormatDefinition? get_details (Gst.Format format);
-               public static unowned string get_name (Gst.Format format);
+               public static unowned string? get_name (Gst.Format format);
                public static Gst.Iterator iterate_definitions ();
                public static Gst.Format register (string nick, string description);
                public static GLib.Quark to_quark (Gst.Format format);
@@ -2335,6 +2597,8 @@ namespace Gst {
                NO_SHARE,
                ZERO_PREFIXED,
                ZERO_PADDED,
+               PHYSICALLY_CONTIGUOUS,
+               NOT_MAPPABLE,
                LAST
        }
        [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_MESSAGE_", type_id = "gst_message_type_get_type ()")]
@@ -2370,6 +2634,11 @@ namespace Gst {
                TOC,
                RESET_TIME,
                STREAM_START,
+               NEED_CONTEXT,
+               HAVE_CONTEXT,
+               EXTENDED,
+               DEVICE_ADDED,
+               DEVICE_REMOVED,
                ANY;
                public static unowned string get_name (Gst.MessageType type);
                public static GLib.Quark to_quark (Gst.MessageType type);
@@ -2415,6 +2684,7 @@ namespace Gst {
                PROXY_CAPS,
                PROXY_ALLOCATION,
                PROXY_SCHEDULING,
+               ACCEPT_INTERSECT,
                LAST
        }
        [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_PAD_LINK_CHECK_", type_id = "gst_pad_link_check_get_type ()")]
@@ -2491,7 +2761,8 @@ namespace Gst {
        [Flags]
        public enum ParseFlags {
                NONE,
-               FATAL_ERRORS
+               FATAL_ERRORS,
+               NO_SINGLE_ELEMENT_BINS
        }
        [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_PIPELINE_FLAG_", type_id = "gst_pipeline_flags_get_type ()")]
        [Flags]
@@ -2546,7 +2817,8 @@ namespace Gst {
                SCHEDULING,
                ACCEPT_CAPS,
                CAPS,
-               DRAIN;
+               DRAIN,
+               CONTEXT;
                public static Gst.QueryTypeFlags get_flags (Gst.QueryType type);
                public static unowned string get_name (Gst.QueryType type);
                public static GLib.Quark to_quark (Gst.QueryType type);
@@ -2569,7 +2841,8 @@ namespace Gst {
        [Flags]
        public enum SchedulingFlags {
                SEEKABLE,
-               SEQUENTIAL
+               SEQUENTIAL,
+               BANDWIDTH_LIMITED
        }
        [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_SEARCH_MODE_", type_id = "gst_search_mode_get_type ()")]
        public enum SearchMode {
@@ -2628,6 +2901,14 @@ namespace Gst {
                ASYNC,
                NO_PREROLL
        }
+       [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_STREAM_FLAG_", type_id = "gst_stream_flags_get_type ()")]
+       [Flags]
+       public enum StreamFlags {
+               NONE,
+               SPARSE,
+               SELECT,
+               UNSELECT
+       }
        [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_STREAM_STATUS_TYPE_", type_id = "gst_stream_status_type_get_type ()")]
        public enum StreamStatusType {
                CREATE,
@@ -2684,6 +2965,13 @@ namespace Gst {
                CHAPTER;
                public static unowned string get_nick (Gst.TocEntryType type);
        }
+       [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_TOC_LOOP_", type_id = "gst_toc_loop_type_get_type ()")]
+       public enum TocLoopType {
+               NONE,
+               FORWARD,
+               REVERSE,
+               PING_PONG
+       }
        [CCode (cheader_filename = "gst/gst.h", cprefix = "GST_TOC_SCOPE_", type_id = "gst_toc_scope_get_type ()")]
        public enum TocScope {
                GLOBAL,
@@ -2768,6 +3056,7 @@ namespace Gst {
                SYNC,
                SETTINGS,
                NO_SPACE_LEFT,
+               NOT_AUTHORIZED,
                NUM_ERRORS;
                public static GLib.Quark quark ();
        }
@@ -2797,9 +3086,9 @@ namespace Gst {
                BAD_REFERENCE
        }
        [CCode (cheader_filename = "gst/gst.h", instance_pos = 2.9)]
-       public delegate bool BufferForeachMetaFunc (Gst.Buffer buffer, Gst.Meta meta);
+       public delegate bool BufferForeachMetaFunc (Gst.Buffer buffer, out Gst.Meta? meta);
        [CCode (cheader_filename = "gst/gst.h", instance_pos = 2.9)]
-       public delegate bool BufferListFunc (Gst.Buffer buffer, uint idx);
+       public delegate bool BufferListFunc (out Gst.Buffer? buffer, uint idx);
        [CCode (cheader_filename = "gst/gst.h", instance_pos = 2.9)]
        public delegate bool BusFunc (Gst.Bus bus, Gst.Message message);
        [CCode (cheader_filename = "gst/gst.h", instance_pos = 2.9)]
@@ -2855,27 +3144,27 @@ namespace Gst {
        [CCode (cheader_filename = "gst/gst.h", has_target = false)]
        public delegate bool PadActivateModeFunction (Gst.Pad pad, Gst.Object parent, Gst.PadMode mode, bool active);
        [CCode (cheader_filename = "gst/gst.h", has_target = false)]
-       public delegate Gst.FlowReturn PadChainFunction (Gst.Pad pad, Gst.Object parent, Gst.Buffer buffer);
+       public delegate Gst.FlowReturn PadChainFunction (Gst.Pad pad, Gst.Object? parent, Gst.Buffer buffer);
        [CCode (cheader_filename = "gst/gst.h", has_target = false)]
-       public delegate Gst.FlowReturn PadChainListFunction (Gst.Pad pad, Gst.Object parent, Gst.BufferList list);
+       public delegate Gst.FlowReturn PadChainListFunction (Gst.Pad pad, Gst.Object? parent, Gst.BufferList list);
        [CCode (cheader_filename = "gst/gst.h", has_target = false)]
-       public delegate bool PadEventFunction (Gst.Pad pad, Gst.Object parent, Gst.Event event);
+       public delegate bool PadEventFunction (Gst.Pad pad, Gst.Object? parent, Gst.Event event);
        [CCode (cheader_filename = "gst/gst.h", instance_pos = 1.9)]
        public delegate bool PadForwardFunction (Gst.Pad pad);
        [CCode (cheader_filename = "gst/gst.h", has_target = false)]
-       public delegate Gst.FlowReturn PadGetRangeFunction (Gst.Pad pad, Gst.Object parent, uint64 offset, uint length, Gst.Buffer buffer);
+       public delegate Gst.FlowReturn PadGetRangeFunction (Gst.Pad pad, Gst.Object? parent, uint64 offset, uint length, Gst.Buffer buffer);
        [CCode (cheader_filename = "gst/gst.h", has_target = false)]
-       public delegate Gst.Iterator PadIterIntLinkFunction (Gst.Pad pad, Gst.Object parent);
+       public delegate Gst.Iterator PadIterIntLinkFunction (Gst.Pad pad, Gst.Object? parent);
        [CCode (cheader_filename = "gst/gst.h", has_target = false)]
-       public delegate Gst.PadLinkReturn PadLinkFunction (Gst.Pad pad, Gst.Object parent, Gst.Pad peer);
+       public delegate Gst.PadLinkReturn PadLinkFunction (Gst.Pad pad, Gst.Object? parent, Gst.Pad peer);
        [CCode (cheader_filename = "gst/gst.h", instance_pos = 2.9)]
        public delegate Gst.PadProbeReturn PadProbeCallback (Gst.Pad pad, Gst.PadProbeInfo info);
        [CCode (cheader_filename = "gst/gst.h", has_target = false)]
-       public delegate bool PadQueryFunction (Gst.Pad pad, Gst.Object parent, Gst.Query query);
+       public delegate bool PadQueryFunction (Gst.Pad pad, Gst.Object? parent, Gst.Query query);
        [CCode (cheader_filename = "gst/gst.h", instance_pos = 2.9)]
-       public delegate bool PadStickyEventsForeachFunction (Gst.Pad pad, Gst.Event event);
+       public delegate bool PadStickyEventsForeachFunction (Gst.Pad pad, Gst.Event? event);
        [CCode (cheader_filename = "gst/gst.h", has_target = false)]
-       public delegate void PadUnlinkFunction (Gst.Pad pad, Gst.Object parent);
+       public delegate void PadUnlinkFunction (Gst.Pad pad, Gst.Object? parent);
        [CCode (cheader_filename = "gst/gst.h", instance_pos = 1.9)]
        public delegate bool PluginFeatureFilter (Gst.PluginFeature feature);
        [CCode (cheader_filename = "gst/gst.h", instance_pos = 1.9)]
@@ -2916,6 +3205,8 @@ namespace Gst {
        public const uint64 BUFFER_OFFSET_NONE;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_CAN_INLINE")]
        public const int CAN_INLINE;
+       [CCode (cheader_filename = "gst/gst.h", cname = "GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY")]
+       public const string CAPS_FEATURE_MEMORY_SYSTEM_MEMORY;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_CLOCK_TIME_NONE")]
        public const Gst.ClockTime CLOCK_TIME_NONE;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_ELEMENT_METADATA_AUTHOR")]
@@ -2948,6 +3239,8 @@ namespace Gst {
        public const int LOCK_FLAG_READWRITE;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_MAP_READWRITE")]
        public const int MAP_READWRITE;
+       [CCode (cheader_filename = "gst/gst.h", cname = "GST_META_TAG_MEMORY_STR")]
+       public const string META_TAG_MEMORY_STR;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_MSECOND")]
        public const int MSECOND;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_NSECOND")]
@@ -2962,14 +3255,20 @@ namespace Gst {
        public const int PARAM_MUTABLE_READY;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_PARAM_USER_SHIFT")]
        public const int PARAM_USER_SHIFT;
+       [CCode (cheader_filename = "gst/gst.h", cname = "GST_PTR_FORMAT")]
+       public const string PTR_FORMAT;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_QUERY_NUM_SHIFT")]
        public const int QUERY_NUM_SHIFT;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_QUERY_TYPE_BOTH")]
        public const int QUERY_TYPE_BOTH;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_SECOND")]
        public const int SECOND;
+       [CCode (cheader_filename = "gst/gst.h", cname = "GST_SEGMENT_FORMAT")]
+       public const string SEGMENT_FORMAT;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_TIME_FORMAT")]
        public const string TIME_FORMAT;
+       [CCode (cheader_filename = "gst/gst.h", cname = "GST_TOC_REPEAT_COUNT_INFINITE")]
+       public const int TOC_REPEAT_COUNT_INFINITE;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_USECOND")]
        public const int USECOND;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_VALUE_EQUAL")]
@@ -2980,6 +3279,14 @@ namespace Gst {
        public const int VALUE_LESS_THAN;
        [CCode (cheader_filename = "gst/gst.h", cname = "GST_VALUE_UNORDERED")]
        public const int VALUE_UNORDERED;
+       [CCode (cheader_filename = "gst/gst.h", cname = "GST_VERSION_MAJOR")]
+       public const int VERSION_MAJOR;
+       [CCode (cheader_filename = "gst/gst.h", cname = "GST_VERSION_MICRO")]
+       public const int VERSION_MICRO;
+       [CCode (cheader_filename = "gst/gst.h", cname = "GST_VERSION_MINOR")]
+       public const int VERSION_MINOR;
+       [CCode (cheader_filename = "gst/gst.h", cname = "GST_VERSION_NANO")]
+       public const int VERSION_NANO;
        [CCode (cheader_filename = "gst/gst.h")]
        public static void deinit ();
        [CCode (cheader_filename = "gst/gst.h")]
@@ -2995,17 +3302,19 @@ namespace Gst {
        [CCode (cheader_filename = "gst/gst.h")]
        public static GLib.OptionGroup init_get_option_group ();
        [CCode (cheader_filename = "gst/gst.h")]
+       public static bool is_caps_features (void* obj);
+       [CCode (cheader_filename = "gst/gst.h")]
        public static bool is_initialized ();
        [CCode (cheader_filename = "gst/gst.h")]
        public static GLib.ParamSpec param_spec_fraction (string name, string nick, string blurb, int min_num, int min_denom, int max_num, int max_denom, int default_num, int default_denom, GLib.ParamFlags flags);
        [CCode (cheader_filename = "gst/gst.h", cname = "gst_parse_bin_from_description_full", returns_floating_reference = true)]
-       public static Gst.Bin parse_bin_from_description (string bin_description, bool ghost_unlinked_pads, Gst.ParseContext? context = null, Gst.ParseFlags flags = Gst.ParseFlags.NONE) throws GLib.Error;
+       public static Gst.Element parse_bin_from_description (string bin_description, bool ghost_unlinked_pads, Gst.ParseContext? context = null, Gst.ParseFlags flags = Gst.ParseFlags.NONE) throws GLib.Error;
        [CCode (cheader_filename = "gst/gst.h", cname = "gst_parse_launch_full", returns_floating_reference = true)]
        public static Gst.Element parse_launch (string pipeline_description, Gst.ParseContext? context = null, Gst.ParseFlags flags = Gst.ParseFlags.NONE) throws GLib.Error;
-       [CCode (cheader_filename = "gst/gst.h", cname = "gst_parse_launchv_full")]
+       [CCode (cheader_filename = "gst/gst.h", cname = "gst_parse_launchv_full", returns_floating_reference = true)]
        public static Gst.Element parse_launchv ([CCode (array_length = false, array_null_terminated = true)] string[] argv, Gst.ParseContext? context = null, Gst.ParseFlags flags = Gst.ParseFlags.NONE) throws GLib.Error;
        [CCode (cheader_filename = "gst/gst.h")]
-       public static unowned string preset_get_app_dir ();
+       public static unowned string? preset_get_app_dir ();
        [CCode (cheader_filename = "gst/gst.h")]
        public static bool preset_set_app_dir (string app_dir);
        [CCode (cheader_filename = "gst/gst.h")]
diff --git a/vapi/gstreamer-allocators-1.0.deps b/vapi/gstreamer-allocators-1.0.deps
new file mode 100644 (file)
index 0000000..26a0edb
--- /dev/null
@@ -0,0 +1 @@
+gstreamer-1.0
diff --git a/vapi/gstreamer-allocators-1.0.vapi b/vapi/gstreamer-allocators-1.0.vapi
new file mode 100644 (file)
index 0000000..6db1c6e
--- /dev/null
@@ -0,0 +1,17 @@
+/* gstreamer-allocators-1.0.vapi generated by vapigen, do not modify. */
+
+[CCode (cprefix = "Gst", gir_namespace = "GstAllocators", gir_version = "1.0", lower_case_cprefix = "gst_")]
+namespace Gst {
+       namespace Allocators {
+               [CCode (cheader_filename = "gst/allocators/allocators.h", cname = "GST_ALLOCATOR_DMABUF")]
+               public const string ALLOCATOR_DMABUF;
+               [CCode (cheader_filename = "gst/allocators/allocators.h", cname = "gst_dmabuf_allocator_alloc")]
+               public static Gst.Memory dmabuf_allocator_alloc (Gst.Allocator? allocator, int fd, size_t size);
+               [CCode (cheader_filename = "gst/allocators/allocators.h", cname = "gst_dmabuf_allocator_new")]
+               public static Gst.Allocator dmabuf_allocator_new ();
+               [CCode (cheader_filename = "gst/allocators/allocators.h", cname = "gst_dmabuf_memory_get_fd")]
+               public static int dmabuf_memory_get_fd (Gst.Memory mem);
+               [CCode (cheader_filename = "gst/allocators/allocators.h", cname = "gst_is_dmabuf_memory")]
+               public static bool is_dmabuf_memory (Gst.Memory mem);
+       }
+}
index 2563be3..db9e861 100644 (file)
@@ -3,7 +3,7 @@
 [CCode (cprefix = "Gst", gir_namespace = "GstApp", gir_version = "1.0", lower_case_cprefix = "gst_")]
 namespace Gst {
        namespace App {
-               [CCode (cheader_filename = "gst/app/gstappsink.h,gst/app/gstappsrc.h", type_id = "gst_app_sink_get_type ()")]
+               [CCode (cheader_filename = "gst/app/app.h", type_id = "gst_app_sink_get_type ()")]
                [GIR (name = "AppSink")]
                public class Sink : Gst.Base.Sink, Gst.URIHandler {
                        [CCode (has_construct_function = false)]
@@ -30,12 +30,13 @@ namespace Gst {
                        [HasEmitter]
                        public virtual signal Gst.Sample pull_sample ();
                }
-               [CCode (cheader_filename = "gst/app/gstappsink.h,gst/app/gstappsrc.h", type_id = "gst_app_src_get_type ()")]
+               [CCode (cheader_filename = "gst/app/app.h", type_id = "gst_app_src_get_type ()")]
                [GIR (name = "AppSrc")]
                public class Src : Gst.Base.Src, Gst.URIHandler {
                        [CCode (has_construct_function = false)]
                        protected Src ();
                        public Gst.Caps get_caps ();
+                       public uint64 get_current_level_bytes ();
                        public bool get_emit_signals ();
                        public void get_latency (uint64 min, uint64 max);
                        public uint64 get_max_bytes ();
@@ -50,6 +51,7 @@ namespace Gst {
                        [NoAccessorMethod]
                        public bool block { get; set; }
                        public Gst.Caps caps { owned get; set; }
+                       public uint64 current_level_bytes { get; }
                        public bool emit_signals { get; set; }
                        [NoAccessorMethod]
                        public Gst.Format format { get; set; }
@@ -72,7 +74,7 @@ namespace Gst {
                        public virtual signal Gst.FlowReturn push_buffer (Gst.Buffer buffer);
                        public virtual signal bool seek_data (uint64 offset);
                }
-               [CCode (cheader_filename = "gst/app/gstappsink.h,gst/app/gstappsrc.h", cprefix = "GST_APP_STREAM_TYPE_", type_id = "gst_app_stream_type_get_type ()")]
+               [CCode (cheader_filename = "gst/app/app.h", cprefix = "GST_APP_STREAM_TYPE_", type_id = "gst_app_stream_type_get_type ()")]
                [GIR (name = "AppStreamType")]
                public enum StreamType {
                        STREAM,
index d85288b..4715435 100644 (file)
@@ -3,7 +3,7 @@
 [CCode (cprefix = "Gst", gir_namespace = "GstAudio", gir_version = "1.0", lower_case_cprefix = "gst_")]
 namespace Gst {
        namespace Audio {
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", type_id = "gst_audio_base_sink_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", type_id = "gst_audio_base_sink_get_type ()")]
                [GIR (name = "AudioBaseSink")]
                public class BaseSink : Gst.Base.Sink {
                        public bool eos_rendering;
@@ -37,7 +37,7 @@ namespace Gst {
                        public bool provide_clock { get; set; }
                        public Gst.Audio.BaseSinkSlaveMethod slave_method { get; set; }
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", type_id = "gst_audio_base_src_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", type_id = "gst_audio_base_src_get_type ()")]
                [GIR (name = "AudioBaseSrc")]
                public class BaseSrc : Gst.Base.PushSrc {
                        public weak Gst.Clock clock;
@@ -61,7 +61,7 @@ namespace Gst {
                        public bool provide_clock { get; set; }
                        public Gst.Audio.BaseSrcSlaveMethod slave_method { get; set; }
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", type_id = "gst_audio_cd_src_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", type_id = "gst_audio_cd_src_get_type ()")]
                [GIR (name = "AudioCdSrc")]
                public class CdSrc : Gst.Base.PushSrc, Gst.URIHandler {
                        public weak Gst.TagList tags;
@@ -81,7 +81,7 @@ namespace Gst {
                        [NoAccessorMethod]
                        public uint track { get; set; }
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", type_id = "gst_audio_clock_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", type_id = "gst_audio_clock_get_type ()")]
                [GIR (name = "AudioClock")]
                public class Clock : Gst.SystemClock {
                        [CCode (has_construct_function = false, type = "GstClock*")]
@@ -91,7 +91,7 @@ namespace Gst {
                        public static void invalidate (Gst.Clock clock);
                        public void reset (Gst.ClockTime time);
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", type_id = "gst_audio_decoder_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", type_id = "gst_audio_decoder_get_type ()")]
                [GIR (name = "AudioDecoder")]
                public abstract class Decoder : Gst.Element {
                        public weak Gst.Segment input_segment;
@@ -158,7 +158,7 @@ namespace Gst {
                        public bool plc { get; set; }
                        public int64 tolerance { get; set; }
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", type_id = "gst_audio_encoder_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", type_id = "gst_audio_encoder_get_type ()")]
                [GIR (name = "AudioEncoder")]
                public abstract class Encoder : Gst.Element, Gst.Preset {
                        public weak Gst.Segment input_segment;
@@ -230,7 +230,7 @@ namespace Gst {
                        public bool perfect_timestamp { get; set; }
                        public int64 tolerance { get; set; }
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", type_id = "gst_audio_filter_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", type_id = "gst_audio_filter_get_type ()")]
                [GIR (name = "AudioFilter")]
                public abstract class Filter : Gst.Base.Transform {
                        public weak Gst.Audio.Info info;
@@ -239,7 +239,7 @@ namespace Gst {
                        [NoWrapper]
                        public virtual bool setup (Gst.Audio.Info info);
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_audio_info_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_audio_info_get_type ()")]
                [Compact]
                [GIR (name = "AudioInfo")]
                public class Info {
@@ -258,10 +258,11 @@ namespace Gst {
                        public void free ();
                        public bool from_caps (Gst.Caps caps);
                        public void init ();
+                       public bool is_equal (Gst.Audio.Info other);
                        public void set_format (Gst.Audio.Format format, int rate, int channels, Gst.Audio.ChannelPosition position);
                        public Gst.Caps to_caps ();
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", type_id = "gst_audio_ring_buffer_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", type_id = "gst_audio_ring_buffer_get_type ()")]
                [GIR (name = "AudioRingBuffer")]
                public abstract class RingBuffer : Gst.Object {
                        public bool acquired;
@@ -312,7 +313,7 @@ namespace Gst {
                        public virtual bool start ();
                        public virtual bool stop ();
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", type_id = "gst_audio_sink_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", type_id = "gst_audio_sink_get_type ()")]
                [GIR (name = "AudioSink")]
                public class Sink : Gst.Audio.BaseSink {
                        [CCode (has_construct_function = false)]
@@ -332,7 +333,7 @@ namespace Gst {
                        [NoWrapper]
                        public virtual int write ([CCode (array_length_cname = "length", array_length_pos = 1.1, array_length_type = "guint", type = "gpointer")] uint8[] data);
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", type_id = "gst_audio_src_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", type_id = "gst_audio_src_get_type ()")]
                [GIR (name = "AudioSrc")]
                public class Src : Gst.Audio.BaseSrc {
                        [CCode (has_construct_function = false)]
@@ -352,25 +353,20 @@ namespace Gst {
                        [NoWrapper]
                        public virtual bool unprepare ();
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GstStreamVolume", type_cname = "GstStreamVolumeInterface", type_id = "gst_stream_volume_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GstStreamVolume", lower_case_cprefix = "gst_stream_volume_", type_cname = "GstStreamVolumeInterface", type_id = "gst_stream_volume_get_type ()")]
                [GIR (name = "StreamVolume")]
                public interface StreamVolume : GLib.Object {
-                       [CCode (cname = "gst_stream_volume_convert_volume")]
                        public static double convert_volume (Gst.Audio.StreamVolumeFormat from, Gst.Audio.StreamVolumeFormat to, double val);
-                       [CCode (cname = "gst_stream_volume_get_mute")]
                        public bool get_mute ();
-                       [CCode (cname = "gst_stream_volume_get_volume")]
                        public double get_volume (Gst.Audio.StreamVolumeFormat format);
-                       [CCode (cname = "gst_stream_volume_set_mute")]
                        public void set_mute (bool mute);
-                       [CCode (cname = "gst_stream_volume_set_volume")]
                        public void set_volume (Gst.Audio.StreamVolumeFormat format, double val);
                        [NoAccessorMethod]
                        public abstract bool mute { get; set; }
                        [NoAccessorMethod]
                        public abstract double volume { get; set; }
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/audio/audio.h", has_type_id = false)]
                [GIR (name = "AudioCdSrcTrack")]
                public struct CdSrcTrack {
                        public bool is_audio;
@@ -379,7 +375,7 @@ namespace Gst {
                        public uint end;
                        public weak Gst.TagList tags;
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/audio/audio.h", has_type_id = false)]
                [GIR (name = "AudioDownmixMeta")]
                public struct DownmixMeta {
                        public Gst.Meta meta;
@@ -389,7 +385,7 @@ namespace Gst {
                        public int to_channels;
                        public float matrix;
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/audio/audio.h", has_type_id = false)]
                [GIR (name = "AudioFormatInfo")]
                public struct FormatInfo {
                        public Gst.Audio.Format format;
@@ -405,7 +401,7 @@ namespace Gst {
                        public weak Gst.Audio.FormatUnpack unpack_func;
                        public weak Gst.Audio.FormatPack pack_func;
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/audio/audio.h", has_type_id = false)]
                [GIR (name = "AudioRingBufferSpec")]
                public struct RingBufferSpec {
                        public weak Gst.Caps caps;
@@ -417,14 +413,14 @@ namespace Gst {
                        public int segtotal;
                        public int seglatency;
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cprefix = "GST_AUDIO_BASE_SINK_SLAVE_", type_id = "gst_audio_base_sink_slave_method_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cprefix = "GST_AUDIO_BASE_SINK_SLAVE_", type_id = "gst_audio_base_sink_slave_method_get_type ()")]
                [GIR (name = "AudioBaseSinkSlaveMethod")]
                public enum BaseSinkSlaveMethod {
                        RESAMPLE,
                        SKEW,
                        NONE
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cprefix = "GST_AUDIO_BASE_SRC_SLAVE_", type_id = "gst_audio_base_src_slave_method_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cprefix = "GST_AUDIO_BASE_SRC_SLAVE_", type_id = "gst_audio_base_src_slave_method_get_type ()")]
                [GIR (name = "AudioBaseSrcSlaveMethod")]
                public enum BaseSrcSlaveMethod {
                        RESAMPLE,
@@ -433,7 +429,7 @@ namespace Gst {
                        SKEW,
                        NONE
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cprefix = "", type_id = "gst_audio_cd_src_mode_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cprefix = "", type_id = "gst_audio_cd_src_mode_get_type ()")]
                [GIR (name = "AudioCdSrcMode")]
                public enum CdSrcMode {
                        [CCode (cname = "Stream consists of a single track")]
@@ -441,7 +437,7 @@ namespace Gst {
                        [CCode (cname = "Stream consists of the whole disc")]
                        CONTINUOUS
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cprefix = "GST_AUDIO_CHANNEL_POSITION_", type_id = "gst_audio_channel_position_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cprefix = "GST_AUDIO_CHANNEL_POSITION_", type_id = "gst_audio_channel_position_get_type ()")]
                [GIR (name = "AudioChannelPosition")]
                public enum ChannelPosition {
                        NONE,
@@ -476,14 +472,14 @@ namespace Gst {
                        SURROUND_LEFT,
                        SURROUND_RIGHT
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cprefix = "GST_AUDIO_FLAG_", type_id = "gst_audio_flags_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cprefix = "GST_AUDIO_FLAG_", type_id = "gst_audio_flags_get_type ()")]
                [Flags]
                [GIR (name = "AudioFlags")]
                public enum Flags {
                        NONE,
                        UNPOSITIONED
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cprefix = "GST_AUDIO_FORMAT_", type_id = "gst_audio_format_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cprefix = "GST_AUDIO_FORMAT_", type_id = "gst_audio_format_get_type ()")]
                [GIR (name = "AudioFormat")]
                public enum Format {
                        UNKNOWN,
@@ -533,7 +529,7 @@ namespace Gst {
                        F32,
                        F64
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cprefix = "GST_AUDIO_FORMAT_FLAG_", type_id = "gst_audio_format_flags_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cprefix = "GST_AUDIO_FORMAT_FLAG_", type_id = "gst_audio_format_flags_get_type ()")]
                [Flags]
                [GIR (name = "AudioFormatFlags")]
                public enum FormatFlags {
@@ -543,18 +539,18 @@ namespace Gst {
                        COMPLEX,
                        UNPACK
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cprefix = "GST_AUDIO_LAYOUT_", type_id = "gst_audio_layout_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cprefix = "GST_AUDIO_LAYOUT_", type_id = "gst_audio_layout_get_type ()")]
                [GIR (name = "AudioLayout")]
                public enum Layout {
                        INTERLEAVED,
                        NON_INTERLEAVED
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cprefix = "GST_AUDIO_PACK_FLAG_", type_id = "gst_audio_pack_flags_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cprefix = "GST_AUDIO_PACK_FLAG_", type_id = "gst_audio_pack_flags_get_type ()")]
                [GIR (name = "AudioPackFlags")]
                public enum PackFlags {
                        NONE
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cprefix = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_", type_id = "gst_audio_ring_buffer_format_type_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cprefix = "GST_AUDIO_RING_BUFFER_FORMAT_TYPE_", type_id = "gst_audio_ring_buffer_format_type_get_type ()")]
                [GIR (name = "AudioRingBufferFormatType")]
                public enum RingBufferFormatType {
                        RAW,
@@ -570,91 +566,96 @@ namespace Gst {
                        MPEG2_AAC,
                        MPEG4_AAC
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cprefix = "GST_AUDIO_RING_BUFFER_STATE_", type_id = "gst_audio_ring_buffer_state_get_type ()")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cprefix = "GST_AUDIO_RING_BUFFER_STATE_", type_id = "gst_audio_ring_buffer_state_get_type ()")]
                [GIR (name = "AudioRingBufferState")]
                public enum RingBufferState {
                        STOPPED,
                        PAUSED,
-                       STARTED
+                       STARTED,
+                       ERROR
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GstStreamVolumeFormat", cprefix = "GST_STREAM_VOLUME_FORMAT_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GstStreamVolumeFormat", cprefix = "GST_STREAM_VOLUME_FORMAT_", has_type_id = false)]
                [GIR (name = "StreamVolumeFormat")]
                public enum StreamVolumeFormat {
                        LINEAR,
                        CUBIC,
                        DB
                }
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", instance_pos = 1.9)]
+               [CCode (cheader_filename = "gst/audio/audio.h", instance_pos = 1.9)]
                public delegate Gst.ClockTime ClockGetTimeFunc (Gst.Clock clock);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", has_target = false)]
+               [CCode (cheader_filename = "gst/audio/audio.h", has_target = false)]
                public delegate void FormatPack (Gst.Audio.FormatInfo info, Gst.Audio.PackFlags flags, [CCode (array_length = false)] uint8[] src, [CCode (array_length = false)] uint8[] data, int length);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", has_target = false)]
+               [CCode (cheader_filename = "gst/audio/audio.h", has_target = false)]
                public delegate void FormatUnpack (Gst.Audio.FormatInfo info, Gst.Audio.PackFlags flags, [CCode (array_length = false)] uint8[] dest, [CCode (array_length = false)] uint8[] data, int length);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", instance_pos = 2.9)]
+               [CCode (cheader_filename = "gst/audio/audio.h", instance_pos = 2.9)]
                public delegate void RingBufferCallback (Gst.Audio.RingBuffer rbuf, [CCode (array_length_cname = "len", array_length_pos = 2.1, array_length_type = "guint")] uint8[] data);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GST_AUDIO_CHANNELS_RANGE")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_AUDIO_CHANNELS_RANGE")]
                public const string CHANNELS_RANGE;
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GST_AUDIO_DECODER_MAX_ERRORS")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_AUDIO_DECODER_MAX_ERRORS")]
                public const int DECODER_MAX_ERRORS;
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GST_AUDIO_DECODER_SINK_NAME")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_AUDIO_DECODER_SINK_NAME")]
                public const string DECODER_SINK_NAME;
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GST_AUDIO_DECODER_SRC_NAME")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_AUDIO_DECODER_SRC_NAME")]
                public const string DECODER_SRC_NAME;
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GST_AUDIO_DEF_CHANNELS")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_AUDIO_DEF_CHANNELS")]
                public const int DEF_CHANNELS;
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GST_AUDIO_DEF_FORMAT")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_AUDIO_DEF_FORMAT")]
                public const string DEF_FORMAT;
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GST_AUDIO_DEF_RATE")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_AUDIO_DEF_RATE")]
                public const int DEF_RATE;
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GST_AUDIO_ENCODER_SINK_NAME")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_AUDIO_ENCODER_SINK_NAME")]
                public const string ENCODER_SINK_NAME;
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GST_AUDIO_ENCODER_SRC_NAME")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_AUDIO_ENCODER_SRC_NAME")]
                public const string ENCODER_SRC_NAME;
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GST_AUDIO_FORMATS_ALL")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_AUDIO_FORMATS_ALL")]
                public const string FORMATS_ALL;
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "GST_AUDIO_RATE_RANGE")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_META_TAG_AUDIO_CHANNELS_STR")]
+               public const string META_TAG_AUDIO_CHANNELS_STR;
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_META_TAG_AUDIO_STR")]
+               public const string META_TAG_AUDIO_STR;
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "GST_AUDIO_RATE_RANGE")]
                public const string RATE_RANGE;
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_buffer_clip")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_buffer_clip")]
                public static Gst.Buffer audio_buffer_clip (owned Gst.Buffer buffer, Gst.Segment segment, int rate, int bpf);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_buffer_reorder_channels")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_buffer_reorder_channels")]
                public static bool audio_buffer_reorder_channels (Gst.Buffer buffer, Gst.Audio.Format format, int channels, [CCode (array_length = false)] Gst.Audio.ChannelPosition[] from, [CCode (array_length = false)] Gst.Audio.ChannelPosition[] to);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_channel_positions_from_mask")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_channel_positions_from_mask")]
                public static bool audio_channel_positions_from_mask (uint64 channel_mask, [CCode (array_length_cname = "channels", array_length_pos = 0.5)] Gst.Audio.ChannelPosition[] position);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_channel_positions_to_mask")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_channel_positions_to_mask")]
                public static bool audio_channel_positions_to_mask ([CCode (array_length_cname = "channels", array_length_pos = 1.5)] Gst.Audio.ChannelPosition[] position, bool force_order, [CCode (array_length = false)] uint64[] channel_mask);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_channel_positions_to_valid_order")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_channel_positions_to_valid_order")]
                public static bool audio_channel_positions_to_valid_order ([CCode (array_length_cname = "channels", array_length_pos = 1.1)] Gst.Audio.ChannelPosition[] position);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_check_valid_channel_positions")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_check_valid_channel_positions")]
                public static bool audio_check_valid_channel_positions ([CCode (array_length_cname = "channels", array_length_pos = 1.5)] Gst.Audio.ChannelPosition[] position, bool force_order);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_downmix_meta_api_get_type")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_downmix_meta_api_get_type")]
                public static GLib.Type audio_downmix_meta_api_get_type ();
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_downmix_meta_get_info")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_downmix_meta_get_info")]
                public static unowned Gst.MetaInfo? audio_downmix_meta_get_info ();
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_format_build_integer")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_format_build_integer")]
                public static Gst.Audio.Format audio_format_build_integer (bool sign, int endianness, int width, int depth);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_format_fill_silence")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_format_fill_silence")]
                public static void audio_format_fill_silence (Gst.Audio.FormatInfo info, [CCode (array_length_cname = "length", array_length_pos = 2.1, array_length_type = "gsize")] uint8[] dest);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_format_from_string")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_format_from_string")]
                public static Gst.Audio.Format audio_format_from_string (string format);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_format_get_info")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_format_get_info")]
                public static unowned Gst.Audio.FormatInfo? audio_format_get_info (Gst.Audio.Format format);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_format_info_get_type")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_format_info_get_type")]
                public static GLib.Type audio_format_info_get_type ();
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_format_to_string")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_format_to_string")]
                public static unowned string audio_format_to_string (Gst.Audio.Format format);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_get_channel_reorder_map")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_get_channel_reorder_map")]
                public static bool audio_get_channel_reorder_map (int channels, [CCode (array_length = false)] Gst.Audio.ChannelPosition[] from, [CCode (array_length = false)] Gst.Audio.ChannelPosition[] to, [CCode (array_length = false)] int[] reorder_map);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_iec61937_frame_size")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_iec61937_frame_size")]
                public static uint audio_iec61937_frame_size (Gst.Audio.RingBufferSpec spec);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_iec61937_payload")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_iec61937_payload")]
                public static bool audio_iec61937_payload ([CCode (array_length_cname = "src_n", array_length_pos = 1.5, array_length_type = "guint")] uint8[] src, [CCode (array_length_cname = "dst_n", array_length_pos = 2.5, array_length_type = "guint")] uint8[] dst, Gst.Audio.RingBufferSpec spec, int endianness);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_audio_reorder_channels")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_audio_reorder_channels")]
                public static bool audio_reorder_channels ([CCode (array_length_cname = "size", array_length_pos = 1.5, array_length_type = "gsize")] uint8[] data, Gst.Audio.Format format, int channels, [CCode (array_length = false)] Gst.Audio.ChannelPosition[] from, [CCode (array_length = false)] Gst.Audio.ChannelPosition[] to);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_buffer_add_audio_downmix_meta")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_buffer_add_audio_downmix_meta")]
                public static unowned Gst.Audio.DownmixMeta? buffer_add_audio_downmix_meta (Gst.Buffer buffer, [CCode (array_length_cname = "from_channels", array_length_pos = 2.5)] Gst.Audio.ChannelPosition[] from_position, [CCode (array_length_cname = "to_channels", array_length_pos = 3.5)] Gst.Audio.ChannelPosition[] to_position, float matrix);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_buffer_get_audio_downmix_meta_for_channels")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_buffer_get_audio_downmix_meta_for_channels")]
                public static unowned Gst.Audio.DownmixMeta? buffer_get_audio_downmix_meta_for_channels (Gst.Buffer buffer, [CCode (array_length_cname = "to_channels", array_length_pos = 2.1)] Gst.Audio.ChannelPosition[] to_position);
-               [CCode (cheader_filename = "gst/audio/audio-channels.h,gst/audio/audio-enumtypes.h,gst/audio/audio-format.h,gst/audio/audio-info.h,gst/audio/audio.h,gst/audio/gstaudiobasesink.h,gst/audio/gstaudiobasesrc.h,gst/audio/gstaudiocdsrc.h,gst/audio/gstaudioclock.h,gst/audio/gstaudiodecoder.h,gst/audio/gstaudioencoder.h,gst/audio/gstaudiofilter.h,gst/audio/gstaudioiec61937.h,gst/audio/gstaudiometa.h,gst/audio/gstaudioringbuffer.h,gst/audio/gstaudiosink.h,gst/audio/gstaudiosrc.h,gst/audio/streamvolume.h", cname = "gst_stream_volume_convert_volume")]
+               [CCode (cheader_filename = "gst/audio/audio.h", cname = "gst_stream_volume_convert_volume")]
                public static double stream_volume_convert_volume (Gst.Audio.StreamVolumeFormat from, Gst.Audio.StreamVolumeFormat to, double val);
        }
 }
index fbf6a09..86cfdfe 100644 (file)
@@ -3,40 +3,31 @@
 [CCode (cprefix = "Gst", gir_namespace = "GstBase", gir_version = "1.0", lower_case_cprefix = "gst_")]
 namespace Gst {
        namespace Base {
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstAdapter", type_id = "gst_adapter_get_type ()")]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstAdapter", lower_case_cprefix = "gst_adapter_", type_id = "gst_adapter_get_type ()")]
                [GIR (name = "Adapter")]
                public class Adapter : GLib.Object {
-                       [CCode (cname = "gst_adapter_new", has_construct_function = false)]
+                       [CCode (has_construct_function = false)]
                        public Adapter ();
-                       [CCode (cname = "gst_adapter_available")]
                        public size_t available ();
-                       [CCode (cname = "gst_adapter_available_fast")]
                        public size_t available_fast ();
-                       [CCode (cname = "gst_adapter_clear")]
                        public void clear ();
-                       [CCode (cname = "gst_adapter_copy")]
                        public void copy ([CCode (array_length_cname = "size", array_length_pos = 2.1, array_length_type = "gsize")] out unowned uint8[] dest, size_t offset);
-                       [CCode (cname = "gst_adapter_flush")]
+                       public GLib.Bytes copy_bytes (size_t offset, size_t size);
                        public void flush (size_t flush);
-                       [CCode (array_length_pos = 0.1, array_length_type = "gsize", cname = "gst_adapter_map")]
-                       public unowned uint8[] map ();
-                       [CCode (cname = "gst_adapter_masked_scan_uint32")]
-                       public size_t masked_scan_uint32 (uint32 mask, uint32 pattern, size_t offset, size_t size);
-                       [CCode (cname = "gst_adapter_masked_scan_uint32_peek")]
-                       public size_t masked_scan_uint32_peek (uint32 mask, uint32 pattern, size_t offset, size_t size, uint32 value);
-                       [CCode (cname = "gst_adapter_prev_dts")]
+                       [CCode (array_length_pos = 0.1, array_length_type = "gsize")]
+                       public unowned uint8[]? map ();
+                       public ssize_t masked_scan_uint32 (uint32 mask, uint32 pattern, size_t offset, size_t size);
+                       public ssize_t masked_scan_uint32_peek (uint32 mask, uint32 pattern, size_t offset, size_t size, out uint32 value);
                        public Gst.ClockTime prev_dts (out uint64 distance);
-                       [CCode (cname = "gst_adapter_prev_pts")]
+                       public Gst.ClockTime prev_dts_at_offset (size_t offset, out uint64 distance);
                        public Gst.ClockTime prev_pts (out uint64 distance);
-                       [CCode (cname = "gst_adapter_push")]
+                       public Gst.ClockTime prev_pts_at_offset (size_t offset, out uint64 distance);
                        public void push (owned Gst.Buffer buf);
-                       [CCode (array_length_pos = 0.1, array_length_type = "gsize", cname = "gst_adapter_take")]
-                       public uint8[] take ();
-                       [CCode (cname = "gst_adapter_take_buffer")]
-                       public Gst.Buffer take_buffer (size_t nbytes);
-                       [CCode (cname = "gst_adapter_take_list")]
-                       public GLib.List<Gst.Buffer> take_list (size_t nbytes);
-                       [CCode (cname = "gst_adapter_unmap")]
+                       [CCode (array_length_pos = 0.1, array_length_type = "gsize")]
+                       public uint8[]? take ();
+                       public Gst.Buffer? take_buffer (size_t nbytes);
+                       public Gst.Buffer? take_buffer_fast (size_t nbytes);
+                       public GLib.List<Gst.Buffer>? take_list (size_t nbytes);
                        public void unmap ();
                }
                [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstBitReader")]
@@ -306,42 +297,57 @@ namespace Gst {
                        public ByteWriter.with_data ([CCode (array_length_type = "guint")] uint8[] data, uint size, bool initialized);
                        public ByteWriter.with_size (uint size, bool fixed);
                }
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstCollectPads", type_id = "gst_collect_pads_get_type ()")]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstCollectPads", lower_case_cprefix = "gst_collect_pads_", type_id = "gst_collect_pads_get_type ()")]
                [GIR (name = "CollectPads")]
                public class CollectPads : Gst.Object {
-                       public weak GLib.SList<void*> data;
-                       [CCode (cname = "gst_collect_pads_new", has_construct_function = false)]
+                       public weak GLib.SList<Gst.Base.CollectData?> data;
+                       [CCode (has_construct_function = false)]
                        public CollectPads ();
-                       [CCode (cname = "gst_collect_pads_available")]
+                       public unowned Gst.Base.CollectData? add_pad (Gst.Pad pad, uint size, [CCode (scope = "async")] owned Gst.Base.CollectDataDestroyNotify destroy_notify, bool @lock);
                        public uint available ();
-                       [CCode (cname = "gst_collect_pads_clip_running_time")]
                        public Gst.FlowReturn clip_running_time (Gst.Base.CollectData cdata, Gst.Buffer buf, Gst.Buffer? outbuf, void* user_data);
-                       [CCode (cname = "gst_collect_pads_event_default")]
                        public bool event_default (Gst.Base.CollectData data, Gst.Event event, bool discard);
-                       [CCode (cname = "gst_collect_pads_flush")]
                        public uint flush (Gst.Base.CollectData data, uint size);
-                       [CCode (cname = "gst_collect_pads_peek")]
                        public Gst.Buffer peek (Gst.Base.CollectData data);
-                       [CCode (cname = "gst_collect_pads_pop")]
                        public Gst.Buffer pop (Gst.Base.CollectData data);
-                       [CCode (cname = "gst_collect_pads_query_default")]
                        public bool query_default (Gst.Base.CollectData data, Gst.Query query, bool discard);
-                       [CCode (cname = "gst_collect_pads_read_buffer")]
                        public Gst.Buffer read_buffer (Gst.Base.CollectData data, uint size);
-                       [CCode (cname = "gst_collect_pads_remove_pad")]
                        public bool remove_pad (Gst.Pad pad);
-                       [CCode (cname = "gst_collect_pads_set_flushing")]
                        public void set_flushing (bool flushing);
-                       [CCode (cname = "gst_collect_pads_set_waiting")]
                        public void set_waiting (Gst.Base.CollectData data, bool waiting);
-                       [CCode (cname = "gst_collect_pads_start")]
+                       public bool src_event_default (Gst.Pad pad, Gst.Event event);
                        public void start ();
-                       [CCode (cname = "gst_collect_pads_stop")]
                        public void stop ();
-                       [CCode (cname = "gst_collect_pads_take_buffer")]
                        public Gst.Buffer take_buffer (Gst.Base.CollectData data, uint size);
                }
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", type_id = "gst_base_parse_get_type ()")]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstDataQueue", lower_case_cprefix = "gst_data_queue_", type_id = "gst_data_queue_get_type ()")]
+               [GIR (name = "DataQueue")]
+               public class DataQueue : GLib.Object {
+                       [CCode (has_construct_function = false)]
+                       protected DataQueue ();
+                       [NoWrapper]
+                       public virtual void empty ();
+                       [NoWrapper]
+                       public virtual void full ();
+                       [NoAccessorMethod]
+                       public uint current_level_bytes { get; }
+                       [NoAccessorMethod]
+                       public uint64 current_level_time { get; }
+                       [NoAccessorMethod]
+                       public uint current_level_visible { get; }
+               }
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstFlowCombiner", copy_function = "g_boxed_copy", free_function = "g_boxed_free", lower_case_cprefix = "gst_flow_combiner_", type_id = "gst_flow_combiner_get_type ()")]
+               [Compact]
+               [GIR (name = "FlowCombiner")]
+               public class FlowCombiner {
+                       [CCode (has_construct_function = false)]
+                       public FlowCombiner ();
+                       public void add_pad (Gst.Pad pad);
+                       public void free ();
+                       public void remove_pad (Gst.Pad pad);
+                       public Gst.FlowReturn update_flow (Gst.FlowReturn fret);
+               }
+               [CCode (cheader_filename = "gst/base/base.h", type_id = "gst_base_parse_get_type ()")]
                [GIR (name = "BaseParse")]
                public abstract class Parse : Gst.Element {
                        public uint flags;
@@ -368,6 +374,7 @@ namespace Gst {
                        public void set_duration (Gst.Format fmt, int64 duration, int interval);
                        public void set_frame_rate (uint fps_num, uint fps_den, uint lead_in, uint lead_out);
                        public void set_has_timing_info (bool has_timing);
+                       public void set_infer_ts (bool infer_ts);
                        public void set_latency (Gst.ClockTime min_latency, Gst.ClockTime max_latency);
                        public void set_min_frame_size (uint min_size);
                        public void set_passthrough (bool passthrough);
@@ -375,16 +382,23 @@ namespace Gst {
                        [NoWrapper]
                        public virtual bool set_sink_caps (Gst.Caps caps);
                        public void set_syncable (bool syncable);
+                       public void set_ts_at_offset (size_t offset);
                        [NoWrapper]
                        public virtual bool sink_event (Gst.Event event);
                        [NoWrapper]
+                       public virtual bool sink_query (Gst.Query query);
+                       [NoWrapper]
                        public virtual bool src_event (Gst.Event event);
                        [NoWrapper]
+                       public virtual bool src_query (Gst.Query query);
+                       [NoWrapper]
                        public virtual bool start ();
                        [NoWrapper]
                        public virtual bool stop ();
+                       [NoAccessorMethod]
+                       public bool disable_passthrough { get; set; }
                }
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_base_parse_frame_get_type ()")]
+               [CCode (cheader_filename = "gst/base/base.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_base_parse_frame_get_type ()")]
                [Compact]
                [GIR (name = "BaseParseFrame")]
                public class ParseFrame {
@@ -398,7 +412,7 @@ namespace Gst {
                        public void free ();
                        public void init ();
                }
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstPushSrc", type_id = "gst_push_src_get_type ()")]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstPushSrc", lower_case_cprefix = "gst_push_src_", type_id = "gst_push_src_get_type ()")]
                [GIR (name = "PushSrc")]
                public class PushSrc : Gst.Base.Src {
                        [CCode (has_construct_function = false)]
@@ -410,7 +424,7 @@ namespace Gst {
                        [NoWrapper]
                        public virtual Gst.FlowReturn fill (Gst.Buffer buf);
                }
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", type_id = "gst_base_sink_get_type ()")]
+               [CCode (cheader_filename = "gst/base/base.h", type_id = "gst_base_sink_get_type ()")]
                [GIR (name = "BaseSink")]
                public abstract class Sink : Gst.Element {
                        public bool can_activate_pull;
@@ -438,8 +452,9 @@ namespace Gst {
                        public uint get_blocksize ();
                        [NoWrapper]
                        public virtual Gst.Caps get_caps (Gst.Caps filter);
-                       public Gst.Sample get_last_sample ();
+                       public Gst.Sample? get_last_sample ();
                        public Gst.ClockTime get_latency ();
+                       public uint64 get_max_bitrate ();
                        public int64 get_max_lateness ();
                        public Gst.ClockTime get_render_delay ();
                        public bool get_sync ();
@@ -470,6 +485,7 @@ namespace Gst {
                        [NoWrapper]
                        public virtual bool set_caps (Gst.Caps caps);
                        public void set_last_sample_enabled (bool enabled);
+                       public void set_max_bitrate (uint64 max_bitrate);
                        public void set_max_lateness (int64 max_lateness);
                        public void set_qos_enabled (bool enabled);
                        public void set_render_delay (Gst.ClockTime delay);
@@ -495,6 +511,7 @@ namespace Gst {
                        [NoAccessorMethod]
                        public bool enable_last_sample { get; set; }
                        public Gst.Sample last_sample { owned get; }
+                       public uint64 max_bitrate { get; set; }
                        public int64 max_lateness { get; set; }
                        [NoAccessorMethod]
                        public bool qos { get; set; }
@@ -503,7 +520,7 @@ namespace Gst {
                        public uint64 throttle_time { get; set; }
                        public int64 ts_offset { get; set; }
                }
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", type_id = "gst_base_src_get_type ()")]
+               [CCode (cheader_filename = "gst/base/base.h", type_id = "gst_base_src_get_type ()")]
                [GIR (name = "BaseSrc")]
                public abstract class Src : Gst.Element {
                        public bool can_activate_push;
@@ -556,6 +573,7 @@ namespace Gst {
                        public virtual bool query (Gst.Query query);
                        public bool query_latency (out bool live, out Gst.ClockTime min_latency, out Gst.ClockTime max_latency);
                        public void set_async (bool @async);
+                       public void set_automatic_eos (bool automatic_eos);
                        public void set_blocksize (uint blocksize);
                        public virtual bool set_caps (Gst.Caps caps);
                        public void set_do_timestamp (bool timestamp);
@@ -580,7 +598,7 @@ namespace Gst {
                        [NoAccessorMethod]
                        public bool typefind { get; set; }
                }
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", type_id = "gst_base_transform_get_type ()")]
+               [CCode (cheader_filename = "gst/base/base.h", type_id = "gst_base_transform_get_type ()")]
                [GIR (name = "BaseTransform")]
                public abstract class Transform : Gst.Element {
                        public bool have_segment;
@@ -645,7 +663,7 @@ namespace Gst {
                        [NoAccessorMethod]
                        public bool qos { get; set; }
                }
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstCollectData", has_type_id = false)]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstCollectData", has_type_id = false)]
                [GIR (name = "CollectData")]
                public struct CollectData {
                        public weak Gst.Base.CollectPads collect;
@@ -654,7 +672,7 @@ namespace Gst {
                        public uint pos;
                        public weak Gst.Segment segment;
                }
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstCollectPadsStateFlags", cprefix = "GST_COLLECT_PADS_STATE_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstCollectPadsStateFlags", cprefix = "GST_COLLECT_PADS_STATE_", has_type_id = false)]
                [Flags]
                [GIR (name = "CollectPadsStateFlags")]
                public enum CollectPadsStateFlags {
@@ -664,7 +682,7 @@ namespace Gst {
                        WAITING,
                        LOCKED
                }
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cprefix = "GST_BASE_PARSE_FRAME_FLAG_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/base/base.h", cprefix = "GST_BASE_PARSE_FRAME_FLAG_", has_type_id = false)]
                [Flags]
                [GIR (name = "BaseParseFrameFlags")]
                public enum ParseFrameFlags {
@@ -675,7 +693,7 @@ namespace Gst {
                        DROP,
                        QUEUE
                }
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cprefix = "GST_BASE_SRC_FLAG_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/base/base.h", cprefix = "GST_BASE_SRC_FLAG_", has_type_id = false)]
                [Flags]
                [GIR (name = "BaseSrcFlags")]
                public enum SrcFlags {
@@ -683,39 +701,45 @@ namespace Gst {
                        STARTED,
                        LAST
                }
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstCollectDataDestroyNotify", has_target = false)]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstCollectDataDestroyNotify", has_target = false)]
                public delegate void CollectDataDestroyNotify (Gst.Base.CollectData data);
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstCollectPadsBufferFunction", instance_pos = 3.9)]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstCollectPadsBufferFunction", instance_pos = 3.9)]
                public delegate Gst.FlowReturn CollectPadsBufferFunction (Gst.Base.CollectPads pads, Gst.Base.CollectData data, owned Gst.Buffer buffer);
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstCollectPadsClipFunction", instance_pos = 4.9)]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstCollectPadsClipFunction", instance_pos = 4.9)]
                public delegate Gst.FlowReturn CollectPadsClipFunction (Gst.Base.CollectPads pads, Gst.Base.CollectData data, owned Gst.Buffer inbuffer, Gst.Buffer outbuffer);
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstCollectPadsCompareFunction", instance_pos = 5.9)]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstCollectPadsCompareFunction", instance_pos = 5.9)]
                public delegate int CollectPadsCompareFunction (Gst.Base.CollectPads pads, Gst.Base.CollectData data1, Gst.ClockTime timestamp1, Gst.Base.CollectData data2, Gst.ClockTime timestamp2);
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstCollectPadsEventFunction", instance_pos = 3.9)]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstCollectPadsEventFunction", instance_pos = 3.9)]
                public delegate bool CollectPadsEventFunction (Gst.Base.CollectPads pads, Gst.Base.CollectData pad, Gst.Event event);
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstCollectPadsFunction", instance_pos = 1.9)]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstCollectPadsFlushFunction", instance_pos = 1.9)]
+               public delegate void CollectPadsFlushFunction (Gst.Base.CollectPads pads);
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstCollectPadsFunction", instance_pos = 1.9)]
                public delegate Gst.FlowReturn CollectPadsFunction (Gst.Base.CollectPads pads);
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstCollectPadsQueryFunction", instance_pos = 3.9)]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstCollectPadsQueryFunction", instance_pos = 3.9)]
                public delegate bool CollectPadsQueryFunction (Gst.Base.CollectPads pads, Gst.Base.CollectData pad, Gst.Query query);
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GstTypeFindHelperGetRangeFunction", has_target = false)]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstDataQueueEmptyCallback", has_target = false)]
+               public delegate void DataQueueEmptyCallback (Gst.Base.DataQueue queue, void* checkdata);
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstDataQueueFullCallback", has_target = false)]
+               public delegate void DataQueueFullCallback (Gst.Base.DataQueue queue, void* checkdata);
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GstTypeFindHelperGetRangeFunction", has_target = false)]
                public delegate Gst.FlowReturn TypeFindHelperGetRangeFunction (Gst.Object obj, Gst.Object? parent, uint64 offset, uint length, Gst.Buffer buffer);
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GST_BASE_PARSE_FLAG_DRAINING")]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GST_BASE_PARSE_FLAG_DRAINING")]
                public const int PARSE_FLAG_DRAINING;
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GST_BASE_PARSE_FLAG_LOST_SYNC")]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GST_BASE_PARSE_FLAG_LOST_SYNC")]
                public const int PARSE_FLAG_LOST_SYNC;
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GST_BASE_TRANSFORM_SINK_NAME")]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GST_BASE_TRANSFORM_SINK_NAME")]
                public const string TRANSFORM_SINK_NAME;
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "GST_BASE_TRANSFORM_SRC_NAME")]
+               [CCode (cheader_filename = "gst/base/base.h", cname = "GST_BASE_TRANSFORM_SRC_NAME")]
                public const string TRANSFORM_SRC_NAME;
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "gst_type_find_helper")]
-               public static Gst.Caps type_find_helper (Gst.Pad src, uint64 size);
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "gst_type_find_helper_for_buffer")]
-               public static Gst.Caps type_find_helper_for_buffer (Gst.Object? obj, Gst.Buffer buf, out Gst.TypeFindProbability prob);
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "gst_type_find_helper_for_data")]
-               public static Gst.Caps type_find_helper_for_data (Gst.Object? obj, uint8 data, size_t size, out Gst.TypeFindProbability prob);
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "gst_type_find_helper_for_extension")]
-               public static Gst.Caps type_find_helper_for_extension (Gst.Object? obj, string extension);
-               [CCode (cheader_filename = "gst/base/gstadapter.h,gst/base/gstbaseparse.h,gst/base/gstbasesink.h,gst/base/gstbasesrc.h,gst/base/gstbasetransform.h,gst/base/gstbitreader.h,gst/base/gstbytereader.h,gst/base/gstbytewriter.h,gst/base/gstcollectpads.h,gst/base/gstpushsrc.h,gst/base/gsttypefindhelper.h", cname = "gst_type_find_helper_get_range")]
-               public static Gst.Caps type_find_helper_get_range (Gst.Object obj, Gst.Object? parent, Gst.Base.TypeFindHelperGetRangeFunction func, uint64 size, string extension, out Gst.TypeFindProbability prob);
+               [CCode (cheader_filename = "gst/base/base.h", cname = "gst_type_find_helper")]
+               public static Gst.Caps? type_find_helper (Gst.Pad src, uint64 size);
+               [CCode (cheader_filename = "gst/base/base.h", cname = "gst_type_find_helper_for_buffer")]
+               public static Gst.Caps? type_find_helper_for_buffer (Gst.Object? obj, Gst.Buffer buf, out Gst.TypeFindProbability prob);
+               [CCode (cheader_filename = "gst/base/base.h", cname = "gst_type_find_helper_for_data")]
+               public static Gst.Caps? type_find_helper_for_data (Gst.Object? obj, uint8 data, size_t size, out Gst.TypeFindProbability prob);
+               [CCode (cheader_filename = "gst/base/base.h", cname = "gst_type_find_helper_for_extension")]
+               public static Gst.Caps? type_find_helper_for_extension (Gst.Object? obj, string extension);
+               [CCode (cheader_filename = "gst/base/base.h", cname = "gst_type_find_helper_get_range")]
+               public static Gst.Caps? type_find_helper_get_range (Gst.Object obj, Gst.Object? parent, Gst.Base.TypeFindHelperGetRangeFunction func, uint64 size, string extension, out Gst.TypeFindProbability prob);
        }
 }
index ab2c94f..bf939f3 100644 (file)
@@ -3,7 +3,7 @@
 [CCode (cprefix = "Gst", gir_namespace = "GstCheck", gir_version = "1.0", lower_case_cprefix = "gst_")]
 namespace Gst {
        namespace Check {
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h", cname = "GstStreamConsistency", cprefix = "gst_consistency_checker_", lower_case_cprefix = "gst_consistency_checker_")]
+               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h", cname = "GstStreamConsistency", lower_case_cprefix = "gst_consistency_checker_")]
                [Compact]
                [GIR (name = "StreamConsistency")]
                public class StreamConsistency {
@@ -12,54 +12,89 @@ namespace Gst {
                        public void free ();
                        public void reset ();
                }
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/check/check.h", cname = "GstTestClock", lower_case_cprefix = "gst_test_clock_", type_id = "gst_test_clock_get_type ()")]
+               [GIR (name = "TestClock")]
+               public class TestClock : Gst.Clock {
+                       [CCode (has_construct_function = false, type = "GstClock*")]
+                       public TestClock ();
+                       public void advance_time (Gst.ClockTimeDiff delta);
+                       public Gst.ClockTime get_next_entry_time ();
+                       public bool has_id (Gst.ClockID id);
+                       public static Gst.ClockTime id_list_get_latest_time (GLib.List<Gst.ClockID?>? pending_list);
+                       public uint peek_id_count ();
+                       public bool peek_next_pending_id (out Gst.ClockID pending_id);
+                       public uint process_id_list (GLib.List<Gst.ClockID?>? pending_list);
+                       public Gst.ClockID process_next_clock_id ();
+                       public void set_time (Gst.ClockTime new_time);
+                       public void wait_for_multiple_pending_ids (uint count, out GLib.List<Gst.ClockID?> pending_list);
+                       public void wait_for_next_pending_id (out Gst.ClockID pending_id);
+                       [Deprecated]
+                       public void wait_for_pending_id_count (uint count);
+                       [CCode (has_construct_function = false, type = "GstClock*")]
+                       public TestClock.with_start_time (Gst.ClockTime start_time);
+                       [NoAccessorMethod]
+                       public uint64 start_time { get; construct; }
+               }
+               [CCode (cheader_filename = "gst/check/check.h", has_type_id = false)]
                [GIR (name = "CheckABIStruct")]
                public struct ABIStruct {
                        public weak string name;
                        public int size;
                        public int abi_size;
                }
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static void abi_list (Gst.Check.ABIStruct list, bool have_abi_sizes);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static void buffer_data (Gst.Buffer buffer, void* data, size_t size);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h", cname = "gst_buffer_straw_get_buffer")]
+               [CCode (cheader_filename = "gst/check/check.h", cname = "gst_buffer_straw_get_buffer")]
                public static Gst.Buffer buffer_straw_get_buffer (Gst.Element bin, Gst.Pad pad);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h", cname = "gst_buffer_straw_start_pipeline")]
+               [CCode (cheader_filename = "gst/check/check.h", cname = "gst_buffer_straw_start_pipeline")]
                public static void buffer_straw_start_pipeline (Gst.Element bin, Gst.Pad pad);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h", cname = "gst_buffer_straw_stop_pipeline")]
+               [CCode (cheader_filename = "gst/check/check.h", cname = "gst_buffer_straw_stop_pipeline")]
                public static void buffer_straw_stop_pipeline (Gst.Element bin, Gst.Pad pad);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static void caps_equal (Gst.Caps caps1, Gst.Caps caps2);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static Gst.FlowReturn chain_func (Gst.Pad pad, Gst.Object parent, Gst.Buffer buffer);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static void drop_buffers ();
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static void element_push_buffer (string element_name, Gst.Buffer buffer_in, Gst.Caps caps_in, Gst.Buffer buffer_out, Gst.Caps caps_out);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static void element_push_buffer_list (string element_name, owned GLib.List<Gst.Buffer> buffer_in, Gst.Caps caps_in, owned GLib.List<Gst.Buffer> buffer_out, Gst.Caps caps_out, Gst.FlowReturn last_flow_return);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static void init (int argc, string argv);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static void message_error (Gst.Message message, Gst.MessageType type, GLib.Quark domain, int code);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static Gst.Element setup_element (string factory);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
+               public static void setup_events (Gst.Pad srcpad, Gst.Element element, Gst.Caps? caps, Gst.Format format);
+               [CCode (cheader_filename = "gst/check/check.h")]
+               public static void setup_events_with_stream_id (Gst.Pad srcpad, Gst.Element element, Gst.Caps? caps, Gst.Format format, string stream_id);
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static Gst.Pad setup_sink_pad (Gst.Element element, Gst.StaticPadTemplate tmpl);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static Gst.Pad setup_sink_pad_by_name (Gst.Element element, Gst.StaticPadTemplate tmpl, string name);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
+               public static Gst.Pad setup_sink_pad_by_name_from_template (Gst.Element element, Gst.PadTemplate tmpl, string name);
+               [CCode (cheader_filename = "gst/check/check.h")]
+               public static Gst.Pad setup_sink_pad_from_template (Gst.Element element, Gst.PadTemplate tmpl);
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static Gst.Pad setup_src_pad (Gst.Element element, Gst.StaticPadTemplate tmpl);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static Gst.Pad setup_src_pad_by_name (Gst.Element element, Gst.StaticPadTemplate tmpl, string name);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
+               public static Gst.Pad setup_src_pad_by_name_from_template (Gst.Element element, Gst.PadTemplate tmpl, string name);
+               [CCode (cheader_filename = "gst/check/check.h")]
+               public static Gst.Pad setup_src_pad_from_template (Gst.Element element, Gst.PadTemplate tmpl);
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static void teardown_element (Gst.Element element);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static void teardown_pad_by_name (Gst.Element element, string name);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static void teardown_sink_pad (Gst.Element element);
-               [CCode (cheader_filename = "gst/check/gstbufferstraw.h,gst/check/gstcheck.h,gst/check/gstconsistencychecker.h,gst/check/internal-check.h")]
+               [CCode (cheader_filename = "gst/check/check.h")]
                public static void teardown_src_pad (Gst.Element element);
        }
 }
index 038cc2f..dacf931 100644 (file)
@@ -3,40 +3,40 @@
 [CCode (cprefix = "Gst", gir_namespace = "GstController", gir_version = "1.0", lower_case_cprefix = "gst_")]
 namespace Gst {
        namespace Controller {
-               [CCode (cheader_filename = "gst/controller/gstargbcontrolbinding.h,gst/controller/gstdirectcontrolbinding.h,gst/controller/gstinterpolationcontrolsource.h,gst/controller/gstlfocontrolsource.h,gst/controller/gsttimedvaluecontrolsource.h,gst/controller/gsttriggercontrolsource.h", cname = "GstARGBControlBinding", type_id = "gst_argb_control_binding_get_type ()")]
+               [CCode (cheader_filename = "gst/controller/controller.h", cname = "GstARGBControlBinding", lower_case_cprefix = "gst_argb_control_binding_", type_id = "gst_argb_control_binding_get_type ()")]
                [GIR (name = "ARGBControlBinding")]
                public class ARGBControlBinding : Gst.ControlBinding {
-                       [CCode (cname = "gst_argb_control_binding_new", has_construct_function = false, type = "GstControlBinding*")]
+                       [CCode (has_construct_function = false, type = "GstControlBinding*")]
                        public ARGBControlBinding (Gst.Object object, string property_name, Gst.ControlSource cs_a, Gst.ControlSource cs_r, Gst.ControlSource cs_g, Gst.ControlSource cs_b);
                        [NoAccessorMethod]
-                       public Gst.ControlSource control_source_a { owned get; construct; }
+                       public Gst.ControlSource control_source_a { owned get; set construct; }
                        [NoAccessorMethod]
-                       public Gst.ControlSource control_source_b { owned get; construct; }
+                       public Gst.ControlSource control_source_b { owned get; set construct; }
                        [NoAccessorMethod]
-                       public Gst.ControlSource control_source_g { owned get; construct; }
+                       public Gst.ControlSource control_source_g { owned get; set construct; }
                        [NoAccessorMethod]
-                       public Gst.ControlSource control_source_r { owned get; construct; }
+                       public Gst.ControlSource control_source_r { owned get; set construct; }
                }
-               [CCode (cheader_filename = "gst/controller/gstargbcontrolbinding.h,gst/controller/gstdirectcontrolbinding.h,gst/controller/gstinterpolationcontrolsource.h,gst/controller/gstlfocontrolsource.h,gst/controller/gsttimedvaluecontrolsource.h,gst/controller/gsttriggercontrolsource.h", cname = "GstDirectControlBinding", type_id = "gst_direct_control_binding_get_type ()")]
+               [CCode (cheader_filename = "gst/controller/controller.h", cname = "GstDirectControlBinding", lower_case_cprefix = "gst_direct_control_binding_", type_id = "gst_direct_control_binding_get_type ()")]
                [GIR (name = "DirectControlBinding")]
                public class DirectControlBinding : Gst.ControlBinding {
-                       [CCode (cname = "gst_direct_control_binding_new", has_construct_function = false, type = "GstControlBinding*")]
+                       [CCode (has_construct_function = false, type = "GstControlBinding*")]
                        public DirectControlBinding (Gst.Object object, string property_name, Gst.ControlSource cs);
                        [NoAccessorMethod]
-                       public Gst.ControlSource control_source { owned get; construct; }
+                       public Gst.ControlSource control_source { owned get; set construct; }
                }
-               [CCode (cheader_filename = "gst/controller/gstargbcontrolbinding.h,gst/controller/gstdirectcontrolbinding.h,gst/controller/gstinterpolationcontrolsource.h,gst/controller/gstlfocontrolsource.h,gst/controller/gsttimedvaluecontrolsource.h,gst/controller/gsttriggercontrolsource.h", cname = "GstInterpolationControlSource", type_id = "gst_interpolation_control_source_get_type ()")]
+               [CCode (cheader_filename = "gst/controller/controller.h", cname = "GstInterpolationControlSource", lower_case_cprefix = "gst_interpolation_control_source_", type_id = "gst_interpolation_control_source_get_type ()")]
                [GIR (name = "InterpolationControlSource")]
                public class InterpolationControlSource : Gst.Controller.TimedValueControlSource {
-                       [CCode (cname = "gst_interpolation_control_source_new", has_construct_function = false, type = "GstControlSource*")]
+                       [CCode (has_construct_function = false, type = "GstControlSource*")]
                        public InterpolationControlSource ();
                        [NoAccessorMethod]
                        public Gst.Controller.InterpolationMode mode { get; set; }
                }
-               [CCode (cheader_filename = "gst/controller/gstargbcontrolbinding.h,gst/controller/gstdirectcontrolbinding.h,gst/controller/gstinterpolationcontrolsource.h,gst/controller/gstlfocontrolsource.h,gst/controller/gsttimedvaluecontrolsource.h,gst/controller/gsttriggercontrolsource.h", cname = "GstLFOControlSource", type_id = "gst_lfo_control_source_get_type ()")]
+               [CCode (cheader_filename = "gst/controller/controller.h", cname = "GstLFOControlSource", lower_case_cprefix = "gst_lfo_control_source_", type_id = "gst_lfo_control_source_get_type ()")]
                [GIR (name = "LFOControlSource")]
                public class LFOControlSource : Gst.ControlSource {
-                       [CCode (cname = "gst_lfo_control_source_new", has_construct_function = false, type = "GstControlSource*")]
+                       [CCode (has_construct_function = false, type = "GstControlSource*")]
                        public LFOControlSource ();
                        [NoAccessorMethod]
                        public double amplitude { get; set; }
@@ -49,7 +49,7 @@ namespace Gst {
                        [NoAccessorMethod]
                        public Gst.Controller.LFOWaveform waveform { get; set; }
                }
-               [CCode (cheader_filename = "gst/controller/gstargbcontrolbinding.h,gst/controller/gstdirectcontrolbinding.h,gst/controller/gstinterpolationcontrolsource.h,gst/controller/gstlfocontrolsource.h,gst/controller/gsttimedvaluecontrolsource.h,gst/controller/gsttriggercontrolsource.h", cname = "GstTimedValueControlSource", type_id = "gst_timed_value_control_source_get_type ()")]
+               [CCode (cheader_filename = "gst/controller/controller.h", cname = "GstTimedValueControlSource", lower_case_cprefix = "gst_timed_value_control_source_", type_id = "gst_timed_value_control_source_get_type ()")]
                [GIR (name = "TimedValueControlSource")]
                public abstract class TimedValueControlSource : Gst.ControlSource {
                        public weak GLib.Mutex @lock;
@@ -58,30 +58,23 @@ namespace Gst {
                        public GLib.Sequence<Gst.Controller.ControlPoint?> values;
                        [CCode (has_construct_function = false)]
                        protected TimedValueControlSource ();
-                       [CCode (cname = "gst_timed_value_control_source_find_control_point_iter")]
                        public unowned GLib.SequenceIter find_control_point_iter (Gst.ClockTime timestamp);
-                       [CCode (cname = "gst_timed_value_control_source_get_all")]
                        public GLib.List<weak Gst.TimedValue?> get_all ();
-                       [CCode (cname = "gst_timed_value_control_source_get_count")]
                        public int get_count ();
-                       [CCode (cname = "gst_timed_value_control_source_set")]
                        public bool @set (Gst.ClockTime timestamp, double value);
-                       [CCode (cname = "gst_timed_value_control_source_set_from_list")]
                        public bool set_from_list (GLib.SList<Gst.TimedValue?> timedvalues);
-                       [CCode (cname = "gst_timed_value_control_source_unset")]
                        public bool unset (Gst.ClockTime timestamp);
-                       [CCode (cname = "gst_timed_value_control_source_unset_all")]
                        public void unset_all ();
                }
-               [CCode (cheader_filename = "gst/controller/gstargbcontrolbinding.h,gst/controller/gstdirectcontrolbinding.h,gst/controller/gstinterpolationcontrolsource.h,gst/controller/gstlfocontrolsource.h,gst/controller/gsttimedvaluecontrolsource.h,gst/controller/gsttriggercontrolsource.h", cname = "GstTriggerControlSource", type_id = "gst_trigger_control_source_get_type ()")]
+               [CCode (cheader_filename = "gst/controller/controller.h", cname = "GstTriggerControlSource", lower_case_cprefix = "gst_trigger_control_source_", type_id = "gst_trigger_control_source_get_type ()")]
                [GIR (name = "TriggerControlSource")]
                public class TriggerControlSource : Gst.Controller.TimedValueControlSource {
-                       [CCode (cname = "gst_trigger_control_source_new", has_construct_function = false, type = "GstControlSource*")]
+                       [CCode (has_construct_function = false, type = "GstControlSource*")]
                        public TriggerControlSource ();
                        [NoAccessorMethod]
                        public int64 tolerance { get; set; }
                }
-               [CCode (cheader_filename = "gst/controller/gstargbcontrolbinding.h,gst/controller/gstdirectcontrolbinding.h,gst/controller/gstinterpolationcontrolsource.h,gst/controller/gstlfocontrolsource.h,gst/controller/gsttimedvaluecontrolsource.h,gst/controller/gsttriggercontrolsource.h", cname = "GstControlPoint", has_type_id = false)]
+               [CCode (cheader_filename = "gst/controller/controller.h", cname = "GstControlPoint", has_type_id = false)]
                [GIR (name = "ControlPoint")]
                public struct ControlPoint {
                        public Gst.ClockTime timestamp;
@@ -91,14 +84,14 @@ namespace Gst {
                        [CCode (cname = "cache.cubic.z")]
                        public double cache_cubic_z;
                }
-               [CCode (cheader_filename = "gst/controller/gstargbcontrolbinding.h,gst/controller/gstdirectcontrolbinding.h,gst/controller/gstinterpolationcontrolsource.h,gst/controller/gstlfocontrolsource.h,gst/controller/gsttimedvaluecontrolsource.h,gst/controller/gsttriggercontrolsource.h", cname = "GstInterpolationMode", cprefix = "GST_INTERPOLATION_MODE_", type_id = "gst_interpolation_mode_get_type ()")]
+               [CCode (cheader_filename = "gst/controller/controller.h", cname = "GstInterpolationMode", cprefix = "GST_INTERPOLATION_MODE_", type_id = "gst_interpolation_mode_get_type ()")]
                [GIR (name = "InterpolationMode")]
                public enum InterpolationMode {
                        NONE,
                        LINEAR,
                        CUBIC
                }
-               [CCode (cheader_filename = "gst/controller/gstargbcontrolbinding.h,gst/controller/gstdirectcontrolbinding.h,gst/controller/gstinterpolationcontrolsource.h,gst/controller/gstlfocontrolsource.h,gst/controller/gsttimedvaluecontrolsource.h,gst/controller/gsttriggercontrolsource.h", cname = "GstLFOWaveform", cprefix = "GST_LFO_WAVEFORM_", type_id = "gst_lfo_waveform_get_type ()")]
+               [CCode (cheader_filename = "gst/controller/controller.h", cname = "GstLFOWaveform", cprefix = "GST_LFO_WAVEFORM_", type_id = "gst_lfo_waveform_get_type ()")]
                [GIR (name = "LFOWaveform")]
                public enum LFOWaveform {
                        SINE,
@@ -107,11 +100,11 @@ namespace Gst {
                        REVERSE_SAW,
                        TRIANGLE
                }
-               [CCode (cheader_filename = "gst/controller/gstargbcontrolbinding.h,gst/controller/gstdirectcontrolbinding.h,gst/controller/gstinterpolationcontrolsource.h,gst/controller/gstlfocontrolsource.h,gst/controller/gsttimedvaluecontrolsource.h,gst/controller/gsttriggercontrolsource.h", cname = "GstDirectControlBindingConvertGValue", has_target = false)]
+               [CCode (cheader_filename = "gst/controller/controller.h", cname = "GstDirectControlBindingConvertGValue", has_target = false)]
                public delegate void DirectControlBindingConvertGValue (Gst.Controller.DirectControlBinding self, double src_value, GLib.Value dest_value);
-               [CCode (cheader_filename = "gst/controller/gstargbcontrolbinding.h,gst/controller/gstdirectcontrolbinding.h,gst/controller/gstinterpolationcontrolsource.h,gst/controller/gstlfocontrolsource.h,gst/controller/gsttimedvaluecontrolsource.h,gst/controller/gsttriggercontrolsource.h", cname = "GstDirectControlBindingConvertValue", has_target = false)]
+               [CCode (cheader_filename = "gst/controller/controller.h", cname = "GstDirectControlBindingConvertValue", has_target = false)]
                public delegate void DirectControlBindingConvertValue (Gst.Controller.DirectControlBinding self, double src_value, void* dest_value);
-               [CCode (cheader_filename = "gst/controller/gstargbcontrolbinding.h,gst/controller/gstdirectcontrolbinding.h,gst/controller/gstinterpolationcontrolsource.h,gst/controller/gstlfocontrolsource.h,gst/controller/gsttimedvaluecontrolsource.h,gst/controller/gsttriggercontrolsource.h", cname = "gst_timed_value_control_invalidate_cache")]
+               [CCode (cheader_filename = "gst/controller/controller.h", cname = "gst_timed_value_control_invalidate_cache")]
                public static void timed_value_control_invalidate_cache (Gst.Controller.TimedValueControlSource self);
        }
 }
index 88c7165..cf2c52f 100644 (file)
@@ -3,7 +3,7 @@
 [CCode (cprefix = "Gst", gir_namespace = "GstFft", gir_version = "1.0", lower_case_cprefix = "gst_")]
 namespace Gst {
        namespace FFT {
-               [CCode (cheader_filename = "gst/fft/gstfft.h,gst/fft/gstfftf32.h,gst/fft/gstfftf64.h,gst/fft/gstffts16.h,gst/fft/gstffts32.h")]
+               [CCode (cheader_filename = "gst/fft/fft.h")]
                [Compact]
                [GIR (name = "FFTF32")]
                public class F32 {
@@ -13,7 +13,7 @@ namespace Gst {
                        public void inverse_fft (Gst.FFT.F32Complex freqdata, float timedata);
                        public void window (float timedata, Gst.FFT.Window window);
                }
-               [CCode (cheader_filename = "gst/fft/gstfft.h,gst/fft/gstfftf32.h,gst/fft/gstfftf64.h,gst/fft/gstffts16.h,gst/fft/gstffts32.h")]
+               [CCode (cheader_filename = "gst/fft/fft.h")]
                [Compact]
                [GIR (name = "FFTF64")]
                public class F64 {
@@ -23,7 +23,7 @@ namespace Gst {
                        public void inverse_fft (Gst.FFT.F64Complex freqdata, double timedata);
                        public void window (double timedata, Gst.FFT.Window window);
                }
-               [CCode (cheader_filename = "gst/fft/gstfft.h,gst/fft/gstfftf32.h,gst/fft/gstfftf64.h,gst/fft/gstffts16.h,gst/fft/gstffts32.h")]
+               [CCode (cheader_filename = "gst/fft/fft.h")]
                [Compact]
                [GIR (name = "FFTS16")]
                public class S16 {
@@ -33,7 +33,7 @@ namespace Gst {
                        public void inverse_fft (Gst.FFT.S16Complex freqdata, int16 timedata);
                        public void window (int16 timedata, Gst.FFT.Window window);
                }
-               [CCode (cheader_filename = "gst/fft/gstfft.h,gst/fft/gstfftf32.h,gst/fft/gstfftf64.h,gst/fft/gstffts16.h,gst/fft/gstffts32.h")]
+               [CCode (cheader_filename = "gst/fft/fft.h")]
                [Compact]
                [GIR (name = "FFTS32")]
                public class S32 {
@@ -43,31 +43,31 @@ namespace Gst {
                        public void inverse_fft (Gst.FFT.S32Complex freqdata, int32 timedata);
                        public void window (int32 timedata, Gst.FFT.Window window);
                }
-               [CCode (cheader_filename = "gst/fft/gstfft.h,gst/fft/gstfftf32.h,gst/fft/gstfftf64.h,gst/fft/gstffts16.h,gst/fft/gstffts32.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/fft/fft.h", has_type_id = false)]
                [GIR (name = "FFTF32Complex")]
                public struct F32Complex {
                        public float r;
                        public float i;
                }
-               [CCode (cheader_filename = "gst/fft/gstfft.h,gst/fft/gstfftf32.h,gst/fft/gstfftf64.h,gst/fft/gstffts16.h,gst/fft/gstffts32.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/fft/fft.h", has_type_id = false)]
                [GIR (name = "FFTF64Complex")]
                public struct F64Complex {
                        public double r;
                        public double i;
                }
-               [CCode (cheader_filename = "gst/fft/gstfft.h,gst/fft/gstfftf32.h,gst/fft/gstfftf64.h,gst/fft/gstffts16.h,gst/fft/gstffts32.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/fft/fft.h", has_type_id = false)]
                [GIR (name = "FFTS16Complex")]
                public struct S16Complex {
                        public int16 r;
                        public int16 i;
                }
-               [CCode (cheader_filename = "gst/fft/gstfft.h,gst/fft/gstfftf32.h,gst/fft/gstfftf64.h,gst/fft/gstffts16.h,gst/fft/gstffts32.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/fft/fft.h", has_type_id = false)]
                [GIR (name = "FFTS32Complex")]
                public struct S32Complex {
                        public int32 r;
                        public int32 i;
                }
-               [CCode (cheader_filename = "gst/fft/gstfft.h,gst/fft/gstfftf32.h,gst/fft/gstfftf64.h,gst/fft/gstffts16.h,gst/fft/gstffts32.h", cprefix = "GST_FFT_WINDOW_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/fft/fft.h", cprefix = "GST_FFT_WINDOW_", has_type_id = false)]
                [GIR (name = "FFTWindow")]
                public enum Window {
                        RECTANGULAR,
@@ -76,7 +76,7 @@ namespace Gst {
                        BARTLETT,
                        BLACKMAN
                }
-               [CCode (cheader_filename = "gst/fft/gstfft.h,gst/fft/gstfftf32.h,gst/fft/gstfftf64.h,gst/fft/gstffts16.h,gst/fft/gstffts32.h", cname = "gst_fft_next_fast_length")]
+               [CCode (cheader_filename = "gst/fft/fft.h", cname = "gst_fft_next_fast_length")]
                public static int fft_next_fast_length (int n);
        }
 }
index 562cee6..7e1675a 100644 (file)
@@ -3,7 +3,7 @@
 [CCode (cprefix = "Gst", gir_namespace = "GstNet", gir_version = "1.0", lower_case_cprefix = "gst_")]
 namespace Gst {
        namespace Net {
-               [CCode (cheader_filename = "gst/net/gstnet.h", type_id = "gst_net_client_clock_get_type ()")]
+               [CCode (cheader_filename = "gst/net/net.h", type_id = "gst_net_client_clock_get_type ()")]
                [GIR (name = "NetClientClock")]
                public class ClientClock : Gst.SystemClock {
                        [CCode (has_construct_function = false, type = "GstClock*")]
@@ -12,8 +12,10 @@ namespace Gst {
                        public string address { owned get; set; }
                        [NoAccessorMethod]
                        public int port { get; set; }
+                       [NoAccessorMethod]
+                       public uint64 round_trip_limit { get; set; }
                }
-               [CCode (cheader_filename = "gst/net/gstnet.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_net_time_packet_get_type ()")]
+               [CCode (cheader_filename = "gst/net/net.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_net_time_packet_get_type ()")]
                [Compact]
                [GIR (name = "NetTimePacket")]
                public class TimePacket {
@@ -29,7 +31,7 @@ namespace Gst {
                        public bool send (GLib.Socket socket, GLib.SocketAddress dest_address) throws GLib.Error;
                        public uint8 serialize ();
                }
-               [CCode (cheader_filename = "gst/net/gstnet.h", type_id = "gst_net_time_provider_get_type ()")]
+               [CCode (cheader_filename = "gst/net/net.h", type_id = "gst_net_time_provider_get_type ()")]
                [GIR (name = "NetTimeProvider")]
                public class TimeProvider : Gst.Object {
                        [CCode (has_construct_function = false)]
@@ -43,15 +45,17 @@ namespace Gst {
                        [NoAccessorMethod]
                        public int port { get; set; }
                }
-               [CCode (cheader_filename = "gst/net/gstnet.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/net/net.h", has_type_id = false)]
                [GIR (name = "NetAddressMeta")]
                public struct AddressMeta {
                        public Gst.Meta meta;
                        public weak GLib.SocketAddress addr;
                }
-               [CCode (cheader_filename = "gst/net/gstnet.h")]
+               [CCode (cheader_filename = "gst/net/net.h")]
                public static GLib.Type address_meta_api_get_type ();
-               [CCode (cheader_filename = "gst/net/gstnet.h")]
+               [CCode (cheader_filename = "gst/net/net.h")]
                public static unowned Gst.MetaInfo? address_meta_get_info ();
+               [CCode (cheader_filename = "gst/net/net.h", cname = "gst_buffer_add_net_address_meta")]
+               public static unowned Gst.Net.AddressMeta? buffer_add_net_address_meta (Gst.Buffer buffer, GLib.SocketAddress addr);
        }
 }
index 40e1376..dd211cf 100644 (file)
@@ -5,46 +5,44 @@ namespace Gst {
        namespace PbUtils {
                namespace Codec {
                        namespace AAC {
-                               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_codec_utils_aac_caps_set_level_and_profile")]
+                               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_aac_caps_set_level_and_profile")]
                                public static bool caps_set_level_and_profile (Gst.Caps caps, uint8 audio_config, uint len);
-                               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_codec_utils_aac_get_level")]
+                               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_aac_get_index_from_sample_rate")]
+                               public static int get_index_from_sample_rate (uint rate);
+                               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_aac_get_level")]
                                public static unowned string get_level (uint8 audio_config, uint len);
-                               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_codec_utils_aac_get_profile")]
+                               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_aac_get_profile")]
                                public static unowned string get_profile (uint8 audio_config, uint len);
-                               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_codec_utils_aac_get_sample_rate_from_index")]
+                               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_aac_get_sample_rate_from_index")]
                                public static uint get_sample_rate_from_index (uint sr_idx);
                        }
                        namespace H264 {
-                               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_codec_utils_h264_caps_set_level_and_profile")]
+                               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_h264_caps_set_level_and_profile")]
                                public static bool caps_set_level_and_profile (Gst.Caps caps, uint8 sps, uint len);
-                               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_codec_utils_h264_get_level")]
+                               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_h264_get_level")]
                                public static unowned string get_level (uint8 sps, uint len);
-                               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_codec_utils_h264_get_level_idc")]
+                               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_h264_get_level_idc")]
                                public static uint8 get_level_idc (string level);
-                               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_codec_utils_h264_get_profile")]
+                               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_h264_get_profile")]
                                public static unowned string get_profile (uint8 sps, uint len);
                        }
                        namespace MPEG4Video {
-                               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_codec_utils_mpeg4video_caps_set_level_and_profile")]
+                               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_mpeg4video_caps_set_level_and_profile")]
                                public static bool caps_set_level_and_profile (Gst.Caps caps, uint8 vis_obj_seq, uint len);
-                               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_codec_utils_mpeg4video_get_level")]
+                               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_mpeg4video_get_level")]
                                public static unowned string get_level (uint8 vis_obj_seq, uint len);
-                               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_codec_utils_mpeg4video_get_profile")]
+                               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_mpeg4video_get_profile")]
                                public static unowned string get_profile (uint8 vis_obj_seq, uint len);
                        }
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstDiscoverer", type_id = "gst_discoverer_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstDiscoverer", lower_case_cprefix = "gst_discoverer_", type_id = "gst_discoverer_get_type ()")]
                [GIR (name = "Discoverer")]
                public class Discoverer : GLib.Object {
-                       [CCode (cname = "gst_discoverer_new", has_construct_function = false)]
+                       [CCode (has_construct_function = false)]
                        public Discoverer (Gst.ClockTime timeout) throws GLib.Error;
-                       [CCode (cname = "gst_discoverer_discover_uri")]
                        public Gst.PbUtils.DiscovererInfo discover_uri (string uri) throws GLib.Error;
-                       [CCode (cname = "gst_discoverer_discover_uri_async")]
                        public bool discover_uri_async (string uri);
-                       [CCode (cname = "gst_discoverer_start")]
                        public void start ();
-                       [CCode (cname = "gst_discoverer_stop")]
                        public void stop ();
                        [NoAccessorMethod]
                        public uint64 timeout { get; set construct; }
@@ -53,236 +51,168 @@ namespace Gst {
                        public virtual signal void source_setup (Gst.Element source);
                        public virtual signal void starting ();
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstDiscovererAudioInfo", type_id = "gst_discoverer_audio_info_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstDiscovererAudioInfo", lower_case_cprefix = "gst_discoverer_audio_info_", type_id = "gst_discoverer_audio_info_get_type ()")]
                [GIR (name = "DiscovererAudioInfo")]
                public class DiscovererAudioInfo : Gst.PbUtils.DiscovererStreamInfo {
                        [CCode (has_construct_function = false)]
                        protected DiscovererAudioInfo ();
-                       [CCode (cname = "gst_discoverer_audio_info_get_bitrate")]
                        public uint get_bitrate ();
-                       [CCode (cname = "gst_discoverer_audio_info_get_channels")]
                        public uint get_channels ();
-                       [CCode (cname = "gst_discoverer_audio_info_get_depth")]
                        public uint get_depth ();
-                       [CCode (cname = "gst_discoverer_audio_info_get_language")]
                        public unowned string get_language ();
-                       [CCode (cname = "gst_discoverer_audio_info_get_max_bitrate")]
                        public uint get_max_bitrate ();
-                       [CCode (cname = "gst_discoverer_audio_info_get_sample_rate")]
                        public uint get_sample_rate ();
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstDiscovererContainerInfo", type_id = "gst_discoverer_container_info_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstDiscovererContainerInfo", lower_case_cprefix = "gst_discoverer_container_info_", type_id = "gst_discoverer_container_info_get_type ()")]
                [GIR (name = "DiscovererContainerInfo")]
                public class DiscovererContainerInfo : Gst.PbUtils.DiscovererStreamInfo {
                        [CCode (has_construct_function = false)]
                        protected DiscovererContainerInfo ();
-                       [CCode (cname = "gst_discoverer_container_info_get_streams")]
                        public GLib.List<Gst.PbUtils.DiscovererStreamInfo> get_streams ();
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstDiscovererInfo", type_id = "gst_discoverer_info_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstDiscovererInfo", lower_case_cprefix = "gst_discoverer_info_", type_id = "gst_discoverer_info_get_type ()")]
                [GIR (name = "DiscovererInfo")]
                public class DiscovererInfo : GLib.Object {
                        [CCode (has_construct_function = false)]
                        protected DiscovererInfo ();
-                       [CCode (cname = "gst_discoverer_info_copy")]
                        public Gst.PbUtils.DiscovererInfo copy ();
-                       [CCode (cname = "gst_discoverer_info_get_audio_streams")]
                        public GLib.List<Gst.PbUtils.DiscovererStreamInfo> get_audio_streams ();
-                       [CCode (cname = "gst_discoverer_info_get_container_streams")]
                        public GLib.List<Gst.PbUtils.DiscovererStreamInfo> get_container_streams ();
-                       [CCode (cname = "gst_discoverer_info_get_duration")]
                        public Gst.ClockTime get_duration ();
-                       [CCode (cname = "gst_discoverer_info_get_misc")]
+                       [Deprecated]
                        public unowned Gst.Structure get_misc ();
-                       [CCode (cname = "gst_discoverer_info_get_result")]
+                       [CCode (array_length = false, array_null_terminated = true)]
+                       public string[] get_missing_elements_installer_details ();
                        public Gst.PbUtils.DiscovererResult get_result ();
-                       [CCode (cname = "gst_discoverer_info_get_seekable")]
                        public bool get_seekable ();
-                       [CCode (cname = "gst_discoverer_info_get_stream_info")]
                        public Gst.PbUtils.DiscovererStreamInfo get_stream_info ();
-                       [CCode (cname = "gst_discoverer_info_get_stream_list")]
                        public GLib.List<Gst.PbUtils.DiscovererStreamInfo> get_stream_list ();
-                       [CCode (cname = "gst_discoverer_info_get_streams")]
                        public GLib.List<Gst.PbUtils.DiscovererStreamInfo> get_streams (GLib.Type streamtype);
-                       [CCode (cname = "gst_discoverer_info_get_subtitle_streams")]
                        public GLib.List<Gst.PbUtils.DiscovererStreamInfo> get_subtitle_streams ();
-                       [CCode (cname = "gst_discoverer_info_get_tags")]
                        public unowned Gst.TagList get_tags ();
-                       [CCode (cname = "gst_discoverer_info_get_toc")]
                        public unowned Gst.Toc get_toc ();
-                       [CCode (cname = "gst_discoverer_info_get_uri")]
                        public unowned string get_uri ();
-                       [CCode (cname = "gst_discoverer_info_get_video_streams")]
                        public GLib.List<Gst.PbUtils.DiscovererStreamInfo> get_video_streams ();
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstDiscovererStreamInfo", type_id = "gst_discoverer_stream_info_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstDiscovererStreamInfo", lower_case_cprefix = "gst_discoverer_stream_info_", type_id = "gst_discoverer_stream_info_get_type ()")]
                [GIR (name = "DiscovererStreamInfo")]
                public class DiscovererStreamInfo : GLib.Object {
                        [CCode (has_construct_function = false)]
                        protected DiscovererStreamInfo ();
-                       [CCode (cname = "gst_discoverer_stream_info_get_caps")]
                        public Gst.Caps get_caps ();
-                       [CCode (cname = "gst_discoverer_stream_info_get_misc")]
+                       [Deprecated]
                        public unowned Gst.Structure get_misc ();
-                       [CCode (cname = "gst_discoverer_stream_info_get_next")]
                        public Gst.PbUtils.DiscovererStreamInfo get_next ();
-                       [CCode (cname = "gst_discoverer_stream_info_get_previous")]
                        public Gst.PbUtils.DiscovererStreamInfo get_previous ();
-                       [CCode (cname = "gst_discoverer_stream_info_get_stream_type_nick")]
+                       public unowned string get_stream_id ();
                        public unowned string get_stream_type_nick ();
-                       [CCode (cname = "gst_discoverer_stream_info_get_tags")]
                        public unowned Gst.TagList get_tags ();
-                       [CCode (cname = "gst_discoverer_stream_info_get_toc")]
                        public unowned Gst.Toc get_toc ();
-                       [CCode (cname = "gst_discoverer_stream_info_list_free")]
                        public static void list_free (GLib.List<Gst.PbUtils.DiscovererStreamInfo> infos);
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstDiscovererSubtitleInfo", type_id = "gst_discoverer_subtitle_info_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstDiscovererSubtitleInfo", lower_case_cprefix = "gst_discoverer_subtitle_info_", type_id = "gst_discoverer_subtitle_info_get_type ()")]
                [GIR (name = "DiscovererSubtitleInfo")]
                public class DiscovererSubtitleInfo : Gst.PbUtils.DiscovererStreamInfo {
                        [CCode (has_construct_function = false)]
                        protected DiscovererSubtitleInfo ();
-                       [CCode (cname = "gst_discoverer_subtitle_info_get_language")]
                        public unowned string get_language ();
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstDiscovererVideoInfo", type_id = "gst_discoverer_video_info_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstDiscovererVideoInfo", lower_case_cprefix = "gst_discoverer_video_info_", type_id = "gst_discoverer_video_info_get_type ()")]
                [GIR (name = "DiscovererVideoInfo")]
                public class DiscovererVideoInfo : Gst.PbUtils.DiscovererStreamInfo {
                        [CCode (has_construct_function = false)]
                        protected DiscovererVideoInfo ();
-                       [CCode (cname = "gst_discoverer_video_info_get_bitrate")]
                        public uint get_bitrate ();
-                       [CCode (cname = "gst_discoverer_video_info_get_depth")]
                        public uint get_depth ();
-                       [CCode (cname = "gst_discoverer_video_info_get_framerate_denom")]
                        public uint get_framerate_denom ();
-                       [CCode (cname = "gst_discoverer_video_info_get_framerate_num")]
                        public uint get_framerate_num ();
-                       [CCode (cname = "gst_discoverer_video_info_get_height")]
                        public uint get_height ();
-                       [CCode (cname = "gst_discoverer_video_info_get_max_bitrate")]
                        public uint get_max_bitrate ();
-                       [CCode (cname = "gst_discoverer_video_info_get_par_denom")]
                        public uint get_par_denom ();
-                       [CCode (cname = "gst_discoverer_video_info_get_par_num")]
                        public uint get_par_num ();
-                       [CCode (cname = "gst_discoverer_video_info_get_width")]
                        public uint get_width ();
-                       [CCode (cname = "gst_discoverer_video_info_is_image")]
                        public bool is_image ();
-                       [CCode (cname = "gst_discoverer_video_info_is_interlaced")]
                        public bool is_interlaced ();
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstEncodingAudioProfile", type_id = "gst_encoding_audio_profile_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstEncodingAudioProfile", lower_case_cprefix = "gst_encoding_audio_profile_", type_id = "gst_encoding_audio_profile_get_type ()")]
                [GIR (name = "EncodingAudioProfile")]
                public class EncodingAudioProfile : Gst.PbUtils.EncodingProfile {
-                       [CCode (cname = "gst_encoding_audio_profile_new", has_construct_function = false)]
+                       [CCode (has_construct_function = false)]
                        public EncodingAudioProfile (Gst.Caps format, string? preset, Gst.Caps? restriction, uint presence);
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstEncodingContainerProfile", type_id = "gst_encoding_container_profile_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstEncodingContainerProfile", lower_case_cprefix = "gst_encoding_container_profile_", type_id = "gst_encoding_container_profile_get_type ()")]
                [GIR (name = "EncodingContainerProfile")]
                public class EncodingContainerProfile : Gst.PbUtils.EncodingProfile {
-                       [CCode (cname = "gst_encoding_container_profile_new", has_construct_function = false)]
+                       [CCode (has_construct_function = false)]
                        public EncodingContainerProfile (string? name, string? description, Gst.Caps format, string? preset);
-                       [CCode (cname = "gst_encoding_container_profile_add_profile")]
                        public bool add_profile (owned Gst.PbUtils.EncodingProfile profile);
-                       [CCode (cname = "gst_encoding_container_profile_contains_profile")]
                        public bool contains_profile (Gst.PbUtils.EncodingProfile profile);
-                       [CCode (cname = "gst_encoding_container_profile_get_profiles")]
                        public unowned GLib.List<Gst.PbUtils.EncodingProfile> get_profiles ();
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstEncodingProfile", type_id = "gst_encoding_profile_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstEncodingProfile", lower_case_cprefix = "gst_encoding_profile_", type_id = "gst_encoding_profile_get_type ()")]
                [GIR (name = "EncodingProfile")]
                public class EncodingProfile : GLib.Object {
                        [CCode (has_construct_function = false)]
                        protected EncodingProfile ();
-                       [CCode (cname = "gst_encoding_profile_find")]
                        public static Gst.PbUtils.EncodingProfile find (string targetname, string profilename, string? category);
-                       [CCode (cname = "gst_encoding_profile_from_discoverer")]
                        public static Gst.PbUtils.EncodingProfile from_discoverer (Gst.PbUtils.DiscovererInfo info);
-                       [CCode (cname = "gst_encoding_profile_get_description")]
                        public unowned string get_description ();
-                       [CCode (cname = "gst_encoding_profile_get_format")]
+                       public unowned string get_file_extension ();
                        public Gst.Caps get_format ();
-                       [CCode (cname = "gst_encoding_profile_get_input_caps")]
                        public Gst.Caps get_input_caps ();
-                       [CCode (cname = "gst_encoding_profile_get_name")]
                        public unowned string get_name ();
-                       [CCode (cname = "gst_encoding_profile_get_presence")]
                        public uint get_presence ();
-                       [CCode (cname = "gst_encoding_profile_get_preset")]
                        public unowned string get_preset ();
-                       [CCode (cname = "gst_encoding_profile_get_restriction")]
+                       public unowned string get_preset_name ();
                        public Gst.Caps get_restriction ();
-                       [CCode (cname = "gst_encoding_profile_get_type_nick")]
                        public unowned string get_type_nick ();
-                       [CCode (cname = "gst_encoding_profile_is_equal")]
                        public bool is_equal (Gst.PbUtils.EncodingProfile b);
-                       [CCode (cname = "gst_encoding_profile_set_description")]
                        public void set_description (string description);
-                       [CCode (cname = "gst_encoding_profile_set_format")]
                        public void set_format (Gst.Caps format);
-                       [CCode (cname = "gst_encoding_profile_set_name")]
                        public void set_name (string name);
-                       [CCode (cname = "gst_encoding_profile_set_presence")]
                        public void set_presence (uint presence);
-                       [CCode (cname = "gst_encoding_profile_set_preset")]
                        public void set_preset (string preset);
-                       [CCode (cname = "gst_encoding_profile_set_restriction")]
+                       public void set_preset_name (string preset_name);
                        public void set_restriction (owned Gst.Caps restriction);
+                       [NoAccessorMethod]
+                       public Gst.Caps restriction_caps { owned get; set; }
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstEncodingTarget", type_id = "gst_encoding_target_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstEncodingTarget", lower_case_cprefix = "gst_encoding_target_", type_id = "gst_encoding_target_get_type ()")]
                [GIR (name = "EncodingTarget")]
                public class EncodingTarget : GLib.Object {
-                       [CCode (cname = "gst_encoding_target_new", has_construct_function = false)]
+                       [CCode (has_construct_function = false)]
                        public EncodingTarget (string name, string category, string description, GLib.List<Gst.PbUtils.EncodingProfile> profiles);
-                       [CCode (cname = "gst_encoding_target_add_profile")]
                        public bool add_profile (owned Gst.PbUtils.EncodingProfile profile);
-                       [CCode (cname = "gst_encoding_target_get_category")]
                        public unowned string get_category ();
-                       [CCode (cname = "gst_encoding_target_get_description")]
                        public unowned string get_description ();
-                       [CCode (cname = "gst_encoding_target_get_name")]
                        public unowned string get_name ();
-                       [CCode (cname = "gst_encoding_target_get_profile")]
                        public Gst.PbUtils.EncodingProfile get_profile (string name);
-                       [CCode (cname = "gst_encoding_target_get_profiles")]
                        public unowned GLib.List<Gst.PbUtils.EncodingProfile> get_profiles ();
-                       [CCode (cname = "gst_encoding_target_load")]
                        public static Gst.PbUtils.EncodingTarget load (string name, string? category) throws GLib.Error;
-                       [CCode (cname = "gst_encoding_target_load_from_file")]
                        public static Gst.PbUtils.EncodingTarget load_from_file (string filepath) throws GLib.Error;
-                       [CCode (cname = "gst_encoding_target_save")]
                        public bool save () throws GLib.Error;
-                       [CCode (cname = "gst_encoding_target_save_to_file")]
                        public bool save_to_file (string filepath) throws GLib.Error;
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstEncodingVideoProfile", type_id = "gst_encoding_video_profile_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstEncodingVideoProfile", lower_case_cprefix = "gst_encoding_video_profile_", type_id = "gst_encoding_video_profile_get_type ()")]
                [GIR (name = "EncodingVideoProfile")]
                public class EncodingVideoProfile : Gst.PbUtils.EncodingProfile {
-                       [CCode (cname = "gst_encoding_video_profile_new", has_construct_function = false)]
+                       [CCode (has_construct_function = false)]
                        public EncodingVideoProfile (Gst.Caps format, string? preset, Gst.Caps? restriction, uint presence);
-                       [CCode (cname = "gst_encoding_video_profile_get_pass")]
                        public uint get_pass ();
-                       [CCode (cname = "gst_encoding_video_profile_get_variableframerate")]
                        public bool get_variableframerate ();
-                       [CCode (cname = "gst_encoding_video_profile_set_pass")]
                        public void set_pass (uint pass);
-                       [CCode (cname = "gst_encoding_video_profile_set_variableframerate")]
                        public void set_variableframerate (bool variableframerate);
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstInstallPluginsContext", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_install_plugins_context_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstInstallPluginsContext", copy_function = "g_boxed_copy", free_function = "g_boxed_free", lower_case_cprefix = "gst_install_plugins_context_", type_id = "gst_install_plugins_context_get_type ()")]
                [Compact]
                [GIR (name = "InstallPluginsContext")]
                public class InstallPluginsContext {
-                       [CCode (cname = "gst_install_plugins_context_new", has_construct_function = false)]
+                       [CCode (has_construct_function = false)]
                        public InstallPluginsContext ();
-                       [CCode (cname = "gst_install_plugins_context_free")]
                        public void free ();
-                       [CCode (cname = "gst_install_plugins_context_set_xid")]
                        public void set_xid (uint xid);
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstDiscovererResult", cprefix = "GST_DISCOVERER_", type_id = "gst_discoverer_result_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstDiscovererResult", cprefix = "GST_DISCOVERER_", type_id = "gst_discoverer_result_get_type ()")]
                [GIR (name = "DiscovererResult")]
                public enum DiscovererResult {
                        OK,
@@ -292,7 +222,7 @@ namespace Gst {
                        BUSY,
                        MISSING_PLUGINS
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstInstallPluginsReturn", cprefix = "GST_INSTALL_PLUGINS_", type_id = "gst_install_plugins_return_get_type ()")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstInstallPluginsReturn", cprefix = "GST_INSTALL_PLUGINS_", type_id = "gst_install_plugins_return_get_type ()")]
                [GIR (name = "InstallPluginsReturn")]
                public enum InstallPluginsReturn {
                        SUCCESS,
@@ -307,83 +237,93 @@ namespace Gst {
                        HELPER_MISSING,
                        INSTALL_IN_PROGRESS
                }
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GstInstallPluginsResultFunc", instance_pos = 1.9)]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GstInstallPluginsResultFunc", instance_pos = 1.9)]
                public delegate void InstallPluginsResultFunc (Gst.PbUtils.InstallPluginsReturn result);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GST_ENCODING_CATEGORY_CAPTURE")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GST_ENCODING_CATEGORY_CAPTURE")]
                public const string ENCODING_CATEGORY_CAPTURE;
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GST_ENCODING_CATEGORY_DEVICE")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GST_ENCODING_CATEGORY_DEVICE")]
                public const string ENCODING_CATEGORY_DEVICE;
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GST_ENCODING_CATEGORY_ONLINE_SERVICE")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GST_ENCODING_CATEGORY_ONLINE_SERVICE")]
                public const string ENCODING_CATEGORY_ONLINE_SERVICE;
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GST_ENCODING_CATEGORY_STORAGE_EDITING")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GST_ENCODING_CATEGORY_STORAGE_EDITING")]
                public const string ENCODING_CATEGORY_STORAGE_EDITING;
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GST_PLUGINS_BASE_VERSION_MAJOR")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GST_PLUGINS_BASE_VERSION_MAJOR")]
                public const int PLUGINS_BASE_VERSION_MAJOR;
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GST_PLUGINS_BASE_VERSION_MICRO")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GST_PLUGINS_BASE_VERSION_MICRO")]
                public const int PLUGINS_BASE_VERSION_MICRO;
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GST_PLUGINS_BASE_VERSION_MINOR")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GST_PLUGINS_BASE_VERSION_MINOR")]
                public const int PLUGINS_BASE_VERSION_MINOR;
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "GST_PLUGINS_BASE_VERSION_NANO")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "GST_PLUGINS_BASE_VERSION_NANO")]
                public const int PLUGINS_BASE_VERSION_NANO;
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h")]
-               public static bool add_codec_description_to_tag_list (Gst.TagList taglist, string codec_tag, Gst.Caps caps);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_encoding_list_all_targets")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h")]
+               public static bool add_codec_description_to_tag_list (Gst.TagList taglist, string? codec_tag, Gst.Caps caps);
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_h265_caps_set_level_tier_and_profile")]
+               public static bool codec_utils_h265_caps_set_level_tier_and_profile (Gst.Caps caps, uint8 profile_tier_level, uint len);
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_h265_get_level")]
+               public static unowned string codec_utils_h265_get_level (uint8 profile_tier_level, uint len);
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_h265_get_level_idc")]
+               public static uint8 codec_utils_h265_get_level_idc (string level);
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_h265_get_profile")]
+               public static unowned string codec_utils_h265_get_profile (uint8 profile_tier_level, uint len);
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_codec_utils_h265_get_tier")]
+               public static unowned string codec_utils_h265_get_tier (uint8 profile_tier_level, uint len);
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_encoding_list_all_targets")]
                public static GLib.List<Gst.PbUtils.EncodingTarget> encoding_list_all_targets (string? categoryname);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_encoding_list_available_categories")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_encoding_list_available_categories")]
                public static GLib.List<string> encoding_list_available_categories ();
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h")]
                public static string get_codec_description (Gst.Caps caps);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h")]
                public static string get_decoder_description (Gst.Caps caps);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h")]
                public static string get_element_description (string factory_name);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h")]
                public static string get_encoder_description (Gst.Caps caps);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h")]
                public static string get_sink_description (string protocol);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h")]
                public static string get_source_description (string protocol);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h")]
                public static void init ();
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_install_plugins_async")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_install_plugins_async")]
                public static Gst.PbUtils.InstallPluginsReturn install_plugins_async ([CCode (array_length = false, array_null_terminated = true)] string[] details, Gst.PbUtils.InstallPluginsContext? ctx, [CCode (scope = "async")] owned Gst.PbUtils.InstallPluginsResultFunc func);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_install_plugins_installation_in_progress")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_install_plugins_installation_in_progress")]
                public static bool install_plugins_installation_in_progress ();
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_install_plugins_return_get_name")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_install_plugins_return_get_name")]
                public static unowned string install_plugins_return_get_name (Gst.PbUtils.InstallPluginsReturn ret);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_install_plugins_supported")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_install_plugins_supported")]
                public static bool install_plugins_supported ();
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_install_plugins_sync")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_install_plugins_sync")]
                public static Gst.PbUtils.InstallPluginsReturn install_plugins_sync ([CCode (array_length = false, array_null_terminated = true)] string[] details, Gst.PbUtils.InstallPluginsContext? ctx);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_is_missing_plugin_message")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_is_missing_plugin_message")]
                public static bool is_missing_plugin_message (Gst.Message msg);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_missing_decoder_installer_detail_new")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_missing_decoder_installer_detail_new")]
                public static string missing_decoder_installer_detail_new (Gst.Caps decode_caps);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_missing_decoder_message_new")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_missing_decoder_message_new")]
                public static Gst.Message missing_decoder_message_new (Gst.Element element, Gst.Caps decode_caps);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_missing_element_installer_detail_new")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_missing_element_installer_detail_new")]
                public static string missing_element_installer_detail_new (string factory_name);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_missing_element_message_new")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_missing_element_message_new")]
                public static Gst.Message missing_element_message_new (Gst.Element element, string factory_name);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_missing_encoder_installer_detail_new")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_missing_encoder_installer_detail_new")]
                public static string missing_encoder_installer_detail_new (Gst.Caps encode_caps);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_missing_encoder_message_new")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_missing_encoder_message_new")]
                public static Gst.Message missing_encoder_message_new (Gst.Element element, Gst.Caps encode_caps);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_missing_plugin_message_get_description")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_missing_plugin_message_get_description")]
                public static string missing_plugin_message_get_description (Gst.Message msg);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_missing_plugin_message_get_installer_detail")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_missing_plugin_message_get_installer_detail")]
                public static string missing_plugin_message_get_installer_detail (Gst.Message msg);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_missing_uri_sink_installer_detail_new")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_missing_uri_sink_installer_detail_new")]
                public static string missing_uri_sink_installer_detail_new (string protocol);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_missing_uri_sink_message_new")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_missing_uri_sink_message_new")]
                public static Gst.Message missing_uri_sink_message_new (Gst.Element element, string protocol);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_missing_uri_source_installer_detail_new")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_missing_uri_source_installer_detail_new")]
                public static string missing_uri_source_installer_detail_new (string protocol);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_missing_uri_source_message_new")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_missing_uri_source_message_new")]
                public static Gst.Message missing_uri_source_message_new (Gst.Element element, string protocol);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_plugins_base_version")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_plugins_base_version")]
                public static void plugins_base_version (out uint major, out uint minor, out uint micro, out uint nano);
-               [CCode (cheader_filename = "gst/pbutils/codec-utils.h,gst/pbutils/descriptions.h,gst/pbutils/encoding-profile.h,gst/pbutils/encoding-target.h,gst/pbutils/gstdiscoverer.h,gst/pbutils/gstpluginsbaseversion.h,gst/pbutils/install-plugins.h,gst/pbutils/missing-plugins.h,gst/pbutils/pbutils-enumtypes.h,gst/pbutils/pbutils.h", cname = "gst_plugins_base_version_string")]
+               [CCode (cheader_filename = "gst/pbutils/pbutils.h", cname = "gst_plugins_base_version_string")]
                public static string plugins_base_version_string ();
        }
 }
diff --git a/vapi/gstreamer-riff-1.0.deps b/vapi/gstreamer-riff-1.0.deps
new file mode 100644 (file)
index 0000000..0a75713
--- /dev/null
@@ -0,0 +1,4 @@
+gstreamer-1.0
+gstreamer-audio-1.0
+gstreamer-base-1.0
+gstreamer-tag-1.0
diff --git a/vapi/gstreamer-riff-1.0.vapi b/vapi/gstreamer-riff-1.0.vapi
new file mode 100644 (file)
index 0000000..89a8d0b
--- /dev/null
@@ -0,0 +1,347 @@
+/* gstreamer-riff-1.0.vapi generated by vapigen, do not modify. */
+
+[CCode (cprefix = "Gst", gir_namespace = "GstRiff", gir_version = "1.0", lower_case_cprefix = "gst_")]
+namespace Gst {
+       namespace Riff {
+               namespace WaveFormat {
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_A52")]
+                       public const int A52;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_AAC")]
+                       public const int AAC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_AAC_AC")]
+                       public const int AAC_AC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_AAC_pm")]
+                       public const int AAC_pm;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ADPCM")]
+                       public const int ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ADPCM_IMA_DK3")]
+                       public const int ADPCM_IMA_DK3;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ADPCM_IMA_DK4")]
+                       public const int ADPCM_IMA_DK4;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ADPCM_IMA_WAV")]
+                       public const int ADPCM_IMA_WAV;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ALAW")]
+                       public const int ALAW;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_AMR_NB")]
+                       public const int AMR_NB;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_AMR_WB")]
+                       public const int AMR_WB;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_APTX")]
+                       public const int APTX;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_AUDIOFILE_AF10")]
+                       public const int AUDIOFILE_AF10;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_AUDIOFILE_AF36")]
+                       public const int AUDIOFILE_AF36;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_BTV_DIGITAL")]
+                       public const int BTV_DIGITAL;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_CANOPUS_ATRAC")]
+                       public const int CANOPUS_ATRAC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_CIRRUS")]
+                       public const int CIRRUS;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_CONTROL_RES_CR10")]
+                       public const int CONTROL_RES_CR10;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_CONTROL_RES_VQLPC")]
+                       public const int CONTROL_RES_VQLPC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_CREATIVE_ADPCM")]
+                       public const int CREATIVE_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_CREATIVE_FASTSPEECH10")]
+                       public const int CREATIVE_FASTSPEECH10;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_CREATIVE_FASTSPEECH8")]
+                       public const int CREATIVE_FASTSPEECH8;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_CS2")]
+                       public const int CS2;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_CS_IMAADPCM")]
+                       public const int CS_IMAADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_CU_CODEC")]
+                       public const int CU_CODEC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DF_G726")]
+                       public const int DF_G726;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DF_GSM610")]
+                       public const int DF_GSM610;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DIALOGIC_OKI_ADPCM")]
+                       public const int DIALOGIC_OKI_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DIGIADPCM")]
+                       public const int DIGIADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DIGIFIX")]
+                       public const int DIGIFIX;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DIGIREAL")]
+                       public const int DIGIREAL;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DIGISTD")]
+                       public const int DIGISTD;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DIGITAL_G723")]
+                       public const int DIGITAL_G723;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DOLBY_AC2")]
+                       public const int DOLBY_AC2;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DOLBY_AC3_SPDIF")]
+                       public const int DOLBY_AC3_SPDIF;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DSAT_DISPLAY")]
+                       public const int DSAT_DISPLAY;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DSP_TRUESPEECH")]
+                       public const int DSP_TRUESPEECH;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DTS")]
+                       public const int DTS;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_DVI_ADPCM")]
+                       public const int DVI_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ECHOSC1")]
+                       public const int ECHOSC1;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ECHOSC3")]
+                       public const int ECHOSC3;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ESPCM")]
+                       public const int ESPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_EXTENSIBLE")]
+                       public const int EXTENSIBLE;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_FLAC")]
+                       public const int FLAC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_FM_TOWNS_SND")]
+                       public const int FM_TOWNS_SND;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_G722_ADPCM")]
+                       public const int G722_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_G723_ADPCM")]
+                       public const int G723_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_G726ADPCM")]
+                       public const int G726ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_G726_ADPCM")]
+                       public const int G726_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_G728_CELP")]
+                       public const int G728_CELP;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_G729A")]
+                       public const int G729A;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_GSM610")]
+                       public const int GSM610;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_GSM_AMR_CBR")]
+                       public const int GSM_AMR_CBR;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_GSM_AMR_VBR")]
+                       public const int GSM_AMR_VBR;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_IBM_CVSD")]
+                       public const int IBM_CVSD;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_IEEE_FLOAT")]
+                       public const int IEEE_FLOAT;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ILINK_VC")]
+                       public const int ILINK_VC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_IMC")]
+                       public const int IMC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_IPI_HSX")]
+                       public const int IPI_HSX;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_IPI_RPELP")]
+                       public const int IPI_RPELP;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ISIAUDIO")]
+                       public const int ISIAUDIO;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ITU_G721_ADPCM")]
+                       public const int ITU_G721_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ITU_G726_ADPCM")]
+                       public const int ITU_G726_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_LH_CODEC")]
+                       public const int LH_CODEC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_LRC")]
+                       public const int LRC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_LUCENT_G723")]
+                       public const int LUCENT_G723;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_MALDEN_PHONYTALK")]
+                       public const int MALDEN_PHONYTALK;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_MEDIASONIC_G723")]
+                       public const int MEDIASONIC_G723;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_MEDIASPACE_ADPCM")]
+                       public const int MEDIASPACE_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_MEDIAVISION_ADPCM")]
+                       public const int MEDIAVISION_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_MPEGL12")]
+                       public const int MPEGL12;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_MPEGL3")]
+                       public const int MPEGL3;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_MSG723")]
+                       public const int MSG723;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_MSN")]
+                       public const int MSN;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_MSRT24")]
+                       public const int MSRT24;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_MULAW")]
+                       public const int MULAW;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_MVI_MVI2")]
+                       public const int MVI_MVI2;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_NMS_VBXADPCM")]
+                       public const int NMS_VBXADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_NORRIS")]
+                       public const int NORRIS;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_OKI_ADPCM")]
+                       public const int OKI_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_OLIADPCM")]
+                       public const int OLIADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_OLICELP")]
+                       public const int OLICELP;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_OLIGSM")]
+                       public const int OLIGSM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_OLIOPR")]
+                       public const int OLIOPR;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_OLISBC")]
+                       public const int OLISBC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ONLIVE")]
+                       public const int ONLIVE;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_PAC")]
+                       public const int PAC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_PACKED")]
+                       public const int PACKED;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_PCM")]
+                       public const int PCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_PHILIPS_LPCBB")]
+                       public const int PHILIPS_LPCBB;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_PROSODY_1612")]
+                       public const int PROSODY_1612;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_PROSODY_8KBPS")]
+                       public const int PROSODY_8KBPS;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_QDESIGN_MUSIC")]
+                       public const int QDESIGN_MUSIC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_QUALCOMM_HALFRATE")]
+                       public const int QUALCOMM_HALFRATE;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_QUALCOMM_PUREVOICE")]
+                       public const int QUALCOMM_PUREVOICE;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_QUARTERDECK")]
+                       public const int QUARTERDECK;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_RAW_SPORT")]
+                       public const int RAW_SPORT;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_RHETOREX_ADPCM")]
+                       public const int RHETOREX_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ROCKWELL_ADPCM")]
+                       public const int ROCKWELL_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ROCKWELL_DIGITALK")]
+                       public const int ROCKWELL_DIGITALK;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_RT24")]
+                       public const int RT24;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SANYO_LD_ADPCM")]
+                       public const int SANYO_LD_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SBC24")]
+                       public const int SBC24;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SIERRA_ADPCM")]
+                       public const int SIERRA_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SIPROLAB_ACELP4800")]
+                       public const int SIPROLAB_ACELP4800;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SIPROLAB_ACELP8V3")]
+                       public const int SIPROLAB_ACELP8V3;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SIPROLAB_ACEPLNET")]
+                       public const int SIPROLAB_ACEPLNET;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SIPROLAB_G729")]
+                       public const int SIPROLAB_G729;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SIPROLAB_G729A")]
+                       public const int SIPROLAB_G729A;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SIPROLAB_KELVIN")]
+                       public const int SIPROLAB_KELVIN;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SIREN")]
+                       public const int SIREN;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SOFTSOUND")]
+                       public const int SOFTSOUND;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SONARC")]
+                       public const int SONARC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SONIC")]
+                       public const int SONIC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SONIC_LS")]
+                       public const int SONIC_LS;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SONY_ATRAC3")]
+                       public const int SONY_ATRAC3;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS")]
+                       public const int SOUNDSPACE_MUSICOMPRESS;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_TPC")]
+                       public const int TPC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_TUBGSM")]
+                       public const int TUBGSM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_UHER_ADPCM")]
+                       public const int UHER_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_UNKNOWN")]
+                       public const int UNKNOWN;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VIVO_G723")]
+                       public const int VIVO_G723;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VIVO_SIREN")]
+                       public const int VIVO_SIREN;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VME_VMPCM")]
+                       public const int VME_VMPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VORBIS1")]
+                       public const int VORBIS1;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VORBIS1PLUS")]
+                       public const int VORBIS1PLUS;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VORBIS2")]
+                       public const int VORBIS2;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VORBIS2PLUS")]
+                       public const int VORBIS2PLUS;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VORBIS3")]
+                       public const int VORBIS3;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VORBIS3PLUS")]
+                       public const int VORBIS3PLUS;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE")]
+                       public const int VOXWARE;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE_AC10")]
+                       public const int VOXWARE_AC10;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE_AC16")]
+                       public const int VOXWARE_AC16;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE_AC20")]
+                       public const int VOXWARE_AC20;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE_AC8")]
+                       public const int VOXWARE_AC8;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE_BYTE_ALIGNED")]
+                       public const int VOXWARE_BYTE_ALIGNED;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE_METASOUND")]
+                       public const int VOXWARE_METASOUND;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE_METAVOICE")]
+                       public const int VOXWARE_METAVOICE;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE_RT29HW")]
+                       public const int VOXWARE_RT29HW;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE_TQ40")]
+                       public const int VOXWARE_TQ40;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE_TQ60")]
+                       public const int VOXWARE_TQ60;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE_VR12")]
+                       public const int VOXWARE_VR12;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VOXWARE_VR18")]
+                       public const int VOXWARE_VR18;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_VSELP")]
+                       public const int VSELP;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_WMAV1")]
+                       public const int WMAV1;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_WMAV2")]
+                       public const int WMAV2;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_WMAV3")]
+                       public const int WMAV3;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_WMAV3_L")]
+                       public const int WMAV3_L;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_WMS")]
+                       public const int WMS;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_XEBEC")]
+                       public const int XEBEC;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_YAMAHA_ADPCM")]
+                       public const int YAMAHA_ADPCM;
+                       [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_WAVE_FORMAT_ZYXEL_ADPCM")]
+                       public const int ZYXEL_ADPCM;
+               }
+               [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_IBM_FORMAT_ADPCM")]
+               public const int IBM_FORMAT_ADPCM;
+               [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_IBM_FORMAT_ALAW")]
+               public const int IBM_FORMAT_ALAW;
+               [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_IBM_FORMAT_MULAW")]
+               public const int IBM_FORMAT_MULAW;
+               [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_IF_COMPUSE")]
+               public const int IF_COMPUSE;
+               [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_IF_KEYFRAME")]
+               public const int IF_KEYFRAME;
+               [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_IF_LIST")]
+               public const int IF_LIST;
+               [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_IF_NO_TIME")]
+               public const int IF_NO_TIME;
+               [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_STRH_DISABLED")]
+               public const int STRH_DISABLED;
+               [CCode (cheader_filename = "gst/riff/riff.h", cname = "GST_RIFF_STRH_VIDEOPALCHANGES")]
+               public const int STRH_VIDEOPALCHANGES;
+               [CCode (cheader_filename = "gst/riff/riff.h")]
+               public static Gst.Caps create_audio_template_caps ();
+               [CCode (cheader_filename = "gst/riff/riff.h")]
+               public static Gst.Caps create_iavs_template_caps ();
+               [CCode (cheader_filename = "gst/riff/riff.h")]
+               public static Gst.Caps create_video_template_caps ();
+               [CCode (cheader_filename = "gst/riff/riff.h")]
+               public static void init ();
+               [CCode (cheader_filename = "gst/riff/riff.h")]
+               public static bool parse_chunk (Gst.Element element, Gst.Buffer buf, uint offset, uint32 fourcc, Gst.Buffer chunk_data);
+               [CCode (cheader_filename = "gst/riff/riff.h")]
+               public static bool parse_file_header (Gst.Element element, Gst.Buffer buf, uint32 doctype);
+               [CCode (cheader_filename = "gst/riff/riff.h")]
+               public static void parse_info (Gst.Element element, Gst.Buffer buf, Gst.TagList taglist);
+               [CCode (cheader_filename = "gst/riff/riff.h")]
+               public static Gst.FlowReturn read_chunk (Gst.Element element, Gst.Pad pad, uint64 offset, uint32 tag, Gst.Buffer chunk_data);
+       }
+}
index 17d63f3..8f67ae7 100644 (file)
@@ -3,7 +3,7 @@
 [CCode (cprefix = "Gst", gir_namespace = "GstRtp", gir_version = "1.0", lower_case_cprefix = "gst_")]
 namespace Gst {
        namespace RTP {
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", type_id = "gst_rtp_base_audio_payload_get_type ()")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", type_id = "gst_rtp_base_audio_payload_get_type ()")]
                [GIR (name = "RTPBaseAudioPayload")]
                public class BaseAudioPayload : Gst.RTP.BasePayload {
                        public Gst.ClockTime base_ts;
@@ -23,7 +23,7 @@ namespace Gst {
                        [NoAccessorMethod]
                        public bool buffer_list { get; set; }
                }
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", type_id = "gst_rtp_base_depayload_get_type ()")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", type_id = "gst_rtp_base_depayload_get_type ()")]
                [GIR (name = "RTPBaseDepayload")]
                public abstract class BaseDepayload : Gst.Element {
                        public uint clock_rate;
@@ -43,8 +43,10 @@ namespace Gst {
                        public Gst.FlowReturn push_list (Gst.BufferList out_list);
                        [NoWrapper]
                        public virtual bool set_caps (Gst.Caps caps);
+                       [NoAccessorMethod]
+                       public Gst.Structure stats { owned get; }
                }
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", type_id = "gst_rtp_base_payload_get_type ()")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", type_id = "gst_rtp_base_payload_get_type ()")]
                [GIR (name = "RTPBasePayload")]
                public abstract class BasePayload : Gst.Element {
                        [CCode (has_construct_function = false)]
@@ -84,11 +86,13 @@ namespace Gst {
                        [NoAccessorMethod]
                        public uint ssrc { get; set; }
                        [NoAccessorMethod]
+                       public Gst.Structure stats { owned get; }
+                       [NoAccessorMethod]
                        public uint timestamp { get; }
                        [NoAccessorMethod]
                        public uint timestamp_offset { get; set; }
                }
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                [Compact]
                [GIR (name = "RTPBuffer")]
                public class Buffer : Gst.Buffer {
@@ -104,6 +108,7 @@ namespace Gst {
                        public uint32 get_csrc (uint8 idx);
                        public uint8 get_csrc_count ();
                        public bool get_extension ();
+                       public GLib.Bytes get_extension_bytes (out uint16 bits);
                        public bool get_extension_data (out uint16 bits, [CCode (array_length = false)] out unowned uint8[] data, out uint wordlen);
                        public bool get_extension_onebyte_header (uint8 id, uint nth, [CCode (array_length_cname = "size", array_length_pos = 3.1, array_length_type = "guint")] out unowned uint8[] data);
                        public bool get_extension_twobytes_header (out uint8 appbits, uint8 id, uint nth, [CCode (array_length_cname = "size", array_length_pos = 4.1, array_length_type = "guint")] out unowned uint8[] data);
@@ -114,6 +119,7 @@ namespace Gst {
                        [CCode (array_length = false)]
                        public unowned uint8[] get_payload ();
                        public Gst.Buffer get_payload_buffer ();
+                       public GLib.Bytes get_payload_bytes ();
                        public uint get_payload_len ();
                        public Gst.Buffer get_payload_subbuffer (uint offset, uint len);
                        public uint8 get_payload_type ();
@@ -135,7 +141,7 @@ namespace Gst {
                        public void set_version (uint8 version);
                        public void unmap ();
                }
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", has_type_id = false)]
                [GIR (name = "RTPPayloadInfo")]
                public struct PayloadInfo {
                        public uint8 payload_type;
@@ -145,7 +151,7 @@ namespace Gst {
                        public weak string encoding_parameters;
                        public uint bitrate;
                }
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cprefix = "GST_RTP_PAYLOAD_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cprefix = "GST_RTP_PAYLOAD_", has_type_id = false)]
                [GIR (name = "RTPPayload")]
                public enum Payload {
                        PCMU,
@@ -210,39 +216,57 @@ namespace Gst {
                        public const int TS48;
                        public const string TS48_STRING;
                }
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GST_RTP_VERSION")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTP_HDREXT_BASE")]
+               public const string HDREXT_BASE;
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTP_HDREXT_NTP_56")]
+               public const string HDREXT_NTP_56;
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTP_HDREXT_NTP_56_SIZE")]
+               public const int HDREXT_NTP_56_SIZE;
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTP_HDREXT_NTP_64")]
+               public const string HDREXT_NTP_64;
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTP_HDREXT_NTP_64_SIZE")]
+               public const int HDREXT_NTP_64_SIZE;
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTP_VERSION")]
                public const int VERSION;
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static void buffer_allocate_data (Gst.Buffer buffer, uint payload_len, uint8 pad_len, uint8 csrc_count);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static uint buffer_calc_header_len (uint8 csrc_count);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static uint buffer_calc_packet_len (uint payload_len, uint8 pad_len, uint8 csrc_count);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static uint buffer_calc_payload_len (uint packet_len, uint8 pad_len, uint8 csrc_count);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static int buffer_compare_seqnum (uint16 seqnum1, uint16 seqnum2);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static uint32 buffer_default_clock_rate (uint8 payload_type);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static uint64 buffer_ext_timestamp (uint64 exttimestamp, uint32 timestamp);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static bool buffer_map (Gst.Buffer buffer, Gst.MapFlags flags, out unowned Gst.RTP.Buffer rtp);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static Gst.Buffer buffer_new_allocate (uint payload_len, uint8 pad_len, uint8 csrc_count);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static Gst.Buffer buffer_new_allocate_len (uint packet_len, uint8 pad_len, uint8 csrc_count);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static Gst.Buffer buffer_new_copy_data ([CCode (array_length_cname = "len", array_length_pos = 1.1, array_length_type = "gsize")] uint8[] data);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static Gst.Buffer buffer_new_take_data ([CCode (array_length_cname = "len", array_length_pos = 1.1, array_length_type = "gsize")] owned uint8[] data);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
+               public static bool hdrext_get_ntp_56 (void* data, uint size, uint64 ntptime);
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
+               public static bool hdrext_get_ntp_64 (void* data, uint size, uint64 ntptime);
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
+               public static bool hdrext_set_ntp_56 (void* data, uint size, uint64 ntptime);
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
+               public static bool hdrext_set_ntp_64 (void* data, uint size, uint64 ntptime);
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static unowned Gst.RTP.PayloadInfo? payload_info_for_name (string media, string encoding_name);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h")]
                public static unowned Gst.RTP.PayloadInfo? payload_info_for_pt (uint8 payload_type);
        }
        namespace RTPC {
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GstRTCPBuffer")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GstRTCPBuffer")]
                [Compact]
                [GIR (name = "RTCPBuffer")]
                public class Buffer : Gst.Buffer {
@@ -256,7 +280,7 @@ namespace Gst {
                        [CCode (cname = "gst_rtcp_buffer_unmap")]
                        public bool unmap ();
                }
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GstRTCPPacket", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GstRTCPPacket", has_type_id = false)]
                [GIR (name = "RTCPPacket")]
                public struct Packet {
                        public weak Gst.RTPC.Buffer rtcp;
@@ -342,13 +366,14 @@ namespace Gst {
                        [CCode (cname = "gst_rtcp_packet_sr_set_sender_info")]
                        public void sr_set_sender_info (uint32 ssrc, uint64 ntptime, uint32 rtptime, uint32 packet_count, uint32 octet_count);
                }
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GstRTCPFBType", cprefix = "GST_RTCP_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GstRTCPFBType", cprefix = "GST_RTCP_", has_type_id = false)]
                [GIR (name = "RTCPFBType")]
                public enum FBType {
                        FB_TYPE_INVALID,
                        RTPFB_TYPE_NACK,
                        RTPFB_TYPE_TMMBR,
                        RTPFB_TYPE_TMMBN,
+                       RTPFB_TYPE_RCTP_SR_REQ,
                        PSFB_TYPE_PLI,
                        PSFB_TYPE_SLI,
                        PSFB_TYPE_RPSI,
@@ -358,7 +383,7 @@ namespace Gst {
                        PSFB_TYPE_TSTN,
                        PSFB_TYPE_VBCN
                }
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GstRTCPSDESType", cprefix = "GST_RTCP_SDES_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GstRTCPSDESType", cprefix = "GST_RTCP_SDES_", has_type_id = false)]
                [GIR (name = "RTCPSDESType")]
                public enum SDESType {
                        INVALID,
@@ -372,7 +397,7 @@ namespace Gst {
                        NOTE,
                        PRIV
                }
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GstRTCPType", cprefix = "GST_RTCP_TYPE_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GstRTCPType", cprefix = "GST_RTCP_TYPE_", has_type_id = false)]
                [GIR (name = "RTCPType")]
                public enum Type {
                        INVALID,
@@ -384,39 +409,39 @@ namespace Gst {
                        RTPFB,
                        PSFB
                }
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GST_RTCP_MAX_BYE_SSRC_COUNT")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTCP_MAX_BYE_SSRC_COUNT")]
                public const int MAX_BYE_SSRC_COUNT;
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GST_RTCP_MAX_RB_COUNT")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTCP_MAX_RB_COUNT")]
                public const int MAX_RB_COUNT;
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GST_RTCP_MAX_SDES")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTCP_MAX_SDES")]
                public const int MAX_SDES;
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GST_RTCP_MAX_SDES_ITEM_COUNT")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTCP_MAX_SDES_ITEM_COUNT")]
                public const int MAX_SDES_ITEM_COUNT;
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GST_RTCP_VALID_MASK")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTCP_VALID_MASK")]
                public const int VALID_MASK;
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GST_RTCP_VALID_VALUE")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTCP_VALID_VALUE")]
                public const int VALID_VALUE;
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "GST_RTCP_VERSION")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "GST_RTCP_VERSION")]
                public const int VERSION;
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "gst_rtcp_buffer_map")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "gst_rtcp_buffer_map")]
                public static bool buffer_map (Gst.Buffer buffer, Gst.MapFlags flags, Gst.RTPC.Buffer rtcp);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "gst_rtcp_buffer_new")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "gst_rtcp_buffer_new")]
                public static Gst.Buffer buffer_new (uint mtu);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "gst_rtcp_buffer_new_copy_data")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "gst_rtcp_buffer_new_copy_data")]
                public static Gst.Buffer buffer_new_copy_data ([CCode (array_length_cname = "len", array_length_pos = 1.1, array_length_type = "guint")] uint8[] data);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "gst_rtcp_buffer_new_take_data")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "gst_rtcp_buffer_new_take_data")]
                public static Gst.Buffer buffer_new_take_data ([CCode (array_length_cname = "len", array_length_pos = 1.1, array_length_type = "guint")] uint8[] data);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "gst_rtcp_buffer_validate")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "gst_rtcp_buffer_validate")]
                public static bool buffer_validate (Gst.Buffer buffer);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "gst_rtcp_buffer_validate_data")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "gst_rtcp_buffer_validate_data")]
                public static bool buffer_validate_data ([CCode (array_length_cname = "len", array_length_pos = 1.1, array_length_type = "guint")] uint8[] data);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "gst_rtcp_ntp_to_unix")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "gst_rtcp_ntp_to_unix")]
                public static uint64 ntp_to_unix (uint64 ntptime);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "gst_rtcp_sdes_name_to_type")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "gst_rtcp_sdes_name_to_type")]
                public static Gst.RTPC.SDESType sdes_name_to_type (string name);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "gst_rtcp_sdes_type_to_name")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "gst_rtcp_sdes_type_to_name")]
                public static unowned string sdes_type_to_name (Gst.RTPC.SDESType type);
-               [CCode (cheader_filename = "gst/rtp/gstrtcpbuffer.h,gst/rtp/gstrtpbaseaudiopayload.h,gst/rtp/gstrtpbasedepayload.h,gst/rtp/gstrtpbasepayload.h,gst/rtp/gstrtpbuffer.h,gst/rtp/gstrtppayloads.h", cname = "gst_rtcp_unix_to_ntp")]
+               [CCode (cheader_filename = "gst/rtp/rtp.h", cname = "gst_rtcp_unix_to_ntp")]
                public static uint64 unix_to_ntp (uint64 unixtime);
        }
 }
index 0cc9bfe..ccc7e90 100644 (file)
@@ -3,7 +3,7 @@
 [CCode (cprefix = "Gst", gir_namespace = "GstRtsp", gir_version = "1.0", lower_case_cprefix = "gst_")]
 namespace Gst {
        namespace RTSP {
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                [Compact]
                [GIR (name = "RTSPConnection")]
                public class Connection {
@@ -14,8 +14,13 @@ namespace Gst {
                        public Gst.RTSP.Result flush (bool flush);
                        public Gst.RTSP.Result free ();
                        public unowned string get_ip ();
+                       public bool get_remember_session_id ();
+                       public unowned GLib.TlsConnection get_tls () throws GLib.Error;
+                       public GLib.TlsDatabase get_tls_database ();
+                       public GLib.TlsCertificateFlags get_tls_validation_flags ();
                        public unowned string get_tunnelid ();
                        public Gst.RTSP.Url get_url ();
+                       public unowned GLib.Socket get_write_socket ();
                        public bool is_tunneled ();
                        public Gst.RTSP.Result next_timeout (GLib.TimeVal timeout);
                        public Gst.RTSP.Result poll (Gst.RTSP.Event events, Gst.RTSP.Event revents, GLib.TimeVal timeout);
@@ -29,10 +34,13 @@ namespace Gst {
                        public void set_ip (string ip);
                        public Gst.RTSP.Result set_proxy (string host, uint port);
                        public Gst.RTSP.Result set_qos_dscp (uint qos_dscp);
+                       public void set_remember_session_id (bool remember);
+                       public void set_tls_database (GLib.TlsDatabase database);
+                       public bool set_tls_validation_flags (GLib.TlsCertificateFlags flags);
                        public void set_tunneled (bool tunneled);
                        public Gst.RTSP.Result write (uint8 data, uint size, GLib.TimeVal timeout);
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_rtsp_url_get_type ()")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_rtsp_url_get_type ()")]
                [Compact]
                [GIR (name = "RTSPUrl")]
                public class Url {
@@ -45,22 +53,28 @@ namespace Gst {
                        public Gst.RTSP.LowerTrans transports;
                        public weak string user;
                        public Gst.RTSP.Url copy ();
+                       [CCode (array_length = false, array_null_terminated = true)]
+                       public string[] decode_path_components ();
                        public void free ();
                        public Gst.RTSP.Result get_port (uint16 port);
                        public string get_request_uri ();
                        public Gst.RTSP.Result set_port (uint16 port);
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                [Compact]
                [GIR (name = "RTSPWatch")]
                public class Watch {
                        public uint attach (GLib.MainContext context);
+                       public void get_send_backlog (out size_t bytes, out uint messages);
                        public void reset ();
                        public Gst.RTSP.Result send_message (Gst.RTSP.Message message, out uint id);
+                       public void set_flushing (bool flush);
+                       public void set_send_backlog (size_t bytes, uint messages);
                        public void unref ();
-                       public Gst.RTSP.Result write_data (uint8 data, uint size, out uint id);
+                       public Gst.RTSP.Result wait_backlog (GLib.TimeVal timeout);
+                       public Gst.RTSP.Result write_data ([CCode (array_length_cname = "size", array_length_pos = 1.5, array_length_type = "guint")] owned uint8[] data, out uint id);
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", type_id = "gst_rtsp_extension_get_type ()")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", type_id = "gst_rtsp_extension_get_type ()")]
                [GIR (name = "RTSPExtension")]
                public interface Extension : GLib.Object {
                        public abstract Gst.RTSP.Result after_send (Gst.RTSP.Message req, Gst.RTSP.Message resp);
@@ -75,7 +89,7 @@ namespace Gst {
                        [HasEmitter]
                        public virtual signal Gst.RTSP.Result send (void* req, void* resp);
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", has_type_id = false)]
                [GIR (name = "RTSPMessage")]
                public struct Message {
                        public Gst.RTSP.MsgType type;
@@ -111,29 +125,39 @@ namespace Gst {
                        public Gst.RTSP.Result set_body ([CCode (array_length_cname = "size", array_length_pos = 1.1, array_length_type = "guint")] uint8[] data);
                        public Gst.RTSP.Result steal_body ([CCode (array_length_cname = "size", array_length_pos = 1.1, array_length_type = "guint")] out uint8[] data);
                        public Gst.RTSP.Result take_body ([CCode (array_length_cname = "size", array_length_pos = 1.1, array_length_type = "guint")] owned uint8[] data);
-                       public Gst.RTSP.Result take_header (Gst.RTSP.HeaderField field, string value);
+                       public Gst.RTSP.Result take_header (Gst.RTSP.HeaderField field, owned string value);
                        public Gst.RTSP.Result unset ();
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", has_type_id = false)]
                [GIR (name = "RTSPRange")]
                public struct Range {
                        public int min;
                        public int max;
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", has_type_id = false)]
                [GIR (name = "RTSPTime")]
                public struct Time {
                        public Gst.RTSP.TimeType type;
                        public double seconds;
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", has_type_id = false)]
+               [GIR (name = "RTSPTime2")]
+               public struct Time2 {
+                       public double frames;
+                       public uint year;
+                       public uint month;
+                       public uint day;
+               }
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", has_type_id = false)]
                [GIR (name = "RTSPTimeRange")]
                public struct TimeRange {
                        public Gst.RTSP.RangeUnit unit;
                        public Gst.RTSP.Time min;
                        public Gst.RTSP.Time max;
+                       public Gst.RTSP.Time2 min2;
+                       public Gst.RTSP.Time2 max2;
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", has_type_id = false)]
                [GIR (name = "RTSPTransport")]
                public struct Transport {
                        public Gst.RTSP.TransMode trans;
@@ -153,30 +177,31 @@ namespace Gst {
                        public uint ssrc;
                        public string as_text ();
                        public Gst.RTSP.Result free ();
+                       public Gst.RTSP.Result get_media_type (out unowned string media_type);
                        public Gst.RTSP.Result init ();
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_AUTH_", type_id = "gst_rtsp_auth_method_get_type ()")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_AUTH_", type_id = "gst_rtsp_auth_method_get_type ()")]
                [GIR (name = "RTSPAuthMethod")]
                public enum AuthMethod {
                        NONE,
                        BASIC,
                        DIGEST
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_EV_", type_id = "gst_rtsp_event_get_type ()")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_EV_", type_id = "gst_rtsp_event_get_type ()")]
                [Flags]
                [GIR (name = "RTSPEvent")]
                public enum Event {
                        READ,
                        WRITE
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_FAM_", type_id = "gst_rtsp_family_get_type ()")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_FAM_", type_id = "gst_rtsp_family_get_type ()")]
                [GIR (name = "RTSPFamily")]
                public enum Family {
                        NONE,
                        INET,
                        INET6
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_HDR_", type_id = "gst_rtsp_header_field_get_type ()")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_HDR_", type_id = "gst_rtsp_header_field_get_type ()")]
                [GIR (name = "RTSPHeaderField")]
                public enum HeaderField {
                        INVALID,
@@ -261,9 +286,10 @@ namespace Gst {
                        X_SERVER_IP_ADDRESS,
                        X_SESSIONCOOKIE,
                        RTCP_INTERVAL,
+                       KEYMGMT,
                        LAST
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_LOWER_TRANS_", type_id = "gst_rtsp_lower_trans_get_type ()")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_LOWER_TRANS_", type_id = "gst_rtsp_lower_trans_get_type ()")]
                [Flags]
                [GIR (name = "RTSPLowerTrans")]
                public enum LowerTrans {
@@ -272,9 +298,10 @@ namespace Gst {
                        [CCode (cname = "GST_RTSP_LOWER_TRANS_UDP_MCAST")]
                        UDP_MULTICAST,
                        TCP,
-                       HTTP
+                       HTTP,
+                       TLS
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_", type_id = "gst_rtsp_method_get_type ()")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_", type_id = "gst_rtsp_method_get_type ()")]
                [Flags]
                [GIR (name = "RTSPMethod")]
                public enum Method {
@@ -293,7 +320,7 @@ namespace Gst {
                        GET,
                        POST
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_MESSAGE_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_MESSAGE_", has_type_id = false)]
                [GIR (name = "RTSPMsgType")]
                public enum MsgType {
                        INVALID,
@@ -303,15 +330,16 @@ namespace Gst {
                        HTTP_RESPONSE,
                        DATA
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_PROFILE_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_PROFILE_", type_id = "gst_rtsp_profile_get_type ()")]
                [Flags]
                [GIR (name = "RTSPProfile")]
                public enum Profile {
-                       UNKNOWN,
                        AVP,
-                       SAVP
+                       SAVP,
+                       AVPF,
+                       SAVPF
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_RANGE_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_RANGE_", has_type_id = false)]
                [GIR (name = "RTSPRangeUnit")]
                public enum RangeUnit {
                        SMPTE,
@@ -320,7 +348,7 @@ namespace Gst {
                        NPT,
                        CLOCK
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_", type_id = "gst_rtsp_result_get_type ()")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_", type_id = "gst_rtsp_result_get_type ()")]
                [GIR (name = "RTSPResult")]
                public enum Result {
                        OK,
@@ -342,7 +370,7 @@ namespace Gst {
                        ETPOST,
                        ELAST
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_STATE_", type_id = "gst_rtsp_state_get_type ()")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_STATE_", type_id = "gst_rtsp_state_get_type ()")]
                [GIR (name = "RTSPState")]
                public enum State {
                        INVALID,
@@ -352,7 +380,7 @@ namespace Gst {
                        PLAYING,
                        RECORDING
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_STS_", type_id = "gst_rtsp_status_code_get_type ()")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_STS_", type_id = "gst_rtsp_status_code_get_type ()")]
                [GIR (name = "RTSPStatusCode")]
                public enum StatusCode {
                        INVALID,
@@ -393,6 +421,7 @@ namespace Gst {
                        ONLY_AGGREGATE_OPERATION_ALLOWED,
                        UNSUPPORTED_TRANSPORT,
                        DESTINATION_UNREACHABLE,
+                       KEY_MANAGEMENT_FAILURE,
                        INTERNAL_SERVER_ERROR,
                        NOT_IMPLEMENTED,
                        BAD_GATEWAY,
@@ -401,14 +430,16 @@ namespace Gst {
                        RTSP_VERSION_NOT_SUPPORTED,
                        OPTION_NOT_SUPPORTED
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_TIME_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_TIME_", has_type_id = false)]
                [GIR (name = "RTSPTimeType")]
                public enum TimeType {
                        SECONDS,
                        NOW,
-                       END
+                       END,
+                       FRAMES,
+                       UTC
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_TRANS_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_TRANS_", has_type_id = false)]
                [Flags]
                [GIR (name = "RTSPTransMode")]
                public enum TransMode {
@@ -416,62 +447,69 @@ namespace Gst {
                        RTP,
                        RDT
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cprefix = "GST_RTSP_VERSION_", type_id = "gst_rtsp_version_get_type ()")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cprefix = "GST_RTSP_VERSION_", type_id = "gst_rtsp_version_get_type ()")]
                [GIR (name = "RTSPVersion")]
                public enum Version {
                        INVALID,
                        @1_0,
                        @1_1
                }
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h", cname = "GST_RTSP_DEFAULT_PORT")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h", cname = "GST_RTSP_DEFAULT_PORT")]
                public const int _DEFAULT_PORT;
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Result connection_accept (GLib.Socket socket, out Gst.RTSP.Connection conn, GLib.Cancellable? cancellable = null);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Result connection_create (Gst.RTSP.Url url, out Gst.RTSP.Connection conn);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Result connection_create_from_socket (GLib.Socket socket, string ip, uint16 port, string initial_buffer, out Gst.RTSP.Connection conn);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.HeaderField find_header_field (string header);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Method find_method (string method);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static bool header_allow_multiple (Gst.RTSP.HeaderField field);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static unowned string header_as_text (Gst.RTSP.HeaderField field);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Result message_new (out Gst.RTSP.Message msg);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Result message_new_data (out Gst.RTSP.Message msg, uint8 channel);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Result message_new_request (out Gst.RTSP.Message msg, Gst.RTSP.Method method, string uri);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Result message_new_response (out Gst.RTSP.Message msg, Gst.RTSP.StatusCode code, string? reason, Gst.RTSP.Message? request);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static unowned string method_as_text (Gst.RTSP.Method method);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static string options_as_text (Gst.RTSP.Method options);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
+               public static Gst.RTSP.Method options_from_text (string options);
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
+               public static bool range_convert_units (Gst.RTSP.TimeRange range, Gst.RTSP.RangeUnit unit);
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static void range_free (Gst.RTSP.TimeRange range);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
+               public static bool range_get_times (Gst.RTSP.TimeRange range, Gst.ClockTime min, Gst.ClockTime max);
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Result range_parse (string rangestr, Gst.RTSP.TimeRange range);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static string range_to_string (Gst.RTSP.TimeRange range);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static unowned string status_as_text (Gst.RTSP.StatusCode code);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static string strresult (Gst.RTSP.Result result);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Result transport_get_manager (Gst.RTSP.TransMode trans, string manager, uint option);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
+               [Deprecated]
                public static Gst.RTSP.Result transport_get_mime (Gst.RTSP.TransMode trans, string mime);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Result transport_new (Gst.RTSP.Transport transport);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Result transport_parse (string str, Gst.RTSP.Transport transport);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static Gst.RTSP.Result url_parse (string urlstr, out Gst.RTSP.Url url);
-               [CCode (cheader_filename = "gst/rtsp/gstrtsp-enumtypes.h,gst/rtsp/gstrtspconnection.h,gst/rtsp/gstrtspdefs.h,gst/rtsp/gstrtspextension.h,gst/rtsp/gstrtspmessage.h,gst/rtsp/gstrtsprange.h,gst/rtsp/gstrtsptransport.h,gst/rtsp/gstrtspurl.h")]
+               [CCode (cheader_filename = "gst/rtsp/rtsp.h")]
                public static unowned string version_as_text (Gst.RTSP.Version version);
        }
 }
index f46a655..b27da74 100644 (file)
 
 [CCode (cprefix = "Gst", gir_namespace = "GstRtspServer", gir_version = "1.0", lower_case_cprefix = "gst_")]
 namespace Gst {
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_rtsp_address_get_type ()")]
-       [Compact]
-       public class RTSPAddress {
-               public weak string address;
-               public int n_ports;
-               public weak Gst.RTSPAddressPool pool;
-               public uint16 port;
-               public void* priv;
-               public uint8 ttl;
-               public Gst.RTSPAddress copy ();
-               public void free ();
+       namespace RTSPServer {
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPAddress", copy_function = "g_boxed_copy", free_function = "g_boxed_free", lower_case_cprefix = "gst_rtsp_address_", type_id = "gst_rtsp_address_get_type ()")]
+               [Compact]
+               [GIR (name = "RTSPAddress")]
+               public class Address {
+                       public string address;
+                       public int n_ports;
+                       public Gst.RTSPServer.AddressPool pool;
+                       public uint16 port;
+                       public uint8 ttl;
+                       public Gst.RTSPServer.Address copy ();
+                       public void free ();
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPAddressPool", lower_case_cprefix = "gst_rtsp_address_pool_", type_id = "gst_rtsp_address_pool_get_type ()")]
+               [GIR (name = "RTSPAddressPool")]
+               public class AddressPool : GLib.Object {
+                       [CCode (cname = "GST_RTSP_ADDRESS_POOL_ANY_IPV4")]
+                       public const string ANY_IPV4;
+                       [CCode (cname = "GST_RTSP_ADDRESS_POOL_ANY_IPV6")]
+                       public const string ANY_IPV6;
+                       [CCode (has_construct_function = false)]
+                       public AddressPool ();
+                       public Gst.RTSPServer.Address? acquire_address (Gst.RTSPServer.AddressFlags flags, int n_ports);
+                       public bool add_range (string min_address, string max_address, uint16 min_port, uint16 max_port, uint8 ttl);
+                       public void clear ();
+                       public void dump ();
+                       public bool has_unicast_addresses ();
+                       public Gst.RTSPServer.AddressPoolResult reserve_address (string ip_address, uint port, uint n_ports, uint ttl, out Gst.RTSPServer.Address address);
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPAuth", lower_case_cprefix = "gst_rtsp_auth_", type_id = "gst_rtsp_auth_get_type ()")]
+               [GIR (name = "RTSPAuth")]
+               public class Auth : GLib.Object {
+                       [CCode (cname = "GST_RTSP_AUTH_CHECK_CONNECT")]
+                       public const string CHECK_CONNECT;
+                       [CCode (cname = "GST_RTSP_AUTH_CHECK_MEDIA_FACTORY_ACCESS")]
+                       public const string CHECK_MEDIA_FACTORY_ACCESS;
+                       [CCode (cname = "GST_RTSP_AUTH_CHECK_MEDIA_FACTORY_CONSTRUCT")]
+                       public const string CHECK_MEDIA_FACTORY_CONSTRUCT;
+                       [CCode (cname = "GST_RTSP_AUTH_CHECK_TRANSPORT_CLIENT_SETTINGS")]
+                       public const string CHECK_TRANSPORT_CLIENT_SETTINGS;
+                       [CCode (cname = "GST_RTSP_AUTH_CHECK_URL")]
+                       public const string CHECK_URL;
+                       [CCode (has_construct_function = false)]
+                       public Auth ();
+                       public void add_basic (string basic, Gst.RTSPServer.Token token);
+                       [NoWrapper]
+                       public virtual bool authenticate (Gst.RTSPServer.Context ctx);
+                       [NoWrapper]
+                       public virtual bool check (Gst.RTSPServer.Context ctx, string check);
+                       [CCode (cname = "gst_rtsp_auth_check")]
+                       public static bool check_current_context (string check);
+                       public Gst.RTSPServer.Token get_default_token ();
+                       public GLib.TlsCertificate get_tls_certificate ();
+                       public static string make_basic (string user, string pass);
+                       public void remove_basic (string basic);
+                       public void set_default_token (Gst.RTSPServer.Token? token);
+                       public void set_tls_certificate (GLib.TlsCertificate? cert);
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPClient", lower_case_cprefix = "gst_rtsp_client_", type_id = "gst_rtsp_client_get_type ()")]
+               [GIR (name = "RTSPClient")]
+               public class Client : GLib.Object {
+                       [CCode (has_construct_function = false)]
+                       public Client ();
+                       public uint attach (GLib.MainContext? context);
+                       [NoWrapper]
+                       public virtual bool configure_client_media (Gst.RTSPServer.Media media, Gst.RTSPServer.Stream stream, Gst.RTSPServer.Context ctx);
+                       [NoWrapper]
+                       public virtual bool configure_client_transport (Gst.RTSPServer.Context ctx, Gst.RTSP.Transport ct);
+                       [NoWrapper]
+                       public virtual Gst.SDP.Message create_sdp (Gst.RTSPServer.Media media);
+                       [NoWrapper]
+                       public virtual void describe_request (Gst.RTSPServer.Context ctx);
+                       public Gst.RTSPServer.Auth get_auth ();
+                       public unowned Gst.RTSP.Connection get_connection ();
+                       public Gst.RTSPServer.MountPoints get_mount_points ();
+                       [NoWrapper]
+                       public virtual void get_parameter_request (Gst.RTSPServer.Context ctx);
+                       public Gst.RTSPServer.SessionPool get_session_pool ();
+                       public Gst.RTSPServer.ThreadPool get_thread_pool ();
+                       public Gst.RTSP.Result handle_message (Gst.RTSP.Message message);
+                       [NoWrapper]
+                       public virtual void handle_response (Gst.RTSPServer.Context ctx);
+                       [NoWrapper]
+                       public virtual string make_path_from_uri (Gst.RTSP.Url uri);
+                       [NoWrapper]
+                       public virtual void options_request (Gst.RTSPServer.Context ctx);
+                       [NoWrapper]
+                       public virtual Gst.RTSP.Result params_get (Gst.RTSPServer.Context ctx);
+                       [NoWrapper]
+                       public virtual Gst.RTSP.Result params_set (Gst.RTSPServer.Context ctx);
+                       [NoWrapper]
+                       public virtual void pause_request (Gst.RTSPServer.Context ctx);
+                       [NoWrapper]
+                       public virtual void play_request (Gst.RTSPServer.Context ctx);
+                       public GLib.List<Gst.RTSPServer.Session> session_filter (Gst.RTSPServer.ClientSessionFilterFunc? func);
+                       public void set_auth (Gst.RTSPServer.Auth auth);
+                       public bool set_connection (owned Gst.RTSP.Connection conn);
+                       public void set_mount_points (Gst.RTSPServer.MountPoints mounts);
+                       [NoWrapper]
+                       public virtual void set_parameter_request (Gst.RTSPServer.Context ctx);
+                       public void set_send_func (owned Gst.RTSPServer.ClientSendFunc func);
+                       public void set_session_pool (Gst.RTSPServer.SessionPool pool);
+                       public void set_thread_pool (Gst.RTSPServer.ThreadPool pool);
+                       [NoWrapper]
+                       public virtual void setup_request (Gst.RTSPServer.Context ctx);
+                       [NoWrapper]
+                       public virtual void teardown_request (Gst.RTSPServer.Context ctx);
+                       [NoWrapper]
+                       public virtual void tunnel_http_response (Gst.RTSP.Message request, Gst.RTSP.Message response);
+                       [NoAccessorMethod]
+                       public bool drop_backlog { get; set; }
+                       public Gst.RTSPServer.MountPoints mount_points { owned get; set; }
+                       public Gst.RTSPServer.SessionPool session_pool { owned get; set; }
+                       public virtual signal void closed ();
+                       public virtual signal void new_session (Gst.RTSPServer.Session session);
+                       [HasEmitter]
+                       public signal void send_message (Gst.RTSPServer.Session session, Gst.RTSP.Message message);
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPMedia", lower_case_cprefix = "gst_rtsp_media_", type_id = "gst_rtsp_media_get_type ()")]
+               [GIR (name = "RTSPMedia")]
+               public class Media : GLib.Object {
+                       [CCode (has_construct_function = false)]
+                       public Media (owned Gst.Element element);
+                       public void collect_streams ();
+                       [NoWrapper]
+                       public virtual bool convert_range (Gst.RTSP.TimeRange range, Gst.RTSP.RangeUnit unit);
+                       [CCode (returns_floating_reference = true)]
+                       [NoWrapper]
+                       public virtual Gst.Element create_rtpbin ();
+                       public unowned Gst.RTSPServer.Stream create_stream (Gst.Element payloader, Gst.Pad srcpad);
+                       public unowned Gst.RTSPServer.Stream? find_stream (string control);
+                       public Gst.RTSPServer.AddressPool get_address_pool ();
+                       public Gst.ClockTime get_base_time ();
+                       public uint get_buffer_size ();
+                       public Gst.Clock get_clock ();
+                       public Gst.Element get_element ();
+                       public Gst.RTSPServer.Permissions get_permissions ();
+                       public Gst.RTSP.Profile get_profiles ();
+                       public Gst.RTSP.LowerTrans get_protocols ();
+                       public string get_range_string (bool play, Gst.RTSP.RangeUnit unit);
+                       public Gst.RTSPServer.MediaStatus get_status ();
+                       public unowned Gst.RTSPServer.Stream? get_stream (uint idx);
+                       public Gst.RTSPServer.SuspendMode get_suspend_mode ();
+                       public Gst.Net.TimeProvider get_time_provider (string? address, uint16 port);
+                       [NoWrapper]
+                       public virtual bool handle_message (Gst.Message message);
+                       public bool is_eos_shutdown ();
+                       public bool is_reusable ();
+                       public bool is_shared ();
+                       public bool is_time_provider ();
+                       public uint n_streams ();
+                       public virtual bool prepare (owned Gst.RTSPServer.Thread? thread);
+                       [NoWrapper]
+                       public virtual bool query_position (int64 position);
+                       [NoWrapper]
+                       public virtual bool query_stop (int64 stop);
+                       public bool seek (Gst.RTSP.TimeRange range);
+                       public void set_address_pool (Gst.RTSPServer.AddressPool pool);
+                       public void set_buffer_size (uint size);
+                       public void set_eos_shutdown (bool eos_shutdown);
+                       public void set_permissions (Gst.RTSPServer.Permissions permissions);
+                       public void set_pipeline_state (Gst.State state);
+                       public void set_profiles (Gst.RTSP.Profile profiles);
+                       public void set_protocols (Gst.RTSP.LowerTrans protocols);
+                       public void set_reusable (bool reusable);
+                       public void set_shared (bool shared);
+                       public bool set_state (Gst.State state, GLib.GenericArray<Gst.RTSPServer.StreamTransport> transports);
+                       public void set_suspend_mode (Gst.RTSPServer.SuspendMode mode);
+                       [NoWrapper]
+                       public virtual bool setup_rtpbin (Gst.Element rtpbin);
+                       public virtual bool setup_sdp (Gst.SDP.Message sdp, Gst.RTSPServer.SDPInfo info);
+                       public virtual bool suspend ();
+                       public void take_pipeline (owned Gst.Pipeline pipeline);
+                       public virtual bool unprepare ();
+                       public virtual bool unsuspend ();
+                       public void use_time_provider (bool time_provider);
+                       public uint buffer_size { get; set; }
+                       public Gst.Element element { owned get; construct; }
+                       [NoAccessorMethod]
+                       public bool eos_shutdown { get; set; }
+                       public Gst.RTSP.Profile profiles { get; set; }
+                       public Gst.RTSP.LowerTrans protocols { get; set; }
+                       [NoAccessorMethod]
+                       public bool reusable { get; set; }
+                       [NoAccessorMethod]
+                       public bool shared { get; set; }
+                       public Gst.RTSPServer.SuspendMode suspend_mode { get; set; }
+                       [NoAccessorMethod]
+                       public bool time_provider { get; set; }
+                       public virtual signal void new_state (int state);
+                       public virtual signal void new_stream (Gst.RTSPServer.Stream stream);
+                       public virtual signal void prepared ();
+                       public virtual signal void removed_stream (Gst.RTSPServer.Stream stream);
+                       public virtual signal void target_state (int state);
+                       public virtual signal void unprepared ();
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPMediaFactory", lower_case_cprefix = "gst_rtsp_media_factory_", type_id = "gst_rtsp_media_factory_get_type ()")]
+               [GIR (name = "RTSPMediaFactory")]
+               public class MediaFactory : GLib.Object {
+                       [CCode (has_construct_function = false)]
+                       public MediaFactory ();
+                       public void add_role (string role, string fieldname, ...);
+                       [NoWrapper]
+                       public virtual void configure (Gst.RTSPServer.Media media);
+                       public virtual Gst.RTSPServer.Media @construct (Gst.RTSP.Url url);
+                       [CCode (returns_floating_reference = true)]
+                       public virtual Gst.Element create_element (Gst.RTSP.Url url);
+                       [CCode (returns_floating_reference = true)]
+                       [NoWrapper]
+                       public virtual Gst.Pipeline create_pipeline (Gst.RTSPServer.Media media);
+                       [NoWrapper]
+                       public virtual string gen_key (Gst.RTSP.Url url);
+                       public Gst.RTSPServer.AddressPool get_address_pool ();
+                       public uint get_buffer_size ();
+                       public string get_launch ();
+                       public Gst.RTSPServer.Permissions get_permissions ();
+                       public Gst.RTSP.Profile get_profiles ();
+                       public Gst.RTSP.LowerTrans get_protocols ();
+                       public Gst.RTSPServer.SuspendMode get_suspend_mode ();
+                       public bool is_eos_shutdown ();
+                       public bool is_shared ();
+                       public void set_address_pool (Gst.RTSPServer.AddressPool pool);
+                       public void set_buffer_size (uint size);
+                       public void set_eos_shutdown (bool eos_shutdown);
+                       public void set_launch (string launch);
+                       public void set_permissions (Gst.RTSPServer.Permissions permissions);
+                       public void set_profiles (Gst.RTSP.Profile profiles);
+                       public void set_protocols (Gst.RTSP.LowerTrans protocols);
+                       public void set_shared (bool shared);
+                       public void set_suspend_mode (Gst.RTSPServer.SuspendMode mode);
+                       public uint buffer_size { get; set; }
+                       [NoAccessorMethod]
+                       public bool eos_shutdown { get; set; }
+                       public string launch { owned get; set; }
+                       public Gst.RTSP.Profile profiles { get; set; }
+                       public Gst.RTSP.LowerTrans protocols { get; set; }
+                       [NoAccessorMethod]
+                       public bool shared { get; set; }
+                       public Gst.RTSPServer.SuspendMode suspend_mode { get; set; }
+                       public virtual signal void media_configure (Gst.RTSPServer.Media media);
+                       public virtual signal void media_constructed (Gst.RTSPServer.Media media);
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPMediaFactoryURI", lower_case_cprefix = "gst_rtsp_media_factory_uri_", type_id = "gst_rtsp_media_factory_uri_get_type ()")]
+               [GIR (name = "RTSPMediaFactoryURI")]
+               public class MediaFactoryURI : Gst.RTSPServer.MediaFactory {
+                       [CCode (has_construct_function = false)]
+                       public MediaFactoryURI ();
+                       public string get_uri ();
+                       public void set_uri (string uri);
+                       public string uri { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool use_gstpay { get; set; }
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPMountPoints", lower_case_cprefix = "gst_rtsp_mount_points_", type_id = "gst_rtsp_mount_points_get_type ()")]
+               [GIR (name = "RTSPMountPoints")]
+               public class MountPoints : GLib.Object {
+                       [CCode (has_construct_function = false)]
+                       public MountPoints ();
+                       public void add_factory (string path, owned Gst.RTSPServer.MediaFactory factory);
+                       public virtual string make_path (Gst.RTSP.Url url);
+                       public Gst.RTSPServer.MediaFactory match (string path, out int matched);
+                       public void remove_factory (string path);
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPPermissions", copy_function = "g_boxed_copy", free_function = "g_boxed_free", lower_case_cprefix = "gst_rtsp_permissions_", type_id = "gst_rtsp_permissions_get_type ()")]
+               [Compact]
+               [GIR (name = "RTSPPermissions")]
+               public class Permissions : Gst.MiniObject {
+                       [CCode (cname = "GST_RTSP_PERM_MEDIA_FACTORY_ACCESS")]
+                       public const string MEDIA_FACTORY_ACCESS;
+                       [CCode (cname = "GST_RTSP_PERM_MEDIA_FACTORY_CONSTRUCT")]
+                       public const string MEDIA_FACTORY_CONSTRUCT;
+                       [CCode (has_construct_function = false)]
+                       public Permissions ();
+                       public void add_role (string role, string fieldname, ...);
+                       public void add_role_valist (string role, string fieldname, va_list var_args);
+                       public unowned Gst.Structure get_role (string role);
+                       public bool is_allowed (string role, string permission);
+                       public void remove_role (string role);
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPServer", lower_case_cprefix = "gst_rtsp_server_", type_id = "gst_rtsp_server_get_type ()")]
+               [GIR (name = "RTSPServer")]
+               public class Server : GLib.Object {
+                       [CCode (has_construct_function = false)]
+                       public Server ();
+                       public uint attach (GLib.MainContext? context);
+                       public GLib.List<Gst.RTSPServer.Client> client_filter (Gst.RTSPServer.ServerClientFilterFunc? func);
+                       [NoWrapper]
+                       public virtual Gst.RTSPServer.Client create_client ();
+                       public GLib.Socket create_socket (GLib.Cancellable? cancellable = null) throws GLib.Error;
+                       public GLib.Source create_source (GLib.Cancellable? cancellable = null) throws GLib.Error;
+                       public string get_address ();
+                       public Gst.RTSPServer.Auth get_auth ();
+                       public int get_backlog ();
+                       public int get_bound_port ();
+                       public Gst.RTSPServer.MountPoints get_mount_points ();
+                       public string get_service ();
+                       public Gst.RTSPServer.SessionPool get_session_pool ();
+                       public Gst.RTSPServer.ThreadPool get_thread_pool ();
+                       public static bool io_func (GLib.Socket socket, GLib.IOCondition condition, Gst.RTSPServer.Server server);
+                       public void set_address (string address);
+                       public void set_auth (Gst.RTSPServer.Auth auth);
+                       public void set_backlog (int backlog);
+                       public void set_mount_points (Gst.RTSPServer.MountPoints mounts);
+                       public void set_service (string service);
+                       public void set_session_pool (Gst.RTSPServer.SessionPool pool);
+                       public void set_thread_pool (Gst.RTSPServer.ThreadPool pool);
+                       public bool transfer_connection (owned GLib.Socket socket, string ip, int port, string initial_buffer);
+                       public string address { owned get; set; }
+                       public int backlog { get; set; }
+                       public int bound_port { get; }
+                       public Gst.RTSPServer.MountPoints mount_points { owned get; set; }
+                       public string service { owned get; set; }
+                       public Gst.RTSPServer.SessionPool session_pool { owned get; set; }
+                       public virtual signal void client_connected (Gst.RTSPServer.Client client);
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPSession", lower_case_cprefix = "gst_rtsp_session_", type_id = "gst_rtsp_session_get_type ()")]
+               [GIR (name = "RTSPSession")]
+               public class Session : GLib.Object {
+                       [CCode (has_construct_function = false)]
+                       public Session (string sessionid);
+                       public void allow_expire ();
+                       public GLib.List<Gst.RTSPServer.SessionMedia> filter (Gst.RTSPServer.SessionFilterFunc? func);
+                       public string get_header ();
+                       public unowned Gst.RTSPServer.SessionMedia get_media (string path, out int matched);
+                       public unowned string get_sessionid ();
+                       public uint get_timeout ();
+                       public bool is_expired (GLib.TimeVal now);
+                       public unowned Gst.RTSPServer.SessionMedia manage_media (string path, owned Gst.RTSPServer.Media media);
+                       public int next_timeout (GLib.TimeVal now);
+                       public void prevent_expire ();
+                       public bool release_media (Gst.RTSPServer.SessionMedia media);
+                       public void set_timeout (uint timeout);
+                       public void touch ();
+                       public string sessionid { get; construct; }
+                       public uint timeout { get; set; }
+                       [NoAccessorMethod]
+                       public bool timeout_always_visible { get; set; }
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPSessionMedia", lower_case_cprefix = "gst_rtsp_session_media_", type_id = "gst_rtsp_session_media_get_type ()")]
+               [GIR (name = "RTSPSessionMedia")]
+               public class SessionMedia : GLib.Object {
+                       [CCode (has_construct_function = false)]
+                       public SessionMedia (string path, owned Gst.RTSPServer.Media media);
+                       public bool alloc_channels (out Gst.RTSP.Range range);
+                       public Gst.ClockTime get_base_time ();
+                       public unowned Gst.RTSPServer.Media get_media ();
+                       public string? get_rtpinfo ();
+                       public Gst.RTSP.State get_rtsp_state ();
+                       public unowned Gst.RTSPServer.StreamTransport get_transport (uint idx);
+                       public bool matches (string path, out int matched);
+                       public void set_rtsp_state (Gst.RTSP.State state);
+                       public bool set_state (Gst.State state);
+                       public unowned Gst.RTSPServer.StreamTransport set_transport (Gst.RTSPServer.Stream stream, owned Gst.RTSP.Transport tr);
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPSessionPool", lower_case_cprefix = "gst_rtsp_session_pool_", type_id = "gst_rtsp_session_pool_get_type ()")]
+               [GIR (name = "RTSPSessionPool")]
+               public class SessionPool : GLib.Object {
+                       [CCode (has_construct_function = false)]
+                       public SessionPool ();
+                       public uint cleanup ();
+                       public Gst.RTSPServer.Session create ();
+                       [NoWrapper]
+                       public virtual Gst.RTSPServer.Session create_session (string id);
+                       [NoWrapper]
+                       public virtual string create_session_id ();
+                       public GLib.Source create_watch ();
+                       public GLib.List<Gst.RTSPServer.Session> filter (Gst.RTSPServer.SessionPoolFilterFunc? func);
+                       public Gst.RTSPServer.Session? find (string sessionid);
+                       public uint get_max_sessions ();
+                       public uint get_n_sessions ();
+                       public bool remove (Gst.RTSPServer.Session sess);
+                       public void set_max_sessions (uint max);
+                       public uint max_sessions { get; set; }
+                       public virtual signal void session_removed (Gst.RTSPServer.Session session);
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPStream", lower_case_cprefix = "gst_rtsp_stream_", type_id = "gst_rtsp_stream_get_type ()")]
+               [GIR (name = "RTSPStream")]
+               public class Stream : GLib.Object {
+                       [CCode (has_construct_function = false)]
+                       public Stream (uint idx, Gst.Element payloader, Gst.Pad srcpad);
+                       public bool add_transport (Gst.RTSPServer.StreamTransport trans);
+                       public Gst.RTSPServer.AddressPool get_address_pool ();
+                       public Gst.Caps get_caps ();
+                       public string get_control ();
+                       public int get_dscp_qos ();
+                       public uint get_index ();
+                       public uint get_mtu ();
+                       public Gst.RTSPServer.Address? get_multicast_address (GLib.SocketFamily family);
+                       public Gst.RTSP.Profile get_profiles ();
+                       public Gst.RTSP.LowerTrans get_protocols ();
+                       public uint get_pt ();
+                       public GLib.Socket? get_rtcp_socket (GLib.SocketFamily family);
+                       public GLib.Socket? get_rtp_socket (GLib.SocketFamily family);
+                       public bool get_rtpinfo (uint? rtptime, uint? seq, uint? clock_rate, Gst.ClockTime? running_time);
+                       public GLib.Object get_rtpsession ();
+                       public void get_server_port (out Gst.RTSP.Range server_port, GLib.SocketFamily family);
+                       public Gst.Pad get_srcpad ();
+                       public void get_ssrc (out uint ssrc);
+                       public bool has_control (string control);
+                       public bool is_blocking ();
+                       public bool is_transport_supported (Gst.RTSP.Transport transport);
+                       public bool join_bin (Gst.Bin bin, Gst.Element rtpbin, Gst.State state);
+                       public bool leave_bin (Gst.Bin bin, Gst.Element rtpbin);
+                       public Gst.FlowReturn recv_rtcp (owned Gst.Buffer buffer);
+                       public Gst.FlowReturn recv_rtp (owned Gst.Buffer buffer);
+                       public bool remove_transport (Gst.RTSPServer.StreamTransport trans);
+                       public Gst.RTSPServer.Address? reserve_address (string address, uint port, uint n_ports, uint ttl);
+                       public void set_address_pool (Gst.RTSPServer.AddressPool pool);
+                       public bool set_blocked (bool blocked);
+                       public void set_control (string control);
+                       public void set_dscp_qos (int dscp_qos);
+                       public void set_mtu (uint mtu);
+                       public void set_profiles (Gst.RTSP.Profile profiles);
+                       public void set_protocols (Gst.RTSP.LowerTrans protocols);
+                       public GLib.List<Gst.RTSPServer.StreamTransport> transport_filter (Gst.RTSPServer.StreamTransportFilterFunc? func);
+                       public bool update_crypto (uint ssrc, Gst.Caps? crypto);
+                       public string control { owned get; set; }
+                       public Gst.RTSP.Profile profiles { get; set; }
+                       public Gst.RTSP.LowerTrans protocols { get; set; }
+                       public signal void new_rtcp_encoder (Gst.Element object);
+                       public signal void new_rtp_encoder (Gst.Element object);
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPStreamTransport", lower_case_cprefix = "gst_rtsp_stream_transport_", type_id = "gst_rtsp_stream_transport_get_type ()")]
+               [GIR (name = "RTSPStreamTransport")]
+               public class StreamTransport : GLib.Object {
+                       [CCode (has_construct_function = false)]
+                       public StreamTransport (Gst.RTSPServer.Stream stream, owned Gst.RTSP.Transport tr);
+                       public string? get_rtpinfo (Gst.ClockTime start_time);
+                       public unowned Gst.RTSPServer.Stream get_stream ();
+                       public unowned Gst.RTSP.Transport? get_transport ();
+                       public unowned Gst.RTSP.Url get_url ();
+                       public bool is_timed_out ();
+                       public void keep_alive ();
+                       public bool send_rtcp (Gst.Buffer buffer);
+                       public bool send_rtp (Gst.Buffer buffer);
+                       public bool set_active (bool active);
+                       public void set_callbacks (Gst.RTSPServer.SendFunc send_rtp, owned Gst.RTSPServer.SendFunc send_rtcp);
+                       public void set_keepalive (owned Gst.RTSPServer.KeepAliveFunc keep_alive);
+                       public void set_timed_out (bool timedout);
+                       public void set_transport (owned Gst.RTSP.Transport tr);
+                       public void set_url (Gst.RTSP.Url url);
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPThread", copy_function = "g_boxed_copy", free_function = "g_boxed_free", lower_case_cprefix = "gst_rtsp_thread_", type_id = "gst_rtsp_thread_get_type ()")]
+               [Compact]
+               [GIR (name = "RTSPThread")]
+               public class Thread : Gst.MiniObject {
+                       public GLib.MainContext context;
+                       public GLib.MainLoop loop;
+                       public Gst.RTSPServer.ThreadType type;
+                       [CCode (has_construct_function = false)]
+                       public Thread (Gst.RTSPServer.ThreadType type);
+                       public bool reuse ();
+                       public void stop ();
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPThreadPool", lower_case_cprefix = "gst_rtsp_thread_pool_", type_id = "gst_rtsp_thread_pool_get_type ()")]
+               [GIR (name = "RTSPThreadPool")]
+               public class ThreadPool : GLib.Object {
+                       [CCode (has_construct_function = false)]
+                       public ThreadPool ();
+                       public static void cleanup ();
+                       [NoWrapper]
+                       public virtual void configure_thread (Gst.RTSPServer.Thread thread, Gst.RTSPServer.Context ctx);
+                       public int get_max_threads ();
+                       public virtual Gst.RTSPServer.Thread get_thread (Gst.RTSPServer.ThreadType type, Gst.RTSPServer.Context ctx);
+                       public void set_max_threads (int max_threads);
+                       [NoWrapper]
+                       public virtual void thread_enter (Gst.RTSPServer.Thread thread);
+                       [NoWrapper]
+                       public virtual void thread_leave (Gst.RTSPServer.Thread thread);
+                       public int max_threads { get; set; }
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPToken", copy_function = "g_boxed_copy", free_function = "g_boxed_free", lower_case_cprefix = "gst_rtsp_token_", type_id = "gst_rtsp_token_get_type ()")]
+               [Compact]
+               [GIR (name = "RTSPToken")]
+               public class Token : Gst.MiniObject {
+                       [CCode (cname = "GST_RTSP_TOKEN_MEDIA_FACTORY_ROLE")]
+                       public const string MEDIA_FACTORY_ROLE;
+                       [CCode (cname = "GST_RTSP_TOKEN_TRANSPORT_CLIENT_SETTINGS")]
+                       public const string TRANSPORT_CLIENT_SETTINGS;
+                       [CCode (has_construct_function = false)]
+                       public Token (string firstfield, ...);
+                       [CCode (has_construct_function = false)]
+                       public Token.empty ();
+                       public unowned string? get_string (string field);
+                       public unowned Gst.Structure get_structure ();
+                       public bool is_allowed (string field);
+                       [CCode (has_construct_function = false)]
+                       public Token.valist (string firstfield, va_list var_args);
+                       public unowned Gst.Structure writable_structure ();
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPContext", has_type_id = false)]
+               [GIR (name = "RTSPContext")]
+               public struct Context {
+                       public weak Gst.RTSPServer.Server server;
+                       public weak Gst.RTSP.Connection conn;
+                       public weak Gst.RTSPServer.Client client;
+                       public Gst.RTSP.Message request;
+                       public weak Gst.RTSP.Url uri;
+                       public Gst.RTSP.Method method;
+                       public weak Gst.RTSPServer.Auth auth;
+                       public weak Gst.RTSPServer.Token token;
+                       public weak Gst.RTSPServer.Session session;
+                       public weak Gst.RTSPServer.SessionMedia sessmedia;
+                       public weak Gst.RTSPServer.MediaFactory factory;
+                       public weak Gst.RTSPServer.Media media;
+                       public weak Gst.RTSPServer.Stream stream;
+                       public Gst.RTSP.Message response;
+                       [CCode (cname = "gst_rtsp_context_pop_current")]
+                       public void pop_current ();
+                       [CCode (cname = "gst_rtsp_context_push_current")]
+                       public void push_current ();
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstSDPInfo", has_type_id = false)]
+               [GIR (name = "SDPInfo")]
+               public struct SDPInfo {
+                       public bool is_ipv6;
+                       public weak string server_ip;
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPAddressFlags", cprefix = "GST_RTSP_ADDRESS_FLAG_", has_type_id = false)]
+               [Flags]
+               [GIR (name = "RTSPAddressFlags")]
+               public enum AddressFlags {
+                       NONE,
+                       IPV4,
+                       IPV6,
+                       EVEN_PORT,
+                       MULTICAST,
+                       UNICAST
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPAddressPoolResult", cprefix = "GST_RTSP_ADDRESS_POOL_", has_type_id = false)]
+               [GIR (name = "RTSPAddressPoolResult")]
+               public enum AddressPoolResult {
+                       OK,
+                       EINVAL,
+                       ERESERVED,
+                       ERANGE,
+                       ELAST
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPFilterResult", cprefix = "GST_RTSP_FILTER_", has_type_id = false)]
+               [GIR (name = "RTSPFilterResult")]
+               public enum FilterResult {
+                       REMOVE,
+                       KEEP,
+                       REF
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPMediaStatus", cprefix = "GST_RTSP_MEDIA_STATUS_", has_type_id = false)]
+               [GIR (name = "RTSPMediaStatus")]
+               public enum MediaStatus {
+                       UNPREPARED,
+                       UNPREPARING,
+                       PREPARING,
+                       PREPARED,
+                       SUSPENDED,
+                       ERROR
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPSuspendMode", cprefix = "GST_RTSP_SUSPEND_MODE_", type_id = "gst_rtsp_suspend_mode_get_type ()")]
+               [GIR (name = "RTSPSuspendMode")]
+               public enum SuspendMode {
+                       NONE,
+                       PAUSE,
+                       RESET
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPThreadType", cprefix = "GST_RTSP_THREAD_TYPE_", has_type_id = false)]
+               [GIR (name = "RTSPThreadType")]
+               public enum ThreadType {
+                       CLIENT,
+                       MEDIA
+               }
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPClientSendFunc", instance_pos = 3.9)]
+               public delegate bool ClientSendFunc (Gst.RTSPServer.Client client, Gst.RTSP.Message message, bool close);
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPClientSessionFilterFunc", instance_pos = 2.9)]
+               public delegate Gst.RTSPServer.FilterResult ClientSessionFilterFunc (Gst.RTSPServer.Client client, Gst.RTSPServer.Session sess);
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPKeepAliveFunc", instance_pos = 0.9)]
+               public delegate void KeepAliveFunc ();
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPSendFunc", instance_pos = 2.9)]
+               public delegate bool SendFunc (Gst.Buffer buffer, uint8 channel);
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPServerClientFilterFunc", instance_pos = 2.9)]
+               public delegate Gst.RTSPServer.FilterResult ServerClientFilterFunc (Gst.RTSPServer.Server server, Gst.RTSPServer.Client client);
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPSessionFilterFunc", instance_pos = 2.9)]
+               public delegate Gst.RTSPServer.FilterResult SessionFilterFunc (Gst.RTSPServer.Session sess, Gst.RTSPServer.SessionMedia media);
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPSessionPoolFilterFunc", instance_pos = 2.9)]
+               public delegate Gst.RTSPServer.FilterResult SessionPoolFilterFunc (Gst.RTSPServer.SessionPool pool, Gst.RTSPServer.Session session);
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPSessionPoolFunc", instance_pos = 1.9)]
+               public delegate bool SessionPoolFunc (Gst.RTSPServer.SessionPool pool);
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "GstRTSPStreamTransportFilterFunc", instance_pos = 2.9)]
+               public delegate Gst.RTSPServer.FilterResult StreamTransportFilterFunc (Gst.RTSPServer.Stream stream, Gst.RTSPServer.StreamTransport trans);
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "gst_rtsp_context_get_type")]
+               public static GLib.Type context_get_type ();
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "gst_rtsp_params_get")]
+               public static Gst.RTSP.Result params_get (Gst.RTSPServer.Client client, Gst.RTSPServer.Context ctx);
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "gst_rtsp_params_set")]
+               public static Gst.RTSP.Result params_set (Gst.RTSPServer.Client client, Gst.RTSPServer.Context ctx);
+               [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cname = "gst_rtsp_sdp_from_media")]
+               public static bool sdp_from_media (Gst.SDP.Message sdp, Gst.RTSPServer.SDPInfo info, Gst.RTSPServer.Media media);
        }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h")]
-       [Compact]
-       public class RTSPAddressClass {
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_address_pool_get_type ()")]
-       public class RTSPAddressPool : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public RTSPAddressPool ();
-               public Gst.RTSPAddress acquire_address (Gst.RTSPAddressFlags flags, int n_ports);
-               public bool add_range (string min_address, string max_address, uint16 min_port, uint16 max_port, uint8 ttl);
-               public void clear ();
-               public void dump ();
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_auth_get_type ()")]
-       public class RTSPAuth : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public RTSPAuth ();
-               public bool check (Gst.RTSPClient client, GLib.Quark hint, Gst.RTSPClientState state);
-               [NoWrapper]
-               public virtual bool check_method (Gst.RTSPClient client, GLib.Quark hint, Gst.RTSPClientState state);
-               public static string make_basic (string user, string pass);
-               public void set_basic (string basic);
-               public virtual bool setup_auth (Gst.RTSPClient client, GLib.Quark hint, Gst.RTSPClientState state);
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_client_get_type ()")]
-       public class RTSPClient : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public RTSPClient ();
-               public bool accept (GLib.Socket socket, GLib.Cancellable? cancellable = null) throws GLib.Error;
-               public uint attach (GLib.MainContext? context);
-               public Gst.RTSPAuth get_auth ();
-               public Gst.RTSPMountPoints get_mount_points ();
-               public Gst.RTSPSessionPool get_session_pool ();
-               public bool get_use_client_settings ();
-               public Gst.RTSP.Result handle_message (Gst.RTSP.Message message);
-               public void set_auth (Gst.RTSPAuth auth);
-               public void set_mount_points (Gst.RTSPMountPoints mounts);
-               public void set_send_func (owned Gst.RTSPClientSendFunc func);
-               public void set_session_pool (Gst.RTSPSessionPool pool);
-               public void set_use_client_settings (bool use_client_settings);
-               public bool use_socket (GLib.Socket socket, string ip, int port, string initial_buffer) throws GLib.Error;
-               public Gst.RTSPMountPoints mount_points { owned get; set; }
-               public Gst.RTSPSessionPool session_pool { owned get; set; }
-               public bool use_client_settings { get; set; }
-               public virtual signal void closed ();
-               public virtual signal void describe_request (void* state);
-               public virtual signal void get_parameter_request (void* state);
-               public virtual signal void new_session (Gst.RTSPSession session);
-               public virtual signal void options_request (void* state);
-               public virtual signal void pause_request (void* state);
-               public virtual signal void play_request (void* state);
-               public virtual signal void set_parameter_request (void* state);
-               public virtual signal void setup_request (void* state);
-               public virtual signal void teardown_request (void* state);
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_media_get_type ()")]
-       public class RTSPMedia : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public RTSPMedia (owned Gst.Element element);
-               public void collect_streams ();
-               public unowned Gst.RTSPStream create_stream (Gst.Element payloader, Gst.Pad srcpad);
-               [CCode (vfunc_name = "new_state")]
-               [NoWrapper]
-               public virtual bool emit_new_state (Gst.State state);
-               public Gst.RTSPAddressPool get_address_pool ();
-               public Gst.RTSPAuth get_auth ();
-               public uint get_buffer_size ();
-               public Gst.RTSP.LowerTrans get_protocols ();
-               public string get_range_string (bool play);
-               public Gst.RTSPMediaStatus get_status ();
-               public unowned Gst.RTSPStream get_stream (uint idx);
-               [NoWrapper]
-               public virtual bool handle_message (Gst.Message message);
-               public bool is_eos_shutdown ();
-               public bool is_reusable ();
-               public bool is_shared ();
-               public uint n_streams ();
-               public bool prepare ();
-               public bool seek (Gst.RTSP.TimeRange range);
-               public void set_address_pool (Gst.RTSPAddressPool pool);
-               public void set_auth (Gst.RTSPAuth auth);
-               public void set_buffer_size (uint size);
-               public void set_eos_shutdown (bool eos_shutdown);
-               public void set_protocols (Gst.RTSP.LowerTrans protocols);
-               public void set_reusable (bool reusable);
-               public void set_shared (bool shared);
-               public void take_pipeline (Gst.Pipeline pipeline);
-               public virtual bool unprepare ();
-               public uint buffer_size { get; set; }
-               [NoAccessorMethod]
-               public Gst.Element element { owned get; construct; }
-               [NoAccessorMethod]
-               public bool eos_shutdown { get; set; }
-               public Gst.RTSP.LowerTrans protocols { get; set; }
-               [NoAccessorMethod]
-               public bool reusable { get; set; }
-               [NoAccessorMethod]
-               public bool shared { get; set; }
-               public virtual signal void new_state ();
-               public virtual signal void new_stream (Gst.RTSPStream stream);
-               public virtual signal void prepared ();
-               public virtual signal void unprepared ();
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_media_factory_get_type ()")]
-       public class RTSPMediaFactory : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public RTSPMediaFactory ();
-               [NoWrapper]
-               public virtual void configure (Gst.RTSPMedia media);
-               public virtual Gst.RTSPMedia? @construct (Gst.RTSP.Url url);
-               public virtual unowned Gst.Element create_element (Gst.RTSP.Url url);
-               [NoWrapper]
-               public virtual string gen_key (Gst.RTSP.Url url);
-               public Gst.RTSPAddressPool get_address_pool ();
-               public Gst.RTSPAuth get_auth ();
-               public uint get_buffer_size ();
-               public string get_launch ();
-               public Gst.RTSP.LowerTrans get_protocols ();
-               public bool is_eos_shutdown ();
-               public bool is_shared ();
-               public void set_address_pool (Gst.RTSPAddressPool pool);
-               public void set_auth (Gst.RTSPAuth auth);
-               public void set_buffer_size (uint size);
-               public void set_eos_shutdown (bool eos_shutdown);
-               public void set_launch (string launch);
-               public void set_protocols (Gst.RTSP.LowerTrans protocols);
-               public void set_shared (bool shared);
-               public uint buffer_size { get; set; }
-               [NoAccessorMethod]
-               public bool eos_shutdown { get; set; }
-               public string launch { owned get; set; }
-               public Gst.RTSP.LowerTrans protocols { get; set; }
-               [NoAccessorMethod]
-               public bool shared { get; set; }
-               public virtual signal void media_configure (Gst.RTSPMedia media);
-               public virtual signal void media_constructed (Gst.RTSPMedia media);
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_media_factory_uri_get_type ()")]
-       public class RTSPMediaFactoryURI : Gst.RTSPMediaFactory {
-               [CCode (has_construct_function = false)]
-               public RTSPMediaFactoryURI ();
-               public string get_uri ();
-               public void set_uri (string uri);
-               public string uri { owned get; set; }
-               [NoAccessorMethod]
-               public bool use_gstpay { get; set; }
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_mount_points_get_type ()")]
-       public class RTSPMountPoints : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public RTSPMountPoints ();
-               public void add_factory (string path, owned Gst.RTSPMediaFactory factory);
-               public virtual Gst.RTSPMediaFactory find_factory (Gst.RTSP.Url url);
-               public void remove_factory (string path);
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_server_get_type ()")]
-       public class RTSPServer : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public RTSPServer ();
-               [NoWrapper]
-               public virtual bool accept_client (Gst.RTSPClient client, GLib.Socket socket) throws GLib.Error;
-               public uint attach (GLib.MainContext? context);
-               public GLib.Socket create_socket (GLib.Cancellable? cancellable = null) throws GLib.Error;
-               public GLib.Source create_source (GLib.Cancellable? cancellable = null) throws GLib.Error;
-               public string get_address ();
-               public Gst.RTSPAuth get_auth ();
-               public int get_backlog ();
-               public int get_bound_port ();
-               public int get_max_threads ();
-               public Gst.RTSPMountPoints get_mount_points ();
-               public string get_service ();
-               public Gst.RTSPSessionPool get_session_pool ();
-               public static bool io_func (GLib.Socket socket, GLib.IOCondition condition, Gst.RTSPServer server);
-               public void set_address (string address);
-               public void set_auth (Gst.RTSPAuth auth);
-               public void set_backlog (int backlog);
-               public void set_max_threads (int max_threads);
-               public void set_mount_points (Gst.RTSPMountPoints mounts);
-               public void set_service (string service);
-               public void set_session_pool (Gst.RTSPSessionPool pool);
-               public bool transfer_connection (GLib.Socket socket, string ip, int port, string initial_buffer);
-               public string address { owned get; set; }
-               public int backlog { get; set; }
-               public int bound_port { get; }
-               public int max_threads { get; set; }
-               public Gst.RTSPMountPoints mount_points { owned get; set; }
-               public string service { owned get; set; }
-               public Gst.RTSPSessionPool session_pool { owned get; set; }
-               public virtual signal void client_connected (Gst.RTSPClient client);
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_session_get_type ()")]
-       public class RTSPSession : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public RTSPSession (string sessionid);
-               public void allow_expire ();
-               public GLib.List<Gst.RTSPSessionMedia> filter (Gst.RTSPSessionFilterFunc func);
-               public string get_header ();
-               public unowned Gst.RTSPSessionMedia get_media (Gst.RTSP.Url url);
-               public unowned string get_sessionid ();
-               public uint get_timeout ();
-               public bool is_expired (GLib.TimeVal now);
-               public unowned Gst.RTSPSessionMedia manage_media (Gst.RTSP.Url uri, owned Gst.RTSPMedia media);
-               public int next_timeout (GLib.TimeVal now);
-               public void prevent_expire ();
-               public bool release_media (Gst.RTSPSessionMedia media);
-               public void set_timeout (uint timeout);
-               public void touch ();
-               public string sessionid { get; construct; }
-               public uint timeout { get; set; }
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_session_media_get_type ()")]
-       public class RTSPSessionMedia : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public RTSPSessionMedia (Gst.RTSP.Url url, Gst.RTSPMedia media);
-               public bool alloc_channels (Gst.RTSP.Range range);
-               public unowned Gst.RTSPMedia get_media ();
-               public Gst.RTSP.State get_rtsp_state ();
-               public unowned Gst.RTSPStreamTransport get_transport (uint idx);
-               public bool matches_url (Gst.RTSP.Url url);
-               public void set_rtsp_state (Gst.RTSP.State state);
-               public bool set_state (Gst.State state);
-               public unowned Gst.RTSPStreamTransport set_transport (Gst.RTSPStream stream, Gst.RTSP.Transport tr);
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_session_pool_get_type ()")]
-       public class RTSPSessionPool : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public RTSPSessionPool ();
-               public uint cleanup ();
-               public unowned Gst.RTSPSession create ();
-               [NoWrapper]
-               public virtual string create_session_id ();
-               public GLib.Source create_watch ();
-               public GLib.List<Gst.RTSPSession> filter (Gst.RTSPSessionPoolFilterFunc func);
-               public Gst.RTSPSession find (string sessionid);
-               public uint get_max_sessions ();
-               public uint get_n_sessions ();
-               public bool remove (Gst.RTSPSession sess);
-               public void set_max_sessions (uint max);
-               public uint max_sessions { get; set; }
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_stream_get_type ()")]
-       public class RTSPStream : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public RTSPStream (uint idx, Gst.Element payloader, Gst.Pad srcpad);
-               public bool add_transport (Gst.RTSPStreamTransport trans);
-               public Gst.RTSPAddress get_address ();
-               public Gst.RTSPAddressPool get_address_pool ();
-               public Gst.Caps get_caps ();
-               public uint get_index ();
-               public uint get_mtu ();
-               public bool get_rtpinfo (uint rtptime, uint seq);
-               public Gst.RTSP.Range get_server_port ();
-               public void get_ssrc (out uint ssrc);
-               public bool join_bin (Gst.Bin bin, Gst.Element rtpbin, Gst.State state);
-               public bool leave_bin (Gst.Bin bin, Gst.Element rtpbin);
-               public Gst.FlowReturn recv_rtcp (owned Gst.Buffer buffer);
-               public Gst.FlowReturn recv_rtp (owned Gst.Buffer buffer);
-               public bool remove_transport (Gst.RTSPStreamTransport trans);
-               public void set_address_pool (Gst.RTSPAddressPool pool);
-               public void set_mtu (uint mtu);
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", type_id = "gst_rtsp_stream_transport_get_type ()")]
-       public class RTSPStreamTransport : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public RTSPStreamTransport (Gst.RTSPStream stream, owned Gst.RTSP.Transport tr);
-               public unowned Gst.RTSPStream get_stream ();
-               public unowned Gst.RTSP.Transport? get_transport ();
-               public bool is_timed_out ();
-               public void keep_alive ();
-               public bool send_rtcp (Gst.Buffer buffer);
-               public bool send_rtp (Gst.Buffer buffer);
-               public bool set_active (bool active);
-               public void set_callbacks (Gst.RTSPSendFunc send_rtp, owned Gst.RTSPSendFunc send_rtcp);
-               public void set_keepalive (owned Gst.RTSPKeepAliveFunc keep_alive);
-               public void set_timed_out (bool timedout);
-               public void set_transport (owned Gst.RTSP.Transport tr);
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", has_type_id = false)]
-       public struct RTSPClientState {
-               public Gst.RTSP.Message request;
-               public weak Gst.RTSP.Url uri;
-               public Gst.RTSP.Method method;
-               public weak Gst.RTSPSession session;
-               public weak Gst.RTSPSessionMedia sessmedia;
-               public weak Gst.RTSPMediaFactory factory;
-               public weak Gst.RTSPMedia media;
-               public weak Gst.RTSPStream stream;
-               public Gst.RTSP.Message response;
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", has_type_id = false)]
-       public struct SDPInfo {
-               public weak string server_proto;
-               public weak string server_ip;
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cprefix = "GST_RTSP_ADDRESS_FLAG_", has_type_id = false)]
-       [Flags]
-       public enum RTSPAddressFlags {
-               NONE,
-               IPV4,
-               IPV6,
-               EVEN_PORT
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cprefix = "GST_RTSP_FILTER_", has_type_id = false)]
-       public enum RTSPFilterResult {
-               REMOVE,
-               KEEP,
-               REF
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", cprefix = "GST_RTSP_MEDIA_STATUS_", has_type_id = false)]
-       public enum RTSPMediaStatus {
-               UNPREPARED,
-               UNPREPARING,
-               PREPARING,
-               PREPARED,
-               ERROR
-       }
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", instance_pos = 3.9)]
-       public delegate bool RTSPClientSendFunc (Gst.RTSPClient client, Gst.RTSP.Message message, bool close);
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", instance_pos = 0.9)]
-       public delegate void RTSPKeepAliveFunc ();
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", instance_pos = 2.9)]
-       public delegate bool RTSPSendFunc (Gst.Buffer buffer, uint8 channel);
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", instance_pos = 2.9)]
-       public delegate Gst.RTSPFilterResult RTSPSessionFilterFunc (Gst.RTSPSession sess, Gst.RTSPSessionMedia media);
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", instance_pos = 2.9)]
-       public delegate Gst.RTSPFilterResult RTSPSessionPoolFilterFunc (Gst.RTSPSessionPool pool, Gst.RTSPSession session);
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h", instance_pos = 1.9)]
-       public delegate bool RTSPSessionPoolFunc (Gst.RTSPSessionPool pool);
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h")]
-       public static Gst.RTSP.Result rtsp_params_get (Gst.RTSPClient client, Gst.RTSPClientState state);
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h")]
-       public static Gst.RTSP.Result rtsp_params_set (Gst.RTSPClient client, Gst.RTSPClientState state);
-       [CCode (cheader_filename = "gst/rtsp-server/rtsp-server.h")]
-       public static bool rtsp_sdp_from_media (Gst.SDP.Message sdp, Gst.SDPInfo info, Gst.RTSPMedia media);
 }
index bab2a29..e6ce3f2 100644 (file)
@@ -3,7 +3,135 @@
 [CCode (cprefix = "Gst", gir_namespace = "GstSdp", gir_version = "1.0", lower_case_cprefix = "gst_")]
 namespace Gst {
        namespace SDP {
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h")]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYDecryptInfo")]
+               [Compact]
+               [GIR (name = "MIKEYDecryptInfo")]
+               public class MIKEYDecryptInfo {
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYEncryptInfo")]
+               [Compact]
+               [GIR (name = "MIKEYEncryptInfo")]
+               public class MIKEYEncryptInfo {
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYMessage", copy_function = "g_boxed_copy", free_function = "g_boxed_free", lower_case_cprefix = "gst_mikey_message_", type_id = "gst_mikey_message_get_type ()")]
+               [Compact]
+               [GIR (name = "MIKEYMessage")]
+               public class MIKEYMessage : Gst.MiniObject {
+                       public uint32 CSB_id;
+                       public bool V;
+                       public weak GLib.Array<void*> map_info;
+                       public Gst.SDP.MIKEYMapType map_type;
+                       public weak GLib.Array<void*> payloads;
+                       public Gst.SDP.MIKEYPRFFunc prf_func;
+                       public Gst.SDP.MIKEYType type;
+                       public uint8 version;
+                       [CCode (has_construct_function = false)]
+                       public MIKEYMessage ();
+                       public bool add_cs_srtp (uint8 policy, uint32 ssrc, uint32 roc);
+                       public bool add_payload (owned Gst.SDP.MIKEYPayload payload);
+                       public bool add_pke (Gst.SDP.MIKEYCacheType C, [CCode (array_length_cname = "data_len", array_length_pos = 1.5, array_length_type = "guint16")] uint8[] data);
+                       public bool add_rand ([CCode (array_length_cname = "len", array_length_pos = 0.5, array_length_type = "guint8")] uint8[] rand);
+                       public bool add_rand_len (uint8 len);
+                       public bool add_t (Gst.SDP.MIKEYTSType type, [CCode (array_length = false)] uint8[] ts_value);
+                       public bool add_t_now_ntp_utc ();
+                       public unowned Gst.SDP.MIKEYPayload find_payload (Gst.SDP.MIKEYPayloadType type, uint nth);
+                       [CCode (has_construct_function = false)]
+                       public MIKEYMessage.from_bytes (GLib.Bytes bytes, Gst.SDP.MIKEYDecryptInfo info) throws GLib.Error;
+                       [CCode (has_construct_function = false)]
+                       public MIKEYMessage.from_data ([CCode (array_length_cname = "size", array_length_pos = 1.5, array_length_type = "gsize")] uint8[] data, Gst.SDP.MIKEYDecryptInfo info) throws GLib.Error;
+                       public unowned Gst.SDP.MIKEYMapSRTP? get_cs_srtp (uint idx);
+                       public uint get_n_cs ();
+                       public uint get_n_payloads ();
+                       public unowned Gst.SDP.MIKEYPayload get_payload (uint idx);
+                       public bool insert_cs_srtp (int idx, Gst.SDP.MIKEYMapSRTP map);
+                       public bool insert_payload (uint idx, owned Gst.SDP.MIKEYPayload payload);
+                       public bool remove_cs_srtp (int idx);
+                       public bool remove_payload (uint idx);
+                       public bool replace_cs_srtp (int idx, Gst.SDP.MIKEYMapSRTP map);
+                       public bool replace_payload (uint idx, owned Gst.SDP.MIKEYPayload payload);
+                       public bool set_info (uint8 version, Gst.SDP.MIKEYType type, bool V, Gst.SDP.MIKEYPRFFunc prf_func, uint32 CSB_id, Gst.SDP.MIKEYMapType map_type);
+                       public GLib.Bytes to_bytes (Gst.SDP.MIKEYEncryptInfo info) throws GLib.Error;
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYPayload", copy_function = "g_boxed_copy", free_function = "g_boxed_free", lower_case_cprefix = "gst_mikey_payload_", type_id = "gst_mikey_payload_get_type ()")]
+               [Compact]
+               [GIR (name = "MIKEYPayload")]
+               public class MIKEYPayload : Gst.MiniObject {
+                       public uint len;
+                       public Gst.SDP.MIKEYPayloadType type;
+                       [CCode (has_construct_function = false)]
+                       public MIKEYPayload (Gst.SDP.MIKEYPayloadType type);
+                       public bool kemac_add_sub (owned Gst.SDP.MIKEYPayload newpay);
+                       public uint kemac_get_n_sub ();
+                       public unowned Gst.SDP.MIKEYPayload kemac_get_sub (uint idx);
+                       public bool kemac_remove_sub (uint idx);
+                       public bool kemac_set (Gst.SDP.MIKEYEncAlg enc_alg, Gst.SDP.MIKEYMacAlg mac_alg);
+                       public bool key_data_set_interval (uint8 vf_len, [CCode (array_length_cname = "vt_len", array_length_pos = 1.66667, array_length_type = "guint8")] uint8[] vt_data);
+                       public bool key_data_set_key (Gst.SDP.MIKEYKeyDataType key_type, [CCode (array_length_cname = "key_len", array_length_pos = 1.5, array_length_type = "guint16")] uint8[] key_data);
+                       public bool key_data_set_salt ([CCode (array_length_cname = "salt_len", array_length_pos = 0.5, array_length_type = "guint16")] uint8[]? salt_data);
+                       public bool key_data_set_spi ([CCode (array_length_cname = "spi_len", array_length_pos = 0.5, array_length_type = "guint8")] uint8[] spi_data);
+                       public bool pke_set (Gst.SDP.MIKEYCacheType C, [CCode (array_length_cname = "data_len", array_length_pos = 1.5, array_length_type = "guint16")] uint8[] data);
+                       public bool rand_set ([CCode (array_length_cname = "len", array_length_pos = 0.5, array_length_type = "guint8")] uint8[] rand);
+                       public bool sp_add_param (uint8 type, [CCode (array_length_cname = "len", array_length_pos = 1.5, array_length_type = "guint8")] uint8[] val);
+                       public uint sp_get_n_params ();
+                       public unowned Gst.SDP.MIKEYPayloadSPParam? sp_get_param (uint idx);
+                       public bool sp_remove_param (uint idx);
+                       public bool sp_set (uint policy, Gst.SDP.MIKEYSecProto proto);
+                       public bool t_set (Gst.SDP.MIKEYTSType type, [CCode (array_length = false)] uint8[] ts_value);
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYPayloadKEMAC")]
+               [Compact]
+               [GIR (name = "MIKEYPayloadKEMAC")]
+               public class MIKEYPayloadKEMAC : Gst.SDP.MIKEYPayload {
+                       public Gst.SDP.MIKEYEncAlg enc_alg;
+                       public Gst.SDP.MIKEYMacAlg mac_alg;
+                       public weak GLib.Array<void*> subpayloads;
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYPayloadKeyData")]
+               [Compact]
+               [GIR (name = "MIKEYPayloadKeyData")]
+               public class MIKEYPayloadKeyData : Gst.SDP.MIKEYPayload {
+                       public uint8 key_data;
+                       public uint16 key_len;
+                       public Gst.SDP.MIKEYKeyDataType key_type;
+                       [CCode (array_length = false, array_null_terminated = true)]
+                       public weak uint8[] kv_data;
+                       [CCode (array_length = false, array_null_terminated = true)]
+                       public weak uint8[] kv_len;
+                       public Gst.SDP.MIKEYKVType kv_type;
+                       public uint8 salt_data;
+                       public uint16 salt_len;
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYPayloadPKE")]
+               [Compact]
+               [GIR (name = "MIKEYPayloadPKE")]
+               public class MIKEYPayloadPKE : Gst.SDP.MIKEYPayload {
+                       public Gst.SDP.MIKEYCacheType C;
+                       public uint8 data;
+                       public uint16 data_len;
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYPayloadRAND")]
+               [Compact]
+               [GIR (name = "MIKEYPayloadRAND")]
+               public class MIKEYPayloadRAND : Gst.SDP.MIKEYPayload {
+                       public uint8 len;
+                       public uint8 rand;
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYPayloadSP")]
+               [Compact]
+               [GIR (name = "MIKEYPayloadSP")]
+               public class MIKEYPayloadSP : Gst.SDP.MIKEYPayload {
+                       public weak GLib.Array<void*> @params;
+                       public uint policy;
+                       public Gst.SDP.MIKEYSecProto proto;
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYPayloadT")]
+               [Compact]
+               [GIR (name = "MIKEYPayloadT")]
+               public class MIKEYPayloadT : Gst.SDP.MIKEYPayload {
+                       public uint8 ts_value;
+                       public Gst.SDP.MIKEYTSType type;
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gst_sdp_message_get_type ()")]
                [Compact]
                [GIR (name = "SDPMessage")]
                public class Message {
@@ -26,11 +154,12 @@ namespace Gst {
                        public Gst.SDP.Result add_email (string email);
                        public Gst.SDP.Result add_media (Gst.SDP.Media media);
                        public Gst.SDP.Result add_phone (string phone);
-                       public Gst.SDP.Result add_time (string start, string stop, [CCode (array_length = false)] string[] repeat);
+                       public Gst.SDP.Result add_time (string start, string stop, [CCode (array_length = false, array_null_terminated = true)] string[] repeat);
                        public Gst.SDP.Result add_zone (string adj_time, string typed_time);
                        public string as_text ();
                        public uint attributes_len ();
                        public uint bandwidths_len ();
+                       public Gst.SDP.Result copy (out Gst.SDP.Message copy);
                        public Gst.SDP.Result dump ();
                        public uint emails_len ();
                        public Gst.SDP.Result free ();
@@ -51,8 +180,26 @@ namespace Gst {
                        public unowned string get_version ();
                        public unowned Gst.SDP.Zone? get_zone (uint idx);
                        public Gst.SDP.Result init ();
+                       public Gst.SDP.Result insert_attribute (int idx, Gst.SDP.Attribute attr);
+                       public Gst.SDP.Result insert_bandwidth (int idx, Gst.SDP.Bandwidth bw);
+                       public Gst.SDP.Result insert_email (int idx, string email);
+                       public Gst.SDP.Result insert_phone (int idx, string phone);
+                       public Gst.SDP.Result insert_time (int idx, Gst.SDP.Time t);
+                       public Gst.SDP.Result insert_zone (int idx, Gst.SDP.Zone zone);
                        public uint medias_len ();
                        public uint phones_len ();
+                       public Gst.SDP.Result remove_attribute (uint idx);
+                       public Gst.SDP.Result remove_bandwidth (uint idx);
+                       public Gst.SDP.Result remove_email (uint idx);
+                       public Gst.SDP.Result remove_phone (uint idx);
+                       public Gst.SDP.Result remove_time (uint idx);
+                       public Gst.SDP.Result remove_zone (uint idx);
+                       public Gst.SDP.Result replace_attribute (uint idx, Gst.SDP.Attribute attr);
+                       public Gst.SDP.Result replace_bandwidth (uint idx, Gst.SDP.Bandwidth bw);
+                       public Gst.SDP.Result replace_email (uint idx, string email);
+                       public Gst.SDP.Result replace_phone (uint idx, string phone);
+                       public Gst.SDP.Result replace_time (uint idx, Gst.SDP.Time t);
+                       public Gst.SDP.Result replace_zone (uint idx, Gst.SDP.Zone zone);
                        public Gst.SDP.Result set_connection (string nettype, string addrtype, string address, uint ttl, uint addr_number);
                        public Gst.SDP.Result set_information (string information);
                        public Gst.SDP.Result set_key (string type, string data);
@@ -64,19 +211,23 @@ namespace Gst {
                        public Gst.SDP.Result uninit ();
                        public uint zones_len ();
                }
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", has_type_id = false)]
                [GIR (name = "SDPAttribute")]
                public struct Attribute {
                        public weak string key;
                        public weak string value;
+                       public Gst.SDP.Result clear ();
+                       public Gst.SDP.Result @set (string key, string value);
                }
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", has_type_id = false)]
                [GIR (name = "SDPBandwidth")]
                public struct Bandwidth {
                        public weak string bwtype;
                        public uint bandwidth;
+                       public Gst.SDP.Result clear ();
+                       public Gst.SDP.Result @set (string bwtype, uint bandwidth);
                }
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", has_type_id = false)]
                [GIR (name = "SDPConnection")]
                public struct Connection {
                        public weak string nettype;
@@ -84,14 +235,30 @@ namespace Gst {
                        public weak string address;
                        public uint ttl;
                        public uint addr_number;
+                       public Gst.SDP.Result clear ();
+                       public Gst.SDP.Result @set (string nettype, string addrtype, string address, uint ttl, uint addr_number);
                }
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", has_type_id = false)]
                [GIR (name = "SDPKey")]
                public struct Key {
                        public weak string type;
                        public weak string data;
                }
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYMapSRTP", has_type_id = false)]
+               [GIR (name = "MIKEYMapSRTP")]
+               public struct MIKEYMapSRTP {
+                       public uint8 policy;
+                       public uint32 ssrc;
+                       public uint32 roc;
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYPayloadSPParam", has_type_id = false)]
+               [GIR (name = "MIKEYPayloadSPParam")]
+               public struct MIKEYPayloadSPParam {
+                       public uint8 type;
+                       public uint8 len;
+                       public uint8 val;
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", has_type_id = false)]
                [GIR (name = "SDPMedia")]
                public struct Media {
                        public weak string media;
@@ -112,6 +279,7 @@ namespace Gst {
                        public uint attributes_len ();
                        public uint bandwidths_len ();
                        public uint connections_len ();
+                       public Gst.SDP.Result copy (out Gst.SDP.Media copy);
                        public uint formats_len ();
                        public Gst.SDP.Result free ();
                        public unowned Gst.SDP.Attribute? get_attribute (uint idx);
@@ -127,6 +295,18 @@ namespace Gst {
                        public uint get_port ();
                        public unowned string get_proto ();
                        public Gst.SDP.Result init ();
+                       public Gst.SDP.Result insert_attribute (int idx, Gst.SDP.Attribute attr);
+                       public Gst.SDP.Result insert_bandwidth (int idx, Gst.SDP.Bandwidth bw);
+                       public Gst.SDP.Result insert_connection (int idx, Gst.SDP.Connection conn);
+                       public Gst.SDP.Result insert_format (int idx, string format);
+                       public Gst.SDP.Result remove_attribute (uint idx);
+                       public Gst.SDP.Result remove_bandwidth (uint idx);
+                       public Gst.SDP.Result remove_connection (uint idx);
+                       public Gst.SDP.Result remove_format (uint idx);
+                       public Gst.SDP.Result replace_attribute (uint idx, Gst.SDP.Attribute attr);
+                       public Gst.SDP.Result replace_bandwidth (uint idx, Gst.SDP.Bandwidth bw);
+                       public Gst.SDP.Result replace_connection (uint idx, Gst.SDP.Connection conn);
+                       public Gst.SDP.Result replace_format (uint idx, string format);
                        public Gst.SDP.Result set_information (string information);
                        public Gst.SDP.Result set_key (string type, string data);
                        public Gst.SDP.Result set_media (string med);
@@ -134,7 +314,7 @@ namespace Gst {
                        public Gst.SDP.Result set_proto (string proto);
                        public Gst.SDP.Result uninit ();
                }
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", has_type_id = false)]
                [GIR (name = "SDPOrigin")]
                public struct Origin {
                        public weak string username;
@@ -144,48 +324,160 @@ namespace Gst {
                        public weak string addrtype;
                        public weak string addr;
                }
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", has_type_id = false)]
                [GIR (name = "SDPTime")]
                public struct Time {
                        public weak string start;
                        public weak string stop;
                        public weak GLib.Array<void*> repeat;
+                       public Gst.SDP.Result clear ();
+                       public Gst.SDP.Result @set (string start, string stop, [CCode (array_length = false, array_null_terminated = true)] string[] repeat);
                }
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", has_type_id = false)]
                [GIR (name = "SDPZone")]
                public struct Zone {
                        public weak string time;
                        public weak string typed_time;
+                       public Gst.SDP.Result clear ();
+                       public Gst.SDP.Result @set (string adj_time, string typed_time);
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYCacheType", cprefix = "GST_MIKEY_CACHE_", has_type_id = false)]
+               [GIR (name = "MIKEYCacheType")]
+               public enum MIKEYCacheType {
+                       NONE,
+                       ALWAYS,
+                       FOR_CSB
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYEncAlg", cprefix = "GST_MIKEY_ENC_", has_type_id = false)]
+               [GIR (name = "MIKEYEncAlg")]
+               public enum MIKEYEncAlg {
+                       NULL,
+                       AES_CM_128,
+                       AES_KW_128
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYKVType", cprefix = "GST_MIKEY_KV_", has_type_id = false)]
+               [GIR (name = "MIKEYKVType")]
+               public enum MIKEYKVType {
+                       NULL,
+                       SPI,
+                       INTERVAL
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYKeyDataType", cprefix = "GST_MIKEY_KD_", has_type_id = false)]
+               [GIR (name = "MIKEYKeyDataType")]
+               public enum MIKEYKeyDataType {
+                       TGK,
+                       TEK
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYMacAlg", cprefix = "GST_MIKEY_MAC_", has_type_id = false)]
+               [GIR (name = "MIKEYMacAlg")]
+               public enum MIKEYMacAlg {
+                       NULL,
+                       HMAC_SHA_1_160
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYMapType", cprefix = "GST_MIKEY_MAP_TYPE_", has_type_id = false)]
+               [GIR (name = "MIKEYMapType")]
+               public enum MIKEYMapType {
+                       [CCode (cname = "GST_MIKEY_MAP_TYPE_SRTP")]
+                       MIKEY_MAP_TYPE_SRTP
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYPRFFunc", cprefix = "GST_MIKEY_PRF_", has_type_id = false)]
+               [GIR (name = "MIKEYPRFFunc")]
+               public enum MIKEYPRFFunc {
+                       [CCode (cname = "GST_MIKEY_PRF_MIKEY_1")]
+                       MIKEY_PRF_MIKEY_1
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYPayloadType", cprefix = "GST_MIKEY_PT_", has_type_id = false)]
+               [GIR (name = "MIKEYPayloadType")]
+               public enum MIKEYPayloadType {
+                       LAST,
+                       KEMAC,
+                       PKE,
+                       DH,
+                       SIGN,
+                       T,
+                       ID,
+                       CERT,
+                       CHASH,
+                       V,
+                       SP,
+                       RAND,
+                       ERR,
+                       KEY_DATA,
+                       GEN_EXT
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYSecProto", cprefix = "GST_MIKEY_SEC_PROTO_", has_type_id = false)]
+               [GIR (name = "MIKEYSecProto")]
+               public enum MIKEYSecProto {
+                       [CCode (cname = "GST_MIKEY_SEC_PROTO_SRTP")]
+                       MIKEY_SEC_PROTO_SRTP
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYSecSRTP", cprefix = "GST_MIKEY_SP_SRTP_", has_type_id = false)]
+               [GIR (name = "MIKEYSecSRTP")]
+               public enum MIKEYSecSRTP {
+                       ENC_ALG,
+                       ENC_KEY_LEN,
+                       AUTH_ALG,
+                       AUTH_KEY_LEN,
+                       SALT_KEY_LEN,
+                       PRF,
+                       KEY_DERIV_RATE,
+                       SRTP_ENC,
+                       SRTCP_ENC,
+                       FEC_ORDER,
+                       SRTP_AUTH,
+                       AUTH_TAG_LEN,
+                       SRTP_PREFIX_LEN
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYTSType", cprefix = "GST_MIKEY_TS_TYPE_", has_type_id = false)]
+               [GIR (name = "MIKEYTSType")]
+               public enum MIKEYTSType {
+                       NTP_UTC,
+                       NTP,
+                       COUNTER
+               }
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GstMIKEYType", cprefix = "GST_MIKEY_TYPE_", has_type_id = false)]
+               [GIR (name = "MIKEYType")]
+               public enum MIKEYType {
+                       INVALID,
+                       PSK_INIT,
+                       PSK_VERIFY,
+                       PK_INIT,
+                       PK_VERIFY,
+                       DH_INIT,
+                       DH_RESP,
+                       ERROR
                }
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", cprefix = "GST_SDP_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cprefix = "GST_SDP_", has_type_id = false)]
                [GIR (name = "SDPResult")]
                public enum Result {
                        OK,
                        EINVAL
                }
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", cname = "GST_SDP_BWTYPE_AS")]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GST_SDP_BWTYPE_AS")]
                public const string BWTYPE_AS;
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", cname = "GST_SDP_BWTYPE_CT")]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GST_SDP_BWTYPE_CT")]
                public const string BWTYPE_CT;
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", cname = "GST_SDP_BWTYPE_EXT_PREFIX")]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GST_SDP_BWTYPE_EXT_PREFIX")]
                public const string BWTYPE_EXT_PREFIX;
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", cname = "GST_SDP_BWTYPE_RR")]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GST_SDP_BWTYPE_RR")]
                public const string BWTYPE_RR;
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", cname = "GST_SDP_BWTYPE_RS")]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GST_SDP_BWTYPE_RS")]
                public const string BWTYPE_RS;
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h", cname = "GST_SDP_BWTYPE_TIAS")]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GST_SDP_BWTYPE_TIAS")]
                public const string BWTYPE_TIAS;
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h")]
+               [CCode (cheader_filename = "gst/sdp/sdp.h", cname = "GST_MIKEY_VERSION")]
+               public const int MIKEY_VERSION;
+               [CCode (cheader_filename = "gst/sdp/sdp.h")]
                public static bool address_is_multicast (string nettype, string addrtype, string addr);
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h")]
+               [CCode (cheader_filename = "gst/sdp/sdp.h")]
                public static Gst.SDP.Result media_new (out Gst.SDP.Media media);
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h")]
+               [CCode (cheader_filename = "gst/sdp/sdp.h")]
                public static string message_as_uri (string scheme, Gst.SDP.Message msg);
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h")]
+               [CCode (cheader_filename = "gst/sdp/sdp.h")]
                public static Gst.SDP.Result message_new (out Gst.SDP.Message msg);
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h")]
-               public static Gst.SDP.Result message_parse_buffer (uint8 data, uint size, Gst.SDP.Message msg);
-               [CCode (cheader_filename = "gst/sdp/gstsdp.h,gst/sdp/gstsdpmessage.h")]
+               [CCode (cheader_filename = "gst/sdp/sdp.h")]
+               public static Gst.SDP.Result message_parse_buffer ([CCode (array_length_cname = "size", array_length_pos = 1.5, array_length_type = "guint")] uint8[] data, Gst.SDP.Message msg);
+               [CCode (cheader_filename = "gst/sdp/sdp.h")]
                public static Gst.SDP.Result message_parse_uri (string uri, Gst.SDP.Message msg);
        }
 }
index c37084f..03c9505 100644 (file)
 namespace Gst {
        namespace Tag {
                namespace CDDA {
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CDDA_CDDB_DISCID")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CDDA_CDDB_DISCID")]
                        public const string CDDB_DISCID;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CDDA_CDDB_DISCID_FULL")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CDDA_CDDB_DISCID_FULL")]
                        public const string CDDB_DISCID_FULL;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CDDA_MUSICBRAINZ_DISCID")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CDDA_MUSICBRAINZ_DISCID")]
                        public const string MUSICBRAINZ_DISCID;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL")]
                        public const string MUSICBRAINZ_DISCID_FULL;
                }
                namespace CMML {
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CMML_CLIP")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CMML_CLIP")]
                        public const string CLIP;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CMML_HEAD")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CMML_HEAD")]
                        public const string HEAD;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CMML_STREAM")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CMML_STREAM")]
                        public const string STREAM;
                }
                namespace Capturing {
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_CONTRAST")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_CONTRAST")]
                        public const string CONTRAST;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_DIGITAL_ZOOM_RATIO")]
                        public const string DIGITAL_ZOOM_RATIO;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_EXPOSURE_COMPENSATION")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_EXPOSURE_COMPENSATION")]
                        public const string EXPOSURE_COMPENSATION;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_EXPOSURE_MODE")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_EXPOSURE_MODE")]
                        public const string EXPOSURE_MODE;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_EXPOSURE_PROGRAM")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_EXPOSURE_PROGRAM")]
                        public const string EXPOSURE_PROGRAM;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_FLASH_FIRED")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_FLASH_FIRED")]
                        public const string FLASH_FIRED;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_FLASH_MODE")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_FLASH_MODE")]
                        public const string FLASH_MODE;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_FOCAL_LENGTH")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_FOCAL_LENGTH")]
                        public const string FOCAL_LENGTH;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_FOCAL_RATIO")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_FOCAL_RATIO")]
                        public const string FOCAL_RATIO;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_GAIN_ADJUSTMENT")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_GAIN_ADJUSTMENT")]
                        public const string GAIN_ADJUSTMENT;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_ISO_SPEED")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_ISO_SPEED")]
                        public const string ISO_SPEED;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_METERING_MODE")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_METERING_MODE")]
                        public const string METERING_MODE;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_SATURATION")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_SATURATION")]
                        public const string SATURATION;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE")]
                        public const string SCENE_CAPTURE_TYPE;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_SHARPNESS")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_SHARPNESS")]
                        public const string SHARPNESS;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_SHUTTER_SPEED")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_SHUTTER_SPEED")]
                        public const string SHUTTER_SPEED;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_SOURCE")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_SOURCE")]
                        public const string SOURCE;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_CAPTURING_WHITE_BALANCE")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_CAPTURING_WHITE_BALANCE")]
                        public const string WHITE_BALANCE;
                }
                namespace Image {
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_IMAGE_HORIZONTAL_PPI")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_IMAGE_HORIZONTAL_PPI")]
                        public const string HORIZONTAL_PPI;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_IMAGE_VERTICAL_PPI")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_IMAGE_VERTICAL_PPI")]
                        public const string VERTICAL_PPI;
                }
                namespace List {
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+                       [CCode (cheader_filename = "gst/tag/tag.h")]
                        public static bool add_id3_image (Gst.TagList tag_list, uint8 image_data, uint image_data_len, uint id3_picture_type);
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+                       [CCode (cheader_filename = "gst/tag/tag.h")]
                        public static Gst.TagList from_exif_buffer (Gst.Buffer buffer, int byte_order, uint32 base_offset);
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+                       [CCode (cheader_filename = "gst/tag/tag.h")]
                        public static Gst.TagList from_exif_buffer_with_tiff_header (Gst.Buffer buffer);
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+                       [CCode (cheader_filename = "gst/tag/tag.h")]
                        public static Gst.TagList from_id3v2_tag (Gst.Buffer buffer);
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+                       [CCode (cheader_filename = "gst/tag/tag.h")]
                        public static Gst.TagList from_vorbiscomment (uint8 data, size_t size, uint8 id_data, uint id_data_length, string vendor_string);
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+                       [CCode (cheader_filename = "gst/tag/tag.h")]
                        public static Gst.TagList from_vorbiscomment_buffer (Gst.Buffer buffer, uint8 id_data, uint id_data_length, string vendor_string);
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+                       [CCode (cheader_filename = "gst/tag/tag.h")]
                        public static Gst.TagList from_xmp_buffer (Gst.Buffer buffer);
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+                       [CCode (cheader_filename = "gst/tag/tag.h")]
                        public static Gst.TagList new_from_id3v1 (uint8 data);
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+                       [CCode (cheader_filename = "gst/tag/tag.h")]
                        public static Gst.Buffer to_exif_buffer (Gst.TagList taglist, int byte_order, uint32 base_offset);
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+                       [CCode (cheader_filename = "gst/tag/tag.h")]
                        public static Gst.Buffer to_exif_buffer_with_tiff_header (Gst.TagList taglist);
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+                       [CCode (cheader_filename = "gst/tag/tag.h")]
                        public static Gst.Buffer to_vorbiscomment_buffer (Gst.TagList list, uint8 id_data, uint id_data_length, string vendor_string);
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+                       [CCode (cheader_filename = "gst/tag/tag.h")]
                        public static Gst.Buffer to_xmp_buffer (Gst.TagList list, bool read_only, string schemas);
                }
                namespace MusicBrainz {
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_MUSICBRAINZ_ALBUMARTISTID")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_MUSICBRAINZ_ALBUMARTISTID")]
                        public const string ALBUMARTISTID;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_MUSICBRAINZ_ALBUMID")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_MUSICBRAINZ_ALBUMID")]
                        public const string ALBUMID;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_MUSICBRAINZ_ARTISTID")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_MUSICBRAINZ_ARTISTID")]
                        public const string ARTISTID;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_MUSICBRAINZ_TRACKID")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_MUSICBRAINZ_TRACKID")]
                        public const string TRACKID;
-                       [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_MUSICBRAINZ_TRMID")]
+                       [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_MUSICBRAINZ_TRMID")]
                        public const string TRMID;
                }
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", type_id = "gst_tag_demux_get_type ()")]
+               [CCode (cheader_filename = "gst/tag/tag.h", type_id = "gst_tag_demux_get_type ()")]
                [GIR (name = "TagDemux")]
                public abstract class Demux : Gst.Element {
                        [CCode (has_construct_function = false)]
@@ -115,7 +115,7 @@ namespace Gst {
                        [NoWrapper]
                        public virtual Gst.Tag.DemuxResult parse_tag (Gst.Buffer buffer, bool start_tag, uint tag_size, Gst.TagList tags);
                }
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", type_id = "gst_tag_mux_get_type ()")]
+               [CCode (cheader_filename = "gst/tag/tag.h", type_id = "gst_tag_mux_get_type ()")]
                [GIR (name = "TagMux")]
                public abstract class Mux : Gst.Element, Gst.TagSetter {
                        [CCode (has_construct_function = false)]
@@ -125,7 +125,7 @@ namespace Gst {
                        [NoWrapper]
                        public virtual Gst.Buffer render_start_tag (Gst.TagList tag_list);
                }
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", type_id = "gst_tag_xmp_writer_get_type ()")]
+               [CCode (cheader_filename = "gst/tag/tag.h", type_id = "gst_tag_xmp_writer_get_type ()")]
                [GIR (name = "TagXmpWriter")]
                public interface XmpWriter : Gst.Element {
                        public void add_all_schemas ();
@@ -135,14 +135,14 @@ namespace Gst {
                        public void remove_schema (string schema);
                        public Gst.Buffer tag_list_to_xmp_buffer (Gst.TagList taglist, bool read_only);
                }
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cprefix = "GST_TAG_DEMUX_RESULT_", type_id = "gst_tag_demux_result_get_type ()")]
+               [CCode (cheader_filename = "gst/tag/tag.h", cprefix = "GST_TAG_DEMUX_RESULT_", type_id = "gst_tag_demux_result_get_type ()")]
                [GIR (name = "TagDemuxResult")]
                public enum DemuxResult {
                        BROKEN_TAG,
                        AGAIN,
                        OK
                }
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cprefix = "GST_TAG_IMAGE_TYPE_", type_id = "gst_tag_image_type_get_type ()")]
+               [CCode (cheader_filename = "gst/tag/tag.h", cprefix = "GST_TAG_IMAGE_TYPE_", type_id = "gst_tag_image_type_get_type ()")]
                [GIR (name = "TagImageType")]
                public enum ImageType {
                        NONE,
@@ -167,7 +167,7 @@ namespace Gst {
                        ARTIST_LOGO,
                        PUBLISHER_STUDIO_LOGO
                }
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cprefix = "GST_TAG_LICENSE_", type_id = "gst_tag_license_flags_get_type ()")]
+               [CCode (cheader_filename = "gst/tag/tag.h", cprefix = "GST_TAG_LICENSE_", type_id = "gst_tag_license_flags_get_type ()")]
                [Flags]
                [GIR (name = "TagLicenseFlags")]
                public enum LicenseFlags {
@@ -187,63 +187,65 @@ namespace Gst {
                        CREATIVE_COMMONS_LICENSE,
                        FREE_SOFTWARE_FOUNDATION_LICENSE
                }
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "GST_TAG_ID3V2_HEADER_SIZE")]
+               [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_ID3V2_HEADER_SIZE")]
                public const int ID3V2_HEADER_SIZE;
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h", cname = "GST_TAG_MUSICAL_KEY")]
+               public const string MUSICAL_KEY;
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static bool check_language_code (string lang_code);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static string freeform_string_to_utf8 (string data, int size, string env_vars);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string from_id3_tag (string id3_tag);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string from_id3_user_tag (string type, string id3_user_tag);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string from_vorbis_tag (string vorbis_tag);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static uint get_id3v2_tag_size (Gst.Buffer buffer);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string get_language_code_iso_639_1 (string lang_code);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string get_language_code_iso_639_2B (string lang_code);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string get_language_code_iso_639_2T (string lang_code);
-               [CCode (array_length = false, array_null_terminated = true, cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (array_length = false, array_null_terminated = true, cheader_filename = "gst/tag/tag.h")]
                public static string[] get_language_codes ();
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string get_language_name (string language_code);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string get_license_description (string license_ref);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static Gst.Tag.LicenseFlags get_license_flags (string license_ref);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string get_license_jurisdiction (string license_ref);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string get_license_nick (string license_ref);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string get_license_title (string license_ref);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string get_license_version (string license_ref);
-               [CCode (array_length = false, array_null_terminated = true, cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (array_length = false, array_null_terminated = true, cheader_filename = "gst/tag/tag.h")]
                public static string[] get_licenses ();
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static uint id3_genre_count ();
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string id3_genre_get (uint id);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static Gst.Sample image_data_to_image_sample (uint8 image_data, uint image_data_len, Gst.Tag.ImageType image_type);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static bool parse_extended_comment (string ext_comment, string key, string lang, string value, bool fail_if_no_key);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static void register_musicbrainz_tags ();
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string to_id3_tag (string gst_tag);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static GLib.List<string> to_vorbis_comments (Gst.TagList list, string tag);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (cheader_filename = "gst/tag/tag.h")]
                public static unowned string to_vorbis_tag (string gst_tag);
-               [CCode (cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h", cname = "gst_vorbis_tag_add")]
+               [CCode (cheader_filename = "gst/tag/tag.h", cname = "gst_vorbis_tag_add")]
                public static void vorbis_tag_add (Gst.TagList list, string tag, string value);
-               [CCode (array_length = false, array_null_terminated = true, cheader_filename = "gst/tag/gsttagdemux.h,gst/tag/gsttagmux.h,gst/tag/tag.h,gst/tag/xmpwriter.h")]
+               [CCode (array_length = false, array_null_terminated = true, cheader_filename = "gst/tag/tag.h")]
                public static unowned string[] xmp_list_schemas ();
        }
 }
index b3ddd30..b09e609 100644 (file)
@@ -3,12 +3,22 @@
 [CCode (cprefix = "Gst", gir_namespace = "GstVideo", gir_version = "1.0", lower_case_cprefix = "gst_")]
 namespace Gst {
        namespace Video {
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", type_id = "gst_video_buffer_pool_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", type_id = "gst_video_buffer_pool_get_type ()")]
                [GIR (name = "VideoBufferPool")]
                public class BufferPool : Gst.BufferPool {
                        [CCode (has_construct_function = false, type = "GstBufferPool*")]
                        public BufferPool ();
                }
+               [CCode (cheader_filename = "gst/video/video.h")]
+               [Compact]
+               [GIR (name = "VideoChromaResample")]
+               public class ChromaResample {
+                       public ChromaResample (Gst.Video.ChromaMethod method, Gst.Video.ChromaSite site, Gst.Video.ChromaFlags flags, Gst.Video.Format format, int h_factor, int v_factor);
+                       public void free ();
+                       public void get_info (uint n_lines, int offset);
+                       [CCode (cname = "gst_video_chroma_resample")]
+                       public void resample (void* lines, int width);
+               }
                [CCode (cheader_filename = "gst/video/gstvideoutils.h", ref_function = "gst_video_codec_frame_ref", type_id = "gst_video_codec_frame_get_type ()", unref_function = "gst_video_codec_frame_unref")]
                [Compact]
                [GIR (name = "VideoCodecFrame")]
@@ -30,7 +40,7 @@ namespace Gst {
                        public void set_user_data<T> (owned T user_data);
                        public void unref ();
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", ref_function = "gst_video_codec_state_ref", type_id = "gst_video_codec_state_get_type ()", unref_function = "gst_video_codec_state_unref")]
+               [CCode (cheader_filename = "gst/video/video.h", ref_function = "gst_video_codec_state_ref", type_id = "gst_video_codec_state_get_type ()", unref_function = "gst_video_codec_state_unref")]
                [Compact]
                [GIR (name = "VideoCodecState")]
                public class CodecState {
@@ -40,7 +50,7 @@ namespace Gst {
                        public Gst.Video.CodecState @ref ();
                        public void unref ();
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GstColorBalanceChannel", type_id = "gst_color_balance_channel_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GstColorBalanceChannel", lower_case_cprefix = "gst_color_balance_channel_", type_id = "gst_color_balance_channel_get_type ()")]
                [GIR (name = "ColorBalanceChannel")]
                public class ColorBalanceChannel : GLib.Object {
                        public weak string label;
@@ -50,7 +60,7 @@ namespace Gst {
                        protected ColorBalanceChannel ();
                        public virtual signal void value_changed (int value);
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", type_id = "gst_video_decoder_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", type_id = "gst_video_decoder_get_type ()")]
                [GIR (name = "VideoDecoder")]
                public abstract class Decoder : Gst.Element {
                        [CCode (has_construct_function = false)]
@@ -66,6 +76,8 @@ namespace Gst {
                        [NoWrapper]
                        public virtual Gst.FlowReturn finish ();
                        public Gst.FlowReturn finish_frame (owned Gst.Video.CodecFrame frame);
+                       [NoWrapper]
+                       public virtual bool flush ();
                        public void get_allocator (out Gst.Allocator allocator, out Gst.AllocationParams @params);
                        public Gst.BufferPool get_buffer_pool ();
                        public int get_estimate_rate ();
@@ -74,9 +86,11 @@ namespace Gst {
                        public void get_latency (out Gst.ClockTime min_latency, out Gst.ClockTime max_latency);
                        public Gst.ClockTimeDiff get_max_decode_time (Gst.Video.CodecFrame frame);
                        public int get_max_errors ();
+                       public bool get_needs_format ();
                        public Gst.Video.CodecFrame get_oldest_frame ();
                        public Gst.Video.CodecState get_output_state ();
                        public bool get_packetized ();
+                       public size_t get_pending_frame_size ();
                        public double get_qos_proportion ();
                        [NoWrapper]
                        public virtual Gst.FlowReturn handle_frame (Gst.Video.CodecFrame frame);
@@ -89,6 +103,7 @@ namespace Gst {
                        public virtual Gst.FlowReturn parse (Gst.Video.CodecFrame frame, Gst.Base.Adapter adapter, bool at_eos);
                        [NoWrapper]
                        public virtual bool propose_allocation (Gst.Query query);
+                       public void release_frame (owned Gst.Video.CodecFrame frame);
                        [NoWrapper]
                        public virtual bool reset (bool hard);
                        public void set_estimate_rate (bool enabled);
@@ -96,18 +111,23 @@ namespace Gst {
                        public virtual bool set_format (Gst.Video.CodecState state);
                        public void set_latency (Gst.ClockTime min_latency, Gst.ClockTime max_latency);
                        public void set_max_errors (int num);
+                       public void set_needs_format (bool enabled);
                        public Gst.Video.CodecState set_output_state (Gst.Video.Format fmt, uint width, uint height, Gst.Video.CodecState? reference);
                        public void set_packetized (bool packetized);
                        [NoWrapper]
                        public virtual bool sink_event (Gst.Event event);
                        [NoWrapper]
+                       public virtual bool sink_query (Gst.Query query);
+                       [NoWrapper]
                        public virtual bool src_event (Gst.Event event);
                        [NoWrapper]
+                       public virtual bool src_query (Gst.Query query);
+                       [NoWrapper]
                        public virtual bool start ();
                        [NoWrapper]
                        public virtual bool stop ();
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", type_id = "gst_video_encoder_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", type_id = "gst_video_encoder_get_type ()")]
                [GIR (name = "VideoEncoder")]
                public abstract class Encoder : Gst.Element, Gst.Preset {
                        [CCode (has_construct_function = false)]
@@ -121,8 +141,9 @@ namespace Gst {
                        [NoWrapper]
                        public virtual Gst.FlowReturn finish ();
                        public Gst.FlowReturn finish_frame (owned Gst.Video.CodecFrame frame);
+                       [NoWrapper]
+                       public virtual bool flush ();
                        public void get_allocator (out Gst.Allocator allocator, out Gst.AllocationParams @params);
-                       public bool get_discont ();
                        public Gst.Video.CodecFrame get_frame (int frame_number);
                        public GLib.List<Gst.Video.CodecFrame> get_frames ();
                        public void get_latency (out Gst.ClockTime min_latency, out Gst.ClockTime max_latency);
@@ -143,7 +164,6 @@ namespace Gst {
                        public Gst.Caps proxy_getcaps (Gst.Caps caps, Gst.Caps filter);
                        [NoWrapper]
                        public virtual bool reset (bool hard);
-                       public void set_discont ();
                        [NoWrapper]
                        public virtual bool set_format (Gst.Video.CodecState state);
                        public void set_headers (owned GLib.List<Gst.Buffer> headers);
@@ -152,13 +172,17 @@ namespace Gst {
                        [NoWrapper]
                        public virtual bool sink_event (Gst.Event event);
                        [NoWrapper]
+                       public virtual bool sink_query (Gst.Query query);
+                       [NoWrapper]
                        public virtual bool src_event (Gst.Event event);
                        [NoWrapper]
+                       public virtual bool src_query (Gst.Query query);
+                       [NoWrapper]
                        public virtual bool start ();
                        [NoWrapper]
                        public virtual bool stop ();
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", type_id = "gst_video_filter_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", type_id = "gst_video_filter_get_type ()")]
                [GIR (name = "VideoFilter")]
                public abstract class Filter : Gst.Base.Transform {
                        public Gst.Video.Info in_info;
@@ -207,7 +231,7 @@ namespace Gst {
                        public void set_global_alpha (float global_alpha);
                        public void set_render_rectangle (int render_x, int render_y, uint render_width, uint render_height);
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", type_id = "gst_video_sink_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", type_id = "gst_video_sink_get_type ()")]
                [GIR (name = "VideoSink")]
                public class Sink : Gst.Base.Sink {
                        public int height;
@@ -220,65 +244,44 @@ namespace Gst {
                        [NoAccessorMethod]
                        public bool show_preroll_frame { get; set construct; }
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GstColorBalance", type_cname = "GstColorBalanceInterface", type_id = "gst_color_balance_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GstColorBalance", lower_case_cprefix = "gst_color_balance_", type_cname = "GstColorBalanceInterface", type_id = "gst_color_balance_get_type ()")]
                [GIR (name = "ColorBalance")]
                public interface ColorBalance : GLib.Object {
                        public abstract Gst.Video.ColorBalanceType get_balance_type ();
                        public abstract int get_value (Gst.Video.ColorBalanceChannel channel);
+                       public abstract unowned GLib.List<Gst.Video.ColorBalanceChannel> list_channels ();
                        public abstract void set_value (Gst.Video.ColorBalanceChannel channel, int value);
                        [HasEmitter]
                        public virtual signal void value_changed (Gst.Video.ColorBalanceChannel channel, int value);
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GstNavigation", type_cname = "GstNavigationInterface", type_id = "gst_navigation_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GstNavigation", lower_case_cprefix = "gst_navigation_", type_cname = "GstNavigationInterface", type_id = "gst_navigation_get_type ()")]
                [GIR (name = "Navigation")]
                public interface Navigation : GLib.Object {
-                       [CCode (cname = "gst_navigation_event_get_type")]
                        public static Gst.Video.NavigationEventType event_get_type (Gst.Event event);
-                       [CCode (cname = "gst_navigation_event_parse_command")]
                        public static bool event_parse_command (Gst.Event event, Gst.Video.NavigationCommand command);
-                       [CCode (cname = "gst_navigation_event_parse_key_event")]
                        public static bool event_parse_key_event (Gst.Event event, string key);
-                       [CCode (cname = "gst_navigation_event_parse_mouse_button_event")]
                        public static bool event_parse_mouse_button_event (Gst.Event event, int button, double x, double y);
-                       [CCode (cname = "gst_navigation_event_parse_mouse_move_event")]
                        public static bool event_parse_mouse_move_event (Gst.Event event, double x, double y);
-                       [CCode (cname = "gst_navigation_message_get_type")]
                        public static Gst.Video.NavigationMessageType message_get_type (Gst.Message message);
-                       [CCode (cname = "gst_navigation_message_new_angles_changed")]
                        public static Gst.Message message_new_angles_changed (Gst.Object src, uint cur_angle, uint n_angles);
-                       [CCode (cname = "gst_navigation_message_new_commands_changed")]
                        public static Gst.Message message_new_commands_changed (Gst.Object src);
-                       [CCode (cname = "gst_navigation_message_new_mouse_over")]
                        public static Gst.Message message_new_mouse_over (Gst.Object src, bool active);
-                       [CCode (cname = "gst_navigation_message_parse_angles_changed")]
                        public static bool message_parse_angles_changed (Gst.Message message, uint cur_angle, uint n_angles);
-                       [CCode (cname = "gst_navigation_message_parse_mouse_over")]
                        public static bool message_parse_mouse_over (Gst.Message message, bool active);
-                       [CCode (cname = "gst_navigation_query_get_type")]
                        public static Gst.Video.NavigationQueryType query_get_type (Gst.Query query);
-                       [CCode (cname = "gst_navigation_query_new_angles")]
                        public static Gst.Query query_new_angles ();
-                       [CCode (cname = "gst_navigation_query_new_commands")]
                        public static Gst.Query query_new_commands ();
-                       [CCode (cname = "gst_navigation_query_parse_angles")]
                        public static bool query_parse_angles (Gst.Query query, uint cur_angle, uint n_angles);
-                       [CCode (cname = "gst_navigation_query_parse_commands_length")]
-                       public static bool query_parse_commands_length (Gst.Query query, uint n_cmds);
-                       [CCode (cname = "gst_navigation_query_parse_commands_nth")]
-                       public static bool query_parse_commands_nth (Gst.Query query, uint nth, Gst.Video.NavigationCommand cmd);
-                       [CCode (cname = "gst_navigation_query_set_angles")]
+                       public static bool query_parse_commands_length (Gst.Query query, out uint n_cmds);
+                       public static bool query_parse_commands_nth (Gst.Query query, uint nth, out Gst.Video.NavigationCommand cmd);
                        public static void query_set_angles (Gst.Query query, uint cur_angle, uint n_angles);
-                       [CCode (cname = "gst_navigation_query_set_commandsv")]
                        public static void query_set_commandsv (Gst.Query query, int n_cmds, Gst.Video.NavigationCommand cmds);
-                       [CCode (cname = "gst_navigation_send_command")]
                        public void send_command (Gst.Video.NavigationCommand command);
                        public abstract void send_event (Gst.Structure structure);
-                       [CCode (cname = "gst_navigation_send_key_event")]
                        public void send_key_event (string event, string key);
-                       [CCode (cname = "gst_navigation_send_mouse_event")]
                        public void send_mouse_event (string event, int button, double x, double y);
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", type_id = "gst_video_orientation_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", type_id = "gst_video_orientation_get_type ()")]
                [GIR (name = "VideoOrientation")]
                public interface Orientation : GLib.Object {
                        public abstract bool get_hcenter (int center);
@@ -290,7 +293,7 @@ namespace Gst {
                        public abstract bool set_vcenter (int center);
                        public abstract bool set_vflip (bool flip);
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", type_id = "gst_video_overlay_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", type_id = "gst_video_overlay_get_type ()")]
                [GIR (name = "VideoOverlay")]
                public interface Overlay : GLib.Object {
                        public abstract void expose ();
@@ -303,7 +306,7 @@ namespace Gst {
                        [CCode (cname = "gst_video_overlay_set_render_rectangle")]
                        public bool try_set_render_rectangle (int x, int y, int width, int height);
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_type_id = false)]
                [GIR (name = "VideoAlignment")]
                public struct Alignment {
                        public uint padding_top;
@@ -314,7 +317,7 @@ namespace Gst {
                        public weak uint[] stride_align;
                        public void reset ();
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_type_id = false)]
                [GIR (name = "VideoColorimetry")]
                public struct Colorimetry {
                        public Gst.Video.ColorRange range;
@@ -325,7 +328,7 @@ namespace Gst {
                        public bool matches (string color);
                        public string to_string ();
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_type_id = false)]
                [GIR (name = "VideoCropMeta")]
                public struct CropMeta {
                        public Gst.Meta meta;
@@ -334,7 +337,7 @@ namespace Gst {
                        public uint width;
                        public uint height;
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_type_id = false)]
                [GIR (name = "VideoFormatInfo")]
                public struct FormatInfo {
                        public Gst.Video.Format format;
@@ -362,10 +365,13 @@ namespace Gst {
                        public weak Gst.Video.FormatUnpack unpack_func;
                        public int pack_lines;
                        public weak Gst.Video.FormatPack pack_func;
+                       public Gst.Video.TileMode tile_mode;
+                       public uint tile_ws;
+                       public uint tile_hs;
                        [CCode (array_length = false, array_null_terminated = true)]
                        public weak void*[] _gst_reserved;
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_type_id = false)]
                [GIR (name = "VideoFrame")]
                public struct Frame {
                        public Gst.Video.Info info;
@@ -381,10 +387,20 @@ namespace Gst {
                        public bool map_id (Gst.Video.Info info, Gst.Buffer buffer, int id, Gst.MapFlags flags);
                        public void unmap ();
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_type_id = false)]
+               [GIR (name = "VideoGLTextureUploadMeta")]
+               public struct GLTextureUploadMeta {
+                       public Gst.Meta meta;
+                       public Gst.Video.GLTextureOrientation texture_orientation;
+                       public uint n_textures;
+                       [CCode (array_length = false, array_null_terminated = true)]
+                       public weak Gst.Video.GLTextureType[] texture_type;
+                       public bool upload (uint texture_id);
+               }
+               [CCode (cheader_filename = "gst/video/video.h", has_type_id = false)]
                [GIR (name = "VideoInfo")]
                public struct Info {
-                       public Gst.Video.FormatInfo? finfo;
+                       public weak Gst.Video.FormatInfo? finfo;
                        public Gst.Video.InterlaceMode interlace_mode;
                        public Gst.Video.Flags flags;
                        public int width;
@@ -409,7 +425,7 @@ namespace Gst {
                        public void set_format (Gst.Video.Format format, uint width, uint height);
                        public Gst.Caps to_caps ();
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_type_id = false)]
                [GIR (name = "VideoMeta")]
                public struct Meta {
                        public Gst.Meta meta;
@@ -427,19 +443,19 @@ namespace Gst {
                        public bool map (uint plane, Gst.MapInfo info, void* data, int stride, Gst.MapFlags flags);
                        public bool unmap (uint plane, Gst.MapInfo info);
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_type_id = false)]
                [GIR (name = "VideoMetaTransform")]
                public struct MetaTransform {
                        public Gst.Video.Info in_info;
                        public Gst.Video.Info out_info;
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_type_id = false)]
                [GIR (name = "VideoOverlayCompositionMeta")]
                public struct OverlayCompositionMeta {
                        public Gst.Meta meta;
                        public weak Gst.Video.OverlayComposition overlay;
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_type_id = false)]
                [GIR (name = "VideoRectangle")]
                public struct Rectangle {
                        public int x;
@@ -447,7 +463,19 @@ namespace Gst {
                        public int w;
                        public int h;
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_BUFFER_FLAG_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_type_id = false)]
+               [GIR (name = "VideoRegionOfInterestMeta")]
+               public struct RegionOfInterestMeta {
+                       public Gst.Meta meta;
+                       public GLib.Quark roi_type;
+                       public int id;
+                       public int parent_id;
+                       public uint x;
+                       public uint y;
+                       public uint w;
+                       public uint h;
+               }
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_BUFFER_FLAG_", has_type_id = false)]
                [Flags]
                [GIR (name = "VideoBufferFlags")]
                public enum BufferFlags {
@@ -457,7 +485,20 @@ namespace Gst {
                        ONEFIELD,
                        LAST
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_CHROMA_SITE_", type_id = "gst_video_chroma_site_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_CHROMA_FLAG_", type_id = "gst_video_chroma_flags_get_type ()")]
+               [Flags]
+               [GIR (name = "VideoChromaFlags")]
+               public enum ChromaFlags {
+                       NONE,
+                       INTERLACED
+               }
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_CHROMA_METHOD_", type_id = "gst_video_chroma_method_get_type ()")]
+               [GIR (name = "VideoChromaMethod")]
+               public enum ChromaMethod {
+                       NEAREST,
+                       LINEAR
+               }
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_CHROMA_SITE_", type_id = "gst_video_chroma_site_get_type ()")]
                [Flags]
                [GIR (name = "VideoChromaSite")]
                public enum ChromaSite {
@@ -471,7 +512,7 @@ namespace Gst {
                        MPEG2,
                        DV
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_CODEC_FRAME_FLAG_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_CODEC_FRAME_FLAG_", has_type_id = false)]
                [Flags]
                [GIR (name = "VideoCodecFrameFlags")]
                public enum CodecFrameFlags {
@@ -480,13 +521,13 @@ namespace Gst {
                        FORCE_KEYFRAME,
                        FORCE_KEYFRAME_HEADERS
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GstColorBalanceType", cprefix = "GST_COLOR_BALANCE_", type_id = "gst_color_balance_type_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GstColorBalanceType", cprefix = "GST_COLOR_BALANCE_", type_id = "gst_color_balance_type_get_type ()")]
                [GIR (name = "ColorBalanceType")]
                public enum ColorBalanceType {
                        HARDWARE,
                        SOFTWARE
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_COLOR_MATRIX_", type_id = "gst_video_color_matrix_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_COLOR_MATRIX_", type_id = "gst_video_color_matrix_get_type ()")]
                [GIR (name = "VideoColorMatrix")]
                public enum ColorMatrix {
                        UNKNOWN,
@@ -496,7 +537,7 @@ namespace Gst {
                        BT601,
                        SMPTE240M
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_COLOR_PRIMARIES_", type_id = "gst_video_color_primaries_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_COLOR_PRIMARIES_", type_id = "gst_video_color_primaries_get_type ()")]
                [GIR (name = "VideoColorPrimaries")]
                public enum ColorPrimaries {
                        UNKNOWN,
@@ -507,14 +548,14 @@ namespace Gst {
                        SMPTE240M,
                        FILM
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_COLOR_RANGE_", type_id = "gst_video_color_range_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_COLOR_RANGE_", type_id = "gst_video_color_range_get_type ()")]
                [GIR (name = "VideoColorRange")]
                public enum ColorRange {
                        UNKNOWN,
                        @0_255,
                        @16_235
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_FLAG_", type_id = "gst_video_flags_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_FLAG_", type_id = "gst_video_flags_get_type ()")]
                [Flags]
                [GIR (name = "VideoFlags")]
                public enum Flags {
@@ -522,7 +563,7 @@ namespace Gst {
                        VARIABLE_FPS,
                        PREMULTIPLIED_ALPHA
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_FORMAT_", type_id = "gst_video_format_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_FORMAT_", type_id = "gst_video_format_get_type ()")]
                [GIR (name = "VideoFormat")]
                public enum Format {
                        UNKNOWN,
@@ -578,9 +619,17 @@ namespace Gst {
                        I420_10BE,
                        I420_10LE,
                        I422_10BE,
-                       I422_10LE
-               }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_FORMAT_FLAG_", type_id = "gst_video_format_flags_get_type ()")]
+                       I422_10LE,
+                       Y444_10BE,
+                       Y444_10LE,
+                       GBR,
+                       GBR_10BE,
+                       GBR_10LE,
+                       NV16,
+                       NV24,
+                       NV12_64Z32
+               }
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_FORMAT_FLAG_", type_id = "gst_video_format_flags_get_type ()")]
                [Flags]
                [GIR (name = "VideoFormatFlags")]
                public enum FormatFlags {
@@ -591,9 +640,10 @@ namespace Gst {
                        LE,
                        PALETTE,
                        COMPLEX,
-                       UNPACK
+                       UNPACK,
+                       TILED
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_FRAME_FLAG_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_FRAME_FLAG_", has_type_id = false)]
                [Flags]
                [GIR (name = "VideoFrameFlags")]
                public enum FrameFlags {
@@ -603,7 +653,26 @@ namespace Gst {
                        RFF,
                        ONEFIELD
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_INTERLACE_MODE_", type_id = "gst_video_interlace_mode_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_GL_TEXTURE_ORIENTATION_X_", has_type_id = false)]
+               [GIR (name = "VideoGLTextureOrientation")]
+               public enum GLTextureOrientation {
+                       NORMAL_Y_NORMAL,
+                       NORMAL_Y_FLIP,
+                       FLIP_Y_NORMAL,
+                       FLIP_Y_FLIP
+               }
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_GL_TEXTURE_TYPE_", has_type_id = false)]
+               [GIR (name = "VideoGLTextureType")]
+               public enum GLTextureType {
+                       LUMINANCE,
+                       LUMINANCE_ALPHA,
+                       RGB16,
+                       RGB,
+                       RGBA,
+                       R,
+                       RG
+               }
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_INTERLACE_MODE_", type_id = "gst_video_interlace_mode_get_type ()")]
                [GIR (name = "VideoInterlaceMode")]
                public enum InterlaceMode {
                        PROGRESSIVE,
@@ -611,7 +680,7 @@ namespace Gst {
                        MIXED,
                        FIELDS
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GstNavigationCommand", cprefix = "GST_NAVIGATION_COMMAND_", type_id = "gst_navigation_command_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GstNavigationCommand", cprefix = "GST_NAVIGATION_COMMAND_", type_id = "gst_navigation_command_get_type ()")]
                [GIR (name = "NavigationCommand")]
                public enum NavigationCommand {
                        INVALID,
@@ -630,7 +699,7 @@ namespace Gst {
                        PREV_ANGLE,
                        NEXT_ANGLE
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GstNavigationEventType", cprefix = "GST_NAVIGATION_EVENT_", type_id = "gst_navigation_event_type_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GstNavigationEventType", cprefix = "GST_NAVIGATION_EVENT_", type_id = "gst_navigation_event_type_get_type ()")]
                [GIR (name = "NavigationEventType")]
                public enum NavigationEventType {
                        INVALID,
@@ -641,7 +710,7 @@ namespace Gst {
                        MOUSE_MOVE,
                        COMMAND
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GstNavigationMessageType", cprefix = "GST_NAVIGATION_MESSAGE_", type_id = "gst_navigation_message_type_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GstNavigationMessageType", cprefix = "GST_NAVIGATION_MESSAGE_", type_id = "gst_navigation_message_type_get_type ()")]
                [GIR (name = "NavigationMessageType")]
                public enum NavigationMessageType {
                        INVALID,
@@ -649,27 +718,40 @@ namespace Gst {
                        COMMANDS_CHANGED,
                        ANGLES_CHANGED
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GstNavigationQueryType", cprefix = "GST_NAVIGATION_QUERY_", type_id = "gst_navigation_query_type_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GstNavigationQueryType", cprefix = "GST_NAVIGATION_QUERY_", type_id = "gst_navigation_query_type_get_type ()")]
                [GIR (name = "NavigationQueryType")]
                public enum NavigationQueryType {
                        INVALID,
                        COMMANDS,
                        ANGLES
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_OVERLAY_FORMAT_FLAG_", has_type_id = false)]
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_OVERLAY_FORMAT_FLAG_", has_type_id = false)]
                [GIR (name = "VideoOverlayFormatFlags")]
                public enum OverlayFormatFlags {
                        NONE,
                        PREMULTIPLIED_ALPHA,
                        GLOBAL_ALPHA
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_PACK_FLAG_", type_id = "gst_video_pack_flags_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_PACK_FLAG_", type_id = "gst_video_pack_flags_get_type ()")]
+               [Flags]
                [GIR (name = "VideoPackFlags")]
                public enum PackFlags {
                        NONE,
-                       TRUNCATE_RANGE
+                       TRUNCATE_RANGE,
+                       INTERLACED
+               }
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_TILE_MODE_", type_id = "gst_video_tile_mode_get_type ()")]
+               [GIR (name = "VideoTileMode")]
+               public enum TileMode {
+                       UNKNOWN,
+                       ZFLIPZ_2X2
+               }
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_TILE_TYPE_", type_id = "gst_video_tile_type_get_type ()")]
+               [GIR (name = "VideoTileType")]
+               public enum TileType {
+                       INDEXED
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cprefix = "GST_VIDEO_TRANSFER_", type_id = "gst_video_transfer_function_get_type ()")]
+               [CCode (cheader_filename = "gst/video/video.h", cprefix = "GST_VIDEO_TRANSFER_", type_id = "gst_video_transfer_function_get_type ()")]
                [GIR (name = "VideoTransferFunction")]
                public enum TransferFunction {
                        UNKNOWN,
@@ -684,159 +766,199 @@ namespace Gst {
                        LOG100,
                        LOG316
                }
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", instance_pos = 2.9)]
+               [CCode (cheader_filename = "gst/video/video.h", instance_pos = 2.9)]
                public delegate void ConvertSampleCallback (Gst.Sample sample, GLib.Error error);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", has_target = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_target = false)]
                public delegate void FormatPack (Gst.Video.FormatInfo info, Gst.Video.PackFlags flags, void* src, int sstride, void* data, int stride, Gst.Video.ChromaSite chroma_site, int y, int width);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", has_target = false)]
+               [CCode (cheader_filename = "gst/video/video.h", has_target = false)]
                public delegate void FormatUnpack (Gst.Video.FormatInfo info, Gst.Video.PackFlags flags, void* dest, void* data, int stride, int x, int y, int width);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT")]
+               [CCode (cheader_filename = "gst/video/video.h", has_target = false)]
+               public delegate bool GLTextureUpload (Gst.Video.GLTextureUploadMeta meta, uint texture_id);
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT")]
                public const string BUFFER_POOL_OPTION_VIDEO_ALIGNMENT;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_BUFFER_POOL_OPTION_VIDEO_META")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META")]
+               public const string BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META;
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_BUFFER_POOL_OPTION_VIDEO_META")]
                public const string BUFFER_POOL_OPTION_VIDEO_META;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_COLORIMETRY_BT601")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META")]
+               public const string CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META;
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_CAPS_FEATURE_META_GST_VIDEO_META")]
+               public const string CAPS_FEATURE_META_GST_VIDEO_META;
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION")]
+               public const string CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION;
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_COLORIMETRY_BT601")]
                public const string COLORIMETRY_BT601;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_COLORIMETRY_BT709")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_COLORIMETRY_BT709")]
                public const string COLORIMETRY_BT709;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_COLORIMETRY_SMPTE240M")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_COLORIMETRY_SMPTE240M")]
                public const string COLORIMETRY_SMPTE240M;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_COMP_A")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_COMP_A")]
                public const int COMP_A;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_COMP_B")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_COMP_B")]
                public const int COMP_B;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_COMP_G")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_COMP_G")]
                public const int COMP_G;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_COMP_INDEX")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_COMP_INDEX")]
                public const int COMP_INDEX;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_COMP_PALETTE")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_COMP_PALETTE")]
                public const int COMP_PALETTE;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_COMP_R")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_COMP_R")]
                public const int COMP_R;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_COMP_U")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_COMP_U")]
                public const int COMP_U;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_COMP_V")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_COMP_V")]
                public const int COMP_V;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_COMP_Y")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_COMP_Y")]
                public const int COMP_Y;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_DECODER_MAX_ERRORS")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_DECODER_MAX_ERRORS")]
                public const int DECODER_MAX_ERRORS;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_DECODER_SINK_NAME")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_DECODER_SINK_NAME")]
                public const string DECODER_SINK_NAME;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_DECODER_SRC_NAME")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_DECODER_SRC_NAME")]
                public const string DECODER_SRC_NAME;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_ENCODER_SINK_NAME")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_ENCODER_SINK_NAME")]
                public const string ENCODER_SINK_NAME;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_ENCODER_SRC_NAME")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_ENCODER_SRC_NAME")]
                public const string ENCODER_SRC_NAME;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_FORMATS_ALL")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_FORMATS_ALL")]
                public const string FORMATS_ALL;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_FPS_RANGE")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_FPS_RANGE")]
                public const string FPS_RANGE;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_MAX_COMPONENTS")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_MAX_COMPONENTS")]
                public const int MAX_COMPONENTS;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_MAX_PLANES")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_MAX_PLANES")]
                public const int MAX_PLANES;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "GST_VIDEO_SIZE_RANGE")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_META_TAG_VIDEO_COLORSPACE_STR")]
+               public const string META_TAG_VIDEO_COLORSPACE_STR;
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_META_TAG_VIDEO_ORIENTATION_STR")]
+               public const string META_TAG_VIDEO_ORIENTATION_STR;
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_META_TAG_VIDEO_SIZE_STR")]
+               public const string META_TAG_VIDEO_SIZE_STR;
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_META_TAG_VIDEO_STR")]
+               public const string META_TAG_VIDEO_STR;
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_OVERLAY_COMPOSITION_BLEND_FORMATS")]
+               public const string OVERLAY_COMPOSITION_BLEND_FORMATS;
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_SIZE_RANGE")]
                public const string SIZE_RANGE;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_TILE_TYPE_MASK")]
+               public const int TILE_TYPE_MASK;
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_TILE_TYPE_SHIFT")]
+               public const int TILE_TYPE_SHIFT;
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_TILE_X_TILES_MASK")]
+               public const int TILE_X_TILES_MASK;
+               [CCode (cheader_filename = "gst/video/video.h", cname = "GST_VIDEO_TILE_Y_TILES_SHIFT")]
+               public const int TILE_Y_TILES_SHIFT;
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static bool blend (Gst.Video.Frame dest, Gst.Video.Frame src, int x, int y, float global_alpha);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static void blend_scale_linear_RGBA (Gst.Video.Info src, Gst.Buffer src_buffer, int dest_height, int dest_width, Gst.Video.Info dest, Gst.Buffer dest_buffer);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_buffer_pool_config_get_video_alignment")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_buffer_pool_config_get_video_alignment")]
                public static bool buffer_pool_config_get_video_alignment (Gst.Structure config, Gst.Video.Alignment align);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_buffer_pool_config_set_video_alignment")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_buffer_pool_config_set_video_alignment")]
                public static void buffer_pool_config_set_video_alignment (Gst.Structure config, Gst.Video.Alignment align);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static bool calculate_display_ratio (uint dar_n, uint dar_d, uint video_width, uint video_height, uint video_par_n, uint video_par_d, uint display_par_n, uint display_par_d);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static Gst.Video.ChromaSite chroma_from_string (string s);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static unowned string chroma_to_string (Gst.Video.ChromaSite site);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
-               public static void color_range_offsets (Gst.Video.ColorRange range, Gst.Video.FormatInfo info, int offset, out int scale);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
+               public static void color_range_offsets (Gst.Video.ColorRange range, Gst.Video.FormatInfo info, out int offset, out int scale);
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static Gst.Sample convert_sample (Gst.Sample sample, Gst.Caps to_caps, Gst.ClockTime timeout) throws GLib.Error;
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static void convert_sample_async (Gst.Sample sample, Gst.Caps to_caps, Gst.ClockTime timeout, owned Gst.Video.ConvertSampleCallback callback);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static GLib.Type crop_meta_api_get_type ();
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static unowned Gst.MetaInfo? crop_meta_get_info ();
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static bool event_is_force_key_unit (Gst.Event event);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static Gst.Event event_new_downstream_force_key_unit (Gst.ClockTime timestamp, Gst.ClockTime stream_time, Gst.ClockTime running_time, bool all_headers, uint count);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static Gst.Event event_new_still_frame (bool in_still);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static Gst.Event event_new_upstream_force_key_unit (Gst.ClockTime running_time, bool all_headers, uint count);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static bool event_parse_downstream_force_key_unit (Gst.Event event, out Gst.ClockTime timestamp, out Gst.ClockTime stream_time, out Gst.ClockTime running_time, out bool all_headers, out uint count);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static bool event_parse_still_frame (Gst.Event event, bool in_still);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static bool event_parse_upstream_force_key_unit (Gst.Event event, out Gst.ClockTime running_time, out bool all_headers, out uint count);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static Gst.Video.Format format_from_fourcc (uint32 fourcc);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
-               public static Gst.Video.Format format_from_masks (int depth, int bpp, int endianness, int red_mask, int green_mask, int blue_mask, int alpha_mask);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
+               public static Gst.Video.Format format_from_masks (int depth, int bpp, int endianness, uint red_mask, uint green_mask, uint blue_mask, uint alpha_mask);
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static Gst.Video.Format format_from_string (string format);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static unowned Gst.Video.FormatInfo? format_get_info (Gst.Video.Format format);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
+               public static void* format_get_palette (Gst.Video.Format format, out size_t size);
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static uint32 format_to_fourcc (Gst.Video.Format format);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static unowned string format_to_string (Gst.Video.Format format);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_is_video_overlay_prepare_window_handle_message")]
+               [CCode (cheader_filename = "gst/video/video.h")]
+               public static GLib.Type gl_texture_upload_meta_api_get_type ();
+               [CCode (cheader_filename = "gst/video/video.h")]
+               public static unowned Gst.MetaInfo? gl_texture_upload_meta_get_info ();
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_is_video_overlay_prepare_window_handle_message")]
                public static bool is_video_overlay_prepare_window_handle_message (Gst.Message msg);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static GLib.Type meta_api_get_type ();
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static unowned Gst.MetaInfo? meta_get_info ();
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static GLib.Quark meta_transform_scale_get_quark ();
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_event_get_type")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_event_get_type")]
                public static Gst.Video.NavigationEventType navigation_event_get_type (Gst.Event event);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_event_parse_command")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_event_parse_command")]
                public static bool navigation_event_parse_command (Gst.Event event, Gst.Video.NavigationCommand command);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_event_parse_key_event")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_event_parse_key_event")]
                public static bool navigation_event_parse_key_event (Gst.Event event, string key);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_event_parse_mouse_button_event")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_event_parse_mouse_button_event")]
                public static bool navigation_event_parse_mouse_button_event (Gst.Event event, int button, double x, double y);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_event_parse_mouse_move_event")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_event_parse_mouse_move_event")]
                public static bool navigation_event_parse_mouse_move_event (Gst.Event event, double x, double y);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_message_get_type")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_message_get_type")]
                public static Gst.Video.NavigationMessageType navigation_message_get_type (Gst.Message message);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_message_new_angles_changed")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_message_new_angles_changed")]
                public static Gst.Message navigation_message_new_angles_changed (Gst.Object src, uint cur_angle, uint n_angles);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_message_new_commands_changed")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_message_new_commands_changed")]
                public static Gst.Message navigation_message_new_commands_changed (Gst.Object src);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_message_new_mouse_over")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_message_new_mouse_over")]
                public static Gst.Message navigation_message_new_mouse_over (Gst.Object src, bool active);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_message_parse_angles_changed")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_message_parse_angles_changed")]
                public static bool navigation_message_parse_angles_changed (Gst.Message message, uint cur_angle, uint n_angles);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_message_parse_mouse_over")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_message_parse_mouse_over")]
                public static bool navigation_message_parse_mouse_over (Gst.Message message, bool active);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_query_get_type")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_query_get_type")]
                public static Gst.Video.NavigationQueryType navigation_query_get_type (Gst.Query query);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_query_new_angles")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_query_new_angles")]
                public static Gst.Query navigation_query_new_angles ();
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_query_new_commands")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_query_new_commands")]
                public static Gst.Query navigation_query_new_commands ();
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_query_parse_angles")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_query_parse_angles")]
                public static bool navigation_query_parse_angles (Gst.Query query, uint cur_angle, uint n_angles);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_query_parse_commands_length")]
-               public static bool navigation_query_parse_commands_length (Gst.Query query, uint n_cmds);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_query_parse_commands_nth")]
-               public static bool navigation_query_parse_commands_nth (Gst.Query query, uint nth, Gst.Video.NavigationCommand cmd);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_query_set_angles")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_query_parse_commands_length")]
+               public static bool navigation_query_parse_commands_length (Gst.Query query, out uint n_cmds);
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_query_parse_commands_nth")]
+               public static bool navigation_query_parse_commands_nth (Gst.Query query, uint nth, out Gst.Video.NavigationCommand cmd);
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_query_set_angles")]
                public static void navigation_query_set_angles (Gst.Query query, uint cur_angle, uint n_angles);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h", cname = "gst_navigation_query_set_commandsv")]
+               [CCode (cheader_filename = "gst/video/video.h", cname = "gst_navigation_query_set_commandsv")]
                public static void navigation_query_set_commandsv (Gst.Query query, int n_cmds, Gst.Video.NavigationCommand cmds);
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static GLib.Type overlay_composition_meta_api_get_type ();
-               [CCode (cheader_filename = "gst/video/colorbalance.h,gst/video/colorbalancechannel.h,gst/video/gstvideodecoder.h,gst/video/gstvideoencoder.h,gst/video/gstvideofilter.h,gst/video/gstvideometa.h,gst/video/gstvideopool.h,gst/video/gstvideosink.h,gst/video/gstvideoutils.h,gst/video/navigation.h,gst/video/video-blend.h,gst/video/video-color.h,gst/video/video-enumtypes.h,gst/video/video-event.h,gst/video/video-format.h,gst/video/video-frame.h,gst/video/video-info.h,gst/video/video-overlay-composition.h,gst/video/video.h,gst/video/videoorientation.h,gst/video/videooverlay.h")]
+               [CCode (cheader_filename = "gst/video/video.h")]
                public static unowned Gst.MetaInfo? overlay_composition_meta_get_info ();
+               [CCode (cheader_filename = "gst/video/video.h")]
+               public static GLib.Type region_of_interest_meta_api_get_type ();
+               [CCode (cheader_filename = "gst/video/video.h")]
+               public static unowned Gst.MetaInfo? region_of_interest_meta_get_info ();
+               [CCode (cheader_filename = "gst/video/video.h")]
+               public static uint tile_get_index (Gst.Video.TileMode mode, int x, int y, int x_tiles, int y_tiles);
        }
 }
index 3862879..005db62 100644 (file)
@@ -1,6 +1,6 @@
 /* gtk+-2.0.vapi generated by vapigen, do not modify. */
 
-[CCode (gir_namespace = "Gtk", gir_version = "2.0")]
+[CCode (cprefix = "Gtk", gir_namespace = "Gtk", gir_version = "2.0", lower_case_cprefix = "gtk_")]
 [Deprecated (replacement = "gtk+-3.0")]
 namespace Gtk {
        namespace Idle {
@@ -240,6 +240,8 @@ namespace Gtk {
                public static GLib.SList<string> list_ids ();
                [CCode (cheader_filename = "gtk/gtk.h")]
                public static bool lookup (string stock_id, out Gtk.StockItem item);
+               [CCode (cheader_filename = "gtk/gtk.h")]
+               public static void set_translate_func (string domain, owned Gtk.TranslateFunc func);
        }
        namespace Timeout {
                [CCode (cheader_filename = "gtk/gtk.h")]
@@ -253,11 +255,14 @@ namespace Gtk {
        public class AboutDialog : Gtk.Dialog, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public AboutDialog ();
-               public unowned string get_artists ();
-               public unowned string get_authors ();
+               [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_artists ();
+               [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_authors ();
                public unowned string get_comments ();
                public unowned string get_copyright ();
-               public unowned string get_documenters ();
+               [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_documenters ();
                public unowned string get_license ();
                public unowned Gdk.Pixbuf get_logo ();
                public unowned string get_logo_icon_name ();
@@ -267,11 +272,11 @@ namespace Gtk {
                public unowned string get_website ();
                public unowned string get_website_label ();
                public bool get_wrap_license ();
-               public void set_artists ([CCode (array_length = false)] string[] artists);
-               public void set_authors ([CCode (array_length = false)] string[] authors);
+               public void set_artists ([CCode (array_length = false, array_null_terminated = true)] string[] artists);
+               public void set_authors ([CCode (array_length = false, array_null_terminated = true)] string[] authors);
                public void set_comments (string comments);
                public void set_copyright (string copyright);
-               public void set_documenters ([CCode (array_length = false)] string[] documenters);
+               public void set_documenters ([CCode (array_length = false, array_null_terminated = true)] string[] documenters);
                public static void set_email_hook (owned Gtk.AboutDialogActivateLinkFunc func);
                public void set_license (string license);
                public void set_logo (Gdk.Pixbuf logo);
@@ -319,7 +324,7 @@ namespace Gtk {
                public bool get_is_locked ();
                public Gdk.ModifierType get_modifier_mask ();
                public void @lock ();
-               public unowned Gtk.AccelGroupEntry query (uint accel_key, Gdk.ModifierType accel_mods, uint n_entries);
+               public unowned Gtk.AccelGroupEntry[] query (uint accel_key, Gdk.ModifierType accel_mods);
                public void unlock ();
                public bool is_locked { get; }
                public Gdk.ModifierType modifier_mask { get; }
@@ -327,13 +332,6 @@ namespace Gtk {
                public virtual signal void accel_changed (uint keyval, Gdk.ModifierType modifier, GLib.Closure accel_closure);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class AccelGroupEntry {
-               public GLib.Quark accel_path_quark;
-               public weak GLib.Closure closure;
-               public Gtk.AccelKey key;
-       }
-       [CCode (cheader_filename = "gtk/gtk.h")]
        public class AccelLabel : Gtk.Label, Atk.Implementor, Gtk.Buildable {
                public weak Gtk.AccelGroup accel_group;
                public uint accel_padding;
@@ -625,7 +623,7 @@ namespace Gtk {
                public Gdk.ModifierType modifiers;
                public weak Gtk.BindingEntry set_next;
                public weak Gtk.BindingSignal signals;
-               public static void add_signal (Gtk.BindingSet binding_set, uint keyval, Gdk.ModifierType modifiers, string signal_name, uint n_args);
+               public static void add_signal (Gtk.BindingSet binding_set, uint keyval, Gdk.ModifierType modifiers, string signal_name, uint n_args, ...);
                public static void add_signall (Gtk.BindingSet binding_set, uint keyval, Gdk.ModifierType modifiers, string signal_name, GLib.SList<Gtk.BindingArg> binding_args);
                public static void remove (Gtk.BindingSet binding_set, uint keyval, Gdk.ModifierType modifiers);
                public static void skip (Gtk.BindingSet binding_set, uint keyval, Gdk.ModifierType modifiers);
@@ -638,12 +636,11 @@ namespace Gtk {
                public uint parsed;
                public int priority;
                public weak string set_name;
-               [CCode (has_construct_function = false)]
-               public BindingSet (string set_name);
                public bool activate (uint keyval, Gdk.ModifierType modifiers, Gtk.Object object);
                public void add_path (Gtk.PathType path_type, string path_pattern, Gtk.PathPriorityType priority);
-               public static unowned Gtk.BindingSet by_class (void* object_class);
+               public static unowned Gtk.BindingSet by_class (GLib.ObjectClass object_class);
                public static unowned Gtk.BindingSet find (string set_name);
+               public static unowned Gtk.BindingSet @new (string name);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
        [Compact]
@@ -697,8 +694,8 @@ namespace Gtk {
                public Builder ();
                public uint add_from_file (string filename) throws GLib.Error;
                public uint add_from_string (string buffer, size_t length) throws GLib.Error;
-               public uint add_objects_from_file (string filename, [CCode (array_length = false)] string[] object_ids) throws GLib.Error;
-               public uint add_objects_from_string (string buffer, size_t length, [CCode (array_length = false)] string[] object_ids) throws GLib.Error;
+               public uint add_objects_from_file (string filename, [CCode (array_length = false, array_null_terminated = true)] string[] object_ids) throws GLib.Error;
+               public uint add_objects_from_string (string buffer, size_t length, [CCode (array_length = false, array_null_terminated = true)] string[] object_ids) throws GLib.Error;
                public void connect_signals (void* user_data);
                public void connect_signals_full (Gtk.BuilderConnectFunc func);
                public static GLib.Quark error_quark ();
@@ -707,8 +704,8 @@ namespace Gtk {
                public unowned string get_translation_domain ();
                public virtual GLib.Type get_type_from_name (string type_name);
                public void set_translation_domain (string domain);
-               public bool value_from_string (GLib.ParamSpec pspec, string str, GLib.Value value) throws GLib.Error;
-               public bool value_from_string_type (GLib.Type type, string str, GLib.Value value) throws GLib.Error;
+               public bool value_from_string (GLib.ParamSpec pspec, string str, out GLib.Value value) throws GLib.Error;
+               public bool value_from_string_type (GLib.Type type, string str, out GLib.Value value) throws GLib.Error;
                public string translation_domain { get; set; }
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -1113,7 +1110,7 @@ namespace Gtk {
        public class CellView : Gtk.Widget, Atk.Implementor, Gtk.Buildable, Gtk.CellLayout {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public CellView ();
-               public unowned Gtk.TreePath get_displayed_row ();
+               public Gtk.TreePath get_displayed_row ();
                public unowned Gtk.TreeModel get_model ();
                public bool get_size_of_row (Gtk.TreePath path, out Gtk.Requisition requisition);
                public void set_background_color (Gdk.Color color);
@@ -1234,8 +1231,8 @@ namespace Gtk {
                public uint16 get_previous_alpha ();
                public void get_previous_color (out Gdk.Color color);
                public bool is_adjusting ();
-               public static bool palette_from_string (string str, Gdk.Color[] colors);
-               public static unowned string palette_to_string (Gdk.Color[] colors);
+               public static bool palette_from_string (string str, out Gdk.Color[] colors);
+               public static string palette_to_string (Gdk.Color[] colors);
                public static unowned Gtk.ColorSelectionChangePaletteWithScreenFunc set_change_palette_with_screen_hook (Gtk.ColorSelectionChangePaletteWithScreenFunc func);
                public void set_current_alpha (uint16 alpha);
                public void set_current_color (Gdk.Color color);
@@ -1364,10 +1361,10 @@ namespace Gtk {
                public void add_with_properties (Gtk.Widget widget, ...);
                public void child_get (Gtk.Widget child, ...);
                public void child_get_property (Gtk.Widget child, string property_name, GLib.Value value);
-               public void child_get_valist (Gtk.Widget child, string first_property_name, void* var_args);
+               public void child_get_valist (Gtk.Widget child, string first_property_name, va_list var_args);
                public void child_set (Gtk.Widget child, ...);
                public void child_set_property (Gtk.Widget child, string property_name, GLib.Value value);
-               public void child_set_valist (Gtk.Widget child, string first_property_name, void* var_args);
+               public void child_set_valist (Gtk.Widget child, string first_property_name, va_list var_args);
                public virtual GLib.Type child_type ();
                public static unowned GLib.ParamSpec class_find_child_property (GLib.ObjectClass cclass, string property_name);
                public static unowned GLib.ParamSpec class_list_child_properties (GLib.ObjectClass cclass, uint n_properties);
@@ -1381,7 +1378,7 @@ namespace Gtk {
                [NoWrapper]
                public virtual void get_child_property (Gtk.Widget child, uint property_id, GLib.Value value, GLib.ParamSpec pspec);
                public GLib.List<weak Gtk.Widget> get_children ();
-               public bool get_focus_chain (out GLib.List<Gtk.Widget> focusable_widgets);
+               public bool get_focus_chain (out GLib.List<weak Gtk.Widget> focusable_widgets);
                public unowned Gtk.Widget get_focus_child ();
                public unowned Gtk.Adjustment get_focus_hadjustment ();
                public unowned Gtk.Adjustment get_focus_vadjustment ();
@@ -1462,7 +1459,7 @@ namespace Gtk {
                public int run ();
                [CCode (sentinel = "-1")]
                public void set_alternative_button_order (...);
-               public void set_alternative_button_order_from_array (int n_params, int new_order);
+               public void set_alternative_button_order_from_array ([CCode (array_length_pos = 0.5)] int[] new_order);
                public void set_default_response (int response_id);
                public void set_has_separator (bool setting);
                public void set_response_sensitive (int response_id, bool setting);
@@ -1528,8 +1525,8 @@ namespace Gtk {
                public bool get_icon_sensitive (Gtk.EntryIconPosition icon_pos);
                public unowned string get_icon_stock (Gtk.EntryIconPosition icon_pos);
                public Gtk.ImageType get_icon_storage_type (Gtk.EntryIconPosition icon_pos);
-               public unowned string get_icon_tooltip_markup (Gtk.EntryIconPosition icon_pos);
-               public unowned string get_icon_tooltip_text (Gtk.EntryIconPosition icon_pos);
+               public string? get_icon_tooltip_markup (Gtk.EntryIconPosition icon_pos);
+               public string? get_icon_tooltip_text (Gtk.EntryIconPosition icon_pos);
                public unowned Gdk.Window get_icon_window (Gtk.EntryIconPosition icon_pos);
                public unowned Gtk.Border get_inner_border ();
                public unichar get_invisible_char ();
@@ -1917,7 +1914,7 @@ namespace Gtk {
                [NoWrapper]
                public virtual void compute_child_allocation (Gtk.Allocation allocation);
                public unowned string get_label ();
-               public void get_label_align (float xalign, float yalign);
+               public void get_label_align (out float xalign, out float yalign);
                public unowned Gtk.Widget get_label_widget ();
                public Gtk.ShadowType get_shadow_type ();
                public void set_label (string label);
@@ -2033,8 +2030,8 @@ namespace Gtk {
                public virtual bool filter_keypress (Gdk.EventKey event);
                public virtual void focus_in ();
                public virtual void focus_out ();
-               public virtual void get_preedit_string (out unowned string str, out Pango.AttrList attrs, out int cursor_pos);
-               public virtual bool get_surrounding (out unowned string text, out int cursor_index);
+               public virtual void get_preedit_string (out string str, out Pango.AttrList attrs, out int cursor_pos);
+               public virtual bool get_surrounding (out string text, out int cursor_index);
                public virtual void reset ();
                public virtual void set_client_window (Gdk.Window window);
                public virtual void set_cursor_location (Gdk.Rectangle area);
@@ -2059,7 +2056,7 @@ namespace Gtk {
                public int tentative_match_len;
                [CCode (has_construct_function = false, type = "GtkIMContext*")]
                public IMContextSimple ();
-               public void add_table (uint16 data, int max_seq_len, int n_seqs);
+               public void add_table ([CCode (array_length = false)] uint16[] data, int max_seq_len, int n_seqs);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
        public class IMMulticontext : Gtk.IMContext {
@@ -2088,7 +2085,7 @@ namespace Gtk {
                public Gtk.IconInfo copy ();
                [CCode (has_construct_function = false)]
                public IconInfo.for_pixbuf (Gtk.IconTheme icon_theme, Gdk.Pixbuf pixbuf);
-               public bool get_attach_points (Gdk.Point[] points);
+               public bool get_attach_points (out Gdk.Point[] points);
                public int get_base_size ();
                public unowned Gdk.Pixbuf get_builtin_pixbuf ();
                public unowned string get_display_name ();
@@ -2143,7 +2140,7 @@ namespace Gtk {
                public Gtk.IconInfo choose_icon ([CCode (array_length = false, array_null_terminated = true)] string[] icon_names, int size, Gtk.IconLookupFlags flags);
                public static GLib.Quark error_quark ();
                public static unowned Gtk.IconTheme get_default ();
-               public unowned string get_example_icon_name ();
+               public string? get_example_icon_name ();
                public static unowned Gtk.IconTheme get_for_screen (Gdk.Screen screen);
                [CCode (array_length = false, array_null_terminated = true)]
                public int[] get_icon_sizes (string icon_name);
@@ -2158,7 +2155,7 @@ namespace Gtk {
                public bool rescan_if_needed ();
                public void set_custom_theme (string theme_name);
                public void set_screen (Gdk.Screen screen);
-               public void set_search_path (string[] path, int n_elements);
+               public void set_search_path (string[] path);
                public virtual signal void changed ();
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -2166,7 +2163,7 @@ namespace Gtk {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public IconView ();
                public void convert_widget_to_bin_window_coords (int wx, int wy, int bx, int by);
-               public unowned Gdk.Pixmap create_drag_icon (Gtk.TreePath path);
+               public Gdk.Pixmap create_drag_icon (Gtk.TreePath path);
                public void enable_model_drag_dest (Gtk.TargetEntry[] targets, Gdk.DragAction actions);
                public void enable_model_drag_source (Gdk.ModifierType start_button_mask, Gtk.TargetEntry[] targets, Gdk.DragAction actions);
                public int get_column_spacing ();
@@ -2184,7 +2181,7 @@ namespace Gtk {
                public int get_markup_column ();
                public unowned Gtk.TreeModel get_model ();
                public Gtk.Orientation get_orientation ();
-               public unowned Gtk.TreePath get_path_at_pos (int x, int y);
+               public Gtk.TreePath get_path_at_pos (int x, int y);
                public int get_pixbuf_column ();
                public bool get_reorderable ();
                public int get_row_spacing ();
@@ -2604,7 +2601,7 @@ namespace Gtk {
                public void insert_before (out Gtk.TreeIter iter, Gtk.TreeIter? sibling);
                [CCode (sentinel = "-1")]
                public void insert_with_values (out Gtk.TreeIter iter, int position, ...);
-               public void insert_with_valuesv (out Gtk.TreeIter iter, int position, int columns, GLib.Value[] values);
+               public void insert_with_valuesv (out Gtk.TreeIter iter, int position, [CCode (array_length_pos = 4.1)] int[] columns, [CCode (array_length_pos = 4.1)] GLib.Value[] values);
                public bool iter_is_valid (Gtk.TreeIter iter);
                public void move_after (ref Gtk.TreeIter iter, Gtk.TreeIter? position);
                public void move_before (ref Gtk.TreeIter iter, Gtk.TreeIter? position);
@@ -2612,13 +2609,13 @@ namespace Gtk {
                public ListStore.newv ([CCode (array_length_pos = 0.9)] GLib.Type[] types);
                public void prepend (out Gtk.TreeIter iter);
                public bool remove (Gtk.TreeIter iter);
-               public void reorder (int new_order);
+               public void reorder ([CCode (array_length = false, array_null_terminated = true)] int[] new_order);
                [CCode (sentinel = "-1")]
                public void @set (Gtk.TreeIter iter, ...);
                public void set_column_types ([CCode (array_length_pos = 0.9)] GLib.Type[] types);
-               public void set_valist (Gtk.TreeIter iter, void* var_args);
+               public void set_valist (Gtk.TreeIter iter, va_list var_args);
                public void set_value (Gtk.TreeIter iter, int column, GLib.Value value);
-               public void set_valuesv (Gtk.TreeIter iter, int columns, GLib.Value[] values);
+               public void set_valuesv (Gtk.TreeIter iter, [CCode (array_length_pos = 3.1)] int[] columns, [CCode (array_length_pos = 3.1)] GLib.Value[] values);
                public void swap (Gtk.TreeIter a, Gtk.TreeIter b);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -2977,16 +2974,10 @@ namespace Gtk {
        public class OffscreenWindow : Gtk.Window, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public OffscreenWindow ();
-               public unowned Gdk.Pixbuf get_pixbuf ();
+               public Gdk.Pixbuf get_pixbuf ();
                public unowned Gdk.Pixmap get_pixmap ();
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class PageRange {
-               public int end;
-               public int start;
-       }
-       [CCode (cheader_filename = "gtk/gtk.h")]
        public class PageSetup : GLib.Object {
                [CCode (has_construct_function = false)]
                public PageSetup ();
@@ -3114,12 +3105,12 @@ namespace Gtk {
        public class PrintContext : GLib.Object {
                [CCode (has_construct_function = false)]
                protected PrintContext ();
-               public unowned Pango.Context create_pango_context ();
-               public unowned Pango.Layout create_pango_layout ();
+               public Pango.Context create_pango_context ();
+               public Pango.Layout create_pango_layout ();
                public unowned Cairo.Context get_cairo_context ();
                public double get_dpi_x ();
                public double get_dpi_y ();
-               public bool get_hard_margins (double top, double bottom, double left, double right);
+               public bool get_hard_margins (out double top, out double bottom, out double left, out double right);
                public double get_height ();
                public unowned Gtk.PageSetup get_page_setup ();
                public unowned Pango.FontMap get_pango_fontmap ();
@@ -3227,10 +3218,10 @@ namespace Gtk {
                public Gtk.NumberUpLayout get_number_up_layout ();
                public Gtk.PageOrientation get_orientation ();
                public unowned string get_output_bin ();
-               public unowned Gtk.PageRange get_page_ranges (int num_ranges);
+               public Gtk.PageRange[] get_page_ranges ();
                public Gtk.PageSet get_page_set ();
                public double get_paper_height (Gtk.Unit unit);
-               public unowned Gtk.PaperSize get_paper_size ();
+               public Gtk.PaperSize get_paper_size ();
                public double get_paper_width (Gtk.Unit unit);
                public Gtk.PrintPages get_print_pages ();
                public unowned string get_printer ();
@@ -3261,7 +3252,7 @@ namespace Gtk {
                public void set_number_up_layout (Gtk.NumberUpLayout number_up_layout);
                public void set_orientation (Gtk.PageOrientation orientation);
                public void set_output_bin (string output_bin);
-               public void set_page_ranges (Gtk.PageRange page_ranges, int num_ranges);
+               public void set_page_ranges ([CCode (array_length_pos = 1.1)] Gtk.PageRange[] page_ranges);
                public void set_page_set (Gtk.PageSet page_set);
                public void set_paper_height (double height, Gtk.Unit unit);
                public void set_paper_size (Gtk.PaperSize paper_size);
@@ -3538,14 +3529,6 @@ namespace Gtk {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public RecentChooserMenu.for_manager (Gtk.RecentManager manager);
                public bool get_show_numbers ();
-               [NoWrapper]
-               public virtual void gtk_recent1 ();
-               [NoWrapper]
-               public virtual void gtk_recent2 ();
-               [NoWrapper]
-               public virtual void gtk_recent3 ();
-               [NoWrapper]
-               public virtual void gtk_recent4 ();
                public void set_show_numbers (bool show_numbers);
                public bool show_numbers { get; set; }
        }
@@ -3572,17 +3555,6 @@ namespace Gtk {
                public Gtk.RecentFilterFlags get_needed ();
                public void set_name (string name);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class RecentFilterInfo {
-               public int age;
-               public weak string applications;
-               public Gtk.RecentFilterFlags contains;
-               public weak string display_name;
-               public weak string groups;
-               public weak string mime_type;
-               public weak string uri;
-       }
        [CCode (cheader_filename = "gtk/gtk.h", ref_function = "gtk_recent_info_ref", type_id = "gtk_recent_info_get_type ()", unref_function = "gtk_recent_info_unref")]
        [Compact]
        public class RecentInfo {
@@ -3621,7 +3593,7 @@ namespace Gtk {
                public GLib.List<Gtk.RecentInfo> get_items ();
                public int get_limit ();
                public bool has_item (string uri);
-               public unowned Gtk.RecentInfo lookup_item (string uri) throws GLib.Error;
+               public Gtk.RecentInfo lookup_item (string uri) throws GLib.Error;
                public bool move_item (string uri, string new_uri) throws GLib.Error;
                public int purge_items () throws GLib.Error;
                public bool remove_item (string uri) throws GLib.Error;
@@ -3693,14 +3665,14 @@ namespace Gtk {
                public weak Gtk.Widget minus_button;
                public weak Gtk.Widget plus_button;
                [CCode (has_construct_function = false, type = "GtkWidget*")]
-               public ScaleButton (Gtk.IconSize size, double min = 0.0, double max = 100.0, double step = 2.0, [CCode (array_length = false)] string[]? icons = null);
+               public ScaleButton (Gtk.IconSize size, double min = 0.0, double max = 100.0, double step = 2.0, [CCode (array_length = false, array_null_terminated = true)] string[]? icons = null);
                public unowned Gtk.Adjustment get_adjustment ();
                public unowned Gtk.Widget get_minus_button ();
                public unowned Gtk.Widget get_plus_button ();
                public unowned Gtk.Widget get_popup ();
                public double get_value ();
                public void set_adjustment (Gtk.Adjustment adjustment);
-               public void set_icons ([CCode (array_length = false)] string[] icons);
+               public void set_icons ([CCode (array_length = false, array_null_terminated = true)] string[] icons);
                public void set_value (double value);
                public Gtk.Adjustment adjustment { get; set; }
                [CCode (array_length = false, array_null_terminated = true)]
@@ -3731,7 +3703,7 @@ namespace Gtk {
                public unowned Gtk.Adjustment get_hadjustment ();
                public unowned Gtk.Widget get_hscrollbar ();
                public Gtk.CornerType get_placement ();
-               public void get_policy (Gtk.PolicyType hscrollbar_policy, Gtk.PolicyType vscrollbar_policy);
+               public void get_policy (out Gtk.PolicyType hscrollbar_policy, out Gtk.PolicyType vscrollbar_policy);
                public Gtk.ShadowType get_shadow_type ();
                public unowned Gtk.Adjustment get_vadjustment ();
                public unowned Gtk.Widget get_vscrollbar ();
@@ -3783,7 +3755,7 @@ namespace Gtk {
                public void @set (Gdk.Atom type, int format, uchar[] data);
                public bool set_pixbuf (Gdk.Pixbuf pixbuf);
                public bool set_text (string str, int len);
-               public bool set_uris ([CCode (array_length = false)] string[] uris);
+               public bool set_uris ([CCode (array_length = false, array_null_terminated = true)] string[] uris);
                public bool targets_include_image (bool writable);
                public bool targets_include_rich_text (Gtk.TextBuffer buffer);
                public bool targets_include_text ();
@@ -3968,12 +3940,6 @@ namespace Gtk {
        public class SettingsPropertyValue {
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class SettingsValue {
-               public weak string origin;
-               public GLib.Value value;
-       }
-       [CCode (cheader_filename = "gtk/gtk.h")]
        public class SizeGroup : GLib.Object, Gtk.Buildable {
                public uint have_height;
                public uint have_width;
@@ -4031,7 +3997,7 @@ namespace Gtk {
                public void configure (Gtk.Adjustment adjustment, double climb_rate, uint digits);
                public unowned Gtk.Adjustment get_adjustment ();
                public uint get_digits ();
-               public void get_increments (double step, double page);
+               public void get_increments (out double step, out double page);
                public bool get_numeric ();
                public void get_range (out double min, out double max);
                public bool get_snap_to_ticks ();
@@ -4062,7 +4028,7 @@ namespace Gtk {
                public double value { get; set; }
                public bool wrap { get; set; }
                public virtual signal void change_value (Gtk.ScrollType scroll);
-               public virtual signal int input (void* new_value);
+               public virtual signal int input (out double new_value);
                public virtual signal bool output ();
                public virtual signal void value_changed ();
                public virtual signal void wrapped ();
@@ -4101,8 +4067,8 @@ namespace Gtk {
                public unowned string get_stock ();
                public Gtk.ImageType get_storage_type ();
                public unowned string get_title ();
-               public unowned string get_tooltip_markup ();
-               public unowned string get_tooltip_text ();
+               public string get_tooltip_markup ();
+               public string get_tooltip_text ();
                public bool get_visible ();
                public uint32 get_x11_window_id ();
                public bool is_embedded ();
@@ -4141,8 +4107,8 @@ namespace Gtk {
                public string stock { owned get; set; }
                public Gtk.ImageType storage_type { get; }
                public string title { get; set; }
-               public string tooltip_markup { get; set; }
-               public string tooltip_text { get; set; }
+               public string tooltip_markup { owned get; set; }
+               public string tooltip_text { owned get; set; }
                public bool visible { get; set; }
                public virtual signal void activate ();
                public virtual signal bool button_press_event (Gdk.EventButton event);
@@ -4308,7 +4274,7 @@ namespace Gtk {
                public uint get_default_row_spacing ();
                public bool get_homogeneous ();
                public uint get_row_spacing (uint row);
-               public void get_size (uint rows, uint columns);
+               public void get_size (out uint rows, out uint columns);
                public void resize (uint rows, uint columns);
                public void set_col_spacing (uint column, uint spacing);
                public void set_col_spacings (uint spacing);
@@ -4364,10 +4330,10 @@ namespace Gtk {
                public void add (Gdk.Atom target, uint flags, uint info);
                public void add_image_targets (uint info, bool writable);
                public void add_rich_text_targets (uint info, bool deserializable, Gtk.TextBuffer buffer);
-               public void add_table (Gtk.TargetEntry[] targets);
+               public void add_table (Gtk.TargetEntry[]? targets);
                public void add_text_targets (uint info);
                public void add_uri_targets (uint info);
-               public bool find (Gdk.Atom target, uint info);
+               public bool find (Gdk.Atom target, out uint info);
                public void remove (Gdk.Atom target);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -4383,29 +4349,10 @@ namespace Gtk {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public TearoffMenuItem ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class TextAppearance {
-               public Gdk.Color bg_color;
-               public weak Gdk.Bitmap bg_stipple;
-               public uint draw_bg;
-               public Gdk.Color fg_color;
-               public weak Gdk.Bitmap fg_stipple;
-               public uint inside_selection;
-               public uint is_text;
-               public uint pad1;
-               public uint pad2;
-               public uint pad3;
-               public uint pad4;
-               public void* padding1;
-               public int rise;
-               public uint strikethrough;
-               public uint underline;
-       }
        [CCode (cheader_filename = "gtk/gtk.h", ref_function = "gtk_text_attributes_ref", type_id = "gtk_text_attributes_get_type ()", unref_function = "gtk_text_attributes_unref")]
        [Compact]
        public class TextAttributes {
-               public weak Gtk.TextAppearance appearance;
+               public Gtk.TextAppearance appearance;
                public uint bg_full_height;
                public Gtk.TextDirection direction;
                public uint editable;
@@ -4414,7 +4361,7 @@ namespace Gtk {
                public int indent;
                public uint invisible;
                public Gtk.Justification justification;
-               public weak Pango.Language language;
+               public Pango.Language language;
                public int left_margin;
                public uint pad1;
                public uint pad2;
@@ -4788,7 +4735,7 @@ namespace Gtk {
                public int get_border_window_size (Gtk.TextWindowType type);
                public unowned Gtk.TextBuffer get_buffer ();
                public bool get_cursor_visible ();
-               public unowned Gtk.TextAttributes get_default_attributes ();
+               public Gtk.TextAttributes get_default_attributes ();
                public bool get_editable ();
                public unowned Gtk.Adjustment get_hadjustment ();
                public int get_indent ();
@@ -4804,7 +4751,7 @@ namespace Gtk {
                public int get_pixels_below_lines ();
                public int get_pixels_inside_wrap ();
                public int get_right_margin ();
-               public unowned Pango.TabArray get_tabs ();
+               public Pango.TabArray get_tabs ();
                public unowned Gtk.Adjustment get_vadjustment ();
                public void get_visible_rect (out Gdk.Rectangle visible_rect);
                public unowned Gdk.Window get_window (Gtk.TextWindowType win);
@@ -4854,7 +4801,7 @@ namespace Gtk {
                public int pixels_below_lines { get; set; }
                public int pixels_inside_wrap { get; set; }
                public int right_margin { get; set; }
-               public Pango.TabArray tabs { get; set; }
+               public Pango.TabArray tabs { owned get; set; }
                public Gtk.WrapMode wrap_mode { get; set; }
                public virtual signal void backspace ();
                public virtual signal void copy_clipboard ();
@@ -5102,9 +5049,9 @@ namespace Gtk {
                public TreeModelFilter (Gtk.TreeModel child_model, Gtk.TreePath? root);
                public void clear_cache ();
                public bool convert_child_iter_to_iter (out Gtk.TreeIter filter_iter, Gtk.TreeIter child_iter);
-               public unowned Gtk.TreePath convert_child_path_to_path (Gtk.TreePath child_path);
+               public Gtk.TreePath convert_child_path_to_path (Gtk.TreePath child_path);
                public void convert_iter_to_child_iter (out Gtk.TreeIter child_iter, Gtk.TreeIter filter_iter);
-               public unowned Gtk.TreePath convert_path_to_child_path (Gtk.TreePath filter_path);
+               public Gtk.TreePath convert_path_to_child_path (Gtk.TreePath filter_path);
                public unowned Gtk.TreeModel get_model ();
                public void refilter ();
                public void set_modify_func ([CCode (array_length_pos = 0.9)] GLib.Type[] types, owned Gtk.TreeModelFilterModifyFunc func);
@@ -5137,9 +5084,9 @@ namespace Gtk {
                protected TreeModelSort ();
                public void clear_cache ();
                public bool convert_child_iter_to_iter (out Gtk.TreeIter sort_iter, Gtk.TreeIter child_iter);
-               public unowned Gtk.TreePath convert_child_path_to_path (Gtk.TreePath child_path);
+               public Gtk.TreePath convert_child_path_to_path (Gtk.TreePath child_path);
                public void convert_iter_to_child_iter (out Gtk.TreeIter child_iter, Gtk.TreeIter sorted_iter);
-               public unowned Gtk.TreePath convert_path_to_child_path (Gtk.TreePath sorted_path);
+               public Gtk.TreePath convert_path_to_child_path (Gtk.TreePath sorted_path);
                public unowned Gtk.TreeModel get_model ();
                public bool iter_is_valid (Gtk.TreeIter iter);
                public void reset_default_sort_func ();
@@ -5246,7 +5193,7 @@ namespace Gtk {
                public void insert_before (out Gtk.TreeIter iter, Gtk.TreeIter? parent, Gtk.TreeIter? sibling);
                [CCode (sentinel = "-1")]
                public void insert_with_values (out Gtk.TreeIter iter, Gtk.TreeIter? parent, int position, ...);
-               public void insert_with_valuesv (out Gtk.TreeIter iter, Gtk.TreeIter? parent, int position, int columns, GLib.Value[] values);
+               public void insert_with_valuesv (out Gtk.TreeIter iter, Gtk.TreeIter? parent, int position, [CCode (array_length_pos = 5.1)] int[] columns, [CCode (array_length_pos = 5.1)] GLib.Value[] values);
                public bool is_ancestor (Gtk.TreeIter iter, Gtk.TreeIter descendant);
                public int iter_depth (Gtk.TreeIter iter);
                public bool iter_is_valid (Gtk.TreeIter iter);
@@ -5279,7 +5226,7 @@ namespace Gtk {
                public void convert_tree_to_widget_coords (int tx, int ty, out int wx, out int wy);
                public void convert_widget_to_bin_window_coords (int wx, int wy, out int bx, out int by);
                public void convert_widget_to_tree_coords (int wx, int wy, out int tx, out int ty);
-               public unowned Gdk.Pixmap create_row_drag_icon (Gtk.TreePath path);
+               public Gdk.Pixmap create_row_drag_icon (Gtk.TreePath path);
                public void enable_model_drag_dest (Gtk.TargetEntry[] targets, Gdk.DragAction actions);
                public void enable_model_drag_source (Gdk.ModifierType start_button_mask, Gtk.TargetEntry[] targets, Gdk.DragAction actions);
                public void expand_all ();
@@ -5327,7 +5274,7 @@ namespace Gtk {
                [CCode (cname = "gtk_tree_view_row_expanded")]
                public bool is_row_expanded (Gtk.TreePath path);
                public bool is_rubber_banding_active ();
-               public void map_expanded_rows (Gtk.TreeViewMappingFunc func, void* data);
+               public void map_expanded_rows (Gtk.TreeViewMappingFunc func);
                public void move_column_after (Gtk.TreeViewColumn column, Gtk.TreeViewColumn base_column);
                public int remove_column (Gtk.TreeViewColumn column);
                public void scroll_to_cell (Gtk.TreePath? path, Gtk.TreeViewColumn? column, bool use_align, float row_align, float col_align);
@@ -5505,7 +5452,7 @@ namespace Gtk {
                public unowned GLib.List<Gtk.ActionGroup> get_action_groups ();
                public bool get_add_tearoffs ();
                public GLib.SList<weak Gtk.Widget> get_toplevels (Gtk.UIManagerItemType types);
-               public unowned string get_ui ();
+               public string get_ui ();
                public virtual unowned Gtk.Widget get_widget (string path);
                public void insert_action_group (Gtk.ActionGroup action_group, int pos);
                public uint new_merge_id ();
@@ -5513,7 +5460,7 @@ namespace Gtk {
                public void remove_ui (uint merge_id);
                public void set_add_tearoffs (bool add_tearoffs);
                public bool add_tearoffs { get; set; }
-               public string ui { get; }
+               public string ui { owned get; }
                public virtual signal void actions_changed ();
                public virtual signal void add_widget (Gtk.Widget widget);
                public virtual signal void connect_proxy (Gtk.Action action, Gtk.Widget proxy);
@@ -5587,6 +5534,7 @@ namespace Gtk {
                public Gtk.Allocation allocation;
                public Gtk.Requisition requisition;
                public uchar saved_state;
+               public class uint set_scroll_adjustments_signal;
                public uchar state;
                public Gdk.Window window;
                [CCode (construct_function = "gtk_widget_new", has_new_function = false)]
@@ -5596,12 +5544,12 @@ namespace Gtk {
                public void add_events (int events);
                public void add_mnemonic_label (Gtk.Widget label);
                public bool child_focus (Gtk.DirectionType direction);
-               public void class_path (out uint path_length, out unowned string path, out unowned string path_reversed);
+               public void class_path (out uint path_length, out string path, out string path_reversed);
                public Pango.Context create_pango_context ();
                public Pango.Layout create_pango_layout (string? text);
                public void destroyed (out unowned Gtk.Widget widget_pointer);
                [NoWrapper]
-               public virtual void dispatch_child_properties_changed (uint n_pspecs, out unowned GLib.ParamSpec pspecs);
+               public virtual void dispatch_child_properties_changed ([CCode (array_length_pos = 0.5)] out GLib.ParamSpec[] pspecs);
                public void ensure_style ();
                public void error_bell ();
                [CCode (cname = "gtk_widget_class_find_style_property")]
@@ -5617,7 +5565,7 @@ namespace Gtk {
                public bool get_child_visible ();
                public unowned Gtk.Clipboard get_clipboard (Gdk.Atom selection);
                public unowned Gdk.Colormap get_colormap ();
-               public unowned string get_composite_name ();
+               public string get_composite_name ();
                public static unowned Gdk.Colormap get_default_colormap ();
                public static Gtk.TextDirection get_default_direction ();
                public static unowned Gtk.Style get_default_style ();
@@ -5635,7 +5583,8 @@ namespace Gtk {
                public unowned Gtk.RcStyle get_modifier_style ();
                public bool get_no_show_all ();
                public unowned Pango.Context get_pango_context ();
-               public unowned Gtk.Widget get_parent ();
+               [CCode (type = "GtkWidget*")]
+               public unowned Gtk.Container? get_parent ();
                public unowned Gdk.Window get_parent_window ();
                public void get_pointer (out int x, out int y);
                public bool get_realized ();
@@ -5649,8 +5598,8 @@ namespace Gtk {
                public unowned Gdk.Pixmap get_snapshot (Gdk.Rectangle clip_rect);
                public Gtk.StateType get_state ();
                public unowned Gtk.Style get_style ();
-               public unowned string get_tooltip_markup ();
-               public unowned string get_tooltip_text ();
+               public string get_tooltip_markup ();
+               public string get_tooltip_text ();
                public unowned Gtk.Window get_tooltip_window ();
                public unowned Gtk.Widget get_toplevel ();
                public bool get_visible ();
@@ -5688,7 +5637,7 @@ namespace Gtk {
                public bool is_sensitive ();
                [CCode (cname = "GTK_WIDGET_TOPLEVEL")]
                public bool is_toplevel ();
-               public GLib.List<GLib.Closure> list_accel_closures ();
+               public GLib.List<weak GLib.Closure> list_accel_closures ();
                public GLib.List<weak Gtk.Widget> list_mnemonic_labels ();
                [CCode (cname = "gtk_widget_class_list_style_properties")]
                public class unowned GLib.ParamSpec list_style_properties (uint n_properties);
@@ -5699,7 +5648,7 @@ namespace Gtk {
                public void modify_font (Pango.FontDescription? font_desc);
                public void modify_style (Gtk.RcStyle style);
                public void modify_text (Gtk.StateType state, Gdk.Color? color);
-               public void path (out uint path_length, out unowned string path, out unowned string path_reversed);
+               public void path (out uint path_length, out string path, out string path_reversed);
                public static void pop_colormap ();
                public static void pop_composite_child ();
                public static void push_colormap (Gdk.Colormap cmap);
@@ -5708,7 +5657,7 @@ namespace Gtk {
                public void queue_draw_area (int x, int y, int width, int height);
                public void queue_resize ();
                public void queue_resize_no_redraw ();
-               public unowned Gdk.Region region_intersect (Gdk.Region region);
+               public Gdk.Region region_intersect (Gdk.Region region);
                public bool remove_accelerator (Gtk.AccelGroup accel_group, uint accel_key, Gdk.ModifierType accel_mods);
                public void remove_mnemonic_label (Gtk.Widget label);
                public Gdk.Pixbuf render_icon (string stock_id, Gtk.IconSize size, string? detail);
@@ -5737,7 +5686,7 @@ namespace Gtk {
                public void set_has_window (bool has_window);
                public void set_mapped (bool mapped);
                public void set_no_show_all (bool no_show_all);
-               public void set_parent (Gtk.Widget parent);
+               public void set_parent ([CCode (type = "GtkWidget*")] Gtk.Container parent);
                public void set_parent_window (Gdk.Window parent_window);
                public void set_realized (bool realized);
                public void set_receives_default (bool receives_default);
@@ -5758,7 +5707,7 @@ namespace Gtk {
                public void style_attach ();
                public void style_get (...);
                public void style_get_property (string property_name, ref GLib.Value value);
-               public void style_get_valist (string first_property_name, void* var_args);
+               public void style_get_valist (string first_property_name, va_list var_args);
                public void thaw_child_notify ();
                public bool translate_coordinates (Gtk.Widget dest_widget, int src_x, int src_y, out int dest_x, out int dest_y);
                public void trigger_tooltip_query ();
@@ -5789,8 +5738,8 @@ namespace Gtk {
                public bool receives_default { get; set; }
                public bool sensitive { get; set; }
                public Gtk.Style style { get; set; }
-               public string tooltip_markup { get; set; }
-               public string tooltip_text { get; set; }
+               public string tooltip_markup { owned get; set; }
+               public string tooltip_text { owned get; set; }
                public bool visible { get; set; }
                [NoAccessorMethod]
                public int width_request { get; set; }
@@ -5990,7 +5939,7 @@ namespace Gtk {
                public void set_default (Gtk.Widget default_widget);
                public static void set_default_icon (Gdk.Pixbuf icon);
                public static bool set_default_icon_from_file (string filename) throws GLib.Error;
-               public static void set_default_icon_list (GLib.List<Gdk.Pixbuf> list);
+               public static void set_default_icon_list (owned GLib.List<weak Gdk.Pixbuf> list);
                public static void set_default_icon_name (string name);
                public void set_default_size (int width, int height);
                public void set_deletable (bool setting);
@@ -6104,7 +6053,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public interface Buildable : GLib.Object {
                public abstract void add_child (Gtk.Builder builder, GLib.Object child, string? type);
-               public abstract unowned GLib.Object construct_child (Gtk.Builder builder, string name);
+               public abstract GLib.Object construct_child (Gtk.Builder builder, string name);
                public abstract void custom_finished (Gtk.Builder builder, GLib.Object? child, string tagname, void* data);
                public abstract void custom_tag_end (Gtk.Builder builder, GLib.Object? child, string tagname, out void* data);
                public abstract bool custom_tag_start (Gtk.Builder builder, GLib.Object? child, string tagname, out GLib.MarkupParser parser, out void* data);
@@ -6137,15 +6086,15 @@ namespace Gtk {
                public abstract void set_cell_data_func (Gtk.CellRenderer cell, owned Gtk.CellLayoutDataFunc func);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public interface Editable {
+       public interface Editable : GLib.Object {
                public void copy_clipboard ();
                public void cut_clipboard ();
                public void delete_selection ();
                [NoWrapper]
                public abstract void do_delete_text (int start_pos, int end_pos);
                [NoWrapper]
-               public abstract void do_insert_text (string text, int length, int position);
-               public abstract unowned string get_chars (int start_pos, int end_pos);
+               public abstract void do_insert_text (string text, int length, ref int position);
+               public abstract string get_chars (int start_pos, int end_pos);
                public bool get_editable ();
                public abstract int get_position ();
                public abstract bool get_selection_bounds (out int start_pos, out int end_pos);
@@ -6169,17 +6118,17 @@ namespace Gtk {
                public Gtk.FileChooserAction get_action ();
                public bool get_create_folders ();
                public string get_current_folder ();
-               public unowned GLib.File get_current_folder_file ();
+               public GLib.File get_current_folder_file ();
                public string get_current_folder_uri ();
                public bool get_do_overwrite_confirmation ();
                public unowned Gtk.Widget get_extra_widget ();
-               public unowned GLib.File get_file ();
+               public GLib.File get_file ();
                public string get_filename ();
                public GLib.SList<string> get_filenames ();
                public GLib.SList<GLib.File> get_files ();
                public unowned Gtk.FileFilter get_filter ();
                public bool get_local_only ();
-               public unowned GLib.File get_preview_file ();
+               public GLib.File get_preview_file ();
                public string get_preview_filename ();
                public string get_preview_uri ();
                public unowned Gtk.Widget get_preview_widget ();
@@ -6240,7 +6189,7 @@ namespace Gtk {
                public signal void update_preview ();
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public interface FileChooserEmbed {
+       public interface FileChooserEmbed : GLib.Object {
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
        public interface Orientable : GLib.Object {
@@ -6260,8 +6209,8 @@ namespace Gtk {
        public interface RecentChooser : GLib.Object {
                public abstract void add_filter (Gtk.RecentFilter filter);
                public static GLib.Quark error_quark ();
-               public unowned Gtk.RecentInfo get_current_item ();
-               public abstract unowned string get_current_uri ();
+               public Gtk.RecentInfo get_current_item ();
+               public abstract string get_current_uri ();
                public unowned Gtk.RecentFilter get_filter ();
                public abstract GLib.List<Gtk.RecentInfo> get_items ();
                public int get_limit ();
@@ -6274,7 +6223,7 @@ namespace Gtk {
                public bool get_show_private ();
                public bool get_show_tips ();
                public Gtk.RecentSortType get_sort_type ();
-               public unowned string get_uris (size_t length);
+               public string[] get_uris ();
                public abstract GLib.SList<weak Gtk.RecentFilter> list_filters ();
                public abstract void remove_filter (Gtk.RecentFilter filter);
                public abstract void select_all ();
@@ -6318,12 +6267,12 @@ namespace Gtk {
                public abstract void rebuild_menu ();
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public interface TreeDragDest {
+       public interface TreeDragDest : GLib.Object {
                public abstract bool drag_data_received (Gtk.TreePath dest, Gtk.SelectionData selection_data);
                public abstract bool row_drop_possible (Gtk.TreePath dest_path, Gtk.SelectionData selection_data);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public interface TreeDragSource {
+       public interface TreeDragSource : GLib.Object {
                public abstract bool drag_data_delete (Gtk.TreePath path);
                public abstract bool drag_data_get (Gtk.TreePath path, Gtk.SelectionData selection_data);
                public abstract bool row_draggable (Gtk.TreePath path);
@@ -6373,6 +6322,12 @@ namespace Gtk {
                public signal void sort_column_changed ();
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public struct AccelGroupEntry {
+               public Gtk.AccelKey key;
+               public weak GLib.Closure closure;
+               public GLib.Quark accel_path_quark;
+       }
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public struct AccelKey {
                public uint accel_key;
                public Gdk.ModifierType accel_mods;
@@ -6389,11 +6344,7 @@ namespace Gtk {
                public weak Gtk.ActionCallback callback;
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public struct Allocation {
-               public int x;
-               public int y;
-               public int width;
-               public int height;
+       public struct Allocation : Gdk.Rectangle {
        }
        [CCode (cheader_filename = "gtk/gtk.h,gtk/gtkimmodule.h")]
        public struct IMContextInfo {
@@ -6404,6 +6355,11 @@ namespace Gtk {
                public weak string default_locales;
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public struct PageRange {
+               public int start;
+               public int end;
+       }
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public struct RadioActionEntry {
                public weak string name;
                public weak string stock_id;
@@ -6424,6 +6380,18 @@ namespace Gtk {
                public bool is_private;
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public struct RecentFilterInfo {
+               public Gtk.RecentFilterFlags contains;
+               public weak string uri;
+               public weak string display_name;
+               public weak string mime_type;
+               [CCode (array_length = false, array_null_terminated = true)]
+               public weak string[] applications;
+               [CCode (array_length = false, array_null_terminated = true)]
+               public weak string[] groups;
+               public int age;
+       }
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public struct Requisition {
                public int width;
                public int height;
@@ -6431,6 +6399,11 @@ namespace Gtk {
                public void free ();
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public struct SettingsValue {
+               public weak string origin;
+               public GLib.Value value;
+       }
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public struct StockItem {
                public weak string stock_id;
                public weak string label;
@@ -6447,21 +6420,20 @@ namespace Gtk {
                public uint info;
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public struct TextAppearance {
+               public Gdk.Color bg_color;
+               public Gdk.Color fg_color;
+               public weak Gdk.Bitmap bg_stipple;
+               public weak Gdk.Bitmap fg_stipple;
+               public int rise;
+               public uint underline;
+               public uint strikethrough;
+               public uint draw_bg;
+               public uint inside_selection;
+               public uint is_text;
+       }
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public struct TextIter {
-               public void* dummy1;
-               public void* dummy2;
-               public int dummy3;
-               public int dummy4;
-               public int dummy5;
-               public int dummy6;
-               public int dummy7;
-               public int dummy8;
-               public void* dummy9;
-               public void* dummy10;
-               public int dummy11;
-               public int dummy12;
-               public int dummy13;
-               public void* dummy14;
                public bool backward_char ();
                public bool backward_chars (int count);
                public bool backward_cursor_position ();
@@ -6519,21 +6491,21 @@ namespace Gtk {
                public unichar get_char ();
                public int get_chars_in_line ();
                public unowned Gtk.TextChildAnchor get_child_anchor ();
-               public unowned Pango.Language get_language ();
+               public Pango.Language get_language ();
                public int get_line ();
                public int get_line_index ();
                public int get_line_offset ();
                public GLib.SList<weak Gtk.TextMark> get_marks ();
                public int get_offset ();
                public unowned Gdk.Pixbuf get_pixbuf ();
-               public unowned string get_slice (Gtk.TextIter end);
+               public string get_slice (Gtk.TextIter end);
                public GLib.SList<weak Gtk.TextTag> get_tags ();
-               public unowned string get_text (Gtk.TextIter end);
+               public string get_text (Gtk.TextIter end);
                public GLib.SList<weak Gtk.TextTag> get_toggled_tags (bool toggled_on);
                public int get_visible_line_index ();
                public int get_visible_line_offset ();
-               public unowned string get_visible_slice (Gtk.TextIter end);
-               public unowned string get_visible_text (Gtk.TextIter end);
+               public string get_visible_slice (Gtk.TextIter end);
+               public string get_visible_text (Gtk.TextIter end);
                public bool has_tag (Gtk.TextTag tag);
                public bool in_range (Gtk.TextIter start, Gtk.TextIter end);
                public bool inside_sentence ();
@@ -6834,13 +6806,6 @@ namespace Gtk {
                ACCEPT_FILENAME,
                SELECT_AGAIN
        }
-       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_FILE_CHOOSER_ERROR_")]
-       public enum FileChooserError {
-               NONEXISTENT,
-               BAD_FILENAME,
-               ALREADY_EXISTS,
-               INCOMPLETE_HOSTNAME
-       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_FILE_FILTER_")]
        [Flags]
        public enum FileFilterFlags {
@@ -6880,11 +6845,6 @@ namespace Gtk {
                DND,
                DIALOG
        }
-       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_ICON_THEME_")]
-       public enum IconThemeError {
-               NOT_FOUND,
-               FAILED
-       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_ICON_VIEW_")]
        public enum IconViewDropPosition {
                NO_DROP,
@@ -7049,13 +7009,6 @@ namespace Gtk {
                HORIZONTAL,
                VERTICAL
        }
-       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_PRINT_ERROR_")]
-       public enum PrintError {
-               GENERAL,
-               INTERNAL_ERROR,
-               NOMEM,
-               INVALID_FILE
-       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_PRINT_OPERATION_ACTION_")]
        public enum PrintOperationAction {
                PRINT_DIALOG,
@@ -7176,11 +7129,6 @@ namespace Gtk {
                UNBIND,
                LAST
        }
-       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RECENT_CHOOSER_ERROR_")]
-       public enum RecentChooserError {
-               NOT_FOUND,
-               INVALID_URI
-       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RECENT_FILTER_")]
        [Flags]
        public enum RecentFilterFlags {
@@ -7191,16 +7139,6 @@ namespace Gtk {
                GROUP,
                AGE
        }
-       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RECENT_MANAGER_ERROR_")]
-       public enum RecentManagerError {
-               NOT_FOUND,
-               INVALID_URI,
-               INVALID_ENCODING,
-               NOT_REGISTERED,
-               READ,
-               WRITE,
-               UNKNOWN
-       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RECENT_SORT_")]
        public enum RecentSortType {
                NONE,
@@ -7540,6 +7478,40 @@ namespace Gtk {
                VERSION_MISMATCH,
                DUPLICATE_ID
        }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_FILE_CHOOSER_ERROR_")]
+       public errordomain FileChooserError {
+               NONEXISTENT,
+               BAD_FILENAME,
+               ALREADY_EXISTS,
+               INCOMPLETE_HOSTNAME
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_ICON_THEME_")]
+       public errordomain IconThemeError {
+               NOT_FOUND,
+               FAILED
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_PRINT_ERROR_")]
+       public errordomain PrintError {
+               GENERAL,
+               INTERNAL_ERROR,
+               NOMEM,
+               INVALID_FILE
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RECENT_CHOOSER_ERROR_")]
+       public errordomain RecentChooserError {
+               NOT_FOUND,
+               INVALID_URI
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RECENT_MANAGER_ERROR_")]
+       public errordomain RecentManagerError {
+               NOT_FOUND,
+               INVALID_URI,
+               INVALID_ENCODING,
+               NOT_REGISTERED,
+               READ,
+               WRITE,
+               UNKNOWN
+       }
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void AboutDialogActivateLinkFunc (Gtk.AboutDialog about, string link_);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -7548,7 +7520,7 @@ namespace Gtk {
        public delegate bool AccelGroupFindFunc (Gtk.AccelKey key, GLib.Closure closure);
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
        public delegate void AccelMapForeach (void* data, string accel_path, uint accel_key, Gdk.ModifierType accel_mods, bool changed);
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_cname = "GCallback")]
        public delegate void ActionCallback (Gtk.Action action);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate int AssistantPageFunc (int current_page);
@@ -7579,9 +7551,9 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void ClipboardURIReceivedFunc (Gtk.Clipboard clipboard, [CCode (array_length = false, array_null_terminated = true)] string[] uris);
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
-       public delegate void ColorSelectionChangePaletteFunc (Gdk.Color colors, int n_colors);
+       public delegate void ColorSelectionChangePaletteFunc (Gdk.Color[] colors);
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
-       public delegate void ColorSelectionChangePaletteWithScreenFunc (Gdk.Screen screen, Gdk.Color colors, int n_colors);
+       public delegate void ColorSelectionChangePaletteWithScreenFunc (Gdk.Screen screen, Gdk.Color[] colors);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate bool EntryCompletionMatchFunc (Gtk.EntryCompletion completion, string key, Gtk.TreeIter iter);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -7590,8 +7562,8 @@ namespace Gtk {
        public delegate bool Function ();
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void IconViewForeachFunc (Gtk.IconView icon_view, Gtk.TreePath path);
-       [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
-       public delegate int KeySnoopFunc (Gtk.Widget grab_widget, Gdk.EventKey event, void* func_data);
+       [CCode (cheader_filename = "gtk/gtk.h", instance_pos = 2.9)]
+       public delegate int KeySnoopFunc (Gtk.Widget grab_widget, Gdk.EventKey event);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void LinkButtonUriFunc (Gtk.LinkButton button, string link_);
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
@@ -7601,14 +7573,14 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
        public delegate void ModuleDisplayInitFunc (Gdk.Display display);
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
-       public delegate void ModuleInitFunc (int argc, string argv);
+       public delegate void ModuleInitFunc (string[]? argv);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate unowned Gtk.Notebook NotebookWindowCreationFunc (Gtk.Notebook source, Gtk.Widget page, int x, int y);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void PageSetupDoneFunc (Gtk.PageSetup page_setup);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void PrintSettingsFunc (string key, string value);
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_cname = "GCallback")]
        public delegate void RadioActionCallback (Gtk.Action action, Gtk.Action current);
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
        public delegate bool RcPropertyParser (GLib.ParamSpec pspec, GLib.StringBuilder rc_string, GLib.Value property_value);
@@ -7625,7 +7597,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void TextTagTableForeach (Gtk.TextTag tag);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public delegate unowned string TranslateFunc (string path);
+       public delegate string TranslateFunc (string path);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void TreeCellDataFunc (Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel tree_model, Gtk.TreeIter iter);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -7633,7 +7605,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate int TreeIterCompareFunc (Gtk.TreeModel model, Gtk.TreeIter a, Gtk.TreeIter b);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public delegate void TreeModelFilterModifyFunc (Gtk.TreeModel model, Gtk.TreeIter iter, GLib.Value value, int column);
+       public delegate void TreeModelFilterModifyFunc (Gtk.TreeModel model, Gtk.TreeIter iter, out GLib.Value value, int column);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate bool TreeModelFilterVisibleFunc (Gtk.TreeModel model, Gtk.TreeIter iter);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -8088,9 +8060,9 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static uint accelerator_get_default_mod_mask ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string accelerator_get_label (uint accelerator_key, Gdk.ModifierType accelerator_mods);
+       public static string accelerator_get_label (uint accelerator_key, Gdk.ModifierType accelerator_mods);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string accelerator_name (uint accelerator_key, Gdk.ModifierType accelerator_mods);
+       public static string accelerator_name (uint accelerator_key, Gdk.ModifierType accelerator_mods);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void accelerator_parse (string accelerator, out uint accelerator_key, out Gdk.ModifierType accelerator_mods);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -8226,7 +8198,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static bool init_with_args ([CCode (array_length_pos = 0.9)] ref unowned string[] argv, string parameter_string, [CCode (array_length = false)] GLib.OptionEntry[] entries, string? translation_domain) throws GLib.Error;
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static uint key_snooper_install (Gtk.KeySnoopFunc snooper, void* func_data);
+       public static uint key_snooper_install (Gtk.KeySnoopFunc snooper);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void key_snooper_remove (uint snooper_handler_id);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -8284,13 +8256,13 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void paint_vline (Gtk.Style style, Gdk.Window window, Gtk.StateType state_type, Gdk.Rectangle? area, Gtk.Widget? widget, string? detail, int y1_, int y2_, int x);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static bool parse_args (int argc, string[] argv);
+       public static bool parse_args ([CCode (array_length_pos = 0.5)] ref unowned string[] argv);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static GLib.Quark print_error_quark ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned Gtk.PageSetup print_run_page_setup_dialog (Gtk.Window parent, Gtk.PageSetup page_setup, Gtk.PrintSettings settings);
+       public static Gtk.PageSetup print_run_page_setup_dialog (Gtk.Window parent, Gtk.PageSetup page_setup, Gtk.PrintSettings settings);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static void print_run_page_setup_dialog_async (Gtk.Window parent, Gtk.PageSetup page_setup, Gtk.PrintSettings settings, Gtk.PageSetupDoneFunc done_cb, void* data);
+       public static void print_run_page_setup_dialog_async (Gtk.Window parent, Gtk.PageSetup page_setup, Gtk.PrintSettings settings, Gtk.PageSetupDoneFunc done_cb);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void propagate_event (Gtk.Widget widget, Gdk.Event event);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -8304,33 +8276,33 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void rc_add_default_file (string filename);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_find_module_in_path (string module_file);
+       public static string rc_find_module_in_path (string module_file);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_find_pixmap_in_path (Gtk.Settings settings, GLib.Scanner scanner, string pixmap_file);
+       public static string rc_find_pixmap_in_path (Gtk.Settings settings, GLib.Scanner scanner, string pixmap_file);
+       [CCode (array_length = false, array_null_terminated = true, cheader_filename = "gtk/gtk.h")]
+       public static unowned string[] rc_get_default_files ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_get_default_files ();
+       public static string rc_get_im_module_file ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_get_im_module_file ();
+       public static string rc_get_im_module_path ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_get_im_module_path ();
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_get_module_dir ();
+       public static string rc_get_module_dir ();
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static unowned Gtk.Style rc_get_style (Gtk.Widget widget);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static unowned Gtk.Style? rc_get_style_by_paths (Gtk.Settings settings, string? widget_path, string? class_path, GLib.Type type);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_get_theme_dir ();
+       public static string rc_get_theme_dir ();
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void rc_parse (string filename);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static uint rc_parse_color (GLib.Scanner scanner, Gdk.Color color);
+       public static uint rc_parse_color (GLib.Scanner scanner, out Gdk.Color color);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static uint rc_parse_color_full (GLib.Scanner scanner, Gtk.RcStyle style, Gdk.Color color);
+       public static uint rc_parse_color_full (GLib.Scanner scanner, Gtk.RcStyle style, out Gdk.Color color);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static uint rc_parse_priority (GLib.Scanner scanner, Gtk.PathPriorityType priority);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static uint rc_parse_state (GLib.Scanner scanner, Gtk.StateType state);
+       public static uint rc_parse_state (GLib.Scanner scanner, out Gtk.StateType state);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void rc_parse_string (string rc_string);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -8342,13 +8314,13 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static unowned GLib.Scanner rc_scanner_new ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static void rc_set_default_files (string filenames);
+       public static void rc_set_default_files ([CCode (array_length = false, array_null_terminated = true)] string[] filenames);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void rgb_to_hsv (double r, double g, double b, out double h, out double s, out double v);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void selection_add_target (Gtk.Widget widget, Gdk.Atom selection, Gdk.Atom target, uint info);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static void selection_add_targets (Gtk.Widget widget, Gdk.Atom selection, Gtk.TargetEntry[] targets, uint ntargets);
+       public static void selection_add_targets (Gtk.Widget widget, Gdk.Atom selection, [CCode (array_length_pos = 3.1, array_length_type = "guint")] Gtk.TargetEntry[] targets);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static bool selection_clear (Gtk.Widget widget, Gdk.EventSelection event);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -8377,6 +8349,7 @@ namespace Gtk {
        [Deprecated (replacement = "Gtk.Stock.list_ids", since = "vala-0.12")]
        public static GLib.SList<string> stock_list_ids ();
        [CCode (cheader_filename = "gtk/gtk.h")]
+       [Deprecated (replacement = "Gtk.Stock.set_translate_func", since = "vala-0.26")]
        public static void stock_set_translate_func (string domain, owned Gtk.TranslateFunc func);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void target_table_free (Gtk.TargetEntry[] targets);
@@ -8395,7 +8368,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static unowned Gtk.Widget test_create_widget (GLib.Type widget_type, ...);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned Gtk.Widget test_display_button_window (string window_title, string dialog_text);
+       public static Gtk.Widget test_display_button_window (string window_title, string dialog_text, ...);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static unowned Gtk.Widget test_find_label (Gtk.Widget widget, string label_pattern);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -8404,8 +8377,8 @@ namespace Gtk {
        public static unowned Gtk.Widget test_find_widget (Gtk.Widget widget, string label_pattern, GLib.Type widget_type);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void test_init ([CCode (array_length_pos = 0.9)] ref unowned string[] argvp, ...);
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned GLib.Type[] test_list_all_types (uint n_types);
+       [CCode (array_length = false, array_length_type = "guint", array_null_terminated = true, cheader_filename = "gtk/gtk.h")]
+       public static unowned GLib.Type[] test_list_all_types ();
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void test_register_all_types ();
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -8415,7 +8388,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static bool test_spin_button_click (Gtk.SpinButton spinner, uint button, bool upwards);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string test_text_get (Gtk.Widget widget);
+       public static string test_text_get (Gtk.Widget widget);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void test_text_set (Gtk.Widget widget, string str);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -8423,7 +8396,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static bool test_widget_send_key (Gtk.Widget widget, uint keyval, Gdk.ModifierType modifiers);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static bool tree_get_row_drag_data (Gtk.SelectionData selection_data, out unowned Gtk.TreeModel tree_model, out unowned Gtk.TreePath path);
+       public static bool tree_get_row_drag_data (Gtk.SelectionData selection_data, out Gtk.TreeModel tree_model, out Gtk.TreePath path);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static bool tree_set_row_drag_data (Gtk.SelectionData selection_data, Gtk.TreeModel tree_model, Gtk.TreePath path);
 }
index f919ba5..4a20e9f 100644 (file)
@@ -1,6 +1,6 @@
 /* gtk+-3.0.vapi generated by vapigen, do not modify. */
 
-[CCode (gir_namespace = "Gtk", gir_version = "3.0")]
+[CCode (cprefix = "Gtk", gir_namespace = "Gtk", gir_version = "3.0", lower_case_cprefix = "gtk_")]
 namespace Gtk {
        [Deprecated (since = "3.10")]
        namespace Stock {
@@ -222,17 +222,22 @@ namespace Gtk {
                public static GLib.SList<string> list_ids ();
                [CCode (cheader_filename = "gtk/gtk.h")]
                public static bool lookup (string stock_id, out Gtk.StockItem item);
+               [CCode (cheader_filename = "gtk/gtk.h")]
+               public static void set_translate_func (string domain, owned Gtk.TranslateFunc func);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_about_dialog_get_type ()")]
        public class AboutDialog : Gtk.Dialog, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public AboutDialog ();
-               public void add_credit_section (string section_name, string people);
-               public unowned string get_artists ();
-               public unowned string get_authors ();
+               public void add_credit_section (string section_name, [CCode (array_length = false, array_null_terminated = true)] string[] people);
+               [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_artists ();
+               [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_authors ();
                public unowned string get_comments ();
                public unowned string get_copyright ();
-               public unowned string get_documenters ();
+               [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_documenters ();
                public unowned string get_license ();
                public Gtk.License get_license_type ();
                public unowned Gdk.Pixbuf get_logo ();
@@ -243,11 +248,11 @@ namespace Gtk {
                public unowned string get_website ();
                public unowned string get_website_label ();
                public bool get_wrap_license ();
-               public void set_artists ([CCode (array_length = false)] string[] artists);
-               public void set_authors ([CCode (array_length = false)] string[] authors);
+               public void set_artists ([CCode (array_length = false, array_null_terminated = true)] string[] artists);
+               public void set_authors ([CCode (array_length = false, array_null_terminated = true)] string[] authors);
                public void set_comments (string comments);
                public void set_copyright (string copyright);
-               public void set_documenters ([CCode (array_length = false)] string[] documenters);
+               public void set_documenters ([CCode (array_length = false, array_null_terminated = true)] string[] documenters);
                public void set_license (string license);
                public void set_license_type (Gtk.License license_type);
                public void set_logo (Gdk.Pixbuf logo);
@@ -278,7 +283,7 @@ namespace Gtk {
                public bool wrap_license { get; set; }
                public virtual signal bool activate_link (string uri);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_accel_group_get_type ()")]
        public class AccelGroup : GLib.Object {
                [CCode (has_construct_function = false)]
                public AccelGroup ();
@@ -292,25 +297,19 @@ namespace Gtk {
                public bool get_is_locked ();
                public Gdk.ModifierType get_modifier_mask ();
                public void @lock ();
-               public unowned Gtk.AccelGroupEntry query (uint accel_key, Gdk.ModifierType accel_mods, uint n_entries);
+               [CCode (array_length_type = "guint")]
+               public unowned Gtk.AccelGroupEntry[] query (uint accel_key, Gdk.ModifierType accel_mods);
                public void unlock ();
                public bool is_locked { get; }
                public Gdk.ModifierType modifier_mask { get; }
                public virtual signal bool accel_activate (GLib.Object p0, uint p1, Gdk.ModifierType p2);
                public virtual signal void accel_changed (uint keyval, Gdk.ModifierType modifier, GLib.Closure accel_closure);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class AccelGroupEntry {
-               public GLib.Quark accel_path_quark;
-               public weak GLib.Closure closure;
-               public Gtk.AccelKey key;
-       }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_accel_label_get_type ()")]
        public class AccelLabel : Gtk.Label, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public AccelLabel (string str);
-               public void get_accel (uint accelerator_key, Gdk.ModifierType accelerator_mods);
+               public void get_accel (out uint accelerator_key, out Gdk.ModifierType accelerator_mods);
                public unowned Gtk.Widget get_accel_widget ();
                public uint get_accel_width ();
                public bool refetch ();
@@ -321,7 +320,7 @@ namespace Gtk {
                public GLib.Closure accel_closure { owned get; set; }
                public Gtk.Widget accel_widget { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_accel_map_get_type ()")]
        public class AccelMap : GLib.Object {
                [CCode (has_construct_function = false)]
                protected AccelMap ();
@@ -345,7 +344,7 @@ namespace Gtk {
        [Compact]
        public class AccelMapClass {
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_accessible_get_type ()")]
        public class Accessible : Atk.Object {
                [CCode (has_construct_function = false)]
                protected Accessible ();
@@ -359,7 +358,7 @@ namespace Gtk {
                public virtual void widget_unset ();
                public Gtk.Widget widget { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_action_get_type ()")]
        [Deprecated (replacement = "GLib.Action", since = "3.10")]
        public class Action : GLib.Object, Gtk.Buildable {
                [CCode (has_construct_function = false)]
@@ -429,7 +428,7 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void activate ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_action_bar_get_type ()")]
        public class ActionBar : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ActionBar ();
@@ -438,7 +437,7 @@ namespace Gtk {
                public void pack_start (Gtk.Widget child);
                public void set_center_widget (Gtk.Widget? center_widget);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_action_group_get_type ()")]
        [Deprecated (since = "3.10")]
        public class ActionGroup : GLib.Object, Gtk.Buildable {
                [CCode (has_construct_function = false)]
@@ -472,7 +471,7 @@ namespace Gtk {
                public virtual signal void post_activate (Gtk.Action p0);
                public virtual signal void pre_activate (Gtk.Action p0);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_adjustment_get_type ()")]
        public class Adjustment : GLib.InitiallyUnowned {
                [CCode (has_construct_function = false)]
                public Adjustment (double value, double lower, double upper, double step_increment, double page_increment, double page_size);
@@ -502,7 +501,7 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void value_changed ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_alignment_get_type ()")]
        public class Alignment : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Alignment (float xalign, float yalign, float xscale, float yscale);
@@ -526,7 +525,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public float yscale { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_app_chooser_button_get_type ()")]
        public class AppChooserButton : Gtk.ComboBox, Atk.Implementor, Gtk.Buildable, Gtk.CellLayout, Gtk.CellEditable, Gtk.AppChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public AppChooserButton (string content_type);
@@ -544,7 +543,7 @@ namespace Gtk {
                public bool show_dialog_item { get; set construct; }
                public virtual signal void custom_item_activated (string item_name);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_app_chooser_dialog_get_type ()")]
        public class AppChooserDialog : Gtk.Dialog, Atk.Implementor, Gtk.Buildable, Gtk.AppChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public AppChooserDialog (Gtk.Window parent, Gtk.DialogFlags flags, GLib.File file);
@@ -557,7 +556,7 @@ namespace Gtk {
                public GLib.File gfile { owned get; construct; }
                public string heading { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_app_chooser_widget_get_type ()")]
        public class AppChooserWidget : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable, Gtk.AppChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public AppChooserWidget (string content_type);
@@ -583,24 +582,30 @@ namespace Gtk {
                public virtual signal void application_selected (GLib.AppInfo app_info);
                public virtual signal void populate_popup (Gtk.Menu menu, GLib.AppInfo app_info);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_application_get_type ()")]
        public class Application : GLib.Application, GLib.ActionGroup, GLib.ActionMap {
                [CCode (has_construct_function = false)]
                public Application (string application_id, GLib.ApplicationFlags flags);
                public void add_accelerator (string accelerator, string action_name, GLib.Variant? parameter);
                public void add_window (Gtk.Window window);
-               public string get_accels_for_action (string detailed_action_name);
+               [CCode (array_length = false, array_null_terminated = true)]
+               public string[] get_accels_for_action (string detailed_action_name);
+               [CCode (array_length = false, array_null_terminated = true)]
+               public string[] get_actions_for_accel (string accel);
                public unowned Gtk.Window get_active_window ();
                public unowned GLib.MenuModel get_app_menu ();
+               public unowned GLib.Menu get_menu_by_id (string id);
                public unowned GLib.MenuModel get_menubar ();
                public unowned Gtk.Window get_window_by_id (uint id);
                public unowned GLib.List<weak Gtk.Window> get_windows ();
                public uint inhibit (Gtk.Window? window, Gtk.ApplicationInhibitFlags flags, string? reason);
                public bool is_inhibited (Gtk.ApplicationInhibitFlags flags);
-               public string list_action_descriptions ();
+               [CCode (array_length = false, array_null_terminated = true)]
+               public string[] list_action_descriptions ();
+               public bool prefers_app_menu ();
                public void remove_accelerator (string action_name, GLib.Variant? parameter);
                public void remove_window (Gtk.Window window);
-               public void set_accels_for_action (string detailed_action_name, string accels);
+               public void set_accels_for_action (string detailed_action_name, [CCode (array_length = false, array_null_terminated = true)] string[] accels);
                public void set_app_menu (GLib.MenuModel app_menu);
                public void set_menubar (GLib.MenuModel menubar);
                public void uninhibit (uint cookie);
@@ -612,7 +617,7 @@ namespace Gtk {
                public virtual signal void window_added (Gtk.Window window);
                public virtual signal void window_removed (Gtk.Window window);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_application_window_get_type ()")]
        public class ApplicationWindow : Gtk.Window, Atk.Implementor, Gtk.Buildable, GLib.ActionGroup, GLib.ActionMap {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ApplicationWindow (Gtk.Application application);
@@ -621,7 +626,7 @@ namespace Gtk {
                public void set_show_menubar (bool show_menubar);
                public bool show_menubar { get; set construct; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_arrow_get_type ()")]
        public class Arrow : Gtk.Misc, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Arrow (Gtk.ArrowType arrow_type, Gtk.ShadowType shadow_type);
@@ -631,12 +636,12 @@ namespace Gtk {
                [NoAccessorMethod]
                public Gtk.ShadowType shadow_type { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_arrow_accessible_get_type ()")]
        public class ArrowAccessible : Gtk.WidgetAccessible, Atk.Component, Atk.Image {
                [CCode (has_construct_function = false)]
                protected ArrowAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_aspect_frame_get_type ()")]
        public class AspectFrame : Gtk.Frame, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public AspectFrame (string? label, float xalign, float yalign, float ratio, bool obey_child);
@@ -650,7 +655,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public float yalign { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_assistant_get_type ()")]
        public class Assistant : Gtk.Window, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Assistant ();
@@ -688,10 +693,11 @@ namespace Gtk {
                public virtual signal void apply ();
                public virtual signal void cancel ();
                public virtual signal void close ();
+               public virtual signal void escape ();
                public virtual signal void prepare (Gtk.Widget page);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       public class Bin : Gtk.Container, Atk.Implementor, Gtk.Buildable {
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_bin_get_type ()")]
+       public abstract class Bin : Gtk.Container, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                protected Bin ();
                public unowned Gtk.Widget get_child ();
@@ -722,13 +728,12 @@ namespace Gtk {
                public uint parsed;
                public int priority;
                public weak string set_name;
-               [CCode (has_construct_function = false)]
-               public BindingSet (string set_name);
                public bool activate (uint keyval, Gdk.ModifierType modifiers, GLib.Object object);
                [Deprecated (since = "3.0")]
                public void add_path (Gtk.PathType path_type, string path_pattern, Gtk.PathPriorityType priority);
-               public static unowned Gtk.BindingSet by_class (void* object_class);
+               public static unowned Gtk.BindingSet by_class (GLib.ObjectClass object_class);
                public static unowned Gtk.BindingSet find (string set_name);
+               public static unowned Gtk.BindingSet @new (string name);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
        [Compact]
@@ -739,12 +744,12 @@ namespace Gtk {
                public weak Gtk.BindingSignal next;
                public weak string signal_name;
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_boolean_cell_accessible_get_type ()")]
        public class BooleanCellAccessible : Gtk.RendererCellAccessible, Atk.Action, Atk.Component {
                [CCode (has_construct_function = false)]
                protected BooleanCellAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_box_get_type ()")]
        public class Box : Gtk.Container, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Box (Gtk.Orientation orientation, int spacing);
@@ -765,7 +770,7 @@ namespace Gtk {
                public bool homogeneous { get; set; }
                public int spacing { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_builder_get_type ()")]
        public class Builder : GLib.Object {
                [CCode (has_construct_function = false)]
                public Builder ();
@@ -774,9 +779,9 @@ namespace Gtk {
                public uint add_from_file (string filename) throws GLib.Error;
                public uint add_from_resource (string resource_path) throws GLib.Error;
                public uint add_from_string (string buffer, size_t length) throws GLib.Error;
-               public uint add_objects_from_file (string filename, [CCode (array_length = false)] string[] object_ids) throws GLib.Error;
-               public uint add_objects_from_resource (string resource_path, [CCode (array_length = false)] string[] object_ids) throws GLib.Error;
-               public uint add_objects_from_string (string buffer, size_t length, [CCode (array_length = false)] string[] object_ids) throws GLib.Error;
+               public uint add_objects_from_file (string filename, [CCode (array_length = false, array_null_terminated = true)] string[] object_ids) throws GLib.Error;
+               public uint add_objects_from_resource (string resource_path, [CCode (array_length = false, array_null_terminated = true)] string[] object_ids) throws GLib.Error;
+               public uint add_objects_from_string (string buffer, size_t length, [CCode (array_length = false, array_null_terminated = true)] string[] object_ids) throws GLib.Error;
                public void connect_signals (void* user_data);
                public void connect_signals_full (Gtk.BuilderConnectFunc func);
                public static GLib.Quark error_quark ();
@@ -795,11 +800,11 @@ namespace Gtk {
                public unowned GLib.Callback lookup_callback_symbol (string callback_name);
                public void set_application (Gtk.Application application);
                public void set_translation_domain (string domain);
-               public bool value_from_string (GLib.ParamSpec pspec, string str, GLib.Value value) throws GLib.Error;
-               public bool value_from_string_type (GLib.Type type, string str, GLib.Value value) throws GLib.Error;
+               public bool value_from_string (GLib.ParamSpec pspec, string str, out GLib.Value value) throws GLib.Error;
+               public bool value_from_string_type (GLib.Type type, string str, out GLib.Value value) throws GLib.Error;
                public string translation_domain { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_button_get_type ()")]
        public class Button : Gtk.Bin, Atk.Implementor, Gtk.Buildable, Gtk.Actionable, Gtk.Activatable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Button ();
@@ -823,7 +828,7 @@ namespace Gtk {
                public void set_image (Gtk.Widget image);
                public void set_image_position (Gtk.PositionType position);
                public void set_label (string? label);
-               public void set_relief (Gtk.ReliefStyle newstyle);
+               public void set_relief (Gtk.ReliefStyle relief);
                public void set_use_stock (bool use_stock);
                public void set_use_underline (bool use_underline);
                [CCode (has_construct_function = false, type = "GtkWidget*")]
@@ -858,12 +863,12 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void released ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_button_accessible_get_type ()")]
        public class ButtonAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.Action, Atk.Image {
                [CCode (has_construct_function = false)]
                protected ButtonAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_button_box_get_type ()")]
        public class ButtonBox : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ButtonBox (Gtk.Orientation orientation);
@@ -876,7 +881,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public Gtk.ButtonBoxStyle layout_style { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_calendar_get_type ()")]
        public class Calendar : Gtk.Widget, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Calendar ();
@@ -920,15 +925,15 @@ namespace Gtk {
                public virtual signal void prev_month ();
                public virtual signal void prev_year ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_accessible_get_type ()")]
        public class CellAccessible : Gtk.Accessible, Atk.Action, Atk.Component {
                [CCode (has_construct_function = false)]
                protected CellAccessible ();
                [NoWrapper]
                public virtual void update_cache ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       public class CellArea : GLib.InitiallyUnowned, Gtk.CellLayout, Gtk.Buildable {
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_area_get_type ()")]
+       public abstract class CellArea : GLib.InitiallyUnowned, Gtk.CellLayout, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                protected CellArea ();
                public virtual bool activate (Gtk.CellAreaContext context, Gtk.Widget widget, Gdk.Rectangle cell_area, Gtk.CellRendererState flags, bool edit_only);
@@ -938,22 +943,23 @@ namespace Gtk {
                public void add_with_properties (Gtk.CellRenderer renderer, ...);
                public void attribute_connect (Gtk.CellRenderer renderer, string attribute, int column);
                public void attribute_disconnect (Gtk.CellRenderer renderer, string attribute);
+               public int attribute_get_column (Gtk.CellRenderer renderer, string attribute);
                public void cell_get (Gtk.CellRenderer renderer, ...);
                public void cell_get_property (Gtk.CellRenderer renderer, string property_name, GLib.Value value);
-               public void cell_get_valist (Gtk.CellRenderer renderer, string first_property_name, void* var_args);
+               public void cell_get_valist (Gtk.CellRenderer renderer, string first_property_name, va_list var_args);
                public void cell_set (Gtk.CellRenderer renderer, ...);
                public void cell_set_property (Gtk.CellRenderer renderer, string property_name, GLib.Value value);
-               public void cell_set_valist (Gtk.CellRenderer renderer, string first_property_name, void* var_args);
-               public virtual unowned Gtk.CellAreaContext copy_context (Gtk.CellAreaContext context);
-               public virtual unowned Gtk.CellAreaContext create_context ();
+               public void cell_set_valist (Gtk.CellRenderer renderer, string first_property_name, va_list var_args);
+               public virtual Gtk.CellAreaContext copy_context (Gtk.CellAreaContext context);
+               public virtual Gtk.CellAreaContext create_context ();
                public virtual int event (Gtk.CellAreaContext context, Gtk.Widget widget, Gdk.Event event, Gdk.Rectangle cell_area, Gtk.CellRendererState flags);
                [CCode (cname = "gtk_cell_area_class_find_cell_property")]
                public class unowned GLib.ParamSpec find_cell_property (string property_name);
                public virtual bool focus (Gtk.DirectionType direction);
                public virtual void @foreach (Gtk.CellCallback callback);
-               public virtual void foreach_alloc (Gtk.CellAreaContext context, Gtk.Widget widget, Gdk.Rectangle cell_area, Gdk.Rectangle background_area, Gtk.CellAllocCallback callback, void* callback_data);
-               public void get_cell_allocation (Gtk.CellAreaContext context, Gtk.Widget widget, Gtk.CellRenderer renderer, Gdk.Rectangle cell_area, Gdk.Rectangle allocation);
-               public unowned Gtk.CellRenderer get_cell_at_position (Gtk.CellAreaContext context, Gtk.Widget widget, Gdk.Rectangle cell_area, int x, int y, Gdk.Rectangle alloc_area);
+               public virtual void foreach_alloc (Gtk.CellAreaContext context, Gtk.Widget widget, Gdk.Rectangle cell_area, Gdk.Rectangle background_area, Gtk.CellAllocCallback callback);
+               public Gdk.Rectangle get_cell_allocation (Gtk.CellAreaContext context, Gtk.Widget widget, Gtk.CellRenderer renderer, Gdk.Rectangle cell_area);
+               public unowned Gtk.CellRenderer get_cell_at_position (Gtk.CellAreaContext context, Gtk.Widget widget, Gdk.Rectangle cell_area, int x, int y, out Gdk.Rectangle alloc_area);
                [NoWrapper]
                public virtual void get_cell_property (Gtk.CellRenderer renderer, uint property_id, GLib.Value value, GLib.ParamSpec pspec);
                public unowned string get_current_path_string ();
@@ -961,14 +967,14 @@ namespace Gtk {
                public unowned Gtk.CellRenderer get_edited_cell ();
                public unowned Gtk.CellRenderer get_focus_cell ();
                public unowned Gtk.CellRenderer get_focus_from_sibling (Gtk.CellRenderer renderer);
-               public unowned GLib.List get_focus_siblings (Gtk.CellRenderer renderer);
+               public unowned GLib.List<Gtk.CellRenderer> get_focus_siblings (Gtk.CellRenderer renderer);
                public virtual void get_preferred_height (Gtk.CellAreaContext context, Gtk.Widget widget, out int minimum_height, out int natural_height);
                public virtual void get_preferred_height_for_width (Gtk.CellAreaContext context, Gtk.Widget widget, int width, out int minimum_height, out int natural_height);
                public virtual void get_preferred_width (Gtk.CellAreaContext context, Gtk.Widget widget, out int minimum_width, out int natural_width);
                public virtual void get_preferred_width_for_height (Gtk.CellAreaContext context, Gtk.Widget widget, int height, out int minimum_width, out int natural_width);
                public virtual Gtk.SizeRequestMode get_request_mode ();
                public bool has_renderer (Gtk.CellRenderer renderer);
-               public void inner_cell_area (Gtk.Widget widget, Gdk.Rectangle cell_area, Gdk.Rectangle inner_area);
+               public Gdk.Rectangle inner_cell_area (Gtk.Widget widget, Gdk.Rectangle cell_area);
                [CCode (cname = "gtk_cell_area_class_install_cell_property")]
                public class void install_cell_property (uint property_id, GLib.ParamSpec pspec);
                public virtual bool is_activatable ();
@@ -978,7 +984,7 @@ namespace Gtk {
                public virtual void remove (Gtk.CellRenderer renderer);
                public void remove_focus_sibling (Gtk.CellRenderer renderer, Gtk.CellRenderer sibling);
                public virtual void render (Gtk.CellAreaContext context, Gtk.Widget widget, Cairo.Context cr, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gtk.CellRendererState flags, bool paint_focus);
-               public void request_renderer (Gtk.CellRenderer renderer, Gtk.Orientation orientation, Gtk.Widget widget, int for_size, int minimum_size, int natural_size);
+               public void request_renderer (Gtk.CellRenderer renderer, Gtk.Orientation orientation, Gtk.Widget widget, int for_size, out int minimum_size, out int natural_size);
                [NoWrapper]
                public virtual void set_cell_property (Gtk.CellRenderer renderer, uint property_id, GLib.Value value, GLib.ParamSpec pspec);
                public void set_focus_cell (Gtk.CellRenderer renderer);
@@ -992,7 +998,7 @@ namespace Gtk {
                public virtual signal void focus_changed (Gtk.CellRenderer p0, string p1);
                public virtual signal void remove_editable (Gtk.CellRenderer p0, Gtk.CellEditable p1);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_area_box_get_type ()")]
        public class CellAreaBox : Gtk.CellArea, Gtk.CellLayout, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkCellArea*")]
                public CellAreaBox ();
@@ -1000,12 +1006,12 @@ namespace Gtk {
                public void set_spacing (int spacing);
                public int spacing { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_area_context_get_type ()")]
        public class CellAreaContext : GLib.Object {
                [CCode (has_construct_function = false)]
                protected CellAreaContext ();
                public virtual void allocate (int width, int height);
-               public void get_allocation (int width, int height);
+               public void get_allocation (out int width, out int height);
                public unowned Gtk.CellArea get_area ();
                public void get_preferred_height (out int minimum_height, out int natural_height);
                public virtual void get_preferred_height_for_width (int width, out int minimum_height, out int natural_height);
@@ -1024,7 +1030,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public int natural_width { get; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_renderer_get_type ()")]
        public abstract class CellRenderer : GLib.InitiallyUnowned {
                [CCode (has_construct_function = false)]
                protected CellRenderer ();
@@ -1090,7 +1096,7 @@ namespace Gtk {
                public virtual signal void editing_canceled ();
                public virtual signal void editing_started (Gtk.CellEditable editable, string path);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_renderer_accel_get_type ()")]
        public class CellRendererAccel : Gtk.CellRendererText {
                [CCode (has_construct_function = false, type = "GtkCellRenderer*")]
                public CellRendererAccel ();
@@ -1105,7 +1111,7 @@ namespace Gtk {
                public virtual signal void accel_cleared (string path_string);
                public virtual signal void accel_edited (string path_string, uint accel_key, Gdk.ModifierType accel_mods, uint hardware_keycode);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_renderer_combo_get_type ()")]
        public class CellRendererCombo : Gtk.CellRendererText {
                [CCode (has_construct_function = false, type = "GtkCellRenderer*")]
                public CellRendererCombo ();
@@ -1117,7 +1123,7 @@ namespace Gtk {
                public int text_column { get; set; }
                public virtual signal void changed (string p0, Gtk.TreeIter p1);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_renderer_pixbuf_get_type ()")]
        public class CellRendererPixbuf : Gtk.CellRenderer {
                [CCode (has_construct_function = false, type = "GtkCellRenderer*")]
                public CellRendererPixbuf ();
@@ -1142,7 +1148,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public Cairo.Surface surface { owned get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_renderer_progress_get_type ()")]
        public class CellRendererProgress : Gtk.CellRenderer, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkCellRenderer*")]
                public CellRendererProgress ();
@@ -1159,7 +1165,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public int value { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_renderer_spin_get_type ()")]
        public class CellRendererSpin : Gtk.CellRendererText {
                [CCode (has_construct_function = false, type = "GtkCellRenderer*")]
                public CellRendererSpin ();
@@ -1170,7 +1176,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public uint digits { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_renderer_spinner_get_type ()")]
        public class CellRendererSpinner : Gtk.CellRenderer {
                [CCode (has_construct_function = false, type = "GtkCellRenderer*")]
                public CellRendererSpinner ();
@@ -1181,7 +1187,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public Gtk.IconSize size { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_renderer_text_get_type ()")]
        public class CellRendererText : Gtk.CellRenderer {
                [CCode (has_construct_function = false, type = "GtkCellRenderer*")]
                public CellRendererText ();
@@ -1286,7 +1292,7 @@ namespace Gtk {
                public int wrap_width { get; set; }
                public virtual signal void edited (string path, string new_text);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_renderer_toggle_get_type ()")]
        public class CellRendererToggle : Gtk.CellRenderer {
                [CCode (has_construct_function = false, type = "GtkCellRenderer*")]
                public CellRendererToggle ();
@@ -1305,11 +1311,11 @@ namespace Gtk {
                public bool radio { get; set; }
                public virtual signal void toggled (string path);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_cell_view_get_type ()")]
        public class CellView : Gtk.Widget, Atk.Implementor, Gtk.Buildable, Gtk.CellLayout, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public CellView ();
-               public unowned Gtk.TreePath get_displayed_row ();
+               public Gtk.TreePath get_displayed_row ();
                public bool get_draw_sensitive ();
                public bool get_fit_model ();
                public unowned Gtk.TreeModel get_model ();
@@ -1346,7 +1352,7 @@ namespace Gtk {
                public bool fit_model { get; set; }
                public Gtk.TreeModel model { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_check_button_get_type ()")]
        public class CheckButton : Gtk.ToggleButton, Atk.Implementor, Gtk.Buildable, Gtk.Actionable, Gtk.Activatable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public CheckButton ();
@@ -1357,7 +1363,7 @@ namespace Gtk {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public CheckButton.with_mnemonic (string label);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_check_menu_item_get_type ()")]
        public class CheckMenuItem : Gtk.MenuItem, Atk.Implementor, Gtk.Buildable, Gtk.Activatable, Gtk.Actionable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public CheckMenuItem ();
@@ -1379,12 +1385,12 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void toggled ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_check_menu_item_accessible_get_type ()")]
        public class CheckMenuItemAccessible : Gtk.MenuItemAccessible, Atk.Component, Atk.Action, Atk.Selection {
                [CCode (has_construct_function = false)]
                protected CheckMenuItemAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_clipboard_get_type ()")]
        public class Clipboard : GLib.Object {
                [CCode (has_construct_function = false)]
                protected Clipboard ();
@@ -1420,7 +1426,7 @@ namespace Gtk {
                public bool wait_is_uris_available ();
                public virtual signal void owner_change (Gdk.Event p0);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_color_button_get_type ()")]
        public class ColorButton : Gtk.Button, Atk.Implementor, Gtk.Buildable, Gtk.Actionable, Gtk.Activatable, Gtk.ColorChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ColorButton ();
@@ -1444,36 +1450,36 @@ namespace Gtk {
                public bool use_alpha { get; set; }
                public virtual signal void color_set ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_color_chooser_dialog_get_type ()")]
        public class ColorChooserDialog : Gtk.Dialog, Atk.Implementor, Gtk.Buildable, Gtk.ColorChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ColorChooserDialog (string? title, Gtk.Window? parent);
                [NoAccessorMethod]
                public bool show_editor { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_color_chooser_widget_get_type ()")]
        public class ColorChooserWidget : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable, Gtk.ColorChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ColorChooserWidget ();
                [NoAccessorMethod]
                public bool show_editor { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_color_selection_get_type ()")]
        public class ColorSelection : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ColorSelection ();
                public uint16 get_current_alpha ();
                [Deprecated (replacement = "get_current_rgba", since = "3.4")]
                public void get_current_color (out Gdk.Color color);
-               public void get_current_rgba (Gdk.RGBA rgba);
+               public Gdk.RGBA get_current_rgba ();
                public bool get_has_opacity_control ();
                public bool get_has_palette ();
                public uint16 get_previous_alpha ();
                public void get_previous_color (out Gdk.Color color);
-               public void get_previous_rgba (Gdk.RGBA rgba);
+               public Gdk.RGBA get_previous_rgba ();
                public bool is_adjusting ();
-               public static bool palette_from_string (string str, Gdk.Color[] colors);
-               public static unowned string palette_to_string (Gdk.Color[] colors);
+               public static bool palette_from_string (string str, out Gdk.Color[] colors);
+               public static string palette_to_string (Gdk.Color[] colors);
                public static unowned Gtk.ColorSelectionChangePaletteWithScreenFunc set_change_palette_with_screen_hook (Gtk.ColorSelectionChangePaletteWithScreenFunc func);
                public void set_current_alpha (uint16 alpha);
                [Deprecated (replacement = "set_current_rgba", since = "3.4")]
@@ -1485,13 +1491,14 @@ namespace Gtk {
                public void set_previous_color (Gdk.Color color);
                public void set_previous_rgba (Gdk.RGBA rgba);
                public uint current_alpha { get; set; }
+               [Deprecated (replacement = "current_rgba", since = "3.4")]
                public Gdk.Color current_color { get; set; }
                public Gdk.RGBA current_rgba { get; set; }
                public bool has_opacity_control { get; set; }
                public bool has_palette { get; set; }
                public virtual signal void color_changed ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_color_selection_dialog_get_type ()")]
        public class ColorSelectionDialog : Gtk.Dialog, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ColorSelectionDialog (string title);
@@ -1504,7 +1511,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public Gtk.Widget ok_button { owned get; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_combo_box_get_type ()")]
        public class ComboBox : Gtk.Bin, Atk.Implementor, Gtk.Buildable, Gtk.CellLayout, Gtk.CellEditable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ComboBox ();
@@ -1573,25 +1580,25 @@ namespace Gtk {
                public string tearoff_title { owned get; set; }
                public int wrap_width { get; set; }
                public virtual signal void changed ();
-               public virtual signal unowned string format_entry_text (string path);
+               public virtual signal string format_entry_text (string path);
                public virtual signal void move_active (Gtk.ScrollType p0);
                [HasEmitter]
                public virtual signal bool popdown ();
                [HasEmitter]
                public virtual signal void popup ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_combo_box_accessible_get_type ()")]
        public class ComboBoxAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.Action, Atk.Selection {
                [CCode (has_construct_function = false)]
                protected ComboBoxAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_combo_box_text_get_type ()")]
        public class ComboBoxText : Gtk.ComboBox, Atk.Implementor, Gtk.Buildable, Gtk.CellLayout, Gtk.CellEditable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ComboBoxText ();
                public void append (string id, string text);
                public void append_text (string text);
-               public unowned string get_active_text ();
+               public string get_active_text ();
                public void insert (int position, string id, string text);
                public void insert_text (int position, string text);
                public void prepend (string id, string text);
@@ -1601,18 +1608,18 @@ namespace Gtk {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ComboBoxText.with_entry ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       public class Container : Gtk.Widget, Atk.Implementor, Gtk.Buildable {
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_container_get_type ()")]
+       public abstract class Container : Gtk.Widget, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                protected Container ();
                public void add_with_properties (Gtk.Widget widget, ...);
                public void child_get (Gtk.Widget child, ...);
                public void child_get_property (Gtk.Widget child, string property_name, GLib.Value value);
-               public void child_get_valist (Gtk.Widget child, string first_property_name, void* var_args);
+               public void child_get_valist (Gtk.Widget child, string first_property_name, va_list var_args);
                public void child_notify (Gtk.Widget child, string child_property);
                public void child_set (Gtk.Widget child, ...);
                public void child_set_property (Gtk.Widget child, string property_name, GLib.Value value);
-               public void child_set_valist (Gtk.Widget child, string first_property_name, void* var_args);
+               public void child_set_valist (Gtk.Widget child, string first_property_name, va_list var_args);
                public virtual GLib.Type child_type ();
                public static unowned GLib.ParamSpec class_find_child_property (GLib.ObjectClass cclass, string property_name);
                public static unowned GLib.ParamSpec class_list_child_properties (GLib.ObjectClass cclass, uint n_properties);
@@ -1627,11 +1634,11 @@ namespace Gtk {
                [NoWrapper]
                public virtual void get_child_property (Gtk.Widget child, uint property_id, GLib.Value value, GLib.ParamSpec pspec);
                public GLib.List<weak Gtk.Widget> get_children ();
-               public bool get_focus_chain (out GLib.List<Gtk.Widget> focusable_widgets);
+               public bool get_focus_chain (out GLib.List<weak Gtk.Widget> focusable_widgets);
                public unowned Gtk.Widget get_focus_child ();
                public unowned Gtk.Adjustment get_focus_hadjustment ();
                public unowned Gtk.Adjustment get_focus_vadjustment ();
-               public virtual unowned Gtk.WidgetPath get_path_for_child (Gtk.Widget child);
+               public virtual Gtk.WidgetPath get_path_for_child (Gtk.Widget child);
                public Gtk.ResizeMode get_resize_mode ();
                [CCode (cname = "gtk_container_class_handle_border_width")]
                public class void handle_border_width ();
@@ -1661,7 +1668,7 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void set_focus_child (Gtk.Widget? child);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_container_accessible_get_type ()")]
        public class ContainerAccessible : Gtk.WidgetAccessible, Atk.Component {
                [CCode (has_construct_function = false)]
                protected ContainerAccessible ();
@@ -1670,12 +1677,12 @@ namespace Gtk {
                [NoWrapper]
                public virtual int remove_gtk (Gtk.Container container, Gtk.Widget widget, void* data);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_container_cell_accessible_get_type ()")]
        public class ContainerCellAccessible : Gtk.CellAccessible, Atk.Action, Atk.Component {
                [CCode (has_construct_function = false)]
                public ContainerCellAccessible ();
                public void add_child (Gtk.CellAccessible child);
-               public unowned GLib.List get_children ();
+               public unowned GLib.List<Gtk.CellAccessible> get_children ();
                public void remove_child (Gtk.CellAccessible child);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -1688,7 +1695,7 @@ namespace Gtk {
                public bool load_from_data (string data, ssize_t length) throws GLib.Error;
                public bool load_from_file (GLib.File file) throws GLib.Error;
                public bool load_from_path (string path) throws GLib.Error;
-               public unowned string to_string ();
+               public string to_string ();
                public virtual signal void parsing_error (Gtk.CssSection section, GLib.Error error);
        }
        [CCode (cheader_filename = "gtk/gtk.h", ref_function = "gtk_css_section_ref", type_id = "gtk_css_section_get_type ()", unref_function = "gtk_css_section_unref")]
@@ -1702,7 +1709,7 @@ namespace Gtk {
                public uint get_start_line ();
                public uint get_start_position ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_dialog_get_type ()")]
        public class Dialog : Gtk.Window, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Dialog ();
@@ -1718,7 +1725,7 @@ namespace Gtk {
                public int run ();
                [CCode (sentinel = "-1")]
                public void set_alternative_button_order (...);
-               public void set_alternative_button_order_from_array (int n_params, int new_order);
+               public void set_alternative_button_order_from_array ([CCode (array_length_pos = 0.5)] int[] new_order);
                public void set_default_response (int response_id);
                public void set_response_sensitive (int response_id, bool setting);
                [CCode (has_construct_function = false, type = "GtkWidget*")]
@@ -1729,13 +1736,12 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void response (int response_id);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_drawing_area_get_type ()")]
        public class DrawingArea : Gtk.Widget, Atk.Implementor, Gtk.Buildable {
-               public void* dummy;
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public DrawingArea ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_entry_get_type ()")]
        public class Entry : Gtk.Widget, Atk.Implementor, Gtk.Buildable, Gtk.Editable, Gtk.CellEditable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Entry ();
@@ -1750,7 +1756,7 @@ namespace Gtk {
                public virtual void get_frame_size (int x, int y, int width, int height);
                public bool get_has_frame ();
                public bool get_icon_activatable (Gtk.EntryIconPosition icon_pos);
-               public void get_icon_area (Gtk.EntryIconPosition icon_pos, Gdk.Rectangle icon_area);
+               public Gdk.Rectangle get_icon_area (Gtk.EntryIconPosition icon_pos);
                public int get_icon_at_pos (int x, int y);
                public unowned GLib.Icon get_icon_gicon (Gtk.EntryIconPosition icon_pos);
                public unowned string get_icon_name (Gtk.EntryIconPosition icon_pos);
@@ -1758,8 +1764,8 @@ namespace Gtk {
                public bool get_icon_sensitive (Gtk.EntryIconPosition icon_pos);
                public unowned string get_icon_stock (Gtk.EntryIconPosition icon_pos);
                public Gtk.ImageType get_icon_storage_type (Gtk.EntryIconPosition icon_pos);
-               public unowned string get_icon_tooltip_markup (Gtk.EntryIconPosition icon_pos);
-               public unowned string get_icon_tooltip_text (Gtk.EntryIconPosition icon_pos);
+               public string? get_icon_tooltip_markup (Gtk.EntryIconPosition icon_pos);
+               public string? get_icon_tooltip_text (Gtk.EntryIconPosition icon_pos);
                public unowned Gtk.Border? get_inner_border ();
                public Gtk.InputHints get_input_hints ();
                public Gtk.InputPurpose get_input_purpose ();
@@ -1912,12 +1918,12 @@ namespace Gtk {
                public virtual signal void preedit_changed (string p0);
                public virtual signal void toggle_overwrite ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_entry_accessible_get_type ()")]
        public class EntryAccessible : Gtk.WidgetAccessible, Atk.Component, Atk.EditableText, Atk.Text, Atk.Action {
                [CCode (has_construct_function = false)]
                protected EntryAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_entry_buffer_get_type ()")]
        public class EntryBuffer : GLib.Object {
                [CCode (has_construct_function = false)]
                public EntryBuffer (uint8[] initial_chars);
@@ -1937,12 +1943,12 @@ namespace Gtk {
                public virtual signal void deleted_text (uint position, uint n_chars);
                public virtual signal void inserted_text (uint position, string chars, uint n_chars);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_entry_completion_get_type ()")]
        public class EntryCompletion : GLib.Object, Gtk.CellLayout, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                public EntryCompletion ();
                public void complete ();
-               public unowned string compute_prefix (string key);
+               public string compute_prefix (string key);
                public void delete_action (int index_);
                public unowned string get_completion_prefix ();
                public unowned Gtk.Widget get_entry ();
@@ -1982,13 +1988,14 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal bool insert_prefix (string prefix);
                public virtual signal bool match_selected (Gtk.TreeModel model, Gtk.TreeIter iter);
+               public virtual signal void no_matches ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_entry_icon_accessible_get_type ()")]
        public class EntryIconAccessible : Atk.Object, Atk.Action, Atk.Component {
                [CCode (has_construct_function = false)]
                protected EntryIconAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_event_box_get_type ()")]
        public class EventBox : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public EventBox ();
@@ -1999,7 +2006,19 @@ namespace Gtk {
                public bool above_child { get; set; }
                public bool visible_window { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_event_controller_get_type ()")]
+       public abstract class EventController : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected EventController ();
+               public Gtk.PropagationPhase get_propagation_phase ();
+               public unowned Gtk.Widget get_widget ();
+               public bool handle_event (Gdk.Event event);
+               public void reset ();
+               public void set_propagation_phase (Gtk.PropagationPhase phase);
+               public Gtk.PropagationPhase propagation_phase { get; set; }
+               public Gtk.Widget widget { get; construct; }
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_expander_get_type ()")]
        public class Expander : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Expander (string label);
@@ -2031,12 +2050,12 @@ namespace Gtk {
                public bool use_underline { get; set construct; }
                public virtual signal void activate ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_expander_accessible_get_type ()")]
        public class ExpanderAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.Action {
                [CCode (has_construct_function = false)]
                protected ExpanderAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_file_chooser_button_get_type ()")]
        public class FileChooserButton : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable, Gtk.FileChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public FileChooserButton (string title, Gtk.FileChooserAction action);
@@ -2054,12 +2073,12 @@ namespace Gtk {
                public int width_chars { get; set; }
                public virtual signal void file_set ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_file_chooser_dialog_get_type ()")]
        public class FileChooserDialog : Gtk.Dialog, Atk.Implementor, Gtk.Buildable, Gtk.FileChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public FileChooserDialog (string? title, Gtk.Window? parent, Gtk.FileChooserAction action, ...);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_file_chooser_widget_get_type ()")]
        public class FileChooserWidget : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable, Gtk.FileChooser, Gtk.FileChooserEmbed {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public FileChooserWidget (Gtk.FileChooserAction action);
@@ -2075,7 +2094,7 @@ namespace Gtk {
                public virtual signal void show_hidden ();
                public virtual signal void up_folder ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_file_filter_get_type ()")]
        public class FileFilter : GLib.InitiallyUnowned, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                public FileFilter ();
@@ -2099,7 +2118,7 @@ namespace Gtk {
                public weak string mime_type;
                public weak string uri;
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_fixed_get_type ()")]
        public class Fixed : Gtk.Container, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Fixed ();
@@ -2113,7 +2132,7 @@ namespace Gtk {
                public int x;
                public int y;
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_flow_box_get_type ()")]
        public class FlowBox : Gtk.Container, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public FlowBox ();
@@ -2130,7 +2149,7 @@ namespace Gtk {
                public void invalidate_filter ();
                public void invalidate_sort ();
                public void select_child (Gtk.FlowBoxChild child);
-               public void selected_foreach (owned Gtk.FlowBoxForeachFunc? func);
+               public void selected_foreach (Gtk.FlowBoxForeachFunc func);
                public void set_activate_on_single_click (bool single);
                public void set_column_spacing (uint spacing);
                public void set_filter_func (owned Gtk.FlowBoxFilterFunc? filter_func);
@@ -2160,12 +2179,12 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void unselect_all ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_flow_box_accessible_get_type ()")]
        public class FlowBoxAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.Selection {
                [CCode (has_construct_function = false)]
                protected FlowBoxAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_flow_box_child_get_type ()")]
        public class FlowBoxChild : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public FlowBoxChild ();
@@ -2174,12 +2193,12 @@ namespace Gtk {
                public bool is_selected ();
                public virtual signal void activate ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_flow_box_child_accessible_get_type ()")]
        public class FlowBoxChildAccessible : Gtk.ContainerAccessible, Atk.Component {
                [CCode (has_construct_function = false)]
                protected FlowBoxChildAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_font_button_get_type ()")]
        public class FontButton : Gtk.Button, Atk.Implementor, Gtk.Buildable, Gtk.Actionable, Gtk.Activatable, Gtk.FontChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public FontButton ();
@@ -2205,17 +2224,17 @@ namespace Gtk {
                public bool use_size { get; set; }
                public virtual signal void font_set ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_font_chooser_dialog_get_type ()")]
        public class FontChooserDialog : Gtk.Dialog, Atk.Implementor, Gtk.Buildable, Gtk.FontChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public FontChooserDialog (string? title, Gtk.Window? parent);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_font_chooser_widget_get_type ()")]
        public class FontChooserWidget : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable, Gtk.FontChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public FontChooserWidget ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_font_selection_get_type ()")]
        public class FontSelection : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public FontSelection ();
@@ -2223,7 +2242,7 @@ namespace Gtk {
                public unowned Gtk.Widget get_face_list ();
                public unowned Pango.FontFamily get_family ();
                public unowned Gtk.Widget get_family_list ();
-               public unowned string get_font_name ();
+               public string get_font_name ();
                public unowned Gtk.Widget get_preview_entry ();
                public unowned string get_preview_text ();
                public int get_size ();
@@ -2231,30 +2250,30 @@ namespace Gtk {
                public unowned Gtk.Widget get_size_list ();
                public bool set_font_name (string fontname);
                public void set_preview_text (string text);
-               public string font_name { get; set; }
+               public string font_name { owned get; set; }
                public string preview_text { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_font_selection_dialog_get_type ()")]
        [Deprecated (replacement = "FontChooserDialog", since = "3.2")]
        public class FontSelectionDialog : Gtk.Dialog, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public FontSelectionDialog (string title);
                public unowned Gtk.Widget get_cancel_button ();
-               public unowned string get_font_name ();
+               public string get_font_name ();
                public unowned Gtk.Widget get_font_selection ();
                public unowned Gtk.Widget get_ok_button ();
                public unowned string get_preview_text ();
                public bool set_font_name (string fontname);
                public void set_preview_text (string text);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_frame_get_type ()")]
        public class Frame : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Frame (string? label);
                [NoWrapper]
                public virtual void compute_child_allocation (Gtk.Allocation allocation);
                public unowned string get_label ();
-               public void get_label_align (float xalign, float yalign);
+               public void get_label_align (out float xalign, out float yalign);
                public unowned Gtk.Widget? get_label_widget ();
                public Gtk.ShadowType get_shadow_type ();
                public void set_label (string? label);
@@ -2269,11 +2288,116 @@ namespace Gtk {
                public float label_yalign { get; set; }
                public Gtk.ShadowType shadow_type { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_frame_accessible_get_type ()")]
        public class FrameAccessible : Gtk.ContainerAccessible, Atk.Component {
                [CCode (has_construct_function = false)]
                protected FrameAccessible ();
        }
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_gesture_get_type ()")]
+       public abstract class Gesture : Gtk.EventController {
+               [CCode (has_construct_function = false)]
+               protected Gesture ();
+               public bool get_bounding_box (out Gdk.Rectangle rect);
+               public bool get_bounding_box_center (out double x, out double y);
+               public unowned Gdk.Device? get_device ();
+               public GLib.List<weak Gtk.Gesture> get_group ();
+               public unowned Gdk.Event get_last_event (Gdk.EventSequence sequence);
+               public unowned Gdk.EventSequence get_last_updated_sequence ();
+               public bool get_point (Gdk.EventSequence? sequence, out double? x = null, out double? y = null);
+               public Gtk.EventSequenceState get_sequence_state (Gdk.EventSequence sequence);
+               public GLib.List<weak Gdk.EventSequence> get_sequences ();
+               public unowned Gdk.Window? get_window ();
+               public void group (Gtk.Gesture gesture);
+               public bool handles_sequence (Gdk.EventSequence sequence);
+               public bool is_active ();
+               public bool is_grouped_with (Gtk.Gesture other);
+               public bool is_recognized ();
+               public bool set_sequence_state (Gdk.EventSequence sequence, Gtk.EventSequenceState state);
+               public bool set_state (Gtk.EventSequenceState state);
+               public void set_window (Gdk.Window? window);
+               public void ungroup ();
+               [NoAccessorMethod]
+               public uint n_points { get; construct; }
+               public Gdk.Window window { get; set; }
+               public virtual signal void begin (Gdk.EventSequence p0);
+               public virtual signal void cancel (Gdk.EventSequence p0);
+               public virtual signal void end (Gdk.EventSequence p0);
+               public virtual signal void sequence_state_changed (Gdk.EventSequence p0, Gtk.EventSequenceState p1);
+               public virtual signal void update (Gdk.EventSequence p0);
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_gesture_drag_get_type ()")]
+       public class GestureDrag : Gtk.GestureSingle {
+               [CCode (has_construct_function = false, type = "GtkGesture*")]
+               public GestureDrag (Gtk.Widget widget);
+               public bool get_offset (out double x, out double y);
+               public bool get_start_point (out double x, out double y);
+               public virtual signal void drag_begin (double p0, double p1);
+               public virtual signal void drag_end (double p0, double p1);
+               public virtual signal void drag_update (double p0, double p1);
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_gesture_long_press_get_type ()")]
+       public class GestureLongPress : Gtk.GestureSingle {
+               [CCode (has_construct_function = false, type = "GtkGesture*")]
+               public GestureLongPress (Gtk.Widget widget);
+               public virtual signal void cancelled ();
+               public virtual signal void pressed (double p0, double p1);
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_gesture_multi_press_get_type ()")]
+       public class GestureMultiPress : Gtk.GestureSingle {
+               [CCode (has_construct_function = false, type = "GtkGesture*")]
+               public GestureMultiPress (Gtk.Widget widget);
+               public bool get_area (out Gdk.Rectangle rect);
+               public void set_area (Gdk.Rectangle rect);
+               public virtual signal void pressed (int p0, double p1, double p2);
+               public virtual signal void released (int p0, double p1, double p2);
+               public virtual signal void stopped ();
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_gesture_pan_get_type ()")]
+       public class GesturePan : Gtk.GestureDrag {
+               [CCode (has_construct_function = false, type = "GtkGesture*")]
+               public GesturePan (Gtk.Widget widget, Gtk.Orientation orientation);
+               public Gtk.Orientation get_orientation ();
+               public void set_orientation (Gtk.Orientation orientation);
+               public Gtk.Orientation orientation { get; set; }
+               public virtual signal void pan (Gtk.PanDirection p0, double p1);
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_gesture_rotate_get_type ()")]
+       public class GestureRotate : Gtk.Gesture {
+               [CCode (has_construct_function = false, type = "GtkGesture*")]
+               public GestureRotate (Gtk.Widget widget);
+               public double get_angle_delta ();
+               public virtual signal void angle_changed (double p0, double p1);
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_gesture_single_get_type ()")]
+       public class GestureSingle : Gtk.Gesture {
+               [CCode (has_construct_function = false)]
+               protected GestureSingle ();
+               public uint get_button ();
+               public uint get_current_button ();
+               public Gdk.EventSequence get_current_sequence ();
+               public bool get_exclusive ();
+               public bool get_touch_only ();
+               public void set_button (uint button);
+               public void set_exclusive (bool exclusive);
+               public void set_touch_only (bool touch_only);
+               public uint button { get; set; }
+               public bool exclusive { get; set; }
+               public bool touch_only { get; set; }
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_gesture_swipe_get_type ()")]
+       public class GestureSwipe : Gtk.GestureSingle {
+               [CCode (has_construct_function = false, type = "GtkGesture*")]
+               public GestureSwipe (Gtk.Widget widget);
+               public bool get_velocity (out double velocity_x, out double velocity_y);
+               public virtual signal void swipe (double p0, double p1);
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_gesture_zoom_get_type ()")]
+       public class GestureZoom : Gtk.Gesture {
+               [CCode (has_construct_function = false, type = "GtkGesture*")]
+               public GestureZoom (Gtk.Widget widget);
+               public double get_scale_delta ();
+               public virtual signal void scale_changed (double p0);
+       }
        [CCode (cheader_filename = "gtk/gtk.h", ref_function = "gtk_gradient_ref", type_id = "gtk_gradient_get_type ()", unref_function = "gtk_gradient_unref")]
        [Compact]
        public class Gradient {
@@ -2282,11 +2406,11 @@ namespace Gtk {
                public Gradient.linear (double x0, double y0, double x1, double y1);
                [CCode (has_construct_function = false)]
                public Gradient.radial (double x0, double y0, double radius0, double x1, double y1, double radius1);
-               public bool resolve (Gtk.StyleProperties props, out unowned Cairo.Pattern resolved_gradient);
-               public unowned Cairo.Pattern resolve_for_context (Gtk.StyleContext context);
-               public unowned string to_string ();
+               public bool resolve (Gtk.StyleProperties props, out Cairo.Pattern resolved_gradient);
+               public Cairo.Pattern resolve_for_context (Gtk.StyleContext context);
+               public string to_string ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_grid_get_type ()")]
        public class Grid : Gtk.Container, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Grid ();
@@ -2316,24 +2440,24 @@ namespace Gtk {
                public bool row_homogeneous { get; set; }
                public int row_spacing { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_hbox_get_type ()")]
        [Deprecated (replacement = "Grid", since = "3.2")]
        public class HBox : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public HBox (bool homogeneous, int spacing);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_hbutton_box_get_type ()")]
        public class HButtonBox : Gtk.ButtonBox, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public HButtonBox ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_hpaned_get_type ()")]
        [Deprecated (replacement = "Paned", since = "3.2")]
        public class HPaned : Gtk.Paned, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public HPaned ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_hsv_get_type ()")]
        public class HSV : Gtk.Widget, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public HSV ();
@@ -2346,7 +2470,7 @@ namespace Gtk {
                public virtual signal void changed ();
                public virtual signal void move (Gtk.DirectionType type);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_hscale_get_type ()")]
        [Deprecated (since = "3.2")]
        public class HScale : Gtk.Scale, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
@@ -2354,19 +2478,19 @@ namespace Gtk {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public HScale.with_range (double min, double max, double step);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_hscrollbar_get_type ()")]
        [Deprecated (since = "3.2")]
        public class HScrollbar : Gtk.Scrollbar, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public HScrollbar (Gtk.Adjustment? adjustment);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_hseparator_get_type ()")]
        [Deprecated (replacement = "Separator", since = "3.2")]
        public class HSeparator : Gtk.Separator, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public HSeparator ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_handle_box_get_type ()")]
        [Deprecated (since = "3.4")]
        public class HandleBox : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
@@ -2386,7 +2510,7 @@ namespace Gtk {
                public bool snap_edge_set { get; set; }
                public virtual signal void child_attached (Gtk.Widget child);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_header_bar_get_type ()")]
        public class HeaderBar : Gtk.Container, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public HeaderBar ();
@@ -2415,15 +2539,15 @@ namespace Gtk {
                public string subtitle { get; set; }
                public string title { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h,gtk/gtkimmodule.h")]
-       public class IMContext : GLib.Object {
+       [CCode (cheader_filename = "gtk/gtk.h,gtk/gtkimmodule.h", type_id = "gtk_im_context_get_type ()")]
+       public abstract class IMContext : GLib.Object {
                [CCode (has_construct_function = false)]
                protected IMContext ();
                public virtual bool filter_keypress (Gdk.EventKey event);
                public virtual void focus_in ();
                public virtual void focus_out ();
-               public virtual void get_preedit_string (out unowned string str, out Pango.AttrList attrs, out int cursor_pos);
-               public virtual bool get_surrounding (out unowned string text, out int cursor_index);
+               public virtual void get_preedit_string (out string str, out Pango.AttrList attrs, out int cursor_pos);
+               public virtual bool get_surrounding (out string text, out int cursor_index);
                public virtual void reset ();
                public virtual void set_client_window (Gdk.Window window);
                public virtual void set_cursor_location (Gdk.Rectangle area);
@@ -2441,13 +2565,13 @@ namespace Gtk {
                public virtual signal void preedit_start ();
                public virtual signal bool retrieve_surrounding ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_im_context_simple_get_type ()")]
        public class IMContextSimple : Gtk.IMContext {
                [CCode (has_construct_function = false, type = "GtkIMContext*")]
                public IMContextSimple ();
-               public void add_table (uint16 data, int max_seq_len, int n_seqs);
+               public void add_table ([CCode (array_length = false)] uint16[] data, int max_seq_len, int n_seqs);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_im_multicontext_get_type ()")]
        public class IMMulticontext : Gtk.IMContext {
                [CCode (has_construct_function = false, type = "GtkIMContext*")]
                public IMMulticontext ();
@@ -2455,7 +2579,7 @@ namespace Gtk {
                public unowned string get_context_id ();
                public void set_context_id (string context_id);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_icon_factory_get_type ()")]
        [Deprecated (replacement = "Gtk.IconTheme", since = "3.10")]
        public class IconFactory : GLib.Object, Gtk.Buildable {
                [CCode (has_construct_function = false)]
@@ -2466,7 +2590,7 @@ namespace Gtk {
                public static unowned Gtk.IconSet lookup_default (string stock_id);
                public void remove_default ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h", copy_function = "gtk_icon_info_copy", free_function = "gtk_icon_info_free")]
+       [CCode (cheader_filename = "gtk/gtk.h", copy_function = "gtk_icon_info_copy", free_function = "gtk_icon_info_free", type_id = "gtk_icon_info_get_type ()")]
        [Compact]
        public class IconInfo {
                [CCode (has_construct_function = false)]
@@ -2475,7 +2599,7 @@ namespace Gtk {
                [CCode (has_construct_function = false)]
                public IconInfo.for_pixbuf (Gtk.IconTheme icon_theme, Gdk.Pixbuf pixbuf);
                public void free ();
-               public bool get_attach_points (Gdk.Point[] points);
+               public bool get_attach_points (out Gdk.Point[] points);
                public int get_base_scale ();
                public int get_base_size ();
                public unowned Gdk.Pixbuf get_builtin_pixbuf ();
@@ -2542,17 +2666,18 @@ namespace Gtk {
                public void set_state (Gtk.StateType state);
                public void set_state_wildcarded (bool setting);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_icon_theme_get_type ()")]
        public class IconTheme : GLib.Object {
                [CCode (has_construct_function = false)]
                public IconTheme ();
                public static void add_builtin_icon (string icon_name, int size, Gdk.Pixbuf pixbuf);
+               public void add_resource_path (string path);
                public void append_search_path (string path);
                public Gtk.IconInfo? choose_icon ([CCode (array_length = false, array_null_terminated = true)] string[] icon_names, int size, Gtk.IconLookupFlags flags);
                public Gtk.IconInfo? choose_icon_for_scale (string[] icon_names, int size, int scale, Gtk.IconLookupFlags flags);
                public static GLib.Quark error_quark ();
                public static unowned Gtk.IconTheme get_default ();
-               public unowned string get_example_icon_name ();
+               public string? get_example_icon_name ();
                public static unowned Gtk.IconTheme get_for_screen (Gdk.Screen screen);
                [CCode (array_length = false, array_null_terminated = true)]
                public int[] get_icon_sizes (string icon_name);
@@ -2571,15 +2696,15 @@ namespace Gtk {
                public bool rescan_if_needed ();
                public void set_custom_theme (string theme_name);
                public void set_screen (Gdk.Screen screen);
-               public void set_search_path (string[] path, int n_elements);
+               public void set_search_path (string[] path);
                public virtual signal void changed ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_icon_view_get_type ()")]
        public class IconView : Gtk.Container, Atk.Implementor, Gtk.Buildable, Gtk.CellLayout, Gtk.Scrollable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public IconView ();
                public void convert_widget_to_bin_window_coords (int wx, int wy, out int bx, out int by);
-               public unowned Cairo.Surface create_drag_icon (Gtk.TreePath path);
+               public Cairo.Surface create_drag_icon (Gtk.TreePath path);
                public void enable_model_drag_dest (Gtk.TargetEntry[] targets, Gdk.DragAction actions);
                public void enable_model_drag_source (Gdk.ModifierType start_button_mask, Gtk.TargetEntry[] targets, Gdk.DragAction actions);
                public bool get_activate_on_single_click ();
@@ -2598,7 +2723,7 @@ namespace Gtk {
                public int get_margin ();
                public int get_markup_column ();
                public unowned Gtk.TreeModel get_model ();
-               public unowned Gtk.TreePath get_path_at_pos (int x, int y);
+               public Gtk.TreePath get_path_at_pos (int x, int y);
                public int get_pixbuf_column ();
                public bool get_reorderable ();
                public int get_row_spacing ();
@@ -2668,12 +2793,12 @@ namespace Gtk {
                public virtual signal void toggle_cursor_item ();
                public virtual signal void unselect_all ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_icon_view_accessible_get_type ()")]
        public class IconViewAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.Selection {
                [CCode (has_construct_function = false)]
                protected IconViewAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_image_get_type ()")]
        public class Image : Gtk.Misc, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Image ();
@@ -2739,17 +2864,17 @@ namespace Gtk {
                [NoAccessorMethod]
                public bool use_fallback { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_image_accessible_get_type ()")]
        public class ImageAccessible : Gtk.WidgetAccessible, Atk.Component, Atk.Image {
                [CCode (has_construct_function = false)]
                protected ImageAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_image_cell_accessible_get_type ()")]
        public class ImageCellAccessible : Gtk.RendererCellAccessible, Atk.Action, Atk.Component, Atk.Image {
                [CCode (has_construct_function = false)]
                protected ImageCellAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_image_menu_item_get_type ()")]
        public class ImageMenuItem : Gtk.MenuItem, Atk.Implementor, Gtk.Buildable, Gtk.Activatable, Gtk.Actionable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ImageMenuItem ();
@@ -2771,7 +2896,7 @@ namespace Gtk {
                public Gtk.Widget image { get; set; }
                public bool use_stock { get; set construct; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_info_bar_get_type ()")]
        public class InfoBar : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public InfoBar ();
@@ -2794,7 +2919,7 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void response (int response_id);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_invisible_get_type ()")]
        public class Invisible : Gtk.Widget, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Invisible ();
@@ -2804,7 +2929,7 @@ namespace Gtk {
                public void set_screen (Gdk.Screen screen);
                public Gdk.Screen screen { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_label_get_type ()")]
        public class Label : Gtk.Misc, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Label (string? str);
@@ -2884,7 +3009,7 @@ namespace Gtk {
                public virtual signal void move_cursor (Gtk.MovementStep step, int count, bool extend_selection);
                public virtual signal void populate_popup (Gtk.Menu menu);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_label_accessible_get_type ()")]
        public class LabelAccessible : Gtk.WidgetAccessible, Atk.Component, Atk.Text, Atk.Hypertext {
                [CCode (has_construct_function = false)]
                protected LabelAccessible ();
@@ -2893,7 +3018,7 @@ namespace Gtk {
        [Compact]
        public class LabelSelectionInfo {
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_layout_get_type ()")]
        public class Layout : Gtk.Container, Atk.Implementor, Gtk.Buildable, Gtk.Scrollable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Layout (Gtk.Adjustment? hadjustment = null, Gtk.Adjustment? vadjustment = null);
@@ -2911,7 +3036,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public uint width { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_level_bar_get_type ()")]
        public class LevelBar : Gtk.Widget, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public LevelBar ();
@@ -2937,12 +3062,12 @@ namespace Gtk {
                public double value { get; set; }
                public virtual signal void offset_changed (string name);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_level_bar_accessible_get_type ()")]
        public class LevelBarAccessible : Gtk.WidgetAccessible, Atk.Component, Atk.Value {
                [CCode (has_construct_function = false)]
                protected LevelBarAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_link_button_get_type ()")]
        public class LinkButton : Gtk.Button, Atk.Implementor, Gtk.Buildable, Gtk.Actionable, Gtk.Activatable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public LinkButton (string uri);
@@ -2956,12 +3081,12 @@ namespace Gtk {
                public bool visited { get; set; }
                public virtual signal bool activate_link ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_link_button_accessible_get_type ()")]
        public class LinkButtonAccessible : Gtk.ButtonAccessible, Atk.Component, Atk.Action, Atk.Image, Atk.HyperlinkImpl {
                [CCode (has_construct_function = false)]
                protected LinkButtonAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_list_box_get_type ()")]
        public class ListBox : Gtk.Container, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ListBox ();
@@ -2972,6 +3097,7 @@ namespace Gtk {
                public unowned Gtk.ListBoxRow get_row_at_index (int index_);
                public unowned Gtk.ListBoxRow get_row_at_y (int y);
                public unowned Gtk.ListBoxRow get_selected_row ();
+               public GLib.List<weak Gtk.ListBoxRow> get_selected_rows ();
                public Gtk.SelectionMode get_selection_mode ();
                public void insert (Gtk.Widget child, int position);
                public void invalidate_filter ();
@@ -2979,6 +3105,7 @@ namespace Gtk {
                public void invalidate_sort ();
                public void prepend (Gtk.Widget child);
                public void select_row (Gtk.ListBoxRow? row);
+               public void selected_foreach (Gtk.ListBoxForeachFunc func);
                public void set_activate_on_single_click (bool single);
                public void set_adjustment (Gtk.Adjustment? adjustment);
                public void set_filter_func (owned Gtk.ListBoxFilterFunc? filter_func);
@@ -2986,37 +3113,50 @@ namespace Gtk {
                public void set_placeholder (Gtk.Widget? placeholder);
                public void set_selection_mode (Gtk.SelectionMode mode);
                public void set_sort_func (owned Gtk.ListBoxSortFunc? sort_func);
+               public void unselect_row (Gtk.ListBoxRow row);
                public bool activate_on_single_click { get; set; }
                public Gtk.SelectionMode selection_mode { get; set; }
                public virtual signal void activate_cursor_row ();
                public virtual signal void move_cursor (Gtk.MovementStep step, int count);
                public virtual signal void row_activated (Gtk.ListBoxRow row);
                public virtual signal void row_selected (Gtk.ListBoxRow? row);
+               [HasEmitter]
+               public virtual signal void select_all ();
+               public virtual signal void selected_rows_changed ();
                public virtual signal void toggle_cursor_row ();
+               [HasEmitter]
+               public virtual signal void unselect_all ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_list_box_accessible_get_type ()")]
        public class ListBoxAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.Selection {
                [CCode (has_construct_function = false)]
                protected ListBoxAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_list_box_row_get_type ()")]
        public class ListBoxRow : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ListBoxRow ();
                public void changed ();
+               public bool get_activatable ();
                public unowned Gtk.Widget get_header ();
                public int get_index ();
+               public bool get_selectable ();
+               public bool is_selected ();
+               public void set_activatable (bool activatable);
                public void set_header (Gtk.Widget? header);
+               public void set_selectable (bool selectable);
+               public bool activatable { get; set; }
+               public bool selectable { get; set; }
                public virtual signal void activate ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_list_box_row_accessible_get_type ()")]
        public class ListBoxRowAccessible : Gtk.ContainerAccessible, Atk.Component {
                [CCode (has_construct_function = false)]
                protected ListBoxRowAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_list_store_get_type ()")]
        public class ListStore : GLib.Object, Gtk.TreeModel, Gtk.TreeDragSource, Gtk.TreeDragDest, Gtk.TreeSortable, Gtk.Buildable {
-               [CCode (has_construct_function = false, sentinel = "")]
+               [CCode (has_construct_function = false, sentinel = "-1")]
                public ListStore (int n_columns, ...);
                public void append (out Gtk.TreeIter iter);
                public void clear ();
@@ -3025,7 +3165,7 @@ namespace Gtk {
                public void insert_before (out Gtk.TreeIter iter, Gtk.TreeIter? sibling);
                [CCode (sentinel = "-1")]
                public void insert_with_values (out Gtk.TreeIter iter, int position, ...);
-               public void insert_with_valuesv (out Gtk.TreeIter iter, int position, int columns, GLib.Value[] values);
+               public void insert_with_valuesv (out Gtk.TreeIter iter, int position, [CCode (array_length_pos = 4.1)] int[] columns, [CCode (array_length_pos = 4.1)] GLib.Value[] values);
                public bool iter_is_valid (Gtk.TreeIter iter);
                public void move_after (ref Gtk.TreeIter iter, Gtk.TreeIter? position);
                public void move_before (ref Gtk.TreeIter iter, Gtk.TreeIter? position);
@@ -3033,36 +3173,20 @@ namespace Gtk {
                public ListStore.newv ([CCode (array_length_pos = 0.9)] GLib.Type[] types);
                public void prepend (out Gtk.TreeIter iter);
                public bool remove (Gtk.TreeIter iter);
-               public void reorder (int new_order);
+               public void reorder ([CCode (array_length = false, array_null_terminated = true)] int[] new_order);
                [CCode (sentinel = "-1")]
                public void @set (Gtk.TreeIter iter, ...);
                public void set_column_types ([CCode (array_length_pos = 0.9)] GLib.Type[] types);
-               public void set_valist (Gtk.TreeIter iter, void* var_args);
+               public void set_valist (Gtk.TreeIter iter, va_list var_args);
                public void set_value (Gtk.TreeIter iter, int column, GLib.Value value);
-               public void set_valuesv (Gtk.TreeIter iter, int columns, GLib.Value[] values);
+               public void set_valuesv (Gtk.TreeIter iter, [CCode (array_length_pos = 3.1)] int[] columns, [CCode (array_length_pos = 3.1)] GLib.Value[] values);
                public void swap (Gtk.TreeIter a, Gtk.TreeIter b);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_lock_button_get_type ()")]
        public class LockButton : Gtk.Button, Atk.Implementor, Gtk.Buildable, Gtk.Actionable, Gtk.Activatable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public LockButton (GLib.Permission permission);
                public unowned GLib.Permission get_permission ();
-               [NoWrapper]
-               public virtual void reserved0 ();
-               [NoWrapper]
-               public virtual void reserved1 ();
-               [NoWrapper]
-               public virtual void reserved2 ();
-               [NoWrapper]
-               public virtual void reserved3 ();
-               [NoWrapper]
-               public virtual void reserved4 ();
-               [NoWrapper]
-               public virtual void reserved5 ();
-               [NoWrapper]
-               public virtual void reserved6 ();
-               [NoWrapper]
-               public virtual void reserved7 ();
                public void set_permission (GLib.Permission permission);
                public GLib.Permission permission { get; set; }
                [NoAccessorMethod]
@@ -3076,12 +3200,12 @@ namespace Gtk {
                [NoAccessorMethod]
                public string tooltip_unlock { owned get; set construct; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_lock_button_accessible_get_type ()")]
        public class LockButtonAccessible : Gtk.ButtonAccessible, Atk.Component, Atk.Action, Atk.Image {
                [CCode (has_construct_function = false)]
                protected LockButtonAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_menu_get_type ()")]
        public class Menu : Gtk.MenuShell, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Menu ();
@@ -3124,12 +3248,12 @@ namespace Gtk {
                public string tearoff_title { owned get; set; }
                public virtual signal void move_scroll (Gtk.ScrollType p0);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_menu_accessible_get_type ()")]
        public class MenuAccessible : Gtk.MenuShellAccessible, Atk.Component, Atk.Selection {
                [CCode (has_construct_function = false)]
                protected MenuAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_menu_bar_get_type ()")]
        public class MenuBar : Gtk.MenuShell, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public MenuBar ();
@@ -3142,7 +3266,7 @@ namespace Gtk {
                public Gtk.PackDirection child_pack_direction { get; set; }
                public Gtk.PackDirection pack_direction { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_menu_button_get_type ()")]
        public class MenuButton : Gtk.ToggleButton, Atk.Implementor, Gtk.Buildable, Gtk.Actionable, Gtk.Activatable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public MenuButton ();
@@ -3165,12 +3289,12 @@ namespace Gtk {
                public Gtk.Menu popup { get; set; }
                public bool use_popover { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_menu_button_accessible_get_type ()")]
        public class MenuButtonAccessible : Gtk.ToggleButtonAccessible, Atk.Component, Atk.Action, Atk.Image {
                [CCode (has_construct_function = false)]
                protected MenuButtonAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_menu_item_get_type ()")]
        public class MenuItem : Gtk.Bin, Atk.Implementor, Gtk.Buildable, Gtk.Activatable, Gtk.Actionable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public MenuItem ();
@@ -3207,12 +3331,12 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void toggle_size_request (void* requisition);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_menu_item_accessible_get_type ()")]
        public class MenuItemAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.Action, Atk.Selection {
                [CCode (has_construct_function = false)]
                protected MenuItemAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_menu_shell_get_type ()")]
        public abstract class MenuShell : Gtk.Container, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                protected MenuShell ();
@@ -3242,12 +3366,12 @@ namespace Gtk {
                public virtual signal bool move_selected (int distance);
                public virtual signal void selection_done ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_menu_shell_accessible_get_type ()")]
        public class MenuShellAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.Selection {
                [CCode (has_construct_function = false)]
                protected MenuShellAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_menu_tool_button_get_type ()")]
        public class MenuToolButton : Gtk.ToolButton, Atk.Implementor, Gtk.Buildable, Gtk.Activatable, Gtk.Actionable {
                [CCode (has_construct_function = false, type = "GtkToolItem*")]
                public MenuToolButton (Gtk.Widget? icon_widget, string? label);
@@ -3260,7 +3384,7 @@ namespace Gtk {
                public Gtk.Menu menu { get; set; }
                public virtual signal void show_menu ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_message_dialog_get_type ()")]
        public class MessageDialog : Gtk.Dialog, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                [PrintfFormat]
@@ -3291,8 +3415,8 @@ namespace Gtk {
                [NoAccessorMethod]
                public bool use_markup { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       public class Misc : Gtk.Widget, Atk.Implementor, Gtk.Buildable {
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_misc_get_type ()")]
+       public abstract class Misc : Gtk.Widget, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                protected Misc ();
                public void get_alignment (out float xalign, out float yalign);
@@ -3308,7 +3432,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public int ypad { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_mount_operation_get_type ()")]
        public class MountOperation : GLib.MountOperation {
                [CCode (has_construct_function = false, type = "GMountOperation*")]
                public MountOperation (Gtk.Window? parent);
@@ -3321,7 +3445,7 @@ namespace Gtk {
                public Gtk.Window parent { get; set; }
                public Gdk.Screen screen { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_notebook_get_type ()")]
        public class Notebook : Gtk.Container, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Notebook ();
@@ -3391,18 +3515,18 @@ namespace Gtk {
                public virtual signal bool select_page (bool move_focus);
                public virtual signal void switch_page (Gtk.Widget page, uint page_num);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_notebook_accessible_get_type ()")]
        public class NotebookAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.Selection {
                [CCode (has_construct_function = false)]
                protected NotebookAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_notebook_page_accessible_get_type ()")]
        public class NotebookPageAccessible : Atk.Object, Atk.Component {
                [CCode (has_construct_function = false, type = "AtkObject*")]
                public NotebookPageAccessible (Gtk.NotebookAccessible notebook, Gtk.Widget child);
                public void invalidate ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_numerable_icon_get_type ()")]
        public class NumerableIcon : GLib.EmblemedIcon, GLib.Icon {
                [CCode (has_construct_function = false, type = "GIcon*")]
                public NumerableIcon (GLib.Icon base_icon);
@@ -3425,27 +3549,21 @@ namespace Gtk {
                public string label { get; set; }
                public Gtk.StyleContext style_context { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_offscreen_window_get_type ()")]
        public class OffscreenWindow : Gtk.Window, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public OffscreenWindow ();
-               public unowned Gdk.Pixbuf get_pixbuf ();
+               public Gdk.Pixbuf get_pixbuf ();
                public unowned Cairo.Surface get_surface ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_overlay_get_type ()")]
        public class Overlay : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Overlay ();
                public void add_overlay (Gtk.Widget widget);
-               public virtual signal bool get_child_position (Gtk.Widget widget, Gdk.Rectangle allocation);
+               public virtual signal bool get_child_position (Gtk.Widget widget, out Gdk.Rectangle allocation);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class PageRange {
-               public int end;
-               public int start;
-       }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_page_setup_get_type ()")]
        public class PageSetup : GLib.Object {
                [CCode (has_construct_function = false)]
                public PageSetup ();
@@ -3476,7 +3594,7 @@ namespace Gtk {
                public bool to_file (string file_name) throws GLib.Error;
                public void to_key_file (GLib.KeyFile key_file, string group_name);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_paned_get_type ()")]
        public class Paned : Gtk.Container, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Paned (Gtk.Orientation orientation);
@@ -3503,7 +3621,7 @@ namespace Gtk {
                public virtual signal bool move_handle (Gtk.ScrollType scroll);
                public virtual signal bool toggle_handle_focus ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_paned_accessible_get_type ()")]
        public class PanedAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.Value {
                [CCode (has_construct_function = false)]
                protected PanedAccessible ();
@@ -3536,37 +3654,40 @@ namespace Gtk {
                public void set_size (double width, double height, Gtk.Unit unit);
                public void to_key_file (GLib.KeyFile key_file, string group_name);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_places_sidebar_get_type ()")]
        public class PlacesSidebar : Gtk.ScrolledWindow, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public PlacesSidebar ();
                public void add_shortcut (GLib.File location);
                public bool get_local_only ();
-               public unowned GLib.File get_location ();
-               public unowned GLib.File get_nth_bookmark (int n);
+               public GLib.File get_location ();
+               public GLib.File get_nth_bookmark (int n);
                public Gtk.PlacesOpenFlags get_open_flags ();
                public bool get_show_connect_to_server ();
                public bool get_show_desktop ();
-               public unowned GLib.SList list_shortcuts ();
+               public bool get_show_enter_location ();
+               public GLib.SList<GLib.File> list_shortcuts ();
                public void remove_shortcut (GLib.File location);
                public void set_local_only (bool local_only);
                public void set_location (GLib.File location);
                public void set_open_flags (Gtk.PlacesOpenFlags flags);
                public void set_show_connect_to_server (bool show_connect_to_server);
                public void set_show_desktop (bool show_desktop);
+               public void set_show_enter_location (bool show_enter_location);
                public bool local_only { get; set; }
-               public GLib.File location { get; set; }
+               public GLib.File location { owned get; set; }
                public Gtk.PlacesOpenFlags open_flags { get; set; }
                public bool show_connect_to_server { get; set; }
                public bool show_desktop { get; set; }
+               public bool show_enter_location { get; set; }
                public virtual signal int drag_action_ask (int p0);
-               public virtual signal int drag_action_requested (Gdk.DragContext p0, GLib.Object p1, void* p2);
-               public virtual signal void drag_perform_drop (GLib.Object p0, void* p1, int p2);
-               public virtual signal void open_location (GLib.Object p0, Gtk.PlacesOpenFlags p1);
-               public virtual signal void populate_popup (GLib.Object p0, GLib.Object p1, GLib.Object p2);
+               public virtual signal int drag_action_requested (Gdk.DragContext p0, GLib.File p1, GLib.List<GLib.File> p2);
+               public virtual signal void drag_perform_drop (GLib.File p0, GLib.List<GLib.File> p1, int p2);
+               public virtual signal void open_location (GLib.File p0, Gtk.PlacesOpenFlags p1);
+               public virtual signal void populate_popup (Gtk.Menu p0, GLib.File? p1, GLib.Volume? p2);
                public virtual signal void show_error_message (string p0, string p1);
        }
-       [CCode (cheader_filename = "gtk/gtkx.h")]
+       [CCode (cheader_filename = "gtk/gtkx.h", type_id = "gtk_plug_get_type ()")]
        public class Plug : Gtk.Window, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Plug (X.Window socket_id);
@@ -3580,7 +3701,7 @@ namespace Gtk {
                public bool embedded { get; }
                public Gdk.Window socket_window { get; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_popover_get_type ()")]
        public class Popover : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Popover (Gtk.Widget relative_to);
@@ -3588,7 +3709,7 @@ namespace Gtk {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Popover.from_model (Gtk.Widget relative_to, GLib.MenuModel model);
                public bool get_modal ();
-               public bool get_pointing_to (Gdk.Rectangle rect);
+               public bool get_pointing_to (out Gdk.Rectangle rect);
                public Gtk.PositionType get_position ();
                public unowned Gtk.Widget get_relative_to ();
                public void set_modal (bool modal);
@@ -3601,23 +3722,28 @@ namespace Gtk {
                public Gtk.Widget relative_to { get; set; }
                public virtual signal void closed ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_popover_accessible_get_type ()")]
+       public class PopoverAccessible : Gtk.ContainerAccessible, Atk.Component {
+               [CCode (has_construct_function = false)]
+               protected PopoverAccessible ();
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_print_context_get_type ()")]
        public class PrintContext : GLib.Object {
                [CCode (has_construct_function = false)]
                protected PrintContext ();
-               public unowned Pango.Context create_pango_context ();
-               public unowned Pango.Layout create_pango_layout ();
+               public Pango.Context create_pango_context ();
+               public Pango.Layout create_pango_layout ();
                public unowned Cairo.Context get_cairo_context ();
                public double get_dpi_x ();
                public double get_dpi_y ();
-               public bool get_hard_margins (double top, double bottom, double left, double right);
+               public bool get_hard_margins (out double top, out double bottom, out double left, out double right);
                public double get_height ();
                public unowned Gtk.PageSetup get_page_setup ();
                public unowned Pango.FontMap get_pango_fontmap ();
                public double get_width ();
                public void set_cairo_context (Cairo.Context cr, double dpi_x, double dpi_y);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_print_operation_get_type ()")]
        public class PrintOperation : GLib.Object, Gtk.PrintOperationPreview {
                [CCode (has_construct_function = false)]
                public PrintOperation ();
@@ -3690,7 +3816,7 @@ namespace Gtk {
                public virtual signal void status_changed ();
                public virtual signal void update_custom_widget (Gtk.Widget widget, Gtk.PageSetup setup, Gtk.PrintSettings settings);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_print_settings_get_type ()")]
        public class PrintSettings : GLib.Object {
                [CCode (has_construct_function = false)]
                public PrintSettings ();
@@ -3718,10 +3844,10 @@ namespace Gtk {
                public Gtk.NumberUpLayout get_number_up_layout ();
                public Gtk.PageOrientation get_orientation ();
                public unowned string get_output_bin ();
-               public unowned Gtk.PageRange get_page_ranges (int num_ranges);
+               public Gtk.PageRange[] get_page_ranges ();
                public Gtk.PageSet get_page_set ();
                public double get_paper_height (Gtk.Unit unit);
-               public unowned Gtk.PaperSize get_paper_size ();
+               public Gtk.PaperSize get_paper_size ();
                public double get_paper_width (Gtk.Unit unit);
                public Gtk.PrintPages get_print_pages ();
                public unowned string get_printer ();
@@ -3752,7 +3878,7 @@ namespace Gtk {
                public void set_number_up_layout (Gtk.NumberUpLayout number_up_layout);
                public void set_orientation (Gtk.PageOrientation orientation);
                public void set_output_bin (string output_bin);
-               public void set_page_ranges (Gtk.PageRange page_ranges, int num_ranges);
+               public void set_page_ranges ([CCode (array_length_pos = 1.1)] Gtk.PageRange[] page_ranges);
                public void set_page_set (Gtk.PageSet page_set);
                public void set_paper_height (double height, Gtk.Unit unit);
                public void set_paper_size (Gtk.PaperSize paper_size);
@@ -3770,7 +3896,7 @@ namespace Gtk {
                public void to_key_file (GLib.KeyFile key_file, string group_name);
                public void unset (string key);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_progress_bar_get_type ()")]
        public class ProgressBar : Gtk.Widget, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ProgressBar ();
@@ -3794,12 +3920,12 @@ namespace Gtk {
                public bool show_text { get; set; }
                public string text { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_progress_bar_accessible_get_type ()")]
        public class ProgressBarAccessible : Gtk.WidgetAccessible, Atk.Component, Atk.Value {
                [CCode (has_construct_function = false)]
                protected ProgressBarAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_radio_action_get_type ()")]
        public class RadioAction : Gtk.ToggleAction, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                public RadioAction (string name, string? label, string? tooltip, string? stock_id, int value);
@@ -3815,7 +3941,7 @@ namespace Gtk {
                public int value { get; set; }
                public virtual signal void changed (Gtk.RadioAction current);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_radio_button_get_type ()")]
        public class RadioButton : Gtk.CheckButton, Atk.Implementor, Gtk.Buildable, Gtk.Actionable, Gtk.Activatable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public RadioButton (GLib.SList<Gtk.RadioButton>? group);
@@ -3836,12 +3962,12 @@ namespace Gtk {
                public Gtk.RadioButton group { set; }
                public virtual signal void group_changed ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_radio_button_accessible_get_type ()")]
        public class RadioButtonAccessible : Gtk.ToggleButtonAccessible, Atk.Component, Atk.Action, Atk.Image {
                [CCode (has_construct_function = false)]
                protected RadioButtonAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_radio_menu_item_get_type ()")]
        public class RadioMenuItem : Gtk.CheckMenuItem, Atk.Implementor, Gtk.Buildable, Gtk.Activatable, Gtk.Actionable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public RadioMenuItem (GLib.SList<Gtk.RadioMenuItem>? group);
@@ -3860,12 +3986,12 @@ namespace Gtk {
                public Gtk.RadioMenuItem group { set; }
                public virtual signal void group_changed ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_radio_menu_item_accessible_get_type ()")]
        public class RadioMenuItemAccessible : Gtk.CheckMenuItemAccessible, Atk.Component, Atk.Action, Atk.Selection {
                [CCode (has_construct_function = false)]
                protected RadioMenuItemAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_radio_tool_button_get_type ()")]
        public class RadioToolButton : Gtk.ToggleToolButton, Atk.Implementor, Gtk.Buildable, Gtk.Activatable, Gtk.Actionable {
                [CCode (has_construct_function = false, type = "GtkToolItem*")]
                public RadioToolButton (GLib.SList<Gtk.RadioToolButton>? group);
@@ -3879,8 +4005,8 @@ namespace Gtk {
                public RadioToolButton.with_stock_from_widget (Gtk.RadioToolButton group, string stock_id);
                public Gtk.RadioToolButton group { set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       public class Range : Gtk.Widget, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_range_get_type ()")]
+       public abstract class Range : Gtk.Widget, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false)]
                protected Range ();
                public unowned Gtk.Adjustment get_adjustment ();
@@ -3926,7 +4052,7 @@ namespace Gtk {
                public virtual signal void move_slider (Gtk.ScrollType scroll);
                public virtual signal void value_changed ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_range_accessible_get_type ()")]
        public class RangeAccessible : Gtk.WidgetAccessible, Atk.Component, Atk.Value {
                [CCode (has_construct_function = false)]
                protected RangeAccessible ();
@@ -3948,7 +4074,7 @@ namespace Gtk {
                public static bool parse_flags (GLib.ParamSpec pspec, GLib.StringBuilder gstring, GLib.Value property_value);
                public static bool parse_requisition (GLib.ParamSpec pspec, GLib.StringBuilder gstring, GLib.Value property_value);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_rc_style_get_type ()")]
        [Deprecated (replacement = "CssProvider", since = "3.0")]
        public class RcStyle : GLib.Object {
                [CCode (array_length = false)]
@@ -3975,7 +4101,7 @@ namespace Gtk {
                public RcStyle ();
                public Gtk.RcStyle copy ();
                [NoWrapper]
-               public virtual unowned Gtk.RcStyle create_rc_style ();
+               public virtual Gtk.RcStyle create_rc_style ();
                [NoWrapper]
                public virtual Gtk.Style create_style ();
                [NoWrapper]
@@ -3983,7 +4109,7 @@ namespace Gtk {
                [NoWrapper]
                public virtual uint parse (Gtk.Settings settings, GLib.Scanner scanner);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_recent_action_get_type ()")]
        public class RecentAction : Gtk.Action, Gtk.Buildable, Gtk.RecentChooser {
                [CCode (has_construct_function = false, type = "GtkAction*")]
                public RecentAction (string name, string label, string tooltip, string stock_id);
@@ -3993,39 +4119,31 @@ namespace Gtk {
                public void set_show_numbers (bool show_numbers);
                public bool show_numbers { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_recent_chooser_dialog_get_type ()")]
        public class RecentChooserDialog : Gtk.Dialog, Atk.Implementor, Gtk.Buildable, Gtk.RecentChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public RecentChooserDialog (string title, Gtk.Window parent, ...);
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public RecentChooserDialog.for_manager (string title, Gtk.Window parent, Gtk.RecentManager manager, ...);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_recent_chooser_menu_get_type ()")]
        public class RecentChooserMenu : Gtk.Menu, Atk.Implementor, Gtk.Buildable, Gtk.RecentChooser, Gtk.Activatable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public RecentChooserMenu ();
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public RecentChooserMenu.for_manager (Gtk.RecentManager manager);
                public bool get_show_numbers ();
-               [NoWrapper]
-               public virtual void gtk_recent1 ();
-               [NoWrapper]
-               public virtual void gtk_recent2 ();
-               [NoWrapper]
-               public virtual void gtk_recent3 ();
-               [NoWrapper]
-               public virtual void gtk_recent4 ();
                public void set_show_numbers (bool show_numbers);
                public bool show_numbers { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_recent_chooser_widget_get_type ()")]
        public class RecentChooserWidget : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable, Gtk.RecentChooser {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public RecentChooserWidget ();
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public RecentChooserWidget.for_manager (Gtk.RecentManager manager);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_recent_filter_get_type ()")]
        public class RecentFilter : GLib.InitiallyUnowned, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                public RecentFilter ();
@@ -4039,21 +4157,10 @@ namespace Gtk {
                public bool filter (Gtk.RecentFilterInfo filter_info);
                public Gtk.RecentFilterFlags get_needed ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class RecentFilterInfo {
-               public int age;
-               public weak string applications;
-               public Gtk.RecentFilterFlags contains;
-               public weak string display_name;
-               public weak string groups;
-               public weak string mime_type;
-               public weak string uri;
-       }
        [CCode (cheader_filename = "gtk/gtk.h", ref_function = "gtk_recent_info_ref", type_id = "gtk_recent_info_get_type ()", unref_function = "gtk_recent_info_unref")]
        [Compact]
        public class RecentInfo {
-               public unowned GLib.AppInfo create_app_info (string app_name) throws GLib.Error;
+               public GLib.AppInfo create_app_info (string app_name) throws GLib.Error;
                public bool exists ();
                public ulong get_added ();
                public int get_age ();
@@ -4079,7 +4186,7 @@ namespace Gtk {
                public string last_application ();
                public bool match (Gtk.RecentInfo info_b);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_recent_manager_get_type ()")]
        public class RecentManager : GLib.Object {
                [CCode (has_construct_function = false)]
                public RecentManager ();
@@ -4089,7 +4196,7 @@ namespace Gtk {
                public static unowned Gtk.RecentManager get_default ();
                public GLib.List<Gtk.RecentInfo> get_items ();
                public bool has_item (string uri);
-               public unowned Gtk.RecentInfo lookup_item (string uri) throws GLib.Error;
+               public Gtk.RecentInfo lookup_item (string uri) throws GLib.Error;
                public bool move_item (string uri, string new_uri) throws GLib.Error;
                public int purge_items () throws GLib.Error;
                public bool remove_item (string uri) throws GLib.Error;
@@ -4099,21 +4206,14 @@ namespace Gtk {
                public int size { get; }
                public virtual signal void changed ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_renderer_cell_accessible_get_type ()")]
        public class RendererCellAccessible : Gtk.CellAccessible, Atk.Action, Atk.Component {
                [CCode (has_construct_function = false, type = "AtkObject*")]
                public RendererCellAccessible (Gtk.CellRenderer renderer);
                [NoAccessorMethod]
                public Gtk.CellRenderer renderer { owned get; construct; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class RequestedSize {
-               public void* data;
-               public int minimum_size;
-               public int natural_size;
-       }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_revealer_get_type ()")]
        public class Revealer : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Revealer ();
@@ -4129,7 +4229,7 @@ namespace Gtk {
                public uint transition_duration { get; set construct; }
                public Gtk.RevealerTransitionType transition_type { get; set construct; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_scale_get_type ()")]
        public class Scale : Gtk.Range, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Scale (Gtk.Orientation orientation, Gtk.Adjustment? adjustment);
@@ -4153,22 +4253,22 @@ namespace Gtk {
                public Gtk.PositionType value_pos { get; set; }
                public virtual signal string format_value (double value);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_scale_accessible_get_type ()")]
        public class ScaleAccessible : Gtk.RangeAccessible, Atk.Component, Atk.Value {
                [CCode (has_construct_function = false)]
                protected ScaleAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_scale_button_get_type ()")]
        public class ScaleButton : Gtk.Button, Atk.Implementor, Gtk.Buildable, Gtk.Actionable, Gtk.Activatable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
-               public ScaleButton (Gtk.IconSize size, double min = 0.0, double max = 100.0, double step = 2.0, [CCode (array_length = false)] string[]? icons = null);
+               public ScaleButton (Gtk.IconSize size, double min = 0.0, double max = 100.0, double step = 2.0, [CCode (array_length = false, array_null_terminated = true)] string[]? icons = null);
                public unowned Gtk.Adjustment get_adjustment ();
                public unowned Gtk.Widget get_minus_button ();
                public unowned Gtk.Widget get_plus_button ();
                public unowned Gtk.Widget get_popup ();
                public double get_value ();
                public void set_adjustment (Gtk.Adjustment adjustment);
-               public void set_icons ([CCode (array_length = false)] string[] icons);
+               public void set_icons ([CCode (array_length = false, array_null_terminated = true)] string[] icons);
                public void set_value (double value);
                public Gtk.Adjustment adjustment { get; set; }
                [CCode (array_length = false, array_null_terminated = true)]
@@ -4181,17 +4281,17 @@ namespace Gtk {
                public virtual signal void popup ();
                public virtual signal void value_changed (double value);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_scale_button_accessible_get_type ()")]
        public class ScaleButtonAccessible : Gtk.ButtonAccessible, Atk.Component, Atk.Action, Atk.Image, Atk.Value {
                [CCode (has_construct_function = false)]
                protected ScaleButtonAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_scrollbar_get_type ()")]
        public class Scrollbar : Gtk.Range, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Scrollbar (Gtk.Orientation orientation, Gtk.Adjustment? adjustment);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_scrolled_window_get_type ()")]
        public class ScrolledWindow : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ScrolledWindow (Gtk.Adjustment? hadjustment, Gtk.Adjustment? vadjustment);
@@ -4203,7 +4303,7 @@ namespace Gtk {
                public int get_min_content_height ();
                public int get_min_content_width ();
                public Gtk.CornerType get_placement ();
-               public void get_policy (Gtk.PolicyType hscrollbar_policy, Gtk.PolicyType vscrollbar_policy);
+               public void get_policy (out Gtk.PolicyType hscrollbar_policy, out Gtk.PolicyType vscrollbar_policy);
                public Gtk.ShadowType get_shadow_type ();
                public unowned Gtk.Adjustment get_vadjustment ();
                public unowned Gtk.Widget get_vscrollbar ();
@@ -4234,12 +4334,12 @@ namespace Gtk {
                public virtual signal void move_focus_out (Gtk.DirectionType direction);
                public virtual signal bool scroll_child (Gtk.ScrollType scroll, bool horizontal);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_scrolled_window_accessible_get_type ()")]
        public class ScrolledWindowAccessible : Gtk.ContainerAccessible, Atk.Component {
                [CCode (has_construct_function = false)]
                protected ScrolledWindowAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_search_bar_get_type ()")]
        public class SearchBar : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public SearchBar ();
@@ -4253,7 +4353,7 @@ namespace Gtk {
                public bool search_mode_enabled { get; set; }
                public bool show_close_button { get; set construct; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_search_entry_get_type ()")]
        public class SearchEntry : Gtk.Entry, Atk.Implementor, Gtk.Buildable, Gtk.Editable, Gtk.CellEditable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public SearchEntry ();
@@ -4280,23 +4380,23 @@ namespace Gtk {
                public void @set (Gdk.Atom type, int format, uchar[] data);
                public bool set_pixbuf (Gdk.Pixbuf pixbuf);
                public bool set_text (string str, int len);
-               public bool set_uris ([CCode (array_length = false)] string[] uris);
+               public bool set_uris ([CCode (array_length = false, array_null_terminated = true)] string[] uris);
                public bool targets_include_image (bool writable);
                public bool targets_include_rich_text (Gtk.TextBuffer buffer);
                public bool targets_include_text ();
                public bool targets_include_uri ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_separator_get_type ()")]
        public class Separator : Gtk.Widget, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Separator (Gtk.Orientation orientation);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_separator_menu_item_get_type ()")]
        public class SeparatorMenuItem : Gtk.MenuItem, Atk.Implementor, Gtk.Buildable, Gtk.Activatable, Gtk.Actionable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public SeparatorMenuItem ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_separator_tool_item_get_type ()")]
        public class SeparatorToolItem : Gtk.ToolItem, Atk.Implementor, Gtk.Buildable, Gtk.Activatable {
                [CCode (has_construct_function = false, type = "GtkToolItem*")]
                public SeparatorToolItem ();
@@ -4304,7 +4404,7 @@ namespace Gtk {
                public void set_draw (bool draw);
                public bool draw { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_settings_get_type ()")]
        public class Settings : GLib.Object, Gtk.StyleProvider {
                [CCode (has_construct_function = false)]
                protected Settings ();
@@ -4401,6 +4501,8 @@ namespace Gtk {
                [NoAccessorMethod]
                public bool gtk_label_select_on_focus { get; set; }
                [NoAccessorMethod]
+               public uint gtk_long_press_time { get; set; }
+               [NoAccessorMethod]
                public string gtk_menu_bar_accel { owned get; set; }
                [NoAccessorMethod]
                public int gtk_menu_bar_popup_delay { get; set; }
@@ -4449,6 +4551,12 @@ namespace Gtk {
                [NoAccessorMethod]
                public int gtk_timeout_repeat { get; set; }
                [NoAccessorMethod]
+               public string gtk_titlebar_double_click { owned get; set; }
+               [NoAccessorMethod]
+               public string gtk_titlebar_middle_click { owned get; set; }
+               [NoAccessorMethod]
+               public string gtk_titlebar_right_click { owned get; set; }
+               [NoAccessorMethod]
                public Gtk.IconSize gtk_toolbar_icon_size { get; set; }
                [NoAccessorMethod]
                public Gtk.ToolbarStyle gtk_toolbar_style { get; set; }
@@ -4474,13 +4582,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public string gtk_xft_rgba { owned get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class SettingsValue {
-               public weak string origin;
-               public GLib.Value value;
-       }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_size_group_get_type ()")]
        public class SizeGroup : GLib.Object, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                public SizeGroup (Gtk.SizeGroupMode mode);
@@ -4494,7 +4596,7 @@ namespace Gtk {
                public bool ignore_hidden { get; set; }
                public Gtk.SizeGroupMode mode { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtkx.h")]
+       [CCode (cheader_filename = "gtk/gtkx.h", type_id = "gtk_socket_get_type ()")]
        public class Socket : Gtk.Container, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Socket ();
@@ -4504,14 +4606,14 @@ namespace Gtk {
                public virtual signal void plug_added ();
                public virtual signal bool plug_removed ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_spin_button_get_type ()")]
        public class SpinButton : Gtk.Entry, Atk.Implementor, Gtk.Buildable, Gtk.Editable, Gtk.CellEditable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public SpinButton (Gtk.Adjustment adjustment, double climb_rate, uint digits);
                public void configure (Gtk.Adjustment adjustment, double climb_rate, uint digits);
                public unowned Gtk.Adjustment get_adjustment ();
                public uint get_digits ();
-               public void get_increments (double step, double page);
+               public void get_increments (out double step, out double page);
                public bool get_numeric ();
                public void get_range (out double min, out double max);
                public bool get_snap_to_ticks ();
@@ -4547,12 +4649,12 @@ namespace Gtk {
                public virtual signal void value_changed ();
                public virtual signal void wrapped ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_spin_button_accessible_get_type ()")]
        public class SpinButtonAccessible : Gtk.EntryAccessible, Atk.Component, Atk.EditableText, Atk.Text, Atk.Action, Atk.Value {
                [CCode (has_construct_function = false)]
                protected SpinButtonAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_spinner_get_type ()")]
        public class Spinner : Gtk.Widget, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Spinner ();
@@ -4561,12 +4663,12 @@ namespace Gtk {
                [NoAccessorMethod]
                public bool active { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_spinner_accessible_get_type ()")]
        public class SpinnerAccessible : Gtk.WidgetAccessible, Atk.Component, Atk.Image {
                [CCode (has_construct_function = false)]
                protected SpinnerAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_stack_get_type ()")]
        public class Stack : Gtk.Container, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Stack ();
@@ -4592,7 +4694,7 @@ namespace Gtk {
                public Gtk.Widget visible_child { get; set; }
                public string visible_child_name { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_stack_switcher_get_type ()")]
        public class StackSwitcher : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public StackSwitcher ();
@@ -4600,7 +4702,7 @@ namespace Gtk {
                public void set_stack (Gtk.Stack stack);
                public Gtk.Stack stack { get; set construct; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_status_icon_get_type ()")]
        public class StatusIcon : GLib.Object {
                [CCode (has_construct_function = false)]
                public StatusIcon ();
@@ -4624,8 +4726,8 @@ namespace Gtk {
                public unowned string get_stock ();
                public Gtk.ImageType get_storage_type ();
                public unowned string get_title ();
-               public unowned string get_tooltip_markup ();
-               public unowned string get_tooltip_text ();
+               public string get_tooltip_markup ();
+               public string get_tooltip_text ();
                public bool get_visible ();
                public uint32 get_x11_window_id ();
                public bool is_embedded ();
@@ -4662,8 +4764,8 @@ namespace Gtk {
                public string stock { owned get; set; }
                public Gtk.ImageType storage_type { get; }
                public string title { get; set; }
-               public string tooltip_markup { get; set; }
-               public string tooltip_text { get; set; }
+               public string tooltip_markup { owned get; set; }
+               public string tooltip_text { owned get; set; }
                public bool visible { get; set; }
                public virtual signal void activate ();
                public virtual signal bool button_press_event (Gdk.EventButton event);
@@ -4673,7 +4775,7 @@ namespace Gtk {
                public virtual signal bool scroll_event (Gdk.EventScroll event);
                public virtual signal bool size_changed (int size);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_statusbar_get_type ()")]
        public class Statusbar : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Statusbar ();
@@ -4686,7 +4788,7 @@ namespace Gtk {
                public virtual signal void text_popped (uint context_id, string text);
                public virtual signal void text_pushed (uint context_id, string text);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_statusbar_accessible_get_type ()")]
        public class StatusbarAccessible : Gtk.ContainerAccessible, Atk.Component {
                [CCode (has_construct_function = false)]
                protected StatusbarAccessible ();
@@ -4782,14 +4884,14 @@ namespace Gtk {
                public virtual void init_from_rc (Gtk.RcStyle rc_style);
                public bool lookup_color (string color_name, out Gdk.Color color);
                public unowned Gtk.IconSet lookup_icon_set (string stock_id);
-               public virtual unowned Gdk.Pixbuf render_icon (Gtk.IconSource source, Gtk.TextDirection direction, Gtk.StateType state, Gtk.IconSize size, Gtk.Widget widget, string detail);
+               public virtual Gdk.Pixbuf render_icon (Gtk.IconSource source, Gtk.TextDirection direction, Gtk.StateType state, Gtk.IconSize size, Gtk.Widget widget, string detail);
                public virtual void set_background (Gdk.Window window, Gtk.StateType state_type);
                [NoAccessorMethod]
                public Gtk.StyleContext context { owned get; construct; }
                public virtual signal void realize ();
                public virtual signal void unrealize ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_style_context_get_type ()")]
        public class StyleContext : GLib.Object {
                [CCode (has_construct_function = false)]
                public StyleContext ();
@@ -4811,20 +4913,20 @@ namespace Gtk {
                public Gtk.Border get_padding (Gtk.StateFlags state);
                public unowned Gtk.StyleContext get_parent ();
                public unowned Gtk.WidgetPath get_path ();
-               public void get_property (string property, Gtk.StateFlags state, GLib.Value value);
+               public GLib.Value get_property (string property, Gtk.StateFlags state);
                public int get_scale ();
                public unowned Gdk.Screen get_screen ();
-               public unowned Gtk.CssSection get_section (string property);
+               public Gtk.CssSection get_section (string property);
                public Gtk.StateFlags get_state ();
                public void get_style (...);
                public void get_style_property (string property_name, GLib.Value value);
-               public void get_style_valist (void* args);
-               public void get_valist (Gtk.StateFlags state, void* args);
+               public void get_style_valist (va_list args);
+               public void get_valist (Gtk.StateFlags state, va_list args);
                public bool has_class (string class_name);
                public bool has_region (string region_name, out Gtk.RegionFlags flags_return);
                public void invalidate ();
-               public unowned GLib.List list_classes ();
-               public unowned GLib.List list_regions ();
+               public GLib.List<weak string> list_classes ();
+               public GLib.List<weak string> list_regions ();
                public bool lookup_color (string color_name, out Gdk.RGBA color);
                public unowned Gtk.IconSet lookup_icon_set (string stock_id);
                public void notify_state_change (Gdk.Window window, void* region_id, Gtk.StateType state, bool state_value);
@@ -4857,7 +4959,7 @@ namespace Gtk {
                [CCode (cname = "gtk_render_icon")]
                public void render_icon (Cairo.Context cr, Gdk.Pixbuf pixbuf, double x, double y);
                [CCode (cname = "gtk_render_icon_pixbuf")]
-               public unowned Gdk.Pixbuf render_icon_pixbuf (Gtk.IconSource source, Gtk.IconSize size);
+               public Gdk.Pixbuf render_icon_pixbuf (Gtk.IconSource source, Gtk.IconSize size);
                [CCode (cname = "gtk_render_layout")]
                public void render_layout (Cairo.Context cr, double x, double y, Pango.Layout layout);
                [CCode (cname = "gtk_render_line")]
@@ -4887,34 +4989,38 @@ namespace Gtk {
                public Gdk.Screen screen { get; set; }
                public virtual signal void changed ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_style_properties_get_type ()")]
        public class StyleProperties : GLib.Object, Gtk.StyleProvider {
                [CCode (has_construct_function = false)]
                public StyleProperties ();
                public void clear ();
-               public void @get (Gtk.StateFlags state);
-               public bool get_property (string property, Gtk.StateFlags state, GLib.Value value);
-               public void get_valist (Gtk.StateFlags state, void* args);
+               public void @get (Gtk.StateFlags state, ...);
+               public bool get_property (string property, Gtk.StateFlags state, out GLib.Value value);
+               public void get_valist (Gtk.StateFlags state, va_list args);
                public unowned Gtk.SymbolicColor lookup_color (string name);
-               public static bool lookup_property (string property_name, Gtk.StylePropertyParser parse_func, out unowned GLib.ParamSpec pspec);
+               public static bool lookup_property (string property_name, out unowned Gtk.StylePropertyParser parse_func, out unowned GLib.ParamSpec pspec);
                public void map_color (string name, Gtk.SymbolicColor color);
                public void merge (Gtk.StyleProperties props_to_merge, bool replace);
                public static void register_property (Gtk.StylePropertyParser? parse_func, GLib.ParamSpec pspec);
-               public void @set (Gtk.StateFlags state);
+               public void @set (Gtk.StateFlags state, ...);
                public void set_property (string property, Gtk.StateFlags state, GLib.Value value);
-               public void set_valist (Gtk.StateFlags state, void* args);
+               public void set_valist (Gtk.StateFlags state, va_list args);
                public void unset_property (string property, Gtk.StateFlags state);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_switch_get_type ()")]
        public class Switch : Gtk.Widget, Atk.Implementor, Gtk.Buildable, Gtk.Actionable, Gtk.Activatable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Switch ();
                public bool get_active ();
+               public bool get_state ();
                public void set_active (bool is_active);
+               public void set_state (bool state);
                public bool active { get; set; }
+               public bool state { get; set; }
                public virtual signal void activate ();
+               public virtual signal bool state_set (bool state);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_switch_accessible_get_type ()")]
        public class SwitchAccessible : Gtk.WidgetAccessible, Atk.Component, Atk.Action {
                [CCode (has_construct_function = false)]
                protected SwitchAccessible ();
@@ -4933,11 +5039,11 @@ namespace Gtk {
                public bool resolve (Gtk.StyleProperties props, out Gdk.RGBA resolved_color);
                [CCode (has_construct_function = false)]
                public SymbolicColor.shade (Gtk.SymbolicColor color, double factor);
-               public unowned string to_string ();
+               public string to_string ();
                [CCode (has_construct_function = false)]
                public SymbolicColor.win32 (string theme_class, int id);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_table_get_type ()")]
        [Deprecated (replacement = "Grid", since = "3.4")]
        public class Table : Gtk.Container, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
@@ -4949,7 +5055,7 @@ namespace Gtk {
                public uint get_default_row_spacing ();
                public bool get_homogeneous ();
                public uint get_row_spacing (uint row);
-               public void get_size (uint rows, uint columns);
+               public void get_size (out uint rows, out uint columns);
                public void resize (uint rows, uint columns);
                public void set_col_spacing (uint column, uint spacing);
                public void set_col_spacings (uint spacing);
@@ -4966,47 +5072,18 @@ namespace Gtk {
                [NoAccessorMethod]
                public uint row_spacing { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class TableChild {
-               public uint16 bottom_attach;
-               public uint16 left_attach;
-               public uint16 right_attach;
-               public uint16 top_attach;
-               public weak Gtk.Widget widget;
-               public uint xexpand;
-               public uint xfill;
-               public uint16 xpadding;
-               public uint xshrink;
-               public uint yexpand;
-               public uint yfill;
-               public uint16 ypadding;
-               public uint yshrink;
-       }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class TableRowCol {
-               public uint16 allocation;
-               public uint empty;
-               public uint expand;
-               public uint need_expand;
-               public uint need_shrink;
-               public uint16 requisition;
-               public uint shrink;
-               public uint16 spacing;
-       }
        [CCode (cheader_filename = "gtk/gtk.h", ref_function = "gtk_target_list_ref", type_id = "gtk_target_list_get_type ()", unref_function = "gtk_target_list_unref")]
        [Compact]
        public class TargetList {
                [CCode (has_construct_function = false)]
-               public TargetList (Gtk.TargetEntry[] targets);
+               public TargetList (Gtk.TargetEntry[]? targets);
                public void add (Gdk.Atom target, uint flags, uint info);
                public void add_image_targets (uint info, bool writable);
                public void add_rich_text_targets (uint info, bool deserializable, Gtk.TextBuffer buffer);
                public void add_table (Gtk.TargetEntry[] targets);
                public void add_text_targets (uint info);
                public void add_uri_targets (uint info);
-               public bool find (Gdk.Atom target, uint info);
+               public bool find (Gdk.Atom target, out uint info);
                public void remove (Gdk.Atom target);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -5016,30 +5093,16 @@ namespace Gtk {
                public uint info;
                public Gdk.Atom target;
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tearoff_menu_item_get_type ()")]
        [Deprecated (since = "3.4")]
        public class TearoffMenuItem : Gtk.MenuItem, Atk.Implementor, Gtk.Buildable, Gtk.Activatable, Gtk.Actionable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public TearoffMenuItem ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class TextAppearance {
-               public Gdk.Color bg_color;
-               public uint draw_bg;
-               public Gdk.Color fg_color;
-               public uint inside_selection;
-               public uint is_text;
-               [CCode (array_length = false)]
-               public weak Gdk.RGBA[] rgba;
-               public int rise;
-               public uint strikethrough;
-               public uint underline;
-       }
        [CCode (cheader_filename = "gtk/gtk.h", ref_function = "gtk_text_attributes_ref", type_id = "gtk_text_attributes_get_type ()", unref_function = "gtk_text_attributes_unref")]
        [Compact]
        public class TextAttributes {
-               public weak Gtk.TextAppearance appearance;
+               public Gtk.TextAppearance appearance;
                public uint bg_full_height;
                public Gtk.TextDirection direction;
                public uint editable;
@@ -5048,7 +5111,7 @@ namespace Gtk {
                public int indent;
                public uint invisible;
                public Gtk.Justification justification;
-               public weak Pango.Language language;
+               public Pango.Language language;
                public int left_margin;
                [CCode (array_length = false)]
                public weak uint[] padding;
@@ -5070,7 +5133,7 @@ namespace Gtk {
        [Compact]
        public class TextBTree {
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_text_buffer_get_type ()")]
        public class TextBuffer : GLib.Object {
                [CCode (has_construct_function = false)]
                public TextBuffer (Gtk.TextTagTable? table);
@@ -5169,12 +5232,12 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void remove_tag (Gtk.TextTag tag, Gtk.TextIter start, Gtk.TextIter end);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_text_cell_accessible_get_type ()")]
        public class TextCellAccessible : Gtk.RendererCellAccessible, Atk.Action, Atk.Component, Atk.Text {
                [CCode (has_construct_function = false)]
                protected TextCellAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_text_child_anchor_get_type ()")]
        public class TextChildAnchor : GLib.Object {
                public void* segment;
                [CCode (has_construct_function = false)]
@@ -5182,7 +5245,7 @@ namespace Gtk {
                public bool get_deleted ();
                public GLib.List<weak Gtk.Widget> get_widgets ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_text_mark_get_type ()")]
        public class TextMark : GLib.Object {
                public void* segment;
                [CCode (has_construct_function = false)]
@@ -5196,7 +5259,7 @@ namespace Gtk {
                public bool left_gravity { get; construct; }
                public string name { get; construct; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_text_tag_get_type ()")]
        public class TextTag : GLib.Object {
                [CCode (has_construct_function = false)]
                public TextTag (string? name = null);
@@ -5336,11 +5399,11 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal bool event (GLib.Object event_object, Gdk.Event event, Gtk.TextIter iter);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_text_tag_table_get_type ()")]
        public class TextTagTable : GLib.Object, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                public TextTagTable ();
-               public void add (Gtk.TextTag tag);
+               public bool add (Gtk.TextTag tag);
                public void @foreach (Gtk.TextTagTableForeach func);
                public int get_size ();
                public unowned Gtk.TextTag lookup (string name);
@@ -5349,7 +5412,7 @@ namespace Gtk {
                public virtual signal void tag_changed (Gtk.TextTag tag, bool size_changed);
                public virtual signal void tag_removed (Gtk.TextTag tag);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_text_view_get_type ()")]
        public class TextView : Gtk.Container, Atk.Implementor, Gtk.Buildable, Gtk.Scrollable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public TextView ();
@@ -5360,14 +5423,16 @@ namespace Gtk {
                public void buffer_to_window_coords (Gtk.TextWindowType win, int buffer_x, int buffer_y, out int window_x, out int window_y);
                [NoWrapper]
                public virtual Gtk.TextBuffer create_buffer ();
+               [NoWrapper]
+               public virtual void draw_layer (Gtk.TextViewLayer layer, Cairo.Context cr);
                public bool forward_display_line (Gtk.TextIter iter);
                public bool forward_display_line_end (Gtk.TextIter iter);
                public bool get_accepts_tab ();
                public int get_border_window_size (Gtk.TextWindowType type);
                public unowned Gtk.TextBuffer get_buffer ();
-               public void get_cursor_locations (Gtk.TextIter iter, Gdk.Rectangle strong, Gdk.Rectangle @weak);
+               public void get_cursor_locations (Gtk.TextIter? iter, out Gdk.Rectangle strong, out Gdk.Rectangle @weak);
                public bool get_cursor_visible ();
-               public unowned Gtk.TextAttributes get_default_attributes ();
+               public Gtk.TextAttributes get_default_attributes ();
                public bool get_editable ();
                public unowned Gtk.Adjustment get_hadjustment ();
                public int get_indent ();
@@ -5385,7 +5450,7 @@ namespace Gtk {
                public int get_pixels_below_lines ();
                public int get_pixels_inside_wrap ();
                public int get_right_margin ();
-               public unowned Pango.TabArray get_tabs ();
+               public Pango.TabArray get_tabs ();
                public unowned Gtk.Adjustment get_vadjustment ();
                public void get_visible_rect (out Gdk.Rectangle visible_rect);
                public unowned Gdk.Window get_window (Gtk.TextWindowType win);
@@ -5439,7 +5504,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public bool populate_all { get; set; }
                public int right_margin { get; set; }
-               public Pango.TabArray tabs { get; set; }
+               public Pango.TabArray tabs { owned get; set; }
                public Gtk.WrapMode wrap_mode { get; set; }
                public virtual signal void backspace ();
                public virtual signal void copy_clipboard ();
@@ -5456,7 +5521,7 @@ namespace Gtk {
                public virtual signal void toggle_cursor_visible ();
                public virtual signal void toggle_overwrite ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_text_view_accessible_get_type ()")]
        public class TextViewAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.EditableText, Atk.Text, Atk.StreamableContent {
                [CCode (has_construct_function = false)]
                protected TextViewAccessible ();
@@ -5465,7 +5530,7 @@ namespace Gtk {
        [Compact]
        public class ThemeEngine {
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_theming_engine_get_type ()")]
        public class ThemingEngine : GLib.Object {
                [CCode (has_construct_function = false)]
                protected ThemingEngine ();
@@ -5483,10 +5548,10 @@ namespace Gtk {
                public GLib.Value get_property (string property, Gtk.StateFlags state);
                public unowned Gdk.Screen get_screen ();
                public Gtk.StateFlags get_state ();
-               public void get_style ();
+               public void get_style (...);
                public GLib.Value get_style_property (string property_name);
-               public void get_style_valist (void* args);
-               public void get_valist (Gtk.StateFlags state, void* args);
+               public void get_style_valist (va_list args);
+               public void get_valist (Gtk.StateFlags state, va_list args);
                public bool has_class (string style_class);
                public bool has_region (string style_region, out Gtk.RegionFlags flags);
                public static unowned Gtk.ThemingEngine load (string name);
@@ -5515,7 +5580,7 @@ namespace Gtk {
                [NoWrapper]
                public virtual void render_icon (Cairo.Context cr, Gdk.Pixbuf pixbuf, double x, double y);
                [NoWrapper]
-               public virtual unowned Gdk.Pixbuf render_icon_pixbuf (Gtk.IconSource source, Gtk.IconSize size);
+               public virtual Gdk.Pixbuf render_icon_pixbuf (Gtk.IconSource source, Gtk.IconSize size);
                [NoWrapper]
                public virtual void render_icon_surface (Cairo.Context cr, Cairo.Surface surface, double x, double y);
                [NoWrapper]
@@ -5531,7 +5596,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public string name { owned get; construct; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_toggle_action_get_type ()")]
        public class ToggleAction : Gtk.Action, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                public ToggleAction (string name, string? label, string? tooltip, string? stock_id);
@@ -5544,7 +5609,7 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void toggled ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_toggle_button_get_type ()")]
        public class ToggleButton : Gtk.Button, Atk.Implementor, Gtk.Buildable, Gtk.Actionable, Gtk.Activatable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ToggleButton ();
@@ -5565,12 +5630,12 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void toggled ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_toggle_button_accessible_get_type ()")]
        public class ToggleButtonAccessible : Gtk.ButtonAccessible, Atk.Component, Atk.Action, Atk.Image {
                [CCode (has_construct_function = false)]
                protected ToggleButtonAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_toggle_tool_button_get_type ()")]
        public class ToggleToolButton : Gtk.ToolButton, Atk.Implementor, Gtk.Buildable, Gtk.Activatable, Gtk.Actionable {
                [CCode (has_construct_function = false, type = "GtkToolItem*")]
                public ToggleToolButton ();
@@ -5581,7 +5646,7 @@ namespace Gtk {
                public bool active { get; set; }
                public virtual signal void toggled ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tool_button_get_type ()")]
        public class ToolButton : Gtk.ToolItem, Atk.Implementor, Gtk.Buildable, Gtk.Activatable, Gtk.Actionable {
                [CCode (has_construct_function = false, type = "GtkToolItem*")]
                public ToolButton (Gtk.Widget? icon_widget, string? label);
@@ -5607,7 +5672,7 @@ namespace Gtk {
                public bool use_underline { get; set; }
                public virtual signal void clicked ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tool_item_get_type ()")]
        public class ToolItem : Gtk.Bin, Atk.Implementor, Gtk.Buildable, Gtk.Activatable {
                [CCode (has_construct_function = false)]
                public ToolItem ();
@@ -5643,7 +5708,7 @@ namespace Gtk {
                public virtual signal bool create_menu_proxy ();
                public virtual signal void toolbar_reconfigured ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tool_item_group_get_type ()")]
        public class ToolItemGroup : Gtk.Container, Atk.Implementor, Gtk.Buildable, Gtk.ToolShell {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ToolItemGroup (string label);
@@ -5669,7 +5734,7 @@ namespace Gtk {
                public string label { get; set; }
                public Gtk.Widget label_widget { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tool_palette_get_type ()")]
        public class ToolPalette : Gtk.Container, Atk.Implementor, Gtk.Buildable, Gtk.Orientable, Gtk.Scrollable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public ToolPalette ();
@@ -5700,7 +5765,7 @@ namespace Gtk {
                [NoAccessorMethod]
                public Gtk.ToolbarStyle toolbar_style { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_toolbar_get_type ()")]
        public class Toolbar : Gtk.Container, Atk.Implementor, Gtk.Buildable, Gtk.ToolShell, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Toolbar ();
@@ -5727,7 +5792,7 @@ namespace Gtk {
                public virtual signal bool popup_context_menu (int x, int y, int button_number);
                public virtual signal void style_changed (Gtk.ToolbarStyle style);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tooltip_get_type ()")]
        public class Tooltip : GLib.Object {
                [CCode (has_construct_function = false)]
                protected Tooltip ();
@@ -5741,21 +5806,21 @@ namespace Gtk {
                public void set_tip_area (Gdk.Rectangle rect);
                public static void trigger_tooltip_query (Gdk.Display display);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_toplevel_accessible_get_type ()")]
        public class ToplevelAccessible : Atk.Object {
                [CCode (has_construct_function = false)]
                protected ToplevelAccessible ();
                public unowned GLib.List get_children ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tree_model_filter_get_type ()")]
        public class TreeModelFilter : GLib.Object, Gtk.TreeModel, Gtk.TreeDragSource {
                [CCode (has_construct_function = false, type = "GtkTreeModel*")]
                public TreeModelFilter (Gtk.TreeModel child_model, Gtk.TreePath? root);
                public void clear_cache ();
                public bool convert_child_iter_to_iter (out Gtk.TreeIter filter_iter, Gtk.TreeIter child_iter);
-               public unowned Gtk.TreePath convert_child_path_to_path (Gtk.TreePath child_path);
+               public Gtk.TreePath convert_child_path_to_path (Gtk.TreePath child_path);
                public void convert_iter_to_child_iter (out Gtk.TreeIter child_iter, Gtk.TreeIter filter_iter);
-               public unowned Gtk.TreePath convert_path_to_child_path (Gtk.TreePath filter_path);
+               public Gtk.TreePath convert_path_to_child_path (Gtk.TreePath filter_path);
                public unowned Gtk.TreeModel get_model ();
                [NoWrapper]
                public virtual void modify (Gtk.TreeModel child_model, Gtk.TreeIter iter, GLib.Value value, int column);
@@ -5770,15 +5835,15 @@ namespace Gtk {
                [NoAccessorMethod]
                public Gtk.TreePath virtual_root { owned get; construct; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tree_model_sort_get_type ()")]
        public class TreeModelSort : GLib.Object, Gtk.TreeModel, Gtk.TreeSortable, Gtk.TreeDragSource {
                [CCode (has_construct_function = false)]
                protected TreeModelSort ();
                public void clear_cache ();
                public bool convert_child_iter_to_iter (out Gtk.TreeIter sort_iter, Gtk.TreeIter child_iter);
-               public unowned Gtk.TreePath convert_child_path_to_path (Gtk.TreePath child_path);
+               public Gtk.TreePath convert_child_path_to_path (Gtk.TreePath child_path);
                public void convert_iter_to_child_iter (out Gtk.TreeIter child_iter, Gtk.TreeIter sorted_iter);
-               public unowned Gtk.TreePath convert_path_to_child_path (Gtk.TreePath sorted_path);
+               public Gtk.TreePath convert_path_to_child_path (Gtk.TreePath sorted_path);
                public unowned Gtk.TreeModel get_model ();
                public bool iter_is_valid (Gtk.TreeIter iter);
                public void reset_default_sort_func ();
@@ -5831,7 +5896,7 @@ namespace Gtk {
                public static void reordered (GLib.Object proxy, Gtk.TreePath path, Gtk.TreeIter iter, int[] new_order);
                public bool valid ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tree_selection_get_type ()")]
        public class TreeSelection : GLib.Object {
                [CCode (has_construct_function = false)]
                protected TreeSelection ();
@@ -5858,7 +5923,7 @@ namespace Gtk {
                public Gtk.SelectionMode mode { get; set; }
                public virtual signal void changed ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tree_store_get_type ()")]
        public class TreeStore : GLib.Object, Gtk.TreeModel, Gtk.TreeDragSource, Gtk.TreeDragDest, Gtk.TreeSortable, Gtk.Buildable {
                [CCode (has_construct_function = false, sentinel = "")]
                public TreeStore (int n_columns, ...);
@@ -5869,7 +5934,7 @@ namespace Gtk {
                public void insert_before (out Gtk.TreeIter iter, Gtk.TreeIter? parent, Gtk.TreeIter? sibling);
                [CCode (sentinel = "-1")]
                public void insert_with_values (out Gtk.TreeIter iter, Gtk.TreeIter? parent, int position, ...);
-               public void insert_with_valuesv (out Gtk.TreeIter iter, Gtk.TreeIter? parent, int position, int columns, GLib.Value[] values);
+               public void insert_with_valuesv (out Gtk.TreeIter iter, Gtk.TreeIter? parent, int position, [CCode (array_length_pos = 5.1)] int[] columns, [CCode (array_length_pos = 5.1)] GLib.Value[] values);
                public bool is_ancestor (Gtk.TreeIter iter, Gtk.TreeIter descendant);
                public int iter_depth (Gtk.TreeIter iter);
                public bool iter_is_valid (Gtk.TreeIter iter);
@@ -5888,7 +5953,7 @@ namespace Gtk {
                public void set_valuesv (Gtk.TreeIter iter, int columns, GLib.Value[] values);
                public void swap (Gtk.TreeIter a, Gtk.TreeIter b);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tree_view_get_type ()")]
        public class TreeView : Gtk.Container, Atk.Implementor, Gtk.Buildable, Gtk.Scrollable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public TreeView ();
@@ -5902,7 +5967,7 @@ namespace Gtk {
                public void convert_tree_to_widget_coords (int tx, int ty, out int wx, out int wy);
                public void convert_widget_to_bin_window_coords (int wx, int wy, out int bx, out int by);
                public void convert_widget_to_tree_coords (int wx, int wy, out int tx, out int ty);
-               public unowned Cairo.Surface create_row_drag_icon (Gtk.TreePath path);
+               public Cairo.Surface create_row_drag_icon (Gtk.TreePath path);
                public void enable_model_drag_dest (Gtk.TargetEntry[] targets, Gdk.DragAction actions);
                public void enable_model_drag_source (Gdk.ModifierType start_button_mask, Gtk.TargetEntry[] targets, Gdk.DragAction actions);
                public void expand_all ();
@@ -5949,11 +6014,11 @@ namespace Gtk {
                public int insert_column (Gtk.TreeViewColumn column, int position);
                public int insert_column_with_attributes (int position, string? title, Gtk.CellRenderer cell, ...);
                public int insert_column_with_data_func (int position, string title, Gtk.CellRenderer cell, owned Gtk.TreeCellDataFunc func);
-               public bool is_blank_at_pos (int x, int y, out unowned Gtk.TreePath path, out unowned Gtk.TreeViewColumn column, int cell_x, int cell_y);
+               public bool is_blank_at_pos (int x, int y, out Gtk.TreePath path, out Gtk.TreeViewColumn column, out int cell_x, out int cell_y);
                [CCode (cname = "gtk_tree_view_row_expanded")]
                public bool is_row_expanded (Gtk.TreePath path);
                public bool is_rubber_banding_active ();
-               public void map_expanded_rows (Gtk.TreeViewMappingFunc func, void* data);
+               public void map_expanded_rows (Gtk.TreeViewMappingFunc func);
                public void move_column_after (Gtk.TreeViewColumn column, Gtk.TreeViewColumn base_column);
                public int remove_column (Gtk.TreeViewColumn column);
                public void scroll_to_cell (Gtk.TreePath? path, Gtk.TreeViewColumn? column, bool use_align, float row_align, float col_align);
@@ -6029,17 +6094,17 @@ namespace Gtk {
                public virtual signal bool toggle_cursor_row ();
                public virtual signal bool unselect_all ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tree_view_accessible_get_type ()")]
        public class TreeViewAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.Table, Atk.Selection, Gtk.CellAccessibleParent {
                [CCode (has_construct_function = false)]
                protected TreeViewAccessible ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_tree_view_column_get_type ()")]
        public class TreeViewColumn : GLib.InitiallyUnowned, Gtk.CellLayout, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                public TreeViewColumn ();
                public bool cell_get_position (Gtk.CellRenderer cell_renderer, out int x_offset, out int width);
-               public void cell_get_size (out Gdk.Rectangle cell_area, out int x_offset, out int y_offset, out int width, out int height);
+               public void cell_get_size (Gdk.Rectangle? cell_area, out int x_offset, out int y_offset, out int width, out int height);
                public bool cell_is_visible ();
                public void cell_set_cell_data (Gtk.TreeModel tree_model, Gtk.TreeIter iter, bool is_expander, bool is_expanded);
                public void focus_cell (Gtk.CellRenderer cell);
@@ -6108,7 +6173,7 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void clicked ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_ui_manager_get_type ()")]
        public class UIManager : GLib.Object, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                public UIManager ();
@@ -6123,7 +6188,7 @@ namespace Gtk {
                [Deprecated (since = "3.4")]
                public bool get_add_tearoffs ();
                public GLib.SList<weak Gtk.Widget> get_toplevels (Gtk.UIManagerItemType types);
-               public unowned string get_ui ();
+               public string get_ui ();
                public virtual unowned Gtk.Widget get_widget (string path);
                public void insert_action_group (Gtk.ActionGroup action_group, int pos);
                public uint new_merge_id ();
@@ -6133,7 +6198,7 @@ namespace Gtk {
                public void set_add_tearoffs (bool add_tearoffs);
                [Deprecated (since = "3.4")]
                public bool add_tearoffs { get; set; }
-               public string ui { get; }
+               public string ui { owned get; }
                public virtual signal void actions_changed ();
                public virtual signal void add_widget (Gtk.Widget widget);
                public virtual signal void connect_proxy (Gtk.Action action, Gtk.Widget proxy);
@@ -6141,24 +6206,24 @@ namespace Gtk {
                public virtual signal void post_activate (Gtk.Action action);
                public virtual signal void pre_activate (Gtk.Action action);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_vbox_get_type ()")]
        [Deprecated (replacement = "Box", since = "3.2")]
        public class VBox : Gtk.Box, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public VBox (bool homogeneous, int spacing);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_vbutton_box_get_type ()")]
        public class VButtonBox : Gtk.ButtonBox, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public VButtonBox ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_vpaned_get_type ()")]
        [Deprecated (replacement = "Paned", since = "3.2")]
        public class VPaned : Gtk.Paned, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public VPaned ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_vscale_get_type ()")]
        [Deprecated (replacement = "Scale", since = "3.2")]
        public class VScale : Gtk.Scale, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
@@ -6166,18 +6231,18 @@ namespace Gtk {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public VScale.with_range (double min, double max, double step);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_vscrollbar_get_type ()")]
        [Deprecated (replacement = "Scrollbar", since = "3.2")]
        public class VScrollbar : Gtk.Scrollbar, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public VScrollbar (Gtk.Adjustment? adjustment);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_vseparator_get_type ()")]
        public class VSeparator : Gtk.Separator, Atk.Implementor, Gtk.Buildable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public VSeparator ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_viewport_get_type ()")]
        public class Viewport : Gtk.Bin, Atk.Implementor, Gtk.Buildable, Gtk.Scrollable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Viewport (Gtk.Adjustment? hadjustment, Gtk.Adjustment? vadjustment);
@@ -6191,14 +6256,14 @@ namespace Gtk {
                public void set_vadjustment (Gtk.Adjustment adjustment);
                public Gtk.ShadowType shadow_type { get; set; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_volume_button_get_type ()")]
        public class VolumeButton : Gtk.ScaleButton, Atk.Implementor, Gtk.Buildable, Gtk.Actionable, Gtk.Activatable, Gtk.Orientable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public VolumeButton ();
                [NoAccessorMethod]
                public bool use_symbolic { get; set construct; }
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_widget_get_type ()")]
        public class Widget : GLib.InitiallyUnowned, Atk.Implementor, Gtk.Buildable {
                public class uint activate_signal;
                [CCode (construct_function = "gtk_widget_new", has_new_function = false)]
@@ -6223,7 +6288,7 @@ namespace Gtk {
                public class void bind_template_child_full (string name, bool internal_child, ssize_t struct_offset);
                public bool child_focus (Gtk.DirectionType direction);
                [Deprecated (replacement = "get_path", since = "3.0")]
-               public void class_path (out uint path_length, out unowned string path, out unowned string path_reversed);
+               public void class_path (out uint path_length, out string path, out string path_reversed);
                public virtual bool compute_expand (Gtk.Orientation orientation);
                [CCode (vfunc_name = "compute_expand")]
                [NoWrapper]
@@ -6233,7 +6298,8 @@ namespace Gtk {
                public void destroyed (out unowned Gtk.Widget widget_pointer);
                public bool device_is_shadowed (Gdk.Device device);
                [NoWrapper]
-               public virtual void dispatch_child_properties_changed (uint n_pspecs, out unowned GLib.ParamSpec pspecs);
+               public virtual void dispatch_child_properties_changed ([CCode (array_length_pos = 0.5)] out GLib.ParamSpec[] pspecs);
+               [Deprecated (replacement = "StyleContext", since = "3.0")]
                public void ensure_style ();
                public void error_bell ();
                [CCode (cname = "gtk_widget_class_find_style_property")]
@@ -6251,8 +6317,9 @@ namespace Gtk {
                [Deprecated (replacement = "get_preferred_size", since = "3.0")]
                public void get_child_requisition (out Gtk.Requisition requisition);
                public bool get_child_visible ();
+               public void get_clip (out Gtk.Allocation clip);
                public unowned Gtk.Clipboard get_clipboard (Gdk.Atom selection);
-               public unowned string get_composite_name ();
+               public string get_composite_name ();
                public static Gtk.TextDirection get_default_direction ();
                [Deprecated (replacement = "StyleContext, and CssProvider.get_default() to obtain a Gtk.StyleProvider with the default widget style information", since = "3.0")]
                public static unowned Gtk.Style get_default_style ();
@@ -6281,13 +6348,14 @@ namespace Gtk {
                public bool get_no_show_all ();
                public double get_opacity ();
                public unowned Pango.Context get_pango_context ();
-               public unowned Gtk.Widget get_parent ();
+               [CCode (type = "GtkWidget*")]
+               public unowned Gtk.Container? get_parent ();
                public unowned Gdk.Window get_parent_window ();
                public unowned Gtk.WidgetPath get_path ();
                [Deprecated (replacement = "Gdk.Window.get_device_position", since = "3.4")]
                public void get_pointer (out int x, out int y);
                public virtual void get_preferred_height (out int minimum_height, out int natural_height);
-               public virtual void get_preferred_height_and_baseline_for_width (int width, int minimum_height, int natural_height, int minimum_baseline, int natural_baseline);
+               public virtual void get_preferred_height_and_baseline_for_width (int width, out int minimum_height, out int natural_height, out int minimum_baseline, out int natural_baseline);
                public virtual void get_preferred_height_for_width (int width, out int minimum_height, out int natural_height);
                [CCode (vfunc_name = "get_preferred_height_for_width")]
                [NoWrapper]
@@ -6322,8 +6390,8 @@ namespace Gtk {
                public unowned Gtk.StyleContext get_style_context ();
                public bool get_support_multidevice ();
                public unowned GLib.Object get_template_child (GLib.Type widget_type, string name);
-               public unowned string get_tooltip_markup ();
-               public unowned string get_tooltip_text ();
+               public string get_tooltip_markup ();
+               public string get_tooltip_text ();
                public unowned Gtk.Window get_tooltip_window ();
                public unowned Gtk.Widget get_toplevel ();
                public Gtk.Align get_valign ();
@@ -6354,7 +6422,7 @@ namespace Gtk {
                public bool is_sensitive ();
                public bool is_toplevel ();
                public bool is_visible ();
-               public GLib.List<GLib.Closure> list_accel_closures ();
+               public GLib.List<weak GLib.Closure> list_accel_closures ();
                public GLib.List<weak Gtk.Widget> list_mnemonic_labels ();
                [CCode (cname = "gtk_widget_class_list_style_properties")]
                public class unowned GLib.ParamSpec list_style_properties (uint n_properties);
@@ -6378,7 +6446,7 @@ namespace Gtk {
                public void override_font (Pango.FontDescription? font_desc);
                public void override_symbolic_color (string name, Gdk.RGBA? color);
                [Deprecated (replacement = "get_path", since = "3.0")]
-               public void path (out uint path_length, out unowned string path, out unowned string path_reversed);
+               public void path (out uint path_length, out string path, out string path_reversed);
                public static void pop_composite_child ();
                public static void push_composite_child ();
                public void queue_compute_expand ();
@@ -6387,13 +6455,13 @@ namespace Gtk {
                public virtual void queue_draw_region (Cairo.Region region);
                public void queue_resize ();
                public void queue_resize_no_redraw ();
-               public unowned Cairo.Region region_intersect (Cairo.Region region);
+               public Cairo.Region region_intersect (Cairo.Region region);
                public void register_window (Gdk.Window window);
                public bool remove_accelerator (Gtk.AccelGroup accel_group, uint accel_key, Gdk.ModifierType accel_mods);
                public void remove_mnemonic_label (Gtk.Widget label);
                public void remove_tick_callback (uint id);
                public Gdk.Pixbuf render_icon (string stock_id, Gtk.IconSize size, string? detail);
-               public unowned Gdk.Pixbuf render_icon_pixbuf (string stock_id, Gtk.IconSize size);
+               public Gdk.Pixbuf render_icon_pixbuf (string stock_id, Gtk.IconSize size);
                public void reparent (Gtk.Widget new_parent);
                [Deprecated (replacement = "reset_style", since = "3.0")]
                public void reset_rc_styles ();
@@ -6410,6 +6478,7 @@ namespace Gtk {
                public void set_can_default (bool can_default);
                public void set_can_focus (bool can_focus);
                public void set_child_visible (bool is_visible);
+               public void set_clip (Gtk.Allocation clip);
                public void set_composite_name (string name);
                [CCode (cname = "gtk_widget_class_set_connect_func")]
                public class void set_connect_func (Gtk.BuilderConnectFunc connect_func, void* connect_data, GLib.DestroyNotify connect_data_destroy);
@@ -6433,7 +6502,7 @@ namespace Gtk {
                public void set_margin_top (int margin);
                public void set_no_show_all (bool no_show_all);
                public void set_opacity (double opacity);
-               public void set_parent (Gtk.Widget parent);
+               public void set_parent ([CCode (type = "GtkWidget*")] Gtk.Container parent);
                public void set_parent_window (Gdk.Window parent_window);
                public void set_realized (bool realized);
                public void set_receives_default (bool receives_default);
@@ -6467,7 +6536,7 @@ namespace Gtk {
                public void style_attach ();
                public void style_get (...);
                public void style_get_property (string property_name, ref GLib.Value value);
-               public void style_get_valist (string first_property_name, void* var_args);
+               public void style_get_valist (string first_property_name, va_list var_args);
                public void thaw_child_notify ();
                public bool translate_coordinates (Gtk.Widget dest_widget, int src_x, int src_y, out int dest_x, out int dest_y);
                public void trigger_tooltip_query ();
@@ -6512,8 +6581,8 @@ namespace Gtk {
                public int scale_factor { get; }
                public bool sensitive { get; set; }
                public Gtk.Style style { get; set; }
-               public string tooltip_markup { get; set; }
-               public string tooltip_text { get; set; }
+               public string tooltip_markup { owned get; set; }
+               public string tooltip_text { owned get; set; }
                public Gtk.Align valign { get; set; }
                public bool vexpand { get; set; }
                public bool vexpand_set { get; set; }
@@ -6605,22 +6674,13 @@ namespace Gtk {
                public virtual signal bool visibility_notify_event (Gdk.EventVisibility event);
                public virtual signal bool window_state_event (Gdk.EventWindowState event);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_widget_accessible_get_type ()")]
        public class WidgetAccessible : Gtk.Accessible, Atk.Component {
                [CCode (has_construct_function = false)]
                protected WidgetAccessible ();
                [NoWrapper]
                public virtual void notify_gtk (GLib.Object object, GLib.ParamSpec pspec);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       [Compact]
-       public class WidgetAuxInfo {
-               public uint halign;
-               public int height;
-               public Gtk.Border margin;
-               public uint valign;
-               public int width;
-       }
        [CCode (cheader_filename = "gtk/gtk.h", ref_function = "gtk_widget_path_ref", type_id = "gtk_widget_path_get_type ()", unref_function = "gtk_widget_path_unref")]
        [Compact]
        public class WidgetPath {
@@ -6629,7 +6689,7 @@ namespace Gtk {
                public int append_for_widget (Gtk.Widget widget);
                public int append_type (GLib.Type type);
                public int append_with_siblings (Gtk.WidgetPath siblings, uint sibling_index);
-               public unowned Gtk.WidgetPath copy ();
+               public Gtk.WidgetPath copy ();
                public GLib.Type get_object_type ();
                public bool has_parent (GLib.Type type);
                public bool is_type (GLib.Type type);
@@ -6641,23 +6701,25 @@ namespace Gtk {
                public GLib.Type iter_get_object_type (int pos);
                public uint iter_get_sibling_index (int pos);
                public unowned Gtk.WidgetPath iter_get_siblings (int pos);
+               public Gtk.StateFlags iter_get_state (int pos);
                public bool iter_has_class (int pos, string name);
                public bool iter_has_name (int pos, string name);
                public bool iter_has_qclass (int pos, GLib.Quark qname);
                public bool iter_has_qname (int pos, GLib.Quark qname);
-               public bool iter_has_qregion (int pos, GLib.Quark qname, Gtk.RegionFlags flags);
+               public bool iter_has_qregion (int pos, GLib.Quark qname, out Gtk.RegionFlags flags);
                public bool iter_has_region (int pos, string name, out Gtk.RegionFlags flags);
-               public unowned GLib.SList iter_list_classes (int pos);
-               public unowned GLib.SList iter_list_regions (int pos);
+               public GLib.SList<weak string> iter_list_classes (int pos);
+               public GLib.SList<weak string> iter_list_regions (int pos);
                public void iter_remove_class (int pos, string name);
                public void iter_remove_region (int pos, string name);
                public void iter_set_name (int pos, string name);
                public void iter_set_object_type (int pos, GLib.Type type);
+               public void iter_set_state (int pos, Gtk.StateFlags state);
                public int length ();
                public void prepend_type (GLib.Type type);
-               public unowned string to_string ();
+               public string to_string ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_window_get_type ()")]
        public class Window : Gtk.Bin, Atk.Implementor, Gtk.Buildable {
                [CCode (has_construct_function = false, type = "GtkWidget*")]
                public Window (Gtk.WindowType type = Gtk.WindowType.TOPLEVEL);
@@ -6697,7 +6759,7 @@ namespace Gtk {
                public double get_opacity ();
                public void get_position (out int root_x, out int root_y);
                public bool get_resizable ();
-               public bool get_resize_grip_area (Gdk.Rectangle rect);
+               public bool get_resize_grip_area (out Gdk.Rectangle rect);
                public unowned string get_role ();
                public unowned Gdk.Screen get_screen ();
                public void get_size (out int width, out int height);
@@ -6733,7 +6795,7 @@ namespace Gtk {
                public void set_default_geometry (int width, int height);
                public static void set_default_icon (Gdk.Pixbuf icon);
                public static bool set_default_icon_from_file (string filename) throws GLib.Error;
-               public static void set_default_icon_list (GLib.List<Gdk.Pixbuf> list);
+               public static void set_default_icon_list (owned GLib.List<weak Gdk.Pixbuf> list);
                public static void set_default_icon_name (string name);
                public void set_default_size (int width, int height);
                public void set_deletable (bool setting);
@@ -6749,6 +6811,7 @@ namespace Gtk {
                public bool set_icon_from_file (string filename) throws GLib.Error;
                public void set_icon_list (GLib.List<Gdk.Pixbuf> list);
                public void set_icon_name (string name);
+               public static void set_interactive_debugging (bool enable);
                public void set_keep_above (bool setting);
                public void set_keep_below (bool setting);
                public void set_mnemonic_modifier (Gdk.ModifierType modifier);
@@ -6816,6 +6879,7 @@ namespace Gtk {
                [CCode (cname = "activate_default")]
                [Experimental]
                public virtual signal void default_activated ();
+               public virtual signal bool enable_debugging (bool toggle);
                [CCode (cname = "activate_focus")]
                [Experimental]
                public virtual signal void focus_activated ();
@@ -6823,7 +6887,7 @@ namespace Gtk {
                [HasEmitter]
                public virtual signal void set_focus (Gtk.Widget? focus);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_window_accessible_get_type ()")]
        public class WindowAccessible : Gtk.ContainerAccessible, Atk.Component, Atk.Window {
                [CCode (has_construct_function = false)]
                protected WindowAccessible ();
@@ -6832,7 +6896,7 @@ namespace Gtk {
        [Compact]
        public class WindowGeometryInfo {
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_id = "gtk_window_group_get_type ()")]
        public class WindowGroup : GLib.Object {
                [CCode (has_construct_function = false)]
                public WindowGroup ();
@@ -6842,12 +6906,12 @@ namespace Gtk {
                public GLib.List<weak Gtk.Window> list_windows ();
                public void remove_window (Gtk.Window window);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_cname = "GtkActionableInterface")]
        public interface Actionable : Gtk.Widget {
                public abstract unowned string get_action_name ();
                public abstract unowned GLib.Variant get_action_target_value ();
                public abstract void set_action_name (string action_name);
-               public void set_action_target (string format_string);
+               public void set_action_target (string format_string, ...);
                public abstract void set_action_target_value (GLib.Variant target_value);
                public void set_detailed_action_name (string detailed_action_name);
                public string action_name { get; set; }
@@ -6869,15 +6933,15 @@ namespace Gtk {
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
        public interface AppChooser : Gtk.Widget {
-               public unowned GLib.AppInfo get_app_info ();
-               public unowned string get_content_type ();
+               public GLib.AppInfo get_app_info ();
+               public string get_content_type ();
                public void refresh ();
-               public string content_type { get; construct; }
+               public string content_type { owned get; construct; }
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
        public interface Buildable : GLib.Object {
                public abstract void add_child (Gtk.Builder builder, GLib.Object child, string? type);
-               public abstract unowned GLib.Object construct_child (Gtk.Builder builder, string name);
+               public abstract GLib.Object construct_child (Gtk.Builder builder, string name);
                public abstract void custom_finished (Gtk.Builder builder, GLib.Object? child, string tagname, void* data);
                public abstract void custom_tag_end (Gtk.Builder builder, GLib.Object? child, string tagname, out void* data);
                public abstract bool custom_tag_start (Gtk.Builder builder, GLib.Object? child, string tagname, out GLib.MarkupParser parser, out void* data);
@@ -6888,7 +6952,7 @@ namespace Gtk {
                public abstract void set_name (string name);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public interface CellAccessibleParent {
+       public interface CellAccessibleParent : GLib.Object {
                public abstract void activate (Gtk.CellAccessible cell);
                public abstract void edit (Gtk.CellAccessible cell);
                public abstract void expand_collapse (Gtk.CellAccessible cell);
@@ -6897,6 +6961,7 @@ namespace Gtk {
                public abstract int get_child_index (Gtk.CellAccessible cell);
                public abstract Gtk.CellRendererState get_renderer_state (Gtk.CellAccessible cell);
                public abstract bool grab_focus (Gtk.CellAccessible cell);
+               public abstract void update_relationset (Gtk.CellAccessible cell, Atk.RelationSet relationset);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
        public interface CellEditable : Gtk.Widget {
@@ -6921,7 +6986,7 @@ namespace Gtk {
                public void set_attributes (Gtk.CellRenderer cell, ...);
                public abstract void set_cell_data_func (Gtk.CellRenderer cell, owned Gtk.CellLayoutDataFunc func);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_cname = "GtkColorChooserInterface")]
        public interface ColorChooser : GLib.Object {
                public abstract void add_palette (Gtk.Orientation orientation, int colors_per_line, [CCode (array_length_pos = 2.9)] Gdk.RGBA[]? colors);
                public abstract Gdk.RGBA get_rgba ();
@@ -6932,16 +6997,16 @@ namespace Gtk {
                public bool use_alpha { get; set; }
                public signal void color_activated (Gdk.RGBA color);
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       public interface Editable {
+       [CCode (cheader_filename = "gtk/gtk.h", type_cname = "GtkEditableInterface")]
+       public interface Editable : GLib.Object {
                public void copy_clipboard ();
                public void cut_clipboard ();
                public void delete_selection ();
                [NoWrapper]
                public abstract void do_delete_text (int start_pos, int end_pos);
                [NoWrapper]
-               public abstract void do_insert_text (string new_text, int new_text_length, int position);
-               public abstract unowned string get_chars (int start_pos, int end_pos);
+               public abstract void do_insert_text (string new_text, int new_text_length, ref int position);
+               public abstract string get_chars (int start_pos, int end_pos);
                public bool get_editable ();
                public abstract int get_position ();
                public abstract bool get_selection_bounds (out int start_pos, out int end_pos);
@@ -6965,18 +7030,18 @@ namespace Gtk {
                public Gtk.FileChooserAction get_action ();
                public bool get_create_folders ();
                public string get_current_folder ();
-               public unowned GLib.File get_current_folder_file ();
+               public GLib.File get_current_folder_file ();
                public string get_current_folder_uri ();
-               public unowned string get_current_name ();
+               public string get_current_name ();
                public bool get_do_overwrite_confirmation ();
                public unowned Gtk.Widget get_extra_widget ();
-               public unowned GLib.File get_file ();
+               public GLib.File get_file ();
                public string get_filename ();
                public GLib.SList<string> get_filenames ();
                public GLib.SList<GLib.File> get_files ();
                public unowned Gtk.FileFilter get_filter ();
                public bool get_local_only ();
-               public unowned GLib.File get_preview_file ();
+               public GLib.File get_preview_file ();
                public string get_preview_filename ();
                public string get_preview_uri ();
                public unowned Gtk.Widget get_preview_widget ();
@@ -7036,25 +7101,25 @@ namespace Gtk {
                public signal void update_preview ();
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public interface FileChooserEmbed {
+       public interface FileChooserEmbed : GLib.Object {
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
        public interface FontChooser : GLib.Object {
-               public unowned string get_font ();
-               public unowned Pango.FontDescription get_font_desc ();
+               public string get_font ();
+               public Pango.FontDescription get_font_desc ();
                public abstract unowned Pango.FontFace get_font_face ();
                public abstract unowned Pango.FontFamily get_font_family ();
                public abstract int get_font_size ();
-               public unowned string get_preview_text ();
+               public string get_preview_text ();
                public bool get_show_preview_entry ();
                public abstract void set_filter_func (owned Gtk.FontFilterFunc filter);
                public void set_font (string fontname);
                public void set_font_desc (Pango.FontDescription font_desc);
                public void set_preview_text (string text);
                public void set_show_preview_entry (bool show_preview_entry);
-               public string font { get; set; }
-               public Pango.FontDescription font_desc { get; set; }
-               public string preview_text { get; set; }
+               public string font { owned get; set; }
+               public Pango.FontDescription font_desc { owned get; set; }
+               public string preview_text { owned get; set; }
                public bool show_preview_entry { get; set; }
                public signal void font_activated (string fontname);
        }
@@ -7076,8 +7141,8 @@ namespace Gtk {
        public interface RecentChooser : GLib.Object {
                public abstract void add_filter (Gtk.RecentFilter filter);
                public static GLib.Quark error_quark ();
-               public unowned Gtk.RecentInfo get_current_item ();
-               public abstract unowned string get_current_uri ();
+               public Gtk.RecentInfo get_current_item ();
+               public abstract string get_current_uri ();
                public unowned Gtk.RecentFilter get_filter ();
                public abstract GLib.List<Gtk.RecentInfo> get_items ();
                public int get_limit ();
@@ -7090,7 +7155,7 @@ namespace Gtk {
                public bool get_show_private ();
                public bool get_show_tips ();
                public Gtk.RecentSortType get_sort_type ();
-               public unowned string get_uris (size_t length);
+               public string[] get_uris ();
                public abstract GLib.SList<weak Gtk.RecentFilter> list_filters ();
                public abstract void remove_filter (Gtk.RecentFilter filter);
                public abstract void select_all ();
@@ -7137,10 +7202,10 @@ namespace Gtk {
                public Gtk.ScrollablePolicy vscroll_policy { get; set; }
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public interface StyleProvider {
+       public interface StyleProvider : GLib.Object {
                public abstract unowned Gtk.IconFactory get_icon_factory (Gtk.WidgetPath path);
-               public abstract unowned Gtk.StyleProperties get_style (Gtk.WidgetPath path);
-               public abstract bool get_style_property (Gtk.WidgetPath path, Gtk.StateFlags state, GLib.ParamSpec pspec, GLib.Value value);
+               public abstract Gtk.StyleProperties get_style (Gtk.WidgetPath path);
+               public abstract bool get_style_property (Gtk.WidgetPath path, Gtk.StateFlags state, GLib.ParamSpec pspec, out GLib.Value value);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
        public interface ToolShell : Gtk.Widget {
@@ -7155,12 +7220,12 @@ namespace Gtk {
                public abstract void rebuild_menu ();
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public interface TreeDragDest {
+       public interface TreeDragDest : GLib.Object {
                public abstract bool drag_data_received (Gtk.TreePath dest, Gtk.SelectionData selection_data);
                public abstract bool row_drop_possible (Gtk.TreePath dest_path, Gtk.SelectionData selection_data);
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public interface TreeDragSource {
+       public interface TreeDragSource : GLib.Object {
                public abstract bool drag_data_delete (Gtk.TreePath path);
                public abstract bool drag_data_get (Gtk.TreePath path, Gtk.SelectionData selection_data);
                public abstract bool row_draggable (Gtk.TreePath path);
@@ -7188,7 +7253,7 @@ namespace Gtk {
                public abstract bool iter_parent (out Gtk.TreeIter iter, Gtk.TreeIter child);
                public virtual bool iter_previous (ref Gtk.TreeIter iter);
                public virtual void ref_node (Gtk.TreeIter iter);
-               public void rows_reordered_with_length (Gtk.TreePath path, Gtk.TreeIter iter, int new_order, int length);
+               public void rows_reordered_with_length (Gtk.TreePath path, Gtk.TreeIter? iter, [CCode (array_length_pos = 3.1)] int[] new_order);
                public virtual void unref_node (Gtk.TreeIter iter);
                [HasEmitter]
                public signal void row_changed (Gtk.TreePath path, Gtk.TreeIter iter);
@@ -7212,6 +7277,12 @@ namespace Gtk {
                public signal void sort_column_changed ();
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public struct AccelGroupEntry {
+               public Gtk.AccelKey key;
+               public weak GLib.Closure closure;
+               public GLib.Quark accel_path_quark;
+       }
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public struct AccelKey {
                public uint accel_key;
                public Gdk.ModifierType accel_mods;
@@ -7228,11 +7299,7 @@ namespace Gtk {
                public weak Gtk.ActionCallback callback;
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public struct Allocation {
-               public int x;
-               public int y;
-               public int width;
-               public int height;
+       public struct Allocation : Gdk.Rectangle {
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
        public struct BindingArg {
@@ -7260,6 +7327,11 @@ namespace Gtk {
                public weak string default_locales;
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public struct PageRange {
+               public int start;
+               public int end;
+       }
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public struct RadioActionEntry {
                public weak string name;
                public weak string stock_id;
@@ -7280,6 +7352,24 @@ namespace Gtk {
                public bool is_private;
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public struct RecentFilterInfo {
+               public Gtk.RecentFilterFlags contains;
+               public weak string uri;
+               public weak string display_name;
+               public weak string mime_type;
+               [CCode (array_length = false, array_null_terminated = true)]
+               public weak string[] applications;
+               [CCode (array_length = false, array_null_terminated = true)]
+               public weak string[] groups;
+               public int age;
+       }
+       [CCode (cheader_filename = "gtk/gtk.h")]
+       public struct RequestedSize {
+               public void* data;
+               public int minimum_size;
+               public int natural_size;
+       }
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public struct Requisition {
                public int width;
                public int height;
@@ -7287,6 +7377,11 @@ namespace Gtk {
                public void free ();
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public struct SettingsValue {
+               public weak string origin;
+               public GLib.Value value;
+       }
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public struct StockItem {
                public weak string stock_id;
                public weak string label;
@@ -7307,21 +7402,20 @@ namespace Gtk {
                public void free ();
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public struct TextAppearance {
+               public Gdk.Color bg_color;
+               public Gdk.Color fg_color;
+               public int rise;
+               public uint underline;
+               public uint strikethrough;
+               public uint draw_bg;
+               public uint inside_selection;
+               public uint is_text;
+               [CCode (array_length = false)]
+               public Gdk.RGBA[] rgba;
+       }
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public struct TextIter {
-               public void* dummy1;
-               public void* dummy2;
-               public int dummy3;
-               public int dummy4;
-               public int dummy5;
-               public int dummy6;
-               public int dummy7;
-               public int dummy8;
-               public void* dummy9;
-               public void* dummy10;
-               public int dummy11;
-               public int dummy12;
-               public int dummy13;
-               public void* dummy14;
                public void assign (Gtk.TextIter other);
                public bool backward_char ();
                public bool backward_chars (int count);
@@ -7345,7 +7439,7 @@ namespace Gtk {
                public bool begins_tag (Gtk.TextTag? tag);
                public bool can_insert (bool default_editability);
                public int compare (Gtk.TextIter rhs);
-               public Gtk.TextIter copy ();
+               public Gtk.TextIter? copy ();
                public bool editable (bool default_setting);
                public bool ends_line ();
                public bool ends_sentence ();
@@ -7380,21 +7474,21 @@ namespace Gtk {
                public unichar get_char ();
                public int get_chars_in_line ();
                public unowned Gtk.TextChildAnchor get_child_anchor ();
-               public unowned Pango.Language get_language ();
+               public Pango.Language get_language ();
                public int get_line ();
                public int get_line_index ();
                public int get_line_offset ();
                public GLib.SList<weak Gtk.TextMark> get_marks ();
                public int get_offset ();
                public unowned Gdk.Pixbuf get_pixbuf ();
-               public unowned string get_slice (Gtk.TextIter end);
+               public string get_slice (Gtk.TextIter end);
                public GLib.SList<weak Gtk.TextTag> get_tags ();
-               public unowned string get_text (Gtk.TextIter end);
+               public string get_text (Gtk.TextIter end);
                public GLib.SList<weak Gtk.TextTag> get_toggled_tags (bool toggled_on);
                public int get_visible_line_index ();
                public int get_visible_line_offset ();
-               public unowned string get_visible_slice (Gtk.TextIter end);
-               public unowned string get_visible_text (Gtk.TextIter end);
+               public string get_visible_slice (Gtk.TextIter end);
+               public string get_visible_text (Gtk.TextIter end);
                public bool has_tag (Gtk.TextTag tag);
                public bool in_range (Gtk.TextIter start, Gtk.TextIter end);
                public bool inside_sentence ();
@@ -7534,8 +7628,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_CELL_RENDERER_ACCEL_MODE_")]
        public enum CellRendererAccelMode {
                GTK,
-               OTHER,
-               MODIFIER_TAP
+               OTHER
        }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_CELL_RENDERER_MODE_")]
        public enum CellRendererMode {
@@ -7561,15 +7654,6 @@ namespace Gtk {
                TOP_RIGHT,
                BOTTOM_RIGHT
        }
-       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_CSS_PROVIDER_ERROR_")]
-       public enum CssProviderError {
-               FAILED,
-               SYNTAX,
-               IMPORT,
-               NAME,
-               DEPRECATED,
-               UNKNOWN_VALUE
-       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_CSS_SECTION_")]
        public enum CssSectionType {
                DOCUMENT,
@@ -7601,7 +7685,10 @@ namespace Gtk {
                NO_CSS_CACHE,
                BASELINES,
                PIXEL_CACHE,
-               NO_PIXEL_CACHE
+               NO_PIXEL_CACHE,
+               INTERACTIVE,
+               TOUCHSCREEN,
+               ACTIONS
        }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_DELETE_")]
        public enum DeleteType {
@@ -7652,6 +7739,12 @@ namespace Gtk {
                PRIMARY,
                SECONDARY
        }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_EVENT_SEQUENCE_")]
+       public enum EventSequenceState {
+               NONE,
+               CLAIMED,
+               DENIED
+       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_EXPANDER_")]
        public enum ExpanderStyle {
                COLLAPSED,
@@ -7672,13 +7765,6 @@ namespace Gtk {
                ACCEPT_FILENAME,
                SELECT_AGAIN
        }
-       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_FILE_CHOOSER_ERROR_")]
-       public enum FileChooserError {
-               NONEXISTENT,
-               BAD_FILENAME,
-               ALREADY_EXISTS,
-               INCOMPLETE_HOSTNAME
-       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_FILE_FILTER_")]
        [Flags]
        public enum FileFilterFlags {
@@ -7706,7 +7792,11 @@ namespace Gtk {
                FORCE_SVG,
                USE_BUILTIN,
                GENERIC_FALLBACK,
-               FORCE_SIZE
+               FORCE_SIZE,
+               FORCE_REGULAR,
+               FORCE_SYMBOLIC,
+               DIR_LTR,
+               DIR_RTL
        }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_ICON_SIZE_")]
        public enum IconSize {
@@ -7718,11 +7808,6 @@ namespace Gtk {
                DND,
                DIALOG
        }
-       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_ICON_THEME_")]
-       public enum IconThemeError {
-               NOT_FOUND,
-               FAILED
-       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_ICON_VIEW_")]
        public enum IconViewDropPosition {
                NO_DROP,
@@ -7884,6 +7969,13 @@ namespace Gtk {
                EVEN,
                ODD
        }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_PAN_DIRECTION_")]
+       public enum PanDirection {
+               LEFT,
+               RIGHT,
+               UP,
+               DOWN
+       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_PATH_PRIO_")]
        public enum PathPriorityType {
                LOWEST,
@@ -7925,13 +8017,6 @@ namespace Gtk {
                HORIZONTAL,
                VERTICAL
        }
-       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_PRINT_ERROR_")]
-       public enum PrintError {
-               GENERAL,
-               INTERNAL_ERROR,
-               NOMEM,
-               INVALID_FILE
-       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_PRINT_OPERATION_ACTION_")]
        public enum PrintOperationAction {
                PRINT_DIALOG,
@@ -7972,6 +8057,13 @@ namespace Gtk {
                FINISHED,
                FINISHED_ABORTED
        }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_PHASE_")]
+       public enum PropagationPhase {
+               NONE,
+               CAPTURE,
+               BUBBLE,
+               TARGET
+       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RC_")]
        [Flags]
        public enum RcFlags {
@@ -8023,11 +8115,6 @@ namespace Gtk {
                UNBIND,
                LAST
        }
-       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RECENT_CHOOSER_ERROR_")]
-       public enum RecentChooserError {
-               NOT_FOUND,
-               INVALID_URI
-       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RECENT_FILTER_")]
        [Flags]
        public enum RecentFilterFlags {
@@ -8038,16 +8125,6 @@ namespace Gtk {
                GROUP,
                AGE
        }
-       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RECENT_MANAGER_ERROR_")]
-       public enum RecentManagerError {
-               NOT_FOUND,
-               INVALID_URI,
-               INVALID_ENCODING,
-               NOT_REGISTERED,
-               READ,
-               WRITE,
-               UNKNOWN
-       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RECENT_SORT_")]
        public enum RecentSortType {
                NONE,
@@ -8213,7 +8290,10 @@ namespace Gtk {
                UNDER_DOWN,
                UNDER_LEFT,
                UNDER_RIGHT,
-               OVER_UP_DOWN
+               OVER_UP_DOWN,
+               OVER_DOWN_UP,
+               OVER_LEFT_RIGHT,
+               OVER_RIGHT_LEFT
        }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_STATE_FLAG_")]
        [Flags]
@@ -8229,7 +8309,8 @@ namespace Gtk {
                DIR_LTR,
                DIR_RTL,
                LINK,
-               VISITED
+               VISITED,
+               CHECKED
        }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_STATE_")]
        public enum StateType {
@@ -8268,6 +8349,11 @@ namespace Gtk {
                TEXT_ONLY,
                CASE_INSENSITIVE
        }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_TEXT_VIEW_LAYER_")]
+       public enum TextViewLayer {
+               BELOW,
+               ABOVE
+       }
        [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_TEXT_WINDOW_")]
        public enum TextWindowType {
                PRIVATE,
@@ -8381,7 +8467,52 @@ namespace Gtk {
                VERSION_MISMATCH,
                DUPLICATE_ID,
                OBJECT_TYPE_REFUSED,
-               TEMPLATE_MISMATCH
+               TEMPLATE_MISMATCH,
+               INVALID_PROPERTY,
+               INVALID_SIGNAL
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_CSS_PROVIDER_ERROR_")]
+       public errordomain CssProviderError {
+               FAILED,
+               SYNTAX,
+               IMPORT,
+               NAME,
+               DEPRECATED,
+               UNKNOWN_VALUE
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_FILE_CHOOSER_ERROR_")]
+       public errordomain FileChooserError {
+               NONEXISTENT,
+               BAD_FILENAME,
+               ALREADY_EXISTS,
+               INCOMPLETE_HOSTNAME
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_ICON_THEME_")]
+       public errordomain IconThemeError {
+               NOT_FOUND,
+               FAILED
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_PRINT_ERROR_")]
+       public errordomain PrintError {
+               GENERAL,
+               INTERNAL_ERROR,
+               NOMEM,
+               INVALID_FILE
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RECENT_CHOOSER_ERROR_")]
+       public errordomain RecentChooserError {
+               NOT_FOUND,
+               INVALID_URI
+       }
+       [CCode (cheader_filename = "gtk/gtk.h", cprefix = "GTK_RECENT_MANAGER_ERROR_")]
+       public errordomain RecentManagerError {
+               NOT_FOUND,
+               INVALID_URI,
+               INVALID_ENCODING,
+               NOT_REGISTERED,
+               READ,
+               WRITE,
+               UNKNOWN
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate bool AccelGroupActivate (Gtk.AccelGroup accel_group, GLib.Object acceleratable, uint keyval, Gdk.ModifierType modifier);
@@ -8389,7 +8520,7 @@ namespace Gtk {
        public delegate bool AccelGroupFindFunc (Gtk.AccelKey key, GLib.Closure closure);
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
        public delegate void AccelMapForeach (void* data, string accel_path, uint accel_key, Gdk.ModifierType accel_mods, bool changed);
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_cname = "GCallback")]
        public delegate void ActionCallback (Gtk.Action action);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate int AssistantPageFunc (int current_page);
@@ -8422,9 +8553,9 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void ClipboardURIReceivedFunc (Gtk.Clipboard clipboard, [CCode (array_length = false, array_null_terminated = true)] string[] uris);
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
-       public delegate void ColorSelectionChangePaletteFunc (Gdk.Color colors, int n_colors);
+       public delegate void ColorSelectionChangePaletteFunc (Gdk.Color[] colors);
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
-       public delegate void ColorSelectionChangePaletteWithScreenFunc (Gdk.Screen screen, Gdk.Color colors, int n_colors);
+       public delegate void ColorSelectionChangePaletteWithScreenFunc (Gdk.Screen screen, Gdk.Color[] colors);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate bool EntryCompletionMatchFunc (Gtk.EntryCompletion completion, string key, Gtk.TreeIter iter);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -8439,11 +8570,13 @@ namespace Gtk {
        public delegate bool FontFilterFunc (Pango.FontFamily family, Pango.FontFace face);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void IconViewForeachFunc (Gtk.IconView icon_view, Gtk.TreePath path);
-       [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
-       public delegate int KeySnoopFunc (Gtk.Widget grab_widget, Gdk.EventKey event, void* func_data);
+       [CCode (cheader_filename = "gtk/gtk.h", instance_pos = 2.9)]
+       public delegate int KeySnoopFunc (Gtk.Widget grab_widget, Gdk.EventKey event);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate bool ListBoxFilterFunc (Gtk.ListBoxRow row);
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public delegate void ListBoxForeachFunc (Gtk.ListBox box, Gtk.ListBoxRow row);
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate int ListBoxSortFunc (Gtk.ListBoxRow row1, Gtk.ListBoxRow row2);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void ListBoxUpdateHeaderFunc (Gtk.ListBoxRow row, Gtk.ListBoxRow before);
@@ -8454,12 +8587,12 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
        public delegate void ModuleDisplayInitFunc (Gdk.Display display);
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
-       public delegate void ModuleInitFunc (int argc, string argv);
+       public delegate void ModuleInitFunc (string[]? argv);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void PageSetupDoneFunc (Gtk.PageSetup page_setup);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void PrintSettingsFunc (string key, string value);
-       [CCode (cheader_filename = "gtk/gtk.h")]
+       [CCode (cheader_filename = "gtk/gtk.h", type_cname = "GCallback")]
        public delegate void RadioActionCallback (Gtk.Action action, Gtk.Action current);
        [CCode (cheader_filename = "gtk/gtk.h", has_target = false)]
        public delegate bool RcPropertyParser (GLib.ParamSpec pspec, GLib.StringBuilder rc_string, GLib.Value property_value);
@@ -8480,7 +8613,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate bool TickCallback (Gtk.Widget widget, Gdk.FrameClock frame_clock);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public delegate unowned string TranslateFunc (string path);
+       public delegate string TranslateFunc (string path);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate void TreeCellDataFunc (Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel tree_model, Gtk.TreeIter iter);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -8488,7 +8621,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate int TreeIterCompareFunc (Gtk.TreeModel model, Gtk.TreeIter a, Gtk.TreeIter b);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public delegate void TreeModelFilterModifyFunc (Gtk.TreeModel model, Gtk.TreeIter iter, GLib.Value value, int column);
+       public delegate void TreeModelFilterModifyFunc (Gtk.TreeModel model, Gtk.TreeIter iter, out GLib.Value value, int column);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public delegate bool TreeModelFilterVisibleFunc (Gtk.TreeModel model, Gtk.TreeIter iter);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -8943,6 +9076,8 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_CONTEXT_MENU;
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public const string STYLE_CLASS_CSD;
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_CURSOR_HANDLE;
        [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_DEFAULT;
@@ -8961,6 +9096,8 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_EXPANDER;
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public const string STYLE_CLASS_FLAT;
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_FRAME;
        [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_GRIP;
@@ -8997,14 +9134,22 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_MENUITEM;
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public const string STYLE_CLASS_MESSAGE_DIALOG;
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_NEEDS_ATTENTION;
        [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_NOTEBOOK;
        [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_OSD;
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public const string STYLE_CLASS_OVERSHOOT;
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_PANE_SEPARATOR;
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public const string STYLE_CLASS_POPOVER;
+       [CCode (cheader_filename = "gtk/gtk.h")]
+       public const string STYLE_CLASS_POPUP;
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_PRIMARY_TOOLBAR;
        [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_PROGRESSBAR;
@@ -9043,8 +9188,12 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_SPINNER;
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public const string STYLE_CLASS_SUBTITLE;
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_SUGGESTED_ACTION;
        [CCode (cheader_filename = "gtk/gtk.h")]
+       public const string STYLE_CLASS_TITLE;
+       [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_TITLEBAR;
        [CCode (cheader_filename = "gtk/gtk.h")]
        public const string STYLE_CLASS_TOOLBAR;
@@ -9111,17 +9260,17 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static Gdk.ModifierType accelerator_get_default_mod_mask ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string accelerator_get_label (uint accelerator_key, Gdk.ModifierType accelerator_mods);
+       public static string accelerator_get_label (uint accelerator_key, Gdk.ModifierType accelerator_mods);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string accelerator_get_label_with_keycode (Gdk.Display display, uint accelerator_key, uint keycode, Gdk.ModifierType accelerator_mods);
+       public static string accelerator_get_label_with_keycode (Gdk.Display display, uint accelerator_key, uint keycode, Gdk.ModifierType accelerator_mods);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string accelerator_name (uint accelerator_key, Gdk.ModifierType accelerator_mods);
+       public static string accelerator_name (uint accelerator_key, Gdk.ModifierType accelerator_mods);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string accelerator_name_with_keycode (Gdk.Display display, uint accelerator_key, uint keycode, Gdk.ModifierType accelerator_mods);
+       public static string accelerator_name_with_keycode (Gdk.Display display, uint accelerator_key, uint keycode, Gdk.ModifierType accelerator_mods);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void accelerator_parse (string accelerator, out uint accelerator_key, out Gdk.ModifierType accelerator_mods);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static void accelerator_parse_with_keycode (string accelerator, uint accelerator_key, uint accelerator_codes, Gdk.ModifierType accelerator_mods);
+       public static void accelerator_parse_with_keycode (string accelerator, out uint accelerator_key, [CCode (array_length = false, array_null_terminated = true)] out uint[] accelerator_codes, out Gdk.ModifierType accelerator_mods);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void accelerator_set_default_mod_mask (Gdk.ModifierType default_mod_mask);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -9226,8 +9375,6 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static bool events_pending ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static void exit (int error_code);
-       [CCode (cheader_filename = "gtk/gtk.h")]
        public static uint get_binary_age ();
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static Gdk.Event get_current_event ();
@@ -9281,7 +9428,7 @@ namespace Gtk {
        public static bool init_with_args ([CCode (array_length_pos = 0.9)] ref unowned string[] argv, string? parameter_string, [CCode (array_length = false)] GLib.OptionEntry[] entries, string? translation_domain) throws GLib.Error;
        [CCode (cheader_filename = "gtk/gtk.h")]
        [Deprecated (since = "3.4")]
-       public static uint key_snooper_install (Gtk.KeySnoopFunc snooper, void* func_data);
+       public static uint key_snooper_install (Gtk.KeySnoopFunc snooper);
        [CCode (cheader_filename = "gtk/gtk.h")]
        [Deprecated (since = "3.4")]
        public static void key_snooper_remove (uint snooper_handler_id);
@@ -9358,45 +9505,45 @@ namespace Gtk {
        [Deprecated (since = "3.0")]
        public static void paint_vline (Gtk.Style style, Cairo.Context cr, Gtk.StateType state_type, Gtk.Widget? widget, string? detail, int y1_, int y2_, int x);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static bool parse_args (int argc, string[] argv);
+       public static bool parse_args ([CCode (array_length_pos = 0.5)] ref unowned string[] argv);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static GLib.Quark print_error_quark ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned Gtk.PageSetup print_run_page_setup_dialog (Gtk.Window parent, Gtk.PageSetup page_setup, Gtk.PrintSettings settings);
+       public static Gtk.PageSetup print_run_page_setup_dialog (Gtk.Window parent, Gtk.PageSetup page_setup, Gtk.PrintSettings settings);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static void print_run_page_setup_dialog_async (Gtk.Window parent, Gtk.PageSetup page_setup, Gtk.PrintSettings settings, Gtk.PageSetupDoneFunc done_cb, void* data);
+       public static void print_run_page_setup_dialog_async (Gtk.Window parent, Gtk.PageSetup page_setup, Gtk.PrintSettings settings, Gtk.PageSetupDoneFunc done_cb);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void propagate_event (Gtk.Widget widget, Gdk.Event event);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void rc_add_default_file (string filename);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_find_module_in_path (string module_file);
+       public static string rc_find_module_in_path (string module_file);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_find_pixmap_in_path (Gtk.Settings settings, GLib.Scanner scanner, string pixmap_file);
+       public static string rc_find_pixmap_in_path (Gtk.Settings settings, GLib.Scanner scanner, string pixmap_file);
+       [CCode (array_length = false, array_null_terminated = true, cheader_filename = "gtk/gtk.h")]
+       public static unowned string[] rc_get_default_files ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_get_default_files ();
+       public static string rc_get_im_module_file ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_get_im_module_file ();
+       public static string rc_get_im_module_path ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_get_im_module_path ();
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_get_module_dir ();
+       public static string rc_get_module_dir ();
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static unowned Gtk.Style rc_get_style (Gtk.Widget widget);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static unowned Gtk.Style? rc_get_style_by_paths (Gtk.Settings settings, string? widget_path, string? class_path, GLib.Type type);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string rc_get_theme_dir ();
+       public static string rc_get_theme_dir ();
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void rc_parse (string filename);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static uint rc_parse_color (GLib.Scanner scanner, Gdk.Color color);
+       public static uint rc_parse_color (GLib.Scanner scanner, out Gdk.Color color);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static uint rc_parse_color_full (GLib.Scanner scanner, Gtk.RcStyle style, Gdk.Color color);
+       public static uint rc_parse_color_full (GLib.Scanner scanner, Gtk.RcStyle style, out Gdk.Color color);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static uint rc_parse_priority (GLib.Scanner scanner, Gtk.PathPriorityType priority);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static uint rc_parse_state (GLib.Scanner scanner, Gtk.StateType state);
+       public static uint rc_parse_state (GLib.Scanner scanner, out Gtk.StateType state);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void rc_parse_string (string rc_string);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -9408,7 +9555,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static unowned GLib.Scanner rc_scanner_new ();
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static void rc_set_default_files (string filenames);
+       public static void rc_set_default_files ([CCode (array_length = false, array_null_terminated = true)] string[] filenames);
        [CCode (cheader_filename = "gtk/gtk.h")]
        [Deprecated (replacement = "StyleContext.render_activity", since = "vala-0.16")]
        public static void render_activity (Gtk.StyleContext context, Cairo.Context cr, double x, double y, double width, double height);
@@ -9444,7 +9591,7 @@ namespace Gtk {
        public static void render_icon (Gtk.StyleContext context, Cairo.Context cr, Gdk.Pixbuf pixbuf, double x, double y);
        [CCode (cheader_filename = "gtk/gtk.h")]
        [Deprecated (replacement = "StyleContext.render_icon_pixbuf", since = "vala-0.16")]
-       public static unowned Gdk.Pixbuf render_icon_pixbuf (Gtk.StyleContext context, Gtk.IconSource source, Gtk.IconSize size);
+       public static Gdk.Pixbuf render_icon_pixbuf (Gtk.StyleContext context, Gtk.IconSource source, Gtk.IconSize size);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void render_icon_surface (Gtk.StyleContext context, Cairo.Context cr, Cairo.Surface surface, double x, double y);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -9466,7 +9613,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void selection_add_target (Gtk.Widget widget, Gdk.Atom selection, Gdk.Atom target, uint info);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static void selection_add_targets (Gtk.Widget widget, Gdk.Atom selection, Gtk.TargetEntry[] targets, uint ntargets);
+       public static void selection_add_targets (Gtk.Widget widget, Gdk.Atom selection, [CCode (array_length_pos = 3.1, array_length_type = "guint")] Gtk.TargetEntry[] targets);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void selection_clear_targets (Gtk.Widget widget, Gdk.Atom selection);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -9480,8 +9627,6 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void set_debug_flags (uint flags);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string set_locale ();
-       [CCode (cheader_filename = "gtk/gtk.h")]
        public static void show_about_dialog (Gtk.Window? parent, ...);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static bool show_uri (Gdk.Screen? screen, string uri, uint32 timestamp) throws GLib.Error;
@@ -9514,7 +9659,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static unowned Gtk.Widget test_create_widget (GLib.Type widget_type, ...);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned Gtk.Widget test_display_button_window (string window_title, string dialog_text);
+       public static Gtk.Widget test_display_button_window (string window_title, string dialog_text, ...);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static unowned Gtk.Widget test_find_label (Gtk.Widget widget, string label_pattern);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -9523,8 +9668,8 @@ namespace Gtk {
        public static unowned Gtk.Widget test_find_widget (Gtk.Widget widget, string label_pattern, GLib.Type widget_type);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void test_init ([CCode (array_length_pos = 0.9)] ref unowned string[] argvp, ...);
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned GLib.Type[] test_list_all_types (uint n_types);
+       [CCode (array_length = false, array_length_type = "guint", array_null_terminated = true, cheader_filename = "gtk/gtk.h")]
+       public static unowned GLib.Type[] test_list_all_types ();
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void test_register_all_types ();
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -9534,7 +9679,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static bool test_spin_button_click (Gtk.SpinButton spinner, uint button, bool upwards);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static unowned string test_text_get (Gtk.Widget widget);
+       public static string test_text_get (Gtk.Widget widget);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void test_text_set (Gtk.Widget widget, string str);
        [CCode (cheader_filename = "gtk/gtk.h")]
@@ -9544,7 +9689,7 @@ namespace Gtk {
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static void test_widget_wait_for_draw (Gtk.Widget widget);
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public static bool tree_get_row_drag_data (Gtk.SelectionData selection_data, out unowned Gtk.TreeModel tree_model, out unowned Gtk.TreePath path);
+       public static bool tree_get_row_drag_data (Gtk.SelectionData selection_data, out Gtk.TreeModel tree_model, out Gtk.TreePath path);
        [CCode (cheader_filename = "gtk/gtk.h")]
        public static bool tree_set_row_drag_data (Gtk.SelectionData selection_data, Gtk.TreeModel tree_model, Gtk.TreePath path);
 }
index d1f501b..5b0b9af 100644 (file)
@@ -1,6 +1,7 @@
 /* gtksourceview-3.0.vapi generated by vapigen, do not modify. */
 
 [CCode (cprefix = "Gtk", gir_namespace = "GtkSource", gir_version = "3.0", lower_case_cprefix = "gtk_")]
+[Deprecated (replacement = "bindings distributed with gtksourceview-3.0", since = "3.13.90")]
 namespace Gtk {
        namespace SourceUtils {
                [CCode (cheader_filename = "gtksourceview/gtksource.h")]
@@ -24,18 +25,20 @@ namespace Gtk {
                public string[] get_context_classes_at_iter (Gtk.TextIter iter);
                public bool get_highlight_matching_brackets ();
                public bool get_highlight_syntax ();
+               public bool get_implicit_trailing_newline ();
                public unowned Gtk.SourceLanguage get_language ();
                public int get_max_undo_levels ();
                public GLib.SList<weak Gtk.SourceMark> get_source_marks_at_iter (Gtk.TextIter iter, string? category);
                public GLib.SList<weak Gtk.SourceMark> get_source_marks_at_line (int line, string? category);
                public unowned Gtk.SourceStyleScheme get_style_scheme ();
-               public unowned Gtk.SourceUndoManager get_undo_manager ();
-               public bool iter_backward_to_context_class_toggle (Gtk.TextIter iter, string context_class);
-               public bool iter_forward_to_context_class_toggle (Gtk.TextIter iter, string context_class);
+               public unowned Gtk.SourceUndoManager? get_undo_manager ();
+               public bool iter_backward_to_context_class_toggle (ref Gtk.TextIter iter, string context_class);
+               public bool iter_forward_to_context_class_toggle (ref Gtk.TextIter iter, string context_class);
                public bool iter_has_context_class (Gtk.TextIter iter, string context_class);
                public void remove_source_marks (Gtk.TextIter start, Gtk.TextIter end, string? category);
                public void set_highlight_matching_brackets (bool highlight);
                public void set_highlight_syntax (bool highlight);
+               public void set_implicit_trailing_newline (bool implicit_trailing_newline);
                public void set_language (Gtk.SourceLanguage? language);
                public void set_max_undo_levels (int max_undo_levels);
                public void set_style_scheme (Gtk.SourceStyleScheme? scheme);
@@ -48,6 +51,7 @@ namespace Gtk {
                public bool can_undo { get; }
                public bool highlight_matching_brackets { get; set; }
                public bool highlight_syntax { get; set; }
+               public bool implicit_trailing_newline { get; set construct; }
                public Gtk.SourceLanguage language { get; set; }
                public int max_undo_levels { get; set; }
                public Gtk.SourceStyleScheme style_scheme { get; set; }
@@ -62,7 +66,7 @@ namespace Gtk {
        }
        [CCode (cheader_filename = "gtksourceview/gtksource.h", type_id = "gtk_source_completion_get_type ()")]
        [GIR (name = "Completion")]
-       public class SourceCompletion : GLib.Object {
+       public class SourceCompletion : GLib.Object, Gtk.Buildable {
                [CCode (has_construct_function = false)]
                protected SourceCompletion ();
                public bool add_provider (Gtk.SourceCompletionProvider provider) throws GLib.Error;
@@ -113,7 +117,7 @@ namespace Gtk {
                public Gtk.SourceCompletionActivation get_activation ();
                public Gtk.TextIter get_iter ();
                [NoAccessorMethod]
-               public Gtk.SourceCompletionActivation activation { get; set; }
+               public Gtk.SourceCompletionActivation activation { get; set construct; }
                [NoAccessorMethod]
                public Gtk.SourceCompletion completion { owned get; construct; }
                [NoAccessorMethod]
@@ -178,6 +182,87 @@ namespace Gtk {
                [NoAccessorMethod]
                public uint scan_batch_size { get; set construct; }
        }
+       [CCode (cheader_filename = "gtksourceview/gtksource.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "gtk_source_encoding_get_type ()")]
+       [Compact]
+       [GIR (name = "Encoding")]
+       public class SourceEncoding {
+               public Gtk.SourceEncoding copy ();
+               [CCode (cname = "gtk_source_encoding_get_all")]
+               public static GLib.SList<weak Gtk.SourceEncoding> et_all ();
+               [CCode (cname = "gtk_source_encoding_get_current")]
+               public static unowned Gtk.SourceEncoding et_current ();
+               [CCode (cname = "gtk_source_encoding_get_from_charset")]
+               public static unowned Gtk.SourceEncoding? et_from_charset (string charset);
+               [CCode (cname = "gtk_source_encoding_get_utf8")]
+               public static unowned Gtk.SourceEncoding et_utf8 ();
+               public void free ();
+               public unowned string get_charset ();
+               public unowned string get_name ();
+               public string to_string ();
+       }
+       [CCode (cheader_filename = "gtksourceview/gtksource.h", type_id = "gtk_source_file_get_type ()")]
+       [GIR (name = "File")]
+       public class SourceFile : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public SourceFile ();
+               public Gtk.SourceCompressionType get_compression_type ();
+               public unowned Gtk.SourceEncoding get_encoding ();
+               public unowned GLib.File get_location ();
+               public Gtk.SourceNewlineType get_newline_type ();
+               public void set_location (GLib.File? location);
+               public Gtk.SourceCompressionType compression_type { get; }
+               public Gtk.SourceEncoding encoding { get; }
+               public GLib.File location { get; set; }
+               public Gtk.SourceNewlineType newline_type { get; }
+       }
+       [CCode (cheader_filename = "gtksourceview/gtksource.h", type_id = "gtk_source_file_loader_get_type ()")]
+       [GIR (name = "FileLoader")]
+       public class SourceFileLoader : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public SourceFileLoader (Gtk.SourceBuffer buffer, Gtk.SourceFile file);
+               [CCode (has_construct_function = false)]
+               public SourceFileLoader.from_stream (Gtk.SourceBuffer buffer, Gtk.SourceFile file, GLib.InputStream stream);
+               public unowned Gtk.SourceBuffer get_buffer ();
+               public Gtk.SourceCompressionType get_compression_type ();
+               public unowned Gtk.SourceEncoding get_encoding ();
+               public unowned Gtk.SourceFile get_file ();
+               public unowned GLib.InputStream get_input_stream ();
+               public unowned GLib.File get_location ();
+               public Gtk.SourceNewlineType get_newline_type ();
+               public async bool load_async (int io_priority, GLib.Cancellable? cancellable, owned GLib.FileProgressCallback? progress_callback) throws GLib.Error;
+               public void set_candidate_encodings (GLib.SList<Gtk.SourceEncoding> candidate_encodings);
+               public Gtk.SourceBuffer buffer { get; construct; }
+               public Gtk.SourceFile file { get; construct; }
+               public GLib.InputStream input_stream { get; construct; }
+               public GLib.File location { get; construct; }
+       }
+       [CCode (cheader_filename = "gtksourceview/gtksource.h", type_id = "gtk_source_file_saver_get_type ()")]
+       [GIR (name = "FileSaver")]
+       public class SourceFileSaver : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public SourceFileSaver (Gtk.SourceBuffer buffer, Gtk.SourceFile file);
+               public unowned Gtk.SourceBuffer get_buffer ();
+               public Gtk.SourceCompressionType get_compression_type ();
+               public unowned Gtk.SourceEncoding get_encoding ();
+               public unowned Gtk.SourceFile get_file ();
+               public Gtk.SourceFileSaverFlags get_flags ();
+               public unowned GLib.File get_location ();
+               public Gtk.SourceNewlineType get_newline_type ();
+               public async bool save_async (int io_priority, GLib.Cancellable? cancellable, owned GLib.FileProgressCallback? progress_callback) throws GLib.Error;
+               public void set_compression_type (Gtk.SourceCompressionType compression_type);
+               public void set_encoding (Gtk.SourceEncoding? encoding);
+               public void set_flags (Gtk.SourceFileSaverFlags flags);
+               public void set_newline_type (Gtk.SourceNewlineType newline_type);
+               [CCode (has_construct_function = false)]
+               public SourceFileSaver.with_target (Gtk.SourceBuffer buffer, Gtk.SourceFile file, GLib.File target_location);
+               public Gtk.SourceBuffer buffer { get; construct; }
+               public Gtk.SourceCompressionType compression_type { get; set construct; }
+               public Gtk.SourceEncoding encoding { get; set construct; }
+               public Gtk.SourceFile file { get; construct; }
+               public Gtk.SourceFileSaverFlags flags { get; set construct; }
+               public GLib.File location { get; construct; }
+               public Gtk.SourceNewlineType newline_type { get; set construct; }
+       }
        [CCode (cheader_filename = "gtksourceview/gtksource.h", type_id = "gtk_source_gutter_get_type ()")]
        [GIR (name = "Gutter")]
        public class SourceGutter : GLib.Object {
@@ -323,12 +408,12 @@ namespace Gtk {
                [CCode (has_construct_function = false)]
                public SourceLanguageManager ();
                public static unowned Gtk.SourceLanguageManager get_default ();
-               public unowned Gtk.SourceLanguage get_language (string id);
+               public unowned Gtk.SourceLanguage? get_language (string id);
                [CCode (array_length = false, array_null_terminated = true)]
-               public unowned string[] get_language_ids ();
+               public unowned string[]? get_language_ids ();
                [CCode (array_length = false, array_null_terminated = true)]
                public unowned string[] get_search_path ();
-               public unowned Gtk.SourceLanguage guess_language (string? filename, string? content_type);
+               public unowned Gtk.SourceLanguage? guess_language (string? filename, string? content_type);
                public void set_search_path ([CCode (array_length = false, array_null_terminated = true)] string[]? dirs);
                [CCode (array_length = false, array_null_terminated = true)]
                public string[] language_ids { get; }
@@ -341,8 +426,8 @@ namespace Gtk {
                [CCode (has_construct_function = false)]
                public SourceMark (string name, string category);
                public unowned string get_category ();
-               public unowned Gtk.SourceMark next (string? category);
-               public unowned Gtk.SourceMark prev (string category);
+               public unowned Gtk.SourceMark? next (string? category);
+               public unowned Gtk.SourceMark? prev (string category);
                public string category { get; construct; }
        }
        [CCode (cheader_filename = "gtksourceview/gtksource.h", type_id = "gtk_source_mark_attributes_get_type ()")]
@@ -463,7 +548,7 @@ namespace Gtk {
                public bool get_at_word_boundaries ();
                public bool get_case_sensitive ();
                public bool get_regex_enabled ();
-               public unowned string get_search_text ();
+               public unowned string? get_search_text ();
                public bool get_wrap_around ();
                public void set_at_word_boundaries (bool at_word_boundaries);
                public void set_case_sensitive (bool case_sensitive);
@@ -521,12 +606,12 @@ namespace Gtk {
                [CCode (has_construct_function = false)]
                protected SourceStyleScheme ();
                [CCode (array_length = false, array_null_terminated = true)]
-               public unowned string[] get_authors ();
-               public unowned string get_description ();
-               public unowned string get_filename ();
+               public unowned string[]? get_authors ();
+               public unowned string? get_description ();
+               public unowned string? get_filename ();
                public unowned string get_id ();
                public unowned string get_name ();
-               public unowned Gtk.SourceStyle get_style (string style_id);
+               public unowned Gtk.SourceStyle? get_style (string style_id);
                public string description { get; }
                public string filename { get; }
                public string id { get; construct; }
@@ -674,6 +759,12 @@ namespace Gtk {
                INTERACTIVE,
                USER_REQUESTED
        }
+       [CCode (cheader_filename = "gtksourceview/gtksource.h", cprefix = "GTK_SOURCE_COMPRESSION_TYPE_", type_id = "gtk_source_compression_type_get_type ()")]
+       [GIR (name = "CompressionType")]
+       public enum SourceCompressionType {
+               NONE,
+               GZIP
+       }
        [CCode (cheader_filename = "gtksourceview/gtksource.h", cprefix = "GTK_SOURCE_DRAW_SPACES_", type_id = "gtk_source_draw_spaces_flags_get_type ()")]
        [Flags]
        [GIR (name = "DrawSpacesFlags")]
@@ -687,6 +778,15 @@ namespace Gtk {
                TRAILING,
                ALL
        }
+       [CCode (cheader_filename = "gtksourceview/gtksource.h", cprefix = "GTK_SOURCE_FILE_SAVER_FLAGS_", type_id = "gtk_source_file_saver_flags_get_type ()")]
+       [Flags]
+       [GIR (name = "FileSaverFlags")]
+       public enum SourceFileSaverFlags {
+               NONE,
+               IGNORE_INVALID_CHARS,
+               IGNORE_MODIFICATION_TIME,
+               CREATE_BACKUP
+       }
        [CCode (cheader_filename = "gtksourceview/gtksource.h", cprefix = "GTK_SOURCE_GUTTER_RENDERER_ALIGNMENT_MODE_", type_id = "gtk_source_gutter_renderer_alignment_mode_get_type ()")]
        [GIR (name = "GutterRendererAlignmentMode")]
        public enum SourceGutterRendererAlignmentMode {
@@ -703,6 +803,13 @@ namespace Gtk {
                PRELIT,
                SELECTED
        }
+       [CCode (cheader_filename = "gtksourceview/gtksource.h", cprefix = "GTK_SOURCE_NEWLINE_TYPE_", type_id = "gtk_source_newline_type_get_type ()")]
+       [GIR (name = "NewlineType")]
+       public enum SourceNewlineType {
+               LF,
+               CR,
+               CR_LF
+       }
        [CCode (cheader_filename = "gtksourceview/gtksource.h", cprefix = "GTK_SOURCE_SMART_HOME_END_", type_id = "gtk_source_smart_home_end_type_get_type ()")]
        [GIR (name = "SmartHomeEndType")]
        public enum SourceSmartHomeEndType {
@@ -725,4 +832,21 @@ namespace Gtk {
                [CCode (cname = "gtk_source_completion_error_quark")]
                public static GLib.Quark uark ();
        }
+       [CCode (cheader_filename = "gtksourceview/gtksource.h", cprefix = "GTK_SOURCE_FILE_LOADER_ERROR_")]
+       [GIR (name = "FileLoaderError")]
+       public errordomain SourceFileLoaderError {
+               TOO_BIG,
+               ENCODING_AUTO_DETECTION_FAILED,
+               CONVERSION_FALLBACK;
+               [CCode (cname = "gtk_source_file_loader_error_quark")]
+               public static GLib.Quark uark ();
+       }
+       [CCode (cheader_filename = "gtksourceview/gtksource.h", cprefix = "GTK_SOURCE_FILE_SAVER_ERROR_")]
+       [GIR (name = "FileSaverError")]
+       public errordomain SourceFileSaverError {
+               INVALID_CHARS,
+               EXTERNALLY_MODIFIED;
+               [CCode (cname = "gtk_source_file_saver_error_quark")]
+               public static GLib.Quark uark ();
+       }
 }
index d0db744..e5f432c 100644 (file)
@@ -51,11 +51,14 @@ namespace GUdev {
                [CCode (array_length = false, array_null_terminated = true)]
                public unowned string[]? get_sysfs_attr_as_strv (string name);
                public uint64 get_sysfs_attr_as_uint64 (string name);
+               [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_sysfs_attr_keys ();
                public unowned string get_sysfs_path ();
                [CCode (array_length = false, array_null_terminated = true)]
                public unowned string[] get_tags ();
                public uint64 get_usec_since_initialized ();
                public bool has_property (string key);
+               public bool has_sysfs_attr (string key);
        }
        [CCode (cheader_filename = "gudev/gudev.h", type_id = "g_udev_enumerator_get_type ()")]
        public class Enumerator : GLib.Object {
index 2688465..3afb12a 100644 (file)
@@ -27,7 +27,7 @@ namespace Json {
                public bool get_null_element (uint index_);
                public unowned Json.Object get_object_element (uint index_);
                public unowned string get_string_element (uint index_);
-               public Json.Array @ref ();
+               public unowned Json.Array @ref ();
                public void remove_element (uint index_);
                [CCode (cname = "json_array_sized_new", has_construct_function = false)]
                public Array.sized (uint n_elements);
@@ -76,7 +76,8 @@ namespace Json {
        public class Node {
                [CCode (has_construct_function = false)]
                public Node (Json.NodeType type);
-               public static Json.Node alloc ();
+               [CCode (cname = "json_node_alloc", has_construct_function = false)]
+               public Node.alloc ();
                public Json.Node copy ();
                public Json.Array dup_array ();
                public Json.Object dup_object ();
@@ -134,7 +135,7 @@ namespace Json {
                public unowned string get_string_member (string member_name);
                public GLib.List<weak Json.Node> get_values ();
                public bool has_member (string member_name);
-               public Json.Object @ref ();
+               public unowned Json.Object @ref ();
                public void remove_member (string member_name);
                public void set_array_member (string member_name, owned Json.Array value);
                public void set_boolean_member (string member_name, bool value);
@@ -150,7 +151,6 @@ namespace Json {
        public class Parser : GLib.Object {
                [CCode (has_construct_function = false)]
                public Parser ();
-               public static GLib.Quark error_quark ();
                public uint get_current_line ();
                public uint get_current_pos ();
                public unowned Json.Node? get_root ();
@@ -174,7 +174,6 @@ namespace Json {
                [CCode (has_construct_function = false)]
                public Path ();
                public bool compile (string expression) throws GLib.Error;
-               public static GLib.Quark error_quark ();
                public Json.Node match (Json.Node root);
                public static Json.Node query (string expression, Json.Node root) throws GLib.Error;
        }
@@ -186,7 +185,6 @@ namespace Json {
                public int count_members ();
                public void end_element ();
                public void end_member ();
-               public static GLib.Quark error_quark ();
                public bool get_boolean_value ();
                public double get_double_value ();
                public unowned GLib.Error get_error ();
@@ -218,37 +216,40 @@ namespace Json {
                public abstract Json.Node serialize_property (string property_name, GLib.Value value, GLib.ParamSpec pspec);
                public abstract void set_property (GLib.ParamSpec pspec, GLib.Value value);
        }
-       [CCode (cheader_filename = "json-glib/json-glib.h", cprefix = "JSON_NODE_", has_type_id = false)]
+       [CCode (cheader_filename = "json-glib/json-glib.h", cprefix = "JSON_NODE_", type_id = "json_node_type_get_type ()")]
        public enum NodeType {
                OBJECT,
                ARRAY,
                VALUE,
                NULL
        }
-       [CCode (cheader_filename = "json-glib/json-glib.h", cprefix = "JSON_PARSER_ERROR_", has_type_id = false)]
-       public enum ParserError {
+       [CCode (cheader_filename = "json-glib/json-glib.h", cprefix = "JSON_PARSER_ERROR_")]
+       public errordomain ParserError {
                PARSE,
                TRAILING_COMMA,
                MISSING_COMMA,
                MISSING_COLON,
                INVALID_BAREWORD,
                EMPTY_MEMBER_NAME,
-               UNKNOWN
+               INVALID_DATA,
+               UNKNOWN;
+               public static GLib.Quark quark ();
        }
-       [CCode (cheader_filename = "json-glib/json-glib.h", cprefix = "JSON_PATH_ERROR_INVALID_", has_type_id = false)]
-       public enum PathError {
-               [CCode (cname = "JSON_PATH_ERROR_INVALID_QUERY")]
-               PATH_ERROR_INVALID_QUERY
+       [CCode (cheader_filename = "json-glib/json-glib.h", cprefix = "JSON_PATH_ERROR_INVALID_")]
+       public errordomain PathError {
+               QUERY;
+               public static GLib.Quark quark ();
        }
-       [CCode (cheader_filename = "json-glib/json-glib.h", cprefix = "JSON_READER_ERROR_", has_type_id = false)]
-       public enum ReaderError {
+       [CCode (cheader_filename = "json-glib/json-glib.h", cprefix = "JSON_READER_ERROR_")]
+       public errordomain ReaderError {
                NO_ARRAY,
                INVALID_INDEX,
                NO_OBJECT,
                INVALID_MEMBER,
                INVALID_NODE,
                NO_VALUE,
-               INVALID_TYPE
+               INVALID_TYPE;
+               public static GLib.Quark quark ();
        }
        [CCode (cheader_filename = "json-glib/json-glib.h", instance_pos = 3.9)]
        public delegate void ArrayForeach (Json.Array array, uint index_, Json.Node element_node);
@@ -258,15 +259,15 @@ namespace Json {
        public delegate Json.Node BoxedSerializeFunc (void* boxed);
        [CCode (cheader_filename = "json-glib/json-glib.h", instance_pos = 3.9)]
        public delegate void ObjectForeach (Json.Object object, string member_name, Json.Node member_node);
-       [CCode (cheader_filename = "json-glib/json-glib.h")]
+       [CCode (cheader_filename = "json-glib/json-glib.h", cname = "JSON_MAJOR_VERSION")]
        public const int MAJOR_VERSION;
-       [CCode (cheader_filename = "json-glib/json-glib.h")]
+       [CCode (cheader_filename = "json-glib/json-glib.h", cname = "JSON_MICRO_VERSION")]
        public const int MICRO_VERSION;
-       [CCode (cheader_filename = "json-glib/json-glib.h")]
+       [CCode (cheader_filename = "json-glib/json-glib.h", cname = "JSON_MINOR_VERSION")]
        public const int MINOR_VERSION;
        [CCode (cheader_filename = "json-glib/json-glib.h")]
        public const int VERSION_HEX;
-       [CCode (cheader_filename = "json-glib/json-glib.h")]
+       [CCode (cheader_filename = "json-glib/json-glib.h", cname = "JSON_VERSION_S")]
        public const string VERSION_S;
        [CCode (cheader_filename = "json-glib/json-glib.h")]
        public static bool boxed_can_deserialize (GLib.Type gboxed_type, Json.NodeType node_type);
index 7fde618..6f48333 100644 (file)
@@ -53,14 +53,38 @@ namespace Archive {
                FAILED
        }
 
+       // see libarchive/archive.h, l. 218 ff.
        [CCode (cname="int", has_type_id = false)]
+       public enum Filter {
+               NONE,
+               GZIP,
+               BZIP2,
+               COMPRESS,
+               PROGRAM,
+               LZMA,
+               XZ,
+               UU,
+               RPM,
+               LZIP,
+               LRZIP,
+               LZOP,
+               GRZIP
+       }
+
+       [CCode (cname="int", has_type_id = false)]
+       [Deprecated (since="3.0", replacement="Filter")]
        public enum Compression {
                NONE,
                GZIP,
                BZIP2,
                COMPRESS,
                PROGRAM,
-               LZMA
+               LZMA,
+               XZ,
+               UU,
+               RPM,
+               LZIP,
+               LRZIP
        }
 
        [CCode (cname="int", has_type_id = false)]
@@ -113,10 +137,20 @@ namespace Archive {
                public int64 position_compressed ();
                public int64 position_uncompressed ();
 
+               [Deprecated (since="3.0", replacement="Archive.filter_code (0)")]
                public Compression compression ();
                public Format format ();
+               // Filter #0 is the one closest to the format, -1 is a synonym
+               // for the last filter, which is always the pseudo-filter that
+               // wraps the client callbacks. (libarchive/archive.h, l. 955)
+               public Filter filter_code (int filter_no);
+
                public unowned string compression_name ();
                public unowned string format_name ();
+               public unowned string filter_name (int filter_no);
+
+               public int filter_count ();
+               public int file_count ();
 
                public int errno ();
                public unowned string error_string ();
@@ -130,23 +164,59 @@ namespace Archive {
        [CCode (cname="struct archive", free_function="archive_read_finish")]
        public class Read : Archive {
                public Read ();
+               // see https://github.com/libarchive/libarchive/wiki/Libarchive3#functions-that-are-being-renamed
+               [Deprecated (since="3.0", replacement="Archive.Read.support_filter_all ()")]
                public Result support_compression_all ();
+               [Deprecated (since="3.0", replacement="Archive.Read.support_filter_bzip2 ()")]
                public Result support_compression_bzip2 ();
+               [Deprecated (since="3.0", replacement="Archive.Read.support_filter_compress ()")]
                public Result support_compression_compress ();
+               [Deprecated (since="3.0", replacement="Archive.Read.support_filter_gzip ()")]
                public Result support_compression_gzip ();
+               [Deprecated (since="3.0", replacement="Archive.Read.support_filter_lzma ()")]
                public Result support_compression_lzma ();
+               [Deprecated (since="3.0", replacement="Archive.Read.support_filter_none ()")]
                public Result support_compression_none ();
+               [Deprecated (since="3.0", replacement="Archive.Read.support_filter_program (string command)")]
                public Result support_compression_program (string command);
+               public Result support_filter_all ();
+               public Result support_filter_bzip2 ();
+               public Result support_filter_compress ();
+               public Result support_filter_gzip ();
+               public Result support_filter_grzip ();
+               public Result support_filter_lrzip ();
+               public Result support_filter_lzip ();
+               public Result support_filter_lzma ();
+               public Result support_filter_lzop ();
+               public Result support_filter_none ();
+               public Result support_filter_program (string command);
+               // TODO support_filter_program_signature (string, const void *, size_t)
+               public Result support_filter_rpm ();
+               public Result support_filter_uu ();
+               public Result support_filter_xz ();
+               public Result support_format_7zip ();
                public Result support_format_all ();
                public Result support_format_ar ();
+               public Result support_format_by_code (Format format_code);
+               public Result support_format_cab ();
                public Result support_format_cpio ();
                public Result support_format_empty ();
                public Result support_format_gnutar ();
                public Result support_format_iso9660 ();
+               public Result support_format_lha ();
                public Result support_format_mtree ();
+               public Result support_format_rar ();
                public Result support_format_raw ();
                public Result support_format_tar ();
+               public Result support_format_xar ();
                public Result support_format_zip ();
+               public Result support_format_zip_streamable ();
+               public Result support_format_zip_seekable ();
+
+               public Result set_format (Format format_code);
+               public Result append_filter (Filter filter_code);
+               public Result append_filter_program (string cmd);
+               // TODO append_filter_program_signature (string, const void *, size_t);
 
                public Result open (
                        [CCode (delegate_target_pos = 0.9)] OpenCallback ocb,
@@ -189,23 +259,53 @@ namespace Archive {
        [CCode (cname = "struct archive", free_function="archive_write_finish")]
        public class Write : Archive {
                public Write ();
+               // see https://github.com/libarchive/libarchive/wiki/Libarchive3#functions-that-are-being-renamed
+               [Deprecated (since="3.0", replacement="Archive.Write.add_filter_bzip2 ()")]
                public Result set_compression_bzip2 ();
+               [Deprecated (since="3.0", replacement="Archive.Write.add_filter_compress ()")]
                public Result set_compression_compress ();
+               [Deprecated (since="3.0", replacement="Archive.Write.add_filter_gzip ()")]
                public Result set_compression_gzip ();
+               [Deprecated (since="3.0", replacement="Archive.Write.add_filter_lzma ()")]
+               public Result set_compression_lzma ();
+               [Deprecated (since="3.0", replacement="Archive.Write.add_filter_none ()")]
                public Result set_compression_none ();
                public Result set_compression_program (string cmd);
+               public Result add_filter (Filter filter_code);
+               public Result add_filter_by_name (string name);
+               public Result add_filter_b64encode ();
+               public Result add_filter_bzip2 ();
+               public Result add_filter_compress ();
+               public Result add_filter_grzip ();
+               public Result add_filter_gzip ();
+               public Result add_filter_lrzip ();
+               public Result add_filter_lzip ();
+               public Result add_filter_lzma ();
+               public Result add_filter_lzop ();
+               public Result add_filter_none ();
+               public Result add_filter_program (string cmd);
+               public Result add_filter_uuencode ();
+               public Result add_filter_xz ();
                public Result set_format (Format format);
                public Result set_format_by_name (string name);
+               public Result set_format_7zip ();
                public Result set_format_ar_bsd ();
                public Result set_format_ar_svr4 ();
                public Result set_format_cpio ();
                public Result set_format_cpio_newc ();
+               public Result set_format_gnutar ();
+               public Result set_format_iso9660 ();
                public Result set_format_mtree ();
+               public Result set_format_mtree_classic ();
                public Result set_format_pax ();
                public Result set_format_pax_restricted ();
+               public Result set_format_raw ();
                public Result set_format_shar ();
                public Result set_format_shar_dump ();
                public Result set_format_ustar ();
+               public Result set_format_v7tar ();
+               public Result set_format_xar ();
+               public Result set_format_zip ();
 
                public Result set_bytes_per_block (int bytes_per_block);
                public int get_bytes_per_block ();
index 5d78cd9..585b69e 100644 (file)
@@ -44,7 +44,7 @@ namespace GData {
                [CCode (cheader_filename = "gdata/gdata.h", cname = "GDATA_DOCUMENTS_PRESENTATION_PPT")]
                public const string PPT;
                [CCode (cheader_filename = "gdata/gdata.h", cname = "GDATA_DOCUMENTS_PRESENTATION_SWF")]
-               [Deprecated (since = "SWF export has been deprecated in the protocol due to low demand for it; PDF export (using %GDATA_DOCUMENTS_PRESENTATION_PDF) is recommended instead. (Since")]
+               [Deprecated]
                public const string SWF;
                [CCode (cheader_filename = "gdata/gdata.h", cname = "GDATA_DOCUMENTS_PRESENTATION_TXT")]
                public const string TXT;
@@ -96,11 +96,13 @@ namespace GData {
                [CCode (has_construct_function = false)]
                public AccessRule (string id);
                public int64 get_edited ();
+               public unowned string get_key ();
                public unowned string get_role ();
                public void get_scope (out unowned string type, out unowned string value);
                public void set_role (string role);
                public void set_scope (string type, string? value);
                public int64 edited { get; }
+               public string key { get; }
                public string role { get; set; }
                [NoAccessorMethod]
                public string scope_type { owned get; set; }
@@ -307,13 +309,19 @@ namespace GData {
                public ClientLoginAuthorizer.for_authorization_domains (string client_id, GLib.List<GData.AuthorizationDomain> authorization_domains);
                public unowned string get_client_id ();
                public unowned string get_password ();
+               public unowned GLib.ProxyResolver get_proxy_resolver ();
+               [Deprecated]
                public Soup.URI get_proxy_uri ();
                public uint get_timeout ();
                public unowned string get_username ();
+               public void set_proxy_resolver (GLib.ProxyResolver? proxy_resolver);
+               [Deprecated]
                public void set_proxy_uri (Soup.URI? proxy_uri);
                public void set_timeout (uint timeout);
                public string client_id { get; construct; }
                public string password { get; }
+               public GLib.ProxyResolver proxy_resolver { get; set; }
+               [Deprecated]
                public Soup.URI proxy_uri { owned get; set; }
                public uint timeout { get; set; }
                public string username { get; }
@@ -511,7 +519,7 @@ namespace GData {
        public abstract class DocumentsEntry : GData.Entry, GData.AccessHandler {
                [CCode (has_construct_function = false)]
                protected DocumentsEntry ();
-               [Deprecated (since = "Use gdata_documents_entry_get_resource_id() instead. See #GDataDocumentsEntry:document-id. (Since")]
+               [Deprecated]
                public unowned string get_document_id ();
                public int64 get_edited ();
                public unowned GData.Author get_last_modified_by ();
@@ -520,7 +528,7 @@ namespace GData {
                public int64 get_quota_used ();
                public unowned string get_resource_id ();
                public void set_writers_can_invite (bool writers_can_invite);
-               [Deprecated (since = "This a substring of the #GDataDocumentsEntry:resource-id, which is more general and should be used instead. (Since")]
+               [Deprecated]
                public string document_id { get; }
                public int64 edited { get; }
                [NoAccessorMethod]
@@ -713,6 +721,120 @@ namespace GData {
                public uint total_results { get; }
                public int64 updated { get; }
        }
+       [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_freebase_query_get_type ()")]
+       public class FreebaseQuery : GData.Query {
+               [CCode (has_construct_function = false)]
+               public FreebaseQuery (string mql);
+               [CCode (has_construct_function = false)]
+               public FreebaseQuery.from_variant (GLib.Variant variant);
+               [NoAccessorMethod]
+               public GLib.Variant variant { owned get; construct; }
+       }
+       [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_freebase_result_get_type ()")]
+       public class FreebaseResult : GData.Entry {
+               [CCode (has_construct_function = false)]
+               public FreebaseResult ();
+               public GLib.Variant dup_variant ();
+               [NoAccessorMethod]
+               public GLib.Variant variant { owned get; }
+       }
+       [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_freebase_search_query_get_type ()")]
+       public class FreebaseSearchQuery : GData.Query {
+               [CCode (has_construct_function = false)]
+               public FreebaseSearchQuery (string search_terms);
+               public void add_filter (string property, string value);
+               public void add_location (uint64 radius, double lat, double lon);
+               public void close_filter ();
+               public unowned string get_language ();
+               public bool get_stemmed ();
+               public void open_filter (GData.FreebaseSearchFilterType filter_type);
+               public void set_language (string? lang);
+               public void set_stemmed (bool stemmed);
+               public string language { get; set; }
+               public bool stemmed { get; set; }
+       }
+       [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_freebase_search_result_get_type ()")]
+       public class FreebaseSearchResult : GData.FreebaseResult {
+               [CCode (has_construct_function = false)]
+               public FreebaseSearchResult ();
+               public unowned GData.FreebaseSearchResultItem get_item (uint i);
+               public uint get_num_items ();
+               public uint get_total_hits ();
+       }
+       [CCode (cheader_filename = "gdata/gdata.h")]
+       [Compact]
+       public class FreebaseSearchResultItem {
+               public unowned string get_id ();
+               public unowned string get_language ();
+               public unowned string get_mid ();
+               public unowned string get_name ();
+               public unowned string get_notable_id ();
+               public unowned string get_notable_name ();
+               public double get_score ();
+       }
+       [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_freebase_service_get_type ()")]
+       public class FreebaseService : GData.Service {
+               [CCode (has_construct_function = false)]
+               public FreebaseService (string? developer_key, GData.Authorizer? authorizer);
+               public GLib.InputStream get_image (GData.FreebaseTopicValue value, GLib.Cancellable? cancellable, uint max_width, uint max_height) throws GLib.Error;
+               public static unowned GData.AuthorizationDomain get_primary_authorization_domain ();
+               public GData.FreebaseTopicResult get_topic (GData.FreebaseTopicQuery query, GLib.Cancellable? cancellable = null) throws GLib.Error;
+               public async void get_topic_async (GData.FreebaseTopicQuery query, GLib.Cancellable? cancellable);
+               public GData.FreebaseResult query (GData.FreebaseQuery query, GLib.Cancellable? cancellable = null) throws GLib.Error;
+               public async void query_async (GData.FreebaseQuery query, GLib.Cancellable? cancellable);
+               public GData.FreebaseSearchResult search (GData.FreebaseSearchQuery query, GLib.Cancellable? cancellable = null) throws GLib.Error;
+               public async void search_async (GData.FreebaseSearchQuery query, GLib.Cancellable? cancellable);
+               [NoAccessorMethod]
+               public string developer_key { owned get; construct; }
+       }
+       [CCode (cheader_filename = "gdata/gdata.h", ref_function = "gdata_freebase_topic_object_ref", type_id = "gdata_freebase_topic_object_get_type ()", unref_function = "gdata_freebase_topic_object_unref")]
+       [Compact]
+       public class FreebaseTopicObject {
+               public unowned string get_id ();
+               public uint64 get_property_count (string property);
+               public uint64 get_property_hits (string property);
+               public unowned GData.FreebaseTopicValue get_property_value (string property, int64 item);
+               public GLib.GenericArray<weak string> list_properties ();
+               public GData.FreebaseTopicObject @ref ();
+               public void unref ();
+       }
+       [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_freebase_topic_query_get_type ()")]
+       public class FreebaseTopicQuery : GData.Query {
+               [CCode (has_construct_function = false)]
+               public FreebaseTopicQuery (string id);
+               [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_filter ();
+               public unowned string get_language ();
+               public void set_filter ([CCode (array_length = false, array_null_terminated = true)] string[]? filter);
+               public void set_language (string? lang);
+               [CCode (array_length = false, array_null_terminated = true)]
+               public string[] filter { get; set; }
+               public string language { get; set; }
+       }
+       [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_freebase_topic_result_get_type ()")]
+       public class FreebaseTopicResult : GData.FreebaseResult {
+               [CCode (has_construct_function = false)]
+               public FreebaseTopicResult ();
+               public GData.FreebaseTopicObject dup_object ();
+       }
+       [CCode (cheader_filename = "gdata/gdata.h", ref_function = "gdata_freebase_topic_value_ref", type_id = "gdata_freebase_topic_value_get_type ()", unref_function = "gdata_freebase_topic_value_unref")]
+       [Compact]
+       public class FreebaseTopicValue {
+               public GLib.Value copy_value ();
+               public unowned string get_creator ();
+               public double get_double ();
+               public int64 get_int ();
+               public unowned string get_language ();
+               public unowned GData.FreebaseTopicObject get_object ();
+               public unowned string get_property ();
+               public unowned string get_string ();
+               public unowned string get_text ();
+               public int64 get_timestamp ();
+               public GLib.Type get_value_type ();
+               public bool is_image ();
+               public GData.FreebaseTopicValue @ref ();
+               public void unref ();
+       }
        [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_gcontact_calendar_get_type ()")]
        public class GContactCalendar : GData.Parsable, GData.Comparable {
                [CCode (has_construct_function = false)]
@@ -1156,6 +1278,8 @@ namespace GData {
                public OAuth1Authorizer.for_authorization_domains (string? application_name, GLib.List<GData.AuthorizationDomain> authorization_domains);
                public unowned string get_application_name ();
                public unowned string get_locale ();
+               public unowned GLib.ProxyResolver get_proxy_resolver ();
+               [Deprecated]
                public Soup.URI get_proxy_uri ();
                public uint get_timeout ();
                public string request_authentication_uri (out string token, out string token_secret, GLib.Cancellable? cancellable = null) throws GLib.Error;
@@ -1163,10 +1287,14 @@ namespace GData {
                public bool request_authorization (string token, string token_secret, string verifier, GLib.Cancellable? cancellable = null) throws GLib.Error;
                public async bool request_authorization_async (string token, string token_secret, string verifier, GLib.Cancellable? cancellable) throws GLib.Error;
                public void set_locale (string? locale);
+               public void set_proxy_resolver (GLib.ProxyResolver? proxy_resolver);
+               [Deprecated]
                public void set_proxy_uri (Soup.URI? proxy_uri);
                public void set_timeout (uint timeout);
                public string application_name { get; construct; }
                public string locale { get; set; }
+               public GLib.ProxyResolver proxy_resolver { get; set; }
+               [Deprecated]
                public Soup.URI proxy_uri { owned get; set; }
                public uint timeout { get; set; }
        }
@@ -1180,6 +1308,8 @@ namespace GData {
                public Parsable.from_xml (GLib.Type parsable_type, string xml, int length) throws GLib.Error;
                [NoWrapper]
                public virtual void get_json (Json.Builder builder);
+               [CCode (cname = "gdata_parsable_get_json")]
+               public string get_json_string ();
                [NoWrapper]
                public virtual void get_namespaces (GLib.HashTable<void*,void*> namespaces);
                [NoWrapper]
@@ -1441,6 +1571,8 @@ namespace GData {
                public static GLib.List<weak GData.AuthorizationDomain> get_authorization_domains (GLib.Type service_type);
                public unowned GData.Authorizer get_authorizer ();
                public unowned string get_locale ();
+               public unowned GLib.ProxyResolver get_proxy_resolver ();
+               [Deprecated]
                public unowned Soup.URI get_proxy_uri ();
                public uint get_timeout ();
                public GData.Entry insert_entry (GData.AuthorizationDomain? domain, string upload_uri, GData.Entry entry, GLib.Cancellable? cancellable = null) throws GLib.Error;
@@ -1454,15 +1586,98 @@ namespace GData {
                public async GData.Entry query_single_entry_async (GData.AuthorizationDomain? domain, string entry_id, GData.Query? query, GLib.Type entry_type, GLib.Cancellable? cancellable) throws GLib.Error;
                public void set_authorizer (GData.Authorizer authorizer);
                public void set_locale (string? locale);
+               public void set_proxy_resolver (GLib.ProxyResolver? proxy_resolver);
+               [Deprecated]
                public void set_proxy_uri (Soup.URI? proxy_uri);
                public void set_timeout (uint timeout);
                public GData.Entry update_entry (GData.AuthorizationDomain? domain, GData.Entry entry, GLib.Cancellable? cancellable = null) throws GLib.Error;
                public async GData.Entry update_entry_async (GData.AuthorizationDomain? domain, GData.Entry entry, GLib.Cancellable? cancellable) throws GLib.Error;
                public GData.Authorizer authorizer { get; set; }
                public string locale { get; set; }
+               public GLib.ProxyResolver proxy_resolver { get; set; }
+               [Deprecated]
                public Soup.URI proxy_uri { get; set; }
                public uint timeout { get; set; }
        }
+       [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_tasks_query_get_type ()")]
+       public class TasksQuery : GData.Query {
+               [CCode (has_construct_function = false)]
+               public TasksQuery (string? q);
+               public int64 get_completed_max ();
+               public int64 get_completed_min ();
+               public int64 get_due_max ();
+               public int64 get_due_min ();
+               public bool get_show_completed ();
+               public bool get_show_deleted ();
+               public bool get_show_hidden ();
+               public void set_completed_max (int64 completed_max);
+               public void set_completed_min (int64 completed_min);
+               public void set_due_max (int64 due_max);
+               public void set_due_min (int64 due_min);
+               public void set_show_completed (bool show_completed);
+               public void set_show_deleted (bool show_deleted);
+               public void set_show_hidden (bool show_hidden);
+               public int64 completed_max { get; set; }
+               public int64 completed_min { get; set; }
+               public int64 due_max { get; set; }
+               public int64 due_min { get; set; }
+               public bool show_completed { get; set; }
+               public bool show_deleted { get; set; }
+               public bool show_hidden { get; set; }
+       }
+       [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_tasks_service_get_type ()")]
+       public class TasksService : GData.Service {
+               [CCode (has_construct_function = false)]
+               public TasksService (GData.Authorizer? authorizer);
+               public bool delete_task (GData.TasksTask task, GLib.Cancellable? cancellable = null) throws GLib.Error;
+               public async void delete_task_async (GData.TasksTask task, GLib.Cancellable? cancellable);
+               public bool delete_tasklist (GData.TasksTasklist tasklist, GLib.Cancellable? cancellable = null) throws GLib.Error;
+               public async void delete_tasklist_async (GData.TasksTasklist tasklist, GLib.Cancellable? cancellable);
+               public static unowned GData.AuthorizationDomain get_primary_authorization_domain ();
+               public GData.TasksTask insert_task (GData.TasksTask task, GData.TasksTasklist tasklist, GLib.Cancellable? cancellable = null) throws GLib.Error;
+               public async void insert_task_async (GData.TasksTask task, GData.TasksTasklist tasklist, GLib.Cancellable? cancellable);
+               public GData.TasksTasklist insert_tasklist (GData.TasksTasklist tasklist, GLib.Cancellable? cancellable = null) throws GLib.Error;
+               public async void insert_tasklist_async (GData.TasksTasklist tasklist, GLib.Cancellable? cancellable);
+               public GData.Feed query_all_tasklists (GData.Query? query, GLib.Cancellable? cancellable, GData.QueryProgressCallback? progress_callback) throws GLib.Error;
+               public async void query_all_tasklists_async (GData.Query? query, GLib.Cancellable? cancellable, owned GData.QueryProgressCallback? progress_callback);
+               public GData.Feed query_tasks (GData.TasksTasklist tasklist, GData.Query? query, GLib.Cancellable? cancellable, GData.QueryProgressCallback? progress_callback) throws GLib.Error;
+               public async void query_tasks_async (GData.TasksTasklist tasklist, GData.Query? query, GLib.Cancellable? cancellable, owned GData.QueryProgressCallback? progress_callback);
+               public GData.TasksTask update_task (GData.TasksTask task, GLib.Cancellable? cancellable = null) throws GLib.Error;
+               public async void update_task_async (GData.TasksTask task, GLib.Cancellable? cancellable);
+               public GData.TasksTasklist update_tasklist (GData.TasksTasklist tasklist, GLib.Cancellable? cancellable = null) throws GLib.Error;
+               public async void update_tasklist_async (GData.TasksTasklist tasklist, GLib.Cancellable? cancellable);
+       }
+       [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_tasks_task_get_type ()")]
+       public class TasksTask : GData.Entry {
+               [CCode (has_construct_function = false)]
+               public TasksTask (string? id);
+               public int64 get_completed ();
+               public int64 get_due ();
+               public unowned string get_notes ();
+               public unowned string get_parent ();
+               public unowned string get_position ();
+               public unowned string get_status ();
+               public void set_completed (int64 completed);
+               public void set_due (int64 due);
+               public void set_is_deleted (bool deleted);
+               public void set_notes (string? notes);
+               public void set_status (string? status);
+               public int64 completed { get; set; }
+               public int64 due { get; set; }
+               [NoAccessorMethod]
+               public bool is_deleted { get; set; }
+               [NoAccessorMethod]
+               public bool is_hidden { get; }
+               public string notes { get; set; }
+               public string parent { get; }
+               public string position { get; }
+               public string status { get; set; }
+       }
+       [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_tasks_tasklist_get_type ()")]
+       public class TasksTasklist : GData.Entry {
+               [CCode (has_construct_function = false)]
+               public TasksTasklist (string? id);
+       }
        [CCode (cheader_filename = "gdata/gdata.h", type_id = "gdata_upload_stream_get_type ()")]
        public class UploadStream : GLib.OutputStream {
                [CCode (has_construct_function = false, type = "GOutputStream*")]
@@ -1716,6 +1931,12 @@ namespace GData {
                UPDATE,
                DELETION
        }
+       [CCode (cheader_filename = "gdata/gdata.h", cprefix = "GDATA_FREEBASE_SEARCH_FILTER_", type_id = "gdata_freebase_search_filter_type_get_type ()")]
+       public enum FreebaseSearchFilterType {
+               ALL,
+               ANY,
+               NOT
+       }
        [CCode (cheader_filename = "gdata/gdata.h", cprefix = "GDATA_MEDIA_EXPRESSION_", type_id = "gdata_media_expression_get_type ()")]
        public enum MediaExpression {
                SAMPLE,
@@ -1833,7 +2054,8 @@ namespace GData {
                BAD_QUERY_PARAMETER,
                NETWORK_ERROR,
                PROXY_ERROR,
-               WITH_BATCH_OPERATION;
+               WITH_BATCH_OPERATION,
+               API_QUOTA_EXCEEDED;
                public static GLib.Quark quark ();
        }
        [CCode (cheader_filename = "gdata/gdata.h", cprefix = "GDATA_YOUTUBE_SERVICE_ERROR_")]
@@ -2092,6 +2314,8 @@ namespace GData {
        public const string LINK_EDIT_MEDIA;
        [CCode (cheader_filename = "gdata/gdata.h", cname = "GDATA_LINK_ENCLOSURE")]
        public const string LINK_ENCLOSURE;
+       [CCode (cheader_filename = "gdata/gdata.h", cname = "GDATA_LINK_PARENT")]
+       public const string LINK_PARENT;
        [CCode (cheader_filename = "gdata/gdata.h", cname = "GDATA_LINK_RELATED")]
        public const string LINK_RELATED;
        [CCode (cheader_filename = "gdata/gdata.h", cname = "GDATA_LINK_RESUMABLE_CREATE_MEDIA")]
@@ -2116,6 +2340,10 @@ namespace GData {
        public const string PICASAWEB_VIDEO_STATUS_PENDING;
        [CCode (cheader_filename = "gdata/gdata.h", cname = "GDATA_PICASAWEB_VIDEO_STATUS_READY")]
        public const string PICASAWEB_VIDEO_STATUS_READY;
+       [CCode (cheader_filename = "gdata/gdata.h", cname = "GDATA_TASKS_STATUS_COMPLETED")]
+       public const string TASKS_STATUS_COMPLETED;
+       [CCode (cheader_filename = "gdata/gdata.h", cname = "GDATA_TASKS_STATUS_NEEDS_ACTION")]
+       public const string TASKS_STATUS_NEEDS_ACTION;
        [CCode (cheader_filename = "gdata/gdata.h", cname = "GDATA_YOUTUBE_ACTION_COMMENT")]
        public const string YOUTUBE_ACTION_COMMENT;
        [CCode (cheader_filename = "gdata/gdata.h", cname = "GDATA_YOUTUBE_ACTION_COMMENT_VOTE")]
index 9c44b6b..dffa0bc 100644 (file)
@@ -17,7 +17,7 @@ namespace Notify {
                [Deprecated (since = "0.6.")]
                public void set_hint_byte (string key, [CCode (type = "guchar")] uchar value);
                [Deprecated (since = "0.6.")]
-               public void set_hint_byte_array (string key, [CCode (array_length = false, type = "const guchar*")] uchar[] value, size_t len);
+               public void set_hint_byte_array (string key, [CCode (array_length_cname = "len", array_length_pos = 2.1, array_length_type = "gsize")] uchar[] value);
                [Deprecated (since = "0.6.")]
                public void set_hint_double (string key, double value);
                [Deprecated (since = "0.6.")]
index 17f1375..5c02c18 100644 (file)
@@ -47,7 +47,7 @@ namespace Peas {
        [CCode (cheader_filename = "libpeas/peas.h", type_id = "peas_extension_set_get_type ()")]
        public class ExtensionSet : GLib.Object {
                [CCode (has_construct_function = false)]
-               public ExtensionSet (Peas.Engine engine, GLib.Type exten_type, ...);
+               public ExtensionSet (Peas.Engine? engine, GLib.Type exten_type, ...);
                [NoWrapper]
                public virtual bool call (string method_name, GI.Argument args);
                public void @foreach (Peas.ExtensionSetForeachFunc func);
index 10d6a18..ee1a672 100644 (file)
@@ -336,7 +336,7 @@ namespace Postgres {
                [CCode (cname = "PQisnonblocking")]
                public int is_non_blocking ();
 
-               [CCode (cname = "PQping"]
+               [CCode (cname = "PQping")]
                public Ping ping();
                 
                [CCode (cname = "PQpingParams")]
index 109261f..7cdd8dd 100644 (file)
@@ -56,7 +56,7 @@ namespace Rsvg {
                public Handle.with_flags (Rsvg.HandleFlags flags);
                public bool write ([CCode (array_length_cname = "count", array_length_pos = 1.1, array_length_type = "gsize")] uint8[] buf) throws GLib.Error;
                public string base_uri { get; set construct; }
-               [Deprecated]
+               [Deprecated (since = "2.36")]
                [NoAccessorMethod]
                public string desc { owned get; }
                [NoAccessorMethod]
@@ -71,10 +71,10 @@ namespace Rsvg {
                public Rsvg.HandleFlags flags { get; construct; }
                [NoAccessorMethod]
                public int height { get; }
-               [Deprecated]
+               [Deprecated (since = "2.36")]
                [NoAccessorMethod]
                public string metadata { owned get; }
-               [Deprecated]
+               [Deprecated (since = "2.36")]
                [NoAccessorMethod]
                public string title { owned get; }
                [NoAccessorMethod]
index 78c0dbe..7d38238 100644 (file)
@@ -207,6 +207,7 @@ namespace Soup {
                public uint8[] data;
                public size_t length;
                [CCode (has_construct_function = false)]
+               [Deprecated (replacement = "Buffer.take", since = "2.32")]
                public Buffer (Soup.MemoryUse use, [CCode (array_length_cname = "length", array_length_pos = 2.1, array_length_type = "gsize", type = "gconstpointer")] uint8[] data);
                public Soup.Buffer copy ();
                public void free ();
@@ -244,10 +245,15 @@ namespace Soup {
        [CCode (cheader_filename = "libsoup/soup.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "soup_client_context_get_type ()")]
        [Compact]
        public class ClientContext {
+               [Deprecated]
                public unowned Soup.Address get_address ();
                public unowned Soup.AuthDomain get_auth_domain ();
                public unowned string get_auth_user ();
+               public unowned GLib.Socket get_gsocket ();
                public unowned string get_host ();
+               public unowned GLib.SocketAddress get_local_address ();
+               public unowned GLib.SocketAddress get_remote_address ();
+               [Deprecated]
                public unowned Soup.Socket get_socket ();
        }
        [CCode (cheader_filename = "libsoup/soup.h")]
@@ -409,8 +415,8 @@ namespace Soup {
                public void set_http_version (Soup.HTTPVersion version);
                public void set_priority (Soup.MessagePriority priority);
                public void set_redirect (uint status_code, string redirect_uri);
-               public void set_request (string content_type, Soup.MemoryUse req_use, [CCode (array_length_cname = "req_length", array_length_pos = 3.1, array_length_type = "gsize", type = "const char*")] uint8[] req_body);
-               public void set_response (string? content_type, Soup.MemoryUse resp_use, [CCode (array_length_cname = "resp_length", array_length_pos = 3.1, array_length_type = "gsize")] uint8[] resp_body);
+               public void set_request (string? content_type, Soup.MemoryUse req_use, [CCode (array_length_cname = "req_length", array_length_pos = 3.1, array_length_type = "gsize")] uint8[] req_body);
+               public void set_response (string? content_type, Soup.MemoryUse resp_use, [CCode (array_length_cname = "resp_length", array_length_pos = 3.1, array_length_type = "gsize")] uint8[]? resp_body);
                public void set_status (uint status_code);
                public void set_status_full (uint status_code, string reason_phrase);
                public void set_uri (Soup.URI uri);
@@ -465,6 +471,7 @@ namespace Soup {
                public int64 length;
                [CCode (has_construct_function = false)]
                public MessageBody ();
+               [Deprecated (replacement = "MessageBody.append_take", since = "2.32")]
                public void append (Soup.MemoryUse use, [CCode (array_length_cname = "length", array_length_pos = 2.1, array_length_type = "gsize")] uint8[] data);
                public void append_buffer (Soup.Buffer buffer);
                public void append_take ([CCode (array_length_cname = "length", array_length_pos = 1.1, array_length_type = "gsize")] owned uint8[] data);
@@ -598,17 +605,32 @@ namespace Soup {
                public void add_auth_domain (Soup.AuthDomain auth_domain);
                public void add_handler (string? path, owned Soup.ServerCallback callback);
                public void disconnect ();
+               [Deprecated]
                public unowned GLib.MainContext get_async_context ();
+               [Deprecated]
                public unowned Soup.Socket get_listener ();
+               public GLib.SList<weak GLib.Socket> get_listeners ();
+               [Deprecated]
                public uint get_port ();
+               public GLib.SList<Soup.URI> get_uris ();
                public bool is_https ();
+               public bool listen (GLib.SocketAddress @interface, Soup.ServerListenOptions options) throws GLib.Error;
+               public bool listen_all (uint port, Soup.ServerListenOptions options) throws GLib.Error;
+               public bool listen_fd (int fd, Soup.ServerListenOptions options) throws GLib.Error;
+               public bool listen_local (uint port, Soup.ServerListenOptions options) throws GLib.Error;
+               public bool listen_socket (GLib.Socket socket, Soup.ServerListenOptions options) throws GLib.Error;
                public void pause_message (Soup.Message msg);
+               [Deprecated]
                public void quit ();
                public void remove_auth_domain (Soup.AuthDomain auth_domain);
                public void remove_handler (string path);
+               [Deprecated]
                public void run ();
+               [Deprecated]
                public void run_async ();
+               public bool set_ssl_cert_file (string ssl_cert_file, string ssl_key_file) throws GLib.Error;
                public void unpause_message (Soup.Message msg);
+               [Deprecated]
                public GLib.MainContext async_context { get; owned construct; }
                [CCode (array_length = false, array_null_terminated = true)]
                [NoAccessorMethod]
@@ -616,15 +638,19 @@ namespace Soup {
                [CCode (array_length = false, array_null_terminated = true)]
                [NoAccessorMethod]
                public string[] https_aliases { owned get; set; }
+               [Deprecated]
                [NoAccessorMethod]
                public Soup.Address @interface { owned get; construct; }
+               [Deprecated]
                public uint port { get; construct; }
                [NoAccessorMethod]
                public bool raw_paths { get; construct; }
                [NoAccessorMethod]
                public string server_header { owned get; set construct; }
+               [Deprecated]
                [NoAccessorMethod]
                public string ssl_cert_file { owned get; construct; }
+               [Deprecated]
                [NoAccessorMethod]
                public string ssl_key_file { owned get; construct; }
                [NoAccessorMethod]
@@ -707,6 +733,8 @@ namespace Soup {
                public uint timeout { get; set; }
                [NoAccessorMethod]
                public GLib.TlsDatabase tls_database { owned get; set; }
+               [NoAccessorMethod]
+               public GLib.TlsInteraction tls_interaction { owned get; set; }
                [Deprecated]
                [NoAccessorMethod]
                public bool use_ntlm { get; set; }
@@ -740,7 +768,7 @@ namespace Soup {
                public SessionSync.with_options (string optname1, ...);
        }
        [CCode (cheader_filename = "libsoup/soup.h", type_id = "soup_socket_get_type ()")]
-       public class Socket : GLib.Object {
+       public class Socket : GLib.Object, GLib.Initable {
                [CCode (has_construct_function = false)]
                public Socket (string optname1, ...);
                public void connect_async (GLib.Cancellable? cancellable, [CCode (scope = "async")] owned Soup.SocketCallback callback);
@@ -759,14 +787,17 @@ namespace Soup {
                public Soup.SocketIOStatus write ([CCode (array_length_cname = "len", array_length_pos = 1.5, array_length_type = "gsize", type = "gconstpointer")] uint8[] buffer, out size_t nwrote, GLib.Cancellable? cancellable = null) throws GLib.Error;
                [NoAccessorMethod]
                public GLib.MainContext async_context { owned get; construct; }
-               public bool clean_dispose { construct; }
+               [NoAccessorMethod]
+               public bool close_on_dispose { get; set construct; }
+               public int fd { get; construct; }
+               public GLib.Socket gsocket { construct; }
+               [NoAccessorMethod]
+               public bool ipv6_only { get; set; }
                [NoAccessorMethod]
                public bool is_server { get; }
                public Soup.Address local_address { get; construct; }
                [NoAccessorMethod]
                public bool non_blocking { get; set; }
-               [NoAccessorMethod]
-               public GLib.ProxyResolver proxy_resolver { owned get; construct; }
                public Soup.Address remote_address { get; construct; }
                [NoAccessorMethod]
                public void* ssl_creds { get; set; }
@@ -848,9 +879,7 @@ namespace Soup {
        }
        [CCode (cheader_filename = "libsoup/soup.h", type_cname = "SoupProxyURIResolverInterface", type_id = "soup_proxy_uri_resolver_get_type ()")]
        public interface ProxyURIResolver : Soup.SessionFeature, GLib.Object {
-               [Deprecated]
                public abstract void get_proxy_uri_async (Soup.URI uri, GLib.MainContext? async_context, GLib.Cancellable? cancellable, [CCode (scope = "async")] owned Soup.ProxyURIResolverCallback callback);
-               [Deprecated]
                public abstract uint get_proxy_uri_sync (Soup.URI uri, GLib.Cancellable? cancellable, out Soup.URI proxy_uri);
        }
        [CCode (cheader_filename = "libsoup/soup.h", type_cname = "SoupSessionFeatureInterface", type_id = "soup_session_feature_get_type ()")]
@@ -1053,6 +1082,13 @@ namespace Soup {
                HIGH,
                VERY_HIGH
        }
+       [CCode (cheader_filename = "libsoup/soup.h", cprefix = "SOUP_SERVER_LISTEN_", type_id = "soup_server_listen_options_get_type ()")]
+       [Flags]
+       public enum ServerListenOptions {
+               HTTPS,
+               IPV4_ONLY,
+               IPV6_ONLY
+       }
        [CCode (cheader_filename = "libsoup/soup.h", cprefix = "SOUP_SOCKET_", type_id = "soup_socket_io_status_get_type ()")]
        public enum SocketIOStatus {
                OK,
@@ -1319,10 +1355,14 @@ namespace Soup {
        public const string MESSAGE_REASON_PHRASE;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_MESSAGE_REQUEST_BODY")]
        public const string MESSAGE_REQUEST_BODY;
+       [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_MESSAGE_REQUEST_BODY_DATA")]
+       public const string MESSAGE_REQUEST_BODY_DATA;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_MESSAGE_REQUEST_HEADERS")]
        public const string MESSAGE_REQUEST_HEADERS;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_MESSAGE_RESPONSE_BODY")]
        public const string MESSAGE_RESPONSE_BODY;
+       [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_MESSAGE_RESPONSE_BODY_DATA")]
+       public const string MESSAGE_RESPONSE_BODY_DATA;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_MESSAGE_RESPONSE_HEADERS")]
        public const string MESSAGE_RESPONSE_HEADERS;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_MESSAGE_SERVER_SIDE")]
@@ -1364,6 +1404,7 @@ namespace Soup {
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_REQUEST_URI")]
        public const string REQUEST_URI;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SERVER_ASYNC_CONTEXT")]
+       [Deprecated]
        public const string SERVER_ASYNC_CONTEXT;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SERVER_H")]
        public const int SERVER_H;
@@ -1372,16 +1413,20 @@ namespace Soup {
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SERVER_HTTP_ALIASES")]
        public const string SERVER_HTTP_ALIASES;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SERVER_INTERFACE")]
+       [Deprecated]
        public const string SERVER_INTERFACE;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SERVER_PORT")]
+       [Deprecated]
        public const string SERVER_PORT;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SERVER_RAW_PATHS")]
        public const string SERVER_RAW_PATHS;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SERVER_SERVER_HEADER")]
        public const string SERVER_SERVER_HEADER;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SERVER_SSL_CERT_FILE")]
+       [Deprecated]
        public const string SERVER_SSL_CERT_FILE;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SERVER_SSL_KEY_FILE")]
+       [Deprecated]
        public const string SERVER_SSL_KEY_FILE;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SERVER_TLS_CERTIFICATE")]
        public const string SERVER_TLS_CERTIFICATE;
@@ -1425,6 +1470,8 @@ namespace Soup {
        public const string SESSION_TIMEOUT;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SESSION_TLS_DATABASE")]
        public const string SESSION_TLS_DATABASE;
+       [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SESSION_TLS_INTERACTION")]
+       public const string SESSION_TLS_INTERACTION;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SESSION_USER_AGENT")]
        public const string SESSION_USER_AGENT;
        [CCode (cheader_filename = "libsoup/soup.h", cname = "SOUP_SESSION_USE_NTLM")]
similarity index 99%
rename from vapi/libvala-0.24.vapi
rename to vapi/libvala-0.26.vapi
index de02dd7..c8010c5 100644 (file)
@@ -200,6 +200,15 @@ namespace Vala {
                public virtual void write_initialization (Vala.CCodeWriter writer);
        }
        [CCode (cheader_filename = "valaccode.h")]
+       public class CCodeDeclaratorSuffix {
+               public bool array;
+               public Vala.CCodeExpression? array_length;
+               public bool deprecated;
+               public CCodeDeclaratorSuffix ();
+               public CCodeDeclaratorSuffix.with_array (Vala.CCodeExpression? array_length = null);
+               public void write (Vala.CCodeWriter writer);
+       }
+       [CCode (cheader_filename = "valaccode.h")]
        public class CCodeDoStatement : Vala.CCodeStatement {
                public CCodeDoStatement (Vala.CCodeStatement stmt, Vala.CCodeExpression cond);
                public override void write (Vala.CCodeWriter writer);
@@ -459,7 +468,7 @@ namespace Vala {
        public class CCodeStruct : Vala.CCodeNode {
                public CCodeStruct (string name);
                public void add_declaration (Vala.CCodeDeclaration decl);
-               public void add_field (string type_name, string name, string? declarator_suffix = null);
+               public void add_field (string type_name, string name, Vala.CCodeDeclaratorSuffix? declarator_suffix = null);
                public override void write (Vala.CCodeWriter writer);
                public bool deprecated { get; set; }
                public bool is_empty { get; }
@@ -490,12 +499,12 @@ namespace Vala {
        }
        [CCode (cheader_filename = "valaccode.h")]
        public class CCodeVariableDeclarator : Vala.CCodeDeclarator {
-               public CCodeVariableDeclarator (string name, Vala.CCodeExpression? initializer = null, string? declarator_suffix = null);
+               public CCodeVariableDeclarator (string name, Vala.CCodeExpression? initializer = null, Vala.CCodeDeclaratorSuffix? declarator_suffix = null);
                public override void write (Vala.CCodeWriter writer);
                public override void write_declaration (Vala.CCodeWriter writer);
                public override void write_initialization (Vala.CCodeWriter writer);
-               public CCodeVariableDeclarator.zero (string name, Vala.CCodeExpression? initializer, string? declarator_suffix = null);
-               public string? declarator_suffix { get; set; }
+               public CCodeVariableDeclarator.zero (string name, Vala.CCodeExpression? initializer, Vala.CCodeDeclaratorSuffix? declarator_suffix = null);
+               public Vala.CCodeDeclaratorSuffix? declarator_suffix { get; set; }
                public bool init0 { get; set; }
                public Vala.CCodeExpression? initializer { get; set; }
                public string name { get; set; }
@@ -567,7 +576,8 @@ namespace Vala {
                INLINE,
                VOLATILE,
                DEPRECATED,
-               THREAD_LOCAL
+               THREAD_LOCAL,
+               INTERNAL
        }
        [CCode (cheader_filename = "valaccode.h")]
        public enum CCodeUnaryOperator {
@@ -779,6 +789,7 @@ namespace Vala {
                public override bool check (Vala.CodeContext context);
                public override void emit (Vala.CodeGenerator codegen);
                public Vala.List<Vala.Expression> get_sizes ();
+               public override void get_used_variables (Vala.Collection<Vala.Variable> collection);
                public override bool is_pure ();
                public override void replace_expression (Vala.Expression old_node, Vala.Expression new_node);
                public override void replace_type (Vala.DataType old_type, Vala.DataType new_type);
@@ -817,7 +828,7 @@ namespace Vala {
                public bool fixed_length { get; set; }
                public bool inline_allocated { get; set; }
                public bool invalid_syntax { get; set; }
-               public int length { get; set; }
+               public Vala.Expression? length { get; set; }
                public int rank { get; set; }
        }
        [CCode (cheader_filename = "vala.h")]
@@ -1085,6 +1096,7 @@ namespace Vala {
                public Vala.FlowAnalyzer flow_analyzer { get; private set; }
                public bool gobject_tracing { get; set; }
                public string? header_filename { get; set; }
+               public bool hide_internal { get; set; }
                public string? includedir { get; set; }
                public string? internal_header_filename { get; set; }
                public bool mem_profiler { get; set; }
@@ -1105,6 +1117,7 @@ namespace Vala {
                public bool thread { get; set; }
                public bool use_fast_vapi { get; set; }
                public bool use_header { get; set; }
+               public bool vapi_comments { get; set; }
                public bool verbose_mode { get; set; }
                public bool version_header { get; set; }
        }
@@ -1744,6 +1757,7 @@ namespace Vala {
                public override bool check (Vala.CodeContext context);
                public override void emit (Vala.CodeGenerator codegen);
                public Vala.List<Vala.Expression> get_initializers ();
+               public override void get_used_variables (Vala.Collection<Vala.Variable> collection);
                public override bool is_constant ();
                public override bool is_pure ();
                public override void replace_expression (Vala.Expression old_node, Vala.Expression new_node);
@@ -1904,6 +1918,7 @@ namespace Vala {
                public override void accept (Vala.CodeVisitor visitor);
                public override bool check (Vala.CodeContext context);
                public override void emit (Vala.CodeGenerator codegen);
+               public override void get_used_variables (Vala.Collection<Vala.Variable> collection);
                public override void replace_expression (Vala.Expression old_node, Vala.Expression new_node);
                public Vala.Expression initializer { get; set; }
                public string name { get; set; }
@@ -1936,6 +1951,7 @@ namespace Vala {
                public bool is_variadic ();
                public override void replace_type (Vala.DataType old_type, Vala.DataType new_type);
                public Vala.Method base_interface_method { get; }
+               public Vala.DataType base_interface_type { get; set; }
                public Vala.Method base_method { get; }
                public Vala.MemberBinding binding { get; set; }
                public bool closure { get; set; }
@@ -2195,6 +2211,7 @@ namespace Vala {
                public override void accept (Vala.CodeVisitor visitor);
                public override void accept_children (Vala.CodeVisitor visitor);
                public override bool check (Vala.CodeContext context);
+               public Vala.Method? get_method ();
                public override void replace_type (Vala.DataType old_type, Vala.DataType new_type);
                public bool automatic_body { get; set; }
                public bool construction { get; set; }
@@ -2337,6 +2354,8 @@ namespace Vala {
                public SemanticAnalyzer ();
                public void analyze (Vala.CodeContext context);
                public bool check_arguments (Vala.Expression expr, Vala.DataType mtype, Vala.List<Vala.Parameter> @params, Vala.List<Vala.Expression> args);
+               public bool check_print_format (string format, Vala.Iterator<Vala.Expression> arg_it, Vala.SourceReference source_reference);
+               public bool check_variadic_arguments (Vala.Iterator<Vala.Expression>? arg_it, int i, Vala.SourceReference source_reference);
                public static Vala.Expression create_temp_access (Vala.LocalVariable local, Vala.DataType? target_type);
                public Vala.Method? find_current_method ();
                public Vala.Method? find_parent_method (Vala.Symbol sym);
@@ -2655,6 +2674,7 @@ namespace Vala {
                public override void visit_member_access (Vala.MemberAccess expr);
                public override void visit_method (Vala.Method m);
                public override void visit_method_call (Vala.MethodCall expr);
+               public override void visit_named_argument (Vala.NamedArgument expr);
                public override void visit_namespace (Vala.Namespace ns);
                public override void visit_object_creation_expression (Vala.ObjectCreationExpression expr);
                public override void visit_postfix_expression (Vala.PostfixExpression expr);
@@ -3352,7 +3372,7 @@ namespace Vala {
                public static string get_ccode_const_name (Vala.CodeNode node);
                public static string get_ccode_constructv_name (Vala.CreationMethod m);
                public static string get_ccode_copy_function (Vala.TypeSymbol sym);
-               public static string get_ccode_declarator_suffix (Vala.DataType type);
+               public Vala.CCodeDeclaratorSuffix? get_ccode_declarator_suffix (Vala.DataType type);
                public static string get_ccode_default_value (Vala.TypeSymbol sym);
                public static bool get_ccode_delegate_target (Vala.CodeNode node);
                public static string get_ccode_delegate_target_name (Vala.Variable variable);
@@ -3435,6 +3455,7 @@ namespace Vala {
                public virtual string get_parameter_array_length_cname (Vala.Parameter param, int dim);
                public abstract Vala.TargetValue get_parameter_cvalue (Vala.Parameter param);
                public Vala.CCodeConstant get_property_canonical_cconstant (Vala.Property prop);
+               public static string get_quark_name (Vala.ErrorDomain edomain);
                public Vala.CCodeExpression get_result_cexpression (string cname = "result");
                public Vala.CCodeConstant get_signal_canonical_constant (Vala.Signal sig, string? detail = null);
                public virtual Vala.CCodeFunctionCall get_signal_creation (Vala.Signal sig, Vala.TypeSymbol type);
@@ -3552,7 +3573,7 @@ namespace Vala {
        [CCode (cheader_filename = "valacodegen.h")]
        public class CCodeCompiler {
                public CCodeCompiler ();
-               public void compile (Vala.CodeContext context, string? cc_command, string[] cc_options);
+               public void compile (Vala.CodeContext context, string? cc_command, string[] cc_options, string? pkg_config_command = null);
        }
        [CCode (cheader_filename = "valacodegen.h")]
        public abstract class CCodeControlFlowModule : Vala.CCodeMethodModule {
@@ -3681,20 +3702,23 @@ namespace Vala {
        public class GDBusModule : Vala.GVariantModule {
                public GDBusModule ();
                public bool dbus_method_uses_file_descriptor (Vala.Method method);
+               public static string dbus_result_name (Vala.Method m);
                public static string? get_dbus_name (Vala.TypeSymbol symbol);
                public static string get_dbus_name_for_member (Vala.Symbol symbol);
+               protected Vala.CCodeExpression get_interface_info (Vala.ObjectTypeSymbol sym);
                public static bool is_dbus_no_reply (Vala.Method m);
+               public static bool is_dbus_visible (Vala.CodeNode node);
                public void receive_dbus_value (Vala.DataType type, Vala.CCodeExpression message_expr, Vala.CCodeExpression iter_expr, Vala.CCodeExpression target_expr, Vala.Symbol? sym, Vala.CCodeExpression? error_expr = null, out bool may_fail = null);
                public void send_dbus_value (Vala.DataType type, Vala.CCodeExpression builder_expr, Vala.CCodeExpression expr, Vala.Symbol? sym);
+               public override void visit_class (Vala.Class cl);
                public override void visit_error_domain (Vala.ErrorDomain edomain);
+               public override void visit_interface (Vala.Interface iface);
        }
        [CCode (cheader_filename = "valacodegen.h")]
        public class GDBusServerModule : Vala.GDBusClientModule {
                public GDBusServerModule ();
-               public static string dbus_result_name (Vala.Method m);
                public override void generate_class_declaration (Vala.Class cl, Vala.CCodeFile decl_space);
                public override void generate_interface_declaration (Vala.Interface iface, Vala.CCodeFile decl_space);
-               public static bool is_dbus_visible (Vala.CodeNode node);
                public override void register_dbus_info (Vala.CCodeBlock block, Vala.ObjectTypeSymbol sym);
                public override void visit_class (Vala.Class cl);
                public override void visit_interface (Vala.Interface iface);
index 286fab1..bbe7193 100644 (file)
@@ -64,11 +64,11 @@ namespace Wnck {
        public class Screen : GLib.Object {
                [CCode (has_construct_function = false)]
                protected Screen ();
-               [Deprecated]
+               [Deprecated (since = "2.20")]
                public void calc_workspace_layout (int num_workspaces, int space_index, Wnck.WorkspaceLayout layout);
                public void change_workspace_count (int count);
                public void force_update ();
-               [Deprecated]
+               [Deprecated (since = "2.20")]
                public static void free_workspace_layout (Wnck.WorkspaceLayout layout);
                public static unowned Wnck.Screen @get (int index);
                public unowned Wnck.Window get_active_window ();
@@ -256,7 +256,7 @@ namespace Wnck {
                public static Wnck.ResourceUsage xid_read (Gdk.Display gdk_display, ulong xid);
        }
        [CCode (cheader_filename = "libwnck/libwnck.h", has_type_id = false)]
-       [Deprecated]
+       [Deprecated (since = "2.20")]
        public struct WorkspaceLayout {
                public int rows;
                public int cols;
index ffa7ce4..5cceea1 100644 (file)
@@ -1025,15 +1025,30 @@ namespace Linux {
         DT_WHT
     }
 
-    [CCode (cheader_filename = "execinfo.h")]
+    [Deprecated (since = "vala-0.26", replacement = "Backtrace.get"), CCode (cheader_filename = "execinfo.h")]
     public int backtrace (void* buffer, int size);
 
-    [CCode (cheader_filename = "execinfo.h", array_length = false)]
-    public unowned string[] backtrace_symbols (void* buffer, int size);
+    [Deprecated (since = "vala-0.26", replacement = "Backtrace.symbols"), CCode (cheader_filename = "execinfo.h", array_length = false)]
+    public (unowned string)[]? backtrace_symbols (void* buffer, int size);
 
-    [CCode (cheader_filename = "execinfo.h")]
+    [Deprecated (since = "vala-0.26", replacement = "Backtrace.symbols_fd"), CCode (cheader_filename = "execinfo.h")]
     public void backtrace_symbols_fd (void* buffer, int size, int fd);
 
+    namespace Backtrace {
+      [CCode (cname = "backtrace", cheader_filename = "execinfo.h")]
+      public int @get (void*[] buffer);
+      [CCode (cname = "backtrace_symbols", cheader_filename = "execinfo.h", array_length = false)]
+      private (unowned string)[]? _symbols (void*[] buffer);
+      [CCode (cname = "_vala_backtrace_symbols")]
+      public (unowned string)[]? symbols (void*[] buffer) {
+        (unowned string)[]? s = _symbols (buffer);
+        s.length = buffer.length;
+        return s;
+      }
+      [CCode (cheader_filename = "execinfo.h")]
+      public void symbols_fd (void*[] buffer, int fd);
+    }
+
     [CCode (cheader_filename = "unistd.h")]
     public int sethostname (string name, size_t len);
 
index a686809..ac26aec 100644 (file)
@@ -2,13 +2,6 @@
 
 [CCode (cprefix = "Pk", gir_namespace = "PackageKitGlib", gir_version = "1.0", lower_case_cprefix = "pk_")]
 namespace Pk {
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_catalog_get_type ()")]
-       public class Catalog : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public Catalog ();
-               public async void lookup_async (string filename, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
-               public static void test (void* user_data);
-       }
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_category_get_type ()")]
        public class Category : Pk.Source {
                [CCode (has_construct_function = false)]
@@ -40,6 +33,8 @@ namespace Pk {
                public async void adopt_async (string transaction_id, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                [NoWrapper]
                public virtual void changed ();
+               public Pk.Results depends_on (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+               public async void depends_on_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results download_packages ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, string directory, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void download_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, string directory, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results generic_finish (GLib.AsyncResult res) throws GLib.Error;
@@ -47,14 +42,16 @@ namespace Pk {
                public uint get_cache_age ();
                public Pk.Results get_categories (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void get_categories_async (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
-               public Pk.Results get_depends (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
-               public async void get_depends_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results get_details ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void get_details_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
+               public Pk.Results get_details_local ([CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+               public async void get_details_local_async ([CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results get_distro_upgrades (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void get_distro_upgrades_async (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results get_files ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void get_files_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
+               public Pk.Results get_files_local ([CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+               public async void get_files_local_async ([CCode (array_length = false, array_null_terminated = true)] string[] files, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public bool get_idle ();
                public bool get_interactive ();
                public unowned string get_locale ();
@@ -66,8 +63,6 @@ namespace Pk {
                public async Pk.Progress get_progress_async (string transaction_id, GLib.Cancellable? cancellable) throws GLib.Error;
                public Pk.Results get_repo_list (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void get_repo_list_async (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
-               public Pk.Results get_requires (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
-               public async void get_requires_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results get_update_detail ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void get_update_detail_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results get_updates (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
@@ -86,8 +81,12 @@ namespace Pk {
                public async void repair_system_async (Pk.Bitfield transaction_flags, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results repo_enable (string repo_id, bool enabled, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void repo_enable_async (string repo_id, bool enabled, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
+               public Pk.Results repo_remove (Pk.Bitfield transaction_flags, string repo_id, bool autoremove, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+               public async void repo_remove_async (Pk.Bitfield transaction_flags, string repo_id, bool autoremove, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results repo_set_data (string repo_id, string parameter, string value, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void repo_set_data_async (string repo_id, string parameter, string value, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
+               public Pk.Results required_by (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+               public async void required_by_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results resolve (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] packages, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void resolve_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] packages, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results search_details (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
@@ -105,10 +104,8 @@ namespace Pk {
                public static void test (void* user_data);
                public Pk.Results update_packages (Pk.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void update_packages_async (Pk.Bitfield transaction_flags, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
-               public Pk.Results upgrade_system (string distro_id, Pk.UpgradeKind upgrade_kind, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
-               public async void upgrade_system_async (string distro_id, Pk.UpgradeKind upgrade_kind, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
-               public Pk.Results what_provides (Pk.Bitfield filters, Pk.Provides provides, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
-               public async void what_provides_async (Pk.Bitfield filters, Pk.Provides provides, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
+               public Pk.Results what_provides (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+               public async void what_provides_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public bool background { get; set; }
                public uint cache_age { get; set; }
                public bool idle { get; }
@@ -130,7 +127,6 @@ namespace Pk {
                [NoWrapper]
                public virtual void connection_changed (bool connected);
                public async string get_daemon_state_async (GLib.Cancellable? cancellable) throws GLib.Error;
-               public async Pk.Network get_network_state_async (GLib.Cancellable? cancellable) throws GLib.Error;
                public bool get_properties (GLib.Cancellable? cancellable = null) throws GLib.Error;
                public async bool get_properties_async (GLib.Cancellable? cancellable) throws GLib.Error;
                public async string get_tid_async (GLib.Cancellable? cancellable) throws GLib.Error;
@@ -201,6 +197,7 @@ namespace Pk {
                public unowned string get_license ();
                public unowned string get_package_id ();
                public uint64 get_size ();
+               public unowned string get_summary ();
                public unowned string get_url ();
                [NoAccessorMethod]
                public string description { owned get; set; }
@@ -213,6 +210,8 @@ namespace Pk {
                [NoAccessorMethod]
                public uint64 size { get; set; }
                [NoAccessorMethod]
+               public string summary { owned get; set; }
+               [NoAccessorMethod]
                public string url { owned get; set; }
        }
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_distro_upgrade_get_type ()")]
@@ -258,6 +257,9 @@ namespace Pk {
                [CCode (has_construct_function = false)]
                public Files ();
                [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_files ();
+               public unowned string get_package_id ();
+               [CCode (array_length = false, array_null_terminated = true)]
                [NoAccessorMethod]
                public string[] files { owned get; set; }
                [NoAccessorMethod]
@@ -288,17 +290,6 @@ namespace Pk {
                [NoAccessorMethod]
                public uint media_type { get; set; }
        }
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_message_get_type ()")]
-       public class Message : Pk.Source {
-               [CCode (has_construct_function = false)]
-               public Message ();
-               public unowned string get_details ();
-               public Pk.MessageEnum get_kind ();
-               [NoAccessorMethod]
-               public string details { owned get; set; }
-               [NoAccessorMethod]
-               public uint type { get; set; }
-       }
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_package_get_type ()")]
        public class Package : Pk.Source {
                [CCode (has_construct_function = false)]
@@ -336,12 +327,13 @@ namespace Pk {
                public bool parse (string data) throws GLib.Error;
                public void print ();
                public bool set_id (string package_id) throws GLib.Error;
+               public void set_info (Pk.Info info);
+               public void set_summary (string summary);
                public static void test (void* user_data);
                [NoAccessorMethod]
                public string description { owned get; set; }
                [NoAccessorMethod]
                public uint group { get; set; }
-               [NoAccessorMethod]
                public uint info { get; set; }
                [NoAccessorMethod]
                public string license { owned get; set; }
@@ -349,8 +341,7 @@ namespace Pk {
                public string package_id { owned get; }
                [NoAccessorMethod]
                public uint64 size { get; set; }
-               [NoAccessorMethod]
-               public string summary { owned get; set; }
+               public string summary { get; set; }
                [CCode (array_length = false, array_null_terminated = true)]
                [NoAccessorMethod]
                public string[] update_bugzilla_urls { owned get; set; }
@@ -393,6 +384,7 @@ namespace Pk {
                public Pk.PackageSack filter (Pk.PackageSackFilterFunc filter_cb);
                public Pk.PackageSack filter_by_info (Pk.Info info);
                public Pk.Package find_by_id (string package_id);
+               public Pk.Package find_by_id_name_arch (string package_id);
                public GLib.GenericArray<weak Pk.Package> get_array ();
                public bool get_details (GLib.Cancellable? cancellable = null) throws GLib.Error;
                public async void get_details_async (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
@@ -471,6 +463,9 @@ namespace Pk {
        public class RepoDetail : Pk.Source {
                [CCode (has_construct_function = false)]
                public RepoDetail ();
+               public unowned string get_description ();
+               public bool get_enabled ();
+               public unowned string get_id ();
                [NoAccessorMethod]
                public string description { owned get; set; }
                [NoAccessorMethod]
@@ -518,7 +513,6 @@ namespace Pk {
                public bool add_eula_required (Pk.EulaRequired item);
                public bool add_files (Pk.Files item);
                public bool add_media_change_required (Pk.MediaChangeRequired item);
-               public bool add_message (Pk.Message item);
                public bool add_package (Pk.Package item);
                public bool add_repo_detail (Pk.RepoDetail item);
                public bool add_repo_signature_required (Pk.RepoSignatureRequired item);
@@ -533,7 +527,6 @@ namespace Pk {
                public Pk.Exit get_exit_code ();
                public GLib.GenericArray<weak Pk.Files> get_files_array ();
                public GLib.GenericArray<weak Pk.MediaChangeRequired> get_media_change_required_array ();
-               public GLib.GenericArray<weak Pk.Message> get_message_array ();
                public GLib.GenericArray<weak Pk.Package> get_package_array ();
                public Pk.PackageSack get_package_sack ();
                public GLib.GenericArray<weak Pk.RepoDetail> get_repo_detail_array ();
@@ -556,17 +549,6 @@ namespace Pk {
                [NoAccessorMethod]
                public uint64 transaction_flags { get; set; }
        }
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_service_pack_get_type ()")]
-       public class ServicePack : GLib.Object {
-               [CCode (has_construct_function = false)]
-               public ServicePack ();
-               public bool check_valid (string filename) throws GLib.Error;
-               public async void create_for_package_ids_async (string filename, string package_ids, string package_ids_exclude, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
-               public async void create_for_updates_async (string filename, string package_ids_exclude, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
-               public bool generic_finish (GLib.AsyncResult res) throws GLib.Error;
-               public bool set_temp_directory (string directory);
-               public static void test (void* user_data);
-       }
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", type_id = "pk_source_get_type ()")]
        public class Source : GLib.Object {
                [CCode (has_construct_function = false)]
@@ -580,6 +562,8 @@ namespace Pk {
        public class Task : Pk.Client {
                [CCode (has_construct_function = false)]
                public Task ();
+               public async void depends_on_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
+               public Pk.Results depends_on_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void download_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, string directory, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results download_packages_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, string directory, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                [NoWrapper]
@@ -587,8 +571,6 @@ namespace Pk {
                public Pk.Results generic_finish (GLib.AsyncResult res) throws GLib.Error;
                public async void get_categories_async (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results get_categories_sync (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
-               public async void get_depends_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
-               public Pk.Results get_depends_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void get_details_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results get_details_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void get_files_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
@@ -599,8 +581,6 @@ namespace Pk {
                public Pk.Results get_packages_sync (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void get_repo_list_async (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results get_repo_list_sync (Pk.Bitfield filters, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
-               public async void get_requires_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
-               public Pk.Results get_requires_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public bool get_simulate ();
                public async void get_update_detail_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results get_update_detail_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
@@ -618,10 +598,14 @@ namespace Pk {
                public Pk.Results refresh_cache_sync (bool force, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void remove_packages_async ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool allow_deps, bool autoremove, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results remove_packages_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool allow_deps, bool autoremove, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+               [NoWrapper]
+               public virtual void repair_question (uint request, Pk.Results results);
                public async void repair_system_async (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results repair_system_sync (GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void repo_enable_async (string repo_id, bool enabled, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results repo_enable_sync (string repo_id, bool enabled, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+               public async void required_by_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
+               public Pk.Results required_by_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] package_ids, bool recursive, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void resolve_async (Pk.Bitfield filters, string packages, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
                public Pk.Results resolve_sync (Pk.Bitfield filters, string packages, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public async void search_details_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
@@ -644,8 +628,8 @@ namespace Pk {
                public Pk.Results update_packages_sync ([CCode (array_length = false, array_null_terminated = true)] string[] package_ids, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public bool user_accepted (uint request);
                public bool user_declined (uint request);
-               public async void what_provides_async (Pk.Bitfield filters, Pk.Provides provides, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
-               public Pk.Results what_provides_sync (Pk.Bitfield filters, Pk.Provides provides, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
+               public async void what_provides_async (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback);
+               public Pk.Results what_provides_sync (Pk.Bitfield filters, [CCode (array_length = false, array_null_terminated = true)] string[] values, GLib.Cancellable? cancellable, Pk.ProgressCallback progress_callback) throws GLib.Error;
                public bool only_download { get; set; }
                public bool simulate { get; set; }
        }
@@ -990,28 +974,6 @@ namespace Pk {
                public static Pk.MediaType enum_from_string (string media_type);
                public static unowned string enum_to_string (Pk.MediaType media_type);
        }
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_MESSAGE_ENUM_", type_id = "pk_message_enum_get_type ()")]
-       public enum MessageEnum {
-               UNKNOWN,
-               BROKEN_MIRROR,
-               CONNECTION_REFUSED,
-               PARAMETER_INVALID,
-               PRIORITY_INVALID,
-               BACKEND_ERROR,
-               DAEMON_ERROR,
-               CACHE_BEING_REBUILT,
-               NEWER_PACKAGE_EXISTS,
-               COULD_NOT_FIND_PACKAGE,
-               CONFIG_FILES_CHANGED,
-               PACKAGE_ALREADY_INSTALLED,
-               AUTOREMOVE_IGNORED,
-               REPO_METADATA_DOWNLOAD_FAILED,
-               REPO_FOR_DEVELOPERS_ONLY,
-               OTHER_UPDATES_HELD_BACK,
-               LAST;
-               public static Pk.MessageEnum from_string (string message);
-               public static unowned string to_string (Pk.MessageEnum message);
-       }
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkNetworkEnum", cprefix = "PK_NETWORK_ENUM_", type_id = "pk_network_enum_get_type ()")]
        [GIR (name = "NetworkEnum")]
        public enum Network {
@@ -1052,25 +1014,6 @@ namespace Pk {
                TRANSACTION_FLAGS,
                INVALID
        }
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkProvidesEnum", cprefix = "PK_PROVIDES_ENUM_", type_id = "pk_provides_enum_get_type ()")]
-       [GIR (name = "ProvidesEnum")]
-       public enum Provides {
-               UNKNOWN,
-               ANY,
-               MODALIAS,
-               CODEC,
-               MIMETYPE,
-               FONT,
-               HARDWARE_DRIVER,
-               POSTSCRIPT_DRIVER,
-               PLASMA_SERVICE,
-               SHARED_LIB,
-               PYTHON,
-               LANGUAGE_SUPPORT,
-               LAST;
-               public static Pk.Provides enum_from_string (string provides);
-               public static unowned string enum_to_string (Pk.Provides provides);
-       }
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PkRestartEnum", cprefix = "PK_RESTART_ENUM_", type_id = "pk_restart_enum_get_type ()")]
        [GIR (name = "RestartEnum")]
        public enum Restart {
@@ -1090,12 +1033,12 @@ namespace Pk {
        public enum Role {
                UNKNOWN,
                CANCEL,
-               GET_DEPENDS,
+               DEPENDS_ON,
                GET_DETAILS,
                GET_FILES,
                GET_PACKAGES,
                GET_REPO_LIST,
-               GET_REQUIRES,
+               REQUIRED_BY,
                GET_UPDATE_DETAIL,
                GET_UPDATES,
                INSTALL_FILES,
@@ -1117,8 +1060,10 @@ namespace Pk {
                GET_DISTRO_UPGRADES,
                GET_CATEGORIES,
                GET_OLD_TRANSACTIONS,
-               UPGRADE_SYSTEM,
                REPAIR_SYSTEM,
+               GET_DETAILS_LOCAL,
+               GET_FILES_LOCAL,
+               REPO_REMOVE,
                LAST;
                public static Pk.Bitfield bitfield_from_string (string roles);
                public static string bitfield_to_string (Pk.Bitfield roles);
@@ -1214,11 +1159,6 @@ namespace Pk {
                public static Pk.UpgradeKind enum_from_string (string upgrade_kind);
                public static unowned string enum_to_string (Pk.UpgradeKind upgrade_kind);
        }
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_CATALOG_ERROR_")]
-       public errordomain CatalogError {
-               FAILED;
-               public static GLib.Quark quark ();
-       }
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_CLIENT_ERROR_")]
        public errordomain ClientError {
                FAILED,
@@ -1240,24 +1180,10 @@ namespace Pk {
                CANNOT_START_DAEMON;
                public static GLib.Quark quark ();
        }
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cprefix = "PK_SERVICE_PACK_ERROR_")]
-       public errordomain ServicePackError {
-               FAILED_SETUP,
-               FAILED_DOWNLOAD,
-               FAILED_EXTRACTION,
-               FAILED_CREATE,
-               NOTHING_TO_DO,
-               NOT_COMPATIBLE;
-               public static GLib.Quark quark ();
-       }
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", instance_pos = 1.9)]
        public delegate bool PackageSackFilterFunc (Pk.Package package);
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", instance_pos = 2.9)]
        public delegate void ProgressCallback (Pk.Progress progress, Pk.ProgressType type);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_CATALOG_FILE_EXTENSION")]
-       public const string CATALOG_FILE_EXTENSION;
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_CATALOG_FILE_HEADER")]
-       public const string CATALOG_FILE_HEADER;
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DBUS_INTERFACE")]
        public const string DBUS_INTERFACE;
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_DBUS_INTERFACE_TRANSACTION")]
@@ -1284,8 +1210,6 @@ namespace Pk {
        public const int PACKAGE_ID_NAME;
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_PACKAGE_ID_VERSION")]
        public const int PACKAGE_ID_VERSION;
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_SERVICE_PACK_FILE_EXTENSION")]
-       public const string SERVICE_PACK_FILE_EXTENSION;
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_SERVICE_PACK_GROUP_NAME")]
        public const string SERVICE_PACK_GROUP_NAME;
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h", cname = "PK_SYSTEM_PACKAGE_CACHE_FILENAME")]
@@ -1313,78 +1237,6 @@ namespace Pk {
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
        public static string iso8601_present ();
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__POINTER_UINT_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__POINTER_UINT_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_BOOLEAN (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_BOXED (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_BOOLEAN (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_BOOLEAN_STRING_UINT_STRING_UINT_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_BOOLEAN_UINT_UINT_STRING_UINT_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_BOOLEAN (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_BOOLEAN_STRING_UINT_STRING_UINT_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_STRING_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_UINT64 (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_STRING_UINT_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_STRING_STRING_STRING_UINT64 (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_UINT_STRING_STRING_UINT64 (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_STRING_UINT_UINT_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_UINT_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__STRING_UINT_UINT_UINT_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__UINT_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__UINT_STRING_STRING (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__UINT_STRING_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__UINT_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
-       public static void marshal_VOID__UINT_UINT_UINT_UINT (GLib.Closure closure, GLib.Value return_value, uint n_param_values, GLib.Value param_values, void* invocation_hint, void* marshal_data);
-       [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
        public static void polkit_agent_close ();
        [CCode (cheader_filename = "packagekit-glib2/packagekit.h")]
        public static int polkit_agent_open ();
index 8d704a1..e75a9c1 100644 (file)
@@ -157,26 +157,41 @@ namespace Pango {
                public void to_bytes ([CCode (array_length_cname = "n_bytes", array_length_pos = 1.1)] out uint8[] bytes);
                public void unref ();
        }
-       [CCode (cheader_filename = "pango/pango.h")]
-       [Compact]
-       public class EngineLang {
+       [CCode (cheader_filename = "pango/pango.h", type_id = "pango_engine_get_type ()")]
+       public abstract class Engine : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected Engine ();
        }
-       [CCode (cheader_filename = "pango/pango.h")]
-       [Compact]
-       public class EngineShape {
+       [CCode (cheader_filename = "pango/pango.h", type_id = "pango_engine_lang_get_type ()")]
+       public abstract class EngineLang : Pango.Engine {
+               [CCode (has_construct_function = false)]
+               protected EngineLang ();
+               [NoWrapper]
+               public virtual void script_break (string text, int len, Pango.Analysis analysis, Pango.LogAttr attrs, int attrs_len);
+       }
+       [CCode (cheader_filename = "pango/pango.h", type_id = "pango_engine_shape_get_type ()")]
+       public abstract class EngineShape : Pango.Engine {
+               [CCode (has_construct_function = false)]
+               protected EngineShape ();
+               [NoWrapper]
+               public virtual Pango.CoverageLevel covers (Pango.Font font, Pango.Language language, unichar wc);
+               [NoWrapper]
+               public virtual void script_shape (Pango.Font font, string item_text, uint item_length, Pango.Analysis analysis, Pango.GlyphString glyphs, string paragraph_text, uint paragraph_length);
        }
        [CCode (cheader_filename = "pango/pango.h", type_id = "pango_font_get_type ()")]
        public abstract class Font : GLib.Object {
                [CCode (has_construct_function = false)]
                protected Font ();
-               public Pango.FontDescription describe ();
+               public virtual Pango.FontDescription describe ();
+               [NoWrapper]
+               public virtual Pango.FontDescription describe_absolute ();
                public Pango.FontDescription describe_with_absolute_size ();
                public static void descriptions_free ([CCode (array_length_cname = "n_descs", array_length_pos = 1.1)] owned Pango.FontDescription[]? descs);
-               public unowned Pango.EngineShape find_shaper (Pango.Language language, uint32 ch);
-               public Pango.Coverage get_coverage (Pango.Language language);
-               public unowned Pango.FontMap? get_font_map ();
-               public void get_glyph_extents (Pango.Glyph glyph, out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
-               public Pango.FontMetrics get_metrics (Pango.Language? language);
+               public virtual unowned Pango.EngineShape find_shaper (Pango.Language lang, uint32 ch);
+               public virtual Pango.Coverage get_coverage (Pango.Language lang);
+               public virtual unowned Pango.FontMap? get_font_map ();
+               public virtual void get_glyph_extents (Pango.Glyph glyph, out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect);
+               public virtual Pango.FontMetrics get_metrics (Pango.Language? language);
        }
        [CCode (cheader_filename = "pango/pango.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "pango_font_description_get_type ()")]
        [Compact]
@@ -218,33 +233,45 @@ namespace Pango {
        public abstract class FontFace : GLib.Object {
                [CCode (has_construct_function = false)]
                protected FontFace ();
-               public Pango.FontDescription describe ();
-               public unowned string get_face_name ();
-               public bool is_synthesized ();
-               public void list_sizes ([CCode (array_length_cname = "n_sizes", array_length_pos = 1.1)] out int[] sizes);
+               public virtual Pango.FontDescription describe ();
+               public virtual unowned string get_face_name ();
+               public virtual bool is_synthesized ();
+               public virtual void list_sizes ([CCode (array_length_cname = "n_sizes", array_length_pos = 1.1)] out int[] sizes);
        }
        [CCode (cheader_filename = "pango/pango.h", type_id = "pango_font_family_get_type ()")]
        public abstract class FontFamily : GLib.Object {
                [CCode (has_construct_function = false)]
                protected FontFamily ();
-               public unowned string get_name ();
-               public bool is_monospace ();
-               public void list_faces ([CCode (array_length_cname = "n_faces", array_length_pos = 1.1)] out Pango.FontFace[] faces);
+               public virtual unowned string get_name ();
+               public virtual bool is_monospace ();
+               public virtual void list_faces ([CCode (array_length_cname = "n_faces", array_length_pos = 1.1)] out Pango.FontFace[] faces);
        }
        [CCode (cheader_filename = "pango/pango.h", type_id = "pango_font_map_get_type ()")]
        public abstract class FontMap : GLib.Object {
                [CCode (has_construct_function = false)]
                protected FontMap ();
-               public void changed ();
+               public virtual void changed ();
                public Pango.Context create_context ();
-               public uint get_serial ();
-               public void list_families ([CCode (array_length_cname = "n_families", array_length_pos = 1.1)] out Pango.FontFamily[] families);
-               public Pango.Font load_font (Pango.Context context, Pango.FontDescription desc);
-               public Pango.Fontset load_fontset (Pango.Context context, Pango.FontDescription desc, Pango.Language language);
+               public virtual uint get_serial ();
+               public unowned string get_shape_engine_type ();
+               public virtual void list_families ([CCode (array_length_cname = "n_families", array_length_pos = 1.1)] out Pango.FontFamily[] families);
+               public virtual Pango.Font load_font (Pango.Context context, Pango.FontDescription desc);
+               public virtual Pango.Fontset load_fontset (Pango.Context context, Pango.FontDescription desc, Pango.Language language);
        }
        [CCode (cheader_filename = "pango/pango.h", ref_function = "pango_font_metrics_ref", type_id = "pango_font_metrics_get_type ()", unref_function = "pango_font_metrics_unref")]
        [Compact]
        public class FontMetrics {
+               public int approximate_char_width;
+               public int approximate_digit_width;
+               public int ascent;
+               public int descent;
+               public uint ref_count;
+               public int strikethrough_position;
+               public int strikethrough_thickness;
+               public int underline_position;
+               public int underline_thickness;
+               [CCode (has_construct_function = false)]
+               public FontMetrics ();
                public int get_approximate_char_width ();
                public int get_approximate_digit_width ();
                public int get_ascent ();
@@ -260,9 +287,18 @@ namespace Pango {
        public abstract class Fontset : GLib.Object {
                [CCode (has_construct_function = false)]
                protected Fontset ();
-               public void @foreach (Pango.FontsetForeachFunc func);
-               public Pango.Font get_font (uint wc);
-               public Pango.FontMetrics get_metrics ();
+               public virtual void @foreach (Pango.FontsetForeachFunc func);
+               public virtual Pango.Font get_font (uint wc);
+               [NoWrapper]
+               public virtual Pango.Language get_language ();
+               public virtual Pango.FontMetrics get_metrics ();
+       }
+       [CCode (cheader_filename = "pango/pango.h", type_id = "pango_fontset_simple_get_type ()")]
+       public class FontsetSimple : Pango.Fontset {
+               [CCode (has_construct_function = false)]
+               public FontsetSimple (Pango.Language language);
+               public void append (Pango.Font font);
+               public int size ();
        }
        [CCode (cheader_filename = "pango/pango.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "pango_glyph_item_get_type ()")]
        [Compact]
@@ -429,6 +465,14 @@ namespace Pango {
                [CCode (has_construct_function = false)]
                protected LayoutRun ();
        }
+       [CCode (cheader_filename = "pango/pango.h")]
+       [Compact]
+       public class Map {
+       }
+       [CCode (cheader_filename = "pango/pango.h")]
+       [Compact]
+       public class MapEntry {
+       }
        [CCode (cheader_filename = "pango/pango.h", type_id = "pango_renderer_get_type ()")]
        public abstract class Renderer : GLib.Object {
                public Pango.Matrix matrix;
@@ -450,7 +494,7 @@ namespace Pango {
                public virtual void draw_trapezoid (Pango.RenderPart part, double y1_, double x11, double x21, double y2, double x12, double x22);
                [NoWrapper]
                public virtual void end ();
-               public Pango.Color? get_color (Pango.RenderPart part);
+               public unowned Pango.Color? get_color (Pango.RenderPart part);
                public unowned Pango.Layout get_layout ();
                public unowned Pango.LayoutLine get_layout_line ();
                public unowned Pango.Matrix? get_matrix ();
@@ -507,6 +551,19 @@ namespace Pango {
                public bool parse (string spec);
                public string to_string ();
        }
+       [CCode (cheader_filename = "pango/pango.h", has_type_id = false)]
+       public struct EngineInfo {
+               public weak string id;
+               public weak string engine_type;
+               public weak string render_type;
+               public Pango.EngineScriptInfo scripts;
+               public int n_scripts;
+       }
+       [CCode (cheader_filename = "pango/pango.h", has_type_id = false)]
+       public struct EngineScriptInfo {
+               public Pango.Script script;
+               public weak string langs;
+       }
        [CCode (cheader_filename = "pango/pango.h")]
        [SimpleType]
        public struct Glyph : uint32 {
@@ -591,6 +648,13 @@ namespace Pango {
                public int width;
                public int height;
        }
+       [CCode (cheader_filename = "pango/pango.h", has_type_id = false)]
+       public struct ScriptForLang {
+               [CCode (array_length = false, array_null_terminated = true)]
+               public weak char[] lang;
+               [CCode (array_length = false, array_null_terminated = true)]
+               public weak Pango.Script[] scripts;
+       }
        [CCode (cheader_filename = "pango/pango.h", cprefix = "PANGO_ALIGN_", type_id = "pango_alignment_get_type ()")]
        public enum Alignment {
                LEFT,
@@ -842,6 +906,7 @@ namespace Pango {
                THIN,
                ULTRALIGHT,
                LIGHT,
+               SEMILIGHT,
                BOOK,
                NORMAL,
                MEDIUM,
@@ -865,6 +930,8 @@ namespace Pango {
        public delegate bool FontsetForeachFunc (Pango.Fontset fontset, Pango.Font font);
        [CCode (cheader_filename = "pango/pango.h", cname = "PANGO_ANALYSIS_FLAG_CENTERED_BASELINE")]
        public const int ANALYSIS_FLAG_CENTERED_BASELINE;
+       [CCode (cheader_filename = "pango/pango.h", cname = "PANGO_ANALYSIS_FLAG_IS_ELLIPSIS")]
+       public const int ANALYSIS_FLAG_IS_ELLIPSIS;
        [CCode (cheader_filename = "pango/pango.h", cname = "PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING")]
        public const int ATTR_INDEX_FROM_TEXT_BEGINNING;
        [CCode (cheader_filename = "pango/pango.h", cname = "PANGO_ENGINE_TYPE_LANG")]
@@ -939,16 +1006,26 @@ namespace Pango {
        [CCode (cheader_filename = "pango/pango.h")]
        public static void @break (string text, int length, Pango.Analysis analysis, [CCode (array_length_cname = "attrs_len", array_length_pos = 4.1)] Pango.LogAttr[] attrs);
        [CCode (cheader_filename = "pango/pango.h")]
+       public static string config_key_get (string key);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static string config_key_get_system (string key);
+       [CCode (cheader_filename = "pango/pango.h")]
+       public static void default_break (string text, int length, Pango.Analysis analysis, Pango.LogAttr attrs, int attrs_len);
+       [CCode (cheader_filename = "pango/pango.h")]
        public static void extents_to_pixels (Pango.Rectangle? inclusive, Pango.Rectangle? nearest);
        [CCode (cheader_filename = "pango/pango.h")]
        public static Pango.Direction find_base_dir (string text, int length);
        [CCode (cheader_filename = "pango/pango.h")]
        public static void find_paragraph_boundary (string text, int length, out int paragraph_delimiter_index, out int next_paragraph_start);
        [CCode (cheader_filename = "pango/pango.h")]
+       public static unowned string get_lib_subdirectory ();
+       [CCode (cheader_filename = "pango/pango.h")]
        public static void get_log_attrs (string text, int length, int level, Pango.Language language, [CCode (array_length_cname = "attrs_len", array_length_pos = 5.1)] Pango.LogAttr[] log_attrs);
        [CCode (cheader_filename = "pango/pango.h")]
        public static bool get_mirror_char (unichar ch, unichar mirrored_ch);
        [CCode (cheader_filename = "pango/pango.h")]
+       public static unowned string get_sysconf_subdirectory ();
+       [CCode (cheader_filename = "pango/pango.h")]
        [Deprecated (replacement = "Pango.Gravity.get_for_matrix", since = "vala-0.18")]
        public static Pango.Gravity gravity_get_for_matrix (Pango.Matrix matrix);
        [CCode (cheader_filename = "pango/pango.h")]
@@ -969,6 +1046,9 @@ namespace Pango {
        [CCode (cheader_filename = "pango/pango.h")]
        public static uint8 log2vis_get_embedding_levels (string text, int length, Pango.Direction pbase_dir);
        [CCode (cheader_filename = "pango/pango.h")]
+       [Deprecated (since = "1.32")]
+       public static void lookup_aliases (string fontname, [CCode (array_length_cname = "n_families", array_length_pos = 2.1)] out string[] families);
+       [CCode (cheader_filename = "pango/pango.h")]
        public static bool markup_parser_finish (GLib.MarkupParseContext context, out Pango.AttrList attr_list, out string text, out unichar accel_char) throws GLib.Error;
        [CCode (cheader_filename = "pango/pango.h")]
        public static unowned GLib.MarkupParseContext markup_parser_new (unichar accel_marker);
index bd7de1b..8f9485c 100644 (file)
@@ -50,9 +50,11 @@ namespace Poppler {
                public string get_modified ();
                public string get_name ();
                public int get_page_index ();
+               public Poppler.Rectangle get_rectangle ();
                public void set_color (Poppler.Color? poppler_color);
                public void set_contents (string contents);
                public void set_flags (Poppler.AnnotFlag flags);
+               public void set_rectangle (Poppler.Rectangle poppler_rect);
        }
        [CCode (cheader_filename = "poppler.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "poppler_annot_callout_line_get_type ()")]
        [Compact]
@@ -69,6 +71,13 @@ namespace Poppler {
                public Poppler.AnnotCalloutLine copy ();
                public void free ();
        }
+       [CCode (cheader_filename = "poppler.h", type_id = "poppler_annot_circle_get_type ()")]
+       public class AnnotCircle : Poppler.AnnotMarkup {
+               [CCode (has_construct_function = false, type = "PopplerAnnot*")]
+               public AnnotCircle (Poppler.Document doc, Poppler.Rectangle rect);
+               public Poppler.Color get_interior_color ();
+               public void set_interior_color (Poppler.Color? poppler_color);
+       }
        [CCode (cheader_filename = "poppler.h", type_id = "poppler_annot_file_attachment_get_type ()")]
        public class AnnotFileAttachment : Poppler.AnnotMarkup {
                [CCode (has_construct_function = false)]
@@ -83,6 +92,12 @@ namespace Poppler {
                public Poppler.AnnotCalloutLine get_callout_line ();
                public Poppler.AnnotFreeTextQuadding get_quadding ();
        }
+       [CCode (cheader_filename = "poppler.h", type_id = "poppler_annot_line_get_type ()")]
+       public class AnnotLine : Poppler.AnnotMarkup {
+               [CCode (has_construct_function = false, type = "PopplerAnnot*")]
+               public AnnotLine (Poppler.Document doc, Poppler.Rectangle rect, Poppler.Point start, Poppler.Point end);
+               public void set_vertices (Poppler.Point start, Poppler.Point end);
+       }
        [CCode (cheader_filename = "poppler.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "poppler_annot_mapping_get_type ()")]
        [Compact]
        public class AnnotMapping {
@@ -124,6 +139,13 @@ namespace Poppler {
                protected AnnotScreen ();
                public unowned Poppler.Action get_action ();
        }
+       [CCode (cheader_filename = "poppler.h", type_id = "poppler_annot_square_get_type ()")]
+       public class AnnotSquare : Poppler.AnnotMarkup {
+               [CCode (has_construct_function = false, type = "PopplerAnnot*")]
+               public AnnotSquare (Poppler.Document doc, Poppler.Rectangle rect);
+               public Poppler.Color get_interior_color ();
+               public void set_interior_color (Poppler.Color? poppler_color);
+       }
        [CCode (cheader_filename = "poppler.h", type_id = "poppler_annot_text_get_type ()")]
        public class AnnotText : Poppler.AnnotMarkup {
                [CCode (has_construct_function = false, type = "PopplerAnnot*")]
@@ -134,6 +156,21 @@ namespace Poppler {
                public void set_icon (string icon);
                public void set_is_open (bool is_open);
        }
+       [CCode (cheader_filename = "poppler.h", type_id = "poppler_annot_text_markup_get_type ()")]
+       public class AnnotTextMarkup : Poppler.AnnotMarkup {
+               [CCode (has_construct_function = false)]
+               protected AnnotTextMarkup ();
+               public GLib.Array<Poppler.Quadrilateral> get_quadrilaterals ();
+               [CCode (has_construct_function = false, type = "PopplerAnnot*")]
+               public AnnotTextMarkup.highlight (Poppler.Document doc, Poppler.Rectangle rect, GLib.Array<Poppler.Quadrilateral> quadrilaterals);
+               public void set_quadrilaterals (GLib.Array<Poppler.Quadrilateral> quadrilaterals);
+               [CCode (has_construct_function = false, type = "PopplerAnnot*")]
+               public AnnotTextMarkup.squiggly (Poppler.Document doc, Poppler.Rectangle rect, GLib.Array<Poppler.Quadrilateral> quadrilaterals);
+               [CCode (has_construct_function = false, type = "PopplerAnnot*")]
+               public AnnotTextMarkup.strikeout (Poppler.Document doc, Poppler.Rectangle rect, GLib.Array<Poppler.Quadrilateral> quadrilaterals);
+               [CCode (has_construct_function = false, type = "PopplerAnnot*")]
+               public AnnotTextMarkup.underline (Poppler.Document doc, Poppler.Rectangle rect, GLib.Array<Poppler.Quadrilateral> quadrilaterals);
+       }
        [CCode (cheader_filename = "poppler.h", type_id = "poppler_attachment_get_type ()")]
        public class Attachment : GLib.Object {
                public GLib.StringBuilder checksum;
@@ -415,7 +452,10 @@ namespace Poppler {
                public void get_size (out double width, out double height);
                public string get_text ();
                public GLib.List<Poppler.TextAttributes> get_text_attributes ();
+               public GLib.List<Poppler.TextAttributes> get_text_attributes_for_area (Poppler.Rectangle area);
+               public string get_text_for_area (Poppler.Rectangle area);
                public bool get_text_layout ([CCode (array_length_cname = "n_rectangles", array_length_pos = 1.1, array_length_type = "guint")] out Poppler.Rectangle[] rectangles);
+               public bool get_text_layout_for_area (Poppler.Rectangle area, [CCode (array_length_cname = "n_rectangles", array_length_pos = 2.1, array_length_type = "guint")] out Poppler.Rectangle[] rectangles);
                public Cairo.Surface get_thumbnail ();
                public bool get_thumbnail_size (out int width, out int height);
                public Poppler.PageTransition get_transition ();
@@ -425,7 +465,7 @@ namespace Poppler {
                public void render_for_printing_with_options ([CCode (type = "cairo_t*")] Cairo.Context cairo, Poppler.PrintFlags options);
                public void render_selection ([CCode (type = "cairo_t*")] Cairo.Context cairo, Poppler.Rectangle selection, Poppler.Rectangle old_selection, Poppler.SelectionStyle style, Poppler.Color glyph_color, Poppler.Color background_color);
                public void render_to_ps (Poppler.PSFile ps_file);
-               [Deprecated]
+               [Deprecated (since = "0.16")]
                public static void selection_region_free (GLib.List<Poppler.Rectangle> region);
                public string label { owned get; }
        }
@@ -444,6 +484,103 @@ namespace Poppler {
                public Poppler.PageTransition copy ();
                public void free ();
        }
+       [CCode (cheader_filename = "poppler.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "poppler_point_get_type ()")]
+       [Compact]
+       public class Point {
+               public double x;
+               public double y;
+               [CCode (has_construct_function = false)]
+               public Point ();
+               public Poppler.Point copy ();
+               public void free ();
+       }
+       [CCode (cheader_filename = "poppler.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "poppler_quadrilateral_get_type ()")]
+       [Compact]
+       public class Quadrilateral {
+               public Poppler.Point p1;
+               public Poppler.Point p2;
+               public Poppler.Point p3;
+               public Poppler.Point p4;
+               [CCode (has_construct_function = false)]
+               public Quadrilateral ();
+               public Poppler.Quadrilateral copy ();
+               public void free ();
+       }
+       [CCode (cheader_filename = "poppler.h", type_id = "poppler_structure_element_get_type ()")]
+       public class StructureElement : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected StructureElement ();
+               public string get_abbreviation ();
+               public string get_actual_text ();
+               public string get_alt_text ();
+               public bool get_background_color (out unowned Poppler.Color color);
+               public double get_baseline_shift ();
+               public Poppler.StructureBlockAlign get_block_align ();
+               public bool get_border_color ([CCode (array_length = false)] out unowned Poppler.Color[] colors);
+               public void get_border_style ([CCode (array_length = false)] out Poppler.StructureBorderStyle[] border_styles);
+               public bool get_border_thickness ([CCode (array_length = false)] out double[] border_thicknesses);
+               public bool get_bounding_box (out Poppler.Rectangle bounding_box);
+               public bool get_color (out unowned Poppler.Color color);
+               public uint get_column_count ();
+               [CCode (array_length_pos = 0.1, array_length_type = "guint")]
+               public double[] get_column_gaps ();
+               [CCode (array_length_pos = 0.1, array_length_type = "guint")]
+               public double[] get_column_widths ();
+               public double get_end_indent ();
+               public string get_form_description ();
+               public Poppler.StructureFormRole get_form_role ();
+               public Poppler.StructureFormState get_form_state ();
+               public Poppler.StructureGlyphOrientation get_glyph_orientation ();
+               public double get_height ();
+               public string get_id ();
+               public Poppler.StructureInlineAlign get_inline_align ();
+               public Poppler.StructureElementKind get_kind ();
+               public string get_language ();
+               public double get_line_height ();
+               public Poppler.StructureListNumbering get_list_numbering ();
+               public void get_padding ([CCode (array_length = false)] out double[] paddings);
+               public int get_page ();
+               public Poppler.StructurePlacement get_placement ();
+               public Poppler.StructureRubyAlign get_ruby_align ();
+               public Poppler.StructureRubyPosition get_ruby_position ();
+               public double get_space_after ();
+               public double get_space_before ();
+               public double get_start_indent ();
+               public void get_table_border_style ([CCode (array_length = false)] out Poppler.StructureBorderStyle[] border_styles);
+               public uint get_table_column_span ();
+               [CCode (array_length = false, array_null_terminated = true)]
+               public string[] get_table_headers ();
+               public void get_table_padding ([CCode (array_length = false)] out double[] paddings);
+               public uint get_table_row_span ();
+               public Poppler.StructureTableScope get_table_scope ();
+               public string get_table_summary ();
+               public string get_text (Poppler.StructureGetTextFlags flags);
+               public Poppler.StructureTextAlign get_text_align ();
+               public bool get_text_decoration_color (out unowned Poppler.Color color);
+               public double get_text_decoration_thickness ();
+               public Poppler.StructureTextDecoration get_text_decoration_type ();
+               public double get_text_indent ();
+               [CCode (array_length_pos = 0.1, array_length_type = "guint")]
+               public Poppler.TextSpan[] get_text_spans ();
+               public string get_title ();
+               public double get_width ();
+               public Poppler.StructureWritingMode get_writing_mode ();
+               public bool is_block ();
+               public bool is_content ();
+               public bool is_grouping ();
+               public bool is_inline ();
+       }
+       [CCode (cheader_filename = "poppler.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "poppler_structure_element_iter_get_type ()")]
+       [Compact]
+       public class StructureElementIter {
+               [CCode (has_construct_function = false)]
+               public StructureElementIter (Poppler.Document poppler_document);
+               public Poppler.StructureElementIter copy ();
+               public void free ();
+               public Poppler.StructureElementIter get_child ();
+               public Poppler.StructureElement get_element ();
+               public bool next ();
+       }
        [CCode (cheader_filename = "poppler.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "poppler_text_attributes_get_type ()")]
        [Compact]
        public class TextAttributes {
@@ -458,6 +595,18 @@ namespace Poppler {
                public Poppler.TextAttributes copy ();
                public void free ();
        }
+       [CCode (cheader_filename = "poppler.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "poppler_text_span_get_type ()")]
+       [Compact]
+       public class TextSpan {
+               public Poppler.TextSpan copy ();
+               public void free ();
+               public void get_color (out unowned Poppler.Color color);
+               public unowned string get_font_name ();
+               public unowned string get_text ();
+               public bool is_bold_font ();
+               public bool is_fixed_width_font ();
+               public bool is_serif_font ();
+       }
        [CCode (cheader_filename = "poppler.h", has_type_id = false)]
        public struct ActionAny {
                public Poppler.ActionType type;
@@ -781,6 +930,179 @@ namespace Poppler {
                WORD,
                LINE
        }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_BLOCK_ALIGN_", type_id = "poppler_structure_block_align_get_type ()")]
+       public enum StructureBlockAlign {
+               BEFORE,
+               MIDDLE,
+               AFTER,
+               JUSTIFY
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_BORDER_STYLE_", type_id = "poppler_structure_border_style_get_type ()")]
+       public enum StructureBorderStyle {
+               NONE,
+               HIDDEN,
+               DOTTED,
+               DASHED,
+               SOLID,
+               DOUBLE,
+               GROOVE,
+               INSET,
+               OUTSET
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_ELEMENT_", type_id = "poppler_structure_element_kind_get_type ()")]
+       public enum StructureElementKind {
+               CONTENT,
+               OBJECT_REFERENCE,
+               DOCUMENT,
+               PART,
+               ARTICLE,
+               SECTION,
+               DIV,
+               SPAN,
+               QUOTE,
+               NOTE,
+               REFERENCE,
+               BIBENTRY,
+               CODE,
+               LINK,
+               ANNOT,
+               BLOCKQUOTE,
+               CAPTION,
+               NONSTRUCT,
+               TOC,
+               TOC_ITEM,
+               INDEX,
+               PRIVATE,
+               PARAGRAPH,
+               HEADING,
+               HEADING_1,
+               HEADING_2,
+               HEADING_3,
+               HEADING_4,
+               HEADING_5,
+               HEADING_6,
+               LIST,
+               LIST_ITEM,
+               LIST_LABEL,
+               LIST_BODY,
+               TABLE,
+               TABLE_ROW,
+               TABLE_HEADING,
+               TABLE_DATA,
+               TABLE_HEADER,
+               TABLE_FOOTER,
+               TABLE_BODY,
+               RUBY,
+               RUBY_BASE_TEXT,
+               RUBY_ANNOT_TEXT,
+               RUBY_PUNCTUATION,
+               WARICHU,
+               WARICHU_TEXT,
+               WARICHU_PUNCTUATION,
+               FIGURE,
+               FORMULA,
+               FORM
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_FORM_ROLE_", type_id = "poppler_structure_form_role_get_type ()")]
+       public enum StructureFormRole {
+               UNDEFINED,
+               RADIO_BUTTON,
+               PUSH_BUTTON,
+               TEXT_VALUE,
+               CHECKBOX
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_FORM_STATE_", type_id = "poppler_structure_form_state_get_type ()")]
+       public enum StructureFormState {
+               ON,
+               OFF,
+               NEUTRAL
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_GET_TEXT_", type_id = "poppler_structure_get_text_flags_get_type ()")]
+       [Flags]
+       public enum StructureGetTextFlags {
+               NONE,
+               RECURSIVE
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_GLYPH_", type_id = "poppler_structure_glyph_orientation_get_type ()")]
+       public enum StructureGlyphOrientation {
+               [CCode (cname = "POPPLER_STRUCTURE_GLYPH_ORIENTATION_AUTO")]
+               AUTO,
+               [CCode (cname = "POPPLER_STRUCTURE_GLYPH_ORIENTATION_0")]
+               @0,
+               [CCode (cname = "POPPLER_STRUCTURE_GLYPH_ORIENTATION_90")]
+               @90,
+               [CCode (cname = "POPPLER_STRUCTURE_GLYPH_ORIENTATION_180")]
+               @180,
+               [CCode (cname = "POPPLER_STRUCTURE_GLYPH_ORIENTATION_270")]
+               @270
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_INLINE_ALIGN_", type_id = "poppler_structure_inline_align_get_type ()")]
+       public enum StructureInlineAlign {
+               START,
+               CENTER,
+               END
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_LIST_NUMBERING_", type_id = "poppler_structure_list_numbering_get_type ()")]
+       public enum StructureListNumbering {
+               NONE,
+               DISC,
+               CIRCLE,
+               SQUARE,
+               DECIMAL,
+               UPPER_ROMAN,
+               LOWER_ROMAN,
+               UPPER_ALPHA,
+               LOWER_ALPHA
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_PLACEMENT_", type_id = "poppler_structure_placement_get_type ()")]
+       public enum StructurePlacement {
+               BLOCK,
+               INLINE,
+               BEFORE,
+               START,
+               END
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_RUBY_ALIGN_", type_id = "poppler_structure_ruby_align_get_type ()")]
+       public enum StructureRubyAlign {
+               START,
+               CENTER,
+               END,
+               JUSTIFY,
+               DISTRIBUTE
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_RUBY_POSITION_", type_id = "poppler_structure_ruby_position_get_type ()")]
+       public enum StructureRubyPosition {
+               BEFORE,
+               AFTER,
+               WARICHU,
+               INLINE
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_TABLE_SCOPE_", type_id = "poppler_structure_table_scope_get_type ()")]
+       public enum StructureTableScope {
+               ROW,
+               COLUMN,
+               BOTH
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_TEXT_ALIGN_", type_id = "poppler_structure_text_align_get_type ()")]
+       public enum StructureTextAlign {
+               START,
+               CENTER,
+               END,
+               JUSTIFY
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_TEXT_DECORATION_", type_id = "poppler_structure_text_decoration_get_type ()")]
+       public enum StructureTextDecoration {
+               NONE,
+               UNDERLINE,
+               OVERLINE,
+               LINETHROUGH
+       }
+       [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_STRUCTURE_WRITING_MODE_", type_id = "poppler_structure_writing_mode_get_type ()")]
+       public enum StructureWritingMode {
+               LR_TB,
+               RL_TB,
+               TB_RL
+       }
        [CCode (cheader_filename = "poppler.h", cprefix = "POPPLER_VIEWER_PREFERENCES_", type_id = "poppler_viewer_preferences_get_type ()")]
        [Flags]
        public enum ViewerPreferences {
index 7629f88..c7a8cef 100644 (file)
@@ -1026,6 +1026,7 @@ namespace Posix {
        [CCode (cheader_filename = "stdlib.h")]
        public void _exit (int status);
 
+       [CCode (has_target = false)]
        public delegate void AtExitFunc ();
 
        [CCode (cheader_filename = "stdlib.h")]
index cd10dfd..5232711 100644 (file)
@@ -1 +1,2 @@
 gio-2.0
+libsoup-2.4
index ef88f8d..8a5f617 100644 (file)
@@ -2,7 +2,7 @@
 
 [CCode (cprefix = "Rest", gir_namespace = "Rest", gir_version = "0.7", lower_case_cprefix = "rest_")]
 namespace Rest {
-       [CCode (cheader_filename = "rest/oauth2-proxy.h", cname = "OAuth2Proxy", cprefix = "oauth2_proxy_", type_id = "oauth2_proxy_get_type ()")]
+       [CCode (cheader_filename = "rest/oauth2-proxy.h", cname = "OAuth2Proxy", lower_case_cprefix = "oauth2_proxy_", type_id = "oauth2_proxy_get_type ()")]
        public class OAuth2Proxy : Rest.Proxy {
                [CCode (has_construct_function = false, type = "RestProxy*")]
                public OAuth2Proxy (string client_id, string auth_endpoint, string url_format, bool binding_required);
@@ -19,23 +19,26 @@ namespace Rest {
                [NoAccessorMethod]
                public string client_id { owned get; construct; }
        }
-       [CCode (cheader_filename = "rest/oauth2-proxy-call.h", cname = "OAuth2ProxyCall", cprefix = "oauth2_proxy_call_", type_id = "oauth2_proxy_call_get_type ()")]
+       [CCode (cheader_filename = "rest/oauth2-proxy-call.h", cname = "OAuth2ProxyCall", lower_case_cprefix = "oauth2_proxy_call_", type_id = "oauth2_proxy_call_get_type ()")]
        public class OAuth2ProxyCall : Rest.ProxyCall {
                [CCode (has_construct_function = false)]
                protected OAuth2ProxyCall ();
        }
-       [CCode (cheader_filename = "rest/oauth-proxy.h", cname = "OAuthProxy", cprefix = "oauth_proxy_", type_id = "oauth_proxy_get_type ()")]
+       [CCode (cheader_filename = "rest/oauth-proxy.h", cname = "OAuthProxy", lower_case_cprefix = "oauth_proxy_", type_id = "oauth_proxy_get_type ()")]
        public class OAuthProxy : Rest.Proxy {
                [CCode (has_construct_function = false, type = "RestProxy*")]
                public OAuthProxy (string consumer_key, string consumer_secret, string url_format, bool binding_required);
                public bool access_token (string function, string verifier) throws GLib.Error;
+               public bool access_token_async (string function, string verifier, [CCode (delegate_target_pos = 4.1, scope = "async")] owned Rest.OAuthProxyAuthCallback callback, GLib.Object weak_object) throws GLib.Error;
                public bool auth_step (string function) throws GLib.Error;
+               public bool auth_step_async (string function, [CCode (delegate_target_pos = 3.1, scope = "async")] owned Rest.OAuthProxyAuthCallback callback, GLib.Object weak_object) throws GLib.Error;
                public unowned string get_signature_host ();
                public unowned string get_token ();
                public unowned string get_token_secret ();
                public bool is_oauth10a ();
                public Rest.Proxy new_echo_proxy (string service_url, string url_format, bool binding_required);
                public bool request_token (string function, string callback_uri) throws GLib.Error;
+               public bool request_token_async (string function, string callback_uri, [CCode (delegate_target_pos = 4.1, scope = "async")] owned Rest.OAuthProxyAuthCallback callback, GLib.Object weak_object) throws GLib.Error;
                public void set_signature_host (string signature_host);
                public void set_token (string token);
                public void set_token_secret (string token_secret);
@@ -51,7 +54,7 @@ namespace Rest {
                public string token { get; set; }
                public string token_secret { get; set; }
        }
-       [CCode (cheader_filename = "rest/oauth-proxy-call.h", cname = "OAuthProxyCall", cprefix = "oauth_proxy_call_", type_id = "oauth_proxy_call_get_type ()")]
+       [CCode (cheader_filename = "rest/oauth-proxy-call.h", cname = "OAuthProxyCall", lower_case_cprefix = "oauth_proxy_call_", type_id = "oauth_proxy_call_get_type ()")]
        public class OAuthProxyCall : Rest.ProxyCall {
                [CCode (has_construct_function = false)]
                protected OAuthProxyCall ();
@@ -96,6 +99,7 @@ namespace Rest {
        public class Proxy : GLib.Object {
                [CCode (has_construct_function = false)]
                public Proxy (string url_format, bool binding_required);
+               public void add_soup_feature (Soup.SessionFeature feature);
                public bool bind (...);
                public unowned string get_user_agent ();
                public virtual Rest.ProxyCall new_call ();
@@ -109,6 +113,8 @@ namespace Rest {
                [NoAccessorMethod]
                public string password { owned get; set; }
                [NoAccessorMethod]
+               public string ssl_ca_file { owned get; set; }
+               [NoAccessorMethod]
                public bool ssl_strict { get; set; }
                [NoAccessorMethod]
                public string url_format { owned get; set; }
@@ -135,6 +141,7 @@ namespace Rest {
                public void add_params (...);
                public bool cancel ();
                public bool continuous ([CCode (delegate_target_pos = 2.1)] Rest.ProxyCallContinuousCallback callback, GLib.Object weak_object) throws GLib.Error;
+               public unowned string get_function ();
                public unowned string get_method ();
                public unowned Rest.Params get_params ();
                public unowned string get_payload ();
@@ -157,7 +164,7 @@ namespace Rest {
                public void set_function (string function);
                public void set_method (string method);
                public bool sync () throws GLib.Error;
-               public bool upload ([CCode (delegate_target_pos = 2.1)] Rest.ProxyCallUploadCallback callback, GLib.Object weak_object) throws GLib.Error;
+               public bool upload ([CCode (delegate_target_pos = 2.1, scope = "async")] owned Rest.ProxyCallUploadCallback callback, GLib.Object weak_object) throws GLib.Error;
                [NoAccessorMethod]
                public Rest.Proxy proxy { owned get; construct; }
        }
diff --git a/vapi/webkit2gtk-4.0.deps b/vapi/webkit2gtk-4.0.deps
new file mode 100644 (file)
index 0000000..2868ee0
--- /dev/null
@@ -0,0 +1,2 @@
+gtk+-3.0
+libsoup-2.4
diff --git a/vapi/webkit2gtk-4.0.vapi b/vapi/webkit2gtk-4.0.vapi
new file mode 100644 (file)
index 0000000..6f1447b
--- /dev/null
@@ -0,0 +1,1003 @@
+/* webkit2gtk-4.0.vapi generated by vapigen, do not modify. */
+
+[CCode (cprefix = "WebKit", gir_namespace = "WebKit2", gir_version = "4.0", lower_case_cprefix = "webkit_")]
+namespace WebKit {
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_authentication_request_get_type ()")]
+       public class AuthenticationRequest : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected AuthenticationRequest ();
+               public void authenticate (WebKit.Credential? credential);
+               public bool can_save_credentials ();
+               public void cancel ();
+               public unowned string get_host ();
+               public uint get_port ();
+               public WebKit.Credential get_proposed_credential ();
+               public unowned string get_realm ();
+               public WebKit.AuthenticationScheme get_scheme ();
+               public bool is_for_proxy ();
+               public bool is_retry ();
+               public signal void cancelled ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_back_forward_list_get_type ()")]
+       public class BackForwardList : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected BackForwardList ();
+               public unowned WebKit.BackForwardListItem get_back_item ();
+               public GLib.List<weak WebKit.BackForwardListItem> get_back_list ();
+               public GLib.List<weak WebKit.BackForwardListItem> get_back_list_with_limit (uint limit);
+               public unowned WebKit.BackForwardListItem get_current_item ();
+               public unowned WebKit.BackForwardListItem get_forward_item ();
+               public GLib.List<weak WebKit.BackForwardListItem> get_forward_list ();
+               public GLib.List<weak WebKit.BackForwardListItem> get_forward_list_with_limit (uint limit);
+               public uint get_length ();
+               public unowned WebKit.BackForwardListItem get_nth_item (int index);
+               public signal void changed (WebKit.BackForwardListItem? item_added, void* items_removed);
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_back_forward_list_item_get_type ()")]
+       public class BackForwardListItem : GLib.InitiallyUnowned {
+               [CCode (has_construct_function = false)]
+               protected BackForwardListItem ();
+               public unowned string get_original_uri ();
+               public unowned string get_title ();
+               public unowned string get_uri ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_context_menu_get_type ()")]
+       public class ContextMenu : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public ContextMenu ();
+               public void append (WebKit.ContextMenuItem item);
+               public unowned WebKit.ContextMenuItem first ();
+               public unowned WebKit.ContextMenuItem get_item_at_position (uint position);
+               public unowned GLib.List<WebKit.ContextMenuItem> get_items ();
+               public uint get_n_items ();
+               public void insert (WebKit.ContextMenuItem item, int position);
+               public unowned WebKit.ContextMenuItem last ();
+               public void move_item (WebKit.ContextMenuItem item, int position);
+               public void prepend (WebKit.ContextMenuItem item);
+               public void remove (WebKit.ContextMenuItem item);
+               public void remove_all ();
+               [CCode (has_construct_function = false)]
+               public ContextMenu.with_items (GLib.List<WebKit.ContextMenuItem> items);
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_context_menu_item_get_type ()")]
+       public class ContextMenuItem : GLib.InitiallyUnowned {
+               [CCode (has_construct_function = false)]
+               public ContextMenuItem (Gtk.Action action);
+               [CCode (has_construct_function = false)]
+               public ContextMenuItem.from_stock_action (WebKit.ContextMenuAction action);
+               [CCode (has_construct_function = false)]
+               public ContextMenuItem.from_stock_action_with_label (WebKit.ContextMenuAction action, string label);
+               public unowned Gtk.Action get_action ();
+               public WebKit.ContextMenuAction get_stock_action ();
+               public unowned WebKit.ContextMenu get_submenu ();
+               public bool is_separator ();
+               [CCode (has_construct_function = false)]
+               public ContextMenuItem.separator ();
+               public void set_submenu (WebKit.ContextMenu? submenu);
+               [CCode (has_construct_function = false)]
+               public ContextMenuItem.with_submenu (string label, WebKit.ContextMenu submenu);
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_cookie_manager_get_type ()")]
+       public class CookieManager : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected CookieManager ();
+               public void delete_all_cookies ();
+               public void delete_cookies_for_domain (string domain);
+               public async WebKit.CookieAcceptPolicy get_accept_policy (GLib.Cancellable? cancellable) throws GLib.Error;
+               [CCode (array_length = false, array_null_terminated = true)]
+               public async string[] get_domains_with_cookies (GLib.Cancellable? cancellable) throws GLib.Error;
+               public void set_accept_policy (WebKit.CookieAcceptPolicy policy);
+               public void set_persistent_storage (string filename, WebKit.CookiePersistentStorage storage);
+               public signal void changed ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "webkit_credential_get_type ()")]
+       [Compact]
+       public class Credential {
+               [CCode (has_construct_function = false)]
+               public Credential (string username, string password, WebKit.CredentialPersistence persistence);
+               public WebKit.Credential copy ();
+               public void free ();
+               public unowned string get_password ();
+               public WebKit.CredentialPersistence get_persistence ();
+               public unowned string get_username ();
+               public bool has_password ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_download_get_type ()")]
+       public class Download : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected Download ();
+               public void cancel ();
+               public bool get_allow_overwrite ();
+               public unowned string get_destination ();
+               public double get_elapsed_time ();
+               public double get_estimated_progress ();
+               public uint64 get_received_data_length ();
+               public unowned WebKit.URIRequest get_request ();
+               public unowned WebKit.URIResponse get_response ();
+               public unowned WebKit.WebView get_web_view ();
+               public void set_allow_overwrite (bool allowed);
+               public void set_destination (string uri);
+               public bool allow_overwrite { get; set; }
+               public string destination { get; }
+               public double estimated_progress { get; }
+               public WebKit.URIResponse response { get; }
+               public signal void created_destination (string destination);
+               public virtual signal bool decide_destination (string suggested_filename);
+               public signal void failed (void* error);
+               public signal void finished ();
+               public signal void received_data (uint64 data_length);
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_favicon_database_get_type ()")]
+       public class FaviconDatabase : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected FaviconDatabase ();
+               public void clear ();
+               public async Cairo.Surface get_favicon (string page_uri, GLib.Cancellable? cancellable) throws GLib.Error;
+               public string get_favicon_uri (string page_uri);
+               public signal void favicon_changed (string page_uri, string favicon_uri);
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_file_chooser_request_get_type ()")]
+       public class FileChooserRequest : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected FileChooserRequest ();
+               public void cancel ();
+               [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_mime_types ();
+               public unowned Gtk.FileFilter get_mime_types_filter ();
+               public bool get_select_multiple ();
+               [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_selected_files ();
+               public void select_files ([CCode (array_length = false, array_null_terminated = true)] string[] files);
+               [NoAccessorMethod]
+               public Gtk.FileFilter filter { owned get; }
+               [CCode (array_length = false, array_null_terminated = true)]
+               public string[] mime_types { get; }
+               public bool select_multiple { get; }
+               [CCode (array_length = false, array_null_terminated = true)]
+               public string[] selected_files { get; }
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_find_controller_get_type ()")]
+       public class FindController : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected FindController ();
+               public void count_matches (string search_text, uint32 find_options, uint max_match_count);
+               public uint get_max_match_count ();
+               public uint32 get_options ();
+               public unowned string get_search_text ();
+               public unowned WebKit.WebView get_web_view ();
+               public void search (string search_text, uint32 find_options, uint max_match_count);
+               public void search_finish ();
+               public void search_next ();
+               public void search_previous ();
+               public uint max_match_count { get; }
+               public WebKit.FindOptions options { get; }
+               [NoAccessorMethod]
+               public string text { owned get; }
+               public WebKit.WebView web_view { get; construct; }
+               public signal void counted_matches (uint match_count);
+               public signal void failed_to_find_text ();
+               public signal void found_text (uint match_count);
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_form_submission_request_get_type ()")]
+       public class FormSubmissionRequest : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected FormSubmissionRequest ();
+               public unowned GLib.HashTable<void*,void*> get_text_fields ();
+               public void submit ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_geolocation_permission_request_get_type ()")]
+       public class GeolocationPermissionRequest : GLib.Object, WebKit.PermissionRequest {
+               [CCode (has_construct_function = false)]
+               protected GeolocationPermissionRequest ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_hit_test_result_get_type ()")]
+       public class HitTestResult : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected HitTestResult ();
+               public bool context_is_editable ();
+               public bool context_is_image ();
+               public bool context_is_link ();
+               public bool context_is_media ();
+               public bool context_is_scrollbar ();
+               public uint get_context ();
+               public unowned string get_image_uri ();
+               public unowned string get_link_label ();
+               public unowned string get_link_title ();
+               public unowned string get_link_uri ();
+               public unowned string get_media_uri ();
+               public uint context { get; construct; }
+               public string image_uri { get; construct; }
+               public string link_label { get; construct; }
+               public string link_title { get; construct; }
+               public string link_uri { get; construct; }
+               public string media_uri { get; construct; }
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", ref_function = "webkit_javascript_result_ref", type_id = "webkit_javascript_result_get_type ()", unref_function = "webkit_javascript_result_unref")]
+       [Compact]
+       public class JavascriptResult {
+               public WebKit.JavascriptResult @ref ();
+               public void unref ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", ref_function = "webkit_mime_info_ref", type_id = "webkit_mime_info_get_type ()", unref_function = "webkit_mime_info_unref")]
+       [Compact]
+       public class MimeInfo {
+               public unowned string get_description ();
+               [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_extensions ();
+               public unowned string get_mime_type ();
+               public WebKit.MimeInfo @ref ();
+               public void unref ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "webkit_navigation_action_get_type ()")]
+       [Compact]
+       public class NavigationAction {
+               public WebKit.NavigationAction copy ();
+               public void free ();
+               public uint get_modifiers ();
+               public uint get_mouse_button ();
+               public WebKit.NavigationType get_navigation_type ();
+               public unowned WebKit.URIRequest get_request ();
+               public bool is_user_gesture ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_navigation_policy_decision_get_type ()")]
+       public class NavigationPolicyDecision : WebKit.PolicyDecision {
+               [CCode (has_construct_function = false)]
+               protected NavigationPolicyDecision ();
+               public unowned string get_frame_name ();
+               [Deprecated (since = "2.6")]
+               public uint get_modifiers ();
+               [Deprecated (since = "2.6")]
+               public uint get_mouse_button ();
+               public unowned WebKit.NavigationAction get_navigation_action ();
+               [Deprecated (since = "2.6")]
+               public WebKit.NavigationType get_navigation_type ();
+               [Deprecated (since = "2.6")]
+               public unowned WebKit.URIRequest get_request ();
+               public string frame_name { get; }
+               [Deprecated (since = "2.6")]
+               public uint modifiers { get; }
+               [Deprecated (since = "2.6")]
+               public uint mouse_button { get; }
+               public WebKit.NavigationAction navigation_action { get; }
+               [Deprecated (since = "2.6")]
+               public WebKit.NavigationType navigation_type { get; }
+               [Deprecated (since = "2.6")]
+               public WebKit.URIRequest request { get; }
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_plugin_get_type ()")]
+       public class Plugin : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected Plugin ();
+               public unowned string get_description ();
+               public unowned GLib.List<WebKit.MimeInfo> get_mime_info_list ();
+               public unowned string get_name ();
+               public unowned string get_path ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_policy_decision_get_type ()")]
+       public abstract class PolicyDecision : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected PolicyDecision ();
+               public void download ();
+               public void ignore ();
+               public void use ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_print_operation_get_type ()")]
+       public class PrintOperation : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public PrintOperation (WebKit.WebView web_view);
+               public unowned Gtk.PageSetup get_page_setup ();
+               public unowned Gtk.PrintSettings get_print_settings ();
+               public void print ();
+               public WebKit.PrintOperationResponse run_dialog (Gtk.Window? parent);
+               public void set_page_setup (Gtk.PageSetup page_setup);
+               public void set_print_settings (Gtk.PrintSettings print_settings);
+               public Gtk.PageSetup page_setup { get; set; }
+               public Gtk.PrintSettings print_settings { get; set; }
+               [NoAccessorMethod]
+               public WebKit.WebView web_view { owned get; construct; }
+               public signal void failed (void* error);
+               public signal void finished ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_response_policy_decision_get_type ()")]
+       public class ResponsePolicyDecision : WebKit.PolicyDecision {
+               [CCode (has_construct_function = false)]
+               protected ResponsePolicyDecision ();
+               public unowned WebKit.URIRequest get_request ();
+               public unowned WebKit.URIResponse get_response ();
+               public bool is_mime_type_supported ();
+               public WebKit.URIRequest request { get; }
+               public WebKit.URIResponse response { get; }
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", copy_function = "g_boxed_copy", free_function = "g_boxed_free", type_id = "webkit_script_dialog_get_type ()")]
+       [Compact]
+       public class ScriptDialog {
+               public void confirm_set_confirmed (bool confirmed);
+               public WebKit.ScriptDialogType get_dialog_type ();
+               public unowned string get_message ();
+               public unowned string prompt_get_default_text ();
+               public void prompt_set_text (string text);
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_security_manager_get_type ()")]
+       public class SecurityManager : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected SecurityManager ();
+               public void register_uri_scheme_as_cors_enabled (string scheme);
+               public void register_uri_scheme_as_display_isolated (string scheme);
+               public void register_uri_scheme_as_empty_document (string scheme);
+               public void register_uri_scheme_as_local (string scheme);
+               public void register_uri_scheme_as_no_access (string scheme);
+               public void register_uri_scheme_as_secure (string scheme);
+               public bool uri_scheme_is_cors_enabled (string scheme);
+               public bool uri_scheme_is_display_isolated (string scheme);
+               public bool uri_scheme_is_empty_document (string scheme);
+               public bool uri_scheme_is_local (string scheme);
+               public bool uri_scheme_is_no_access (string scheme);
+               public bool uri_scheme_is_secure (string scheme);
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_settings_get_type ()")]
+       public class Settings : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public Settings ();
+               public bool get_allow_modal_dialogs ();
+               public bool get_auto_load_images ();
+               public unowned string get_cursive_font_family ();
+               public unowned string get_default_charset ();
+               public unowned string get_default_font_family ();
+               public uint32 get_default_font_size ();
+               public uint32 get_default_monospace_font_size ();
+               public bool get_draw_compositing_indicators ();
+               public bool get_enable_accelerated_2d_canvas ();
+               public bool get_enable_caret_browsing ();
+               public bool get_enable_developer_extras ();
+               public bool get_enable_dns_prefetching ();
+               public bool get_enable_frame_flattening ();
+               public bool get_enable_fullscreen ();
+               public bool get_enable_html5_database ();
+               public bool get_enable_html5_local_storage ();
+               public bool get_enable_hyperlink_auditing ();
+               public bool get_enable_java ();
+               public bool get_enable_javascript ();
+               public bool get_enable_media_stream ();
+               public bool get_enable_mediasource ();
+               public bool get_enable_offline_web_application_cache ();
+               public bool get_enable_page_cache ();
+               public bool get_enable_plugins ();
+               public bool get_enable_private_browsing ();
+               public bool get_enable_resizable_text_areas ();
+               public bool get_enable_site_specific_quirks ();
+               public bool get_enable_smooth_scrolling ();
+               public bool get_enable_spatial_navigation ();
+               public bool get_enable_tabs_to_links ();
+               public bool get_enable_webaudio ();
+               public bool get_enable_webgl ();
+               public bool get_enable_write_console_messages_to_stdout ();
+               public bool get_enable_xss_auditor ();
+               public unowned string get_fantasy_font_family ();
+               public bool get_javascript_can_access_clipboard ();
+               public bool get_javascript_can_open_windows_automatically ();
+               public bool get_load_icons_ignoring_image_load_setting ();
+               public bool get_media_playback_allows_inline ();
+               public bool get_media_playback_requires_user_gesture ();
+               public uint32 get_minimum_font_size ();
+               public unowned string get_monospace_font_family ();
+               public unowned string get_pictograph_font_family ();
+               public bool get_print_backgrounds ();
+               public unowned string get_sans_serif_font_family ();
+               public unowned string get_serif_font_family ();
+               public unowned string get_user_agent ();
+               public bool get_zoom_text_only ();
+               public void set_allow_modal_dialogs (bool allowed);
+               public void set_auto_load_images (bool enabled);
+               public void set_cursive_font_family (string cursive_font_family);
+               public void set_default_charset (string default_charset);
+               public void set_default_font_family (string default_font_family);
+               public void set_default_font_size (uint32 font_size);
+               public void set_default_monospace_font_size (uint32 font_size);
+               public void set_draw_compositing_indicators (bool enabled);
+               public void set_enable_accelerated_2d_canvas (bool enabled);
+               public void set_enable_caret_browsing (bool enabled);
+               public void set_enable_developer_extras (bool enabled);
+               public void set_enable_dns_prefetching (bool enabled);
+               public void set_enable_frame_flattening (bool enabled);
+               public void set_enable_fullscreen (bool enabled);
+               public void set_enable_html5_database (bool enabled);
+               public void set_enable_html5_local_storage (bool enabled);
+               public void set_enable_hyperlink_auditing (bool enabled);
+               public void set_enable_java (bool enabled);
+               public void set_enable_javascript (bool enabled);
+               public void set_enable_media_stream (bool enabled);
+               public void set_enable_mediasource (bool enabled);
+               public void set_enable_offline_web_application_cache (bool enabled);
+               public void set_enable_page_cache (bool enabled);
+               public void set_enable_plugins (bool enabled);
+               public void set_enable_private_browsing (bool enabled);
+               public void set_enable_resizable_text_areas (bool enabled);
+               public void set_enable_site_specific_quirks (bool enabled);
+               public void set_enable_smooth_scrolling (bool enabled);
+               public void set_enable_spatial_navigation (bool enabled);
+               public void set_enable_tabs_to_links (bool enabled);
+               public void set_enable_webaudio (bool enabled);
+               public void set_enable_webgl (bool enabled);
+               public void set_enable_write_console_messages_to_stdout (bool enabled);
+               public void set_enable_xss_auditor (bool enabled);
+               public void set_fantasy_font_family (string fantasy_font_family);
+               public void set_javascript_can_access_clipboard (bool enabled);
+               public void set_javascript_can_open_windows_automatically (bool enabled);
+               public void set_load_icons_ignoring_image_load_setting (bool enabled);
+               public void set_media_playback_allows_inline (bool enabled);
+               public void set_media_playback_requires_user_gesture (bool enabled);
+               public void set_minimum_font_size (uint32 font_size);
+               public void set_monospace_font_family (string monospace_font_family);
+               public void set_pictograph_font_family (string pictograph_font_family);
+               public void set_print_backgrounds (bool print_backgrounds);
+               public void set_sans_serif_font_family (string sans_serif_font_family);
+               public void set_serif_font_family (string serif_font_family);
+               public void set_user_agent (string? user_agent);
+               public void set_user_agent_with_application_details (string? application_name, string? application_version);
+               public void set_zoom_text_only (bool zoom_text_only);
+               public bool allow_modal_dialogs { get; set construct; }
+               public bool auto_load_images { get; set construct; }
+               public string cursive_font_family { get; set construct; }
+               public string default_charset { get; set construct; }
+               public string default_font_family { get; set construct; }
+               public uint default_font_size { get; set construct; }
+               public uint default_monospace_font_size { get; set construct; }
+               public bool draw_compositing_indicators { get; set construct; }
+               public bool enable_accelerated_2d_canvas { get; set construct; }
+               public bool enable_caret_browsing { get; set construct; }
+               public bool enable_developer_extras { get; set construct; }
+               public bool enable_dns_prefetching { get; set construct; }
+               public bool enable_frame_flattening { get; set construct; }
+               public bool enable_fullscreen { get; set construct; }
+               public bool enable_html5_database { get; set construct; }
+               public bool enable_html5_local_storage { get; set construct; }
+               public bool enable_hyperlink_auditing { get; set construct; }
+               public bool enable_java { get; set construct; }
+               public bool enable_javascript { get; set construct; }
+               public bool enable_media_stream { get; set construct; }
+               public bool enable_mediasource { get; set construct; }
+               public bool enable_offline_web_application_cache { get; set construct; }
+               public bool enable_page_cache { get; set construct; }
+               public bool enable_plugins { get; set construct; }
+               public bool enable_private_browsing { get; set construct; }
+               public bool enable_resizable_text_areas { get; set construct; }
+               public bool enable_site_specific_quirks { get; set construct; }
+               public bool enable_smooth_scrolling { get; set construct; }
+               public bool enable_spatial_navigation { get; set construct; }
+               public bool enable_tabs_to_links { get; set construct; }
+               public bool enable_webaudio { get; set construct; }
+               public bool enable_webgl { get; set construct; }
+               public bool enable_write_console_messages_to_stdout { get; set construct; }
+               public bool enable_xss_auditor { get; set construct; }
+               public string fantasy_font_family { get; set construct; }
+               public bool javascript_can_access_clipboard { get; set construct; }
+               public bool javascript_can_open_windows_automatically { get; set construct; }
+               public bool load_icons_ignoring_image_load_setting { get; set construct; }
+               public bool media_playback_allows_inline { get; set construct; }
+               public bool media_playback_requires_user_gesture { get; set construct; }
+               public uint minimum_font_size { get; set construct; }
+               public string monospace_font_family { get; set construct; }
+               public string pictograph_font_family { get; set construct; }
+               public bool print_backgrounds { get; set construct; }
+               public string sans_serif_font_family { get; set construct; }
+               public string serif_font_family { get; set construct; }
+               public string user_agent { get; set construct; }
+               public bool zoom_text_only { get; set construct; }
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_uri_request_get_type ()")]
+       public class URIRequest : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public URIRequest (string uri);
+               public unowned Soup.MessageHeaders get_http_headers ();
+               public unowned string get_uri ();
+               public void set_uri (string uri);
+               public string uri { get; set construct; }
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_uri_response_get_type ()")]
+       public class URIResponse : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected URIResponse ();
+               public uint64 get_content_length ();
+               public unowned Soup.MessageHeaders get_http_headers ();
+               public unowned string get_mime_type ();
+               public uint get_status_code ();
+               public unowned string get_suggested_filename ();
+               public unowned string get_uri ();
+               public uint64 content_length { get; }
+               public Soup.MessageHeaders http_headers { get; }
+               public string mime_type { get; }
+               public uint status_code { get; }
+               public string suggested_filename { get; }
+               public string uri { get; }
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_uri_scheme_request_get_type ()")]
+       public class URISchemeRequest : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected URISchemeRequest ();
+               public void finish (GLib.InputStream stream, int64 stream_length, string? mime_type);
+               public void finish_error (GLib.Error error);
+               public unowned string get_path ();
+               public unowned string get_scheme ();
+               public unowned string get_uri ();
+               public unowned WebKit.WebView get_web_view ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_user_content_manager_get_type ()")]
+       public class UserContentManager : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public UserContentManager ();
+               public void add_script (WebKit.UserScript script);
+               public void add_style_sheet (WebKit.UserStyleSheet stylesheet);
+               public void remove_all_scripts ();
+               public void remove_all_style_sheets ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", ref_function = "webkit_user_script_ref", type_id = "webkit_user_script_get_type ()", unref_function = "webkit_user_script_unref")]
+       [Compact]
+       public class UserScript {
+               [CCode (has_construct_function = false)]
+               public UserScript (string source, WebKit.UserContentInjectedFrames injected_frames, WebKit.UserScriptInjectionTime injection_time, [CCode (array_length = false, array_null_terminated = true)] string[]? whitelist, [CCode (array_length = false, array_null_terminated = true)] string[]? blacklist);
+               public WebKit.UserScript @ref ();
+               public void unref ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", ref_function = "webkit_user_style_sheet_ref", type_id = "webkit_user_style_sheet_get_type ()", unref_function = "webkit_user_style_sheet_unref")]
+       [Compact]
+       public class UserStyleSheet {
+               [CCode (has_construct_function = false)]
+               public UserStyleSheet (string source, WebKit.UserContentInjectedFrames injected_frames, WebKit.UserStyleLevel level, [CCode (array_length = false, array_null_terminated = true)] string[]? whitelist, [CCode (array_length = false, array_null_terminated = true)] string[]? blacklist);
+               public WebKit.UserStyleSheet @ref ();
+               public void unref ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_web_context_get_type ()")]
+       public class WebContext : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected WebContext ();
+               public void allow_tls_certificate_for_host (GLib.TlsCertificate certificate, string host);
+               public void clear_cache ();
+               public WebKit.Download download_uri (string uri);
+               public WebKit.CacheModel get_cache_model ();
+               public unowned WebKit.CookieManager get_cookie_manager ();
+               public static unowned WebKit.WebContext get_default ();
+               public unowned WebKit.FaviconDatabase get_favicon_database ();
+               public unowned string get_favicon_database_directory ();
+               public async GLib.List<WebKit.Plugin> get_plugins (GLib.Cancellable? cancellable) throws GLib.Error;
+               public WebKit.ProcessModel get_process_model ();
+               public unowned WebKit.SecurityManager get_security_manager ();
+               public bool get_spell_checking_enabled ();
+               [CCode (array_length = false, array_null_terminated = true)]
+               public unowned string[] get_spell_checking_languages ();
+               public WebKit.TLSErrorsPolicy get_tls_errors_policy ();
+               public void prefetch_dns (string hostname);
+               public void register_uri_scheme (string scheme, owned WebKit.URISchemeRequestCallback callback);
+               public void set_additional_plugins_directory (string directory);
+               public void set_cache_model (WebKit.CacheModel cache_model);
+               public void set_disk_cache_directory (string directory);
+               public void set_favicon_database_directory (string? path);
+               public void set_preferred_languages ([CCode (array_length = false, array_null_terminated = true)] string[]? languages);
+               public void set_process_model (WebKit.ProcessModel process_model);
+               public void set_spell_checking_enabled (bool enabled);
+               public void set_spell_checking_languages ([CCode (array_length = false, array_null_terminated = true)] string[] languages);
+               public void set_tls_errors_policy (WebKit.TLSErrorsPolicy policy);
+               public void set_web_extensions_directory (string directory);
+               public void set_web_extensions_initialization_user_data (GLib.Variant user_data);
+               public signal void download_started (WebKit.Download download);
+               public signal void initialize_web_extensions ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_web_inspector_get_type ()")]
+       public class WebInspector : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected WebInspector ();
+               public void close ();
+               public uint get_attached_height ();
+               public unowned string get_inspected_uri ();
+               public unowned WebKit.WebViewBase get_web_view ();
+               public bool is_attached ();
+               public void show ();
+               public uint attached_height { get; }
+               public string inspected_uri { get; }
+               [HasEmitter]
+               public signal bool attach ();
+               public signal bool bring_to_front ();
+               public signal void closed ();
+               [HasEmitter]
+               public signal bool detach ();
+               public signal bool open_window ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_web_resource_get_type ()")]
+       public class WebResource : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected WebResource ();
+               public async uint8[] get_data (GLib.Cancellable? cancellable) throws GLib.Error;
+               public unowned WebKit.URIResponse get_response ();
+               public unowned string get_uri ();
+               public WebKit.URIResponse response { get; }
+               public string uri { get; }
+               public signal void failed (void* error);
+               public signal void finished ();
+               public signal void received_data (uint64 data_length);
+               public signal void sent_request (WebKit.URIRequest request, WebKit.URIResponse redirected_response);
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_web_view_get_type ()")]
+       public class WebView : WebKit.WebViewBase, Atk.Implementor, Gtk.Buildable {
+               [CCode (has_construct_function = false, type = "GtkWidget*")]
+               public WebView ();
+               public async bool can_execute_editing_command (string command, GLib.Cancellable? cancellable) throws GLib.Error;
+               public bool can_go_back ();
+               public bool can_go_forward ();
+               public bool can_show_mime_type (string mime_type);
+               public WebKit.Download download_uri (string uri);
+               public void execute_editing_command (string command);
+               public unowned WebKit.BackForwardList get_back_forward_list ();
+               public unowned WebKit.WebContext get_context ();
+               public unowned string get_custom_charset ();
+               public double get_estimated_load_progress ();
+               public unowned Cairo.Surface get_favicon ();
+               public unowned WebKit.FindController get_find_controller ();
+               public unowned WebKit.WebInspector get_inspector ();
+               public unowned WebKit.WebResource get_main_resource ();
+               public uint64 get_page_id ();
+               public unowned WebKit.Settings get_settings ();
+               public async Cairo.Surface get_snapshot (WebKit.SnapshotRegion region, WebKit.SnapshotOptions options, GLib.Cancellable? cancellable) throws GLib.Error;
+               public unowned string get_title ();
+               public bool get_tls_info (out unowned GLib.TlsCertificate certificate, out GLib.TlsCertificateFlags errors);
+               public unowned string get_uri ();
+               public unowned WebKit.UserContentManager get_user_content_manager ();
+               public unowned WebKit.WindowProperties get_window_properties ();
+               public double get_zoom_level ();
+               public void go_back ();
+               public void go_forward ();
+               public void go_to_back_forward_list_item (WebKit.BackForwardListItem list_item);
+               public void load_alternate_html (string content, string content_uri, string? base_uri);
+               public void load_bytes (GLib.Bytes bytes, string? mime_type, string? encoding, string? base_uri);
+               public void load_html (string content, string? base_uri);
+               public void load_plain_text (string plain_text);
+               public void load_request (WebKit.URIRequest request);
+               public void load_uri (string uri);
+               public Gtk.Widget new_with_related_view ();
+               public void reload ();
+               public void reload_bypass_cache ();
+               public async WebKit.JavascriptResult run_javascript (string script, GLib.Cancellable? cancellable) throws GLib.Error;
+               public async WebKit.JavascriptResult run_javascript_from_gresource (string resource, GLib.Cancellable? cancellable) throws GLib.Error;
+               public async GLib.InputStream save (WebKit.SaveMode save_mode, GLib.Cancellable? cancellable) throws GLib.Error;
+               public async bool save_to_file (GLib.File file, WebKit.SaveMode save_mode, GLib.Cancellable? cancellable) throws GLib.Error;
+               public void set_custom_charset (string? charset);
+               public void set_settings (WebKit.Settings settings);
+               public void set_zoom_level (double zoom_level);
+               public void stop_loading ();
+               [CCode (has_construct_function = false, type = "GtkWidget*")]
+               public WebView.with_context (WebKit.WebContext context);
+               [CCode (has_construct_function = false, type = "GtkWidget*")]
+               public WebView.with_settings (WebKit.Settings settings);
+               [CCode (has_construct_function = false, type = "GtkWidget*")]
+               public WebView.with_user_content_manager (WebKit.UserContentManager user_content_manager);
+               public double estimated_load_progress { get; }
+               public void* favicon { get; }
+               [NoAccessorMethod]
+               public bool is_loading { get; }
+               public WebKit.WebView related_view { construct; }
+               public WebKit.Settings settings { set construct; }
+               public string title { get; }
+               public string uri { get; }
+               public WebKit.UserContentManager user_content_manager { get; construct; }
+               [NoAccessorMethod]
+               public WebKit.WebContext web_context { owned get; construct; }
+               public double zoom_level { get; set; }
+               public virtual signal bool authenticate (WebKit.AuthenticationRequest request);
+               public virtual signal void close ();
+               public virtual signal bool context_menu (WebKit.ContextMenu context_menu, Gdk.Event event, WebKit.HitTestResult hit_test_result);
+               public virtual signal void context_menu_dismissed ();
+               public signal Gtk.Widget create (WebKit.NavigationAction navigation_action);
+               public virtual signal bool decide_policy (WebKit.PolicyDecision decision, WebKit.PolicyDecisionType type);
+               public virtual signal bool enter_fullscreen ();
+               public virtual signal void insecure_content_detected (WebKit.InsecureContentEvent event);
+               public virtual signal bool leave_fullscreen ();
+               public virtual signal void load_changed (WebKit.LoadEvent load_event);
+               public virtual signal bool load_failed (WebKit.LoadEvent load_event, string failing_uri, void* error);
+               public virtual signal bool load_failed_with_tls_errors (string failing_uri, GLib.TlsCertificate certificate, GLib.TlsCertificateFlags errors);
+               public virtual signal void mouse_target_changed (WebKit.HitTestResult hit_test_result, uint modifiers);
+               public virtual signal bool permission_request (WebKit.PermissionRequest permission_request);
+               public virtual signal bool print (WebKit.PrintOperation print_operation);
+               public virtual signal void ready_to_show ();
+               public virtual signal void resource_load_started (WebKit.WebResource resource, WebKit.URIRequest request);
+               public virtual signal void run_as_modal ();
+               public virtual signal bool run_file_chooser (WebKit.FileChooserRequest request);
+               public virtual signal bool script_dialog (WebKit.ScriptDialog dialog);
+               public virtual signal void submit_form (WebKit.FormSubmissionRequest request);
+               public virtual signal bool web_process_crashed ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_web_view_base_get_type ()")]
+       public class WebViewBase : Gtk.Container, Atk.Implementor, Gtk.Buildable {
+               [CCode (has_construct_function = false)]
+               protected WebViewBase ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_window_properties_get_type ()")]
+       public class WindowProperties : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected WindowProperties ();
+               public bool get_fullscreen ();
+               public Gdk.Rectangle get_geometry ();
+               public bool get_locationbar_visible ();
+               public bool get_menubar_visible ();
+               public bool get_resizable ();
+               public bool get_scrollbars_visible ();
+               public bool get_statusbar_visible ();
+               public bool get_toolbar_visible ();
+               public bool fullscreen { get; construct; }
+               public Cairo.RectangleInt geometry { get; construct; }
+               public bool locationbar_visible { get; construct; }
+               public bool menubar_visible { get; construct; }
+               public bool resizable { get; construct; }
+               public bool scrollbars_visible { get; construct; }
+               public bool statusbar_visible { get; construct; }
+               public bool toolbar_visible { get; construct; }
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", type_id = "webkit_permission_request_get_type ()")]
+       public interface PermissionRequest : GLib.Object {
+               public abstract void allow ();
+               public abstract void deny ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_AUTHENTICATION_SCHEME_", type_id = "webkit_authentication_scheme_get_type ()")]
+       public enum AuthenticationScheme {
+               DEFAULT,
+               HTTP_BASIC,
+               HTTP_DIGEST,
+               HTML_FORM,
+               NTLM,
+               NEGOTIATE,
+               CLIENT_CERTIFICATE_REQUESTED,
+               SERVER_TRUST_EVALUATION_REQUESTED,
+               UNKNOWN
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_CACHE_MODEL_", type_id = "webkit_cache_model_get_type ()")]
+       public enum CacheModel {
+               DOCUMENT_VIEWER,
+               WEB_BROWSER,
+               DOCUMENT_BROWSER
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_CONTEXT_MENU_ACTION_", type_id = "webkit_context_menu_action_get_type ()")]
+       public enum ContextMenuAction {
+               NO_ACTION,
+               OPEN_LINK,
+               OPEN_LINK_IN_NEW_WINDOW,
+               DOWNLOAD_LINK_TO_DISK,
+               COPY_LINK_TO_CLIPBOARD,
+               OPEN_IMAGE_IN_NEW_WINDOW,
+               DOWNLOAD_IMAGE_TO_DISK,
+               COPY_IMAGE_TO_CLIPBOARD,
+               COPY_IMAGE_URL_TO_CLIPBOARD,
+               OPEN_FRAME_IN_NEW_WINDOW,
+               GO_BACK,
+               GO_FORWARD,
+               STOP,
+               RELOAD,
+               COPY,
+               CUT,
+               PASTE,
+               DELETE,
+               SELECT_ALL,
+               INPUT_METHODS,
+               UNICODE,
+               SPELLING_GUESS,
+               NO_GUESSES_FOUND,
+               IGNORE_SPELLING,
+               LEARN_SPELLING,
+               IGNORE_GRAMMAR,
+               FONT_MENU,
+               BOLD,
+               ITALIC,
+               UNDERLINE,
+               OUTLINE,
+               INSPECT_ELEMENT,
+               OPEN_VIDEO_IN_NEW_WINDOW,
+               OPEN_AUDIO_IN_NEW_WINDOW,
+               COPY_VIDEO_LINK_TO_CLIPBOARD,
+               COPY_AUDIO_LINK_TO_CLIPBOARD,
+               TOGGLE_MEDIA_CONTROLS,
+               TOGGLE_MEDIA_LOOP,
+               ENTER_VIDEO_FULLSCREEN,
+               MEDIA_PLAY,
+               MEDIA_PAUSE,
+               MEDIA_MUTE,
+               DOWNLOAD_VIDEO_TO_DISK,
+               DOWNLOAD_AUDIO_TO_DISK,
+               CUSTOM
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_COOKIE_POLICY_ACCEPT_", type_id = "webkit_cookie_accept_policy_get_type ()")]
+       public enum CookieAcceptPolicy {
+               ALWAYS,
+               NEVER,
+               NO_THIRD_PARTY
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_COOKIE_PERSISTENT_STORAGE_", type_id = "webkit_cookie_persistent_storage_get_type ()")]
+       public enum CookiePersistentStorage {
+               TEXT,
+               SQLITE
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_CREDENTIAL_PERSISTENCE_", type_id = "webkit_credential_persistence_get_type ()")]
+       public enum CredentialPersistence {
+               NONE,
+               FOR_SESSION,
+               PERMANENT
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_FIND_OPTIONS_", type_id = "webkit_find_options_get_type ()")]
+       [Flags]
+       public enum FindOptions {
+               NONE,
+               CASE_INSENSITIVE,
+               AT_WORD_STARTS,
+               TREAT_MEDIAL_CAPITAL_AS_WORD_START,
+               BACKWARDS,
+               WRAP_AROUND
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_HIT_TEST_RESULT_CONTEXT_", type_id = "webkit_hit_test_result_context_get_type ()")]
+       [Flags]
+       public enum HitTestResultContext {
+               DOCUMENT,
+               LINK,
+               IMAGE,
+               MEDIA,
+               EDITABLE,
+               SCROLLBAR
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_INSECURE_CONTENT_", type_id = "webkit_insecure_content_event_get_type ()")]
+       public enum InsecureContentEvent {
+               RUN,
+               DISPLAYED
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_LOAD_", type_id = "webkit_load_event_get_type ()")]
+       public enum LoadEvent {
+               STARTED,
+               REDIRECTED,
+               COMMITTED,
+               FINISHED
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_NAVIGATION_TYPE_", type_id = "webkit_navigation_type_get_type ()")]
+       public enum NavigationType {
+               LINK_CLICKED,
+               FORM_SUBMITTED,
+               BACK_FORWARD,
+               RELOAD,
+               FORM_RESUBMITTED,
+               OTHER
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_POLICY_DECISION_TYPE_", type_id = "webkit_policy_decision_type_get_type ()")]
+       public enum PolicyDecisionType {
+               NAVIGATION_ACTION,
+               NEW_WINDOW_ACTION,
+               RESPONSE
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_PRINT_OPERATION_RESPONSE_", type_id = "webkit_print_operation_response_get_type ()")]
+       public enum PrintOperationResponse {
+               PRINT,
+               CANCEL
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_PROCESS_MODEL_", type_id = "webkit_process_model_get_type ()")]
+       public enum ProcessModel {
+               SHARED_SECONDARY_PROCESS,
+               MULTIPLE_SECONDARY_PROCESSES
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_SAVE_MODE_", type_id = "webkit_save_mode_get_type ()")]
+       public enum SaveMode {
+               MHTML
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_SCRIPT_DIALOG_", type_id = "webkit_script_dialog_type_get_type ()")]
+       public enum ScriptDialogType {
+               ALERT,
+               CONFIRM,
+               PROMPT
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_SNAPSHOT_OPTIONS_", type_id = "webkit_snapshot_options_get_type ()")]
+       [Flags]
+       public enum SnapshotOptions {
+               NONE,
+               INCLUDE_SELECTION_HIGHLIGHTING
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_SNAPSHOT_REGION_", type_id = "webkit_snapshot_region_get_type ()")]
+       public enum SnapshotRegion {
+               VISIBLE,
+               FULL_DOCUMENT
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_TLS_ERRORS_POLICY_", type_id = "webkit_tls_errors_policy_get_type ()")]
+       public enum TLSErrorsPolicy {
+               IGNORE,
+               FAIL
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_USER_CONTENT_INJECT_", type_id = "webkit_user_content_injected_frames_get_type ()")]
+       public enum UserContentInjectedFrames {
+               ALL_FRAMES,
+               TOP_FRAME
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_", type_id = "webkit_user_script_injection_time_get_type ()")]
+       public enum UserScriptInjectionTime {
+               START,
+               END
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_USER_STYLE_LEVEL_", type_id = "webkit_user_style_level_get_type ()")]
+       public enum UserStyleLevel {
+               USER,
+               AUTHOR
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_DOWNLOAD_ERROR_")]
+       public errordomain DownloadError {
+               NETWORK,
+               CANCELLED_BY_USER,
+               DESTINATION;
+               public static GLib.Quark quark ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_FAVICON_DATABASE_ERROR_")]
+       public errordomain FaviconDatabaseError {
+               NOT_INITIALIZED,
+               FAVICON_NOT_FOUND,
+               FAVICON_UNKNOWN;
+               public static GLib.Quark quark ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_JAVASCRIPT_ERROR_SCRIPT_")]
+       public errordomain JavascriptError {
+               FAILED;
+               public static GLib.Quark quark ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_NETWORK_ERROR_")]
+       public errordomain NetworkError {
+               FAILED,
+               TRANSPORT,
+               UNKNOWN_PROTOCOL,
+               CANCELLED,
+               FILE_DOES_NOT_EXIST;
+               public static GLib.Quark quark ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_PLUGIN_ERROR_")]
+       public errordomain PluginError {
+               FAILED,
+               CANNOT_FIND_PLUGIN,
+               CANNOT_LOAD_PLUGIN,
+               JAVA_UNAVAILABLE,
+               CONNECTION_CANCELLED,
+               WILL_HANDLE_LOAD;
+               public static GLib.Quark quark ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_POLICY_ERROR_")]
+       public errordomain PolicyError {
+               FAILED,
+               CANNOT_SHOW_MIME_TYPE,
+               CANNOT_SHOW_URI,
+               FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE,
+               CANNOT_USE_RESTRICTED_PORT;
+               public static GLib.Quark quark ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_PRINT_ERROR_")]
+       public errordomain PrintError {
+               GENERAL,
+               PRINTER_NOT_FOUND,
+               INVALID_PAGE_RANGE;
+               public static GLib.Quark quark ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", cprefix = "WEBKIT_SNAPSHOT_ERROR_FAILED_TO_")]
+       public errordomain SnapshotError {
+               CREATE;
+               public static GLib.Quark quark ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit2.h", instance_pos = 1.9)]
+       public delegate void URISchemeRequestCallback (WebKit.URISchemeRequest request);
+       [CCode (cheader_filename = "webkit2/webkit2.h", cname = "WEBKIT_EDITING_COMMAND_COPY")]
+       public const string EDITING_COMMAND_COPY;
+       [CCode (cheader_filename = "webkit2/webkit2.h", cname = "WEBKIT_EDITING_COMMAND_CUT")]
+       public const string EDITING_COMMAND_CUT;
+       [CCode (cheader_filename = "webkit2/webkit2.h", cname = "WEBKIT_EDITING_COMMAND_PASTE")]
+       public const string EDITING_COMMAND_PASTE;
+       [CCode (cheader_filename = "webkit2/webkit2.h", cname = "WEBKIT_EDITING_COMMAND_REDO")]
+       public const string EDITING_COMMAND_REDO;
+       [CCode (cheader_filename = "webkit2/webkit2.h", cname = "WEBKIT_EDITING_COMMAND_SELECT_ALL")]
+       public const string EDITING_COMMAND_SELECT_ALL;
+       [CCode (cheader_filename = "webkit2/webkit2.h", cname = "WEBKIT_EDITING_COMMAND_UNDO")]
+       public const string EDITING_COMMAND_UNDO;
+       [CCode (cheader_filename = "webkit2/webkit2.h", cname = "WEBKIT_MAJOR_VERSION")]
+       public const int MAJOR_VERSION;
+       [CCode (cheader_filename = "webkit2/webkit2.h", cname = "WEBKIT_MICRO_VERSION")]
+       public const int MICRO_VERSION;
+       [CCode (cheader_filename = "webkit2/webkit2.h", cname = "WEBKIT_MINOR_VERSION")]
+       public const int MINOR_VERSION;
+       [CCode (cheader_filename = "webkit2/webkit2.h")]
+       public static uint get_major_version ();
+       [CCode (cheader_filename = "webkit2/webkit2.h")]
+       public static uint get_micro_version ();
+       [CCode (cheader_filename = "webkit2/webkit2.h")]
+       public static uint get_minor_version ();
+}
diff --git a/vapi/webkit2gtk-web-extension-4.0.deps b/vapi/webkit2gtk-web-extension-4.0.deps
new file mode 100644 (file)
index 0000000..2868ee0
--- /dev/null
@@ -0,0 +1,2 @@
+gtk+-3.0
+libsoup-2.4
diff --git a/vapi/webkit2gtk-web-extension-4.0.vapi b/vapi/webkit2gtk-web-extension-4.0.vapi
new file mode 100644 (file)
index 0000000..be320ec
--- /dev/null
@@ -0,0 +1,2667 @@
+/* webkit2gtk-web-extension-4.0.vapi generated by vapigen, do not modify. */
+
+[CCode (cprefix = "WebKit", gir_namespace = "WebKit2WebExtension", gir_version = "4.0", lower_case_cprefix = "webkit_")]
+namespace WebKit {
+       namespace DOM {
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_attr_get_type ()")]
+               [GIR (name = "DOMAttr")]
+               public class Attr : WebKit.DOM.Node, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected Attr ();
+                       public string get_name ();
+                       public unowned WebKit.DOM.Element get_owner_element ();
+                       public bool get_specified ();
+                       public string get_value ();
+                       public void set_value (string value) throws GLib.Error;
+                       [NoAccessorMethod]
+                       public bool is_id { get; }
+                       public string name { owned get; }
+                       public WebKit.DOM.Element owner_element { get; }
+                       public bool specified { get; }
+                       public string value { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_blob_get_type ()")]
+               [GIR (name = "DOMBlob")]
+               public class Blob : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected Blob ();
+                       public uint64 get_size ();
+                       public uint64 size { get; }
+                       [NoAccessorMethod]
+                       public string type { owned get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_cdata_section_get_type ()")]
+               [GIR (name = "DOMCDATASection")]
+               public class CDATASection : WebKit.DOM.Text, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected CDATASection ();
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_css_rule_get_type ()")]
+               [GIR (name = "DOMCSSRule")]
+               public class CSSRule : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected CSSRule ();
+                       public string get_css_text ();
+                       public unowned WebKit.DOM.CSSRule get_parent_rule ();
+                       public unowned WebKit.DOM.CSSStyleSheet get_parent_style_sheet ();
+                       public ushort get_rule_type ();
+                       public void set_css_text (string value) throws GLib.Error;
+                       public string css_text { owned get; set; }
+                       public WebKit.DOM.CSSRule parent_rule { get; }
+                       public WebKit.DOM.CSSStyleSheet parent_style_sheet { get; }
+                       [NoAccessorMethod]
+                       public uint type { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_css_rule_list_get_type ()")]
+               [GIR (name = "DOMCSSRuleList")]
+               public class CSSRuleList : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected CSSRuleList ();
+                       public ulong get_length ();
+                       public unowned WebKit.DOM.CSSRule item (ulong index);
+                       public ulong length { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_css_style_declaration_get_type ()")]
+               [GIR (name = "DOMCSSStyleDeclaration")]
+               public class CSSStyleDeclaration : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected CSSStyleDeclaration ();
+                       public string get_css_text ();
+                       public ulong get_length ();
+                       public unowned WebKit.DOM.CSSRule get_parent_rule ();
+                       public string get_property_priority (string propertyName);
+                       public string get_property_shorthand (string propertyName);
+                       public string get_property_value (string propertyName);
+                       public bool is_property_implicit (string propertyName);
+                       public string item (ulong index);
+                       public string remove_property (string propertyName) throws GLib.Error;
+                       public void set_css_text (string value) throws GLib.Error;
+                       public void set_property (string propertyName, string value, string priority) throws GLib.Error;
+                       public string css_text { owned get; set; }
+                       public ulong length { get; }
+                       public WebKit.DOM.CSSRule parent_rule { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_css_style_sheet_get_type ()")]
+               [GIR (name = "DOMCSSStyleSheet")]
+               public class CSSStyleSheet : WebKit.DOM.StyleSheet {
+                       [CCode (has_construct_function = false)]
+                       protected CSSStyleSheet ();
+                       public long add_rule (string selector, string style, ulong index) throws GLib.Error;
+                       public void delete_rule (ulong index) throws GLib.Error;
+                       public unowned WebKit.DOM.CSSRuleList get_css_rules ();
+                       public unowned WebKit.DOM.CSSRule get_owner_rule ();
+                       public unowned WebKit.DOM.CSSRuleList get_rules ();
+                       public ulong insert_rule (string rule, ulong index) throws GLib.Error;
+                       public void remove_rule (ulong index) throws GLib.Error;
+                       public WebKit.DOM.CSSRuleList css_rules { get; }
+                       public WebKit.DOM.CSSRule owner_rule { get; }
+                       public WebKit.DOM.CSSRuleList rules { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_css_value_get_type ()")]
+               [GIR (name = "DOMCSSValue")]
+               public class CSSValue : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected CSSValue ();
+                       public string get_css_text ();
+                       public ushort get_css_value_type ();
+                       public void set_css_text (string value) throws GLib.Error;
+                       public string css_text { owned get; set; }
+                       public uint css_value_type { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_character_data_get_type ()")]
+               [GIR (name = "DOMCharacterData")]
+               public class CharacterData : WebKit.DOM.Node, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected CharacterData ();
+                       public void append_data (string data) throws GLib.Error;
+                       public void delete_data (ulong offset, ulong length) throws GLib.Error;
+                       public string get_data ();
+                       public ulong get_length ();
+                       public void insert_data (ulong offset, string data) throws GLib.Error;
+                       public void replace_data (ulong offset, ulong length, string data) throws GLib.Error;
+                       public void set_data (string value) throws GLib.Error;
+                       public string substring_data (ulong offset, ulong length) throws GLib.Error;
+                       public string data { owned get; set; }
+                       public ulong length { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_comment_get_type ()")]
+               [GIR (name = "DOMComment")]
+               public class Comment : WebKit.DOM.CharacterData, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected Comment ();
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_dom_implementation_get_type ()")]
+               [GIR (name = "DOMDOMImplementation")]
+               public class DOMImplementation : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected DOMImplementation ();
+                       public unowned WebKit.DOM.CSSStyleSheet create_css_style_sheet (string title, string media) throws GLib.Error;
+                       public unowned WebKit.DOM.Document create_document (string? namespaceURI, string qualifiedName, WebKit.DOM.DocumentType? doctype) throws GLib.Error;
+                       public unowned WebKit.DOM.DocumentType create_document_type (string qualifiedName, string publicId, string systemId) throws GLib.Error;
+                       public unowned WebKit.DOM.HTMLDocument create_html_document (string title);
+                       public bool has_feature (string feature, string version);
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_dom_window_get_type ()")]
+               [GIR (name = "DOMDOMWindow")]
+               public class DOMWindow : WebKit.DOM.Object, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected DOMWindow ();
+                       [NoAccessorMethod]
+                       public bool closed { get; }
+                       [NoAccessorMethod]
+                       public string default_status { owned get; set; }
+                       [NoAccessorMethod]
+                       public double device_pixel_ratio { get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.Document document { owned get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.Element frame_element { owned get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.DOMWindow frames { owned get; }
+                       [NoAccessorMethod]
+                       public long inner_height { get; }
+                       [NoAccessorMethod]
+                       public long inner_width { get; }
+                       [NoAccessorMethod]
+                       public ulong length { get; }
+                       [NoAccessorMethod]
+                       public string name { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool offscreen_buffering { get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.DOMWindow opener { owned get; }
+                       [NoAccessorMethod]
+                       public long outer_height { get; }
+                       [NoAccessorMethod]
+                       public long outer_width { get; }
+                       [NoAccessorMethod]
+                       public long page_x_offset { get; }
+                       [NoAccessorMethod]
+                       public long page_y_offset { get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.DOMWindow parent { owned get; }
+                       [NoAccessorMethod]
+                       public long screen_left { get; }
+                       [NoAccessorMethod]
+                       public long screen_top { get; }
+                       [NoAccessorMethod]
+                       public long screen_x { get; }
+                       [NoAccessorMethod]
+                       public long screen_y { get; }
+                       [NoAccessorMethod]
+                       public long scroll_x { get; }
+                       [NoAccessorMethod]
+                       public long scroll_y { get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.DOMWindow self { owned get; }
+                       [NoAccessorMethod]
+                       public string status { owned get; set; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.DOMWindow top { owned get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.DOMWindow window { owned get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_document_get_type ()")]
+               [GIR (name = "DOMDocument")]
+               public class Document : WebKit.DOM.Node, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected Document ();
+                       public unowned WebKit.DOM.Node adopt_node (WebKit.DOM.Node source) throws GLib.Error;
+                       public unowned WebKit.DOM.Attr create_attribute (string name) throws GLib.Error;
+                       public unowned WebKit.DOM.Attr create_attribute_ns (string? namespaceURI, string qualifiedName) throws GLib.Error;
+                       public unowned WebKit.DOM.CDATASection create_cdata_section (string data) throws GLib.Error;
+                       public unowned WebKit.DOM.Comment create_comment (string data);
+                       public unowned WebKit.DOM.CSSStyleDeclaration create_css_style_declaration ();
+                       public unowned WebKit.DOM.DocumentFragment create_document_fragment ();
+                       public unowned WebKit.DOM.Element create_element (string tagName) throws GLib.Error;
+                       public unowned WebKit.DOM.Element create_element_ns (string? namespaceURI, string qualifiedName) throws GLib.Error;
+                       public unowned WebKit.DOM.EntityReference create_entity_reference (string? name) throws GLib.Error;
+                       public unowned WebKit.DOM.Event create_event (string eventType) throws GLib.Error;
+                       public unowned WebKit.DOM.XPathExpression create_expression (string expression, WebKit.DOM.XPathNSResolver resolver) throws GLib.Error;
+                       public unowned WebKit.DOM.NodeIterator create_node_iterator (WebKit.DOM.Node root, ulong whatToShow, WebKit.DOM.NodeFilter? filter, bool expandEntityReferences) throws GLib.Error;
+                       public unowned WebKit.DOM.XPathNSResolver create_ns_resolver (WebKit.DOM.Node nodeResolver);
+                       public unowned WebKit.DOM.ProcessingInstruction create_processing_instruction (string target, string data) throws GLib.Error;
+                       public unowned WebKit.DOM.Range create_range ();
+                       public unowned WebKit.DOM.Text create_text_node (string data);
+                       public unowned WebKit.DOM.TreeWalker create_tree_walker (WebKit.DOM.Node root, ulong whatToShow, WebKit.DOM.NodeFilter? filter, bool expandEntityReferences) throws GLib.Error;
+                       public unowned WebKit.DOM.Element element_from_point (long x, long y);
+                       public unowned WebKit.DOM.XPathResult evaluate (string expression, WebKit.DOM.Node contextNode, WebKit.DOM.XPathNSResolver? resolver, ushort type, WebKit.DOM.XPathResult? inResult) throws GLib.Error;
+                       public bool exec_command (string command, bool userInterface, string value);
+                       public unowned WebKit.DOM.Element get_active_element ();
+                       public unowned WebKit.DOM.HTMLCollection get_anchors ();
+                       public unowned WebKit.DOM.HTMLCollection get_applets ();
+                       public unowned WebKit.DOM.HTMLElement get_body ();
+                       public string get_character_set ();
+                       public string get_charset ();
+                       public string get_cookie () throws GLib.Error;
+                       public string get_default_charset ();
+                       public unowned WebKit.DOM.DOMWindow get_default_view ();
+                       public unowned WebKit.DOM.DocumentType get_doctype ();
+                       public unowned WebKit.DOM.Element get_document_element ();
+                       public string get_document_uri ();
+                       public string get_domain ();
+                       public unowned WebKit.DOM.Element get_element_by_id (string elementId);
+                       public unowned WebKit.DOM.NodeList get_elements_by_class_name (string tagname);
+                       public unowned WebKit.DOM.NodeList get_elements_by_name (string elementName);
+                       public unowned WebKit.DOM.NodeList get_elements_by_tag_name (string tagname);
+                       public unowned WebKit.DOM.NodeList get_elements_by_tag_name_ns (string namespaceURI, string localName);
+                       public unowned WebKit.DOM.HTMLCollection get_forms ();
+                       public unowned WebKit.DOM.HTMLHeadElement get_head ();
+                       public unowned WebKit.DOM.HTMLCollection get_images ();
+                       public unowned WebKit.DOM.DOMImplementation get_implementation ();
+                       public string get_input_encoding ();
+                       public string get_last_modified ();
+                       public unowned WebKit.DOM.HTMLCollection get_links ();
+                       public unowned WebKit.DOM.CSSStyleDeclaration get_override_style (WebKit.DOM.Element element, string? pseudoElement);
+                       public string get_preferred_stylesheet_set ();
+                       public string get_ready_state ();
+                       public string get_referrer ();
+                       public string get_selected_stylesheet_set ();
+                       public unowned WebKit.DOM.StyleSheetList get_style_sheets ();
+                       public string get_title ();
+                       public string get_url ();
+                       public string get_xml_encoding ();
+                       public bool get_xml_standalone ();
+                       public string get_xml_version ();
+                       public bool has_focus ();
+                       public unowned WebKit.DOM.Node import_node (WebKit.DOM.Node importedNode, bool deep) throws GLib.Error;
+                       public bool query_command_enabled (string command);
+                       public bool query_command_indeterm (string command);
+                       public bool query_command_state (string command);
+                       public bool query_command_supported (string command);
+                       public string query_command_value (string command);
+                       public unowned WebKit.DOM.Element query_selector (string selectors) throws GLib.Error;
+                       public unowned WebKit.DOM.NodeList query_selector_all (string selectors) throws GLib.Error;
+                       public void set_body (WebKit.DOM.HTMLElement value) throws GLib.Error;
+                       public void set_charset (string value);
+                       public void set_cookie (string value) throws GLib.Error;
+                       public void set_document_uri (string value);
+                       public void set_selected_stylesheet_set (string value);
+                       public void set_title (string value);
+                       public void set_xml_standalone (bool value) throws GLib.Error;
+                       public void set_xml_version (string value) throws GLib.Error;
+                       public WebKit.DOM.Element active_element { get; }
+                       public WebKit.DOM.HTMLCollection anchors { get; }
+                       public WebKit.DOM.HTMLCollection applets { get; }
+                       public WebKit.DOM.HTMLElement body { get; }
+                       public string character_set { owned get; }
+                       public string charset { owned get; set; }
+                       [NoAccessorMethod]
+                       public string compat_mode { owned get; }
+                       public string cookie { owned get; set; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.HTMLScriptElement current_script { owned get; }
+                       public string default_charset { owned get; }
+                       public WebKit.DOM.DOMWindow default_view { get; }
+                       public WebKit.DOM.DocumentType doctype { get; }
+                       public WebKit.DOM.Element document_element { get; }
+                       public string document_uri { owned get; set; }
+                       public string domain { owned get; }
+                       public WebKit.DOM.HTMLCollection forms { get; }
+                       public WebKit.DOM.HTMLHeadElement head { get; }
+                       [NoAccessorMethod]
+                       public bool hidden { get; }
+                       public WebKit.DOM.HTMLCollection images { get; }
+                       public WebKit.DOM.DOMImplementation implementation { get; }
+                       public string input_encoding { owned get; }
+                       public string last_modified { owned get; }
+                       public WebKit.DOM.HTMLCollection links { get; }
+                       [NoAccessorMethod]
+                       public string origin { owned get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.Element pointer_lock_element { owned get; }
+                       public string preferred_stylesheet_set { owned get; }
+                       public string ready_state { owned get; }
+                       public string referrer { owned get; }
+                       public string selected_stylesheet_set { owned get; set; }
+                       public WebKit.DOM.StyleSheetList style_sheets { get; }
+                       public string title { owned get; set; }
+                       public string url { owned get; }
+                       [NoAccessorMethod]
+                       public string visibility_state { owned get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.Element webkit_current_full_screen_element { owned get; }
+                       [NoAccessorMethod]
+                       public bool webkit_full_screen_keyboard_input_allowed { get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.Element webkit_fullscreen_element { owned get; }
+                       [NoAccessorMethod]
+                       public bool webkit_fullscreen_enabled { get; }
+                       [NoAccessorMethod]
+                       public bool webkit_is_full_screen { get; }
+                       public string xml_encoding { owned get; }
+                       public bool xml_standalone { get; set; }
+                       public string xml_version { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_document_fragment_get_type ()")]
+               [GIR (name = "DOMDocumentFragment")]
+               public class DocumentFragment : WebKit.DOM.Node, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected DocumentFragment ();
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_document_type_get_type ()")]
+               [GIR (name = "DOMDocumentType")]
+               public class DocumentType : WebKit.DOM.Node, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected DocumentType ();
+                       public unowned WebKit.DOM.NamedNodeMap get_entities ();
+                       public string get_internal_subset ();
+                       public string get_name ();
+                       public unowned WebKit.DOM.NamedNodeMap get_notations ();
+                       public string get_public_id ();
+                       public string get_system_id ();
+                       public WebKit.DOM.NamedNodeMap entities { get; }
+                       public string internal_subset { owned get; }
+                       public string name { owned get; }
+                       public WebKit.DOM.NamedNodeMap notations { get; }
+                       public string public_id { owned get; }
+                       public string system_id { owned get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_element_get_type ()")]
+               [GIR (name = "DOMElement")]
+               public class Element : WebKit.DOM.Node, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected Element ();
+                       public void blur ();
+                       public void focus ();
+                       public string get_attribute (string name);
+                       public unowned WebKit.DOM.Attr get_attribute_node (string name);
+                       public unowned WebKit.DOM.Attr get_attribute_node_ns (string namespaceURI, string localName);
+                       public string get_attribute_ns (string namespaceURI, string localName);
+                       public unowned WebKit.DOM.NamedNodeMap get_attributes ();
+                       public ulong get_child_element_count ();
+                       public string get_class_name ();
+                       public double get_client_height ();
+                       public double get_client_left ();
+                       public double get_client_top ();
+                       public double get_client_width ();
+                       public unowned WebKit.DOM.NodeList get_elements_by_class_name (string name);
+                       public unowned WebKit.DOM.NodeList get_elements_by_tag_name (string name);
+                       public unowned WebKit.DOM.NodeList get_elements_by_tag_name_ns (string namespaceURI, string localName);
+                       public unowned WebKit.DOM.Element get_first_element_child ();
+                       public string get_id ();
+                       public unowned WebKit.DOM.Element get_last_element_child ();
+                       public unowned WebKit.DOM.Element get_next_element_sibling ();
+                       public double get_offset_height ();
+                       public double get_offset_left ();
+                       public unowned WebKit.DOM.Element get_offset_parent ();
+                       public double get_offset_top ();
+                       public double get_offset_width ();
+                       public unowned WebKit.DOM.Element get_previous_element_sibling ();
+                       public long get_scroll_height ();
+                       public long get_scroll_left ();
+                       public long get_scroll_top ();
+                       public long get_scroll_width ();
+                       public unowned WebKit.DOM.CSSStyleDeclaration get_style ();
+                       public string get_tag_name ();
+                       public bool has_attribute (string name);
+                       public bool has_attribute_ns (string namespaceURI, string localName);
+                       public bool has_attributes ();
+                       public unowned WebKit.DOM.Element query_selector (string selectors) throws GLib.Error;
+                       public unowned WebKit.DOM.NodeList query_selector_all (string selectors) throws GLib.Error;
+                       public void remove_attribute (string name);
+                       public unowned WebKit.DOM.Attr remove_attribute_node (WebKit.DOM.Attr oldAttr) throws GLib.Error;
+                       public void remove_attribute_ns (string namespaceURI, string localName);
+                       public void scroll_by_lines (long lines);
+                       public void scroll_by_pages (long pages);
+                       public void scroll_into_view (bool alignWithTop);
+                       public void scroll_into_view_if_needed (bool centerIfNeeded);
+                       public void set_attribute (string name, string value) throws GLib.Error;
+                       public unowned WebKit.DOM.Attr set_attribute_node (WebKit.DOM.Attr newAttr) throws GLib.Error;
+                       public unowned WebKit.DOM.Attr set_attribute_node_ns (WebKit.DOM.Attr newAttr) throws GLib.Error;
+                       public void set_attribute_ns (string? namespaceURI, string qualifiedName, string value) throws GLib.Error;
+                       public void set_class_name (string value);
+                       public void set_id (string value);
+                       public void set_scroll_left (long value);
+                       public void set_scroll_top (long value);
+                       public WebKit.DOM.NamedNodeMap attributes { get; }
+                       public ulong child_element_count { get; }
+                       public string class_name { owned get; set; }
+                       public double client_height { get; }
+                       public double client_left { get; }
+                       public double client_top { get; }
+                       public double client_width { get; }
+                       public WebKit.DOM.Element first_element_child { get; }
+                       public string id { owned get; set; }
+                       public WebKit.DOM.Element last_element_child { get; }
+                       public WebKit.DOM.Element next_element_sibling { get; }
+                       public double offset_height { get; }
+                       public double offset_left { get; }
+                       public WebKit.DOM.Element offset_parent { get; }
+                       public double offset_top { get; }
+                       public double offset_width { get; }
+                       public WebKit.DOM.Element previous_element_sibling { get; }
+                       public long scroll_height { get; }
+                       public long scroll_left { get; set; }
+                       public long scroll_top { get; set; }
+                       public long scroll_width { get; }
+                       public WebKit.DOM.CSSStyleDeclaration style { get; }
+                       public string tag_name { owned get; }
+                       [NoAccessorMethod]
+                       public string webkit_region_overset { owned get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_entity_reference_get_type ()")]
+               [GIR (name = "DOMEntityReference")]
+               public class EntityReference : WebKit.DOM.Node, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected EntityReference ();
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_event_get_type ()")]
+               [GIR (name = "DOMEvent")]
+               public class Event : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected Event ();
+                       public bool get_bubbles ();
+                       public bool get_cancel_bubble ();
+                       public bool get_cancelable ();
+                       public unowned WebKit.DOM.EventTarget get_current_target ();
+                       public ushort get_event_phase ();
+                       public string get_event_type ();
+                       public bool get_return_value ();
+                       public unowned WebKit.DOM.EventTarget get_src_element ();
+                       public unowned WebKit.DOM.EventTarget get_target ();
+                       public uint32 get_time_stamp ();
+                       public void init_event (string eventTypeArg, bool canBubbleArg, bool cancelableArg);
+                       public void prevent_default ();
+                       public void set_cancel_bubble (bool value);
+                       public void set_return_value (bool value);
+                       public void stop_propagation ();
+                       public bool bubbles { get; }
+                       public bool cancel_bubble { get; set; }
+                       public bool cancelable { get; }
+                       public WebKit.DOM.EventTarget current_target { get; }
+                       [NoAccessorMethod]
+                       public bool default_prevented { get; }
+                       public uint event_phase { get; }
+                       public bool return_value { get; set; }
+                       public WebKit.DOM.EventTarget src_element { get; }
+                       public WebKit.DOM.EventTarget target { get; }
+                       public uint time_stamp { get; }
+                       [NoAccessorMethod]
+                       public string type { owned get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_file_get_type ()")]
+               [GIR (name = "DOMFile")]
+               public class File : WebKit.DOM.Blob {
+                       [CCode (has_construct_function = false)]
+                       protected File ();
+                       public string get_name ();
+                       public string name { owned get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_file_list_get_type ()")]
+               [GIR (name = "DOMFileList")]
+               public class FileList : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected FileList ();
+                       public ulong get_length ();
+                       public unowned WebKit.DOM.File item (ulong index);
+                       public ulong length { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_anchor_element_get_type ()")]
+               [GIR (name = "DOMHTMLAnchorElement")]
+               public class HTMLAnchorElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLAnchorElement ();
+                       public string get_charset ();
+                       public string get_coords ();
+                       public string get_hash ();
+                       public string get_host ();
+                       public string get_hostname ();
+                       public string get_href ();
+                       public string get_hreflang ();
+                       public string get_name ();
+                       public string get_pathname ();
+                       public string get_port ();
+                       public string get_protocol ();
+                       public string get_rel ();
+                       public string get_rev ();
+                       public string get_search ();
+                       public string get_shape ();
+                       public string get_target ();
+                       public string get_text ();
+                       public string get_type_attr ();
+                       public void set_charset (string value);
+                       public void set_coords (string value);
+                       public void set_hash (string value);
+                       public void set_host (string value);
+                       public void set_hostname (string value);
+                       public void set_href (string value);
+                       public void set_hreflang (string value);
+                       public void set_name (string value);
+                       public void set_pathname (string value);
+                       public void set_port (string value);
+                       public void set_protocol (string value);
+                       public void set_rel (string value);
+                       public void set_rev (string value);
+                       public void set_search (string value);
+                       public void set_shape (string value);
+                       public void set_target (string value);
+                       public void set_type_attr (string value);
+                       public string charset { owned get; set; }
+                       public string coords { owned get; set; }
+                       [NoAccessorMethod]
+                       public string download { owned get; set; }
+                       public string hash { owned get; set; }
+                       public string host { owned get; set; }
+                       public string hostname { owned get; set; }
+                       public string href { owned get; set; }
+                       public string hreflang { owned get; set; }
+                       public string name { owned get; set; }
+                       [NoAccessorMethod]
+                       public string origin { owned get; }
+                       public string pathname { owned get; set; }
+                       [NoAccessorMethod]
+                       public string ping { owned get; set; }
+                       public string port { owned get; set; }
+                       public string protocol { owned get; set; }
+                       public string rel { owned get; set; }
+                       public string rev { owned get; set; }
+                       public string search { owned get; set; }
+                       public string shape { owned get; set; }
+                       public string target { owned get; set; }
+                       public string text { owned get; }
+                       [NoAccessorMethod]
+                       public string type { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_applet_element_get_type ()")]
+               [GIR (name = "DOMHTMLAppletElement")]
+               public class HTMLAppletElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLAppletElement ();
+                       public string get_align ();
+                       public string get_alt ();
+                       public string get_archive ();
+                       public string get_code ();
+                       public string get_code_base ();
+                       public string get_height ();
+                       public long get_hspace ();
+                       public string get_name ();
+                       public string get_object ();
+                       public long get_vspace ();
+                       public string get_width ();
+                       public void set_align (string value);
+                       public void set_alt (string value);
+                       public void set_archive (string value);
+                       public void set_code (string value);
+                       public void set_code_base (string value);
+                       public void set_height (string value);
+                       public void set_hspace (long value);
+                       public void set_name (string value);
+                       public void set_object (string value);
+                       public void set_vspace (long value);
+                       public void set_width (string value);
+                       public string align { owned get; set; }
+                       public string alt { owned get; set; }
+                       public string archive { owned get; set; }
+                       public string code { owned get; set; }
+                       public string code_base { owned get; set; }
+                       public string height { owned get; set; }
+                       public long hspace { get; set; }
+                       public string name { owned get; set; }
+                       public string object { owned get; set; }
+                       public long vspace { get; set; }
+                       public string width { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_area_element_get_type ()")]
+               [GIR (name = "DOMHTMLAreaElement")]
+               public class HTMLAreaElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLAreaElement ();
+                       public string get_alt ();
+                       public string get_coords ();
+                       public string get_hash ();
+                       public string get_host ();
+                       public string get_hostname ();
+                       public string get_href ();
+                       public bool get_no_href ();
+                       public string get_pathname ();
+                       public string get_port ();
+                       public string get_protocol ();
+                       public string get_search ();
+                       public string get_shape ();
+                       public string get_target ();
+                       public void set_alt (string value);
+                       public void set_coords (string value);
+                       public void set_href (string value);
+                       public void set_no_href (bool value);
+                       public void set_shape (string value);
+                       public void set_target (string value);
+                       public string alt { owned get; set; }
+                       public string coords { owned get; set; }
+                       public string hash { owned get; }
+                       public string host { owned get; }
+                       public string hostname { owned get; }
+                       public string href { owned get; set; }
+                       public bool no_href { get; set; }
+                       public string pathname { owned get; }
+                       [NoAccessorMethod]
+                       public string ping { owned get; set; }
+                       public string port { owned get; }
+                       public string protocol { owned get; }
+                       public string search { owned get; }
+                       public string shape { owned get; set; }
+                       public string target { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", lower_case_cprefix = "webkit_dom_html_br_element_", type_id = "webkit_dom_html_br_element_get_type ()")]
+               [GIR (name = "DOMHTMLBRElement")]
+               public class HTMLBRElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLBRElement ();
+                       public string get_clear ();
+                       public void set_clear (string value);
+                       public string clear { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_base_element_get_type ()")]
+               [GIR (name = "DOMHTMLBaseElement")]
+               public class HTMLBaseElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLBaseElement ();
+                       public string get_href ();
+                       public string get_target ();
+                       public void set_href (string value);
+                       public void set_target (string value);
+                       public string href { owned get; set; }
+                       public string target { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_base_font_element_get_type ()")]
+               [GIR (name = "DOMHTMLBaseFontElement")]
+               public class HTMLBaseFontElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLBaseFontElement ();
+                       public string get_color ();
+                       public string get_face ();
+                       public long get_size ();
+                       public void set_color (string value);
+                       public void set_face (string value);
+                       public void set_size (long value);
+                       public string color { owned get; set; }
+                       public string face { owned get; set; }
+                       public long size { get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_body_element_get_type ()")]
+               [GIR (name = "DOMHTMLBodyElement")]
+               public class HTMLBodyElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLBodyElement ();
+                       public string get_a_link ();
+                       public string get_background ();
+                       public string get_bg_color ();
+                       public string get_link ();
+                       public string get_text ();
+                       public string get_v_link ();
+                       public void set_a_link (string value);
+                       public void set_background (string value);
+                       public void set_bg_color (string value);
+                       public void set_link (string value);
+                       public void set_text (string value);
+                       public void set_v_link (string value);
+                       public string a_link { owned get; set; }
+                       public string background { owned get; set; }
+                       public string bg_color { owned get; set; }
+                       public string link { owned get; set; }
+                       public string text { owned get; set; }
+                       public string v_link { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_button_element_get_type ()")]
+               [GIR (name = "DOMHTMLButtonElement")]
+               public class HTMLButtonElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLButtonElement ();
+                       public bool get_autofocus ();
+                       public string get_button_type ();
+                       public bool get_disabled ();
+                       public unowned WebKit.DOM.HTMLFormElement get_form ();
+                       public string get_name ();
+                       public string get_value ();
+                       public bool get_will_validate ();
+                       public void set_autofocus (bool value);
+                       public void set_button_type (string value);
+                       public void set_disabled (bool value);
+                       public void set_name (string value);
+                       public void set_value (string value);
+                       public bool autofocus { get; set; }
+                       public bool disabled { get; set; }
+                       public WebKit.DOM.HTMLFormElement form { get; }
+                       [NoAccessorMethod]
+                       public string form_action { owned get; set; }
+                       [NoAccessorMethod]
+                       public string form_enctype { owned get; set; }
+                       [NoAccessorMethod]
+                       public string form_method { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool form_no_validate { get; set; }
+                       [NoAccessorMethod]
+                       public string form_target { owned get; set; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.NodeList labels { owned get; }
+                       public string name { owned get; set; }
+                       [NoAccessorMethod]
+                       public string type { owned get; set; }
+                       [NoAccessorMethod]
+                       public string validation_message { owned get; }
+                       public string value { owned get; set; }
+                       public bool will_validate { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_canvas_element_get_type ()")]
+               [GIR (name = "DOMHTMLCanvasElement")]
+               public class HTMLCanvasElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLCanvasElement ();
+                       public long get_height ();
+                       public long get_width ();
+                       public void set_height (long value);
+                       public void set_width (long value);
+                       public long height { get; set; }
+                       public long width { get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_collection_get_type ()")]
+               [GIR (name = "DOMHTMLCollection")]
+               public class HTMLCollection : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLCollection ();
+                       public ulong get_length ();
+                       public unowned WebKit.DOM.Node item (ulong index);
+                       public unowned WebKit.DOM.Node named_item (string name);
+                       public ulong length { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", lower_case_cprefix = "webkit_dom_html_d_list_element_", type_id = "webkit_dom_html_d_list_element_get_type ()")]
+               [GIR (name = "DOMHTMLDListElement")]
+               public class HTMLDListElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLDListElement ();
+                       public bool get_compact ();
+                       public void set_compact (bool value);
+                       public bool compact { get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_directory_element_get_type ()")]
+               [GIR (name = "DOMHTMLDirectoryElement")]
+               public class HTMLDirectoryElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLDirectoryElement ();
+                       public bool get_compact ();
+                       public void set_compact (bool value);
+                       public bool compact { get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_div_element_get_type ()")]
+               [GIR (name = "DOMHTMLDivElement")]
+               public class HTMLDivElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLDivElement ();
+                       public string get_align ();
+                       public void set_align (string value);
+                       public string align { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_document_get_type ()")]
+               [GIR (name = "DOMHTMLDocument")]
+               public class HTMLDocument : WebKit.DOM.Document, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLDocument ();
+                       public void capture_events ();
+                       public void clear ();
+                       public void close ();
+                       public string get_alink_color ();
+                       public string get_bg_color ();
+                       public string get_compat_mode ();
+                       public string get_design_mode ();
+                       public string get_dir ();
+                       public unowned WebKit.DOM.HTMLCollection get_embeds ();
+                       public string get_fg_color ();
+                       public long get_height ();
+                       public string get_link_color ();
+                       public unowned WebKit.DOM.HTMLCollection get_plugins ();
+                       public unowned WebKit.DOM.HTMLCollection get_scripts ();
+                       public string get_vlink_color ();
+                       public long get_width ();
+                       public void release_events ();
+                       public void set_alink_color (string value);
+                       public void set_bg_color (string value);
+                       public void set_design_mode (string value);
+                       public void set_dir (string value);
+                       public void set_fg_color (string value);
+                       public void set_link_color (string value);
+                       public void set_vlink_color (string value);
+                       public string alink_color { owned get; set; }
+                       public string bg_color { owned get; set; }
+                       public string compat_mode { owned get; }
+                       public string design_mode { owned get; set; }
+                       public string dir { owned get; set; }
+                       public WebKit.DOM.HTMLCollection embeds { get; }
+                       public string fg_color { owned get; set; }
+                       public long height { get; }
+                       public string link_color { owned get; set; }
+                       public WebKit.DOM.HTMLCollection plugins { get; }
+                       public WebKit.DOM.HTMLCollection scripts { get; }
+                       public string vlink_color { owned get; set; }
+                       public long width { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_element_get_type ()")]
+               [GIR (name = "DOMHTMLElement")]
+               public class HTMLElement : WebKit.DOM.Element, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLElement ();
+                       public void click ();
+                       public string get_access_key ();
+                       public unowned WebKit.DOM.HTMLCollection get_children ();
+                       public string get_content_editable ();
+                       public string get_dir ();
+                       public string get_inner_html ();
+                       public string get_inner_text ();
+                       public bool get_is_content_editable ();
+                       public string get_lang ();
+                       public string get_outer_html ();
+                       public string get_outer_text ();
+                       public long get_tab_index ();
+                       public string get_title ();
+                       public void set_access_key (string value);
+                       public void set_content_editable (string value) throws GLib.Error;
+                       public void set_dir (string value);
+                       public void set_inner_html (string value) throws GLib.Error;
+                       public void set_inner_text (string value) throws GLib.Error;
+                       public void set_lang (string value);
+                       public void set_outer_html (string value) throws GLib.Error;
+                       public void set_outer_text (string value) throws GLib.Error;
+                       public void set_tab_index (long value);
+                       public void set_title (string value);
+                       public string access_key { owned get; set; }
+                       public WebKit.DOM.HTMLCollection children { get; }
+                       public string content_editable { owned get; set; }
+                       public string dir { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool draggable { get; set; }
+                       [NoAccessorMethod]
+                       public bool hidden { get; set; }
+                       public string inner_html { owned get; set; }
+                       public string inner_text { owned get; set; }
+                       public bool is_content_editable { get; }
+                       public string lang { owned get; set; }
+                       public string outer_html { owned get; set; }
+                       public string outer_text { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool spellcheck { get; set; }
+                       public long tab_index { get; set; }
+                       public string title { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool translate { get; set; }
+                       [NoAccessorMethod]
+                       public string webkitdropzone { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_embed_element_get_type ()")]
+               [GIR (name = "DOMHTMLEmbedElement")]
+               public class HTMLEmbedElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLEmbedElement ();
+                       public string get_align ();
+                       public long get_height ();
+                       public string get_name ();
+                       public string get_src ();
+                       public string get_type_attr ();
+                       public long get_width ();
+                       public void set_align (string value);
+                       public void set_height (long value);
+                       public void set_name (string value);
+                       public void set_src (string value);
+                       public void set_type_attr (string value);
+                       public void set_width (long value);
+                       public string align { owned get; set; }
+                       public long height { get; set; }
+                       public string name { owned get; set; }
+                       public string src { owned get; set; }
+                       [NoAccessorMethod]
+                       public string type { owned get; set; }
+                       public long width { get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_field_set_element_get_type ()")]
+               [GIR (name = "DOMHTMLFieldSetElement")]
+               public class HTMLFieldSetElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLFieldSetElement ();
+                       public unowned WebKit.DOM.HTMLFormElement get_form ();
+                       [NoAccessorMethod]
+                       public bool disabled { get; set; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.HTMLCollection elements { owned get; }
+                       public WebKit.DOM.HTMLFormElement form { get; }
+                       [NoAccessorMethod]
+                       public string name { owned get; set; }
+                       [NoAccessorMethod]
+                       public string type { owned get; }
+                       [NoAccessorMethod]
+                       public string validation_message { owned get; }
+                       [NoAccessorMethod]
+                       public bool will_validate { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_font_element_get_type ()")]
+               [GIR (name = "DOMHTMLFontElement")]
+               public class HTMLFontElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLFontElement ();
+                       public string get_color ();
+                       public string get_face ();
+                       public string get_size ();
+                       public void set_color (string value);
+                       public void set_face (string value);
+                       public void set_size (string value);
+                       public string color { owned get; set; }
+                       public string face { owned get; set; }
+                       public string size { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_form_element_get_type ()")]
+               [GIR (name = "DOMHTMLFormElement")]
+               public class HTMLFormElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLFormElement ();
+                       public string get_accept_charset ();
+                       public string get_action ();
+                       public unowned WebKit.DOM.HTMLCollection get_elements ();
+                       public string get_encoding ();
+                       public string get_enctype ();
+                       public long get_length ();
+                       public string get_method ();
+                       public string get_name ();
+                       public string get_target ();
+                       public void reset ();
+                       public void set_accept_charset (string value);
+                       public void set_action (string value);
+                       public void set_encoding (string value);
+                       public void set_enctype (string value);
+                       public void set_method (string value);
+                       public void set_name (string value);
+                       public void set_target (string value);
+                       public void submit ();
+                       public string accept_charset { owned get; set; }
+                       public string action { owned get; set; }
+                       [NoAccessorMethod]
+                       public string autocapitalize { owned get; set; }
+                       [NoAccessorMethod]
+                       public string autocomplete { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool autocorrect { get; set; }
+                       public WebKit.DOM.HTMLCollection elements { get; }
+                       public string encoding { owned get; set; }
+                       public string enctype { owned get; set; }
+                       public long length { get; }
+                       public string method { owned get; set; }
+                       public string name { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool no_validate { get; set; }
+                       public string target { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_frame_element_get_type ()")]
+               [GIR (name = "DOMHTMLFrameElement")]
+               public class HTMLFrameElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLFrameElement ();
+                       public unowned WebKit.DOM.Document get_content_document ();
+                       public unowned WebKit.DOM.DOMWindow get_content_window ();
+                       public string get_frame_border ();
+                       public long get_height ();
+                       public string get_long_desc ();
+                       public string get_margin_height ();
+                       public string get_margin_width ();
+                       public string get_name ();
+                       public bool get_no_resize ();
+                       public string get_scrolling ();
+                       public string get_src ();
+                       public long get_width ();
+                       public void set_frame_border (string value);
+                       public void set_long_desc (string value);
+                       public void set_margin_height (string value);
+                       public void set_margin_width (string value);
+                       public void set_name (string value);
+                       public void set_no_resize (bool value);
+                       public void set_scrolling (string value);
+                       public void set_src (string value);
+                       public WebKit.DOM.Document content_document { get; }
+                       public WebKit.DOM.DOMWindow content_window { get; }
+                       public string frame_border { owned get; set; }
+                       public long height { get; }
+                       public string long_desc { owned get; set; }
+                       public string margin_height { owned get; set; }
+                       public string margin_width { owned get; set; }
+                       public string name { owned get; set; }
+                       public bool no_resize { get; set; }
+                       public string scrolling { owned get; set; }
+                       public string src { owned get; set; }
+                       public long width { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_frame_set_element_get_type ()")]
+               [GIR (name = "DOMHTMLFrameSetElement")]
+               public class HTMLFrameSetElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLFrameSetElement ();
+                       public string get_cols ();
+                       public string get_rows ();
+                       public void set_cols (string value);
+                       public void set_rows (string value);
+                       public string cols { owned get; set; }
+                       public string rows { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", lower_case_cprefix = "webkit_dom_html_hr_element_", type_id = "webkit_dom_html_hr_element_get_type ()")]
+               [GIR (name = "DOMHTMLHRElement")]
+               public class HTMLHRElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLHRElement ();
+                       public string get_align ();
+                       public bool get_no_shade ();
+                       public string get_size ();
+                       public string get_width ();
+                       public void set_align (string value);
+                       public void set_no_shade (bool value);
+                       public void set_size (string value);
+                       public void set_width (string value);
+                       public string align { owned get; set; }
+                       public bool no_shade { get; set; }
+                       public string size { owned get; set; }
+                       public string width { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_head_element_get_type ()")]
+               [GIR (name = "DOMHTMLHeadElement")]
+               public class HTMLHeadElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLHeadElement ();
+                       public string get_profile ();
+                       public void set_profile (string value);
+                       public string profile { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_heading_element_get_type ()")]
+               [GIR (name = "DOMHTMLHeadingElement")]
+               public class HTMLHeadingElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLHeadingElement ();
+                       public string get_align ();
+                       public void set_align (string value);
+                       public string align { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_html_element_get_type ()")]
+               [GIR (name = "DOMHTMLHtmlElement")]
+               public class HTMLHtmlElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLHtmlElement ();
+                       public string get_version ();
+                       public void set_version (string value);
+                       [NoAccessorMethod]
+                       public string manifest { owned get; set; }
+                       public string version { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", lower_case_cprefix = "webkit_dom_html_iframe_element_", type_id = "webkit_dom_html_iframe_element_get_type ()")]
+               [GIR (name = "DOMHTMLIFrameElement")]
+               public class HTMLIFrameElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLIFrameElement ();
+                       public string get_align ();
+                       public unowned WebKit.DOM.Document get_content_document ();
+                       public unowned WebKit.DOM.DOMWindow get_content_window ();
+                       public string get_frame_border ();
+                       public string get_height ();
+                       public string get_long_desc ();
+                       public string get_margin_height ();
+                       public string get_margin_width ();
+                       public string get_name ();
+                       public string get_scrolling ();
+                       public string get_src ();
+                       public string get_width ();
+                       public void set_align (string value);
+                       public void set_frame_border (string value);
+                       public void set_height (string value);
+                       public void set_long_desc (string value);
+                       public void set_margin_height (string value);
+                       public void set_margin_width (string value);
+                       public void set_name (string value);
+                       public void set_scrolling (string value);
+                       public void set_src (string value);
+                       public void set_width (string value);
+                       public string align { owned get; set; }
+                       public WebKit.DOM.Document content_document { get; }
+                       public WebKit.DOM.DOMWindow content_window { get; }
+                       public string frame_border { owned get; set; }
+                       public string height { owned get; set; }
+                       public string long_desc { owned get; set; }
+                       public string margin_height { owned get; set; }
+                       public string margin_width { owned get; set; }
+                       public string name { owned get; set; }
+                       [NoAccessorMethod]
+                       public string sandbox { owned get; set; }
+                       public string scrolling { owned get; set; }
+                       public string src { owned get; set; }
+                       [NoAccessorMethod]
+                       public string srcdoc { owned get; set; }
+                       public string width { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_image_element_get_type ()")]
+               [GIR (name = "DOMHTMLImageElement")]
+               public class HTMLImageElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLImageElement ();
+                       public string get_align ();
+                       public string get_alt ();
+                       public string get_border ();
+                       public bool get_complete ();
+                       public long get_height ();
+                       public long get_hspace ();
+                       public bool get_is_map ();
+                       public string get_long_desc ();
+                       public string get_lowsrc ();
+                       public string get_name ();
+                       public long get_natural_height ();
+                       public long get_natural_width ();
+                       public string get_src ();
+                       public string get_use_map ();
+                       public long get_vspace ();
+                       public long get_width ();
+                       public long get_x ();
+                       public long get_y ();
+                       public void set_align (string value);
+                       public void set_alt (string value);
+                       public void set_border (string value);
+                       public void set_height (long value);
+                       public void set_hspace (long value);
+                       public void set_is_map (bool value);
+                       public void set_long_desc (string value);
+                       public void set_lowsrc (string value);
+                       public void set_name (string value);
+                       public void set_src (string value);
+                       public void set_use_map (string value);
+                       public void set_vspace (long value);
+                       public void set_width (long value);
+                       public string align { owned get; set; }
+                       public string alt { owned get; set; }
+                       public string border { owned get; set; }
+                       public bool complete { get; }
+                       [NoAccessorMethod]
+                       public string cross_origin { owned get; set; }
+                       [NoAccessorMethod]
+                       public string current_src { owned get; }
+                       public long height { get; set; }
+                       public long hspace { get; set; }
+                       public bool is_map { get; set; }
+                       public string long_desc { owned get; set; }
+                       public string lowsrc { owned get; set; }
+                       public string name { owned get; set; }
+                       public long natural_height { get; }
+                       public long natural_width { get; }
+                       [NoAccessorMethod]
+                       public string sizes { owned get; set; }
+                       public string src { owned get; set; }
+                       [NoAccessorMethod]
+                       public string srcset { owned get; set; }
+                       public string use_map { owned get; set; }
+                       public long vspace { get; set; }
+                       public long width { get; set; }
+                       public long x { get; }
+                       public long y { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_input_element_get_type ()")]
+               [GIR (name = "DOMHTMLInputElement")]
+               public class HTMLInputElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLInputElement ();
+                       public string get_accept ();
+                       public string get_align ();
+                       public string get_alt ();
+                       public bool get_autofocus ();
+                       public bool get_capture ();
+                       public bool get_checked ();
+                       public bool get_default_checked ();
+                       public string get_default_value ();
+                       public bool get_disabled ();
+                       public unowned WebKit.DOM.FileList get_files ();
+                       public unowned WebKit.DOM.HTMLFormElement get_form ();
+                       public ulong get_height ();
+                       public bool get_indeterminate ();
+                       public string get_input_type ();
+                       public long get_max_length ();
+                       public bool get_multiple ();
+                       public string get_name ();
+                       public ulong get_size ();
+                       public string get_src ();
+                       public string get_use_map ();
+                       public string get_value ();
+                       public ulong get_width ();
+                       public bool get_will_validate ();
+                       public bool is_edited ();
+                       public void select ();
+                       public void set_accept (string value);
+                       public void set_align (string value);
+                       public void set_alt (string value);
+                       public void set_autofocus (bool value);
+                       public void set_checked (bool value);
+                       public void set_default_value (string value);
+                       public void set_disabled (bool value);
+                       public void set_files (WebKit.DOM.FileList value);
+                       public void set_height (ulong value);
+                       public void set_indeterminate (bool value);
+                       public void set_input_type (string value);
+                       public void set_max_length (long value) throws GLib.Error;
+                       public void set_multiple (bool value);
+                       public void set_name (string value);
+                       public void set_read_only (bool value);
+                       public void set_size (ulong value) throws GLib.Error;
+                       public void set_src (string value);
+                       public void set_use_map (string value);
+                       public void set_value (string value);
+                       public void set_width (ulong value);
+                       public string accept { owned get; set; }
+                       public string align { owned get; set; }
+                       public string alt { owned get; set; }
+                       [NoAccessorMethod]
+                       public string autocapitalize { owned get; set; }
+                       [NoAccessorMethod]
+                       public string autocomplete { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool autocorrect { get; set; }
+                       public bool autofocus { get; set; }
+                       [NoAccessorMethod]
+                       public bool capture { get; set; }
+                       public bool checked { get; set; }
+                       [NoAccessorMethod]
+                       public bool default_checked { get; set; }
+                       public string default_value { owned get; set; }
+                       [NoAccessorMethod]
+                       public string dir_name { owned get; set; }
+                       public bool disabled { get; set; }
+                       public WebKit.DOM.FileList files { get; }
+                       public WebKit.DOM.HTMLFormElement form { get; }
+                       [NoAccessorMethod]
+                       public string form_action { owned get; set; }
+                       [NoAccessorMethod]
+                       public string form_enctype { owned get; set; }
+                       [NoAccessorMethod]
+                       public string form_method { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool form_no_validate { get; set; }
+                       [NoAccessorMethod]
+                       public string form_target { owned get; set; }
+                       public ulong height { get; set; }
+                       [NoAccessorMethod]
+                       public bool incremental { get; set; }
+                       public bool indeterminate { get; set; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.NodeList labels { owned get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.HTMLElement list { owned get; }
+                       [NoAccessorMethod]
+                       public string max { owned get; set; }
+                       public long max_length { get; set; }
+                       [NoAccessorMethod]
+                       public string min { owned get; set; }
+                       public bool multiple { get; set; }
+                       public string name { owned get; set; }
+                       [NoAccessorMethod]
+                       public string pattern { owned get; set; }
+                       [NoAccessorMethod]
+                       public string placeholder { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool read_only { get; set; }
+                       [NoAccessorMethod]
+                       public bool required { get; set; }
+                       public ulong size { get; set; }
+                       public string src { owned get; set; }
+                       [NoAccessorMethod]
+                       public string step { owned get; set; }
+                       [NoAccessorMethod]
+                       public string type { owned get; set; }
+                       public string use_map { owned get; set; }
+                       [NoAccessorMethod]
+                       public string validation_message { owned get; }
+                       public string value { owned get; set; }
+                       [NoAccessorMethod]
+                       public double value_as_number { get; set; }
+                       public ulong width { get; set; }
+                       public bool will_validate { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", lower_case_cprefix = "webkit_dom_html_li_element_", type_id = "webkit_dom_html_li_element_get_type ()")]
+               [GIR (name = "DOMHTMLLIElement")]
+               public class HTMLLIElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLLIElement ();
+                       public string get_type_attr ();
+                       public long get_value ();
+                       public void set_type_attr (string value);
+                       public void set_value (long value);
+                       [NoAccessorMethod]
+                       public string type { owned get; set; }
+                       public long value { get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_label_element_get_type ()")]
+               [GIR (name = "DOMHTMLLabelElement")]
+               public class HTMLLabelElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLLabelElement ();
+                       public unowned WebKit.DOM.HTMLFormElement get_form ();
+                       public string get_html_for ();
+                       public void set_html_for (string value);
+                       [NoAccessorMethod]
+                       public WebKit.DOM.HTMLElement control { owned get; }
+                       public WebKit.DOM.HTMLFormElement form { get; }
+                       public string html_for { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_legend_element_get_type ()")]
+               [GIR (name = "DOMHTMLLegendElement")]
+               public class HTMLLegendElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLLegendElement ();
+                       public string get_align ();
+                       public unowned WebKit.DOM.HTMLFormElement get_form ();
+                       public void set_align (string value);
+                       public string align { owned get; set; }
+                       public WebKit.DOM.HTMLFormElement form { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_link_element_get_type ()")]
+               [GIR (name = "DOMHTMLLinkElement")]
+               public class HTMLLinkElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLLinkElement ();
+                       public string get_charset ();
+                       public bool get_disabled ();
+                       public string get_href ();
+                       public string get_hreflang ();
+                       public string get_media ();
+                       public string get_rel ();
+                       public string get_rev ();
+                       public unowned WebKit.DOM.StyleSheet get_sheet ();
+                       public string get_target ();
+                       public string get_type_attr ();
+                       public void set_charset (string value);
+                       public void set_disabled (bool value);
+                       public void set_href (string value);
+                       public void set_hreflang (string value);
+                       public void set_media (string value);
+                       public void set_rel (string value);
+                       public void set_rev (string value);
+                       public void set_target (string value);
+                       public void set_type_attr (string value);
+                       public string charset { owned get; set; }
+                       public bool disabled { get; set; }
+                       public string href { owned get; set; }
+                       public string hreflang { owned get; set; }
+                       public string media { owned get; set; }
+                       public string rel { owned get; set; }
+                       public string rev { owned get; set; }
+                       public WebKit.DOM.StyleSheet sheet { get; }
+                       public string target { owned get; set; }
+                       [NoAccessorMethod]
+                       public string type { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_map_element_get_type ()")]
+               [GIR (name = "DOMHTMLMapElement")]
+               public class HTMLMapElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLMapElement ();
+                       public unowned WebKit.DOM.HTMLCollection get_areas ();
+                       public string get_name ();
+                       public void set_name (string value);
+                       public WebKit.DOM.HTMLCollection areas { get; }
+                       public string name { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_marquee_element_get_type ()")]
+               [GIR (name = "DOMHTMLMarqueeElement")]
+               public class HTMLMarqueeElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLMarqueeElement ();
+                       public void start ();
+                       public void stop ();
+                       [NoAccessorMethod]
+                       public string behavior { owned get; set; }
+                       [NoAccessorMethod]
+                       public string bg_color { owned get; set; }
+                       [NoAccessorMethod]
+                       public string direction { owned get; set; }
+                       [NoAccessorMethod]
+                       public string height { owned get; set; }
+                       [NoAccessorMethod]
+                       public ulong hspace { get; set; }
+                       [NoAccessorMethod]
+                       public long loop { get; set; }
+                       [NoAccessorMethod]
+                       public long scroll_amount { get; set; }
+                       [NoAccessorMethod]
+                       public long scroll_delay { get; set; }
+                       [NoAccessorMethod]
+                       public bool true_speed { get; set; }
+                       [NoAccessorMethod]
+                       public ulong vspace { get; set; }
+                       [NoAccessorMethod]
+                       public string width { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_menu_element_get_type ()")]
+               [GIR (name = "DOMHTMLMenuElement")]
+               public class HTMLMenuElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLMenuElement ();
+                       public bool get_compact ();
+                       public void set_compact (bool value);
+                       public bool compact { get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_meta_element_get_type ()")]
+               [GIR (name = "DOMHTMLMetaElement")]
+               public class HTMLMetaElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLMetaElement ();
+                       public string get_content ();
+                       public string get_http_equiv ();
+                       public string get_name ();
+                       public string get_scheme ();
+                       public void set_content (string value);
+                       public void set_http_equiv (string value);
+                       public void set_name (string value);
+                       public void set_scheme (string value);
+                       public string content { owned get; set; }
+                       public string http_equiv { owned get; set; }
+                       public string name { owned get; set; }
+                       public string scheme { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_mod_element_get_type ()")]
+               [GIR (name = "DOMHTMLModElement")]
+               public class HTMLModElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLModElement ();
+                       public string get_cite ();
+                       public string get_date_time ();
+                       public void set_cite (string value);
+                       public void set_date_time (string value);
+                       public string cite { owned get; set; }
+                       public string date_time { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", lower_case_cprefix = "webkit_dom_html_o_list_element_", type_id = "webkit_dom_html_o_list_element_get_type ()")]
+               [GIR (name = "DOMHTMLOListElement")]
+               public class HTMLOListElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLOListElement ();
+                       public bool get_compact ();
+                       public long get_start ();
+                       public string get_type_attr ();
+                       public void set_compact (bool value);
+                       public void set_start (long value);
+                       public void set_type_attr (string value);
+                       public bool compact { get; set; }
+                       [NoAccessorMethod]
+                       public bool reversed { get; set; }
+                       public long start { get; set; }
+                       [NoAccessorMethod]
+                       public string type { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_object_element_get_type ()")]
+               [GIR (name = "DOMHTMLObjectElement")]
+               public class HTMLObjectElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLObjectElement ();
+                       public string get_align ();
+                       public string get_archive ();
+                       public string get_border ();
+                       public string get_code ();
+                       public string get_code_base ();
+                       public string get_code_type ();
+                       public unowned WebKit.DOM.Document get_content_document ();
+                       public string get_data ();
+                       public bool get_declare ();
+                       public unowned WebKit.DOM.HTMLFormElement get_form ();
+                       public string get_height ();
+                       public long get_hspace ();
+                       public string get_name ();
+                       public string get_standby ();
+                       public string get_type_attr ();
+                       public string get_use_map ();
+                       public long get_vspace ();
+                       public string get_width ();
+                       public void set_align (string value);
+                       public void set_archive (string value);
+                       public void set_border (string value);
+                       public void set_code (string value);
+                       public void set_code_base (string value);
+                       public void set_code_type (string value);
+                       public void set_data (string value);
+                       public void set_declare (bool value);
+                       public void set_height (string value);
+                       public void set_hspace (long value);
+                       public void set_name (string value);
+                       public void set_standby (string value);
+                       public void set_type_attr (string value);
+                       public void set_use_map (string value);
+                       public void set_vspace (long value);
+                       public void set_width (string value);
+                       public string align { owned get; set; }
+                       public string archive { owned get; set; }
+                       public string border { owned get; set; }
+                       public string code { owned get; set; }
+                       public string code_base { owned get; set; }
+                       public string code_type { owned get; set; }
+                       public WebKit.DOM.Document content_document { get; }
+                       public string data { owned get; set; }
+                       public bool declare { get; set; }
+                       public WebKit.DOM.HTMLFormElement form { get; }
+                       public string height { owned get; set; }
+                       public long hspace { get; set; }
+                       public string name { owned get; set; }
+                       public string standby { owned get; set; }
+                       [NoAccessorMethod]
+                       public string type { owned get; set; }
+                       public string use_map { owned get; set; }
+                       [NoAccessorMethod]
+                       public string validation_message { owned get; }
+                       public long vspace { get; set; }
+                       public string width { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool will_validate { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_opt_group_element_get_type ()")]
+               [GIR (name = "DOMHTMLOptGroupElement")]
+               public class HTMLOptGroupElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLOptGroupElement ();
+                       public bool get_disabled ();
+                       public string get_label ();
+                       public void set_disabled (bool value);
+                       public void set_label (string value);
+                       public bool disabled { get; set; }
+                       public string label { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_option_element_get_type ()")]
+               [GIR (name = "DOMHTMLOptionElement")]
+               public class HTMLOptionElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLOptionElement ();
+                       public bool get_default_selected ();
+                       public bool get_disabled ();
+                       public unowned WebKit.DOM.HTMLFormElement get_form ();
+                       public long get_index ();
+                       public string get_label ();
+                       public bool get_selected ();
+                       public string get_text ();
+                       public string get_value ();
+                       public void set_default_selected (bool value);
+                       public void set_disabled (bool value);
+                       public void set_label (string value);
+                       public void set_selected (bool value);
+                       public void set_value (string value);
+                       public bool default_selected { get; set; }
+                       public bool disabled { get; set; }
+                       public WebKit.DOM.HTMLFormElement form { get; }
+                       public long index { get; }
+                       public string label { owned get; set; }
+                       public bool selected { get; set; }
+                       public string text { owned get; }
+                       public string value { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_options_collection_get_type ()")]
+               [GIR (name = "DOMHTMLOptionsCollection")]
+               public class HTMLOptionsCollection : WebKit.DOM.HTMLCollection {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLOptionsCollection ();
+                       public ulong get_length ();
+                       public long get_selected_index ();
+                       public unowned WebKit.DOM.Node named_item (string name);
+                       public void set_selected_index (long value);
+                       public ulong length { get; }
+                       public long selected_index { get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_paragraph_element_get_type ()")]
+               [GIR (name = "DOMHTMLParagraphElement")]
+               public class HTMLParagraphElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLParagraphElement ();
+                       public string get_align ();
+                       public void set_align (string value);
+                       public string align { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_param_element_get_type ()")]
+               [GIR (name = "DOMHTMLParamElement")]
+               public class HTMLParamElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLParamElement ();
+                       public string get_name ();
+                       public string get_type_attr ();
+                       public string get_value ();
+                       public string get_value_type ();
+                       public void set_name (string value);
+                       public void set_type_attr (string value);
+                       public void set_value (string value);
+                       public void set_value_type (string value);
+                       public string name { owned get; set; }
+                       [NoAccessorMethod]
+                       public string type { owned get; set; }
+                       public string value { owned get; set; }
+                       public string value_type { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_pre_element_get_type ()")]
+               [GIR (name = "DOMHTMLPreElement")]
+               public class HTMLPreElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLPreElement ();
+                       public long get_width ();
+                       public bool get_wrap ();
+                       public void set_width (long value);
+                       public void set_wrap (bool value);
+                       public long width { get; set; }
+                       public bool wrap { get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_quote_element_get_type ()")]
+               [GIR (name = "DOMHTMLQuoteElement")]
+               public class HTMLQuoteElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLQuoteElement ();
+                       public string get_cite ();
+                       public void set_cite (string value);
+                       public string cite { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_script_element_get_type ()")]
+               [GIR (name = "DOMHTMLScriptElement")]
+               public class HTMLScriptElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLScriptElement ();
+                       public string get_charset ();
+                       public bool get_defer ();
+                       public string get_event ();
+                       public string get_html_for ();
+                       public string get_src ();
+                       public string get_text ();
+                       public string get_type_attr ();
+                       public void set_defer (bool value);
+                       public void set_event (string value);
+                       public void set_html_for (string value);
+                       public void set_src (string value);
+                       public void set_text (string value);
+                       public void set_type_attr (string value);
+                       [NoAccessorMethod]
+                       public bool @async { get; set; }
+                       [NoAccessorMethod]
+                       public string charset { owned get; set; }
+                       [NoAccessorMethod]
+                       public string cross_origin { owned get; set; }
+                       public bool defer { get; set; }
+                       public string event { owned get; set; }
+                       public string html_for { owned get; set; }
+                       [NoAccessorMethod]
+                       public string nonce { owned get; set; }
+                       public string src { owned get; set; }
+                       public string text { owned get; set; }
+                       [NoAccessorMethod]
+                       public string type { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_select_element_get_type ()")]
+               [GIR (name = "DOMHTMLSelectElement")]
+               public class HTMLSelectElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLSelectElement ();
+                       public void add (WebKit.DOM.HTMLElement element, WebKit.DOM.HTMLElement before) throws GLib.Error;
+                       public bool get_autofocus ();
+                       public bool get_disabled ();
+                       public unowned WebKit.DOM.HTMLFormElement get_form ();
+                       public ulong get_length ();
+                       public bool get_multiple ();
+                       public string get_name ();
+                       public unowned WebKit.DOM.HTMLOptionsCollection get_options ();
+                       public string get_select_type ();
+                       public long get_selected_index ();
+                       public long get_size ();
+                       public string get_value ();
+                       public bool get_will_validate ();
+                       public unowned WebKit.DOM.Node item (ulong index);
+                       public unowned WebKit.DOM.Node named_item (string name);
+                       public void remove (long index);
+                       public void set_autofocus (bool value);
+                       public void set_disabled (bool value);
+                       public void set_length (ulong value) throws GLib.Error;
+                       public void set_multiple (bool value);
+                       public void set_name (string value);
+                       public void set_selected_index (long value);
+                       public void set_size (long value);
+                       public void set_value (string value);
+                       public bool autofocus { get; set; }
+                       public bool disabled { get; set; }
+                       public WebKit.DOM.HTMLFormElement form { get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.NodeList labels { owned get; }
+                       public ulong length { get; set; }
+                       public bool multiple { get; set; }
+                       public string name { owned get; set; }
+                       public WebKit.DOM.HTMLOptionsCollection options { get; }
+                       [NoAccessorMethod]
+                       public bool required { get; set; }
+                       public long selected_index { get; set; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.HTMLCollection selected_options { owned get; }
+                       public long size { get; set; }
+                       [NoAccessorMethod]
+                       public string type { owned get; }
+                       [NoAccessorMethod]
+                       public string validation_message { owned get; }
+                       public string value { owned get; set; }
+                       public bool will_validate { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_style_element_get_type ()")]
+               [GIR (name = "DOMHTMLStyleElement")]
+               public class HTMLStyleElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLStyleElement ();
+                       public bool get_disabled ();
+                       public string get_media ();
+                       public unowned WebKit.DOM.StyleSheet get_sheet ();
+                       public string get_type_attr ();
+                       public void set_disabled (bool value);
+                       public void set_media (string value);
+                       public void set_type_attr (string value);
+                       public bool disabled { get; set; }
+                       public string media { owned get; set; }
+                       public WebKit.DOM.StyleSheet sheet { get; }
+                       [NoAccessorMethod]
+                       public string type { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_table_caption_element_get_type ()")]
+               [GIR (name = "DOMHTMLTableCaptionElement")]
+               public class HTMLTableCaptionElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLTableCaptionElement ();
+                       public string get_align ();
+                       public void set_align (string value);
+                       public string align { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_table_cell_element_get_type ()")]
+               [GIR (name = "DOMHTMLTableCellElement")]
+               public class HTMLTableCellElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLTableCellElement ();
+                       public string get_abbr ();
+                       public string get_align ();
+                       public string get_axis ();
+                       public string get_bg_color ();
+                       public long get_cell_index ();
+                       public string get_ch ();
+                       public string get_ch_off ();
+                       public long get_col_span ();
+                       public string get_headers ();
+                       public string get_height ();
+                       public bool get_no_wrap ();
+                       public long get_row_span ();
+                       public string get_scope ();
+                       public string get_v_align ();
+                       public string get_width ();
+                       public void set_abbr (string value);
+                       public void set_align (string value);
+                       public void set_axis (string value);
+                       public void set_bg_color (string value);
+                       public void set_ch (string value);
+                       public void set_ch_off (string value);
+                       public void set_col_span (long value);
+                       public void set_headers (string value);
+                       public void set_height (string value);
+                       public void set_no_wrap (bool value);
+                       public void set_row_span (long value);
+                       public void set_scope (string value);
+                       public void set_v_align (string value);
+                       public void set_width (string value);
+                       public string abbr { owned get; set; }
+                       public string align { owned get; set; }
+                       public string axis { owned get; set; }
+                       public string bg_color { owned get; set; }
+                       public long cell_index { get; }
+                       public string ch { owned get; set; }
+                       public string ch_off { owned get; set; }
+                       public long col_span { get; set; }
+                       public string headers { owned get; set; }
+                       public string height { owned get; set; }
+                       public bool no_wrap { get; set; }
+                       public long row_span { get; set; }
+                       public string scope { owned get; set; }
+                       public string v_align { owned get; set; }
+                       public string width { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_table_col_element_get_type ()")]
+               [GIR (name = "DOMHTMLTableColElement")]
+               public class HTMLTableColElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLTableColElement ();
+                       public string get_align ();
+                       public string get_ch ();
+                       public string get_ch_off ();
+                       public long get_span ();
+                       public string get_v_align ();
+                       public string get_width ();
+                       public void set_align (string value);
+                       public void set_ch (string value);
+                       public void set_ch_off (string value);
+                       public void set_span (long value);
+                       public void set_v_align (string value);
+                       public void set_width (string value);
+                       public string align { owned get; set; }
+                       public string ch { owned get; set; }
+                       public string ch_off { owned get; set; }
+                       public long span { get; set; }
+                       public string v_align { owned get; set; }
+                       public string width { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_table_element_get_type ()")]
+               [GIR (name = "DOMHTMLTableElement")]
+               public class HTMLTableElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLTableElement ();
+                       public unowned WebKit.DOM.HTMLElement create_caption ();
+                       public unowned WebKit.DOM.HTMLElement create_t_foot ();
+                       public unowned WebKit.DOM.HTMLElement create_t_head ();
+                       public void delete_caption ();
+                       public void delete_row (long index) throws GLib.Error;
+                       public void delete_t_foot ();
+                       public void delete_t_head ();
+                       public string get_align ();
+                       public string get_bg_color ();
+                       public string get_border ();
+                       public unowned WebKit.DOM.HTMLTableCaptionElement get_caption ();
+                       public string get_cell_padding ();
+                       public string get_cell_spacing ();
+                       public unowned WebKit.DOM.HTMLCollection get_rows ();
+                       public string get_rules ();
+                       public string get_summary ();
+                       public unowned WebKit.DOM.HTMLCollection get_t_bodies ();
+                       public unowned WebKit.DOM.HTMLTableSectionElement get_t_foot ();
+                       public unowned WebKit.DOM.HTMLTableSectionElement get_t_head ();
+                       public string get_width ();
+                       public unowned WebKit.DOM.HTMLElement insert_row (long index) throws GLib.Error;
+                       public void set_align (string value);
+                       public void set_bg_color (string value);
+                       public void set_border (string value);
+                       public void set_caption (WebKit.DOM.HTMLTableCaptionElement value) throws GLib.Error;
+                       public void set_cell_padding (string value);
+                       public void set_cell_spacing (string value);
+                       public void set_rules (string value);
+                       public void set_summary (string value);
+                       public void set_t_foot (WebKit.DOM.HTMLTableSectionElement value) throws GLib.Error;
+                       public void set_t_head (WebKit.DOM.HTMLTableSectionElement value) throws GLib.Error;
+                       public void set_width (string value);
+                       public string align { owned get; set; }
+                       public string bg_color { owned get; set; }
+                       public string border { owned get; set; }
+                       public WebKit.DOM.HTMLTableCaptionElement caption { get; }
+                       public string cell_padding { owned get; set; }
+                       public string cell_spacing { owned get; set; }
+                       [NoAccessorMethod]
+                       public string frame { owned get; set; }
+                       public WebKit.DOM.HTMLCollection rows { get; }
+                       public string rules { owned get; set; }
+                       public string summary { owned get; set; }
+                       public WebKit.DOM.HTMLCollection t_bodies { get; }
+                       public WebKit.DOM.HTMLTableSectionElement t_foot { get; }
+                       public WebKit.DOM.HTMLTableSectionElement t_head { get; }
+                       public string width { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_table_row_element_get_type ()")]
+               [GIR (name = "DOMHTMLTableRowElement")]
+               public class HTMLTableRowElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLTableRowElement ();
+                       public void delete_cell (long index) throws GLib.Error;
+                       public string get_align ();
+                       public string get_bg_color ();
+                       public unowned WebKit.DOM.HTMLCollection get_cells ();
+                       public string get_ch ();
+                       public string get_ch_off ();
+                       public long get_row_index ();
+                       public long get_section_row_index ();
+                       public string get_v_align ();
+                       public unowned WebKit.DOM.HTMLElement insert_cell (long index) throws GLib.Error;
+                       public void set_align (string value);
+                       public void set_bg_color (string value);
+                       public void set_ch (string value);
+                       public void set_ch_off (string value);
+                       public void set_v_align (string value);
+                       public string align { owned get; set; }
+                       public string bg_color { owned get; set; }
+                       public WebKit.DOM.HTMLCollection cells { get; }
+                       public string ch { owned get; set; }
+                       public string ch_off { owned get; set; }
+                       public long row_index { get; }
+                       public long section_row_index { get; }
+                       public string v_align { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_table_section_element_get_type ()")]
+               [GIR (name = "DOMHTMLTableSectionElement")]
+               public class HTMLTableSectionElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLTableSectionElement ();
+                       public void delete_row (long index) throws GLib.Error;
+                       public string get_align ();
+                       public string get_ch ();
+                       public string get_ch_off ();
+                       public unowned WebKit.DOM.HTMLCollection get_rows ();
+                       public string get_v_align ();
+                       public unowned WebKit.DOM.HTMLElement insert_row (long index) throws GLib.Error;
+                       public void set_align (string value);
+                       public void set_ch (string value);
+                       public void set_ch_off (string value);
+                       public void set_v_align (string value);
+                       public string align { owned get; set; }
+                       public string ch { owned get; set; }
+                       public string ch_off { owned get; set; }
+                       public WebKit.DOM.HTMLCollection rows { get; }
+                       public string v_align { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_text_area_element_get_type ()")]
+               [GIR (name = "DOMHTMLTextAreaElement")]
+               public class HTMLTextAreaElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLTextAreaElement ();
+                       public string get_area_type ();
+                       public bool get_autofocus ();
+                       public long get_cols ();
+                       public string get_default_value ();
+                       public bool get_disabled ();
+                       public unowned WebKit.DOM.HTMLFormElement get_form ();
+                       public string get_name ();
+                       public bool get_read_only ();
+                       public long get_rows ();
+                       public long get_selection_end ();
+                       public long get_selection_start ();
+                       public string get_value ();
+                       public bool get_will_validate ();
+                       public bool is_edited ();
+                       public void select ();
+                       public void set_autofocus (bool value);
+                       public void set_cols (long value);
+                       public void set_default_value (string value);
+                       public void set_disabled (bool value);
+                       public void set_name (string value);
+                       public void set_read_only (bool value);
+                       public void set_rows (long value);
+                       public void set_selection_end (long value);
+                       public void set_selection_range (long start, long end, string direction);
+                       public void set_selection_start (long value);
+                       public void set_value (string value);
+                       [NoAccessorMethod]
+                       public string autocapitalize { owned get; set; }
+                       [NoAccessorMethod]
+                       public bool autocorrect { get; set; }
+                       public bool autofocus { get; set; }
+                       public long cols { get; set; }
+                       public string default_value { owned get; set; }
+                       [NoAccessorMethod]
+                       public string dir_name { owned get; set; }
+                       public bool disabled { get; set; }
+                       public WebKit.DOM.HTMLFormElement form { get; }
+                       [NoAccessorMethod]
+                       public WebKit.DOM.NodeList labels { owned get; }
+                       [NoAccessorMethod]
+                       public long max_length { get; set; }
+                       public string name { owned get; set; }
+                       [NoAccessorMethod]
+                       public string placeholder { owned get; set; }
+                       public bool read_only { get; set; }
+                       [NoAccessorMethod]
+                       public bool required { get; set; }
+                       public long rows { get; set; }
+                       [NoAccessorMethod]
+                       public string selection_direction { owned get; set; }
+                       public long selection_end { get; set; }
+                       public long selection_start { get; set; }
+                       [NoAccessorMethod]
+                       public ulong text_length { get; }
+                       [NoAccessorMethod]
+                       public string type { owned get; }
+                       [NoAccessorMethod]
+                       public string validation_message { owned get; }
+                       public string value { owned get; set; }
+                       public bool will_validate { get; }
+                       [NoAccessorMethod]
+                       public string wrap { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_html_title_element_get_type ()")]
+               [GIR (name = "DOMHTMLTitleElement")]
+               public class HTMLTitleElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLTitleElement ();
+                       public string get_text ();
+                       public void set_text (string value);
+                       public string text { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", lower_case_cprefix = "webkit_dom_html_u_list_element_", type_id = "webkit_dom_html_u_list_element_get_type ()")]
+               [GIR (name = "DOMHTMLUListElement")]
+               public class HTMLUListElement : WebKit.DOM.HTMLElement, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected HTMLUListElement ();
+                       public bool get_compact ();
+                       public string get_type_attr ();
+                       public void set_compact (bool value);
+                       public void set_type_attr (string value);
+                       public bool compact { get; set; }
+                       [NoAccessorMethod]
+                       public string type { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_keyboard_event_get_type ()")]
+               [GIR (name = "DOMKeyboardEvent")]
+               public class KeyboardEvent : WebKit.DOM.UIEvent {
+                       [CCode (has_construct_function = false)]
+                       protected KeyboardEvent ();
+                       public bool get_alt_graph_key ();
+                       public bool get_alt_key ();
+                       public bool get_ctrl_key ();
+                       public string get_key_identifier ();
+                       public ulong get_key_location ();
+                       public bool get_meta_key ();
+                       public bool get_modifier_state (string keyIdentifierArg);
+                       public bool get_shift_key ();
+                       public void init_keyboard_event (string type, bool canBubble, bool cancelable, WebKit.DOM.DOMWindow view, string keyIdentifier, ulong location, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, bool altGraphKey);
+                       public bool alt_graph_key { get; }
+                       public bool alt_key { get; }
+                       public bool ctrl_key { get; }
+                       public string key_identifier { owned get; }
+                       public ulong key_location { get; }
+                       public bool meta_key { get; }
+                       public bool shift_key { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_media_list_get_type ()")]
+               [GIR (name = "DOMMediaList")]
+               public class MediaList : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected MediaList ();
+                       public void append_medium (string newMedium) throws GLib.Error;
+                       public void delete_medium (string oldMedium) throws GLib.Error;
+                       public ulong get_length ();
+                       public string get_media_text ();
+                       public string item (ulong index);
+                       public void set_media_text (string value) throws GLib.Error;
+                       public ulong length { get; }
+                       public string media_text { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_mouse_event_get_type ()")]
+               [GIR (name = "DOMMouseEvent")]
+               public class MouseEvent : WebKit.DOM.UIEvent {
+                       [CCode (has_construct_function = false)]
+                       protected MouseEvent ();
+                       public bool get_alt_key ();
+                       public ushort get_button ();
+                       public long get_client_x ();
+                       public long get_client_y ();
+                       public bool get_ctrl_key ();
+                       public unowned WebKit.DOM.Node get_from_element ();
+                       public bool get_meta_key ();
+                       public long get_offset_x ();
+                       public long get_offset_y ();
+                       public unowned WebKit.DOM.EventTarget get_related_target ();
+                       public long get_screen_x ();
+                       public long get_screen_y ();
+                       public bool get_shift_key ();
+                       public unowned WebKit.DOM.Node get_to_element ();
+                       public long get_x ();
+                       public long get_y ();
+                       public void init_mouse_event (string type, bool canBubble, bool cancelable, WebKit.DOM.DOMWindow view, long detail, long screenX, long screenY, long clientX, long clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, ushort button, WebKit.DOM.EventTarget relatedTarget);
+                       public bool alt_key { get; }
+                       public uint button { get; }
+                       public long client_x { get; }
+                       public long client_y { get; }
+                       public bool ctrl_key { get; }
+                       public WebKit.DOM.Node from_element { get; }
+                       public bool meta_key { get; }
+                       [NoAccessorMethod]
+                       public long movement_x { get; }
+                       [NoAccessorMethod]
+                       public long movement_y { get; }
+                       public long offset_x { get; }
+                       public long offset_y { get; }
+                       public WebKit.DOM.EventTarget related_target { get; }
+                       public long screen_x { get; }
+                       public long screen_y { get; }
+                       public bool shift_key { get; }
+                       public WebKit.DOM.Node to_element { get; }
+                       public long x { get; }
+                       public long y { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_named_node_map_get_type ()")]
+               [GIR (name = "DOMNamedNodeMap")]
+               public class NamedNodeMap : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected NamedNodeMap ();
+                       public ulong get_length ();
+                       public unowned WebKit.DOM.Node get_named_item (string name);
+                       public unowned WebKit.DOM.Node get_named_item_ns (string namespaceURI, string localName);
+                       public unowned WebKit.DOM.Node item (ulong index);
+                       public unowned WebKit.DOM.Node remove_named_item (string name) throws GLib.Error;
+                       public unowned WebKit.DOM.Node remove_named_item_ns (string namespaceURI, string localName) throws GLib.Error;
+                       public unowned WebKit.DOM.Node set_named_item (WebKit.DOM.Node node) throws GLib.Error;
+                       public unowned WebKit.DOM.Node set_named_item_ns (WebKit.DOM.Node node) throws GLib.Error;
+                       public ulong length { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_node_get_type ()")]
+               [GIR (name = "DOMNode")]
+               public class Node : WebKit.DOM.Object, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected Node ();
+                       public unowned WebKit.DOM.Node append_child (WebKit.DOM.Node newChild) throws GLib.Error;
+                       public unowned WebKit.DOM.Node clone_node (bool deep);
+                       public ushort compare_document_position (WebKit.DOM.Node other);
+                       public bool contains (WebKit.DOM.Node other);
+                       public string get_base_uri ();
+                       public unowned WebKit.DOM.NodeList get_child_nodes ();
+                       public unowned WebKit.DOM.Node get_first_child ();
+                       public unowned WebKit.DOM.Node get_last_child ();
+                       public string get_local_name ();
+                       public string get_namespace_uri ();
+                       public unowned WebKit.DOM.Node get_next_sibling ();
+                       public string get_node_name ();
+                       public ushort get_node_type ();
+                       public string get_node_value ();
+                       public unowned WebKit.DOM.Document get_owner_document ();
+                       public unowned WebKit.DOM.Element get_parent_element ();
+                       public unowned WebKit.DOM.Node get_parent_node ();
+                       public string get_prefix ();
+                       public unowned WebKit.DOM.Node get_previous_sibling ();
+                       public string get_text_content ();
+                       public bool has_child_nodes ();
+                       public unowned WebKit.DOM.Node insert_before (WebKit.DOM.Node newChild, WebKit.DOM.Node? refChild) throws GLib.Error;
+                       public bool is_default_namespace (string namespaceURI);
+                       public bool is_equal_node (WebKit.DOM.Node other);
+                       public bool is_same_node (WebKit.DOM.Node other);
+                       public bool is_supported (string feature, string version);
+                       public string lookup_namespace_uri (string prefix);
+                       public string lookup_prefix (string namespaceURI);
+                       public void normalize ();
+                       public unowned WebKit.DOM.Node remove_child (WebKit.DOM.Node oldChild) throws GLib.Error;
+                       public unowned WebKit.DOM.Node replace_child (WebKit.DOM.Node newChild, WebKit.DOM.Node oldChild) throws GLib.Error;
+                       public void set_node_value (string value) throws GLib.Error;
+                       public void set_prefix (string value) throws GLib.Error;
+                       public void set_text_content (string value) throws GLib.Error;
+                       public string base_uri { owned get; }
+                       public WebKit.DOM.NodeList child_nodes { get; }
+                       public WebKit.DOM.Node first_child { get; }
+                       public WebKit.DOM.Node last_child { get; }
+                       public string local_name { owned get; }
+                       public string namespace_uri { owned get; }
+                       public WebKit.DOM.Node next_sibling { get; }
+                       public string node_name { owned get; }
+                       public uint node_type { get; }
+                       public string node_value { owned get; set; }
+                       public WebKit.DOM.Document owner_document { get; }
+                       public WebKit.DOM.Element parent_element { get; }
+                       public WebKit.DOM.Node parent_node { get; }
+                       public string prefix { owned get; set; }
+                       public WebKit.DOM.Node previous_sibling { get; }
+                       public string text_content { owned get; set; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_node_iterator_get_type ()")]
+               [GIR (name = "DOMNodeIterator")]
+               public class NodeIterator : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected NodeIterator ();
+                       public void detach ();
+                       public bool get_expand_entity_references ();
+                       public unowned WebKit.DOM.NodeFilter get_filter ();
+                       public bool get_pointer_before_reference_node ();
+                       public unowned WebKit.DOM.Node get_reference_node ();
+                       public unowned WebKit.DOM.Node get_root ();
+                       public ulong get_what_to_show ();
+                       public unowned WebKit.DOM.Node next_node () throws GLib.Error;
+                       public unowned WebKit.DOM.Node previous_node () throws GLib.Error;
+                       public bool expand_entity_references { get; }
+                       public WebKit.DOM.NodeFilter filter { get; }
+                       public bool pointer_before_reference_node { get; }
+                       public WebKit.DOM.Node reference_node { get; }
+                       public WebKit.DOM.Node root { get; }
+                       public ulong what_to_show { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_node_list_get_type ()")]
+               [GIR (name = "DOMNodeList")]
+               public class NodeList : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected NodeList ();
+                       public ulong get_length ();
+                       public unowned WebKit.DOM.Node item (ulong index);
+                       public ulong length { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_object_get_type ()")]
+               [GIR (name = "DOMObject")]
+               public class Object : GLib.Object {
+                       public void* coreObject;
+                       [CCode (has_construct_function = false)]
+                       protected Object ();
+                       public void* core_object { construct; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_processing_instruction_get_type ()")]
+               [GIR (name = "DOMProcessingInstruction")]
+               public class ProcessingInstruction : WebKit.DOM.CharacterData, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected ProcessingInstruction ();
+                       public unowned WebKit.DOM.StyleSheet get_sheet ();
+                       public string get_target ();
+                       public WebKit.DOM.StyleSheet sheet { get; }
+                       public string target { owned get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_range_get_type ()")]
+               [GIR (name = "DOMRange")]
+               public class Range : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected Range ();
+                       public unowned WebKit.DOM.DocumentFragment clone_contents () throws GLib.Error;
+                       public unowned WebKit.DOM.Range clone_range () throws GLib.Error;
+                       public void collapse (bool toStart) throws GLib.Error;
+                       public short compare_boundary_points (ushort how, WebKit.DOM.Range sourceRange) throws GLib.Error;
+                       public short compare_node (WebKit.DOM.Node refNode) throws GLib.Error;
+                       public short compare_point (WebKit.DOM.Node refNode, long offset) throws GLib.Error;
+                       public unowned WebKit.DOM.DocumentFragment create_contextual_fragment (string html) throws GLib.Error;
+                       public void delete_contents () throws GLib.Error;
+                       public void detach () throws GLib.Error;
+                       public unowned WebKit.DOM.DocumentFragment extract_contents () throws GLib.Error;
+                       public bool get_collapsed () throws GLib.Error;
+                       public unowned WebKit.DOM.Node get_common_ancestor_container () throws GLib.Error;
+                       public unowned WebKit.DOM.Node get_end_container () throws GLib.Error;
+                       public long get_end_offset () throws GLib.Error;
+                       public unowned WebKit.DOM.Node get_start_container () throws GLib.Error;
+                       public long get_start_offset () throws GLib.Error;
+                       public string get_text ();
+                       public void insert_node (WebKit.DOM.Node newNode) throws GLib.Error;
+                       public bool intersects_node (WebKit.DOM.Node refNode) throws GLib.Error;
+                       public bool is_point_in_range (WebKit.DOM.Node refNode, long offset) throws GLib.Error;
+                       public void select_node (WebKit.DOM.Node refNode) throws GLib.Error;
+                       public void select_node_contents (WebKit.DOM.Node refNode) throws GLib.Error;
+                       public void set_end (WebKit.DOM.Node refNode, long offset) throws GLib.Error;
+                       public void set_end_after (WebKit.DOM.Node refNode) throws GLib.Error;
+                       public void set_end_before (WebKit.DOM.Node refNode) throws GLib.Error;
+                       public void set_start (WebKit.DOM.Node refNode, long offset) throws GLib.Error;
+                       public void set_start_after (WebKit.DOM.Node refNode) throws GLib.Error;
+                       public void set_start_before (WebKit.DOM.Node refNode) throws GLib.Error;
+                       public void surround_contents (WebKit.DOM.Node newParent) throws GLib.Error;
+                       public string to_string () throws GLib.Error;
+                       public bool collapsed { get; }
+                       public WebKit.DOM.Node common_ancestor_container { get; }
+                       public WebKit.DOM.Node end_container { get; }
+                       public long end_offset { get; }
+                       public WebKit.DOM.Node start_container { get; }
+                       public long start_offset { get; }
+                       public string text { owned get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_style_sheet_get_type ()")]
+               [GIR (name = "DOMStyleSheet")]
+               public class StyleSheet : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected StyleSheet ();
+                       public string get_content_type ();
+                       public bool get_disabled ();
+                       public string get_href ();
+                       public unowned WebKit.DOM.MediaList get_media ();
+                       public unowned WebKit.DOM.Node get_owner_node ();
+                       public unowned WebKit.DOM.StyleSheet get_parent_style_sheet ();
+                       public string get_title ();
+                       public void set_disabled (bool value);
+                       public bool disabled { get; set; }
+                       public string href { owned get; }
+                       public WebKit.DOM.MediaList media { get; }
+                       public WebKit.DOM.Node owner_node { get; }
+                       public WebKit.DOM.StyleSheet parent_style_sheet { get; }
+                       public string title { owned get; }
+                       [NoAccessorMethod]
+                       public string type { owned get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_style_sheet_list_get_type ()")]
+               [GIR (name = "DOMStyleSheetList")]
+               public class StyleSheetList : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected StyleSheetList ();
+                       public ulong get_length ();
+                       public unowned WebKit.DOM.StyleSheet item (ulong index);
+                       public ulong length { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_text_get_type ()")]
+               [GIR (name = "DOMText")]
+               public class Text : WebKit.DOM.CharacterData, WebKit.DOM.EventTarget {
+                       [CCode (has_construct_function = false)]
+                       protected Text ();
+                       public string get_whole_text ();
+                       public unowned WebKit.DOM.Text replace_whole_text (string content) throws GLib.Error;
+                       public unowned WebKit.DOM.Text split_text (ulong offset) throws GLib.Error;
+                       public string whole_text { owned get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_tree_walker_get_type ()")]
+               [GIR (name = "DOMTreeWalker")]
+               public class TreeWalker : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected TreeWalker ();
+                       public unowned WebKit.DOM.Node first_child ();
+                       public unowned WebKit.DOM.Node get_current_node ();
+                       public bool get_expand_entity_references ();
+                       public unowned WebKit.DOM.NodeFilter get_filter ();
+                       public unowned WebKit.DOM.Node get_root ();
+                       public ulong get_what_to_show ();
+                       public unowned WebKit.DOM.Node last_child ();
+                       public unowned WebKit.DOM.Node next_node ();
+                       public unowned WebKit.DOM.Node next_sibling ();
+                       public unowned WebKit.DOM.Node parent_node ();
+                       public unowned WebKit.DOM.Node previous_node ();
+                       public unowned WebKit.DOM.Node previous_sibling ();
+                       public void set_current_node (WebKit.DOM.Node value) throws GLib.Error;
+                       public WebKit.DOM.Node current_node { get; }
+                       public bool expand_entity_references { get; }
+                       public WebKit.DOM.NodeFilter filter { get; }
+                       public WebKit.DOM.Node root { get; }
+                       public ulong what_to_show { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_ui_event_get_type ()")]
+               [GIR (name = "DOMUIEvent")]
+               public class UIEvent : WebKit.DOM.Event {
+                       [CCode (has_construct_function = false)]
+                       protected UIEvent ();
+                       public long get_char_code ();
+                       public long get_detail ();
+                       public long get_key_code ();
+                       public long get_layer_x ();
+                       public long get_layer_y ();
+                       public long get_page_x ();
+                       public long get_page_y ();
+                       public unowned WebKit.DOM.DOMWindow get_view ();
+                       public void init_ui_event (string type, bool canBubble, bool cancelable, WebKit.DOM.DOMWindow view, long detail);
+                       public long char_code { get; }
+                       public long detail { get; }
+                       public long key_code { get; }
+                       public long layer_x { get; }
+                       public long layer_y { get; }
+                       public long page_x { get; }
+                       public long page_y { get; }
+                       public WebKit.DOM.DOMWindow view { get; }
+                       [NoAccessorMethod]
+                       public long which { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_wheel_event_get_type ()")]
+               [GIR (name = "DOMWheelEvent")]
+               public class WheelEvent : WebKit.DOM.MouseEvent {
+                       [CCode (has_construct_function = false)]
+                       protected WheelEvent ();
+                       public long get_wheel_delta ();
+                       public long get_wheel_delta_x ();
+                       public long get_wheel_delta_y ();
+                       public void init_wheel_event (long wheelDeltaX, long wheelDeltaY, WebKit.DOM.DOMWindow view, long screenX, long screenY, long clientX, long clientY, bool ctrlKey, bool altKey, bool shiftKey, bool metaKey);
+                       [NoAccessorMethod]
+                       public ulong delta_mode { get; }
+                       [NoAccessorMethod]
+                       public double delta_x { get; }
+                       [NoAccessorMethod]
+                       public double delta_y { get; }
+                       [NoAccessorMethod]
+                       public double delta_z { get; }
+                       [NoAccessorMethod]
+                       public bool webkit_direction_inverted_from_device { get; }
+                       public long wheel_delta { get; }
+                       public long wheel_delta_x { get; }
+                       public long wheel_delta_y { get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_xpath_expression_get_type ()")]
+               [GIR (name = "DOMXPathExpression")]
+               public class XPathExpression : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected XPathExpression ();
+                       public unowned WebKit.DOM.XPathResult evaluate (WebKit.DOM.Node contextNode, ushort type, WebKit.DOM.XPathResult inResult) throws GLib.Error;
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_xpath_result_get_type ()")]
+               [GIR (name = "DOMXPathResult")]
+               public class XPathResult : WebKit.DOM.Object {
+                       [CCode (has_construct_function = false)]
+                       protected XPathResult ();
+                       public bool get_boolean_value () throws GLib.Error;
+                       public bool get_invalid_iterator_state ();
+                       public double get_number_value () throws GLib.Error;
+                       public ushort get_result_type ();
+                       public unowned WebKit.DOM.Node get_single_node_value () throws GLib.Error;
+                       public ulong get_snapshot_length () throws GLib.Error;
+                       public string get_string_value () throws GLib.Error;
+                       public unowned WebKit.DOM.Node iterate_next () throws GLib.Error;
+                       public unowned WebKit.DOM.Node snapshot_item (ulong index) throws GLib.Error;
+                       public bool boolean_value { get; }
+                       public bool invalid_iterator_state { get; }
+                       public double number_value { get; }
+                       public uint result_type { get; }
+                       public WebKit.DOM.Node single_node_value { get; }
+                       public ulong snapshot_length { get; }
+                       public string string_value { owned get; }
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_event_target_get_type ()")]
+               [GIR (name = "DOMEventTarget")]
+               public interface EventTarget : GLib.Object {
+                       public bool add_event_listener_with_closure (string event_name, GLib.Closure handler, bool use_capture);
+                       public abstract bool dispatch_event (WebKit.DOM.Event event) throws GLib.Error;
+                       public abstract bool remove_event_listener (string event_name, GLib.Closure handler, bool use_capture);
+                       public bool remove_event_listener_with_closure (string event_name, GLib.Closure handler, bool use_capture);
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_node_filter_get_type ()")]
+               [GIR (name = "DOMNodeFilter")]
+               public interface NodeFilter : GLib.Object {
+                       public abstract short accept_node (WebKit.DOM.Node node);
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_dom_xpath_ns_resolver_get_type ()")]
+               [GIR (name = "DOMXPathNSResolver")]
+               public interface XPathNSResolver : GLib.Object {
+                       public abstract string lookup_namespace_uri (string prefix);
+               }
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_CSS_RULE_CHARSET_RULE")]
+               public const int _CSS_RULE_CHARSET_RULE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_CSS_RULE_FONT_FACE_RULE")]
+               public const int _CSS_RULE_FONT_FACE_RULE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_CSS_RULE_IMPORT_RULE")]
+               public const int _CSS_RULE_IMPORT_RULE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_CSS_RULE_MEDIA_RULE")]
+               public const int _CSS_RULE_MEDIA_RULE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_CSS_RULE_PAGE_RULE")]
+               public const int _CSS_RULE_PAGE_RULE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_CSS_RULE_STYLE_RULE")]
+               public const int _CSS_RULE_STYLE_RULE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_CSS_RULE_UNKNOWN_RULE")]
+               public const int _CSS_RULE_UNKNOWN_RULE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_CSS_VALUE_CSS_CUSTOM")]
+               public const int _CSS_VALUE_CSS_CUSTOM;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_CSS_VALUE_CSS_INHERIT")]
+               public const int _CSS_VALUE_CSS_INHERIT;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_CSS_VALUE_CSS_PRIMITIVE_VALUE")]
+               public const int _CSS_VALUE_CSS_PRIMITIVE_VALUE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_CSS_VALUE_CSS_VALUE_LIST")]
+               public const int _CSS_VALUE_CSS_VALUE_LIST;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_AT_TARGET")]
+               public const int _EVENT_AT_TARGET;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_BLUR")]
+               public const int _EVENT_BLUR;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_BUBBLING_PHASE")]
+               public const int _EVENT_BUBBLING_PHASE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_CAPTURING_PHASE")]
+               public const int _EVENT_CAPTURING_PHASE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_CHANGE")]
+               public const int _EVENT_CHANGE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_CLICK")]
+               public const int _EVENT_CLICK;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_DBLCLICK")]
+               public const int _EVENT_DBLCLICK;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_DRAGDROP")]
+               public const int _EVENT_DRAGDROP;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_FOCUS")]
+               public const int _EVENT_FOCUS;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_KEYDOWN")]
+               public const int _EVENT_KEYDOWN;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_KEYPRESS")]
+               public const int _EVENT_KEYPRESS;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_KEYUP")]
+               public const int _EVENT_KEYUP;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_MOUSEDOWN")]
+               public const int _EVENT_MOUSEDOWN;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_MOUSEDRAG")]
+               public const int _EVENT_MOUSEDRAG;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_MOUSEMOVE")]
+               public const int _EVENT_MOUSEMOVE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_MOUSEOUT")]
+               public const int _EVENT_MOUSEOUT;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_MOUSEOVER")]
+               public const int _EVENT_MOUSEOVER;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_MOUSEUP")]
+               public const int _EVENT_MOUSEUP;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_NONE")]
+               public const int _EVENT_NONE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_EVENT_SELECT")]
+               public const int _EVENT_SELECT;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_KEYBOARD_EVENT_KEY_LOCATION_LEFT")]
+               public const int _KEYBOARD_EVENT_KEY_LOCATION_LEFT;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_KEYBOARD_EVENT_KEY_LOCATION_NUMPAD")]
+               public const int _KEYBOARD_EVENT_KEY_LOCATION_NUMPAD;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_KEYBOARD_EVENT_KEY_LOCATION_RIGHT")]
+               public const int _KEYBOARD_EVENT_KEY_LOCATION_RIGHT;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_KEYBOARD_EVENT_KEY_LOCATION_STANDARD")]
+               public const int _KEYBOARD_EVENT_KEY_LOCATION_STANDARD;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_ATTRIBUTE_NODE")]
+               public const int _NODE_ATTRIBUTE_NODE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_CDATA_SECTION_NODE")]
+               public const int _NODE_CDATA_SECTION_NODE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_COMMENT_NODE")]
+               public const int _NODE_COMMENT_NODE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_DOCUMENT_FRAGMENT_NODE")]
+               public const int _NODE_DOCUMENT_FRAGMENT_NODE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_DOCUMENT_NODE")]
+               public const int _NODE_DOCUMENT_NODE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_DOCUMENT_POSITION_CONTAINED_BY")]
+               public const int _NODE_DOCUMENT_POSITION_CONTAINED_BY;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_DOCUMENT_POSITION_CONTAINS")]
+               public const int _NODE_DOCUMENT_POSITION_CONTAINS;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_DOCUMENT_POSITION_DISCONNECTED")]
+               public const int _NODE_DOCUMENT_POSITION_DISCONNECTED;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_DOCUMENT_POSITION_FOLLOWING")]
+               public const int _NODE_DOCUMENT_POSITION_FOLLOWING;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC")]
+               public const int _NODE_DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_DOCUMENT_POSITION_PRECEDING")]
+               public const int _NODE_DOCUMENT_POSITION_PRECEDING;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_DOCUMENT_TYPE_NODE")]
+               public const int _NODE_DOCUMENT_TYPE_NODE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_ELEMENT_NODE")]
+               public const int _NODE_ELEMENT_NODE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_ENTITY_NODE")]
+               public const int _NODE_ENTITY_NODE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_ENTITY_REFERENCE_NODE")]
+               public const int _NODE_ENTITY_REFERENCE_NODE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_ACCEPT")]
+               public const int _NODE_FILTER_ACCEPT;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_REJECT")]
+               public const int _NODE_FILTER_REJECT;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_ALL")]
+               public const int _NODE_FILTER_SHOW_ALL;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_ATTRIBUTE")]
+               public const int _NODE_FILTER_SHOW_ATTRIBUTE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_CDATA_SECTION")]
+               public const int _NODE_FILTER_SHOW_CDATA_SECTION;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_COMMENT")]
+               public const int _NODE_FILTER_SHOW_COMMENT;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_DOCUMENT")]
+               public const int _NODE_FILTER_SHOW_DOCUMENT;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_DOCUMENT_FRAGMENT")]
+               public const int _NODE_FILTER_SHOW_DOCUMENT_FRAGMENT;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_DOCUMENT_TYPE")]
+               public const int _NODE_FILTER_SHOW_DOCUMENT_TYPE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_ELEMENT")]
+               public const int _NODE_FILTER_SHOW_ELEMENT;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_ENTITY")]
+               public const int _NODE_FILTER_SHOW_ENTITY;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_ENTITY_REFERENCE")]
+               public const int _NODE_FILTER_SHOW_ENTITY_REFERENCE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_NOTATION")]
+               public const int _NODE_FILTER_SHOW_NOTATION;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_PROCESSING_INSTRUCTION")]
+               public const int _NODE_FILTER_SHOW_PROCESSING_INSTRUCTION;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SHOW_TEXT")]
+               public const int _NODE_FILTER_SHOW_TEXT;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_FILTER_SKIP")]
+               public const int _NODE_FILTER_SKIP;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_NOTATION_NODE")]
+               public const int _NODE_NOTATION_NODE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_PROCESSING_INSTRUCTION_NODE")]
+               public const int _NODE_PROCESSING_INSTRUCTION_NODE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_NODE_TEXT_NODE")]
+               public const int _NODE_TEXT_NODE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_RANGE_END_TO_END")]
+               public const int _RANGE_END_TO_END;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_RANGE_END_TO_START")]
+               public const int _RANGE_END_TO_START;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_RANGE_NODE_AFTER")]
+               public const int _RANGE_NODE_AFTER;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_RANGE_NODE_BEFORE")]
+               public const int _RANGE_NODE_BEFORE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_RANGE_NODE_BEFORE_AND_AFTER")]
+               public const int _RANGE_NODE_BEFORE_AND_AFTER;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_RANGE_NODE_INSIDE")]
+               public const int _RANGE_NODE_INSIDE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_RANGE_START_TO_END")]
+               public const int _RANGE_START_TO_END;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_RANGE_START_TO_START")]
+               public const int _RANGE_START_TO_START;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_XPATH_RESULT_ANY_TYPE")]
+               public const int _XPATH_RESULT_ANY_TYPE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_XPATH_RESULT_ANY_UNORDERED_NODE_TYPE")]
+               public const int _XPATH_RESULT_ANY_UNORDERED_NODE_TYPE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_XPATH_RESULT_BOOLEAN_TYPE")]
+               public const int _XPATH_RESULT_BOOLEAN_TYPE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_XPATH_RESULT_FIRST_ORDERED_NODE_TYPE")]
+               public const int _XPATH_RESULT_FIRST_ORDERED_NODE_TYPE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_XPATH_RESULT_NUMBER_TYPE")]
+               public const int _XPATH_RESULT_NUMBER_TYPE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_XPATH_RESULT_ORDERED_NODE_ITERATOR_TYPE")]
+               public const int _XPATH_RESULT_ORDERED_NODE_ITERATOR_TYPE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_XPATH_RESULT_ORDERED_NODE_SNAPSHOT_TYPE")]
+               public const int _XPATH_RESULT_ORDERED_NODE_SNAPSHOT_TYPE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_XPATH_RESULT_STRING_TYPE")]
+               public const int _XPATH_RESULT_STRING_TYPE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_XPATH_RESULT_UNORDERED_NODE_ITERATOR_TYPE")]
+               public const int _XPATH_RESULT_UNORDERED_NODE_ITERATOR_TYPE;
+               [CCode (cheader_filename = "webkit2/webkit-web-extension.h", cname = "WEBKIT_DOM_XPATH_RESULT_UNORDERED_NODE_SNAPSHOT_TYPE")]
+               public const int _XPATH_RESULT_UNORDERED_NODE_SNAPSHOT_TYPE;
+       }
+       [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_frame_get_type ()")]
+       public class Frame : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected Frame ();
+               public void* get_javascript_context_for_script_world (WebKit.ScriptWorld world);
+               public void* get_javascript_global_context ();
+               public unowned string get_uri ();
+               public bool is_main_frame ();
+       }
+       [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_script_world_get_type ()")]
+       public class ScriptWorld : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public ScriptWorld ();
+               public static unowned WebKit.ScriptWorld get_default ();
+               public signal void window_object_cleared (WebKit.WebPage page, WebKit.Frame frame);
+       }
+       [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_uri_request_get_type ()")]
+       public class URIRequest : GLib.Object {
+               [CCode (has_construct_function = false)]
+               public URIRequest (string uri);
+               public Soup.MessageHeaders get_http_headers ();
+               public unowned string get_uri ();
+               public void set_uri (string uri);
+               public string uri { get; set construct; }
+       }
+       [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_uri_response_get_type ()")]
+       public class URIResponse : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected URIResponse ();
+               public uint64 get_content_length ();
+               public Soup.MessageHeaders get_http_headers ();
+               public unowned string get_mime_type ();
+               public uint get_status_code ();
+               public unowned string get_suggested_filename ();
+               public unowned string get_uri ();
+               public uint64 content_length { get; }
+               public Soup.MessageHeaders http_headers { owned get; }
+               public string mime_type { get; }
+               public uint status_code { get; }
+               public string suggested_filename { get; }
+               public string uri { get; }
+       }
+       [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_web_extension_get_type ()")]
+       public class WebExtension : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected WebExtension ();
+               public unowned WebKit.WebPage get_page (uint64 page_id);
+               public signal void page_created (WebKit.WebPage web_page);
+       }
+       [CCode (cheader_filename = "webkit2/webkit-web-extension.h", type_id = "webkit_web_page_get_type ()")]
+       public class WebPage : GLib.Object {
+               [CCode (has_construct_function = false)]
+               protected WebPage ();
+               public unowned WebKit.DOM.Document get_dom_document ();
+               public uint64 get_id ();
+               public unowned WebKit.Frame get_main_frame ();
+               public unowned string get_uri ();
+               public string uri { get; }
+               public signal void document_loaded ();
+               public signal bool send_request (WebKit.URIRequest request, WebKit.URIResponse redirected_response);
+       }
+       [CCode (cheader_filename = "webkit2/webkit-web-extension.h", has_target = false)]
+       public delegate void WebExtensionInitializeFunction (WebKit.WebExtension extension);
+       [CCode (cheader_filename = "webkit2/webkit-web-extension.h", has_target = false)]
+       public delegate void WebExtensionInitializeWithUserDataFunction (WebKit.WebExtension extension, GLib.Variant user_data);
+}
index 2fd38da..2141215 100644 (file)
@@ -518,6 +518,12 @@ namespace X {
        [CCode (cname = "XCreateWindow")]
        public Window create_window (Display display, Window parent, int x, int y, uint width, uint height, uint border_width, int depth, uint @class, Visual? visual, X.CW valuemask, ref SetWindowAttributes attributes);
 
+       [CCode (cname = "XClearWindow")]
+       public int clear_window (X.Display display, X.Window w);
+
+       [CCode (cname = "XCreatePixmap")]
+       public X.Pixmap create_pixmap (X.Display display, X.Drawable d, uint width, uint height, uint depth);
+
        [CCode (cname = "XCreateImage")]
        public unowned Image create_image (Display display, Visual u, uint depth, int format, int offset, char *data, uint width, uint height, int bitmap_pad, int bytes_per_line);
 
@@ -564,6 +570,9 @@ namespace X {
                public Cursor cursor;           /* cursor to be displayed (or None) */
        }
 
+       [CCode (cname = "XSetWindowBackgroundPixmap")]
+       public int set_window_background_pixmap (X.Display display, X.Window w, X.Pixmap background_pixmap);
+
        [CCode (cname = "XWindowAttributes", has_destroy_function = false, cheader_filename = "X11/Xlib.h,X11/Xatom.h,X11/Xutil.h", has_type_id = false)]
        public struct WindowAttributes {
                public int x;
@@ -716,6 +725,13 @@ namespace X {
        }
 
        [CCode (cprefix = "")]
+       public enum CloseMode {
+               DestroyAll,
+               RetainPermanent,
+               RetainTemporary
+       }
+
+       [CCode (cprefix = "")]
        [Flags]
        public enum EventMask {
                NoEventMask,
@@ -807,6 +823,11 @@ namespace X {
                public ButtonEvent xbutton;
                public MotionEvent xmotion;
                public CrossingEvent xcrossing;
+               public FocusChangeEvent xfocus;
+               public ExposeEvent xexpose;
+               public GraphicsExposeEvent xgraphicsexpose;
+               public NoExposeEvent xnoexpose;
+               public VisibilityEvent xvisibility;
                public CreateWindowEvent xcreatewindow;
                public DestroyWindowEvent xdestroywindow;
                public UnmapEvent xunmap;
@@ -815,12 +836,19 @@ namespace X {
                public ReparentEvent xreparent;
                public ConfigureEvent xconfigure;
                public GravityEvent xgravity;
+               public ResizeRequestEvent xresizerequest;
                public ConfigureRequestEvent xconfigurerequest;
                public CirculateEvent xcirculate;
                public CirculateRequestEvent xcirculaterequest;
                public PropertyEvent xproperty;
+               public SelectionClearEvent xselectionclear;
+               public SelectionRequestEvent xselectionrequest;
                public SelectionEvent xselection;
+               public ColormapEvent xcolormap;
                public ClientMessageEvent xclient;
+               public MappingEvent xmapping;
+               public ErrorEvent xerror;
+               public KeymapEvent xkeymap;
                public GenericEvent xgeneric;
                public GenericEventCookie xcookie;
        }
@@ -910,6 +938,67 @@ namespace X {
                public uint state;
        }
 
+       [CCode (cname = "XFocusChangeEvent", has_type_id = false)]
+       public struct FocusChangeEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public int mode;
+               public int detail;
+       }
+
+       [CCode (cname = "XExposeEvent", has_type_id = false)]
+       public struct ExposeEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public int x;
+               public int y;
+               public int width;
+               public int height;
+               public int count;
+       }
+
+       [CCode (cname = "XGraphicsExposeEvent", has_type_id = false)]
+       public struct GraphicsExposeEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public int x;
+               public int y;
+               public int width;
+               public int height;
+               public int count;
+               public int major_code;
+               public int minor_code;
+       }
+
+       [CCode (cname = "XNoExposeEvent", has_type_id = false)]
+       public struct NoExposeEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public int state;
+       }
+
+       [CCode (cname = "XVisibilityEvent", has_type_id = false)]
+       public struct VisibilityEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public int state;
+       }
+
        [CCode (cname = "XCreateWindowEvent", has_type_id = false)]
        public struct CreateWindowEvent {
                public int type;
@@ -1011,6 +1100,17 @@ namespace X {
                public int y;
        }
 
+       [CCode (cname = "XResizeRequestEvent", has_type_id = false)]
+       public struct ResizeRequestEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public int width;
+               public int height;
+       }
+
        [CCode (cname = "XConfigureRequestEvent", has_type_id = false)]
        public struct ConfigureRequestEvent {
                public int type;
@@ -1063,6 +1163,31 @@ namespace X {
                public int state;
        }
 
+       [CCode (cname = "XSelectionClearEvent", has_type_id = false)]
+       public struct SelectionClearEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public Atom selection;
+               public ulong time;
+       }
+
+       [CCode (cname = "XSelectionRequestEvent", has_type_id = false)]
+       public struct SelectionRequestEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window owner;
+               public Window requestor;
+               public Atom selection;
+               public Atom target;
+               public Atom property;
+               public ulong time;
+       }
+
        [CCode (cname = "XSelectionEvent", has_type_id = false)]
        public struct SelectionEvent {
                public int type;
@@ -1076,6 +1201,18 @@ namespace X {
                public ulong time;
        }
 
+       [CCode (cname = "XColormapEvent", has_type_id = false)]
+       public struct ColormapEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public Colormap colormap;
+               public bool @new;
+               public int state;
+       }
+
        [CCode (cname = "XClientMessageEvent", has_type_id = false)]
        public struct ClientMessageEvent {
                public int type;
@@ -1088,6 +1225,39 @@ namespace X {
                public ClientMessageEventData data;
        }
 
+       [CCode (cname = "XMappingEvent", has_type_id = false)]
+       public struct MappingEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public int request;
+               public int first_keycode;
+               public int count;
+       }
+
+       [CCode (cname = "XErrorEvent", has_type_id = false)]
+       public struct ErrorEvent {
+               public int type;
+               public unowned Display display;
+               public ID resourceid;
+               public ulong serial;
+               public uchar error_code;
+               public uchar request_code;
+               public uchar minor_code;
+       }
+
+       [CCode (cname = "XKeymapEvent", has_type_id = false)]
+       public struct KeymapEvent {
+               public int type;
+               public ulong serial;
+               public bool send_event;
+               public unowned Display display;
+               public Window window;
+               public unowned char[] key_vector;
+       }
+
        [CCode (cname = "XGenericEvent", has_type_id = false)]
        public struct GenericEvent {
                public int type;
index cdae2b0..77cb88d 100644 (file)
@@ -22,6 +22,7 @@
 
 using Xcb;
 
+[Deprecated (since = "vala-0.26", replacement = "bindings distributed with vala-extra-vapis")]
 namespace Xcb {
 
        [CCode (lower_case_cprefix = "xcb_icccm_", cheader_filename = "xcb/xcb_icccm.h")]
index 229e4d1..1684262 100644 (file)
@@ -22,6 +22,7 @@
  *  Sergio Costas <raster@rastersoft.com>
  */
 
+[Deprecated (since = "vala-0.26", replacement = "bindings distributed with vala-extra-vapis")]
 [CCode (lower_case_cprefix = "xcb_", cheader_filename = "xcb/xcb.h,xcb/xproto.h")]
 namespace Xcb {
        [Compact]
@@ -29,94 +30,542 @@ namespace Xcb {
        public class Connection {
                [CCode (cname = "xcb_connect")]
                public Connection (string? display = null, out int screen = null);
+               [CCode (cname = "xcb_connection_has_error")]
+               public int has_error ();
 
                public void flush ();
                public uint32 generate_id ();
                public Setup get_setup ();
                public GenericEvent wait_for_event ();
-               public GenericEvent poll_for_event();
+               public GenericEvent poll_for_event ();
                public int get_file_descriptor ();
+               public Xcb.GenericError? request_check (Xcb.VoidCookie cookie);
+
                public VoidCookie create_window (uint8 depth, Window wid, Window parent, int16 x, int16 y, uint16 width, uint16 height, uint16 border_width, uint16 _class, VisualID visual, uint32 value_mask, [CCode (array_length = false)] uint32[]? value_list);
                public VoidCookie create_window_checked (uint8 depth, Window wid, Window parent, int16 x, int16 y, uint16 width, uint16 height, uint16 border_width, uint16 _class, VisualID visual, uint32 value_mask, [CCode (array_length = false)] uint32[]? value_list);
+
+               public VoidCookie destroy_window_checked (Window window);
+               public VoidCookie destroy_window (Window window);
+
+               public VoidCookie destroy_subwindows_checked (Window window);
+               public VoidCookie destroy_subwindows (Window window);
+
+               public VoidCookie change_save_set_checked (SetMode mode, Window window);
+               public VoidCookie change_save_set (SetMode mode, Window window);
+
                public VoidCookie map_window (Window wid);
                public VoidCookie map_window_checked (Window wid);
+
+               public VoidCookie map_subwindows_checked (Window window);
+               public VoidCookie map_subwindows (Window window);
+
                public VoidCookie unmap_window (Window wid);
                public VoidCookie unmap_window_checked (Window wid);
+
+               public VoidCookie unmap_subwindows_checked (Window window);
+               public VoidCookie unmap_subwindows (Window window);
+
+               public VoidCookie circulate_window_checked (Circulate direction, Window window);
+               public VoidCookie circulate_window (Circulate direction, Window window);
+
                public GetWindowAttributesCookie get_window_attributes (Window wid);
                public GetWindowAttributesCookie get_window_attributes_unchecked (Window wid);
-               public GetWindowAttributesReply get_window_attributes_reply(GetWindowAttributesCookie cookie, out GenericError? e);
+               public GetWindowAttributesReply? get_window_attributes_reply (GetWindowAttributesCookie cookie, out GenericError? e = null);
+
                public VoidCookie change_window_attributes (Window wid, uint32 value_mask, [CCode (array_length = false)] uint32[]? value_list);
                public VoidCookie change_window_attributes_checked (Window wid, uint32 value_mask, [CCode (array_length = false)] uint32[]? value_list);
+
                public QueryTreeCookie query_tree (Window wid);
                public QueryTreeCookie query_tree_unchecked (Window wid);
-               public QueryTreeReply query_tree_reply (QueryTreeCookie cookie, out GenericError? e);
+               public QueryTreeReply? query_tree_reply (QueryTreeCookie cookie, out GenericError? e = null);
 
                [CCode (cname = "xcb_intern_atom")]
-               private InternAtomCookie vala_intern_atom(bool only_if_exists,uint16 len, string name);
+               private InternAtomCookie vala_intern_atom (bool only_if_exists, uint16 len, string name);
                [CCode (cname = "vala_xcb_intern_atom")]
-               public InternAtomCookie intern_atom(bool only_if_exists,string name) {
-                       return this.vala_intern_atom(only_if_exists,(uint16)name.length,name);
+               public InternAtomCookie intern_atom (bool only_if_exists, string name) {
+                       return this.vala_intern_atom (only_if_exists, (uint16) name.length, name);
                }
                [CCode (cname = "xcb_intern_atom_unchecked")]
-               private InternAtomCookie vala_intern_atom_unchecked(bool only_if_exists,uint16 len, string name);
+               private InternAtomCookie vala_intern_atom_unchecked (bool only_if_exists, uint16 len, string name);
                [CCode (cname = "vala_xcb_intern_atom_unchecked")]
-               public InternAtomCookie intern_atom_unchecked(bool only_if_exists,string name) {
-                       return this.vala_intern_atom(only_if_exists,(uint16)name.length,name);
+               public InternAtomCookie intern_atom_unchecked (bool only_if_exists, string name) {
+                       return this.vala_intern_atom (only_if_exists, (uint16) name.length, name);
                }
-               public InternAtomReply intern_atom_reply(InternAtomCookie cookie, out GenericError? e);
-               
+               public InternAtomReply? intern_atom_reply (InternAtomCookie cookie, out GenericError? e = null);
+
+               public GetAtomNameCookie get_atom_name (AtomT atom);
+               public GetAtomNameCookie get_atom_name_unchecked (AtomT atom);
+               public GetAtomNameReply? get_atom_name_reply (GetAtomNameCookie cookie, out GenericError? e = null);
+
                [CCode (cname = "xcb_change_property")]
-               private VoidCookie vala_change_property(PropMode mode, Window window, AtomT property, AtomT type, uint8 format, uint32 len, void *data);
+               private VoidCookie vala_change_property (PropMode mode, Window window, AtomT property, AtomT type, uint8 format, uint32 len, void *data);
                [CCode (cname = "vala_xcb_change_property")]
-               public VoidCookie change_property_uint8(PropMode mode, Window window, AtomT property, AtomT type, uint32 len, uint8 *data) {
-                       return this.vala_change_property(mode,window,property,type, 8, len, (void *)data);
+               public VoidCookie change_property_uint8 (PropMode mode, Window window, AtomT property, AtomT type, uint32 len, uint8 *data) {
+                       return this.vala_change_property (mode, window, property, type, 8, len, (void *)data);
                }
-               public VoidCookie change_property_uint16(PropMode mode, Window window, AtomT property, AtomT type, uint32 len, uint16 *data) {
-                       return this.vala_change_property(mode,window,property,type, 16, len, (void *)data);
+               public VoidCookie change_property_uint16 (PropMode mode, Window window, AtomT property, AtomT type, uint32 len, uint16 *data) {
+                       return this.vala_change_property (mode, window, property, type, 16, len, (void *)data);
                }
-               public VoidCookie change_property_uint32(PropMode mode, Window window, AtomT property, AtomT type, uint32 len, uint32 *data) {
-                       return this.vala_change_property(mode,window,property,type, 32, len, (void *)data);
+               public VoidCookie change_property_uint32 (PropMode mode, Window window, AtomT property, AtomT type, uint32 len, uint32 *data) {
+                       return this.vala_change_property (mode, window, property, type, 32, len, (void *)data);
                }
-               public VoidCookie change_property_atom(PropMode mode, Window window, AtomT property, AtomT type, uint32 len, AtomT *data) {
-                       return this.vala_change_property(mode,window,property,type, 32, len, (void *)data);
+               public VoidCookie change_property_atom (PropMode mode, Window window, AtomT property, AtomT type, uint32 len, AtomT *data) {
+                       return this.vala_change_property (mode, window, property, type, 32, len, (void *)data);
                }
-               public VoidCookie change_property_string(PropMode mode, Window window, AtomT property, AtomT type, string data) {
-                       return this.vala_change_property(mode,window,property,type, 8, data.length, (void *)data.data);
+               public VoidCookie change_property_string (PropMode mode, Window window, AtomT property, AtomT type, string data) {
+                       return this.vala_change_property (mode, window, property, type, 8, data.length, (void *)data.data);
                }
-               
+
                [CCode (cname = "xcb_change_property_checked")]
-               private VoidCookie vala_change_property_checked(PropMode mode, Window window, AtomT property, AtomT type, uint8 format, uint32 len, void *data);
+               private VoidCookie vala_change_property_checked (PropMode mode, Window window, AtomT property, AtomT type, uint8 format, uint32 len, void *data);
                [CCode (cname = "vala_xcb_change_property_checked")]
-               public VoidCookie change_property_checked_uint8(PropMode mode, Window window, AtomT property, AtomT type, uint32 len, uint8 *data) {
-                       return this.vala_change_property(mode,window,property,type, 8, len, (void *)data);
+               public VoidCookie change_property_checked_uint8 (PropMode mode, Window window, AtomT property, AtomT type, uint32 len, uint8 *data) {
+                       return this.vala_change_property (mode, window, property, type, 8, len, (void *)data);
                }
-               public VoidCookie change_property_checked_uint16(PropMode mode, Window window, AtomT property, AtomT type, uint32 len, uint16 *data) {
-                       return this.vala_change_property(mode,window,property,type, 16, len, (void *)data);
+               public VoidCookie change_property_checked_uint16 (PropMode mode, Window window, AtomT property, AtomT type, uint32 len, uint16 *data) {
+                       return this.vala_change_property (mode, window, property, type, 16, len, (void *)data);
                }
-               public VoidCookie change_property_checked_uint32(PropMode mode, Window window, AtomT property, AtomT type, uint32 len, uint32 *data) {
-                       return this.vala_change_property(mode,window,property,type, 32, len, (void *)data);
+               public VoidCookie change_property_checked_uint32 (PropMode mode, Window window, AtomT property, AtomT type, uint32 len, uint32 *data) {
+                       return this.vala_change_property (mode, window, property, type, 32, len, (void *)data);
                }
-               public VoidCookie change_property_checked_atom(PropMode mode, Window window, AtomT property, AtomT type, uint32 len, AtomT *data) {
-                       return this.vala_change_property(mode,window,property,type, 32, len, (void *)data);
+               public VoidCookie change_property_checked_atom (PropMode mode, Window window, AtomT property, AtomT type, uint32 len, AtomT *data) {
+                       return this.vala_change_property (mode, window, property, type, 32, len, (void *)data);
                }
-               public VoidCookie change_property_checked_string(PropMode mode, Window window, AtomT property, AtomT type, string data) {
-                       return this.vala_change_property(mode,window,property,type, 8, data.length, (void *)data.data);
+               public VoidCookie change_property_checked_string (PropMode mode, Window window, AtomT property, AtomT type, string data) {
+                       return this.vala_change_property (mode, window, property, type, 8, data.length, (void *)data.data);
                }
-               
-               public GetPropertyCookie get_property(bool _delete, Window window, AtomT property, AtomT type, uint32 long_offset, uint32 long_length);
-               public GetPropertyCookie get_property_unchecked(bool _delete, Window window, AtomT property, AtomT type, uint32 long_offset, uint32 long_length);
-               public GetPropertyReply ? get_property_reply(GetPropertyCookie cookie, out GenericError? e);
 
-               public VoidCookie configure_window(Window window, uint16 value_mask, uint32 *value_list);
+               public VoidCookie delete_property_checked (Window window, AtomT property);
+               public VoidCookie delete_property (Window window, AtomT property);
+
+               public GetPropertyCookie get_property (bool _delete, Window window, AtomT property, AtomT type, uint32 long_offset, uint32 long_length);
+               public GetPropertyCookie get_property_unchecked (bool _delete, Window window, AtomT property, AtomT type, uint32 long_offset, uint32 long_length);
+               public GetPropertyReply? get_property_reply (GetPropertyCookie cookie, out GenericError? e = null);
+
+               public ListPropertiesCookie list_properties (Window window);
+               public ListPropertiesCookie list_properties_unchecked (Window window);
+               public ListPropertiesReply? list_properties_reply (ListPropertiesCookie cookie, out GenericError? e = null);
+
+               public VoidCookie configure_window (Window window, uint16 value_mask, uint32 *value_list);
+               public VoidCookie configure_window_checked (Window window, uint16 value_mask, uint32 *value_list);
                
-               public VoidCookie reparent_window(Window window, Window parent, uint16 x, uint16 y);
-               public VoidCookie reparent_window_checked(Window window, Window parent, uint16 x, uint16 y);
+               public VoidCookie reparent_window (Window window, Window parent, uint16 x, uint16 y);
+               public VoidCookie reparent_window_checked (Window window, Window parent, uint16 x, uint16 y);
+
+               public GetGeometryCookie get_geometry (Drawable drawable);
+               public GetGeometryCookie get_geometry_unchecked (Drawable drawable);
+               public GetGeometryReply? get_geometry_reply (GetGeometryCookie cookie, out GenericError ? e);
+
+               public VoidCookie set_selection_owner_checked (Window owner, AtomT selection, Timestamp time);
+               public VoidCookie set_selection_owner (Window owner, AtomT selection, Timestamp time);
+
+               public GetSelectionOwnerCookie get_selection_owner (AtomT selection);
+               public GetSelectionOwnerCookie get_selection_owner_unchecked (AtomT selection);
+               public GetSelectionOwnerReply? get_selection_owner_reply (GetSelectionOwnerCookie cookie, out GenericError? e = null);
+
+               public VoidCookie convert_selection_checked (Window requestor, AtomT selection, AtomT target, AtomT property, Timestamp time);
+               public VoidCookie convert_selection (Window requestor, AtomT selection, AtomT target, AtomT property, Timestamp time);
+
+               //send_event
+
+               public GrabPointerCookie grab_pointer (bool owner_events, Window grab_window, uint16 event_mask, GrabMode pointer_mode, GrabMode keyboard_mode, Window confine_to, Cursor cursor, Timestamp time);
+               public GrabPointerCookie grab_pointer_unchecked (bool owner_events, Window grab_window, uint16 event_mask, GrabMode pointer_mode, GrabMode keyboard_mode, Window confine_to, Cursor cursor, Timestamp time);
+               public GrabPointerReply? grab_pointer_reply (GrabPointerCookie cookie, out GenericError? e = null);
+
+               public VoidCookie ungrab_pointer_checked (Timestamp time);
+               public VoidCookie ungrab_pointer (Timestamp time);
+
+               public VoidCookie grab_button_checked (bool owner_events, Window grab_window, uint16 event_mask, GrabMode pointer_mode, GrabMode keyboard_mode, Window confine_to, Cursor cursor, uint8 button, uint16 modifiers);
+               public VoidCookie grab_button (bool owner_events, Window grab_window, uint16 event_mask, GrabMode pointer_mode, GrabMode keyboard_mode, Window confine_to, Cursor cursor, uint8 button, uint16 modifiers);
+
+               public VoidCookie ungrab_button_checked (uint8 button, Window grab_window, uint16 modifiers);
+               public VoidCookie ungrab_button (uint8 button, Window grab_window, uint16 modifiers);
+
+               public VoidCookie change_active_pointer_grab_checked (Cursor cursor, Timestamp time, uint16 event_mask);
+               public VoidCookie change_active_pointer_grab (Cursor cursor, Timestamp time, uint16 event_mask);
+
+               public GrabKeyboardCookie grab_keyboard (bool owner_events, Window grab_window, Timestamp time, GrabMode pointer_mode, GrabMode keyboard_mode);
+               public GrabKeyboardCookie grab_keyboard_unchecked (bool owner_events, Window grab_window, Timestamp time, GrabMode pointer_mode, GrabMode keyboard_mode);
+               public GrabKeyboardReply? grab_keyboard_reply (GrabKeyboardCookie cookie, out GenericError? e = null);
+
+               public VoidCookie ungrab_keyboard_checked (Timestamp time);
+               public VoidCookie ungrab_keyboard (Timestamp time);
+
+               public VoidCookie grab_key_checked (bool owner_events, Window grab_window, uint16 modifiers, Keycode key, GrabMode pointer_mode, GrabMode keyboard_mode);
+               public VoidCookie grab_key (bool owner_events, Window grab_window, uint16 modifiers, Keycode key, GrabMode pointer_mode, GrabMode keyboard_mode);
+
+               public VoidCookie ungrab_key_checked (Keycode key, Window grab_window, uint16 modifiers);
+               public VoidCookie ungrab_key (Keycode key, Window grab_window, uint16 modifiers);
+
+               //allow_events
+
+               public VoidCookie grab_server_checked ();
+               public VoidCookie grab_server ();
+
+               public VoidCookie ungrab_server_checked ();
+               public VoidCookie ungrab_server ();
+
+               public QueryPointerCookie query_pointer (Window window);
+               public QueryPointerCookie query_pointer_unchecked (Window window);
+               public QueryPointerReply? query_pointer_reply (QueryPointerCookie cookie, out GenericError? e = null);
+
+               public GetMotionEventsCookie get_motion_events (Window window, Timestamp start, Timestamp stop);
+               public GetMotionEventsCookie get_motion_events_unchecked (Window window, Timestamp start, Timestamp stop);
+               public GetMotionEventsReply? get_motion_events_reply (GetMotionEventsCookie cookie, out GenericError? e = null);
+
+               public TranslateCoordinatesCookie translate_coordinates (Window src_window, Window dst_window, int16 src_x, int16 src_y);
+               public TranslateCoordinatesCookie translate_coordinates_unchecked (Window src_window, Window dst_window, int16 src_x, int16 src_y);
+               public TranslateCoordinatesReply? translate_coordinates_reply (TranslateCoordinatesCookie cookie, out GenericError? e = null);
+
+               public VoidCookie warp_pointer_checked (Window src_window, Window dst_window, int16 src_x, int16 src_y, uint16 src_width, uint16 src_height, int16 dst_x, int16 dst_y);
+               public VoidCookie warp_pointer (Window src_window, Window dst_window, int16 src_x, int16 src_y, uint16 src_width, uint16 src_height, int16 dst_x, int16 dst_y);
+
+               public VoidCookie set_input_focus_checked (InputFocus revert_to, Window focus, Timestamp time);
+               public VoidCookie set_input_focus (InputFocus revert_to, Window focus, Timestamp time);
+
+               public GetInputFocusCookie get_input_focus ();
+               public GetInputFocusCookie get_input_focus_unchecked ();
+               public GetInputFocusReply? get_input_focus_reply (GetInputFocusCookie cookie, out GenericError? e = null);
+
+               //query_keymap
+
+               [CCode (cname = "xcb_open_font_checked")]
+               private VoidCookie vala_open_font_checked (Font fid, uint16 name_len, string name);
+               [CCode (cname = "vala_xcb_open_font_checked")]
+               public VoidCookie open_font_checked (Font fid, string name) {
+                       return this.vala_open_font_checked (fid, (uint16) name.length, name);
+               }
+               [CCode (cname = "xcb_open_font")]
+               private VoidCookie vala_open_font (Font fid, uint16 name_len, string name);
+               [CCode (cname = "vala_xcb_open_font")]
+               public VoidCookie open_font (Font fid, string name) {
+                       return this.vala_open_font (fid, (uint16) name.length, name);
+               }
+
+               public VoidCookie close_font_checked (Font fid);
+               public VoidCookie close_font (Font fid);
+
+               public QueryFontCookie query_font (Fontable font);
+               public QueryFontCookie query_font_unchecked (Fontable font);
+               public QueryFontReply? query_font_reply (QueryFontCookie cookie, out GenericError? e = null);
+
+               /*[CCode (cname = "xcb_query_text_extents")]
+               private QueryTextExtentsCookie vala_query_text_extents (Fontable font, uint32 string_len, Char2b* s);
+               [CCode (cname = "vala_xcb_query_text_extents")]
+               public QueryTextExtentsCookie query_text_extents (Fontable font, uint16[] s) {
+                       this.vala_query_text_extents (font, s.length, s);
+               }
+               [CCode (cname = "xcb_query_text_extents_unchecked")]
+               private QueryTextExtentsCookie vala_query_text_extents_unchecked (Fontable font, uint32 string_len, Char2b* s);
+               [CCode (cname = "vala_xcb_query_text_extents_unchecked")]
+               public QueryTextExtentsCookie query_text_extents_unchecked (Fontable font, uint16[] s) { // FIXME: How to handle Char2b?
+                       this.vala_query_text_extents_unchecked (font, s.length, s);
+               }
+               public QueryTextExtentsReply? query_text_extents_reply (QueryTextExtentsCookie cookie, out GenericError? e = null);*/
+
+               [CCode (cname = "xcb_list_fonts")]
+               private ListFontsCookie vala_list_fonts (uint16 max_names, uint16 pattern_len, string pattern);
+               [CCode (cname = "vala_xcb_list_fonts")]
+               public ListFontsCookie list_fonts (uint16 max_names, string pattern) {
+                       return this.vala_list_fonts (max_names, (uint16) pattern.length, pattern);
+               }
+               [CCode (cname = "xcb_list_fonts_unchecked")]
+               private ListFontsCookie vala_list_fonts_unchecked (uint16 max_names, uint16 pattern_len, string pattern);
+               [CCode (cname = "vala_xcb_list_fonts_unchecked")]
+               public ListFontsCookie list_fonts_unchecked (uint16 max_names, string pattern) {
+                       return this.vala_list_fonts_unchecked (max_names, (uint16) pattern.length, pattern);
+               }
+               public ListFontsReply? list_fonts_reply (ListFontsCookie cookie, out GenericError? e = null);
+
+               [CCode (cname = "xcb_list_fonts_with_info")]
+               private ListFontsWithInfoCookie vala_list_fonts_with_info (uint16 max_names, uint16 pattern_len, string pattern);
+               [CCode (cname = "vala_xcb_list_fonts_with_info")]
+               public ListFontsWithInfoCookie list_fonts_with_info (uint16 max_names, string pattern) {
+                       return this.vala_list_fonts_with_info (max_names, (uint16) pattern.length, pattern);
+               }
+               [CCode (cname = "xcb_list_fonts_with_info_unchecked")]
+               private ListFontsWithInfoCookie vala_list_fonts_with_info_unchecked (uint16 max_names, uint16 pattern_len, string pattern);
+               [CCode (cname = "vala_xcb_list_fonts_with_info_unchecked")]
+               public ListFontsWithInfoCookie list_fonts_with_info_unchecked (uint16 max_names, string pattern) {
+                       return this.vala_list_fonts_with_info_unchecked (max_names, (uint16) pattern.length, pattern);
+               }
+               public ListFontsWithInfoReply? list_fonts_with_info_reply (ListFontsWithInfoCookie cookie, out GenericError? e = null);
+
+               //set_font_path
+
+               public GetFontPathCookie get_font_path ();
+               public GetFontPathCookie get_font_path_unchecked ();
+               public GetFontPathReply? get_font_path_reply (GetFontPathCookie cookie, out GenericError? e = null);
+
+               public VoidCookie create_pixmap_checked (uint8 depth, Pixmap pid, Drawable drawable, uint16 width, uint16 height);
+               public VoidCookie create_pixmap (uint8 depth, Pixmap pid, Drawable drawable, uint16 width, uint16 height);
+
+               public VoidCookie free_pixmap_checked (Pixmap pid);
+               public VoidCookie free_pixmap (Pixmap pid);
+
+               public VoidCookie create_gc_checked (GContext cid, Drawable drawable, uint32 value_mask = 0, [CCode (array_length = false)] uint32[]? value_list = null);
+               public VoidCookie create_gc (GContext cid, Drawable drawable, uint32 value_mask = 0, [CCode (array_length = false)] uint32[]? value_list = null);
+
+               public VoidCookie change_gc_checked (GContext gc, uint32 value_mask, [CCode (array_length = false)] uint32[]? value_list);
+               public VoidCookie change_gc (GContext gc, uint32 value_mask, [CCode (array_length = false)] uint32[]? value_list);
+
+               public VoidCookie copy_gc_checked (GContext src_gc, GContext dst_gc, uint32 value_mask);
+               public VoidCookie copy_gc (GContext src_gc, GContext dst_gc, uint32 value_mask);
+
+               public VoidCookie set_dashes_checked (GContext gc, uint16 dash_offset, [CCode (array_length_pos = 2.9, array_length_type = "uint16_t")] uint8[] dashes);
+               public VoidCookie set_dashes (GContext gc, uint16 dash_offset, [CCode (array_length_pos = 2.9, array_length_type = "uint16_t")] uint8[] dashes);
+
+               public VoidCookie set_clip_rectangles_checked (ClipOrdering ordering, GContext gc, int16 clip_x_origin, int16 clip_y_origin, [CCode (array_length_pos = 4.9, array_length_type = "uint32_t")] Rectangle[] rectangles);
+               public VoidCookie set_clip_rectangles (ClipOrdering ordering, GContext gc, int16 clip_x_origin, int16 clip_y_origin, [CCode (array_length_pos = 4.9, array_length_type = "uint32_t")] Rectangle[] rectangles);
+
+               public VoidCookie free_gc_checked (GContext gc);
+               public VoidCookie free_gc (GContext gc);
+
+               public VoidCookie clear_area_checked (uint8 exposures, Window window, int16 x, int16 y, uint16 width, uint16 height);
+               public VoidCookie clear_area (uint8 exposures, Window window, int16 x, int16 y, uint16 width, uint16 height);
+
+               public VoidCookie copy_area_checked (Drawable src_drawable, Drawable dst_drawable, GContext gc, int16 src_x, int16 src_y, int16 dst_x, int16 dst_y, uint16 width, uint16 height);
+               public VoidCookie copy_area (Drawable src_drawable, Drawable dst_drawable, GContext gc, int16 src_x, int16 src_y, int16 dst_x, int16 dst_y, uint16 width, uint16 height);
+
+               public VoidCookie copy_plane_checked (Drawable src_drawable, Drawable dst_drawable, GContext gc, int16 src_x, int16 src_y, int16 dst_x, int16 dst_y, uint16 width, uint16 height, uint32 bit_plane);
+               public VoidCookie copy_plane (Drawable src_drawable, Drawable dst_drawable, GContext gc, int16 src_x, int16 src_y, int16 dst_x, int16 dst_y, uint16 width, uint16 height, uint32 bit_plane);
+
+               public VoidCookie poly_point_checked (CoordMode coordinate_mode, Drawable drawable, GContext gc, [CCode (array_length_pos = 3.9, array_length_type = "uint32_t")] Point[] points);
+               public VoidCookie poly_point (CoordMode coordinate_mode, Drawable drawable, GContext gc, [CCode (array_length_pos = 3.9, array_length_type = "uint32_t")] Point[] points);
+
+               public VoidCookie poly_line_checked (CoordMode coordinate_mode, Drawable drawable, GContext gc, [CCode (array_length = false)] Point[] points);
+               public VoidCookie poly_line (CoordMode coordinate_mode, Drawable drawable, GContext gc, [CCode (array_length_pos = 3.9, array_length_type = "uint32_t")] Point[] points);
+
+               public VoidCookie poly_segment_checked (Drawable drawable, GContext gc, [CCode (array_length_pos = 2.9, array_length_type = "uint32_t")] Segment[] segments);
+               public VoidCookie poly_segment (Drawable drawable, GContext gc, [CCode (array_length_pos = 2.9, array_length_type = "uint32_t")] Segment[] segments);
+
+               public VoidCookie poly_rectangle_checked (Drawable drawable, GContext gc, [CCode (array_length_pos = 2.9, array_length_type = "uint32_t")] Rectangle[] rectangles);
+               public VoidCookie poly_rectangle (Drawable drawable, GContext gc, [CCode (array_length_pos = 2.9, array_length_type = "uint32_t")] Rectangle[] rectangles);
+
+               public VoidCookie poly_arc_checked (Drawable drawable, GContext gc, [CCode (array_length_pos = 2.9, array_length_type = "uint32_t")] Arc[] arcs);
+               public VoidCookie poly_arc (Drawable drawable, GContext gc, [CCode (array_length_pos = 2.9, array_length_type = "uint32_t")] Arc[] arcs);
+
+               public VoidCookie fill_poly_checked (Drawable drawable, GContext gc, PolyShape shape, CoordMode coordinate_mode, [CCode (array_length_pos = 4.9, array_length_type = "uint32_t")] Point[] points);
+               public VoidCookie fill_poly (Drawable drawable, GContext gc, PolyShape shape, CoordMode coordinate_mode, [CCode (array_length_pos = 4.9, array_length_type = "uint32_t")] Point[] points);
+
+               public VoidCookie poly_fill_rectangle_checked (Drawable drawable, GContext gc, [CCode (array_length_pos = 2.9, array_length_type = "uint32_t")] Rectangle[] rectangles);
+               public VoidCookie poly_fill_rectangle (Drawable drawable, GContext gc, [CCode (array_length_pos = 2.9, array_length_type = "uint32_t")] Rectangle[] rectangles);
+
+               public VoidCookie poly_fill_arc_checked (Drawable drawable, GContext gc, [CCode (array_length_pos = 2.9, array_length_type = "uint32_t")] Arc[] arcs);
+               public VoidCookie poly_fill_arc (Drawable drawable, GContext gc, [CCode (array_length_pos = 2.9, array_length_type = "uint32_t")] Arc[] arcs);
+
+               public VoidCookie put_image_checked (ImageFormat format, Drawable drawable, GContext gc, uint16 width, uint16 height, int16 dst_x, int16 dst_y, uint8 left_pad, uint8 depth, [CCode (array_length_pos = 9.9, array_length_type = "uint32_t")] uint8[] data);
+               public VoidCookie put_image (ImageFormat format, Drawable drawable, GContext gc, uint16 width, uint16 height, int16 dst_x, int16 dst_y, uint8 left_pad, uint8 depth, [CCode (array_length_pos = 9.9, array_length_type = "uint32_t")] uint8[] data);
+
+               public GetImageCookie get_image (ImageFormat format, Drawable drawable, int16 x, int16 y, uint16 width, uint16 height, uint32 plane_mask);
+               public GetImageCookie get_image_unchecked (ImageFormat format, Drawable drawable, int16 x, int16 y, uint16 width, uint16 height, uint32 plane_mask);
+               public GetImageReply? get_image_reply (GetImageCookie cookie, out GenericError? e = null);
+
+               public VoidCookie poly_text_8_checked (Drawable drawable, GContext gc, int16 x, int16 y, [CCode (array_length_pos = 4.9, array_length_type = "uint32_t")] uint8[] items);
+               public VoidCookie poly_text_8 (Drawable drawable, GContext gc, int16 x, int16 y, [CCode (array_length_pos = 4.9, array_length_type = "uint32_t")] uint8[] items);
+
+               public VoidCookie poly_text_16_checked (Drawable drawable, GContext gc, int16 x, int16 y, [CCode (array_length_pos = 4.9, array_length_type = "uint32_t")] uint8[] items);
+               public VoidCookie poly_text_16 (Drawable drawable, GContext gc, int16 x, int16 y, [CCode (array_length_pos = 4.9, array_length_type = "uint32_t")] uint8[] items);
+
+               [CCode (cname = "xcb_image_text_8_checked")]
+               private VoidCookie vala_image_text_8_checked (uint8 string_len, Drawable drawable, GContext gc, int16 x, int16 y, string text);
+               [CCode (cname = "vala_xcb_image_text8_checked")]
+               public VoidCookie image_text_8_checked (Drawable drawable, GContext gc, int16 x, int16 y, string text) {
+                       this.vala_image_text_8_checked ((uint8) text.length, drawable, gc, x, y, text);
+               }
+               [CCode (cname = "xcb_image_text_8")]
+               private VoidCookie vala_image_text_8 (uint8 string_len, Drawable drawable, GContext gc, int16 x, int16 y, string text);
+               [CCode (cname = "vala_xcb_image_text8")]
+               public VoidCookie image_text_8 (Drawable drawable, GContext gc, int16 x, int16 y, string text) {
+                       this.vala_image_text_8 ((uint8) text.length, drawable, gc, x, y, text);
+               }
+
+               //image_text_16
+
+               public VoidCookie create_colormap_checked (bool alloc, Colormap mid, Window window, VisualID visual);
+               public VoidCookie create_colormap (bool alloc, Colormap mid, Window window, VisualID visual);
+
+               public VoidCookie free_colormap_checked (Colormap cmap);
+               public VoidCookie free_colormap (Colormap cmap);
+
+               public VoidCookie copy_colormap_and_free_checked (Colormap mid, Colormap src_cmap);
+               public VoidCookie copy_colormap_and_free (Colormap mid, Colormap src_cmap);
+
+               public VoidCookie install_colormap_checked (Colormap cmap);
+               public VoidCookie install_colormap (Colormap cmap);
+
+               public VoidCookie uninstall_colormap_checked (Colormap cmap);
+               public VoidCookie uninstall_colormap (Colormap cmap);
+
+               public ListInstalledColormapsCookie list_installed_colormaps (Window window);
+               public ListInstalledColormapsCookie list_installed_colormaps_unchecked (Window window);
+               public ListInstalledColormapsReply? list_installed_colormaps_reply (ListInstalledColormapsCookie cookie, out GenericError? e = null);
+
+               public AllocColorCookie alloc_color (Colormap cmap, uint16 red, uint16 green, uint16 blue);
+               public AllocColorCookie alloc_color_unchecked (Colormap cmap, uint16 red, uint16 green, uint16 blue);
+               public AllocColorReply? alloc_color_reply (AllocColorCookie cookie, out GenericError? e = null);
+
+               [CCode (cname = "xcb_alloc_named_color")]
+               private AllocNamedColorCookie vala_alloc_named_color (Colormap cmap, uint16 name_len, string name);
+               [CCode (cname = "vala_xcb_alloc_named_color")]
+               public AllocNamedColorCookie alloc_named_color (Colormap cmap, string name) {
+                       this.vala_alloc_named_color (cmap, (uint16) name.length, name);
+               }
+               [CCode (cname = "xcb_alloc_named_color_unchecked")]
+               private AllocNamedColorCookie vala_alloc_named_color_unchecked (Colormap cmap, uint16 name_len, string name);
+               [CCode (cname = "vala_xcb_alloc_named_color_unchecked")]
+               public AllocNamedColorCookie alloc_named_color_unchecked (Colormap cmap, string name) {
+                       this.vala_alloc_named_color_unchecked (cmap, (uint16) name.length, name);
+               }
+               public AllocNamedColorReply? alloc_named_color_reply (AllocNamedColorCookie cookie, out GenericError? e = null);
+
+               public AllocColorCellsCookie alloc_color_cells (bool contiguous, Colormap cmap, uint16 colors, uint16 planes);
+               public AllocColorCellsCookie alloc_color_cells_unchecked (bool contiguous, Colormap cmap, uint16 colors, uint16 planes);
+               public AllocColorCellsReply? alloc_color_cells_reply (AllocColorCellsCookie cookie, out GenericError? e = null);
+
+               public AllocColorPlanesCookie alloc_color_planes (bool contiguous, Colormap cmap, uint16 colors, uint16 reds, uint16 greens, uint16 blues);
+               public AllocColorPlanesCookie alloc_color_planes_unchecked (bool contiguous, Colormap cmap, uint16 colors, uint16 reds, uint16 greens, uint16 blues);
+               public AllocColorPlanesReply? alloc_color_planes_reply (AllocColorPlanesCookie cookie, out GenericError? e = null);
+
+               public VoidCookie free_colors_checked (Colormap cmap, uint32 plane_mask, [CCode (array_length_pos = 2.9, array_length_type = "uint32_t")] uint32[] pixels);
+               public VoidCookie free_colors (Colormap cmap, uint32 plane_mask, [CCode (array_length_pos = 2.9, array_length_type = "uint32_t")] uint32[] pixels);
+
+               public VoidCookie store_colors_checked (Colormap cmap, [CCode (array_length_pos = 1.9, array_length_type = "uint32_t")] Coloritem[] items);
+               public VoidCookie store_colors (Colormap cmap, [CCode (array_length_pos = 1.9, array_length_type = "uint32_t")] Coloritem[] items);
+
+               [CCode (cname = "xcb_store_named_color_checked")]
+               private VoidCookie vala_store_named_color_checked (ColorFlag flags, Colormap cmap, uint32 pixel, uint16 name_len, string name);
+               [CCode (cname = "vala_xcb_store_named_color_checked")]
+               public VoidCookie store_named_color_checked (ColorFlag flags, Colormap cmap, uint32 pixel, string name) {
+                       this.vala_store_named_color_checked (flags, cmap, pixel, (uint16) name.length, name);
+               }
+               [CCode (cname = "xcb_store_named_color")]
+               private VoidCookie vala_store_named_color (ColorFlag flags, Colormap cmap, uint32 pixel, uint16 name_len, string name);
+               [CCode (cname = "vala_xcb_store_named_color")]
+               public VoidCookie store_named_color (ColorFlag flags, Colormap cmap, uint32 pixel, string name) {
+                       this.vala_store_named_color (flags, cmap, pixel, (uint16) name.length, name);
+               }
 
-               public GetGeometryCookie get_geometry(Drawable drawable);
-               public GetGeometryCookie get_geometry_unchecked(Drawable drawable);
-               public GetGeometryReply ? get_geometry_reply(GetGeometryCookie cookie, out GenericError ? e);
+               public QueryColorsCookie query_colors (Colormap cmap, [CCode (array_length_pos = 1.9, array_length_type = "uint32_t")] uint32[] pixels);
+               public QueryColorsCookie query_colors_unchecked (Colormap cmap, [CCode (array_length_pos = 1.9, array_length_type = "uint32_t")] uint32[] pixels);
+               public QueryColorsReply? query_colors_reply (QueryColorsCookie cookie, out GenericError? e = null);
+
+               [CCode (cname = "xcb_lookup_color")]
+               private LookupColorCookie vala_lookup_color (Colormap cmap, uint16 name_len, string name);
+               [CCode (cname = "vala_xcb_lookup_color")]
+               public LookupColorCookie lookup_color (Colormap cmap, string name) {
+                       this.vala_lookup_color (cmap, (uint16) name.length, name);
+               }
+               [CCode (cname = "xcb_lookup_color_unchecked")]
+               private LookupColorCookie vala_lookup_color_unchecked (Colormap cmap, uint16 name_len, string name);
+               [CCode (cname = "vala_xcb_lookup_color_unchecked")]
+               public LookupColorCookie lookup_color_unchecked (Colormap cmap, string name) {
+                       this.vala_lookup_color_unchecked (cmap, (uint16) name.length, name);
+               }
+               public LookupColorReply? lookup_color_reply (LookupColorCookie cookie, out GenericError? e = null);
+
+               public VoidCookie create_cursor_checked (Cursor cid, Pixmap source, Pixmap mask, uint16 fore_red, uint16 fore_green, uint16 fore_blue, uint16 back_red, uint16 back_green, uint16 back_blue, uint16 x, uint16 y);
+               public VoidCookie create_cursor (Cursor cid, Pixmap source, Pixmap mask, uint16 fore_red, uint16 fore_green, uint16 fore_blue, uint16 back_red, uint16 back_green, uint16 back_blue, uint16 x, uint16 y);
+
+               public VoidCookie create_glyph_cursor_checked (Cursor cid, Font source_font, Font mask_font, uint16 source_char, uint16 mask_char, uint16 fore_red, uint16 fore_green, uint16 fore_blue, uint16 back_red, uint16 back_green, uint16 back_blue);
+               public VoidCookie create_glyph_cursor (Cursor cid, Font source_font, Font mask_font, uint16 source_char, uint16 mask_char, uint16 fore_red, uint16 fore_green, uint16 fore_blue, uint16 back_red, uint16 back_green, uint16 back_blue);
+
+               public VoidCookie free_cursor_checked (Cursor cursor);
+               public VoidCookie free_cursor (Cursor cursor);
+
+               public VoidCookie recolor_cursor_checked (Cursor cursor, uint16 fore_red, uint16 fore_green, uint16 fore_blue, uint16 back_red, uint16 back_green, uint16 back_blue);
+               public VoidCookie recolor_cursor (Cursor cursor, uint16 fore_red, uint16 fore_green, uint16 fore_blue, uint16 back_red, uint16 back_green, uint16 back_blue);
+
+               public QueryBestSizeCookie query_best_size (uint8 _class, Drawable drawable, uint16 width, uint16 height); // FIXME: Is there an enum for class?
+               public QueryBestSizeCookie query_best_size_unchecked (uint8 _class, Drawable drawable, uint16 width, uint16 height);
+               public QueryBestSizeReply? query_best_size_reply (QueryBestSizeCookie cookie, out GenericError? e = null);
+
+               [CCode (cname = "xcb_query_extension")]
+               private QueryExtensionCookie vala_query_extension (uint16 name_len, string name);
+               [CCode (cname = "vala_xcb_query_extension")]
+               public QueryExtensionCookie query_extension (string name) {
+                       return this.vala_query_extension ((uint16) name.length, name);
+               }
+               [CCode (cname = "xcb_query_extension_unchecked")]
+               private QueryExtensionCookie vala_query_extension_unchecked (uint16 name_len, string name);
+               [CCode (cname = "vala_xcb_query_extension_unchecked")]
+               public QueryExtensionCookie query_extension_unchecked (string name) {
+                       return this.vala_query_extension_unchecked ((uint16) name.length, name);
+               }
+               public QueryExtensionReply? query_extension_reply (QueryExtensionCookie cookie, out GenericError? e = null);
+
+               public ListExtensionsCookie list_extensions ();
+               public ListExtensionsCookie list_extensions_unchecked ();
+               public ListExtensionsReply? list_extensions_reply (ListExtensionsCookie cookie, out GenericError? e = null);
+
+               //change_keyboard_mapping
+
+               //get_keyboard_mapping
+
+               //change_keyboard_control
+
+               //get_keyboard_control
+
+               public VoidCookie bell_checked (int8 percent);
+               public VoidCookie bell (int8 percent);
+
+               //change_pointer_control
+
+               //get_pointer_control
+
+               public VoidCookie set_screen_saver_checked (int16 timeout, int16 interval, uint8 prefer_blanking, uint8 allow_exposures);
+               public VoidCookie set_screen_saver (int16 timeout, int16 interval, uint8 prefer_blanking, uint8 allow_exposures);
+
+               public GetScreenSaverCookie get_screen_saver ();
+               public GetScreenSaverCookie get_screen_saver_unchecked ();
+               public GetScreenSaverReply? get_screen_saver_reply (GetScreenSaverCookie cookie, out GenericError? e = null);
+
+               public VoidCookie change_hosts_checked (HostMode mode, Family family, [CCode (array_length_pos = 2.9, array_length_type = "uint16_t")] uint8[] address);
+               public VoidCookie change_hosts (HostMode mode, Family family, [CCode (array_length_pos = 2.9, array_length_type = "uint16_t")] uint8[] address);
+
+               public ListHostsCookie list_hosts ();
+               public ListHostsCookie list_hosts_unchecked ();
+               public ListHostsReply? list_hosts_reply (ListHostsCookie cookie, out GenericError? e = null);
+
+               public VoidCookie set_access_control_checked (AccessControl mode);
+               public VoidCookie set_access_control (AccessControl mode);
+
+               public VoidCookie set_close_down_mode_checked (CloseDown mode);
+               public VoidCookie set_close_down_mode (CloseDown mode);
+
+               public VoidCookie kill_client_checked (uint32 resource);
+               public VoidCookie kill_client (uint32 resource);
+
+               public VoidCookie rotate_properties_checked (Window window, int16 delta, [CCode (array_length_pos = 1.9, array_length_type = "uint16_t")] AtomT[] atoms);
+               public VoidCookie rotate_properties (Window window, int16 delta, [CCode (array_length_pos = 1.9, array_length_type = "uint16_t")] AtomT[] atoms);
+
+               public VoidCookie force_screen_saver_checked (ScreenSaver mode);
+               public VoidCookie force_screen_saver (ScreenSaver mode);
+
+               //set_pointer_mapping
+
+               //get_pointer_mapping
+
+               //set_modifier_mapping
+
+               //get_modifier_mapping
+
+               public VoidCookie no_operation_checked ();
+               public VoidCookie no_operation ();
        }
+
+       [CCode (cprefix = "XCB_CONN_", cname = "int", has_type_id = false)]
+       public enum ConnectionError
+       {
+               ERROR,
+               CLOSED_EXT_NOTSUPPORTED,
+               CLOSED_MEM_INSUFFICIENT,
+               CLOSED_REQ_LEN_EXCEED,
+               CLOSED_PARSE_ERR,
+               CLOSED_INVALID_SCREEN,
+               CLOSED_FDPASSING_FAILED,
+       }
+
        [SimpleType]
        [IntegerType (rank = 9)]
        [CCode (cname = "xcb_get_geometry_cookie_t", has_type_id = false)]
@@ -135,13 +584,6 @@ namespace Xcb {
                public uint16     width;
                public uint16     height;
                public uint16     border_width;
-               public uint8      pad0[2];
-       }
-
-       [SimpleType]
-       [IntegerType (rank = 9)]
-       [CCode (cname = "xcb_intern_atom_cookie_t", has_type_id = false)]
-       public struct InternAtomCookie {
        }
 
        [SimpleType]
@@ -171,7 +613,6 @@ namespace Xcb {
                public uint32       all_event_masks;
                public uint32       your_event_mask;
                public uint16       do_not_propagate_mask;
-               public uint8        pad0[2];
        }
 
        [SimpleType]
@@ -180,40 +621,786 @@ namespace Xcb {
        public struct GetPropertyCookie {
        }
 
-       [Compact]
-       [CCode (cname = "xcb_get_property_reply_t", ref_function = "", unref_function = "free")]
-       public class GetPropertyReply {
-               public uint8 format;
-               public Atom type;
-               [CCode (cname = "xcb_get_property_value_length")]
-               public int32 value_length();
-               [CCode (cname = "xcb_get_property_value")]
-               public unowned void *value();
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_intern_atom_cookie_t", has_type_id = false)]
+       public struct InternAtomCookie {
        }
 
        [Compact]
        [CCode (cname = "xcb_intern_atom_reply_t", ref_function = "", unref_function = "free")]
        public class InternAtomReply {
                private uint8    response_type;
-               private uint8    pad0;
                private uint16   sequence;
                public  uint32   length;
                public  AtomT    atom;
        }
-       
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_get_atom_name_cookie_t", has_type_id = false)]
+       public struct GetAtomNameCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_get_atom_name_reply_t", ref_function = "", unref_function = "free")]
+       public class GetAtomNameReply {
+               private uint8 response_type;
+               private uint16 sequence;
+               public uint32 length;
+               public uint16 name_len;
+               [CCode (cname = "xcb_get_atom_name_name")]
+               private unowned string vala_name ();
+               public string name { owned get { return "%.*s".printf (name_len, vala_name ()); } }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_list_properties_cookie_t", has_type_id = false)]
+       public struct ListPropertiesCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_list_properties_reply_t", ref_function = "", unref_function = "free")]
+       public class ListPropertiesReply {
+               private uint16 atoms_len;
+               [CCode (cname = "xcb_list_properties_atoms")]
+               private Atom* vala_atoms ();
+               public Atom[] atoms
+               {
+                       get
+                       {
+                               unowned Atom[] res = (Atom[]) vala_atoms ();
+                               res.length = atoms_len;
+                               return res;
+                       }
+               }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_get_selection_owner_cookie_t", has_type_id = false)]
+       public struct GetSelectionOwnerCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_get_selection_owner_reply_t", ref_function = "", unref_function = "free")]
+       public class GetSelectionOwnerReply {
+               public Window owner;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_grab_pointer_cookie_t", has_type_id = false)]
+       public struct GrabPointerCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_grab_pointer_reply_t", ref_function = "", unref_function = "free")]
+       public class GrabPointerReply {
+               public GrabStatus status;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_grab_keyboard_cookie_t", has_type_id = false)]
+       public struct GrabKeyboardCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_grab_keyboard_reply_t", ref_function = "", unref_function = "free")]
+       public class GrabKeyboardReply {
+               public GrabStatus status;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_query_pointer_cookie_t", has_type_id = false)]
+       public struct QueryPointerCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_query_pointer_reply_t", ref_function = "", unref_function = "free")]
+       public class QueryPointerReply {
+               public uint8 same_screen;
+               public Window root;
+               public Window child;
+               public int16 root_x;
+               public int16 root_y;
+               public int16 win_x;
+               public int16 win_y;
+               public uint16 mask;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_get_motion_events_cookie_t", has_type_id = false)]
+       public struct GetMotionEventsCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_get_motion_events_reply_t", ref_function = "", unref_function = "free")]
+       public class GetMotionEventsReply {
+               private uint32 events_len;
+               [CCode (cname = "xcb_get_motion_events_events")]
+               private Timecoord* vala_events ();
+               public Timecoord[] events
+               {
+                       get
+                       {
+                               unowned Timecoord[] res = (Timecoord[]) vala_events ();
+                               res.length = (int) events_len;
+                               return res;
+                       }
+               }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_get_image_cookie_t", has_type_id = false)]
+       public struct GetImageCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_get_image_reply_t", ref_function = "", unref_function = "")]
+       public class GetImageReply {
+               public uint8 depth;
+               public VisualID visual;
+               private uint32 length;
+               [CCode (cname = "xcb_get_image_data")]
+               public uint8* vala_data ();
+               public uint8[] data
+               {
+                       get
+                       {
+                               unowned uint8[] res = (uint8[]) vala_data ();
+                               res.length = (int) length;
+                               return res;
+                       }
+               }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_list_installed_colormaps_cookie_t", has_type_id = false)]
+       public struct ListInstalledColormapsCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_list_installed_colormaps_reply_t", ref_function = "", unref_function = "free")]
+       public class ListInstalledColormapsReply {
+               private uint16 cmaps_len;
+               [CCode (cname = "xcb_list_installed_colormaps_cmaps")]
+               private Colormap* vala_cmaps ();
+               public Colormap[] cmaps
+               {
+                       get
+                       {
+                               unowned Colormap[] res = (Colormap[]) vala_cmaps ();
+                               res.length = (int) cmaps_len;
+                               return res;
+                       }
+               }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_alloc_color_cookie_t", has_type_id = false)]
+       public struct AllocColorCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_alloc_color_reply_t", ref_function = "", unref_function = "free")]
+       public class AllocColorReply {
+               public uint16 red;
+               public uint16 green;
+               public uint16 blue;
+               public uint32 pixel;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_alloc_named_color_cookie_t", has_type_id = false)]
+       public struct AllocNamedColorCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_alloc_named_color_reply_t", ref_function = "", unref_function = "free")]
+       public class AllocNamedColorReply {
+               public uint32 pixel;
+               public uint16 exact_red;
+               public uint16 exact_green;
+               public uint16 exact_blue;
+               public uint16 visual_red;
+               public uint16 visual_green;
+               public uint16 visual_blue;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_alloc_color_cells_cookie_t", has_type_id = false)]
+       public struct AllocColorCellsCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_alloc_color_cells_reply_t", ref_function = "", unref_function = "free")]
+       public class AllocColorCellsReply {
+               private uint16 pixels_len;
+               [CCode (cname = "xcb_alloc_color_cells_pixels")]
+               private uint32* vala_pixels ();
+               public uint32[] pixels
+               {
+                       get {
+                               unowned uint32[] res = (uint32[]) vala_pixels ();
+                               res.length = (int) pixels_len;
+                               return res;
+                       }
+               }
+               private uint16 masks_len;
+               [CCode (cname = "xcb_alloc_color_cells_masks")]
+               private uint32* vala_masks ();
+               public uint32[] masks
+               {
+                       get {
+                               unowned uint32[] res = (uint32[]) vala_masks ();
+                               res.length = (int) masks_len;
+                               return res;
+                       }
+               }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_alloc_color_planes_cookie_t", has_type_id = false)]
+       public struct AllocColorPlanesCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_alloc_color_planes_reply_t", ref_function = "", unref_function = "free")]
+       public class AllocColorPlanesReply {
+               public uint32 red_mask;
+               public uint32 green_mask;
+               public uint32 blue_mask;
+               private uint16 pixels_len;
+               [CCode (cname = "xcb_alloc_color_planes_pixels")]
+               private uint32* vala_pixels ();
+               public uint32[] pixels
+               {
+                       get {
+                               unowned uint32[] res = (uint32[]) vala_pixels ();
+                               res.length = (int) pixels_len;
+                               return res;
+                       }
+               }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_query_colors_cookie_t", has_type_id = false)]
+       public struct QueryColorsCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_query_colors_reply_t", ref_function = "", unref_function = "free")]
+       public class QueryColorsReply {
+               private uint16 colors_len;
+               [CCode (cname = "xcb_query_colors_colors")]
+               private RGB* vala_colors ();
+               public RGB[] colors
+               {
+                       get {
+                               unowned RGB[] res = (RGB[]) vala_colors ();
+                               res.length = (int) colors_len;
+                               return res;
+                       }
+               }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_lookup_color_cookie_t", has_type_id = false)]
+       public struct LookupColorCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_lookup_color_reply_t", ref_function = "", unref_function = "free")]
+       public class LookupColorReply {
+               public uint16 exact_red;
+               public uint16 exact_green;
+               public uint16 exact_blue;
+               public uint16 visual_red;
+               public uint16 visual_green;
+               public uint16 visual_blue;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_query_best_size_cookie_t", has_type_id = false)]
+       public struct QueryBestSizeCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_query_best_size_reply_t", ref_function = "", unref_function = "free")]
+       public class QueryBestSizeReply {
+               public uint16 width;
+               public uint16 height;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_query_extension_cookie_t", has_type_id = false)]
+       public struct QueryExtensionCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_query_extension_reply_t", ref_function = "", unref_function = "free")]
+       public class QueryExtensionReply {
+               public bool present;
+               public uint8 major_opcode;
+               public uint8 first_event;
+               public uint8 first_error;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_list_extensions_cookie_t", has_type_id = false)]
+       public struct ListExtensionsCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_list_extensions_reply_t", ref_function = "", unref_function = "free")]
+       public class ListExtensionsReply {
+               private uint8 names_len;
+               [CCode (cname = "xcb_list_extensions_names_iterator")]
+               private StrIterator names_iterator ();
+               public string[] names
+               {
+                       owned get
+                       {
+                               var value = new string[names_len];
+                               var iter = names_iterator ();
+                               for (var i = 0; i < value.length; i++)
+                               {
+                                       value[i] = iter.data.name;
+                                       StrIterator.next (ref iter);
+                               }
+                               return value;
+                       }
+               }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_get_keyboard_mapping_cookie_t", has_type_id = false)]
+       public struct GetKeyboardMappingCookie {
+       }
+
+       //[Compact]
+       //[CCode (cname = "xcb_get_keyboard_mapping_reply_t", ref_function = "", unref_function = "free")]
+       //public class GetKeyboardMappingReply {
+       //}
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_get_keyboard_control_cookie_t", has_type_id = false)]
+       public struct GetKeyboardControlCookie {
+       }
+
+       //[Compact]
+       //[CCode (cname = "xcb_get_keyboard_control_reply_t", ref_function = "", unref_function = "free")]
+       //public class GetKeyboardControlReply {
+       //}
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_get_pointer_control_cookie_t", has_type_id = false)]
+       public struct GetPointerControlCookie {
+       }
+
+       //[Compact]
+       //[CCode (cname = "xcb_get_pointer_control_reply_t", ref_function = "", unref_function = "free")]
+       //public class GetPointerControlReply {
+       //}
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_get_screen_saver_cookie_t", has_type_id = false)]
+       public struct GetScreenSaverCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_get_screen_saver_reply_t", ref_function = "", unref_function = "free")]
+       public class GetScreenSaverReply {
+               public uint16 timeout;
+               public uint16 interval;
+               public uint8 prefer_blanking;
+               public uint8 allow_exposures;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_list_hosts_cookie_t", has_type_id = false)]
+       public struct ListHostsCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_list_hosts_reply_t", ref_function = "", unref_function = "free")]
+       public class ListHostsReply {
+               private uint16 hosts_len;
+               [CCode (cname = "xcb_list_hosts_hosts_iterator")]
+               private HostIterator hosts_iterator ();
+               public Host[] hosts {
+                       owned get
+                       {
+                               var value = new Host[hosts_len];
+                               var iter = hosts_iterator ();
+                               for (var i = 0; i < value.length; i++)
+                               {
+                                       value[i] = iter.data;
+                                       HostIterator.next (ref iter);
+                               }
+                               return value;
+                       }
+               }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_set_pointer_mapping_cookie_t", has_type_id = false)]
+       public struct SetPointerMappingCookie {
+       }
+
+       //[Compact]
+       //[CCode (cname = "xcb_set_pointer_mapping_reply_t", ref_function = "", unref_function = "free")]
+       //public class SetPointerMappingReply {
+       //}
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_get_pointer_mapping_cookie_t", has_type_id = false)]
+       public struct GetPointerMappingCookie {
+       }
+
+       //[Compact]
+       //[CCode (cname = "xcb_get_pointer_mapping_reply_t", ref_function = "", unref_function = "free")]
+       //public class GetPointerMappingReply {
+       //}
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_set_modifier_mapping_cookie_t", has_type_id = false)]
+       public struct SetModifierMappingCookie {
+       }
+
+       //[Compact]
+       //[CCode (cname = "xcb_set_modifier_mapping_reply_t", ref_function = "", unref_function = "free")]
+       //public class SetModifierMappingReply {
+       //}
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_get_modifier_mapping_cookie_t", has_type_id = false)]
+       public struct GetModifierMappingCookie {
+       }
+
+       //[Compact]
+       //[CCode (cname = "xcb_get_modifier_mapping_reply_t", ref_function = "", unref_function = "free")]
+       //public class GetModifierMappingReply {
+       //}
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_translate_coordinates_cookie_t", has_type_id = false)]
+       public struct TranslateCoordinatesCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_translate_coordinates_reply_t", ref_function = "", unref_function = "free")]
+       public class TranslateCoordinatesReply {
+               public uint8 same_screen;
+               public Window child;
+               public int16 dst_x;
+               public int16 dst_y;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_get_input_focus_cookie_t", has_type_id = false)]
+       public struct GetInputFocusCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_get_input_focus_reply_t", ref_function = "", unref_function = "free")]
+       public class GetInputFocusReply {
+               public InputFocus revert_to;
+               public Window focus;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_query_keymap_cookie_t", has_type_id = false)]
+       public struct QueryKeymapCookie {
+       }
+
+       //[Compact]
+       //[CCode (cname = "xcb_query_keymap_reply_t", ref_function = "", unref_function = "free")]
+       //public class QueryKeymapReply {
+       //}
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_query_font_cookie_t", has_type_id = false)]
+       public struct QueryFontCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_query_font_reply_t", ref_function = "", unref_function = "free")]
+       public class QueryFontReply {
+               public Charinfo min_bounds;
+               public Charinfo max_bounds;
+               public uint16 min_char_or_byte2;
+               public uint16 max_char_or_byte2;
+               public uint16 default_char;
+               public uint8 draw_direction;
+               public uint8 min_byte1;
+               public uint8 max_byte1;
+               public uint8 all_chars_exist;
+               public int16 font_ascent;
+               public int16 font_descent;
+               private uint16 properties_len;
+               [CCode (cname = "xcb_query_font_properties")]
+               private Fontprop* vala_properties ();
+               public Fontprop[] properties
+               {
+                       get
+                       {
+                               unowned Fontprop[] res = (Fontprop[]) vala_properties ();
+                               res.length = properties_len;
+                               return res;
+                       }
+               }
+               private uint32 char_infos_len;
+               [CCode (cname = "xcb_query_font_char_infos")]
+               private Charinfo* vala_char_infos ();
+               public Charinfo[] char_infos
+               {
+                       get
+                       {
+                               unowned Charinfo[] res = (Charinfo[]) vala_char_infos ();
+                               res.length = (int) char_infos_len;
+                               return res;
+                       }
+               }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_query_text_extents_cookie_t", has_type_id = false)]
+       public struct QueryTextExtentsCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_query_text_extents_reply_t", ref_function = "", unref_function = "free")]
+       public class QueryTextExtentsReply {
+               public FontDraw draw_direction;
+               public int16 font_ascent;
+               public int16 font_descent;
+               public int16 overall_ascent;
+               public int16 overall_descent;
+               public int16 overall_width;
+               public int16 overall_height;
+               public int16 overall_left;
+               public int16 overall_right;
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_list_fonts_cookie_t", has_type_id = false)]
+       public struct ListFontsCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_list_fonts_reply_t", ref_function = "", unref_function = "free")]
+       public class ListFontsReply {
+               private uint16 names_len;
+               [CCode (cname = "xcb_list_fonts_names_iterator")]
+               private StrIterator names_iterator ();
+               public string[] names
+               {
+                       owned get
+                       {
+                               var value = new string[names_len];
+                               var iter = names_iterator ();
+                               for (var i = 0; i < value.length; i++)
+                               {
+                                       value[i] = iter.data.name;
+                                       StrIterator.next (ref iter);
+                               }
+                               return value;
+                       }
+               }
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_get_property_reply_t", ref_function = "", unref_function = "free")]
+       public class GetPropertyReply {
+               public AtomT type;
+               public uint8 format;
+               public uint32 bytes_after;
+               private uint32 value_len;
+               [CCode (cname = "xcb_get_property_value")]
+               public unowned void *value ();
+               [CCode (cname = "xcb_get_property_value_length")]
+               public int32 value_length ();
+               public string value_as_string () {
+                       GLib.assert (format == 8);
+                       return "%.*s".printf (value_len, value ());
+               }
+               public unowned uint8[] value_as_uint8_array () {
+                       GLib.assert (format == 8);
+                       unowned uint8[] res = (uint8[]) value ();
+                       res.length = (int) value_len;
+                       return res;
+               }
+               public unowned uint16[] value_as_uint16_array () {
+                       GLib.assert (format == 16);
+                       unowned uint16[] res = (uint16[]) value ();
+                       res.length = (int) value_len;
+                       return res;
+               }
+               public unowned uint32[] value_as_uint32_array () {
+                       GLib.assert (format == 32);
+                       unowned uint32[] res = (uint32[]) value ();
+                       res.length = (int) value_len;
+                       return res;
+               }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_list_fonts_with_info_cookie_t", has_type_id = false)]
+       public struct ListFontsWithInfoCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_list_fonts_with_info_reply_t", ref_function = "", unref_function = "free")]
+       public class ListFontsWithInfoReply {
+               public Charinfo min_bounds;
+               public Charinfo max_bounds;
+               public uint16 min_char_or_byte2;
+               public uint16 max_char_or_byte2;
+               public uint16 default_char;
+               public uint8 draw_direction;
+               public uint8 min_byte1;
+               public uint8 max_byte1;
+               public uint8 all_chars_exist;
+               public int16 font_ascent;
+               public int16 font_descent;
+               public uint32 replies_hint;
+               private uint16 properties_len;
+               [CCode (cname = "xcb_list_fonts_with_info_properties")]
+               private Fontprop* vala_properties ();
+               public Fontprop[] properties
+               {
+                       get
+                       {
+                               unowned Fontprop[] res = (Fontprop[]) vala_properties ();
+                               res.length = properties_len;
+                               return res;
+                       }
+               }
+               private uint8 name_len;
+               [CCode (cname = "xcb_list_fonts_with_info_name")]
+               private unowned string vala_name ();
+               public string name { owned get { return "%.*s".printf (name_len, vala_name ()); } }
+       }
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_get_font_path_cookie_t", has_type_id = false)]
+       public struct GetFontPathCookie {
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_get_font_path_reply_t", ref_function = "", unref_function = "free")]
+       public class GetFontPathReply {
+               private uint16 path_len;
+               [CCode (cname = "xcb_get_font_path_path_iterator")]
+               private StrIterator path_iterator ();
+               public string[] path
+               {
+                       owned get
+                       {
+                               var value = new string[path_len];
+                               var iter = path_iterator ();
+                               for (var i = 0; i < value.length; i++)
+                               {
+                                       value[i] = iter.data.name;
+                                       StrIterator.next (ref iter);
+                               }
+                               return value;
+                       }
+               }
+       }
+
+       [CCode (cname = "xcb_circulate_t", has_type_id = false)]
+       public enum Circulate {
+               RAISE_LOWEST,
+               LOWER_HIGHEST
+       }
+
        [SimpleType]
        [IntegerType (rank = 9)]
        [CCode (cname = "xcb_atom_t", has_type_id = false)]
        public struct AtomT {
        }
-       
+
+       [SimpleType]
+       [IntegerType (rank = 9)]
+       [CCode (cname = "xcb_fontable_t", has_type_id = false)]
+       public struct Fontable {
+       }
+
        [CCode (cname = "xcb_prop_mode_t", has_type_id = false)]
        public enum PropMode {
                REPLACE,
                PREPEND,
                APPEND
        }
-       
+
+       [CCode (cname = "xcb_grab_mode_t", has_type_id = false)]
+       public enum GrabMode {
+               SYNC,
+               ASYNC
+       }
+
+       [CCode (cname = "xcb_grab_status_t", has_type_id = false)]
+       public enum GrabStatus {
+               SUCCESS,
+               ALREADY_GRABBED,
+               INVALID_TIME,
+               NOT_VIEWABLE,
+               FROZEN
+       }
+
+       [SimpleType]
+       [CCode (cname = "xcb_timecoord_t", has_type_id = false)]
+       public struct Timecoord {
+               public Timestamp time;
+               public int16 x;
+               public int16 y;
+       }
+
+       [SimpleType]
+       [CCode (cname = "xcb_timecoord_iterator_t", has_type_id = false)]
+       private struct TimecoordIterator {
+               public unowned Timecoord data;
+               public int rem;
+               public int index;
+               [CCode (cname = "xcb_timecoord_next")]
+               public static void next (ref TimecoordIterator iter);
+       }
+
        [CCode (cname = "xcb_atom_enum_t", has_type_id = false)]
        public enum Atom {
                NONE,
@@ -287,7 +1474,7 @@ namespace Xcb {
                WM_CLASS,
                WM_TRANSIENT_FOR
        }
-       
+
        public const uint8 KEY_PRESS;
        public const uint8 KEY_RELEASE;
        public const uint8 BUTTON_PRESS;
@@ -321,7 +1508,8 @@ namespace Xcb {
        public const uint8 COLORMAP_NOTIFY;
        public const uint8 CLIENT_MESSAGE;
        public const uint8 MAPPING_NOTIFY;
-       
+
+       [CCode (cname = "xcb_config_window_t", has_type_id = false)]
        public enum ConfigWindow {
                X,
                Y,
@@ -331,12 +1519,63 @@ namespace Xcb {
                SIBLING,
                STACK_MODE
        }
-       
+
+       [CCode (cname = "xcb_image_order_t", has_type_id = false)]
+       public enum ImageOrder {
+               LSB_FIRST,
+               MSB_FIRST
+       }
+
        [Compact]
        [CCode (cname = "xcb_setup_t", ref_function = "", unref_function = "")]
        public class Setup {
+               public uint8 status;
+               public uint16 protocol_major_version;
+               public uint16 protocol_minor_version;
+               public uint32 release_number;
+               public uint32 resource_id_base;
+               public uint32 resource_id_mask;
+               public uint32 motion_buffer_size;
+               private uint16 vendor_len;
+               [CCode (cname = "xcb_setup_vendor")]
+               private unowned string vala_vendor ();
+               public string vendor { owned get { return "%.*s".printf (vendor_len, vala_vendor ()); } }
+               public uint32 maximum_request_length;
+               public uint8 image_byte_order;
+               public uint8 bitmap_format_bit_order;
+               public uint8 bitmap_format_scanline_unit;
+               public uint8 bitmap_format_scanline_pad;
+               public Keycode min_keycode;
+               public Keycode max_keycode;
+               private uint8 pixmap_formats_len;
+               [CCode (cname = "xcb_setup_pixmap_formats")]
+               private Format* vala_pixmap_formats ();
+               public Format[] pixmap_formats
+               {
+                       get
+                       {
+                               unowned Format[] res = (Format[]) vala_pixmap_formats ();
+                               res.length = pixmap_formats_len;
+                               return res;
+                       }
+               }
+               private uint8 roots_len;
+               [Deprecated (since = "vala-0.26", replacement = "Xcb.Setup.screens")]
                public int roots_length ();
                public ScreenIterator roots_iterator ();
+               public Screen[] screens {
+                       owned get
+                       {
+                               var value = new Screen[roots_len];
+                               var iter = roots_iterator ();
+                               for (var i = 0; i < value.length; i++)
+                               {
+                                       value[i] = iter.data;
+                                       ScreenIterator.next (ref iter);
+                               }
+                               return value;
+                       }
+               }
        }
 
        public const char COPY_FROM_PARENT;
@@ -352,8 +1591,13 @@ namespace Xcb {
        [CCode (cname = "xcb_generic_event_t", ref_function = "", unref_function = "")]
        public class GenericEvent {
                public uint8 response_type;
+               public uint8 extension;
+               public uint16 sequence;
+               public uint32 length;
+               public uint16 event_type;
+               public uint32 full_sequence;
        }
-       
+
        [SimpleType]
        [CCode (cname = "xcb_timestamp_t", has_type_id = false)]
        public struct Timestamp : uint32 {
@@ -363,7 +1607,7 @@ namespace Xcb {
        [CCode (cname = "xcb_keycode_t", has_type_id = false)]
        public struct Keycode : uint8 {
        }
-       
+
        [SimpleType]
        [CCode (cname = "xcb_colormap_t", has_type_id = false)]
        public struct Colormap : uint32 {
@@ -372,37 +1616,35 @@ namespace Xcb {
        [Compact]
        [CCode (cname = "xcb_key_press_event_t", ref_function = "", unref_function = "")]
        public class KeyPressEvent : GenericEvent {
-               Keycode detail;
-               uint16 sequence;
-               Timestamp time;
-               Window root;
-               Window event;
-               Window child;
-               uint16 root_x;
-               uint16 root_y;
-               uint16 event_x;
-               uint16 event_y;
-               uint16 state;
-               uint8 same_screen;
-               uint8 pad0;
+               public Keycode detail;
+               public uint16 sequence;
+               public Timestamp time;
+               public Window root;
+               public Window event;
+               public Window child;
+               public uint16 root_x;
+               public uint16 root_y;
+               public uint16 event_x;
+               public uint16 event_y;
+               public uint16 state;
+               public uint8 same_screen;
        }
 
        [Compact]
        [CCode (cname = "xcb_key_release_event_t", ref_function = "", unref_function = "")]
        public class KeyReleaseEvent : GenericEvent {
-               Keycode detail;
-               uint16 sequence;
-               Timestamp time;
-               Window root;
-               Window event;
-               Window child;
-               uint16 root_x;
-               uint16 root_y;
-               uint16 event_x;
-               uint16 event_y;
-               uint16 state;
-               uint8 same_screen;
-               uint8 pad0;
+               public Keycode detail;
+               public uint16 sequence;
+               public Timestamp time;
+               public Window root;
+               public Window event;
+               public Window child;
+               public uint16 root_x;
+               public uint16 root_y;
+               public uint16 event_x;
+               public uint16 event_y;
+               public uint16 state;
+               public uint8 same_screen;
        }
 
        [Compact]
@@ -445,9 +1687,9 @@ namespace Xcb {
        [Compact]
        [CCode (cname = "xcb_motion_notify_event_t", ref_function = "", unref_function = "")]
        public class MotionNotifyEvent : GenericEvent {
-               uint8 detail;
-               uint16 sequence;
-               Timestamp time;
+               public uint8 detail;
+               public uint16 sequence;
+               public Timestamp time;
                public Window root;
                public Window event;
                public Window child;
@@ -457,13 +1699,11 @@ namespace Xcb {
                public uint16 event_y;
                public uint16 state;
                public uint8 same_screen;
-               public uint8 pad0;
        }
 
        [Compact]
        [CCode (cname = "xcb_expose_event_t", ref_function = "", unref_function = "")]
        public class ExposeEvent : GenericEvent {
-               public uint8 pad0;
                public uint16 sequence;
                public Window window;
                public uint16 x;
@@ -471,14 +1711,62 @@ namespace Xcb {
                public uint16 width;
                public uint16 height;
                public uint16 count;
-               public uint8 pad1[2];
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_enter_notify_event_t", ref_function = "", unref_function = "")]
+       public class EnterNotifyEvent : GenericEvent {
+               public uint8 detail;
+               public uint16 sequence;
+               public Timestamp time;
+               public Window root;
+               public Window event;
+               public Window child;
+               public uint16 root_x;
+               public uint16 root_y;
+               public uint16 event_x;
+               public uint16 event_y;
+               public uint16 state;
+               public uint8 mode;
+               public uint8 same_screen_focus;
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_leave_notify_event_t", ref_function = "", unref_function = "")]
+       public class LeaveNotifyEvent : GenericEvent {
+               public uint8 detail;
+               public uint16 sequence;
+               public Timestamp time;
+               public Window root;
+               public Window event;
+               public Window child;
+               public uint16 root_x;
+               public uint16 root_y;
+               public uint16 event_x;
+               public uint16 event_y;
+               public uint16 state;
+               public uint8 mode;
+               public uint8 same_screen_focus;
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_keymap_notify_event_t", ref_function = "", unref_function = "")]
+       public class KeymapNotifyEvent : GenericEvent {
+               public uint8[] keys;
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_visibility_notify_event_t", ref_function = "", unref_function = "")]
+       public class VisibilityNotifyEvent : GenericEvent {
+               uint16 sequence;
+               public Window window;
+               public uint8 state;
        }
 
        [Compact]
        [CCode (cname = "xcb_create_notify_event_t", ref_function = "", unref_function = "")]
        public class CreateNotifyEvent {
                public uint8 response_type;
-               public uint8 pad0;
                public uint16 sequence;
                public Window parent;
                public Window window;
@@ -488,14 +1776,12 @@ namespace Xcb {
                public uint16 height;
                public uint16 border_width;
                public uint8 override_redirect;
-               public uint8 pad1;
        }
 
        [Compact]
        [CCode (cname = "xcb_destroy_notify_event_t", ref_function = "", unref_function = "")]
        public class DestroyNotifyEvent {
                public uint8 response_type;
-               public uint8 pad0;
                public uint16 sequence;
                public Window event;
                public Window window;
@@ -505,37 +1791,44 @@ namespace Xcb {
        [CCode (cname = "xcb_unmap_notify_event_t", ref_function = "", unref_function = "")]
        public class UnmapNotifyEvent {
                public uint8 response_type;
-               public uint8 pad0;
                public uint16 sequence;
                public Window event;
                public Window window;
                public uint8 from_configure;
-               public uint8 pad1[3];
        }
 
        [Compact]
        [CCode (cname = "xcb_map_notify_event_t", ref_function = "", unref_function = "")]
        public class MapNotifyEvent {
                public uint8 response_type;
-               public uint8 pad0;
                public uint16 sequence;
                public Window event;
                public Window window;
                public uint8 override_redirect;
-               public uint8 pad1[3];
        }
 
        [Compact]
        [CCode (cname = "xcb_map_request_event_t", ref_function = "", unref_function = "")]
        public class MapRequestEvent {
                public uint8 response_type;
-               public uint8 pad0;
                public uint16 sequence;
                public Window parent;
                public Window window;
        }
 
        [Compact]
+       [CCode (cname = "xcb_reparent_notify_event_t", ref_function = "", unref_function = "")]
+       public class ReparentNotifyEvent : GenericEvent {
+               uint16 sequence;
+               public Window event;
+               public Window window;
+               public Window parent;
+               public int16 x;
+               public int16 y;
+               public uint8 override_redirect;
+       }
+
+       [Compact]
        [CCode (cname = "xcb_configure_request_event_t", ref_function = "", unref_function = "")]
        public class ConfigureRequestEvent {
                public uint8 response_type;
@@ -556,7 +1849,6 @@ namespace Xcb {
        [CCode (cname = "xcb_configure_notify_event_t", ref_function = "", unref_function = "")]
        public class ConfigureNotifyEvent {
                public uint8      response_type;
-               public uint8      pad0;
                public uint16     sequence;
                public Window     event;
                public Window     window;
@@ -567,7 +1859,65 @@ namespace Xcb {
                public uint16     height;
                public uint16     border_width;
                public uint8      override_redirect;
-               public uint8      pad1;
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_gravity_notify_event_t", ref_function = "", unref_function = "")]
+       public class GravityNotifyEvent : GenericEvent {
+               uint16 sequence;
+               public Window event;
+               public Window window;
+               public int16 x;
+               public int16 y;
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_circulate_notify_event_t", ref_function = "", unref_function = "")]
+       public class CirculateNotifyEvent : GenericEvent {
+               uint16 sequence;
+               public Window event;
+               public Window window;
+               public uint8 place;
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_property_notify_event_t", ref_function = "", unref_function = "")]
+       public class PropertyNotifyEvent : GenericEvent {
+               uint16 sequence;
+               public Window window;
+               public AtomT atom;
+               public Timestamp time;
+               public uint8 state;
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_selection_notify_event_t", ref_function = "", unref_function = "")]
+       public class SelectionNotifyEvent : GenericEvent {
+               uint16 sequence;
+               public Timestamp time;
+               public Window requestor;
+               public AtomT selection;
+               public AtomT target;
+               public AtomT property;
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_colormap_notify_event_t", ref_function = "", unref_function = "")]
+       public class ColormapNotifyEvent : GenericEvent {
+               uint16 sequence;
+               public Window window;
+               public Colormap colormap;
+               public uint8 _new;
+               public uint8 state;
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_mapping_notify_event_t", ref_function = "", unref_function = "")]
+       public class MappingNotifyEvent : GenericEvent {
+               uint16 sequence;
+               public uint8 request;
+               public Keycode first_keycode;
+               public uint8 count;
        }
 
        [CCode (cname = "xcb_cw_t", has_type_id = false)]
@@ -619,18 +1969,58 @@ namespace Xcb {
                OWNER_GRAB_BUTTON
        }
 
+       [Simple]
+       [CCode (cname = "xcb_format_t", has_type_id = false)]
+       public struct Format {
+               public uint8 depth;
+               public uint8 bits_per_pixel;
+               public uint8 scanline_pad;
+       }
+
+       [SimpleType]
+       [CCode (cname = "xcb_format_iterator_t", has_type_id = false)]
+       private struct FormatIterator {
+               public unowned Format data;
+               public int rem;
+               public int index;
+               [CCode (cname = "xcb_format_next")]
+               public static void next (ref FormatIterator iter);
+       }
+
        [Compact]
        [CCode (cname = "xcb_screen_t", ref_function = "", unref_function = "")]
        public class Screen {
                public Window root;
+               public Colormap default_colormap;
                public uint32 white_pixel;
                public uint32 black_pixel;
+               public uint32 current_input_masks;
                public uint16 width_in_pixels;
                public uint16 height_in_pixels;
                public uint16 width_in_millimeters;
                public uint16 height_in_millimeters;
+               public uint16 min_installed_maps;
+               public uint16 max_installed_maps;
                public VisualID root_visual;
+               public uint8 backing_stores;
+               public uint8 save_unders;
+               public uint8 root_depth;
+               private uint8 allowed_depths_len;
                public DepthIterator allowed_depths_iterator ();
+               public Depth[] allowed_depths
+               {
+                       owned get
+                       {
+                               var value = new Depth[allowed_depths_len];
+                               var iter = allowed_depths_iterator ();
+                               for (var i = 0; i < value.length; i++)
+                               {
+                                       value[i] = iter.data;
+                                       DepthIterator.next (ref iter);
+                               }
+                               return value;
+                       }
+               }
        }
 
        [SimpleType]
@@ -639,6 +2029,7 @@ namespace Xcb {
                public unowned Screen data;
                public int rem;
                public int index;
+               [CCode (cname = "xcb_screen_next")]
                public static void next (ref ScreenIterator iter);
        }
 
@@ -646,6 +2037,18 @@ namespace Xcb {
        [CCode (cname = "xcb_depth_t", ref_function = "", unref_function = "")]
        public class Depth {
                public uint8 depth;
+               private uint16 visuals_len;
+               [CCode (cname = "xcb_depth_visuals")]
+               private VisualType* vala_visuals ();
+               public VisualType[] visuals
+               {
+                       get {
+                               unowned VisualType[] res = (VisualType[]) vala_visuals ();
+                               res.length = (int) visuals_len;
+                               return res;
+                       }
+               }
+               [Deprecated (since = "vala-0.26", replacement = "Xcb.Depth.visuals")]
                public VisualTypeIterator visuals_iterator ();
        }
 
@@ -656,23 +2059,26 @@ namespace Xcb {
                public Window parent;
                public uint16 children_len;
                [CCode (cname = "xcb_query_tree_children", array_length = false)]
-               public Window* children();
+               public Window* children ();
        }
 
+       [SimpleType]
        [CCode (cname = "xcb_depth_iterator_t", has_type_id = false)]
        public struct DepthIterator {
                public unowned Depth data;
                public int rem;
                [CCode (cname = "xcb_depth_next")]
-               public void next ();
+               public static void next (ref DepthIterator iter);
        }
 
+       [Deprecated (since = "vala-0.26", replacement = "Xcb.Depth.visuals")]
+       [SimpleType]
        [CCode (cname = "xcb_visualtype_iterator_t", has_type_id = false)]
        public struct VisualTypeIterator {
                public unowned VisualType data;
                public int rem;
                [CCode (cname = "xcb_visualtype_next")]
-               public void next ();
+               public static void next (ref VisualTypeIterator iter);
        }
 
        [Deprecated (since = "vala-0.14", replacement = "Xcb.Connection")]
@@ -692,6 +2098,12 @@ namespace Xcb {
        public struct QueryTreeCookie {
        }
 
+       [CCode (cname = "xcb_point_t", has_type_id = false)]
+       public struct Point {
+               public int16 x;
+               public int16 y;
+       }
+
        [CCode (cname = "xcb_rectangle_t", has_type_id = false)]
        public struct Rectangle {
                public int16 x;
@@ -700,6 +2112,24 @@ namespace Xcb {
                public uint16 height;
        }
 
+       [CCode (cname = "xcb_arc_t", has_type_id = false)]
+       public struct Arc {
+               public int16 x;
+               public int16 y;
+               public uint16 width;
+               public uint16 height;
+               public int16 angle1;
+               public int16 angle2;
+       }
+
+       [CCode (cname = "xcb_segment_t", has_type_id = false)]
+       public struct Segment {
+               public int16 x1;
+               public int16 y1;
+               public int16 x2;
+               public int16 y2;
+       }
+
        [SimpleType]
        [CCode (cname = "xcb_visualid_t", has_type_id = false)]
        public struct VisualID : uint32 {
@@ -711,21 +2141,351 @@ namespace Xcb {
        }
 
        [SimpleType]
+       [CCode (cname = "xcb_gcontext_t", has_type_id = false)]
+       public struct GContext : uint32 {
+       }
+
+       [SimpleType]
        [CCode (cname = "xcb_drawable_t", has_type_id = false)]
        public struct Drawable : uint32 {
        }
 
        [SimpleType]
+       [CCode (cname = "xcb_pixmap_t", has_type_id = false)]
+       public struct Pixmap : uint32 {
+       }
+
+       [SimpleType]
+       [CCode (cname = "xcb_cursor_t", has_type_id = false)]
+       public struct Cursor : uint32 {
+       }
+
+       [SimpleType]
+       [CCode (cname = "xcb_font_t", has_type_id = false)]
+       public struct Font : uint32 {
+       }
+
+       [SimpleType]
        [CCode (cname = "xcb_window_t", has_type_id = false)]
        public struct Window : uint32 {
        }
 
-       [Compact]
-       [CCode (cname = "xcb_visualtype_t", ref_function = "", unref_function = "")]
-       public class VisualType {
+       [CCode (cname = "xcb_visual_class_t", has_type_id = false)]
+       public enum VisualClass {
+               STATIC_GRAY,
+               GRAY_SCALE,
+               STATIC_COLOR,
+               PSEUDO_COLOR,
+               TRUE_COLOR,
+               DIRECT_COLOR
+       }
+
+       [SimpleType]
+       [CCode (cname = "xcb_visualtype_t", has_type_id = false)]
+       public struct VisualType {
                public VisualID visual_id;
                public uint8 _class;
                public uint8 bits_per_rgb_value;
+               public uint16 colormap_entries;
+               public uint32 red_mask;
+               public uint32 green_mask;
+               public uint32 blue_mask;
+       }
+
+       [CCode (cname = "xcb_input_focus_t", has_type_id = false)]
+       public enum InputFocus {
+               NONE,
+               POINTER_ROOT,
+               PARENT,
+               FOLLOW_KEYBOARD
+       }
+
+       [CCode (cname = "xcb_font_draw_t", has_type_id = false)]
+       public enum FontDraw {
+               LEFT_TO_RIGHT,
+               RIGHT_TO_LEFT
+       }
+
+       [CCode (cname = "xcb_gc_t", has_type_id = false)]
+       public enum GC
+       {
+               FUNCTION,
+               PLANE_MASK,
+               FOREGROUND,
+               BACKGROUND,
+               LINE_WIDTH,
+               LINE_STYLE,
+               CAP_STYLE,
+               JOIN_STYLE,
+               FILL_STYLE,
+               FILL_RULE,
+               TILE,
+               STIPPLE,
+               TILE_STIPPLE_ORIGIN_X,
+               TILE_STIPPLE_ORIGIN_Y,
+               FONT,
+               SUBWINDOW_MODE,
+               GRAPHICS_EXPOSURES,
+               CLIP_ORIGIN_X,
+               CLIP_ORIGIN_Y,
+               CLIP_MASK,
+               DASH_OFFSET,
+               DASH_LIST,
+               ARC_MODE
+       }
+
+       [CCode (cname = "xcb_gx_t", has_type_id = false)]
+       public enum GX
+       {
+               CLEAR,
+               AND,
+               AND_REVERSE,
+               COPY,
+               AND_INVERTED,
+               NOOP,
+               XOR,
+               OR,
+               NOR,
+               EQUIV,
+               INVERT,
+               OR_REVERSE,
+               COPY_INVERTED,
+               OR_INVERTED,
+               NAND,
+               SET
+       }
+
+       [CCode (cname = "xcb_line_style_t", has_type_id = false)]
+       public enum LineStyle
+       {
+               SOLID,
+               ON_OFF_DASH,
+               DOUBLE_DASH
+       }
+
+       [CCode (cname = "xcb_cap_style_t", has_type_id = false)]
+       public enum CapStyle
+       {
+               NOT_LAST,
+               BUTT,
+               ROUND,
+               PROJECTING
+       }
+
+       [CCode (cname = "xcb_join_style_t", has_type_id = false)]
+       public enum JoinStyle
+       {
+               MITER,
+               ROUND,
+               BEVEL
        }
-}
 
+       [CCode (cname = "xcb_fill_style_t", has_type_id = false)]
+       public enum FillStyle
+       {
+               SOLID,
+               TILED,
+               STIPPLED,
+               OPAQUE_STIPPLED
+       }
+
+       [CCode (cname = "xcb_fill_rule_t", has_type_id = false)]
+       public enum FillRuleStyle
+       {
+               EVEN_ODD,
+               WINDING
+       }
+
+       [CCode (cname = "xcb_subwindow_mode_t", has_type_id = false)]
+       public enum SubwindowMode
+       {
+               CLIP_BY_CHILDREN,
+               INCLUDE_INFERIORS
+       }
+
+       [CCode (cname = "xcb_arc_mode_t", has_type_id = false)]
+       public enum ArcMode
+       {
+               CHORD,
+               PIE_SLICE
+       }
+
+       [CCode (cname = "xcb_clip_ordering_t", has_type_id = false)]
+       public enum ClipOrdering
+       {
+               UNSORTED,
+               Y_SORTED,
+               YX_SORTED,
+               YX_BANDED
+       }
+
+       [CCode (cname = "xcb_coord_mode_t", has_type_id = false)]
+       public enum CoordMode
+       {
+               ORIGIN,
+               PREVIOUS
+       }
+
+       [CCode (cname = "xcb_poly_shape_t", has_type_id = false)]
+       public enum PolyShape
+       {
+               COMPLEX,
+               NONCONVEX,
+               CONVEX
+       }
+
+       [CCode (cname = "xcb_image_format_t", has_type_id = false)]
+       public enum ImageFormat
+       {
+               XY_BITMAP,
+               XY_PIXMAP,
+               Z_PIXMAP
+       }
+
+       [CCode (cname = "xcb_color_flag_t", has_type_id = false)]
+       public enum ColorFlag
+       {
+               RED,
+               GREEN,
+               BLUE
+       }
+
+       [SimpleType]
+       [CCode (cname = "xcb_coloritem_t", has_type_id = false)]
+       public struct Coloritem {
+               public uint32 pixel;
+               public uint16 red;
+               public uint16 green;
+               public uint16 blue;
+               public ColorFlag flags;
+       }
+
+       [SimpleType]
+       [CCode (cname = "xcb_rgb_t", has_type_id = false)]
+       public struct RGB {
+               public uint16 red;
+               public uint16 green;
+               public uint16 blue;
+       }
+
+       [CCode (cname = "xcb_set_mode_t", has_type_id = false)]
+       public enum SetMode
+       {
+               INSERT,
+               DELETE
+       }
+
+       [CCode (cname = "xcb_host_mode_t", has_type_id = false)]
+       public enum HostMode
+       {
+               INSERT,
+               DELETE
+       }
+
+       [CCode (cname = "xcb_family_t", has_type_id = false)]
+       public enum Family
+       {
+               INTERNET,
+               DECNET,
+               CHAOS,
+               SERVER_INTERPRETED,
+               INTERNET_6
+       }
+
+       [CCode (cname = "xcb_access_control_t", has_type_id = false)]
+       public enum AccessControl
+       {
+               DISABLE,
+               ENABLE
+       }
+
+       [CCode (cname = "xcb_close_down_t", has_type_id = false)]
+       public enum CloseDown
+       {
+               DESTROY_ALL,
+               RETAIN_PERMANENT,
+               RETAIN_TEMPORARY
+       }
+
+       [CCode (cname = "xcb_screen_saver_t", has_type_id = false)]
+       public enum ScreenSaver
+       {
+               RESET,
+               ACTIVE
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_str_t", ref_function = "", unref_function = "")]
+       private class Str {
+               private uint8 name_len;
+               [CCode (cname = "xcb_str_name")]
+               private unowned string vala_name ();
+               public string name { owned get { return "%.*s".printf (name_len, vala_name ()); } }
+       }
+
+       [SimpleType]
+       [CCode (cname = "xcb_str_iterator_t", has_type_id = false)]
+       private struct StrIterator {
+               public unowned Str data;
+               public int rem;
+               public int index;
+               [CCode (cname = "xcb_str_next")]
+               public static void next (ref StrIterator iter);
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_host_t", ref_function = "", unref_function = "")]
+       public class Host {
+               public Family family;
+               private uint16 address_len;
+               [CCode (cname = "xcb_host_address")]
+               public unowned uint8* vala_address ();
+               public uint8[] address
+               {
+                       get
+                       {
+                               unowned uint8[] res = (uint8[]) vala_address ();
+                               res.length = address_len;
+                               return res;
+                       }
+               }
+       }
+
+       [SimpleType]
+       [CCode (cname = "xcb_host_iterator_t", has_type_id = false)]
+       private struct HostIterator {
+               public unowned Host data;
+               public int rem;
+               public int index;
+               [CCode (cname = "xcb_host_next")]
+               public static void next (ref HostIterator iter);
+       }
+
+       [SimpleType]
+       [CCode (cname = "xcb_fontprop_t", has_type_id = false)]
+       public struct Fontprop {
+               public AtomT name;
+               public uint32 value;
+       }
+
+       [Compact]
+       [CCode (cname = "xcb_fontprop_t", ref_function = "", unref_function = "")]
+       public class Charinfo {
+               public int16 left_side_bearing;
+               public int16 right_side_bearing;
+               public int16 character_width;
+               public int16 ascent;
+               public int16 descent;
+               public uint16 attributes;
+       }
+
+       [SimpleType]
+       [CCode (cname = "xcb_fontprop_iterator_t", has_type_id = false)]
+       private struct FontpropIterator {
+               public unowned Fontprop data;
+               public int rem;
+               public int index;
+               [CCode (cname = "xcb_fontprop_next")]
+               public static void next (ref FontpropIterator iter);
+       }
+}
index bc8539a..647304f 100644 (file)
@@ -1,6 +1,6 @@
-NULL =
+include $(top_srcdir)/Makefile.common
 
-VALAC = $(top_builddir)/compiler/valac$(EXEEXT)
+NULL =
 
 SUBDIRS = \
        vala-gen-introspect \
@@ -41,23 +41,41 @@ vapicheck_SOURCES = \
        $(NULL)
 
 vapigen.vala.stamp: $(vapigen_VALASOURCES)
-       $(VALA_V)$(VALAC) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --vapidir $(srcdir)/../gee --pkg gee --vapidir $(srcdir)/../ccode --pkg ccode --vapidir $(srcdir)/../vala --pkg vala --vapidir $(srcdir)/../gobject-introspection --pkg gidl --pkg config $^
+       $(VALA_V)$(VALAC) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi \
+               --vapidir $(top_srcdir)/gee --pkg gee \
+               --vapidir $(top_srcdir)/ccode --pkg ccode \
+               --vapidir $(top_srcdir)/vala --pkg vala \
+               --vapidir $(top_srcdir)/gobject-introspection --pkg gidl \
+               --pkg config \
+               $^
        @touch $@
 
 vapicheck.vala.stamp: $(vapicheck_VALASOURCES)
-       $(VALA_V)$(VALAC) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --vapidir $(srcdir)/../gee --pkg gee --vapidir $(srcdir)/../ccode --pkg ccode --vapidir $(srcdir)/../vala --pkg vala --vapidir $(srcdir)/../gobject-introspection --pkg gidl --pkg config $^
+       $(VALA_V)$(VALAC) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi \
+               --vapidir $(top_srcdir)/gee --pkg gee \
+               --vapidir $(top_srcdir)/ccode --pkg ccode \
+               --vapidir $(top_srcdir)/vala --pkg vala \
+               --vapidir $(top_srcdir)/gobject-introspection --pkg gidl \
+               --pkg config \
+               $^
        @touch $@
 
 vapigen_LDADD = \
        $(GLIB_LIBS) \
-       ../codegen/libvala@PACKAGE_SUFFIX@.la \
-       ../gobject-introspection/libgidl.la \
+       $(top_builddir)/codegen/libvala@PACKAGE_SUFFIX@.la \
+       $(top_builddir)/gobject-introspection/libgidl.la \
        $(NULL)
 
 vapicheck_LDADD = \
        $(GLIB_LIBS) \
-       ../codegen/libvala@PACKAGE_SUFFIX@.la \
-       ../gobject-introspection/libgidl.la \
+       $(top_builddir)/codegen/libvala@PACKAGE_SUFFIX@.la \
+       $(top_builddir)/gobject-introspection/libgidl.la \
        $(NULL)
 
 if ENABLE_UNVERSIONED
@@ -100,7 +118,3 @@ MAINTAINERCLEANFILES = \
        $(vapigen_VALASOURCES:.vala=.c) \
        $(vapicheck_VALASOURCES:.vala=.c) \
        $(NULL)
-
-VALA_V = $(VALA_V_$(V))
-VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
-VALA_V_0 = @echo "  VALAC " $^;
index 2e3b0e8..6032252 100644 (file)
@@ -78,10 +78,11 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/Makefile.common $(srcdir)/Makefile.in \
+       $(srcdir)/Makefile.am $(srcdir)/vapigen.pc.in \
+       $(top_srcdir)/build-aux/depcomp
 bin_PROGRAMS = vapigen$(EXEEXT) vapicheck$(EXEEXT) $(am__EXEEXT_1)
 subdir = vapigen
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-       $(srcdir)/vapigen.pc.in $(top_srcdir)/build-aux/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
        $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
@@ -103,8 +104,9 @@ am_vapicheck_OBJECTS = $(am__objects_2) $(am__objects_1)
 vapicheck_OBJECTS = $(am_vapicheck_OBJECTS)
 am__DEPENDENCIES_1 =
 vapicheck_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-       ../codegen/libvala@PACKAGE_SUFFIX@.la \
-       ../gobject-introspection/libgidl.la $(am__DEPENDENCIES_1)
+       $(top_builddir)/codegen/libvala@PACKAGE_SUFFIX@.la \
+       $(top_builddir)/gobject-introspection/libgidl.la \
+       $(am__DEPENDENCIES_1)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
@@ -114,8 +116,9 @@ am__objects_3 = valagidlparser.$(OBJEXT) valavapigen.$(OBJEXT) \
 am_vapigen_OBJECTS = $(am__objects_3) $(am__objects_1)
 vapigen_OBJECTS = $(am_vapigen_OBJECTS)
 vapigen_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-       ../codegen/libvala@PACKAGE_SUFFIX@.la \
-       ../gobject-introspection/libgidl.la $(am__DEPENDENCIES_1)
+       $(top_builddir)/codegen/libvala@PACKAGE_SUFFIX@.la \
+       $(top_builddir)/gobject-introspection/libgidl.la \
+       $(am__DEPENDENCIES_1)
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -326,7 +329,7 @@ SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
-VALAC = $(top_builddir)/compiler/valac$(EXEEXT)
+VALAC = @VALAC@
 VALAFLAGS = @VALAFLAGS@
 VERSION = @VERSION@
 XSLTPROC = @XSLTPROC@
@@ -355,7 +358,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -384,8 +386,9 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
+VALA_V = $(VALA_V_$(V))
+VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
+VALA_V_0 = @echo "  VALAC " $^;
 NULL = 
 SUBDIRS = \
        vala-gen-introspect \
@@ -421,14 +424,14 @@ vapicheck_SOURCES = \
 
 vapigen_LDADD = \
        $(GLIB_LIBS) \
-       ../codegen/libvala@PACKAGE_SUFFIX@.la \
-       ../gobject-introspection/libgidl.la \
+       $(top_builddir)/codegen/libvala@PACKAGE_SUFFIX@.la \
+       $(top_builddir)/gobject-introspection/libgidl.la \
        $(NULL)
 
 vapicheck_LDADD = \
        $(GLIB_LIBS) \
-       ../codegen/libvala@PACKAGE_SUFFIX@.la \
-       ../gobject-introspection/libgidl.la \
+       $(top_builddir)/codegen/libvala@PACKAGE_SUFFIX@.la \
+       $(top_builddir)/gobject-introspection/libgidl.la \
        $(NULL)
 
 @ENABLE_UNVERSIONED_TRUE@makedir = $(datadir)/vala
@@ -454,15 +457,12 @@ MAINTAINERCLEANFILES = \
        $(vapicheck_VALASOURCES:.vala=.c) \
        $(NULL)
 
-VALA_V = $(VALA_V_$(V))
-VALA_V_ = $(VALA_V_$(AM_DEFAULT_VERBOSITY))
-VALA_V_0 = @echo "  VALAC " $^;
 all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.common $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -483,6 +483,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
        esac;
+$(top_srcdir)/Makefile.common:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -948,11 +949,29 @@ uninstall-am: uninstall-aclocalDATA uninstall-binPROGRAMS \
 
 
 vapigen.vala.stamp: $(vapigen_VALASOURCES)
-       $(VALA_V)$(VALAC) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --vapidir $(srcdir)/../gee --pkg gee --vapidir $(srcdir)/../ccode --pkg ccode --vapidir $(srcdir)/../vala --pkg vala --vapidir $(srcdir)/../gobject-introspection --pkg gidl --pkg config $^
+       $(VALA_V)$(VALAC) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi \
+               --vapidir $(top_srcdir)/gee --pkg gee \
+               --vapidir $(top_srcdir)/ccode --pkg ccode \
+               --vapidir $(top_srcdir)/vala --pkg vala \
+               --vapidir $(top_srcdir)/gobject-introspection --pkg gidl \
+               --pkg config \
+               $^
        @touch $@
 
 vapicheck.vala.stamp: $(vapicheck_VALASOURCES)
-       $(VALA_V)$(VALAC) $(VALAFLAGS) -C --vapidir $(srcdir)/../vapi --vapidir $(srcdir)/../gee --pkg gee --vapidir $(srcdir)/../ccode --pkg ccode --vapidir $(srcdir)/../vala --pkg vala --vapidir $(srcdir)/../gobject-introspection --pkg gidl --pkg config $^
+       $(VALA_V)$(VALAC) \
+               $(VALAFLAGS) \
+               -C \
+               --vapidir $(top_srcdir)/vapi \
+               --vapidir $(top_srcdir)/gee --pkg gee \
+               --vapidir $(top_srcdir)/ccode --pkg ccode \
+               --vapidir $(top_srcdir)/vala --pkg vala \
+               --vapidir $(top_srcdir)/gobject-introspection --pkg gidl \
+               --pkg config \
+               $^
        @touch $@
 
 vapigen@PACKAGE_SUFFIX@.pc: vapigen.pc
index 91fc806..c6ddeea 100644 (file)
@@ -249,7 +249,6 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gen_introspect_decl = @gen_introspect_decl@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -278,8 +277,6 @@ target_alias = @target_alias@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-vala_gen_introspect_decl = @vala_gen_introspect_decl@
-vapigen_decl = @vapigen_decl@
 NULL = 
 bin_SCRIPTS = \
        vala-gen-introspect \
index 0139d7f..d3d028a 100644 (file)
@@ -542,7 +542,7 @@ static void vala_gidl_parser_parse_file (ValaGIdlParser* self, ValaSourceFile* s
                        g_file_get_contents (_tmp25_, &_tmp26_, NULL, &_inner_error_);
                        _g_free0 (metadata);
                        metadata = _tmp26_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                _g_free0 (metadata);
                                if (_inner_error_->domain == G_FILE_ERROR) {
                                        goto __catch0_g_file_error;
@@ -671,7 +671,7 @@ static void vala_gidl_parser_parse_file (ValaGIdlParser* self, ValaSourceFile* s
                        _g_error_free0 (e);
                }
                __finally0:
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_free0 (metadata_filename);
                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
@@ -693,7 +693,7 @@ static void vala_gidl_parser_parse_file (ValaGIdlParser* self, ValaSourceFile* s
                _tmp59_ = _tmp58_;
                _tmp60_ = g_idl_parse_file (_tmp59_, &_inner_error_);
                modules = _tmp60_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_MARKUP_ERROR) {
                                goto __catch1_g_markup_error;
                        }
@@ -760,7 +760,7 @@ static void vala_gidl_parser_parse_file (ValaGIdlParser* self, ValaSourceFile* s
                _g_error_free0 (e);
        }
        __finally1:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                _g_free0 (metadata_filename);
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
@@ -3099,13 +3099,13 @@ static ValaDelegate* vala_gidl_parser_parse_delegate (ValaGIdlParser* self, GIdl
        gchar** _tmp15_ = NULL;
        gint _tmp15__length1 = 0;
        guint remaining_params = 0U;
-       GIdlNodeFunction* _tmp161_ = NULL;
-       GList* _tmp162_ = NULL;
-       guint _tmp163_ = 0U;
-       GIdlNodeFunction* _tmp164_ = NULL;
-       GList* _tmp165_ = NULL;
-       gboolean _tmp345_ = FALSE;
-       gboolean _tmp346_ = FALSE;
+       GIdlNodeFunction* _tmp162_ = NULL;
+       GList* _tmp163_ = NULL;
+       guint _tmp164_ = 0U;
+       GIdlNodeFunction* _tmp165_ = NULL;
+       GList* _tmp166_ = NULL;
+       gboolean _tmp347_ = FALSE;
+       gboolean _tmp348_ = FALSE;
        g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (f_node != NULL, NULL);
        _tmp0_ = f_node;
@@ -3309,317 +3309,320 @@ static ValaDelegate* vala_gidl_parser_parse_delegate (ValaGIdlParser* self, GIdl
                                                                                if (_tmp62_) {
                                                                                        ValaDataType* _tmp63_ = NULL;
                                                                                        ValaDataType* _tmp64_ = NULL;
-                                                                                       ValaSourceReference* _tmp65_ = NULL;
+                                                                                       ValaDataType* _tmp65_ = NULL;
                                                                                        ValaSourceReference* _tmp66_ = NULL;
-                                                                                       ValaArrayType* _tmp67_ = NULL;
-                                                                                       ValaDelegate* _tmp68_ = NULL;
-                                                                                       ValaDataType* _tmp69_ = NULL;
+                                                                                       ValaSourceReference* _tmp67_ = NULL;
+                                                                                       ValaArrayType* _tmp68_ = NULL;
+                                                                                       ValaDelegate* _tmp69_ = NULL;
+                                                                                       ValaDataType* _tmp70_ = NULL;
                                                                                        _tmp63_ = return_type;
+                                                                                       vala_data_type_set_value_owned (_tmp63_, TRUE);
                                                                                        _tmp64_ = return_type;
-                                                                                       _tmp65_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp64_);
-                                                                                       _tmp66_ = _tmp65_;
-                                                                                       _tmp67_ = vala_array_type_new (_tmp63_, 1, _tmp66_);
+                                                                                       _tmp65_ = return_type;
+                                                                                       _tmp66_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp65_);
+                                                                                       _tmp67_ = _tmp66_;
+                                                                                       _tmp68_ = vala_array_type_new (_tmp64_, 1, _tmp67_);
                                                                                        _vala_code_node_unref0 (return_type);
-                                                                                       return_type = (ValaDataType*) _tmp67_;
-                                                                                       _tmp68_ = cb;
-                                                                                       _tmp69_ = return_type;
-                                                                                       vala_delegate_set_return_type (_tmp68_, _tmp69_);
+                                                                                       return_type = (ValaDataType*) _tmp68_;
+                                                                                       _tmp69_ = cb;
+                                                                                       _tmp70_ = return_type;
+                                                                                       vala_delegate_set_return_type (_tmp69_, _tmp70_);
                                                                                }
                                                                        } else {
-                                                                               gchar** _tmp70_ = NULL;
-                                                                               gint _tmp70__length1 = 0;
-                                                                               const gchar* _tmp71_ = NULL;
-                                                                               _tmp70_ = nv;
-                                                                               _tmp70__length1 = nv_length1;
-                                                                               _tmp71_ = _tmp70_[0];
-                                                                               if (g_strcmp0 (_tmp71_, "throws") == 0) {
-                                                                                       gchar** _tmp72_ = NULL;
-                                                                                       gint _tmp72__length1 = 0;
-                                                                                       const gchar* _tmp73_ = NULL;
-                                                                                       gchar* _tmp74_ = NULL;
+                                                                               gchar** _tmp71_ = NULL;
+                                                                               gint _tmp71__length1 = 0;
+                                                                               const gchar* _tmp72_ = NULL;
+                                                                               _tmp71_ = nv;
+                                                                               _tmp71__length1 = nv_length1;
+                                                                               _tmp72_ = _tmp71_[0];
+                                                                               if (g_strcmp0 (_tmp72_, "throws") == 0) {
+                                                                                       gchar** _tmp73_ = NULL;
+                                                                                       gint _tmp73__length1 = 0;
+                                                                                       const gchar* _tmp74_ = NULL;
                                                                                        gchar* _tmp75_ = NULL;
-                                                                                       gboolean _tmp76_ = FALSE;
-                                                                                       _tmp72_ = nv;
-                                                                                       _tmp72__length1 = nv_length1;
-                                                                                       _tmp73_ = _tmp72_[1];
-                                                                                       _tmp74_ = vala_gidl_parser_eval (self, _tmp73_);
-                                                                                       _tmp75_ = _tmp74_;
-                                                                                       _tmp76_ = g_strcmp0 (_tmp75_, "0") == 0;
-                                                                                       _g_free0 (_tmp75_);
-                                                                                       if (_tmp76_) {
+                                                                                       gchar* _tmp76_ = NULL;
+                                                                                       gboolean _tmp77_ = FALSE;
+                                                                                       _tmp73_ = nv;
+                                                                                       _tmp73__length1 = nv_length1;
+                                                                                       _tmp74_ = _tmp73_[1];
+                                                                                       _tmp75_ = vala_gidl_parser_eval (self, _tmp74_);
+                                                                                       _tmp76_ = _tmp75_;
+                                                                                       _tmp77_ = g_strcmp0 (_tmp76_, "0") == 0;
+                                                                                       _g_free0 (_tmp76_);
+                                                                                       if (_tmp77_) {
                                                                                                suppress_throws = TRUE;
                                                                                        }
                                                                                } else {
-                                                                                       gchar** _tmp77_ = NULL;
-                                                                                       gint _tmp77__length1 = 0;
-                                                                                       const gchar* _tmp78_ = NULL;
-                                                                                       _tmp77_ = nv;
-                                                                                       _tmp77__length1 = nv_length1;
-                                                                                       _tmp78_ = _tmp77_[0];
-                                                                                       if (g_strcmp0 (_tmp78_, "error_types") == 0) {
-                                                                                               gchar** _tmp79_ = NULL;
-                                                                                               gint _tmp79__length1 = 0;
-                                                                                               const gchar* _tmp80_ = NULL;
-                                                                                               gchar* _tmp81_ = NULL;
-                                                                                               _tmp79_ = nv;
-                                                                                               _tmp79__length1 = nv_length1;
-                                                                                               _tmp80_ = _tmp79_[1];
-                                                                                               _tmp81_ = vala_gidl_parser_eval (self, _tmp80_);
+                                                                                       gchar** _tmp78_ = NULL;
+                                                                                       gint _tmp78__length1 = 0;
+                                                                                       const gchar* _tmp79_ = NULL;
+                                                                                       _tmp78_ = nv;
+                                                                                       _tmp78__length1 = nv_length1;
+                                                                                       _tmp79_ = _tmp78_[0];
+                                                                                       if (g_strcmp0 (_tmp79_, "error_types") == 0) {
+                                                                                               gchar** _tmp80_ = NULL;
+                                                                                               gint _tmp80__length1 = 0;
+                                                                                               const gchar* _tmp81_ = NULL;
+                                                                                               gchar* _tmp82_ = NULL;
+                                                                                               _tmp80_ = nv;
+                                                                                               _tmp80__length1 = nv_length1;
+                                                                                               _tmp81_ = _tmp80_[1];
+                                                                                               _tmp82_ = vala_gidl_parser_eval (self, _tmp81_);
                                                                                                _g_free0 (error_types);
-                                                                                               error_types = _tmp81_;
+                                                                                               error_types = _tmp82_;
                                                                                        } else {
-                                                                                               gchar** _tmp82_ = NULL;
-                                                                                               gint _tmp82__length1 = 0;
-                                                                                               const gchar* _tmp83_ = NULL;
-                                                                                               _tmp82_ = nv;
-                                                                                               _tmp82__length1 = nv_length1;
-                                                                                               _tmp83_ = _tmp82_[0];
-                                                                                               if (g_strcmp0 (_tmp83_, "array_length_type") == 0) {
-                                                                                                       ValaDelegate* _tmp84_ = NULL;
-                                                                                                       gchar** _tmp85_ = NULL;
-                                                                                                       gint _tmp85__length1 = 0;
-                                                                                                       const gchar* _tmp86_ = NULL;
-                                                                                                       gchar* _tmp87_ = NULL;
+                                                                                               gchar** _tmp83_ = NULL;
+                                                                                               gint _tmp83__length1 = 0;
+                                                                                               const gchar* _tmp84_ = NULL;
+                                                                                               _tmp83_ = nv;
+                                                                                               _tmp83__length1 = nv_length1;
+                                                                                               _tmp84_ = _tmp83_[0];
+                                                                                               if (g_strcmp0 (_tmp84_, "array_length_type") == 0) {
+                                                                                                       ValaDelegate* _tmp85_ = NULL;
+                                                                                                       gchar** _tmp86_ = NULL;
+                                                                                                       gint _tmp86__length1 = 0;
+                                                                                                       const gchar* _tmp87_ = NULL;
                                                                                                        gchar* _tmp88_ = NULL;
-                                                                                                       _tmp84_ = cb;
-                                                                                                       _tmp85_ = nv;
-                                                                                                       _tmp85__length1 = nv_length1;
-                                                                                                       _tmp86_ = _tmp85_[1];
-                                                                                                       _tmp87_ = vala_gidl_parser_eval (self, _tmp86_);
-                                                                                                       _tmp88_ = _tmp87_;
-                                                                                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp84_, "CCode", "array_length_type", _tmp88_, NULL);
-                                                                                                       _g_free0 (_tmp88_);
+                                                                                                       gchar* _tmp89_ = NULL;
+                                                                                                       _tmp85_ = cb;
+                                                                                                       _tmp86_ = nv;
+                                                                                                       _tmp86__length1 = nv_length1;
+                                                                                                       _tmp87_ = _tmp86_[1];
+                                                                                                       _tmp88_ = vala_gidl_parser_eval (self, _tmp87_);
+                                                                                                       _tmp89_ = _tmp88_;
+                                                                                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp85_, "CCode", "array_length_type", _tmp89_, NULL);
+                                                                                                       _g_free0 (_tmp89_);
                                                                                                } else {
-                                                                                                       gchar** _tmp89_ = NULL;
-                                                                                                       gint _tmp89__length1 = 0;
-                                                                                                       const gchar* _tmp90_ = NULL;
-                                                                                                       _tmp89_ = nv;
-                                                                                                       _tmp89__length1 = nv_length1;
-                                                                                                       _tmp90_ = _tmp89_[0];
-                                                                                                       if (g_strcmp0 (_tmp90_, "type_name") == 0) {
-                                                                                                               ValaDelegate* _tmp91_ = NULL;
-                                                                                                               gchar** _tmp92_ = NULL;
-                                                                                                               gint _tmp92__length1 = 0;
-                                                                                                               const gchar* _tmp93_ = NULL;
-                                                                                                               gchar* _tmp94_ = NULL;
+                                                                                                       gchar** _tmp90_ = NULL;
+                                                                                                       gint _tmp90__length1 = 0;
+                                                                                                       const gchar* _tmp91_ = NULL;
+                                                                                                       _tmp90_ = nv;
+                                                                                                       _tmp90__length1 = nv_length1;
+                                                                                                       _tmp91_ = _tmp90_[0];
+                                                                                                       if (g_strcmp0 (_tmp91_, "type_name") == 0) {
+                                                                                                               ValaDelegate* _tmp92_ = NULL;
+                                                                                                               gchar** _tmp93_ = NULL;
+                                                                                                               gint _tmp93__length1 = 0;
+                                                                                                               const gchar* _tmp94_ = NULL;
                                                                                                                gchar* _tmp95_ = NULL;
-                                                                                                               ValaDataType* _tmp96_ = NULL;
-                                                                                                               gboolean _tmp97_ = FALSE;
+                                                                                                               gchar* _tmp96_ = NULL;
+                                                                                                               ValaDataType* _tmp97_ = NULL;
                                                                                                                gboolean _tmp98_ = FALSE;
-                                                                                                               ValaDataType* _tmp99_ = NULL;
+                                                                                                               gboolean _tmp99_ = FALSE;
                                                                                                                ValaDataType* _tmp100_ = NULL;
-                                                                                                               _tmp91_ = cb;
-                                                                                                               _tmp92_ = nv;
-                                                                                                               _tmp92__length1 = nv_length1;
-                                                                                                               _tmp93_ = _tmp92_[1];
-                                                                                                               _tmp94_ = vala_gidl_parser_eval (self, _tmp93_);
-                                                                                                               _tmp95_ = _tmp94_;
-                                                                                                               _tmp96_ = return_type;
-                                                                                                               _tmp97_ = vala_data_type_get_value_owned (_tmp96_);
-                                                                                                               _tmp98_ = _tmp97_;
-                                                                                                               _tmp99_ = vala_gidl_parser_parse_type_from_string (self, _tmp95_, _tmp98_, NULL);
+                                                                                                               ValaDataType* _tmp101_ = NULL;
+                                                                                                               _tmp92_ = cb;
+                                                                                                               _tmp93_ = nv;
+                                                                                                               _tmp93__length1 = nv_length1;
+                                                                                                               _tmp94_ = _tmp93_[1];
+                                                                                                               _tmp95_ = vala_gidl_parser_eval (self, _tmp94_);
+                                                                                                               _tmp96_ = _tmp95_;
+                                                                                                               _tmp97_ = return_type;
+                                                                                                               _tmp98_ = vala_data_type_get_value_owned (_tmp97_);
+                                                                                                               _tmp99_ = _tmp98_;
+                                                                                                               _tmp100_ = vala_gidl_parser_parse_type_from_string (self, _tmp96_, _tmp99_, NULL);
                                                                                                                _vala_code_node_unref0 (return_type);
-                                                                                                               return_type = _tmp99_;
-                                                                                                               _tmp100_ = return_type;
-                                                                                                               vala_delegate_set_return_type (_tmp91_, _tmp100_);
-                                                                                                               _g_free0 (_tmp95_);
+                                                                                                               return_type = _tmp100_;
+                                                                                                               _tmp101_ = return_type;
+                                                                                                               vala_delegate_set_return_type (_tmp92_, _tmp101_);
+                                                                                                               _g_free0 (_tmp96_);
                                                                                                        } else {
-                                                                                                               gchar** _tmp101_ = NULL;
-                                                                                                               gint _tmp101__length1 = 0;
-                                                                                                               const gchar* _tmp102_ = NULL;
-                                                                                                               _tmp101_ = nv;
-                                                                                                               _tmp101__length1 = nv_length1;
-                                                                                                               _tmp102_ = _tmp101_[0];
-                                                                                                               if (g_strcmp0 (_tmp102_, "deprecated") == 0) {
-                                                                                                                       gchar** _tmp103_ = NULL;
-                                                                                                                       gint _tmp103__length1 = 0;
-                                                                                                                       const gchar* _tmp104_ = NULL;
-                                                                                                                       gchar* _tmp105_ = NULL;
+                                                                                                               gchar** _tmp102_ = NULL;
+                                                                                                               gint _tmp102__length1 = 0;
+                                                                                                               const gchar* _tmp103_ = NULL;
+                                                                                                               _tmp102_ = nv;
+                                                                                                               _tmp102__length1 = nv_length1;
+                                                                                                               _tmp103_ = _tmp102_[0];
+                                                                                                               if (g_strcmp0 (_tmp103_, "deprecated") == 0) {
+                                                                                                                       gchar** _tmp104_ = NULL;
+                                                                                                                       gint _tmp104__length1 = 0;
+                                                                                                                       const gchar* _tmp105_ = NULL;
                                                                                                                        gchar* _tmp106_ = NULL;
-                                                                                                                       gboolean _tmp107_ = FALSE;
-                                                                                                                       _tmp103_ = nv;
-                                                                                                                       _tmp103__length1 = nv_length1;
-                                                                                                                       _tmp104_ = _tmp103_[1];
-                                                                                                                       _tmp105_ = vala_gidl_parser_eval (self, _tmp104_);
-                                                                                                                       _tmp106_ = _tmp105_;
-                                                                                                                       _tmp107_ = g_strcmp0 (_tmp106_, "1") == 0;
-                                                                                                                       _g_free0 (_tmp106_);
-                                                                                                                       if (_tmp107_) {
-                                                                                                                               ValaDelegate* _tmp108_ = NULL;
-                                                                                                                               _tmp108_ = cb;
-                                                                                                                               vala_code_node_set_attribute ((ValaCodeNode*) _tmp108_, "Deprecated", TRUE, NULL);
+                                                                                                                       gchar* _tmp107_ = NULL;
+                                                                                                                       gboolean _tmp108_ = FALSE;
+                                                                                                                       _tmp104_ = nv;
+                                                                                                                       _tmp104__length1 = nv_length1;
+                                                                                                                       _tmp105_ = _tmp104_[1];
+                                                                                                                       _tmp106_ = vala_gidl_parser_eval (self, _tmp105_);
+                                                                                                                       _tmp107_ = _tmp106_;
+                                                                                                                       _tmp108_ = g_strcmp0 (_tmp107_, "1") == 0;
+                                                                                                                       _g_free0 (_tmp107_);
+                                                                                                                       if (_tmp108_) {
+                                                                                                                               ValaDelegate* _tmp109_ = NULL;
+                                                                                                                               _tmp109_ = cb;
+                                                                                                                               vala_code_node_set_attribute ((ValaCodeNode*) _tmp109_, "Deprecated", TRUE, NULL);
                                                                                                                        }
                                                                                                                } else {
-                                                                                                                       gchar** _tmp109_ = NULL;
-                                                                                                                       gint _tmp109__length1 = 0;
-                                                                                                                       const gchar* _tmp110_ = NULL;
-                                                                                                                       _tmp109_ = nv;
-                                                                                                                       _tmp109__length1 = nv_length1;
-                                                                                                                       _tmp110_ = _tmp109_[0];
-                                                                                                                       if (g_strcmp0 (_tmp110_, "replacement") == 0) {
-                                                                                                                               ValaDelegate* _tmp111_ = NULL;
-                                                                                                                               gchar** _tmp112_ = NULL;
-                                                                                                                               gint _tmp112__length1 = 0;
-                                                                                                                               const gchar* _tmp113_ = NULL;
-                                                                                                                               gchar* _tmp114_ = NULL;
+                                                                                                                       gchar** _tmp110_ = NULL;
+                                                                                                                       gint _tmp110__length1 = 0;
+                                                                                                                       const gchar* _tmp111_ = NULL;
+                                                                                                                       _tmp110_ = nv;
+                                                                                                                       _tmp110__length1 = nv_length1;
+                                                                                                                       _tmp111_ = _tmp110_[0];
+                                                                                                                       if (g_strcmp0 (_tmp111_, "replacement") == 0) {
+                                                                                                                               ValaDelegate* _tmp112_ = NULL;
+                                                                                                                               gchar** _tmp113_ = NULL;
+                                                                                                                               gint _tmp113__length1 = 0;
+                                                                                                                               const gchar* _tmp114_ = NULL;
                                                                                                                                gchar* _tmp115_ = NULL;
-                                                                                                                               _tmp111_ = cb;
-                                                                                                                               _tmp112_ = nv;
-                                                                                                                               _tmp112__length1 = nv_length1;
-                                                                                                                               _tmp113_ = _tmp112_[1];
-                                                                                                                               _tmp114_ = vala_gidl_parser_eval (self, _tmp113_);
-                                                                                                                               _tmp115_ = _tmp114_;
-                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp111_, "Deprecated", "replacement", _tmp115_, NULL);
-                                                                                                                               _g_free0 (_tmp115_);
+                                                                                                                               gchar* _tmp116_ = NULL;
+                                                                                                                               _tmp112_ = cb;
+                                                                                                                               _tmp113_ = nv;
+                                                                                                                               _tmp113__length1 = nv_length1;
+                                                                                                                               _tmp114_ = _tmp113_[1];
+                                                                                                                               _tmp115_ = vala_gidl_parser_eval (self, _tmp114_);
+                                                                                                                               _tmp116_ = _tmp115_;
+                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp112_, "Deprecated", "replacement", _tmp116_, NULL);
+                                                                                                                               _g_free0 (_tmp116_);
                                                                                                                        } else {
-                                                                                                                               gchar** _tmp116_ = NULL;
-                                                                                                                               gint _tmp116__length1 = 0;
-                                                                                                                               const gchar* _tmp117_ = NULL;
-                                                                                                                               _tmp116_ = nv;
-                                                                                                                               _tmp116__length1 = nv_length1;
-                                                                                                                               _tmp117_ = _tmp116_[0];
-                                                                                                                               if (g_strcmp0 (_tmp117_, "deprecated_since") == 0) {
-                                                                                                                                       ValaDelegate* _tmp118_ = NULL;
-                                                                                                                                       gchar** _tmp119_ = NULL;
-                                                                                                                                       gint _tmp119__length1 = 0;
-                                                                                                                                       const gchar* _tmp120_ = NULL;
-                                                                                                                                       gchar* _tmp121_ = NULL;
+                                                                                                                               gchar** _tmp117_ = NULL;
+                                                                                                                               gint _tmp117__length1 = 0;
+                                                                                                                               const gchar* _tmp118_ = NULL;
+                                                                                                                               _tmp117_ = nv;
+                                                                                                                               _tmp117__length1 = nv_length1;
+                                                                                                                               _tmp118_ = _tmp117_[0];
+                                                                                                                               if (g_strcmp0 (_tmp118_, "deprecated_since") == 0) {
+                                                                                                                                       ValaDelegate* _tmp119_ = NULL;
+                                                                                                                                       gchar** _tmp120_ = NULL;
+                                                                                                                                       gint _tmp120__length1 = 0;
+                                                                                                                                       const gchar* _tmp121_ = NULL;
                                                                                                                                        gchar* _tmp122_ = NULL;
-                                                                                                                                       _tmp118_ = cb;
-                                                                                                                                       _tmp119_ = nv;
-                                                                                                                                       _tmp119__length1 = nv_length1;
-                                                                                                                                       _tmp120_ = _tmp119_[1];
-                                                                                                                                       _tmp121_ = vala_gidl_parser_eval (self, _tmp120_);
-                                                                                                                                       _tmp122_ = _tmp121_;
-                                                                                                                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp118_, "Deprecated", "since", _tmp122_, NULL);
-                                                                                                                                       _g_free0 (_tmp122_);
+                                                                                                                                       gchar* _tmp123_ = NULL;
+                                                                                                                                       _tmp119_ = cb;
+                                                                                                                                       _tmp120_ = nv;
+                                                                                                                                       _tmp120__length1 = nv_length1;
+                                                                                                                                       _tmp121_ = _tmp120_[1];
+                                                                                                                                       _tmp122_ = vala_gidl_parser_eval (self, _tmp121_);
+                                                                                                                                       _tmp123_ = _tmp122_;
+                                                                                                                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp119_, "Deprecated", "since", _tmp123_, NULL);
+                                                                                                                                       _g_free0 (_tmp123_);
                                                                                                                                } else {
-                                                                                                                                       gchar** _tmp123_ = NULL;
-                                                                                                                                       gint _tmp123__length1 = 0;
-                                                                                                                                       const gchar* _tmp124_ = NULL;
-                                                                                                                                       _tmp123_ = nv;
-                                                                                                                                       _tmp123__length1 = nv_length1;
-                                                                                                                                       _tmp124_ = _tmp123_[0];
-                                                                                                                                       if (g_strcmp0 (_tmp124_, "type_arguments") == 0) {
-                                                                                                                                               ValaDataType* _tmp125_ = NULL;
-                                                                                                                                               gchar** _tmp126_ = NULL;
-                                                                                                                                               gint _tmp126__length1 = 0;
-                                                                                                                                               const gchar* _tmp127_ = NULL;
-                                                                                                                                               gchar* _tmp128_ = NULL;
+                                                                                                                                       gchar** _tmp124_ = NULL;
+                                                                                                                                       gint _tmp124__length1 = 0;
+                                                                                                                                       const gchar* _tmp125_ = NULL;
+                                                                                                                                       _tmp124_ = nv;
+                                                                                                                                       _tmp124__length1 = nv_length1;
+                                                                                                                                       _tmp125_ = _tmp124_[0];
+                                                                                                                                       if (g_strcmp0 (_tmp125_, "type_arguments") == 0) {
+                                                                                                                                               ValaDataType* _tmp126_ = NULL;
+                                                                                                                                               gchar** _tmp127_ = NULL;
+                                                                                                                                               gint _tmp127__length1 = 0;
+                                                                                                                                               const gchar* _tmp128_ = NULL;
                                                                                                                                                gchar* _tmp129_ = NULL;
-                                                                                                                                               _tmp125_ = return_type;
-                                                                                                                                               _tmp126_ = nv;
-                                                                                                                                               _tmp126__length1 = nv_length1;
-                                                                                                                                               _tmp127_ = _tmp126_[1];
-                                                                                                                                               _tmp128_ = vala_gidl_parser_eval (self, _tmp127_);
-                                                                                                                                               _tmp129_ = _tmp128_;
-                                                                                                                                               vala_gidl_parser_parse_type_arguments_from_string (self, _tmp125_, _tmp129_, NULL);
-                                                                                                                                               _g_free0 (_tmp129_);
+                                                                                                                                               gchar* _tmp130_ = NULL;
+                                                                                                                                               _tmp126_ = return_type;
+                                                                                                                                               _tmp127_ = nv;
+                                                                                                                                               _tmp127__length1 = nv_length1;
+                                                                                                                                               _tmp128_ = _tmp127_[1];
+                                                                                                                                               _tmp129_ = vala_gidl_parser_eval (self, _tmp128_);
+                                                                                                                                               _tmp130_ = _tmp129_;
+                                                                                                                                               vala_gidl_parser_parse_type_arguments_from_string (self, _tmp126_, _tmp130_, NULL);
+                                                                                                                                               _g_free0 (_tmp130_);
                                                                                                                                        } else {
-                                                                                                                                               gchar** _tmp130_ = NULL;
-                                                                                                                                               gint _tmp130__length1 = 0;
-                                                                                                                                               const gchar* _tmp131_ = NULL;
-                                                                                                                                               _tmp130_ = nv;
-                                                                                                                                               _tmp130__length1 = nv_length1;
-                                                                                                                                               _tmp131_ = _tmp130_[0];
-                                                                                                                                               if (g_strcmp0 (_tmp131_, "instance_pos") == 0) {
-                                                                                                                                                       ValaDelegate* _tmp132_ = NULL;
-                                                                                                                                                       gchar** _tmp133_ = NULL;
-                                                                                                                                                       gint _tmp133__length1 = 0;
-                                                                                                                                                       const gchar* _tmp134_ = NULL;
-                                                                                                                                                       gchar* _tmp135_ = NULL;
+                                                                                                                                               gchar** _tmp131_ = NULL;
+                                                                                                                                               gint _tmp131__length1 = 0;
+                                                                                                                                               const gchar* _tmp132_ = NULL;
+                                                                                                                                               _tmp131_ = nv;
+                                                                                                                                               _tmp131__length1 = nv_length1;
+                                                                                                                                               _tmp132_ = _tmp131_[0];
+                                                                                                                                               if (g_strcmp0 (_tmp132_, "instance_pos") == 0) {
+                                                                                                                                                       ValaDelegate* _tmp133_ = NULL;
+                                                                                                                                                       gchar** _tmp134_ = NULL;
+                                                                                                                                                       gint _tmp134__length1 = 0;
+                                                                                                                                                       const gchar* _tmp135_ = NULL;
                                                                                                                                                        gchar* _tmp136_ = NULL;
-                                                                                                                                                       gdouble _tmp137_ = 0.0;
-                                                                                                                                                       _tmp132_ = cb;
-                                                                                                                                                       _tmp133_ = nv;
-                                                                                                                                                       _tmp133__length1 = nv_length1;
-                                                                                                                                                       _tmp134_ = _tmp133_[1];
-                                                                                                                                                       _tmp135_ = vala_gidl_parser_eval (self, _tmp134_);
-                                                                                                                                                       _tmp136_ = _tmp135_;
-                                                                                                                                                       _tmp137_ = double_parse (_tmp136_);
-                                                                                                                                                       vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp132_, "CCode", "instance_pos", _tmp137_, NULL);
-                                                                                                                                                       _g_free0 (_tmp136_);
+                                                                                                                                                       gchar* _tmp137_ = NULL;
+                                                                                                                                                       gdouble _tmp138_ = 0.0;
+                                                                                                                                                       _tmp133_ = cb;
+                                                                                                                                                       _tmp134_ = nv;
+                                                                                                                                                       _tmp134__length1 = nv_length1;
+                                                                                                                                                       _tmp135_ = _tmp134_[1];
+                                                                                                                                                       _tmp136_ = vala_gidl_parser_eval (self, _tmp135_);
+                                                                                                                                                       _tmp137_ = _tmp136_;
+                                                                                                                                                       _tmp138_ = double_parse (_tmp137_);
+                                                                                                                                                       vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp133_, "CCode", "instance_pos", _tmp138_, NULL);
+                                                                                                                                                       _g_free0 (_tmp137_);
                                                                                                                                                } else {
-                                                                                                                                                       gchar** _tmp138_ = NULL;
-                                                                                                                                                       gint _tmp138__length1 = 0;
-                                                                                                                                                       const gchar* _tmp139_ = NULL;
-                                                                                                                                                       _tmp138_ = nv;
-                                                                                                                                                       _tmp138__length1 = nv_length1;
-                                                                                                                                                       _tmp139_ = _tmp138_[0];
-                                                                                                                                                       if (g_strcmp0 (_tmp139_, "type_parameters") == 0) {
-                                                                                                                                                               gchar** _tmp140_ = NULL;
-                                                                                                                                                               gint _tmp140__length1 = 0;
-                                                                                                                                                               const gchar* _tmp141_ = NULL;
-                                                                                                                                                               gchar* _tmp142_ = NULL;
+                                                                                                                                                       gchar** _tmp139_ = NULL;
+                                                                                                                                                       gint _tmp139__length1 = 0;
+                                                                                                                                                       const gchar* _tmp140_ = NULL;
+                                                                                                                                                       _tmp139_ = nv;
+                                                                                                                                                       _tmp139__length1 = nv_length1;
+                                                                                                                                                       _tmp140_ = _tmp139_[0];
+                                                                                                                                                       if (g_strcmp0 (_tmp140_, "type_parameters") == 0) {
+                                                                                                                                                               gchar** _tmp141_ = NULL;
+                                                                                                                                                               gint _tmp141__length1 = 0;
+                                                                                                                                                               const gchar* _tmp142_ = NULL;
                                                                                                                                                                gchar* _tmp143_ = NULL;
-                                                                                                                                                               gchar** _tmp144_ = NULL;
+                                                                                                                                                               gchar* _tmp144_ = NULL;
                                                                                                                                                                gchar** _tmp145_ = NULL;
                                                                                                                                                                gchar** _tmp146_ = NULL;
-                                                                                                                                                               gint _tmp146__length1 = 0;
-                                                                                                                                                               _tmp140_ = nv;
-                                                                                                                                                               _tmp140__length1 = nv_length1;
-                                                                                                                                                               _tmp141_ = _tmp140_[1];
-                                                                                                                                                               _tmp142_ = vala_gidl_parser_eval (self, _tmp141_);
-                                                                                                                                                               _tmp143_ = _tmp142_;
-                                                                                                                                                               _tmp145_ = _tmp144_ = g_strsplit (_tmp143_, ",", 0);
-                                                                                                                                                               _tmp146_ = _tmp145_;
-                                                                                                                                                               _tmp146__length1 = _vala_array_length (_tmp144_);
-                                                                                                                                                               _g_free0 (_tmp143_);
+                                                                                                                                                               gchar** _tmp147_ = NULL;
+                                                                                                                                                               gint _tmp147__length1 = 0;
+                                                                                                                                                               _tmp141_ = nv;
+                                                                                                                                                               _tmp141__length1 = nv_length1;
+                                                                                                                                                               _tmp142_ = _tmp141_[1];
+                                                                                                                                                               _tmp143_ = vala_gidl_parser_eval (self, _tmp142_);
+                                                                                                                                                               _tmp144_ = _tmp143_;
+                                                                                                                                                               _tmp146_ = _tmp145_ = g_strsplit (_tmp144_, ",", 0);
+                                                                                                                                                               _tmp147_ = _tmp146_;
+                                                                                                                                                               _tmp147__length1 = _vala_array_length (_tmp145_);
+                                                                                                                                                               _g_free0 (_tmp144_);
                                                                                                                                                                {
                                                                                                                                                                        gchar** type_param_name_collection = NULL;
                                                                                                                                                                        gint type_param_name_collection_length1 = 0;
                                                                                                                                                                        gint _type_param_name_collection_size_ = 0;
                                                                                                                                                                        gint type_param_name_it = 0;
-                                                                                                                                                                       type_param_name_collection = _tmp146_;
-                                                                                                                                                                       type_param_name_collection_length1 = _tmp146__length1;
-                                                                                                                                                                       for (type_param_name_it = 0; type_param_name_it < _tmp146__length1; type_param_name_it = type_param_name_it + 1) {
-                                                                                                                                                                               gchar* _tmp147_ = NULL;
+                                                                                                                                                                       type_param_name_collection = _tmp147_;
+                                                                                                                                                                       type_param_name_collection_length1 = _tmp147__length1;
+                                                                                                                                                                       for (type_param_name_it = 0; type_param_name_it < _tmp147__length1; type_param_name_it = type_param_name_it + 1) {
+                                                                                                                                                                               gchar* _tmp148_ = NULL;
                                                                                                                                                                                gchar* type_param_name = NULL;
-                                                                                                                                                                               _tmp147_ = g_strdup (type_param_name_collection[type_param_name_it]);
-                                                                                                                                                                               type_param_name = _tmp147_;
+                                                                                                                                                                               _tmp148_ = g_strdup (type_param_name_collection[type_param_name_it]);
+                                                                                                                                                                               type_param_name = _tmp148_;
                                                                                                                                                                                {
-                                                                                                                                                                                       ValaDelegate* _tmp148_ = NULL;
-                                                                                                                                                                                       const gchar* _tmp149_ = NULL;
-                                                                                                                                                                                       ValaSourceReference* _tmp150_ = NULL;
-                                                                                                                                                                                       ValaTypeParameter* _tmp151_ = NULL;
+                                                                                                                                                                                       ValaDelegate* _tmp149_ = NULL;
+                                                                                                                                                                                       const gchar* _tmp150_ = NULL;
+                                                                                                                                                                                       ValaSourceReference* _tmp151_ = NULL;
                                                                                                                                                                                        ValaTypeParameter* _tmp152_ = NULL;
-                                                                                                                                                                                       _tmp148_ = cb;
-                                                                                                                                                                                       _tmp149_ = type_param_name;
-                                                                                                                                                                                       _tmp150_ = self->priv->current_source_reference;
-                                                                                                                                                                                       _tmp151_ = vala_typeparameter_new (_tmp149_, _tmp150_);
-                                                                                                                                                                                       _tmp152_ = _tmp151_;
-                                                                                                                                                                                       vala_delegate_add_type_parameter (_tmp148_, _tmp152_);
-                                                                                                                                                                                       _vala_code_node_unref0 (_tmp152_);
+                                                                                                                                                                                       ValaTypeParameter* _tmp153_ = NULL;
+                                                                                                                                                                                       _tmp149_ = cb;
+                                                                                                                                                                                       _tmp150_ = type_param_name;
+                                                                                                                                                                                       _tmp151_ = self->priv->current_source_reference;
+                                                                                                                                                                                       _tmp152_ = vala_typeparameter_new (_tmp150_, _tmp151_);
+                                                                                                                                                                                       _tmp153_ = _tmp152_;
+                                                                                                                                                                                       vala_delegate_add_type_parameter (_tmp149_, _tmp153_);
+                                                                                                                                                                                       _vala_code_node_unref0 (_tmp153_);
                                                                                                                                                                                        _g_free0 (type_param_name);
                                                                                                                                                                                }
                                                                                                                                                                        }
                                                                                                                                                                        type_param_name_collection = (_vala_array_free (type_param_name_collection, type_param_name_collection_length1, (GDestroyNotify) g_free), NULL);
                                                                                                                                                                }
                                                                                                                                                        } else {
-                                                                                                                                                               gchar** _tmp153_ = NULL;
-                                                                                                                                                               gint _tmp153__length1 = 0;
-                                                                                                                                                               const gchar* _tmp154_ = NULL;
-                                                                                                                                                               _tmp153_ = nv;
-                                                                                                                                                               _tmp153__length1 = nv_length1;
-                                                                                                                                                               _tmp154_ = _tmp153_[0];
-                                                                                                                                                               if (g_strcmp0 (_tmp154_, "experimental") == 0) {
-                                                                                                                                                                       gchar** _tmp155_ = NULL;
-                                                                                                                                                                       gint _tmp155__length1 = 0;
-                                                                                                                                                                       const gchar* _tmp156_ = NULL;
-                                                                                                                                                                       gchar* _tmp157_ = NULL;
+                                                                                                                                                               gchar** _tmp154_ = NULL;
+                                                                                                                                                               gint _tmp154__length1 = 0;
+                                                                                                                                                               const gchar* _tmp155_ = NULL;
+                                                                                                                                                               _tmp154_ = nv;
+                                                                                                                                                               _tmp154__length1 = nv_length1;
+                                                                                                                                                               _tmp155_ = _tmp154_[0];
+                                                                                                                                                               if (g_strcmp0 (_tmp155_, "experimental") == 0) {
+                                                                                                                                                                       gchar** _tmp156_ = NULL;
+                                                                                                                                                                       gint _tmp156__length1 = 0;
+                                                                                                                                                                       const gchar* _tmp157_ = NULL;
                                                                                                                                                                        gchar* _tmp158_ = NULL;
-                                                                                                                                                                       gboolean _tmp159_ = FALSE;
-                                                                                                                                                                       _tmp155_ = nv;
-                                                                                                                                                                       _tmp155__length1 = nv_length1;
-                                                                                                                                                                       _tmp156_ = _tmp155_[1];
-                                                                                                                                                                       _tmp157_ = vala_gidl_parser_eval (self, _tmp156_);
-                                                                                                                                                                       _tmp158_ = _tmp157_;
-                                                                                                                                                                       _tmp159_ = g_strcmp0 (_tmp158_, "1") == 0;
-                                                                                                                                                                       _g_free0 (_tmp158_);
-                                                                                                                                                                       if (_tmp159_) {
-                                                                                                                                                                               ValaDelegate* _tmp160_ = NULL;
-                                                                                                                                                                               _tmp160_ = cb;
-                                                                                                                                                                               vala_code_node_set_attribute ((ValaCodeNode*) _tmp160_, "Experimental", TRUE, NULL);
+                                                                                                                                                                       gchar* _tmp159_ = NULL;
+                                                                                                                                                                       gboolean _tmp160_ = FALSE;
+                                                                                                                                                                       _tmp156_ = nv;
+                                                                                                                                                                       _tmp156__length1 = nv_length1;
+                                                                                                                                                                       _tmp157_ = _tmp156_[1];
+                                                                                                                                                                       _tmp158_ = vala_gidl_parser_eval (self, _tmp157_);
+                                                                                                                                                                       _tmp159_ = _tmp158_;
+                                                                                                                                                                       _tmp160_ = g_strcmp0 (_tmp159_, "1") == 0;
+                                                                                                                                                                       _g_free0 (_tmp159_);
+                                                                                                                                                                       if (_tmp160_) {
+                                                                                                                                                                               ValaDelegate* _tmp161_ = NULL;
+                                                                                                                                                                               _tmp161_ = cb;
+                                                                                                                                                                               vala_code_node_set_attribute ((ValaCodeNode*) _tmp161_, "Experimental", TRUE, NULL);
                                                                                                                                                                        }
                                                                                                                                                                }
                                                                                                                                                        }
@@ -3643,592 +3646,595 @@ static ValaDelegate* vala_gidl_parser_parse_delegate (ValaGIdlParser* self, GIdl
                        }
                }
        }
-       _tmp161_ = f_node;
-       _tmp162_ = _tmp161_->parameters;
-       _tmp163_ = g_list_length (_tmp162_);
-       remaining_params = _tmp163_;
-       _tmp164_ = f_node;
-       _tmp165_ = _tmp164_->parameters;
+       _tmp162_ = f_node;
+       _tmp163_ = _tmp162_->parameters;
+       _tmp164_ = g_list_length (_tmp163_);
+       remaining_params = _tmp164_;
+       _tmp165_ = f_node;
+       _tmp166_ = _tmp165_->parameters;
        {
                GList* param_collection = NULL;
                GList* param_it = NULL;
-               param_collection = _tmp165_;
+               param_collection = _tmp166_;
                for (param_it = param_collection; param_it != NULL; param_it = param_it->next) {
                        GIdlNodeParam* param = NULL;
                        param = (GIdlNodeParam*) param_it->data;
                        {
                                GIdlNode* param_node = NULL;
-                               GIdlNodeParam* _tmp166_ = NULL;
-                               gboolean _tmp167_ = FALSE;
+                               GIdlNodeParam* _tmp167_ = NULL;
                                gboolean _tmp168_ = FALSE;
                                gboolean _tmp169_ = FALSE;
-                               guint _tmp344_ = 0U;
-                               _tmp166_ = param;
-                               param_node = (GIdlNode*) _tmp166_;
-                               _tmp169_ = check_has_target;
-                               if (_tmp169_) {
-                                       guint _tmp170_ = 0U;
-                                       _tmp170_ = remaining_params;
-                                       _tmp168_ = _tmp170_ == ((guint) 1);
+                               gboolean _tmp170_ = FALSE;
+                               guint _tmp346_ = 0U;
+                               _tmp167_ = param;
+                               param_node = (GIdlNode*) _tmp167_;
+                               _tmp170_ = check_has_target;
+                               if (_tmp170_) {
+                                       guint _tmp171_ = 0U;
+                                       _tmp171_ = remaining_params;
+                                       _tmp169_ = _tmp171_ == ((guint) 1);
                                } else {
-                                       _tmp168_ = FALSE;
+                                       _tmp169_ = FALSE;
                                }
-                               if (_tmp168_) {
-                                       gboolean _tmp171_ = FALSE;
-                                       GIdlNode* _tmp172_ = NULL;
-                                       const gchar* _tmp173_ = NULL;
-                                       _tmp172_ = param_node;
-                                       _tmp173_ = _tmp172_->name;
-                                       if (g_strcmp0 (_tmp173_, "user_data") == 0) {
-                                               _tmp171_ = TRUE;
+                               if (_tmp169_) {
+                                       gboolean _tmp172_ = FALSE;
+                                       GIdlNode* _tmp173_ = NULL;
+                                       const gchar* _tmp174_ = NULL;
+                                       _tmp173_ = param_node;
+                                       _tmp174_ = _tmp173_->name;
+                                       if (g_strcmp0 (_tmp174_, "user_data") == 0) {
+                                               _tmp172_ = TRUE;
                                        } else {
-                                               GIdlNode* _tmp174_ = NULL;
-                                               const gchar* _tmp175_ = NULL;
-                                               _tmp174_ = param_node;
-                                               _tmp175_ = _tmp174_->name;
-                                               _tmp171_ = g_strcmp0 (_tmp175_, "data") == 0;
+                                               GIdlNode* _tmp175_ = NULL;
+                                               const gchar* _tmp176_ = NULL;
+                                               _tmp175_ = param_node;
+                                               _tmp176_ = _tmp175_->name;
+                                               _tmp172_ = g_strcmp0 (_tmp176_, "data") == 0;
                                        }
-                                       _tmp167_ = _tmp171_;
+                                       _tmp168_ = _tmp172_;
                                } else {
-                                       _tmp167_ = FALSE;
+                                       _tmp168_ = FALSE;
                                }
-                               if (_tmp167_) {
-                                       ValaDelegate* _tmp176_ = NULL;
-                                       _tmp176_ = cb;
-                                       vala_delegate_set_has_target (_tmp176_, TRUE);
+                               if (_tmp168_) {
+                                       ValaDelegate* _tmp177_ = NULL;
+                                       _tmp177_ = cb;
+                                       vala_delegate_set_has_target (_tmp177_, TRUE);
                                } else {
-                                       gboolean _tmp177_ = FALSE;
                                        gboolean _tmp178_ = FALSE;
+                                       gboolean _tmp179_ = FALSE;
                                        gchar* param_name = NULL;
-                                       GIdlNode* _tmp188_ = NULL;
-                                       const gchar* _tmp189_ = NULL;
-                                       gchar* _tmp190_ = NULL;
-                                       const gchar* _tmp191_ = NULL;
+                                       GIdlNode* _tmp189_ = NULL;
+                                       const gchar* _tmp190_ = NULL;
+                                       gchar* _tmp191_ = NULL;
+                                       const gchar* _tmp192_ = NULL;
                                        ValaParameterDirection direction = 0;
                                        ValaDataType* param_type = NULL;
-                                       GIdlNodeParam* _tmp195_ = NULL;
-                                       ValaParameterDirection _tmp196_ = 0;
-                                       ValaDataType* _tmp197_ = NULL;
+                                       GIdlNodeParam* _tmp196_ = NULL;
+                                       ValaParameterDirection _tmp197_ = 0;
+                                       ValaDataType* _tmp198_ = NULL;
                                        ValaParameter* p = NULL;
-                                       const gchar* _tmp198_ = NULL;
-                                       ValaDataType* _tmp199_ = NULL;
-                                       ValaParameter* _tmp200_ = NULL;
+                                       const gchar* _tmp199_ = NULL;
+                                       ValaDataType* _tmp200_ = NULL;
                                        ValaParameter* _tmp201_ = NULL;
-                                       ValaParameterDirection _tmp202_ = 0;
+                                       ValaParameter* _tmp202_ = NULL;
+                                       ValaParameterDirection _tmp203_ = 0;
                                        gboolean hide_param = FALSE;
                                        gboolean show_param = FALSE;
                                        gboolean array_requested = FALSE;
                                        gboolean out_requested = FALSE;
-                                       GIdlNode* _tmp203_ = NULL;
-                                       const gchar* _tmp204_ = NULL;
-                                       GIdlNode* _tmp205_ = NULL;
-                                       const gchar* _tmp206_ = NULL;
-                                       gchar* _tmp207_ = NULL;
+                                       GIdlNode* _tmp204_ = NULL;
+                                       const gchar* _tmp205_ = NULL;
+                                       GIdlNode* _tmp206_ = NULL;
+                                       const gchar* _tmp207_ = NULL;
                                        gchar* _tmp208_ = NULL;
-                                       gint _tmp209_ = 0;
-                                       gchar** _tmp210_ = NULL;
+                                       gchar* _tmp209_ = NULL;
+                                       gint _tmp210_ = 0;
                                        gchar** _tmp211_ = NULL;
-                                       gint _tmp211__length1 = 0;
-                                       gboolean _tmp339_ = FALSE;
-                                       gboolean _tmp340_ = FALSE;
-                                       _tmp178_ = suppress_throws;
-                                       if (_tmp178_ == FALSE) {
-                                               GIdlNodeParam* _tmp179_ = NULL;
-                                               gboolean _tmp180_ = FALSE;
-                                               _tmp179_ = param;
-                                               _tmp180_ = vala_gidl_parser_param_is_exception (self, _tmp179_);
-                                               _tmp177_ = _tmp180_;
+                                       gchar** _tmp212_ = NULL;
+                                       gint _tmp212__length1 = 0;
+                                       gboolean _tmp341_ = FALSE;
+                                       gboolean _tmp342_ = FALSE;
+                                       _tmp179_ = suppress_throws;
+                                       if (_tmp179_ == FALSE) {
+                                               GIdlNodeParam* _tmp180_ = NULL;
+                                               gboolean _tmp181_ = FALSE;
+                                               _tmp180_ = param;
+                                               _tmp181_ = vala_gidl_parser_param_is_exception (self, _tmp180_);
+                                               _tmp178_ = _tmp181_;
                                        } else {
-                                               _tmp177_ = FALSE;
+                                               _tmp178_ = FALSE;
                                        }
-                                       if (_tmp177_) {
-                                               const gchar* _tmp181_ = NULL;
-                                               guint _tmp187_ = 0U;
-                                               _tmp181_ = error_types;
-                                               if (_tmp181_ == NULL) {
-                                                       ValaDelegate* _tmp182_ = NULL;
-                                                       GIdlNodeParam* _tmp183_ = NULL;
-                                                       GIdlNodeType* _tmp184_ = NULL;
-                                                       ValaDataType* _tmp185_ = NULL;
+                                       if (_tmp178_) {
+                                               const gchar* _tmp182_ = NULL;
+                                               guint _tmp188_ = 0U;
+                                               _tmp182_ = error_types;
+                                               if (_tmp182_ == NULL) {
+                                                       ValaDelegate* _tmp183_ = NULL;
+                                                       GIdlNodeParam* _tmp184_ = NULL;
+                                                       GIdlNodeType* _tmp185_ = NULL;
                                                        ValaDataType* _tmp186_ = NULL;
-                                                       _tmp182_ = cb;
-                                                       _tmp183_ = param;
-                                                       _tmp184_ = _tmp183_->type;
-                                                       _tmp185_ = vala_gidl_parser_parse_type (self, _tmp184_, NULL);
-                                                       _tmp186_ = _tmp185_;
-                                                       vala_code_node_add_error_type ((ValaCodeNode*) _tmp182_, _tmp186_);
-                                                       _vala_code_node_unref0 (_tmp186_);
+                                                       ValaDataType* _tmp187_ = NULL;
+                                                       _tmp183_ = cb;
+                                                       _tmp184_ = param;
+                                                       _tmp185_ = _tmp184_->type;
+                                                       _tmp186_ = vala_gidl_parser_parse_type (self, _tmp185_, NULL);
+                                                       _tmp187_ = _tmp186_;
+                                                       vala_code_node_add_error_type ((ValaCodeNode*) _tmp183_, _tmp187_);
+                                                       _vala_code_node_unref0 (_tmp187_);
                                                }
-                                               _tmp187_ = remaining_params;
-                                               remaining_params = _tmp187_ - 1;
+                                               _tmp188_ = remaining_params;
+                                               remaining_params = _tmp188_ - 1;
                                                continue;
                                        }
-                                       _tmp188_ = param_node;
-                                       _tmp189_ = _tmp188_->name;
-                                       _tmp190_ = g_strdup (_tmp189_);
-                                       param_name = _tmp190_;
-                                       _tmp191_ = param_name;
-                                       if (g_strcmp0 (_tmp191_, "string") == 0) {
-                                               gchar* _tmp192_ = NULL;
-                                               _tmp192_ = g_strdup ("str");
+                                       _tmp189_ = param_node;
+                                       _tmp190_ = _tmp189_->name;
+                                       _tmp191_ = g_strdup (_tmp190_);
+                                       param_name = _tmp191_;
+                                       _tmp192_ = param_name;
+                                       if (g_strcmp0 (_tmp192_, "string") == 0) {
+                                               gchar* _tmp193_ = NULL;
+                                               _tmp193_ = g_strdup ("str");
                                                _g_free0 (param_name);
-                                               param_name = _tmp192_;
+                                               param_name = _tmp193_;
                                        } else {
-                                               const gchar* _tmp193_ = NULL;
-                                               _tmp193_ = param_name;
-                                               if (g_strcmp0 (_tmp193_, "self") == 0) {
-                                                       gchar* _tmp194_ = NULL;
-                                                       _tmp194_ = g_strdup ("_self");
+                                               const gchar* _tmp194_ = NULL;
+                                               _tmp194_ = param_name;
+                                               if (g_strcmp0 (_tmp194_, "self") == 0) {
+                                                       gchar* _tmp195_ = NULL;
+                                                       _tmp195_ = g_strdup ("_self");
                                                        _g_free0 (param_name);
-                                                       param_name = _tmp194_;
+                                                       param_name = _tmp195_;
                                                }
                                        }
-                                       _tmp195_ = param;
-                                       _tmp197_ = vala_gidl_parser_parse_param (self, _tmp195_, &_tmp196_);
-                                       direction = _tmp196_;
-                                       param_type = _tmp197_;
-                                       _tmp198_ = param_name;
-                                       _tmp199_ = param_type;
-                                       _tmp200_ = vala_parameter_new (_tmp198_, _tmp199_, NULL);
-                                       p = _tmp200_;
-                                       _tmp201_ = p;
-                                       _tmp202_ = direction;
-                                       vala_parameter_set_direction (_tmp201_, _tmp202_);
+                                       _tmp196_ = param;
+                                       _tmp198_ = vala_gidl_parser_parse_param (self, _tmp196_, &_tmp197_);
+                                       direction = _tmp197_;
+                                       param_type = _tmp198_;
+                                       _tmp199_ = param_name;
+                                       _tmp200_ = param_type;
+                                       _tmp201_ = vala_parameter_new (_tmp199_, _tmp200_, NULL);
+                                       p = _tmp201_;
+                                       _tmp202_ = p;
+                                       _tmp203_ = direction;
+                                       vala_parameter_set_direction (_tmp202_, _tmp203_);
                                        hide_param = FALSE;
                                        show_param = FALSE;
                                        array_requested = FALSE;
                                        out_requested = FALSE;
-                                       _tmp203_ = node;
-                                       _tmp204_ = _tmp203_->name;
-                                       _tmp205_ = param_node;
-                                       _tmp206_ = _tmp205_->name;
-                                       _tmp207_ = g_strdup_printf ("%s.%s", _tmp204_, _tmp206_);
-                                       _tmp208_ = _tmp207_;
-                                       _tmp210_ = vala_gidl_parser_get_attributes (self, _tmp208_, &_tmp209_);
+                                       _tmp204_ = node;
+                                       _tmp205_ = _tmp204_->name;
+                                       _tmp206_ = param_node;
+                                       _tmp207_ = _tmp206_->name;
+                                       _tmp208_ = g_strdup_printf ("%s.%s", _tmp205_, _tmp207_);
+                                       _tmp209_ = _tmp208_;
+                                       _tmp211_ = vala_gidl_parser_get_attributes (self, _tmp209_, &_tmp210_);
                                        attributes = (_vala_array_free (attributes, attributes_length1, (GDestroyNotify) g_free), NULL);
-                                       attributes = _tmp210_;
-                                       attributes_length1 = _tmp209_;
+                                       attributes = _tmp211_;
+                                       attributes_length1 = _tmp210_;
                                        _attributes_size_ = attributes_length1;
-                                       _g_free0 (_tmp208_);
-                                       _tmp211_ = attributes;
-                                       _tmp211__length1 = attributes_length1;
-                                       if (_tmp211_ != NULL) {
-                                               gchar** _tmp212_ = NULL;
-                                               gint _tmp212__length1 = 0;
-                                               _tmp212_ = attributes;
-                                               _tmp212__length1 = attributes_length1;
+                                       _g_free0 (_tmp209_);
+                                       _tmp212_ = attributes;
+                                       _tmp212__length1 = attributes_length1;
+                                       if (_tmp212_ != NULL) {
+                                               gchar** _tmp213_ = NULL;
+                                               gint _tmp213__length1 = 0;
+                                               _tmp213_ = attributes;
+                                               _tmp213__length1 = attributes_length1;
                                                {
                                                        gchar** attr_collection = NULL;
                                                        gint attr_collection_length1 = 0;
                                                        gint _attr_collection_size_ = 0;
                                                        gint attr_it = 0;
-                                                       attr_collection = _tmp212_;
-                                                       attr_collection_length1 = _tmp212__length1;
-                                                       for (attr_it = 0; attr_it < _tmp212__length1; attr_it = attr_it + 1) {
-                                                               gchar* _tmp213_ = NULL;
+                                                       attr_collection = _tmp213_;
+                                                       attr_collection_length1 = _tmp213__length1;
+                                                       for (attr_it = 0; attr_it < _tmp213__length1; attr_it = attr_it + 1) {
+                                                               gchar* _tmp214_ = NULL;
                                                                gchar* attr = NULL;
-                                                               _tmp213_ = g_strdup (attr_collection[attr_it]);
-                                                               attr = _tmp213_;
+                                                               _tmp214_ = g_strdup (attr_collection[attr_it]);
+                                                               attr = _tmp214_;
                                                                {
                                                                        gchar** nv = NULL;
-                                                                       const gchar* _tmp214_ = NULL;
-                                                                       gchar** _tmp215_ = NULL;
+                                                                       const gchar* _tmp215_ = NULL;
                                                                        gchar** _tmp216_ = NULL;
+                                                                       gchar** _tmp217_ = NULL;
                                                                        gint nv_length1 = 0;
                                                                        gint _nv_size_ = 0;
-                                                                       gchar** _tmp217_ = NULL;
-                                                                       gint _tmp217__length1 = 0;
-                                                                       const gchar* _tmp218_ = NULL;
-                                                                       _tmp214_ = attr;
-                                                                       _tmp216_ = _tmp215_ = g_strsplit (_tmp214_, "=", 2);
-                                                                       nv = _tmp216_;
-                                                                       nv_length1 = _vala_array_length (_tmp215_);
+                                                                       gchar** _tmp218_ = NULL;
+                                                                       gint _tmp218__length1 = 0;
+                                                                       const gchar* _tmp219_ = NULL;
+                                                                       _tmp215_ = attr;
+                                                                       _tmp217_ = _tmp216_ = g_strsplit (_tmp215_, "=", 2);
+                                                                       nv = _tmp217_;
+                                                                       nv_length1 = _vala_array_length (_tmp216_);
                                                                        _nv_size_ = nv_length1;
-                                                                       _tmp217_ = nv;
-                                                                       _tmp217__length1 = nv_length1;
-                                                                       _tmp218_ = _tmp217_[0];
-                                                                       if (g_strcmp0 (_tmp218_, "hidden") == 0) {
-                                                                               gchar** _tmp219_ = NULL;
-                                                                               gint _tmp219__length1 = 0;
-                                                                               const gchar* _tmp220_ = NULL;
-                                                                               gchar* _tmp221_ = NULL;
+                                                                       _tmp218_ = nv;
+                                                                       _tmp218__length1 = nv_length1;
+                                                                       _tmp219_ = _tmp218_[0];
+                                                                       if (g_strcmp0 (_tmp219_, "hidden") == 0) {
+                                                                               gchar** _tmp220_ = NULL;
+                                                                               gint _tmp220__length1 = 0;
+                                                                               const gchar* _tmp221_ = NULL;
                                                                                gchar* _tmp222_ = NULL;
-                                                                               gboolean _tmp223_ = FALSE;
-                                                                               _tmp219_ = nv;
-                                                                               _tmp219__length1 = nv_length1;
-                                                                               _tmp220_ = _tmp219_[1];
-                                                                               _tmp221_ = vala_gidl_parser_eval (self, _tmp220_);
-                                                                               _tmp222_ = _tmp221_;
-                                                                               _tmp223_ = g_strcmp0 (_tmp222_, "1") == 0;
-                                                                               _g_free0 (_tmp222_);
-                                                                               if (_tmp223_) {
+                                                                               gchar* _tmp223_ = NULL;
+                                                                               gboolean _tmp224_ = FALSE;
+                                                                               _tmp220_ = nv;
+                                                                               _tmp220__length1 = nv_length1;
+                                                                               _tmp221_ = _tmp220_[1];
+                                                                               _tmp222_ = vala_gidl_parser_eval (self, _tmp221_);
+                                                                               _tmp223_ = _tmp222_;
+                                                                               _tmp224_ = g_strcmp0 (_tmp223_, "1") == 0;
+                                                                               _g_free0 (_tmp223_);
+                                                                               if (_tmp224_) {
                                                                                        hide_param = TRUE;
                                                                                } else {
-                                                                                       gchar** _tmp224_ = NULL;
-                                                                                       gint _tmp224__length1 = 0;
-                                                                                       const gchar* _tmp225_ = NULL;
-                                                                                       gchar* _tmp226_ = NULL;
+                                                                                       gchar** _tmp225_ = NULL;
+                                                                                       gint _tmp225__length1 = 0;
+                                                                                       const gchar* _tmp226_ = NULL;
                                                                                        gchar* _tmp227_ = NULL;
-                                                                                       gboolean _tmp228_ = FALSE;
-                                                                                       _tmp224_ = nv;
-                                                                                       _tmp224__length1 = nv_length1;
-                                                                                       _tmp225_ = _tmp224_[1];
-                                                                                       _tmp226_ = vala_gidl_parser_eval (self, _tmp225_);
-                                                                                       _tmp227_ = _tmp226_;
-                                                                                       _tmp228_ = g_strcmp0 (_tmp227_, "0") == 0;
-                                                                                       _g_free0 (_tmp227_);
-                                                                                       if (_tmp228_) {
+                                                                                       gchar* _tmp228_ = NULL;
+                                                                                       gboolean _tmp229_ = FALSE;
+                                                                                       _tmp225_ = nv;
+                                                                                       _tmp225__length1 = nv_length1;
+                                                                                       _tmp226_ = _tmp225_[1];
+                                                                                       _tmp227_ = vala_gidl_parser_eval (self, _tmp226_);
+                                                                                       _tmp228_ = _tmp227_;
+                                                                                       _tmp229_ = g_strcmp0 (_tmp228_, "0") == 0;
+                                                                                       _g_free0 (_tmp228_);
+                                                                                       if (_tmp229_) {
                                                                                                show_param = TRUE;
                                                                                        }
                                                                                }
                                                                        } else {
-                                                                               gchar** _tmp229_ = NULL;
-                                                                               gint _tmp229__length1 = 0;
-                                                                               const gchar* _tmp230_ = NULL;
-                                                                               _tmp229_ = nv;
-                                                                               _tmp229__length1 = nv_length1;
-                                                                               _tmp230_ = _tmp229_[0];
-                                                                               if (g_strcmp0 (_tmp230_, "is_array") == 0) {
-                                                                                       gchar** _tmp231_ = NULL;
-                                                                                       gint _tmp231__length1 = 0;
-                                                                                       const gchar* _tmp232_ = NULL;
-                                                                                       gchar* _tmp233_ = NULL;
+                                                                               gchar** _tmp230_ = NULL;
+                                                                               gint _tmp230__length1 = 0;
+                                                                               const gchar* _tmp231_ = NULL;
+                                                                               _tmp230_ = nv;
+                                                                               _tmp230__length1 = nv_length1;
+                                                                               _tmp231_ = _tmp230_[0];
+                                                                               if (g_strcmp0 (_tmp231_, "is_array") == 0) {
+                                                                                       gchar** _tmp232_ = NULL;
+                                                                                       gint _tmp232__length1 = 0;
+                                                                                       const gchar* _tmp233_ = NULL;
                                                                                        gchar* _tmp234_ = NULL;
-                                                                                       gboolean _tmp235_ = FALSE;
-                                                                                       _tmp231_ = nv;
-                                                                                       _tmp231__length1 = nv_length1;
-                                                                                       _tmp232_ = _tmp231_[1];
-                                                                                       _tmp233_ = vala_gidl_parser_eval (self, _tmp232_);
-                                                                                       _tmp234_ = _tmp233_;
-                                                                                       _tmp235_ = g_strcmp0 (_tmp234_, "1") == 0;
-                                                                                       _g_free0 (_tmp234_);
-                                                                                       if (_tmp235_) {
-                                                                                               ValaDataType* _tmp236_ = NULL;
+                                                                                       gchar* _tmp235_ = NULL;
+                                                                                       gboolean _tmp236_ = FALSE;
+                                                                                       _tmp232_ = nv;
+                                                                                       _tmp232__length1 = nv_length1;
+                                                                                       _tmp233_ = _tmp232_[1];
+                                                                                       _tmp234_ = vala_gidl_parser_eval (self, _tmp233_);
+                                                                                       _tmp235_ = _tmp234_;
+                                                                                       _tmp236_ = g_strcmp0 (_tmp235_, "1") == 0;
+                                                                                       _g_free0 (_tmp235_);
+                                                                                       if (_tmp236_) {
                                                                                                ValaDataType* _tmp237_ = NULL;
-                                                                                               ValaSourceReference* _tmp238_ = NULL;
-                                                                                               ValaSourceReference* _tmp239_ = NULL;
-                                                                                               ValaArrayType* _tmp240_ = NULL;
-                                                                                               ValaParameter* _tmp241_ = NULL;
-                                                                                               ValaDataType* _tmp242_ = NULL;
-                                                                                               gboolean _tmp243_ = FALSE;
-                                                                                               _tmp236_ = param_type;
+                                                                                               ValaDataType* _tmp238_ = NULL;
+                                                                                               ValaDataType* _tmp239_ = NULL;
+                                                                                               ValaSourceReference* _tmp240_ = NULL;
+                                                                                               ValaSourceReference* _tmp241_ = NULL;
+                                                                                               ValaArrayType* _tmp242_ = NULL;
+                                                                                               ValaParameter* _tmp243_ = NULL;
+                                                                                               ValaDataType* _tmp244_ = NULL;
+                                                                                               gboolean _tmp245_ = FALSE;
                                                                                                _tmp237_ = param_type;
-                                                                                               _tmp238_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp237_);
-                                                                                               _tmp239_ = _tmp238_;
-                                                                                               _tmp240_ = vala_array_type_new (_tmp236_, 1, _tmp239_);
+                                                                                               vala_data_type_set_value_owned (_tmp237_, TRUE);
+                                                                                               _tmp238_ = param_type;
+                                                                                               _tmp239_ = param_type;
+                                                                                               _tmp240_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp239_);
+                                                                                               _tmp241_ = _tmp240_;
+                                                                                               _tmp242_ = vala_array_type_new (_tmp238_, 1, _tmp241_);
                                                                                                _vala_code_node_unref0 (param_type);
-                                                                                               param_type = (ValaDataType*) _tmp240_;
-                                                                                               _tmp241_ = p;
-                                                                                               _tmp242_ = param_type;
-                                                                                               vala_variable_set_variable_type ((ValaVariable*) _tmp241_, _tmp242_);
-                                                                                               _tmp243_ = out_requested;
-                                                                                               if (!_tmp243_) {
-                                                                                                       ValaParameter* _tmp244_ = NULL;
-                                                                                                       _tmp244_ = p;
-                                                                                                       vala_parameter_set_direction (_tmp244_, VALA_PARAMETER_DIRECTION_IN);
+                                                                                               param_type = (ValaDataType*) _tmp242_;
+                                                                                               _tmp243_ = p;
+                                                                                               _tmp244_ = param_type;
+                                                                                               vala_variable_set_variable_type ((ValaVariable*) _tmp243_, _tmp244_);
+                                                                                               _tmp245_ = out_requested;
+                                                                                               if (!_tmp245_) {
+                                                                                                       ValaParameter* _tmp246_ = NULL;
+                                                                                                       _tmp246_ = p;
+                                                                                                       vala_parameter_set_direction (_tmp246_, VALA_PARAMETER_DIRECTION_IN);
                                                                                                }
                                                                                                array_requested = TRUE;
                                                                                        }
                                                                                } else {
-                                                                                       gchar** _tmp245_ = NULL;
-                                                                                       gint _tmp245__length1 = 0;
-                                                                                       const gchar* _tmp246_ = NULL;
-                                                                                       _tmp245_ = nv;
-                                                                                       _tmp245__length1 = nv_length1;
-                                                                                       _tmp246_ = _tmp245_[0];
-                                                                                       if (g_strcmp0 (_tmp246_, "is_out") == 0) {
-                                                                                               gchar** _tmp247_ = NULL;
-                                                                                               gint _tmp247__length1 = 0;
-                                                                                               const gchar* _tmp248_ = NULL;
-                                                                                               gchar* _tmp249_ = NULL;
-                                                                                               gchar* _tmp250_ = NULL;
-                                                                                               gboolean _tmp251_ = FALSE;
-                                                                                               _tmp247_ = nv;
-                                                                                               _tmp247__length1 = nv_length1;
-                                                                                               _tmp248_ = _tmp247_[1];
-                                                                                               _tmp249_ = vala_gidl_parser_eval (self, _tmp248_);
-                                                                                               _tmp250_ = _tmp249_;
-                                                                                               _tmp251_ = g_strcmp0 (_tmp250_, "1") == 0;
-                                                                                               _g_free0 (_tmp250_);
-                                                                                               if (_tmp251_) {
-                                                                                                       ValaParameter* _tmp252_ = NULL;
-                                                                                                       gboolean _tmp253_ = FALSE;
-                                                                                                       gboolean _tmp254_ = FALSE;
-                                                                                                       _tmp252_ = p;
-                                                                                                       vala_parameter_set_direction (_tmp252_, VALA_PARAMETER_DIRECTION_OUT);
+                                                                                       gchar** _tmp247_ = NULL;
+                                                                                       gint _tmp247__length1 = 0;
+                                                                                       const gchar* _tmp248_ = NULL;
+                                                                                       _tmp247_ = nv;
+                                                                                       _tmp247__length1 = nv_length1;
+                                                                                       _tmp248_ = _tmp247_[0];
+                                                                                       if (g_strcmp0 (_tmp248_, "is_out") == 0) {
+                                                                                               gchar** _tmp249_ = NULL;
+                                                                                               gint _tmp249__length1 = 0;
+                                                                                               const gchar* _tmp250_ = NULL;
+                                                                                               gchar* _tmp251_ = NULL;
+                                                                                               gchar* _tmp252_ = NULL;
+                                                                                               gboolean _tmp253_ = FALSE;
+                                                                                               _tmp249_ = nv;
+                                                                                               _tmp249__length1 = nv_length1;
+                                                                                               _tmp250_ = _tmp249_[1];
+                                                                                               _tmp251_ = vala_gidl_parser_eval (self, _tmp250_);
+                                                                                               _tmp252_ = _tmp251_;
+                                                                                               _tmp253_ = g_strcmp0 (_tmp252_, "1") == 0;
+                                                                                               _g_free0 (_tmp252_);
+                                                                                               if (_tmp253_) {
+                                                                                                       ValaParameter* _tmp254_ = NULL;
+                                                                                                       gboolean _tmp255_ = FALSE;
+                                                                                                       gboolean _tmp256_ = FALSE;
+                                                                                                       _tmp254_ = p;
+                                                                                                       vala_parameter_set_direction (_tmp254_, VALA_PARAMETER_DIRECTION_OUT);
                                                                                                        out_requested = TRUE;
-                                                                                                       _tmp254_ = array_requested;
-                                                                                                       if (!_tmp254_) {
-                                                                                                               ValaDataType* _tmp255_ = NULL;
-                                                                                                               _tmp255_ = param_type;
-                                                                                                               _tmp253_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp255_, VALA_TYPE_ARRAY_TYPE);
+                                                                                                       _tmp256_ = array_requested;
+                                                                                                       if (!_tmp256_) {
+                                                                                                               ValaDataType* _tmp257_ = NULL;
+                                                                                                               _tmp257_ = param_type;
+                                                                                                               _tmp255_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp257_, VALA_TYPE_ARRAY_TYPE);
                                                                                                        } else {
-                                                                                                               _tmp253_ = FALSE;
+                                                                                                               _tmp255_ = FALSE;
                                                                                                        }
-                                                                                                       if (_tmp253_) {
+                                                                                                       if (_tmp255_) {
                                                                                                                ValaArrayType* array_type = NULL;
-                                                                                                               ValaDataType* _tmp256_ = NULL;
-                                                                                                               ValaArrayType* _tmp257_ = NULL;
-                                                                                                               ValaArrayType* _tmp258_ = NULL;
-                                                                                                               ValaDataType* _tmp259_ = NULL;
-                                                                                                               ValaDataType* _tmp260_ = NULL;
+                                                                                                               ValaDataType* _tmp258_ = NULL;
+                                                                                                               ValaArrayType* _tmp259_ = NULL;
+                                                                                                               ValaArrayType* _tmp260_ = NULL;
                                                                                                                ValaDataType* _tmp261_ = NULL;
-                                                                                                               ValaParameter* _tmp262_ = NULL;
+                                                                                                               ValaDataType* _tmp262_ = NULL;
                                                                                                                ValaDataType* _tmp263_ = NULL;
-                                                                                                               _tmp256_ = param_type;
-                                                                                                               _tmp257_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp256_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                                                                                               array_type = _tmp257_;
-                                                                                                               _tmp258_ = array_type;
-                                                                                                               _tmp259_ = vala_array_type_get_element_type (_tmp258_);
-                                                                                                               _tmp260_ = _tmp259_;
-                                                                                                               _tmp261_ = _vala_code_node_ref0 (_tmp260_);
+                                                                                                               ValaParameter* _tmp264_ = NULL;
+                                                                                                               ValaDataType* _tmp265_ = NULL;
+                                                                                                               _tmp258_ = param_type;
+                                                                                                               _tmp259_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp258_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                                                                                               array_type = _tmp259_;
+                                                                                                               _tmp260_ = array_type;
+                                                                                                               _tmp261_ = vala_array_type_get_element_type (_tmp260_);
+                                                                                                               _tmp262_ = _tmp261_;
+                                                                                                               _tmp263_ = _vala_code_node_ref0 (_tmp262_);
                                                                                                                _vala_code_node_unref0 (param_type);
-                                                                                                               param_type = _tmp261_;
-                                                                                                               _tmp262_ = p;
-                                                                                                               _tmp263_ = param_type;
-                                                                                                               vala_variable_set_variable_type ((ValaVariable*) _tmp262_, _tmp263_);
+                                                                                                               param_type = _tmp263_;
+                                                                                                               _tmp264_ = p;
+                                                                                                               _tmp265_ = param_type;
+                                                                                                               vala_variable_set_variable_type ((ValaVariable*) _tmp264_, _tmp265_);
                                                                                                                _vala_code_node_unref0 (array_type);
                                                                                                        }
                                                                                                }
                                                                                        } else {
-                                                                                               gchar** _tmp264_ = NULL;
-                                                                                               gint _tmp264__length1 = 0;
-                                                                                               const gchar* _tmp265_ = NULL;
-                                                                                               _tmp264_ = nv;
-                                                                                               _tmp264__length1 = nv_length1;
-                                                                                               _tmp265_ = _tmp264_[0];
-                                                                                               if (g_strcmp0 (_tmp265_, "is_ref") == 0) {
-                                                                                                       gchar** _tmp266_ = NULL;
-                                                                                                       gint _tmp266__length1 = 0;
-                                                                                                       const gchar* _tmp267_ = NULL;
-                                                                                                       gchar* _tmp268_ = NULL;
-                                                                                                       gchar* _tmp269_ = NULL;
-                                                                                                       gboolean _tmp270_ = FALSE;
-                                                                                                       _tmp266_ = nv;
-                                                                                                       _tmp266__length1 = nv_length1;
-                                                                                                       _tmp267_ = _tmp266_[1];
-                                                                                                       _tmp268_ = vala_gidl_parser_eval (self, _tmp267_);
-                                                                                                       _tmp269_ = _tmp268_;
-                                                                                                       _tmp270_ = g_strcmp0 (_tmp269_, "1") == 0;
-                                                                                                       _g_free0 (_tmp269_);
-                                                                                                       if (_tmp270_) {
-                                                                                                               ValaParameter* _tmp271_ = NULL;
-                                                                                                               gboolean _tmp272_ = FALSE;
-                                                                                                               gboolean _tmp273_ = FALSE;
-                                                                                                               _tmp271_ = p;
-                                                                                                               vala_parameter_set_direction (_tmp271_, VALA_PARAMETER_DIRECTION_REF);
-                                                                                                               _tmp273_ = array_requested;
-                                                                                                               if (!_tmp273_) {
-                                                                                                                       ValaDataType* _tmp274_ = NULL;
-                                                                                                                       _tmp274_ = param_type;
-                                                                                                                       _tmp272_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp274_, VALA_TYPE_ARRAY_TYPE);
+                                                                                               gchar** _tmp266_ = NULL;
+                                                                                               gint _tmp266__length1 = 0;
+                                                                                               const gchar* _tmp267_ = NULL;
+                                                                                               _tmp266_ = nv;
+                                                                                               _tmp266__length1 = nv_length1;
+                                                                                               _tmp267_ = _tmp266_[0];
+                                                                                               if (g_strcmp0 (_tmp267_, "is_ref") == 0) {
+                                                                                                       gchar** _tmp268_ = NULL;
+                                                                                                       gint _tmp268__length1 = 0;
+                                                                                                       const gchar* _tmp269_ = NULL;
+                                                                                                       gchar* _tmp270_ = NULL;
+                                                                                                       gchar* _tmp271_ = NULL;
+                                                                                                       gboolean _tmp272_ = FALSE;
+                                                                                                       _tmp268_ = nv;
+                                                                                                       _tmp268__length1 = nv_length1;
+                                                                                                       _tmp269_ = _tmp268_[1];
+                                                                                                       _tmp270_ = vala_gidl_parser_eval (self, _tmp269_);
+                                                                                                       _tmp271_ = _tmp270_;
+                                                                                                       _tmp272_ = g_strcmp0 (_tmp271_, "1") == 0;
+                                                                                                       _g_free0 (_tmp271_);
+                                                                                                       if (_tmp272_) {
+                                                                                                               ValaParameter* _tmp273_ = NULL;
+                                                                                                               gboolean _tmp274_ = FALSE;
+                                                                                                               gboolean _tmp275_ = FALSE;
+                                                                                                               _tmp273_ = p;
+                                                                                                               vala_parameter_set_direction (_tmp273_, VALA_PARAMETER_DIRECTION_REF);
+                                                                                                               _tmp275_ = array_requested;
+                                                                                                               if (!_tmp275_) {
+                                                                                                                       ValaDataType* _tmp276_ = NULL;
+                                                                                                                       _tmp276_ = param_type;
+                                                                                                                       _tmp274_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp276_, VALA_TYPE_ARRAY_TYPE);
                                                                                                                } else {
-                                                                                                                       _tmp272_ = FALSE;
+                                                                                                                       _tmp274_ = FALSE;
                                                                                                                }
-                                                                                                               if (_tmp272_) {
+                                                                                                               if (_tmp274_) {
                                                                                                                        ValaArrayType* array_type = NULL;
-                                                                                                                       ValaDataType* _tmp275_ = NULL;
-                                                                                                                       ValaArrayType* _tmp276_ = NULL;
-                                                                                                                       ValaArrayType* _tmp277_ = NULL;
-                                                                                                                       ValaDataType* _tmp278_ = NULL;
-                                                                                                                       ValaDataType* _tmp279_ = NULL;
+                                                                                                                       ValaDataType* _tmp277_ = NULL;
+                                                                                                                       ValaArrayType* _tmp278_ = NULL;
+                                                                                                                       ValaArrayType* _tmp279_ = NULL;
                                                                                                                        ValaDataType* _tmp280_ = NULL;
-                                                                                                                       ValaParameter* _tmp281_ = NULL;
+                                                                                                                       ValaDataType* _tmp281_ = NULL;
                                                                                                                        ValaDataType* _tmp282_ = NULL;
-                                                                                                                       _tmp275_ = param_type;
-                                                                                                                       _tmp276_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp275_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                                                                                                       array_type = _tmp276_;
-                                                                                                                       _tmp277_ = array_type;
-                                                                                                                       _tmp278_ = vala_array_type_get_element_type (_tmp277_);
-                                                                                                                       _tmp279_ = _tmp278_;
-                                                                                                                       _tmp280_ = _vala_code_node_ref0 (_tmp279_);
+                                                                                                                       ValaParameter* _tmp283_ = NULL;
+                                                                                                                       ValaDataType* _tmp284_ = NULL;
+                                                                                                                       _tmp277_ = param_type;
+                                                                                                                       _tmp278_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp277_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                                                                                                       array_type = _tmp278_;
+                                                                                                                       _tmp279_ = array_type;
+                                                                                                                       _tmp280_ = vala_array_type_get_element_type (_tmp279_);
+                                                                                                                       _tmp281_ = _tmp280_;
+                                                                                                                       _tmp282_ = _vala_code_node_ref0 (_tmp281_);
                                                                                                                        _vala_code_node_unref0 (param_type);
-                                                                                                                       param_type = _tmp280_;
-                                                                                                                       _tmp281_ = p;
-                                                                                                                       _tmp282_ = param_type;
-                                                                                                                       vala_variable_set_variable_type ((ValaVariable*) _tmp281_, _tmp282_);
+                                                                                                                       param_type = _tmp282_;
+                                                                                                                       _tmp283_ = p;
+                                                                                                                       _tmp284_ = param_type;
+                                                                                                                       vala_variable_set_variable_type ((ValaVariable*) _tmp283_, _tmp284_);
                                                                                                                        _vala_code_node_unref0 (array_type);
                                                                                                                }
                                                                                                        }
                                                                                                } else {
-                                                                                                       gchar** _tmp283_ = NULL;
-                                                                                                       gint _tmp283__length1 = 0;
-                                                                                                       const gchar* _tmp284_ = NULL;
-                                                                                                       _tmp283_ = nv;
-                                                                                                       _tmp283__length1 = nv_length1;
-                                                                                                       _tmp284_ = _tmp283_[0];
-                                                                                                       if (g_strcmp0 (_tmp284_, "takes_ownership") == 0) {
-                                                                                                               gchar** _tmp285_ = NULL;
-                                                                                                               gint _tmp285__length1 = 0;
-                                                                                                               const gchar* _tmp286_ = NULL;
-                                                                                                               gchar* _tmp287_ = NULL;
-                                                                                                               gchar* _tmp288_ = NULL;
-                                                                                                               gboolean _tmp289_ = FALSE;
-                                                                                                               _tmp285_ = nv;
-                                                                                                               _tmp285__length1 = nv_length1;
-                                                                                                               _tmp286_ = _tmp285_[1];
-                                                                                                               _tmp287_ = vala_gidl_parser_eval (self, _tmp286_);
-                                                                                                               _tmp288_ = _tmp287_;
-                                                                                                               _tmp289_ = g_strcmp0 (_tmp288_, "1") == 0;
-                                                                                                               _g_free0 (_tmp288_);
-                                                                                                               if (_tmp289_) {
-                                                                                                                       ValaDataType* _tmp290_ = NULL;
-                                                                                                                       _tmp290_ = param_type;
-                                                                                                                       vala_data_type_set_value_owned (_tmp290_, TRUE);
+                                                                                                       gchar** _tmp285_ = NULL;
+                                                                                                       gint _tmp285__length1 = 0;
+                                                                                                       const gchar* _tmp286_ = NULL;
+                                                                                                       _tmp285_ = nv;
+                                                                                                       _tmp285__length1 = nv_length1;
+                                                                                                       _tmp286_ = _tmp285_[0];
+                                                                                                       if (g_strcmp0 (_tmp286_, "takes_ownership") == 0) {
+                                                                                                               gchar** _tmp287_ = NULL;
+                                                                                                               gint _tmp287__length1 = 0;
+                                                                                                               const gchar* _tmp288_ = NULL;
+                                                                                                               gchar* _tmp289_ = NULL;
+                                                                                                               gchar* _tmp290_ = NULL;
+                                                                                                               gboolean _tmp291_ = FALSE;
+                                                                                                               _tmp287_ = nv;
+                                                                                                               _tmp287__length1 = nv_length1;
+                                                                                                               _tmp288_ = _tmp287_[1];
+                                                                                                               _tmp289_ = vala_gidl_parser_eval (self, _tmp288_);
+                                                                                                               _tmp290_ = _tmp289_;
+                                                                                                               _tmp291_ = g_strcmp0 (_tmp290_, "1") == 0;
+                                                                                                               _g_free0 (_tmp290_);
+                                                                                                               if (_tmp291_) {
+                                                                                                                       ValaDataType* _tmp292_ = NULL;
+                                                                                                                       _tmp292_ = param_type;
+                                                                                                                       vala_data_type_set_value_owned (_tmp292_, TRUE);
                                                                                                                }
                                                                                                        } else {
-                                                                                                               gchar** _tmp291_ = NULL;
-                                                                                                               gint _tmp291__length1 = 0;
-                                                                                                               const gchar* _tmp292_ = NULL;
-                                                                                                               _tmp291_ = nv;
-                                                                                                               _tmp291__length1 = nv_length1;
-                                                                                                               _tmp292_ = _tmp291_[0];
-                                                                                                               if (g_strcmp0 (_tmp292_, "nullable") == 0) {
-                                                                                                                       gchar** _tmp293_ = NULL;
-                                                                                                                       gint _tmp293__length1 = 0;
-                                                                                                                       const gchar* _tmp294_ = NULL;
-                                                                                                                       gchar* _tmp295_ = NULL;
-                                                                                                                       gchar* _tmp296_ = NULL;
-                                                                                                                       gboolean _tmp297_ = FALSE;
-                                                                                                                       _tmp293_ = nv;
-                                                                                                                       _tmp293__length1 = nv_length1;
-                                                                                                                       _tmp294_ = _tmp293_[1];
-                                                                                                                       _tmp295_ = vala_gidl_parser_eval (self, _tmp294_);
-                                                                                                                       _tmp296_ = _tmp295_;
-                                                                                                                       _tmp297_ = g_strcmp0 (_tmp296_, "1") == 0;
-                                                                                                                       _g_free0 (_tmp296_);
-                                                                                                                       if (_tmp297_) {
-                                                                                                                               ValaDataType* _tmp298_ = NULL;
-                                                                                                                               _tmp298_ = param_type;
-                                                                                                                               vala_data_type_set_nullable (_tmp298_, TRUE);
+                                                                                                               gchar** _tmp293_ = NULL;
+                                                                                                               gint _tmp293__length1 = 0;
+                                                                                                               const gchar* _tmp294_ = NULL;
+                                                                                                               _tmp293_ = nv;
+                                                                                                               _tmp293__length1 = nv_length1;
+                                                                                                               _tmp294_ = _tmp293_[0];
+                                                                                                               if (g_strcmp0 (_tmp294_, "nullable") == 0) {
+                                                                                                                       gchar** _tmp295_ = NULL;
+                                                                                                                       gint _tmp295__length1 = 0;
+                                                                                                                       const gchar* _tmp296_ = NULL;
+                                                                                                                       gchar* _tmp297_ = NULL;
+                                                                                                                       gchar* _tmp298_ = NULL;
+                                                                                                                       gboolean _tmp299_ = FALSE;
+                                                                                                                       _tmp295_ = nv;
+                                                                                                                       _tmp295__length1 = nv_length1;
+                                                                                                                       _tmp296_ = _tmp295_[1];
+                                                                                                                       _tmp297_ = vala_gidl_parser_eval (self, _tmp296_);
+                                                                                                                       _tmp298_ = _tmp297_;
+                                                                                                                       _tmp299_ = g_strcmp0 (_tmp298_, "1") == 0;
+                                                                                                                       _g_free0 (_tmp298_);
+                                                                                                                       if (_tmp299_) {
+                                                                                                                               ValaDataType* _tmp300_ = NULL;
+                                                                                                                               _tmp300_ = param_type;
+                                                                                                                               vala_data_type_set_nullable (_tmp300_, TRUE);
                                                                                                                        }
                                                                                                                } else {
-                                                                                                                       gchar** _tmp299_ = NULL;
-                                                                                                                       gint _tmp299__length1 = 0;
-                                                                                                                       const gchar* _tmp300_ = NULL;
-                                                                                                                       _tmp299_ = nv;
-                                                                                                                       _tmp299__length1 = nv_length1;
-                                                                                                                       _tmp300_ = _tmp299_[0];
-                                                                                                                       if (g_strcmp0 (_tmp300_, "type_arguments") == 0) {
-                                                                                                                               ValaDataType* _tmp301_ = NULL;
-                                                                                                                               gchar** _tmp302_ = NULL;
-                                                                                                                               gint _tmp302__length1 = 0;
-                                                                                                                               const gchar* _tmp303_ = NULL;
-                                                                                                                               gchar* _tmp304_ = NULL;
-                                                                                                                               gchar* _tmp305_ = NULL;
-                                                                                                                               _tmp301_ = param_type;
-                                                                                                                               _tmp302_ = nv;
-                                                                                                                               _tmp302__length1 = nv_length1;
-                                                                                                                               _tmp303_ = _tmp302_[1];
-                                                                                                                               _tmp304_ = vala_gidl_parser_eval (self, _tmp303_);
-                                                                                                                               _tmp305_ = _tmp304_;
-                                                                                                                               vala_gidl_parser_parse_type_arguments_from_string (self, _tmp301_, _tmp305_, NULL);
-                                                                                                                               _g_free0 (_tmp305_);
+                                                                                                                       gchar** _tmp301_ = NULL;
+                                                                                                                       gint _tmp301__length1 = 0;
+                                                                                                                       const gchar* _tmp302_ = NULL;
+                                                                                                                       _tmp301_ = nv;
+                                                                                                                       _tmp301__length1 = nv_length1;
+                                                                                                                       _tmp302_ = _tmp301_[0];
+                                                                                                                       if (g_strcmp0 (_tmp302_, "type_arguments") == 0) {
+                                                                                                                               ValaDataType* _tmp303_ = NULL;
+                                                                                                                               gchar** _tmp304_ = NULL;
+                                                                                                                               gint _tmp304__length1 = 0;
+                                                                                                                               const gchar* _tmp305_ = NULL;
+                                                                                                                               gchar* _tmp306_ = NULL;
+                                                                                                                               gchar* _tmp307_ = NULL;
+                                                                                                                               _tmp303_ = param_type;
+                                                                                                                               _tmp304_ = nv;
+                                                                                                                               _tmp304__length1 = nv_length1;
+                                                                                                                               _tmp305_ = _tmp304_[1];
+                                                                                                                               _tmp306_ = vala_gidl_parser_eval (self, _tmp305_);
+                                                                                                                               _tmp307_ = _tmp306_;
+                                                                                                                               vala_gidl_parser_parse_type_arguments_from_string (self, _tmp303_, _tmp307_, NULL);
+                                                                                                                               _g_free0 (_tmp307_);
                                                                                                                        } else {
-                                                                                                                               gchar** _tmp306_ = NULL;
-                                                                                                                               gint _tmp306__length1 = 0;
-                                                                                                                               const gchar* _tmp307_ = NULL;
-                                                                                                                               _tmp306_ = nv;
-                                                                                                                               _tmp306__length1 = nv_length1;
-                                                                                                                               _tmp307_ = _tmp306_[0];
-                                                                                                                               if (g_strcmp0 (_tmp307_, "no_array_length") == 0) {
-                                                                                                                                       gchar** _tmp308_ = NULL;
-                                                                                                                                       gint _tmp308__length1 = 0;
-                                                                                                                                       const gchar* _tmp309_ = NULL;
-                                                                                                                                       gchar* _tmp310_ = NULL;
-                                                                                                                                       gchar* _tmp311_ = NULL;
-                                                                                                                                       gboolean _tmp312_ = FALSE;
-                                                                                                                                       _tmp308_ = nv;
-                                                                                                                                       _tmp308__length1 = nv_length1;
-                                                                                                                                       _tmp309_ = _tmp308_[1];
-                                                                                                                                       _tmp310_ = vala_gidl_parser_eval (self, _tmp309_);
-                                                                                                                                       _tmp311_ = _tmp310_;
-                                                                                                                                       _tmp312_ = g_strcmp0 (_tmp311_, "1") == 0;
-                                                                                                                                       _g_free0 (_tmp311_);
-                                                                                                                                       if (_tmp312_) {
-                                                                                                                                               ValaParameter* _tmp313_ = NULL;
-                                                                                                                                               _tmp313_ = p;
-                                                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp313_, "CCode", "array_length", FALSE, NULL);
+                                                                                                                               gchar** _tmp308_ = NULL;
+                                                                                                                               gint _tmp308__length1 = 0;
+                                                                                                                               const gchar* _tmp309_ = NULL;
+                                                                                                                               _tmp308_ = nv;
+                                                                                                                               _tmp308__length1 = nv_length1;
+                                                                                                                               _tmp309_ = _tmp308_[0];
+                                                                                                                               if (g_strcmp0 (_tmp309_, "no_array_length") == 0) {
+                                                                                                                                       gchar** _tmp310_ = NULL;
+                                                                                                                                       gint _tmp310__length1 = 0;
+                                                                                                                                       const gchar* _tmp311_ = NULL;
+                                                                                                                                       gchar* _tmp312_ = NULL;
+                                                                                                                                       gchar* _tmp313_ = NULL;
+                                                                                                                                       gboolean _tmp314_ = FALSE;
+                                                                                                                                       _tmp310_ = nv;
+                                                                                                                                       _tmp310__length1 = nv_length1;
+                                                                                                                                       _tmp311_ = _tmp310_[1];
+                                                                                                                                       _tmp312_ = vala_gidl_parser_eval (self, _tmp311_);
+                                                                                                                                       _tmp313_ = _tmp312_;
+                                                                                                                                       _tmp314_ = g_strcmp0 (_tmp313_, "1") == 0;
+                                                                                                                                       _g_free0 (_tmp313_);
+                                                                                                                                       if (_tmp314_) {
+                                                                                                                                               ValaParameter* _tmp315_ = NULL;
+                                                                                                                                               _tmp315_ = p;
+                                                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp315_, "CCode", "array_length", FALSE, NULL);
                                                                                                                                        }
                                                                                                                                } else {
-                                                                                                                                       gchar** _tmp314_ = NULL;
-                                                                                                                                       gint _tmp314__length1 = 0;
-                                                                                                                                       const gchar* _tmp315_ = NULL;
-                                                                                                                                       _tmp314_ = nv;
-                                                                                                                                       _tmp314__length1 = nv_length1;
-                                                                                                                                       _tmp315_ = _tmp314_[0];
-                                                                                                                                       if (g_strcmp0 (_tmp315_, "array_length_type") == 0) {
-                                                                                                                                               ValaParameter* _tmp316_ = NULL;
-                                                                                                                                               gchar** _tmp317_ = NULL;
-                                                                                                                                               gint _tmp317__length1 = 0;
-                                                                                                                                               const gchar* _tmp318_ = NULL;
-                                                                                                                                               gchar* _tmp319_ = NULL;
-                                                                                                                                               gchar* _tmp320_ = NULL;
-                                                                                                                                               _tmp316_ = p;
-                                                                                                                                               _tmp317_ = nv;
-                                                                                                                                               _tmp317__length1 = nv_length1;
-                                                                                                                                               _tmp318_ = _tmp317_[1];
-                                                                                                                                               _tmp319_ = vala_gidl_parser_eval (self, _tmp318_);
-                                                                                                                                               _tmp320_ = _tmp319_;
-                                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp316_, "CCode", "array_length_type", _tmp320_, NULL);
-                                                                                                                                               _g_free0 (_tmp320_);
+                                                                                                                                       gchar** _tmp316_ = NULL;
+                                                                                                                                       gint _tmp316__length1 = 0;
+                                                                                                                                       const gchar* _tmp317_ = NULL;
+                                                                                                                                       _tmp316_ = nv;
+                                                                                                                                       _tmp316__length1 = nv_length1;
+                                                                                                                                       _tmp317_ = _tmp316_[0];
+                                                                                                                                       if (g_strcmp0 (_tmp317_, "array_length_type") == 0) {
+                                                                                                                                               ValaParameter* _tmp318_ = NULL;
+                                                                                                                                               gchar** _tmp319_ = NULL;
+                                                                                                                                               gint _tmp319__length1 = 0;
+                                                                                                                                               const gchar* _tmp320_ = NULL;
+                                                                                                                                               gchar* _tmp321_ = NULL;
+                                                                                                                                               gchar* _tmp322_ = NULL;
+                                                                                                                                               _tmp318_ = p;
+                                                                                                                                               _tmp319_ = nv;
+                                                                                                                                               _tmp319__length1 = nv_length1;
+                                                                                                                                               _tmp320_ = _tmp319_[1];
+                                                                                                                                               _tmp321_ = vala_gidl_parser_eval (self, _tmp320_);
+                                                                                                                                               _tmp322_ = _tmp321_;
+                                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp318_, "CCode", "array_length_type", _tmp322_, NULL);
+                                                                                                                                               _g_free0 (_tmp322_);
                                                                                                                                        } else {
-                                                                                                                                               gchar** _tmp321_ = NULL;
-                                                                                                                                               gint _tmp321__length1 = 0;
-                                                                                                                                               const gchar* _tmp322_ = NULL;
-                                                                                                                                               _tmp321_ = nv;
-                                                                                                                                               _tmp321__length1 = nv_length1;
-                                                                                                                                               _tmp322_ = _tmp321_[0];
-                                                                                                                                               if (g_strcmp0 (_tmp322_, "array_null_terminated") == 0) {
-                                                                                                                                                       gchar** _tmp323_ = NULL;
-                                                                                                                                                       gint _tmp323__length1 = 0;
-                                                                                                                                                       const gchar* _tmp324_ = NULL;
-                                                                                                                                                       gchar* _tmp325_ = NULL;
-                                                                                                                                                       gchar* _tmp326_ = NULL;
-                                                                                                                                                       gboolean _tmp327_ = FALSE;
-                                                                                                                                                       _tmp323_ = nv;
-                                                                                                                                                       _tmp323__length1 = nv_length1;
-                                                                                                                                                       _tmp324_ = _tmp323_[1];
-                                                                                                                                                       _tmp325_ = vala_gidl_parser_eval (self, _tmp324_);
-                                                                                                                                                       _tmp326_ = _tmp325_;
-                                                                                                                                                       _tmp327_ = g_strcmp0 (_tmp326_, "1") == 0;
-                                                                                                                                                       _g_free0 (_tmp326_);
-                                                                                                                                                       if (_tmp327_) {
-                                                                                                                                                               ValaParameter* _tmp328_ = NULL;
-                                                                                                                                                               ValaParameter* _tmp329_ = NULL;
-                                                                                                                                                               _tmp328_ = p;
-                                                                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp328_, "CCode", "array_length", FALSE, NULL);
-                                                                                                                                                               _tmp329_ = p;
-                                                                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp329_, "CCode", "array_null_terminated", TRUE, NULL);
+                                                                                                                                               gchar** _tmp323_ = NULL;
+                                                                                                                                               gint _tmp323__length1 = 0;
+                                                                                                                                               const gchar* _tmp324_ = NULL;
+                                                                                                                                               _tmp323_ = nv;
+                                                                                                                                               _tmp323__length1 = nv_length1;
+                                                                                                                                               _tmp324_ = _tmp323_[0];
+                                                                                                                                               if (g_strcmp0 (_tmp324_, "array_null_terminated") == 0) {
+                                                                                                                                                       gchar** _tmp325_ = NULL;
+                                                                                                                                                       gint _tmp325__length1 = 0;
+                                                                                                                                                       const gchar* _tmp326_ = NULL;
+                                                                                                                                                       gchar* _tmp327_ = NULL;
+                                                                                                                                                       gchar* _tmp328_ = NULL;
+                                                                                                                                                       gboolean _tmp329_ = FALSE;
+                                                                                                                                                       _tmp325_ = nv;
+                                                                                                                                                       _tmp325__length1 = nv_length1;
+                                                                                                                                                       _tmp326_ = _tmp325_[1];
+                                                                                                                                                       _tmp327_ = vala_gidl_parser_eval (self, _tmp326_);
+                                                                                                                                                       _tmp328_ = _tmp327_;
+                                                                                                                                                       _tmp329_ = g_strcmp0 (_tmp328_, "1") == 0;
+                                                                                                                                                       _g_free0 (_tmp328_);
+                                                                                                                                                       if (_tmp329_) {
+                                                                                                                                                               ValaParameter* _tmp330_ = NULL;
+                                                                                                                                                               ValaParameter* _tmp331_ = NULL;
+                                                                                                                                                               _tmp330_ = p;
+                                                                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp330_, "CCode", "array_length", FALSE, NULL);
+                                                                                                                                                               _tmp331_ = p;
+                                                                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp331_, "CCode", "array_null_terminated", TRUE, NULL);
                                                                                                                                                        }
                                                                                                                                                } else {
-                                                                                                                                                       gchar** _tmp330_ = NULL;
-                                                                                                                                                       gint _tmp330__length1 = 0;
-                                                                                                                                                       const gchar* _tmp331_ = NULL;
-                                                                                                                                                       _tmp330_ = nv;
-                                                                                                                                                       _tmp330__length1 = nv_length1;
-                                                                                                                                                       _tmp331_ = _tmp330_[0];
-                                                                                                                                                       if (g_strcmp0 (_tmp331_, "type_name") == 0) {
-                                                                                                                                                               ValaParameter* _tmp332_ = NULL;
-                                                                                                                                                               gchar** _tmp333_ = NULL;
-                                                                                                                                                               gint _tmp333__length1 = 0;
-                                                                                                                                                               const gchar* _tmp334_ = NULL;
-                                                                                                                                                               gchar* _tmp335_ = NULL;
-                                                                                                                                                               gchar* _tmp336_ = NULL;
-                                                                                                                                                               ValaDataType* _tmp337_ = NULL;
-                                                                                                                                                               ValaDataType* _tmp338_ = NULL;
-                                                                                                                                                               _tmp332_ = p;
-                                                                                                                                                               _tmp333_ = nv;
-                                                                                                                                                               _tmp333__length1 = nv_length1;
-                                                                                                                                                               _tmp334_ = _tmp333_[1];
-                                                                                                                                                               _tmp335_ = vala_gidl_parser_eval (self, _tmp334_);
-                                                                                                                                                               _tmp336_ = _tmp335_;
-                                                                                                                                                               _tmp337_ = vala_gidl_parser_parse_type_from_string (self, _tmp336_, FALSE, NULL);
+                                                                                                                                                       gchar** _tmp332_ = NULL;
+                                                                                                                                                       gint _tmp332__length1 = 0;
+                                                                                                                                                       const gchar* _tmp333_ = NULL;
+                                                                                                                                                       _tmp332_ = nv;
+                                                                                                                                                       _tmp332__length1 = nv_length1;
+                                                                                                                                                       _tmp333_ = _tmp332_[0];
+                                                                                                                                                       if (g_strcmp0 (_tmp333_, "type_name") == 0) {
+                                                                                                                                                               ValaParameter* _tmp334_ = NULL;
+                                                                                                                                                               gchar** _tmp335_ = NULL;
+                                                                                                                                                               gint _tmp335__length1 = 0;
+                                                                                                                                                               const gchar* _tmp336_ = NULL;
+                                                                                                                                                               gchar* _tmp337_ = NULL;
+                                                                                                                                                               gchar* _tmp338_ = NULL;
+                                                                                                                                                               ValaDataType* _tmp339_ = NULL;
+                                                                                                                                                               ValaDataType* _tmp340_ = NULL;
+                                                                                                                                                               _tmp334_ = p;
+                                                                                                                                                               _tmp335_ = nv;
+                                                                                                                                                               _tmp335__length1 = nv_length1;
+                                                                                                                                                               _tmp336_ = _tmp335_[1];
+                                                                                                                                                               _tmp337_ = vala_gidl_parser_eval (self, _tmp336_);
+                                                                                                                                                               _tmp338_ = _tmp337_;
+                                                                                                                                                               _tmp339_ = vala_gidl_parser_parse_type_from_string (self, _tmp338_, FALSE, NULL);
                                                                                                                                                                _vala_code_node_unref0 (param_type);
-                                                                                                                                                               param_type = _tmp337_;
-                                                                                                                                                               _tmp338_ = param_type;
-                                                                                                                                                               vala_variable_set_variable_type ((ValaVariable*) _tmp332_, _tmp338_);
-                                                                                                                                                               _g_free0 (_tmp336_);
+                                                                                                                                                               param_type = _tmp339_;
+                                                                                                                                                               _tmp340_ = param_type;
+                                                                                                                                                               vala_variable_set_variable_type ((ValaVariable*) _tmp334_, _tmp340_);
+                                                                                                                                                               _g_free0 (_tmp338_);
                                                                                                                                                        }
                                                                                                                                                }
                                                                                                                                        }
@@ -4246,86 +4252,86 @@ static ValaDelegate* vala_gidl_parser_parse_delegate (ValaGIdlParser* self, GIdl
                                                        }
                                                }
                                        }
-                                       _tmp340_ = show_param;
-                                       if (_tmp340_) {
-                                               _tmp339_ = TRUE;
+                                       _tmp342_ = show_param;
+                                       if (_tmp342_) {
+                                               _tmp341_ = TRUE;
                                        } else {
-                                               gboolean _tmp341_ = FALSE;
-                                               _tmp341_ = hide_param;
-                                               _tmp339_ = !_tmp341_;
+                                               gboolean _tmp343_ = FALSE;
+                                               _tmp343_ = hide_param;
+                                               _tmp341_ = !_tmp343_;
                                        }
-                                       if (_tmp339_) {
-                                               ValaDelegate* _tmp342_ = NULL;
-                                               ValaParameter* _tmp343_ = NULL;
-                                               _tmp342_ = cb;
-                                               _tmp343_ = p;
-                                               vala_delegate_add_parameter (_tmp342_, _tmp343_);
+                                       if (_tmp341_) {
+                                               ValaDelegate* _tmp344_ = NULL;
+                                               ValaParameter* _tmp345_ = NULL;
+                                               _tmp344_ = cb;
+                                               _tmp345_ = p;
+                                               vala_delegate_add_parameter (_tmp344_, _tmp345_);
                                        }
                                        _vala_code_node_unref0 (p);
                                        _vala_code_node_unref0 (param_type);
                                        _g_free0 (param_name);
                                }
-                               _tmp344_ = remaining_params;
-                               remaining_params = _tmp344_ - 1;
+                               _tmp346_ = remaining_params;
+                               remaining_params = _tmp346_ - 1;
                        }
                }
        }
-       _tmp346_ = suppress_throws;
-       if (_tmp346_ == FALSE) {
-               const gchar* _tmp347_ = NULL;
-               _tmp347_ = error_types;
-               _tmp345_ = _tmp347_ != NULL;
+       _tmp348_ = suppress_throws;
+       if (_tmp348_ == FALSE) {
+               const gchar* _tmp349_ = NULL;
+               _tmp349_ = error_types;
+               _tmp347_ = _tmp349_ != NULL;
        } else {
-               _tmp345_ = FALSE;
+               _tmp347_ = FALSE;
        }
-       if (_tmp345_) {
+       if (_tmp347_) {
                gchar** type_args = NULL;
-               const gchar* _tmp348_ = NULL;
-               gchar* _tmp349_ = NULL;
-               gchar* _tmp350_ = NULL;
-               gchar** _tmp351_ = NULL;
-               gchar** _tmp352_ = NULL;
+               const gchar* _tmp350_ = NULL;
+               gchar* _tmp351_ = NULL;
+               gchar* _tmp352_ = NULL;
                gchar** _tmp353_ = NULL;
-               gint _tmp353__length1 = 0;
+               gchar** _tmp354_ = NULL;
+               gchar** _tmp355_ = NULL;
+               gint _tmp355__length1 = 0;
                gint type_args_length1 = 0;
                gint _type_args_size_ = 0;
-               gchar** _tmp354_ = NULL;
-               gint _tmp354__length1 = 0;
-               _tmp348_ = error_types;
-               _tmp349_ = vala_gidl_parser_eval (self, _tmp348_);
-               _tmp350_ = _tmp349_;
-               _tmp352_ = _tmp351_ = g_strsplit (_tmp350_, ",", 0);
-               _tmp353_ = _tmp352_;
-               _tmp353__length1 = _vala_array_length (_tmp351_);
-               _g_free0 (_tmp350_);
-               type_args = _tmp353_;
-               type_args_length1 = _tmp353__length1;
+               gchar** _tmp356_ = NULL;
+               gint _tmp356__length1 = 0;
+               _tmp350_ = error_types;
+               _tmp351_ = vala_gidl_parser_eval (self, _tmp350_);
+               _tmp352_ = _tmp351_;
+               _tmp354_ = _tmp353_ = g_strsplit (_tmp352_, ",", 0);
+               _tmp355_ = _tmp354_;
+               _tmp355__length1 = _vala_array_length (_tmp353_);
+               _g_free0 (_tmp352_);
+               type_args = _tmp355_;
+               type_args_length1 = _tmp355__length1;
                _type_args_size_ = type_args_length1;
-               _tmp354_ = type_args;
-               _tmp354__length1 = type_args_length1;
+               _tmp356_ = type_args;
+               _tmp356__length1 = type_args_length1;
                {
                        gchar** type_arg_collection = NULL;
                        gint type_arg_collection_length1 = 0;
                        gint _type_arg_collection_size_ = 0;
                        gint type_arg_it = 0;
-                       type_arg_collection = _tmp354_;
-                       type_arg_collection_length1 = _tmp354__length1;
-                       for (type_arg_it = 0; type_arg_it < _tmp354__length1; type_arg_it = type_arg_it + 1) {
-                               gchar* _tmp355_ = NULL;
+                       type_arg_collection = _tmp356_;
+                       type_arg_collection_length1 = _tmp356__length1;
+                       for (type_arg_it = 0; type_arg_it < _tmp356__length1; type_arg_it = type_arg_it + 1) {
+                               gchar* _tmp357_ = NULL;
                                gchar* type_arg = NULL;
-                               _tmp355_ = g_strdup (type_arg_collection[type_arg_it]);
-                               type_arg = _tmp355_;
+                               _tmp357_ = g_strdup (type_arg_collection[type_arg_it]);
+                               type_arg = _tmp357_;
                                {
-                                       ValaDelegate* _tmp356_ = NULL;
-                                       const gchar* _tmp357_ = NULL;
-                                       ValaDataType* _tmp358_ = NULL;
-                                       ValaDataType* _tmp359_ = NULL;
-                                       _tmp356_ = cb;
-                                       _tmp357_ = type_arg;
-                                       _tmp358_ = vala_gidl_parser_parse_type_from_string (self, _tmp357_, TRUE, NULL);
-                                       _tmp359_ = _tmp358_;
-                                       vala_code_node_add_error_type ((ValaCodeNode*) _tmp356_, _tmp359_);
-                                       _vala_code_node_unref0 (_tmp359_);
+                                       ValaDelegate* _tmp358_ = NULL;
+                                       const gchar* _tmp359_ = NULL;
+                                       ValaDataType* _tmp360_ = NULL;
+                                       ValaDataType* _tmp361_ = NULL;
+                                       _tmp358_ = cb;
+                                       _tmp359_ = type_arg;
+                                       _tmp360_ = vala_gidl_parser_parse_type_from_string (self, _tmp359_, TRUE, NULL);
+                                       _tmp361_ = _tmp360_;
+                                       vala_code_node_add_error_type ((ValaCodeNode*) _tmp358_, _tmp361_);
+                                       _vala_code_node_unref0 (_tmp361_);
                                        _g_free0 (type_arg);
                                }
                        }
@@ -11272,9 +11278,10 @@ static ValaDataType* vala_gidl_parser_parse_type (ValaGIdlParser* self, GIdlNode
                                                                                                                                                                                ValaUnresolvedType* _tmp112_ = NULL;
                                                                                                                                                                                ValaDataType* _tmp113_ = NULL;
                                                                                                                                                                                ValaDataType* _tmp114_ = NULL;
-                                                                                                                                                                               ValaSourceReference* _tmp115_ = NULL;
+                                                                                                                                                                               ValaDataType* _tmp115_ = NULL;
                                                                                                                                                                                ValaSourceReference* _tmp116_ = NULL;
-                                                                                                                                                                               ValaArrayType* _tmp117_ = NULL;
+                                                                                                                                                                               ValaSourceReference* _tmp117_ = NULL;
+                                                                                                                                                                               ValaArrayType* _tmp118_ = NULL;
                                                                                                                                                                                _tmp107_ = type_node;
                                                                                                                                                                                _tmp108_ = _tmp107_->parameter_type1;
                                                                                                                                                                                _tmp109_ = vala_gidl_parser_parse_type (self, _tmp108_, NULL);
@@ -11293,11 +11300,13 @@ static ValaDataType* vala_gidl_parser_parse_type (ValaGIdlParser* self, GIdlNode
                                                                                                                                                                                        return result;
                                                                                                                                                                                }
                                                                                                                                                                                _tmp113_ = element_type;
+                                                                                                                                                                               vala_data_type_set_value_owned (_tmp113_, TRUE);
                                                                                                                                                                                _tmp114_ = element_type;
-                                                                                                                                                                               _tmp115_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp114_);
-                                                                                                                                                                               _tmp116_ = _tmp115_;
-                                                                                                                                                                               _tmp117_ = vala_array_type_new (_tmp113_, 1, _tmp116_);
-                                                                                                                                                                               result = (ValaDataType*) _tmp117_;
+                                                                                                                                                                               _tmp115_ = element_type;
+                                                                                                                                                                               _tmp116_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp115_);
+                                                                                                                                                                               _tmp117_ = _tmp116_;
+                                                                                                                                                                               _tmp118_ = vala_array_type_new (_tmp114_, 1, _tmp117_);
+                                                                                                                                                                               result = (ValaDataType*) _tmp118_;
                                                                                                                                                                                _vala_code_node_unref0 (element_type);
                                                                                                                                                                                _vala_code_node_unref0 (type);
                                                                                                                                                                                if (direction) {
@@ -11305,103 +11314,103 @@ static ValaDataType* vala_gidl_parser_parse_type (ValaGIdlParser* self, GIdlNode
                                                                                                                                                                                }
                                                                                                                                                                                return result;
                                                                                                                                                                        } else {
-                                                                                                                                                                               GIdlNodeType* _tmp118_ = NULL;
-                                                                                                                                                                               GITypeTag _tmp119_ = 0;
-                                                                                                                                                                               _tmp118_ = type_node;
-                                                                                                                                                                               _tmp119_ = _tmp118_->tag;
-                                                                                                                                                                               if (_tmp119_ == TYPE_TAG_LIST) {
-                                                                                                                                                                                       ValaUnresolvedType* _tmp120_ = NULL;
-                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp121_ = NULL;
+                                                                                                                                                                               GIdlNodeType* _tmp119_ = NULL;
+                                                                                                                                                                               GITypeTag _tmp120_ = 0;
+                                                                                                                                                                               _tmp119_ = type_node;
+                                                                                                                                                                               _tmp120_ = _tmp119_->tag;
+                                                                                                                                                                               if (_tmp120_ == TYPE_TAG_LIST) {
+                                                                                                                                                                                       ValaUnresolvedType* _tmp121_ = NULL;
                                                                                                                                                                                        ValaUnresolvedSymbol* _tmp122_ = NULL;
                                                                                                                                                                                        ValaUnresolvedSymbol* _tmp123_ = NULL;
                                                                                                                                                                                        ValaUnresolvedSymbol* _tmp124_ = NULL;
-                                                                                                                                                                                       _tmp120_ = type;
-                                                                                                                                                                                       _tmp121_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
-                                                                                                                                                                                       _tmp122_ = _tmp121_;
-                                                                                                                                                                                       _tmp123_ = vala_unresolved_symbol_new (_tmp122_, "List", NULL);
-                                                                                                                                                                                       _tmp124_ = _tmp123_;
-                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp120_, _tmp124_);
-                                                                                                                                                                                       _vala_code_node_unref0 (_tmp124_);
-                                                                                                                                                                                       _vala_code_node_unref0 (_tmp122_);
+                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp125_ = NULL;
+                                                                                                                                                                                       _tmp121_ = type;
+                                                                                                                                                                                       _tmp122_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
+                                                                                                                                                                                       _tmp123_ = _tmp122_;
+                                                                                                                                                                                       _tmp124_ = vala_unresolved_symbol_new (_tmp123_, "List", NULL);
+                                                                                                                                                                                       _tmp125_ = _tmp124_;
+                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp121_, _tmp125_);
+                                                                                                                                                                                       _vala_code_node_unref0 (_tmp125_);
+                                                                                                                                                                                       _vala_code_node_unref0 (_tmp123_);
                                                                                                                                                                                } else {
-                                                                                                                                                                                       GIdlNodeType* _tmp125_ = NULL;
-                                                                                                                                                                                       GITypeTag _tmp126_ = 0;
-                                                                                                                                                                                       _tmp125_ = type_node;
-                                                                                                                                                                                       _tmp126_ = _tmp125_->tag;
-                                                                                                                                                                                       if (_tmp126_ == TYPE_TAG_SLIST) {
-                                                                                                                                                                                               ValaUnresolvedType* _tmp127_ = NULL;
-                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp128_ = NULL;
+                                                                                                                                                                                       GIdlNodeType* _tmp126_ = NULL;
+                                                                                                                                                                                       GITypeTag _tmp127_ = 0;
+                                                                                                                                                                                       _tmp126_ = type_node;
+                                                                                                                                                                                       _tmp127_ = _tmp126_->tag;
+                                                                                                                                                                                       if (_tmp127_ == TYPE_TAG_SLIST) {
+                                                                                                                                                                                               ValaUnresolvedType* _tmp128_ = NULL;
                                                                                                                                                                                                ValaUnresolvedSymbol* _tmp129_ = NULL;
                                                                                                                                                                                                ValaUnresolvedSymbol* _tmp130_ = NULL;
                                                                                                                                                                                                ValaUnresolvedSymbol* _tmp131_ = NULL;
-                                                                                                                                                                                               _tmp127_ = type;
-                                                                                                                                                                                               _tmp128_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
-                                                                                                                                                                                               _tmp129_ = _tmp128_;
-                                                                                                                                                                                               _tmp130_ = vala_unresolved_symbol_new (_tmp129_, "SList", NULL);
-                                                                                                                                                                                               _tmp131_ = _tmp130_;
-                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp127_, _tmp131_);
-                                                                                                                                                                                               _vala_code_node_unref0 (_tmp131_);
-                                                                                                                                                                                               _vala_code_node_unref0 (_tmp129_);
+                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp132_ = NULL;
+                                                                                                                                                                                               _tmp128_ = type;
+                                                                                                                                                                                               _tmp129_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
+                                                                                                                                                                                               _tmp130_ = _tmp129_;
+                                                                                                                                                                                               _tmp131_ = vala_unresolved_symbol_new (_tmp130_, "SList", NULL);
+                                                                                                                                                                                               _tmp132_ = _tmp131_;
+                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp128_, _tmp132_);
+                                                                                                                                                                                               _vala_code_node_unref0 (_tmp132_);
+                                                                                                                                                                                               _vala_code_node_unref0 (_tmp130_);
                                                                                                                                                                                        } else {
-                                                                                                                                                                                               GIdlNodeType* _tmp132_ = NULL;
-                                                                                                                                                                                               GITypeTag _tmp133_ = 0;
-                                                                                                                                                                                               _tmp132_ = type_node;
-                                                                                                                                                                                               _tmp133_ = _tmp132_->tag;
-                                                                                                                                                                                               if (_tmp133_ == TYPE_TAG_HASH) {
-                                                                                                                                                                                                       ValaUnresolvedType* _tmp134_ = NULL;
-                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp135_ = NULL;
+                                                                                                                                                                                               GIdlNodeType* _tmp133_ = NULL;
+                                                                                                                                                                                               GITypeTag _tmp134_ = 0;
+                                                                                                                                                                                               _tmp133_ = type_node;
+                                                                                                                                                                                               _tmp134_ = _tmp133_->tag;
+                                                                                                                                                                                               if (_tmp134_ == TYPE_TAG_HASH) {
+                                                                                                                                                                                                       ValaUnresolvedType* _tmp135_ = NULL;
                                                                                                                                                                                                        ValaUnresolvedSymbol* _tmp136_ = NULL;
                                                                                                                                                                                                        ValaUnresolvedSymbol* _tmp137_ = NULL;
                                                                                                                                                                                                        ValaUnresolvedSymbol* _tmp138_ = NULL;
-                                                                                                                                                                                                       _tmp134_ = type;
-                                                                                                                                                                                                       _tmp135_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
-                                                                                                                                                                                                       _tmp136_ = _tmp135_;
-                                                                                                                                                                                                       _tmp137_ = vala_unresolved_symbol_new (_tmp136_, "HashTable", NULL);
-                                                                                                                                                                                                       _tmp138_ = _tmp137_;
-                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp134_, _tmp138_);
-                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp138_);
-                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp136_);
+                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp139_ = NULL;
+                                                                                                                                                                                                       _tmp135_ = type;
+                                                                                                                                                                                                       _tmp136_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
+                                                                                                                                                                                                       _tmp137_ = _tmp136_;
+                                                                                                                                                                                                       _tmp138_ = vala_unresolved_symbol_new (_tmp137_, "HashTable", NULL);
+                                                                                                                                                                                                       _tmp139_ = _tmp138_;
+                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp135_, _tmp139_);
+                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp139_);
+                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp137_);
                                                                                                                                                                                                } else {
-                                                                                                                                                                                                       GIdlNodeType* _tmp139_ = NULL;
-                                                                                                                                                                                                       GITypeTag _tmp140_ = 0;
-                                                                                                                                                                                                       _tmp139_ = type_node;
-                                                                                                                                                                                                       _tmp140_ = _tmp139_->tag;
-                                                                                                                                                                                                       if (_tmp140_ == TYPE_TAG_ERROR) {
-                                                                                                                                                                                                               ValaUnresolvedType* _tmp141_ = NULL;
-                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp142_ = NULL;
+                                                                                                                                                                                                       GIdlNodeType* _tmp140_ = NULL;
+                                                                                                                                                                                                       GITypeTag _tmp141_ = 0;
+                                                                                                                                                                                                       _tmp140_ = type_node;
+                                                                                                                                                                                                       _tmp141_ = _tmp140_->tag;
+                                                                                                                                                                                                       if (_tmp141_ == TYPE_TAG_ERROR) {
+                                                                                                                                                                                                               ValaUnresolvedType* _tmp142_ = NULL;
                                                                                                                                                                                                                ValaUnresolvedSymbol* _tmp143_ = NULL;
                                                                                                                                                                                                                ValaUnresolvedSymbol* _tmp144_ = NULL;
                                                                                                                                                                                                                ValaUnresolvedSymbol* _tmp145_ = NULL;
-                                                                                                                                                                                                               _tmp141_ = type;
-                                                                                                                                                                                                               _tmp142_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
-                                                                                                                                                                                                               _tmp143_ = _tmp142_;
-                                                                                                                                                                                                               _tmp144_ = vala_unresolved_symbol_new (_tmp143_, "Error", NULL);
-                                                                                                                                                                                                               _tmp145_ = _tmp144_;
-                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp141_, _tmp145_);
-                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp145_);
-                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp143_);
+                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp146_ = NULL;
+                                                                                                                                                                                                               _tmp142_ = type;
+                                                                                                                                                                                                               _tmp143_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
+                                                                                                                                                                                                               _tmp144_ = _tmp143_;
+                                                                                                                                                                                                               _tmp145_ = vala_unresolved_symbol_new (_tmp144_, "Error", NULL);
+                                                                                                                                                                                                               _tmp146_ = _tmp145_;
+                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp142_, _tmp146_);
+                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp146_);
+                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp144_);
                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                               GIdlNodeType* _tmp146_ = NULL;
-                                                                                                                                                                                                               gboolean _tmp147_ = FALSE;
-                                                                                                                                                                                                               _tmp146_ = type_node;
-                                                                                                                                                                                                               _tmp147_ = _tmp146_->is_interface;
-                                                                                                                                                                                                               if (_tmp147_) {
+                                                                                                                                                                                                               GIdlNodeType* _tmp147_ = NULL;
+                                                                                                                                                                                                               gboolean _tmp148_ = FALSE;
+                                                                                                                                                                                                               _tmp147_ = type_node;
+                                                                                                                                                                                                               _tmp148_ = _tmp147_->is_interface;
+                                                                                                                                                                                                               if (_tmp148_) {
                                                                                                                                                                                                                        gchar* n = NULL;
-                                                                                                                                                                                                                       GIdlNodeType* _tmp148_ = NULL;
-                                                                                                                                                                                                                       const gchar* _tmp149_ = NULL;
-                                                                                                                                                                                                                       gchar* _tmp150_ = NULL;
-                                                                                                                                                                                                                       const gchar* _tmp151_ = NULL;
+                                                                                                                                                                                                                       GIdlNodeType* _tmp149_ = NULL;
+                                                                                                                                                                                                                       const gchar* _tmp150_ = NULL;
+                                                                                                                                                                                                                       gchar* _tmp151_ = NULL;
                                                                                                                                                                                                                        const gchar* _tmp152_ = NULL;
-                                                                                                                                                                                                                       gboolean _tmp153_ = FALSE;
-                                                                                                                                                                                                                       gboolean _tmp158_ = FALSE;
-                                                                                                                                                                                                                       GIdlNodeType* _tmp159_ = NULL;
-                                                                                                                                                                                                                       gboolean _tmp160_ = FALSE;
-                                                                                                                                                                                                                       _tmp148_ = type_node;
-                                                                                                                                                                                                                       _tmp149_ = _tmp148_->interface;
-                                                                                                                                                                                                                       _tmp150_ = g_strdup (_tmp149_);
-                                                                                                                                                                                                                       n = _tmp150_;
-                                                                                                                                                                                                                       _tmp151_ = n;
-                                                                                                                                                                                                                       if (g_strcmp0 (_tmp151_, "") == 0) {
+                                                                                                                                                                                                                       const gchar* _tmp153_ = NULL;
+                                                                                                                                                                                                                       gboolean _tmp154_ = FALSE;
+                                                                                                                                                                                                                       gboolean _tmp159_ = FALSE;
+                                                                                                                                                                                                                       GIdlNodeType* _tmp160_ = NULL;
+                                                                                                                                                                                                                       gboolean _tmp161_ = FALSE;
+                                                                                                                                                                                                                       _tmp149_ = type_node;
+                                                                                                                                                                                                                       _tmp150_ = _tmp149_->interface;
+                                                                                                                                                                                                                       _tmp151_ = g_strdup (_tmp150_);
+                                                                                                                                                                                                                       n = _tmp151_;
+                                                                                                                                                                                                                       _tmp152_ = n;
+                                                                                                                                                                                                                       if (g_strcmp0 (_tmp152_, "") == 0) {
                                                                                                                                                                                                                                result = NULL;
                                                                                                                                                                                                                                _g_free0 (n);
                                                                                                                                                                                                                                _vala_code_node_unref0 (type);
@@ -11410,115 +11419,118 @@ static ValaDataType* vala_gidl_parser_parse_type (ValaGIdlParser* self, GIdlNode
                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                return result;
                                                                                                                                                                                                                        }
-                                                                                                                                                                                                                       _tmp152_ = n;
-                                                                                                                                                                                                                       _tmp153_ = g_str_has_prefix (_tmp152_, "const-");
-                                                                                                                                                                                                                       if (_tmp153_) {
-                                                                                                                                                                                                                               const gchar* _tmp154_ = NULL;
-                                                                                                                                                                                                                               gint _tmp155_ = 0;
+                                                                                                                                                                                                                       _tmp153_ = n;
+                                                                                                                                                                                                                       _tmp154_ = g_str_has_prefix (_tmp153_, "const-");
+                                                                                                                                                                                                                       if (_tmp154_) {
+                                                                                                                                                                                                                               const gchar* _tmp155_ = NULL;
                                                                                                                                                                                                                                gint _tmp156_ = 0;
-                                                                                                                                                                                                                               gchar* _tmp157_ = NULL;
-                                                                                                                                                                                                                               _tmp154_ = n;
-                                                                                                                                                                                                                               _tmp155_ = strlen ("const-");
-                                                                                                                                                                                                                               _tmp156_ = _tmp155_;
-                                                                                                                                                                                                                               _tmp157_ = string_substring (_tmp154_, (glong) _tmp156_, (glong) (-1));
+                                                                                                                                                                                                                               gint _tmp157_ = 0;
+                                                                                                                                                                                                                               gchar* _tmp158_ = NULL;
+                                                                                                                                                                                                                               _tmp155_ = n;
+                                                                                                                                                                                                                               _tmp156_ = strlen ("const-");
+                                                                                                                                                                                                                               _tmp157_ = _tmp156_;
+                                                                                                                                                                                                                               _tmp158_ = string_substring (_tmp155_, (glong) _tmp157_, (glong) (-1));
                                                                                                                                                                                                                                _g_free0 (n);
-                                                                                                                                                                                                                               n = _tmp157_;
+                                                                                                                                                                                                                               n = _tmp158_;
                                                                                                                                                                                                                        }
-                                                                                                                                                                                                                       _tmp159_ = type_node;
-                                                                                                                                                                                                                       _tmp160_ = _tmp159_->is_pointer;
-                                                                                                                                                                                                                       if (_tmp160_) {
-                                                                                                                                                                                                                               gboolean _tmp161_ = FALSE;
-                                                                                                                                                                                                                               const gchar* _tmp162_ = NULL;
-                                                                                                                                                                                                                               _tmp162_ = n;
-                                                                                                                                                                                                                               if (g_strcmp0 (_tmp162_, "gchar") == 0) {
-                                                                                                                                                                                                                                       _tmp161_ = TRUE;
+                                                                                                                                                                                                                       _tmp160_ = type_node;
+                                                                                                                                                                                                                       _tmp161_ = _tmp160_->is_pointer;
+                                                                                                                                                                                                                       if (_tmp161_) {
+                                                                                                                                                                                                                               gboolean _tmp162_ = FALSE;
+                                                                                                                                                                                                                               const gchar* _tmp163_ = NULL;
+                                                                                                                                                                                                                               _tmp163_ = n;
+                                                                                                                                                                                                                               if (g_strcmp0 (_tmp163_, "gchar") == 0) {
+                                                                                                                                                                                                                                       _tmp162_ = TRUE;
                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                       const gchar* _tmp163_ = NULL;
-                                                                                                                                                                                                                                       _tmp163_ = n;
-                                                                                                                                                                                                                                       _tmp161_ = g_strcmp0 (_tmp163_, "char") == 0;
+                                                                                                                                                                                                                                       const gchar* _tmp164_ = NULL;
+                                                                                                                                                                                                                                       _tmp164_ = n;
+                                                                                                                                                                                                                                       _tmp162_ = g_strcmp0 (_tmp164_, "char") == 0;
                                                                                                                                                                                                                                }
-                                                                                                                                                                                                                               _tmp158_ = _tmp161_;
+                                                                                                                                                                                                                               _tmp159_ = _tmp162_;
                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                               _tmp158_ = FALSE;
+                                                                                                                                                                                                                               _tmp159_ = FALSE;
                                                                                                                                                                                                                        }
-                                                                                                                                                                                                                       if (_tmp158_) {
-                                                                                                                                                                                                                               ValaUnresolvedType* _tmp164_ = NULL;
-                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp165_ = NULL;
+                                                                                                                                                                                                                       if (_tmp159_) {
+                                                                                                                                                                                                                               ValaUnresolvedType* _tmp165_ = NULL;
                                                                                                                                                                                                                                ValaUnresolvedSymbol* _tmp166_ = NULL;
-                                                                                                                                                                                                                               GIdlNodeType* _tmp167_ = NULL;
-                                                                                                                                                                                                                               const gchar* _tmp168_ = NULL;
-                                                                                                                                                                                                                               gboolean _tmp169_ = FALSE;
-                                                                                                                                                                                                                               _tmp164_ = type;
-                                                                                                                                                                                                                               _tmp165_ = vala_unresolved_symbol_new (NULL, "string", NULL);
-                                                                                                                                                                                                                               _tmp166_ = _tmp165_;
-                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp164_, _tmp166_);
-                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp166_);
-                                                                                                                                                                                                                               _tmp167_ = type_node;
-                                                                                                                                                                                                                               _tmp168_ = _tmp167_->unparsed;
-                                                                                                                                                                                                                               _tmp169_ = g_str_has_suffix (_tmp168_, "**");
-                                                                                                                                                                                                                               if (_tmp169_) {
+                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp167_ = NULL;
+                                                                                                                                                                                                                               GIdlNodeType* _tmp168_ = NULL;
+                                                                                                                                                                                                                               const gchar* _tmp169_ = NULL;
+                                                                                                                                                                                                                               gboolean _tmp170_ = FALSE;
+                                                                                                                                                                                                                               _tmp165_ = type;
+                                                                                                                                                                                                                               _tmp166_ = vala_unresolved_symbol_new (NULL, "string", NULL);
+                                                                                                                                                                                                                               _tmp167_ = _tmp166_;
+                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp165_, _tmp167_);
+                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp167_);
+                                                                                                                                                                                                                               _tmp168_ = type_node;
+                                                                                                                                                                                                                               _tmp169_ = _tmp168_->unparsed;
+                                                                                                                                                                                                                               _tmp170_ = g_str_has_suffix (_tmp169_, "**");
+                                                                                                                                                                                                                               if (_tmp170_) {
                                                                                                                                                                                                                                        _vala_direction = VALA_PARAMETER_DIRECTION_OUT;
                                                                                                                                                                                                                                }
                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                               const gchar* _tmp170_ = NULL;
-                                                                                                                                                                                                                               _tmp170_ = n;
-                                                                                                                                                                                                                               if (g_strcmp0 (_tmp170_, "gunichar") == 0) {
-                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp171_ = NULL;
-                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp172_ = NULL;
+                                                                                                                                                                                                                               const gchar* _tmp171_ = NULL;
+                                                                                                                                                                                                                               _tmp171_ = n;
+                                                                                                                                                                                                                               if (g_strcmp0 (_tmp171_, "gunichar") == 0) {
+                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp172_ = NULL;
                                                                                                                                                                                                                                        ValaUnresolvedSymbol* _tmp173_ = NULL;
-                                                                                                                                                                                                                                       _tmp171_ = type;
-                                                                                                                                                                                                                                       _tmp172_ = vala_unresolved_symbol_new (NULL, "unichar", NULL);
-                                                                                                                                                                                                                                       _tmp173_ = _tmp172_;
-                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp171_, _tmp173_);
-                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp173_);
+                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp174_ = NULL;
+                                                                                                                                                                                                                                       _tmp172_ = type;
+                                                                                                                                                                                                                                       _tmp173_ = vala_unresolved_symbol_new (NULL, "unichar", NULL);
+                                                                                                                                                                                                                                       _tmp174_ = _tmp173_;
+                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp172_, _tmp174_);
+                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp174_);
                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                       const gchar* _tmp174_ = NULL;
-                                                                                                                                                                                                                                       _tmp174_ = n;
-                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp174_, "gchar") == 0) {
-                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp175_ = NULL;
-                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp176_ = NULL;
+                                                                                                                                                                                                                                       const gchar* _tmp175_ = NULL;
+                                                                                                                                                                                                                                       _tmp175_ = n;
+                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp175_, "gchar") == 0) {
+                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp176_ = NULL;
                                                                                                                                                                                                                                                ValaUnresolvedSymbol* _tmp177_ = NULL;
-                                                                                                                                                                                                                                               _tmp175_ = type;
-                                                                                                                                                                                                                                               _tmp176_ = vala_unresolved_symbol_new (NULL, "char", NULL);
-                                                                                                                                                                                                                                               _tmp177_ = _tmp176_;
-                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp175_, _tmp177_);
-                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp177_);
+                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp178_ = NULL;
+                                                                                                                                                                                                                                               _tmp176_ = type;
+                                                                                                                                                                                                                                               _tmp177_ = vala_unresolved_symbol_new (NULL, "char", NULL);
+                                                                                                                                                                                                                                               _tmp178_ = _tmp177_;
+                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp176_, _tmp178_);
+                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp178_);
                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                               gboolean _tmp178_ = FALSE;
-                                                                                                                                                                                                                                               const gchar* _tmp179_ = NULL;
-                                                                                                                                                                                                                                               _tmp179_ = n;
-                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp179_, "guchar") == 0) {
-                                                                                                                                                                                                                                                       _tmp178_ = TRUE;
+                                                                                                                                                                                                                                               gboolean _tmp179_ = FALSE;
+                                                                                                                                                                                                                                               const gchar* _tmp180_ = NULL;
+                                                                                                                                                                                                                                               _tmp180_ = n;
+                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp180_, "guchar") == 0) {
+                                                                                                                                                                                                                                                       _tmp179_ = TRUE;
                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                       const gchar* _tmp180_ = NULL;
-                                                                                                                                                                                                                                                       _tmp180_ = n;
-                                                                                                                                                                                                                                                       _tmp178_ = g_strcmp0 (_tmp180_, "guint8") == 0;
+                                                                                                                                                                                                                                                       const gchar* _tmp181_ = NULL;
+                                                                                                                                                                                                                                                       _tmp181_ = n;
+                                                                                                                                                                                                                                                       _tmp179_ = g_strcmp0 (_tmp181_, "guint8") == 0;
                                                                                                                                                                                                                                                }
-                                                                                                                                                                                                                                               if (_tmp178_) {
-                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp181_ = NULL;
-                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp182_ = NULL;
+                                                                                                                                                                                                                                               if (_tmp179_) {
+                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp182_ = NULL;
                                                                                                                                                                                                                                                        ValaUnresolvedSymbol* _tmp183_ = NULL;
-                                                                                                                                                                                                                                                       GIdlNodeType* _tmp184_ = NULL;
-                                                                                                                                                                                                                                                       gboolean _tmp185_ = FALSE;
-                                                                                                                                                                                                                                                       _tmp181_ = type;
-                                                                                                                                                                                                                                                       _tmp182_ = vala_unresolved_symbol_new (NULL, "uchar", NULL);
-                                                                                                                                                                                                                                                       _tmp183_ = _tmp182_;
-                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp181_, _tmp183_);
-                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp183_);
-                                                                                                                                                                                                                                                       _tmp184_ = type_node;
-                                                                                                                                                                                                                                                       _tmp185_ = _tmp184_->is_pointer;
-                                                                                                                                                                                                                                                       if (_tmp185_) {
-                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp186_ = NULL;
+                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp184_ = NULL;
+                                                                                                                                                                                                                                                       GIdlNodeType* _tmp185_ = NULL;
+                                                                                                                                                                                                                                                       gboolean _tmp186_ = FALSE;
+                                                                                                                                                                                                                                                       _tmp182_ = type;
+                                                                                                                                                                                                                                                       _tmp183_ = vala_unresolved_symbol_new (NULL, "uchar", NULL);
+                                                                                                                                                                                                                                                       _tmp184_ = _tmp183_;
+                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp182_, _tmp184_);
+                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp184_);
+                                                                                                                                                                                                                                                       _tmp185_ = type_node;
+                                                                                                                                                                                                                                                       _tmp186_ = _tmp185_->is_pointer;
+                                                                                                                                                                                                                                                       if (_tmp186_) {
                                                                                                                                                                                                                                                                ValaUnresolvedType* _tmp187_ = NULL;
-                                                                                                                                                                                                                                                               ValaSourceReference* _tmp188_ = NULL;
-                                                                                                                                                                                                                                                               ValaSourceReference* _tmp189_ = NULL;
-                                                                                                                                                                                                                                                               ValaArrayType* _tmp190_ = NULL;
-                                                                                                                                                                                                                                                               _tmp186_ = type;
+                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp188_ = NULL;
+                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp189_ = NULL;
+                                                                                                                                                                                                                                                               ValaSourceReference* _tmp190_ = NULL;
+                                                                                                                                                                                                                                                               ValaSourceReference* _tmp191_ = NULL;
+                                                                                                                                                                                                                                                               ValaArrayType* _tmp192_ = NULL;
                                                                                                                                                                                                                                                                _tmp187_ = type;
-                                                                                                                                                                                                                                                               _tmp188_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp187_);
-                                                                                                                                                                                                                                                               _tmp189_ = _tmp188_;
-                                                                                                                                                                                                                                                               _tmp190_ = vala_array_type_new ((ValaDataType*) _tmp186_, 1, _tmp189_);
-                                                                                                                                                                                                                                                               result = (ValaDataType*) _tmp190_;
+                                                                                                                                                                                                                                                               vala_data_type_set_value_owned ((ValaDataType*) _tmp187_, TRUE);
+                                                                                                                                                                                                                                                               _tmp188_ = type;
+                                                                                                                                                                                                                                                               _tmp189_ = type;
+                                                                                                                                                                                                                                                               _tmp190_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp189_);
+                                                                                                                                                                                                                                                               _tmp191_ = _tmp190_;
+                                                                                                                                                                                                                                                               _tmp192_ = vala_array_type_new ((ValaDataType*) _tmp188_, 1, _tmp191_);
+                                                                                                                                                                                                                                                               result = (ValaDataType*) _tmp192_;
                                                                                                                                                                                                                                                                _g_free0 (n);
                                                                                                                                                                                                                                                                _vala_code_node_unref0 (type);
                                                                                                                                                                                                                                                                if (direction) {
@@ -11527,51 +11539,51 @@ static ValaDataType* vala_gidl_parser_parse_type (ValaGIdlParser* self, GIdlNode
                                                                                                                                                                                                                                                                return result;
                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                       const gchar* _tmp191_ = NULL;
-                                                                                                                                                                                                                                                       _tmp191_ = n;
-                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp191_, "gushort") == 0) {
-                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp192_ = NULL;
-                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp193_ = NULL;
-                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp194_ = NULL;
-                                                                                                                                                                                                                                                               _tmp192_ = type;
-                                                                                                                                                                                                                                                               _tmp193_ = vala_unresolved_symbol_new (NULL, "ushort", NULL);
-                                                                                                                                                                                                                                                               _tmp194_ = _tmp193_;
-                                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp192_, _tmp194_);
-                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp194_);
+                                                                                                                                                                                                                                                       const gchar* _tmp193_ = NULL;
+                                                                                                                                                                                                                                                       _tmp193_ = n;
+                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp193_, "gushort") == 0) {
+                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp194_ = NULL;
+                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp195_ = NULL;
+                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp196_ = NULL;
+                                                                                                                                                                                                                                                               _tmp194_ = type;
+                                                                                                                                                                                                                                                               _tmp195_ = vala_unresolved_symbol_new (NULL, "ushort", NULL);
+                                                                                                                                                                                                                                                               _tmp196_ = _tmp195_;
+                                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp194_, _tmp196_);
+                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp196_);
                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                               const gchar* _tmp195_ = NULL;
-                                                                                                                                                                                                                                                               _tmp195_ = n;
-                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp195_, "gshort") == 0) {
-                                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp196_ = NULL;
-                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp197_ = NULL;
-                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp198_ = NULL;
-                                                                                                                                                                                                                                                                       _tmp196_ = type;
-                                                                                                                                                                                                                                                                       _tmp197_ = vala_unresolved_symbol_new (NULL, "short", NULL);
-                                                                                                                                                                                                                                                                       _tmp198_ = _tmp197_;
-                                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp196_, _tmp198_);
-                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp198_);
+                                                                                                                                                                                                                                                               const gchar* _tmp197_ = NULL;
+                                                                                                                                                                                                                                                               _tmp197_ = n;
+                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp197_, "gshort") == 0) {
+                                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp198_ = NULL;
+                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp199_ = NULL;
+                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp200_ = NULL;
+                                                                                                                                                                                                                                                                       _tmp198_ = type;
+                                                                                                                                                                                                                                                                       _tmp199_ = vala_unresolved_symbol_new (NULL, "short", NULL);
+                                                                                                                                                                                                                                                                       _tmp200_ = _tmp199_;
+                                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp198_, _tmp200_);
+                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp200_);
                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                       gboolean _tmp199_ = FALSE;
-                                                                                                                                                                                                                                                                       const gchar* _tmp200_ = NULL;
-                                                                                                                                                                                                                                                                       _tmp200_ = n;
-                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp200_, "gconstpointer") == 0) {
-                                                                                                                                                                                                                                                                               _tmp199_ = TRUE;
+                                                                                                                                                                                                                                                                       gboolean _tmp201_ = FALSE;
+                                                                                                                                                                                                                                                                       const gchar* _tmp202_ = NULL;
+                                                                                                                                                                                                                                                                       _tmp202_ = n;
+                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp202_, "gconstpointer") == 0) {
+                                                                                                                                                                                                                                                                               _tmp201_ = TRUE;
                                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                                               const gchar* _tmp201_ = NULL;
-                                                                                                                                                                                                                                                                               _tmp201_ = n;
-                                                                                                                                                                                                                                                                               _tmp199_ = g_strcmp0 (_tmp201_, "void") == 0;
+                                                                                                                                                                                                                                                                               const gchar* _tmp203_ = NULL;
+                                                                                                                                                                                                                                                                               _tmp203_ = n;
+                                                                                                                                                                                                                                                                               _tmp201_ = g_strcmp0 (_tmp203_, "void") == 0;
                                                                                                                                                                                                                                                                        }
-                                                                                                                                                                                                                                                                       if (_tmp199_) {
-                                                                                                                                                                                                                                                                               ValaVoidType* _tmp202_ = NULL;
-                                                                                                                                                                                                                                                                               ValaVoidType* _tmp203_ = NULL;
-                                                                                                                                                                                                                                                                               ValaPointerType* _tmp204_ = NULL;
-                                                                                                                                                                                                                                                                               ValaDataType* _tmp205_ = NULL;
-                                                                                                                                                                                                                                                                               _tmp202_ = vala_void_type_new (NULL);
-                                                                                                                                                                                                                                                                               _tmp203_ = _tmp202_;
-                                                                                                                                                                                                                                                                               _tmp204_ = vala_pointer_type_new ((ValaDataType*) _tmp203_, NULL);
-                                                                                                                                                                                                                                                                               _tmp205_ = (ValaDataType*) _tmp204_;
-                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp203_);
-                                                                                                                                                                                                                                                                               result = _tmp205_;
+                                                                                                                                                                                                                                                                       if (_tmp201_) {
+                                                                                                                                                                                                                                                                               ValaVoidType* _tmp204_ = NULL;
+                                                                                                                                                                                                                                                                               ValaVoidType* _tmp205_ = NULL;
+                                                                                                                                                                                                                                                                               ValaPointerType* _tmp206_ = NULL;
+                                                                                                                                                                                                                                                                               ValaDataType* _tmp207_ = NULL;
+                                                                                                                                                                                                                                                                               _tmp204_ = vala_void_type_new (NULL);
+                                                                                                                                                                                                                                                                               _tmp205_ = _tmp204_;
+                                                                                                                                                                                                                                                                               _tmp206_ = vala_pointer_type_new ((ValaDataType*) _tmp205_, NULL);
+                                                                                                                                                                                                                                                                               _tmp207_ = (ValaDataType*) _tmp206_;
+                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp205_);
+                                                                                                                                                                                                                                                                               result = _tmp207_;
                                                                                                                                                                                                                                                                                _g_free0 (n);
                                                                                                                                                                                                                                                                                _vala_code_node_unref0 (type);
                                                                                                                                                                                                                                                                                if (direction) {
@@ -11579,149 +11591,149 @@ static ValaDataType* vala_gidl_parser_parse_type (ValaGIdlParser* self, GIdlNode
                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                return result;
                                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                                               gboolean _tmp206_ = FALSE;
-                                                                                                                                                                                                                                                                               const gchar* _tmp207_ = NULL;
-                                                                                                                                                                                                                                                                               _tmp207_ = n;
-                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp207_, "goffset") == 0) {
-                                                                                                                                                                                                                                                                                       _tmp206_ = TRUE;
+                                                                                                                                                                                                                                                                               gboolean _tmp208_ = FALSE;
+                                                                                                                                                                                                                                                                               const gchar* _tmp209_ = NULL;
+                                                                                                                                                                                                                                                                               _tmp209_ = n;
+                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp209_, "goffset") == 0) {
+                                                                                                                                                                                                                                                                                       _tmp208_ = TRUE;
                                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                                       const gchar* _tmp208_ = NULL;
-                                                                                                                                                                                                                                                                                       _tmp208_ = n;
-                                                                                                                                                                                                                                                                                       _tmp206_ = g_strcmp0 (_tmp208_, "off_t") == 0;
+                                                                                                                                                                                                                                                                                       const gchar* _tmp210_ = NULL;
+                                                                                                                                                                                                                                                                                       _tmp210_ = n;
+                                                                                                                                                                                                                                                                                       _tmp208_ = g_strcmp0 (_tmp210_, "off_t") == 0;
                                                                                                                                                                                                                                                                                }
-                                                                                                                                                                                                                                                                               if (_tmp206_) {
-                                                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp209_ = NULL;
-                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp210_ = NULL;
-                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp211_ = NULL;
-                                                                                                                                                                                                                                                                                       _tmp209_ = type;
-                                                                                                                                                                                                                                                                                       _tmp210_ = vala_unresolved_symbol_new (NULL, "int64", NULL);
-                                                                                                                                                                                                                                                                                       _tmp211_ = _tmp210_;
-                                                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp209_, _tmp211_);
-                                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp211_);
+                                                                                                                                                                                                                                                                               if (_tmp208_) {
+                                                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp211_ = NULL;
+                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp212_ = NULL;
+                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp213_ = NULL;
+                                                                                                                                                                                                                                                                                       _tmp211_ = type;
+                                                                                                                                                                                                                                                                                       _tmp212_ = vala_unresolved_symbol_new (NULL, "int64", NULL);
+                                                                                                                                                                                                                                                                                       _tmp213_ = _tmp212_;
+                                                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp211_, _tmp213_);
+                                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp213_);
                                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                                       const gchar* _tmp212_ = NULL;
-                                                                                                                                                                                                                                                                                       _tmp212_ = n;
-                                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp212_, "value_array") == 0) {
-                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp213_ = NULL;
-                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp214_ = NULL;
-                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp215_ = NULL;
+                                                                                                                                                                                                                                                                                       const gchar* _tmp214_ = NULL;
+                                                                                                                                                                                                                                                                                       _tmp214_ = n;
+                                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp214_, "value_array") == 0) {
+                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp215_ = NULL;
                                                                                                                                                                                                                                                                                                ValaUnresolvedSymbol* _tmp216_ = NULL;
                                                                                                                                                                                                                                                                                                ValaUnresolvedSymbol* _tmp217_ = NULL;
-                                                                                                                                                                                                                                                                                               _tmp213_ = type;
-                                                                                                                                                                                                                                                                                               _tmp214_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
-                                                                                                                                                                                                                                                                                               _tmp215_ = _tmp214_;
-                                                                                                                                                                                                                                                                                               _tmp216_ = vala_unresolved_symbol_new (_tmp215_, "ValueArray", NULL);
+                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp218_ = NULL;
+                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp219_ = NULL;
+                                                                                                                                                                                                                                                                                               _tmp215_ = type;
+                                                                                                                                                                                                                                                                                               _tmp216_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
                                                                                                                                                                                                                                                                                                _tmp217_ = _tmp216_;
-                                                                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp213_, _tmp217_);
+                                                                                                                                                                                                                                                                                               _tmp218_ = vala_unresolved_symbol_new (_tmp217_, "ValueArray", NULL);
+                                                                                                                                                                                                                                                                                               _tmp219_ = _tmp218_;
+                                                                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp215_, _tmp219_);
+                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp219_);
                                                                                                                                                                                                                                                                                                _vala_code_node_unref0 (_tmp217_);
-                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp215_);
                                                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                                                               const gchar* _tmp218_ = NULL;
-                                                                                                                                                                                                                                                                                               _tmp218_ = n;
-                                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp218_, "time_t") == 0) {
-                                                                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp219_ = NULL;
-                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp220_ = NULL;
-                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp221_ = NULL;
-                                                                                                                                                                                                                                                                                                       _tmp219_ = type;
-                                                                                                                                                                                                                                                                                                       _tmp220_ = vala_unresolved_symbol_new (NULL, "ulong", NULL);
-                                                                                                                                                                                                                                                                                                       _tmp221_ = _tmp220_;
-                                                                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp219_, _tmp221_);
-                                                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp221_);
+                                                                                                                                                                                                                                                                                               const gchar* _tmp220_ = NULL;
+                                                                                                                                                                                                                                                                                               _tmp220_ = n;
+                                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp220_, "time_t") == 0) {
+                                                                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp221_ = NULL;
+                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp222_ = NULL;
+                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp223_ = NULL;
+                                                                                                                                                                                                                                                                                                       _tmp221_ = type;
+                                                                                                                                                                                                                                                                                                       _tmp222_ = vala_unresolved_symbol_new (NULL, "ulong", NULL);
+                                                                                                                                                                                                                                                                                                       _tmp223_ = _tmp222_;
+                                                                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp221_, _tmp223_);
+                                                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp223_);
                                                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                                                       const gchar* _tmp222_ = NULL;
-                                                                                                                                                                                                                                                                                                       _tmp222_ = n;
-                                                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp222_, "socklen_t") == 0) {
-                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp223_ = NULL;
-                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp224_ = NULL;
-                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp225_ = NULL;
-                                                                                                                                                                                                                                                                                                               _tmp223_ = type;
-                                                                                                                                                                                                                                                                                                               _tmp224_ = vala_unresolved_symbol_new (NULL, "uint32", NULL);
-                                                                                                                                                                                                                                                                                                               _tmp225_ = _tmp224_;
-                                                                                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp223_, _tmp225_);
-                                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp225_);
+                                                                                                                                                                                                                                                                                                       const gchar* _tmp224_ = NULL;
+                                                                                                                                                                                                                                                                                                       _tmp224_ = n;
+                                                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp224_, "socklen_t") == 0) {
+                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp225_ = NULL;
+                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp226_ = NULL;
+                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp227_ = NULL;
+                                                                                                                                                                                                                                                                                                               _tmp225_ = type;
+                                                                                                                                                                                                                                                                                                               _tmp226_ = vala_unresolved_symbol_new (NULL, "uint32", NULL);
+                                                                                                                                                                                                                                                                                                               _tmp227_ = _tmp226_;
+                                                                                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp225_, _tmp227_);
+                                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp227_);
                                                                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                                                                               const gchar* _tmp226_ = NULL;
-                                                                                                                                                                                                                                                                                                               _tmp226_ = n;
-                                                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp226_, "mode_t") == 0) {
-                                                                                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp227_ = NULL;
-                                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp228_ = NULL;
-                                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp229_ = NULL;
-                                                                                                                                                                                                                                                                                                                       _tmp227_ = type;
-                                                                                                                                                                                                                                                                                                                       _tmp228_ = vala_unresolved_symbol_new (NULL, "uint", NULL);
-                                                                                                                                                                                                                                                                                                                       _tmp229_ = _tmp228_;
-                                                                                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp227_, _tmp229_);
-                                                                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp229_);
+                                                                                                                                                                                                                                                                                                               const gchar* _tmp228_ = NULL;
+                                                                                                                                                                                                                                                                                                               _tmp228_ = n;
+                                                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp228_, "mode_t") == 0) {
+                                                                                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp229_ = NULL;
+                                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp230_ = NULL;
+                                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp231_ = NULL;
+                                                                                                                                                                                                                                                                                                                       _tmp229_ = type;
+                                                                                                                                                                                                                                                                                                                       _tmp230_ = vala_unresolved_symbol_new (NULL, "uint", NULL);
+                                                                                                                                                                                                                                                                                                                       _tmp231_ = _tmp230_;
+                                                                                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp229_, _tmp231_);
+                                                                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp231_);
                                                                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                                                                       gboolean _tmp230_ = FALSE;
-                                                                                                                                                                                                                                                                                                                       const gchar* _tmp231_ = NULL;
-                                                                                                                                                                                                                                                                                                                       _tmp231_ = n;
-                                                                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp231_, "gint") == 0) {
-                                                                                                                                                                                                                                                                                                                               _tmp230_ = TRUE;
+                                                                                                                                                                                                                                                                                                                       gboolean _tmp232_ = FALSE;
+                                                                                                                                                                                                                                                                                                                       const gchar* _tmp233_ = NULL;
+                                                                                                                                                                                                                                                                                                                       _tmp233_ = n;
+                                                                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp233_, "gint") == 0) {
+                                                                                                                                                                                                                                                                                                                               _tmp232_ = TRUE;
                                                                                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                                                                                               const gchar* _tmp232_ = NULL;
-                                                                                                                                                                                                                                                                                                                               _tmp232_ = n;
-                                                                                                                                                                                                                                                                                                                               _tmp230_ = g_strcmp0 (_tmp232_, "pid_t") == 0;
+                                                                                                                                                                                                                                                                                                                               const gchar* _tmp234_ = NULL;
+                                                                                                                                                                                                                                                                                                                               _tmp234_ = n;
+                                                                                                                                                                                                                                                                                                                               _tmp232_ = g_strcmp0 (_tmp234_, "pid_t") == 0;
                                                                                                                                                                                                                                                                                                                        }
-                                                                                                                                                                                                                                                                                                                       if (_tmp230_) {
-                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp233_ = NULL;
-                                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp234_ = NULL;
-                                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp235_ = NULL;
-                                                                                                                                                                                                                                                                                                                               _tmp233_ = type;
-                                                                                                                                                                                                                                                                                                                               _tmp234_ = vala_unresolved_symbol_new (NULL, "int", NULL);
-                                                                                                                                                                                                                                                                                                                               _tmp235_ = _tmp234_;
-                                                                                                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp233_, _tmp235_);
-                                                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp235_);
+                                                                                                                                                                                                                                                                                                                       if (_tmp232_) {
+                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp235_ = NULL;
+                                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp236_ = NULL;
+                                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp237_ = NULL;
+                                                                                                                                                                                                                                                                                                                               _tmp235_ = type;
+                                                                                                                                                                                                                                                                                                                               _tmp236_ = vala_unresolved_symbol_new (NULL, "int", NULL);
+                                                                                                                                                                                                                                                                                                                               _tmp237_ = _tmp236_;
+                                                                                                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp235_, _tmp237_);
+                                                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp237_);
                                                                                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                                                                                               gboolean _tmp236_ = FALSE;
-                                                                                                                                                                                                                                                                                                                               const gchar* _tmp237_ = NULL;
-                                                                                                                                                                                                                                                                                                                               _tmp237_ = n;
-                                                                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp237_, "unsigned") == 0) {
-                                                                                                                                                                                                                                                                                                                                       _tmp236_ = TRUE;
+                                                                                                                                                                                                                                                                                                                               gboolean _tmp238_ = FALSE;
+                                                                                                                                                                                                                                                                                                                               const gchar* _tmp239_ = NULL;
+                                                                                                                                                                                                                                                                                                                               _tmp239_ = n;
+                                                                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp239_, "unsigned") == 0) {
+                                                                                                                                                                                                                                                                                                                                       _tmp238_ = TRUE;
                                                                                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                                                                                       const gchar* _tmp238_ = NULL;
-                                                                                                                                                                                                                                                                                                                                       _tmp238_ = n;
-                                                                                                                                                                                                                                                                                                                                       _tmp236_ = g_strcmp0 (_tmp238_, "unsigned-int") == 0;
+                                                                                                                                                                                                                                                                                                                                       const gchar* _tmp240_ = NULL;
+                                                                                                                                                                                                                                                                                                                                       _tmp240_ = n;
+                                                                                                                                                                                                                                                                                                                                       _tmp238_ = g_strcmp0 (_tmp240_, "unsigned-int") == 0;
                                                                                                                                                                                                                                                                                                                                }
-                                                                                                                                                                                                                                                                                                                               if (_tmp236_) {
-                                                                                                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp239_ = NULL;
-                                                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp240_ = NULL;
-                                                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp241_ = NULL;
-                                                                                                                                                                                                                                                                                                                                       _tmp239_ = type;
-                                                                                                                                                                                                                                                                                                                                       _tmp240_ = vala_unresolved_symbol_new (NULL, "uint", NULL);
-                                                                                                                                                                                                                                                                                                                                       _tmp241_ = _tmp240_;
-                                                                                                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp239_, _tmp241_);
-                                                                                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp241_);
+                                                                                                                                                                                                                                                                                                                               if (_tmp238_) {
+                                                                                                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp241_ = NULL;
+                                                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp242_ = NULL;
+                                                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp243_ = NULL;
+                                                                                                                                                                                                                                                                                                                                       _tmp241_ = type;
+                                                                                                                                                                                                                                                                                                                                       _tmp242_ = vala_unresolved_symbol_new (NULL, "uint", NULL);
+                                                                                                                                                                                                                                                                                                                                       _tmp243_ = _tmp242_;
+                                                                                                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp241_, _tmp243_);
+                                                                                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp243_);
                                                                                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                                                                                       const gchar* _tmp242_ = NULL;
-                                                                                                                                                                                                                                                                                                                                       _tmp242_ = n;
-                                                                                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp242_, "FILE") == 0) {
-                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp243_ = NULL;
-                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp244_ = NULL;
-                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp245_ = NULL;
+                                                                                                                                                                                                                                                                                                                                       const gchar* _tmp244_ = NULL;
+                                                                                                                                                                                                                                                                                                                                       _tmp244_ = n;
+                                                                                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp244_, "FILE") == 0) {
+                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp245_ = NULL;
                                                                                                                                                                                                                                                                                                                                                ValaUnresolvedSymbol* _tmp246_ = NULL;
                                                                                                                                                                                                                                                                                                                                                ValaUnresolvedSymbol* _tmp247_ = NULL;
-                                                                                                                                                                                                                                                                                                                                               _tmp243_ = type;
-                                                                                                                                                                                                                                                                                                                                               _tmp244_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
-                                                                                                                                                                                                                                                                                                                                               _tmp245_ = _tmp244_;
-                                                                                                                                                                                                                                                                                                                                               _tmp246_ = vala_unresolved_symbol_new (_tmp245_, "FileStream", NULL);
+                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp248_ = NULL;
+                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp249_ = NULL;
+                                                                                                                                                                                                                                                                                                                                               _tmp245_ = type;
+                                                                                                                                                                                                                                                                                                                                               _tmp246_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
                                                                                                                                                                                                                                                                                                                                                _tmp247_ = _tmp246_;
-                                                                                                                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp243_, _tmp247_);
+                                                                                                                                                                                                                                                                                                                                               _tmp248_ = vala_unresolved_symbol_new (_tmp247_, "FileStream", NULL);
+                                                                                                                                                                                                                                                                                                                                               _tmp249_ = _tmp248_;
+                                                                                                                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp245_, _tmp249_);
+                                                                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp249_);
                                                                                                                                                                                                                                                                                                                                                _vala_code_node_unref0 (_tmp247_);
-                                                                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp245_);
                                                                                                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                                                                                                               const gchar* _tmp248_ = NULL;
-                                                                                                                                                                                                                                                                                                                                               _tmp248_ = n;
-                                                                                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp248_, "struct") == 0) {
-                                                                                                                                                                                                                                                                                                                                                       ValaVoidType* _tmp249_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                       ValaVoidType* _tmp250_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                       ValaPointerType* _tmp251_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                       ValaDataType* _tmp252_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                       _tmp249_ = vala_void_type_new (NULL);
-                                                                                                                                                                                                                                                                                                                                                       _tmp250_ = _tmp249_;
-                                                                                                                                                                                                                                                                                                                                                       _tmp251_ = vala_pointer_type_new ((ValaDataType*) _tmp250_, NULL);
-                                                                                                                                                                                                                                                                                                                                                       _tmp252_ = (ValaDataType*) _tmp251_;
-                                                                                                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp250_);
-                                                                                                                                                                                                                                                                                                                                                       result = _tmp252_;
+                                                                                                                                                                                                                                                                                                                                               const gchar* _tmp250_ = NULL;
+                                                                                                                                                                                                                                                                                                                                               _tmp250_ = n;
+                                                                                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp250_, "struct") == 0) {
+                                                                                                                                                                                                                                                                                                                                                       ValaVoidType* _tmp251_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                       ValaVoidType* _tmp252_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                       ValaPointerType* _tmp253_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                       ValaDataType* _tmp254_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                       _tmp251_ = vala_void_type_new (NULL);
+                                                                                                                                                                                                                                                                                                                                                       _tmp252_ = _tmp251_;
+                                                                                                                                                                                                                                                                                                                                                       _tmp253_ = vala_pointer_type_new ((ValaDataType*) _tmp252_, NULL);
+                                                                                                                                                                                                                                                                                                                                                       _tmp254_ = (ValaDataType*) _tmp253_;
+                                                                                                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp252_);
+                                                                                                                                                                                                                                                                                                                                                       result = _tmp254_;
                                                                                                                                                                                                                                                                                                                                                        _g_free0 (n);
                                                                                                                                                                                                                                                                                                                                                        _vala_code_node_unref0 (type);
                                                                                                                                                                                                                                                                                                                                                        if (direction) {
@@ -11729,19 +11741,19 @@ static ValaDataType* vala_gidl_parser_parse_type (ValaGIdlParser* self, GIdlNode
                                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                                        return result;
                                                                                                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                                                                                                       const gchar* _tmp253_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                       _tmp253_ = n;
-                                                                                                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp253_, "iconv_t") == 0) {
-                                                                                                                                                                                                                                                                                                                                                               ValaVoidType* _tmp254_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                               ValaVoidType* _tmp255_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                               ValaPointerType* _tmp256_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                               ValaDataType* _tmp257_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                               _tmp254_ = vala_void_type_new (NULL);
-                                                                                                                                                                                                                                                                                                                                                               _tmp255_ = _tmp254_;
-                                                                                                                                                                                                                                                                                                                                                               _tmp256_ = vala_pointer_type_new ((ValaDataType*) _tmp255_, NULL);
-                                                                                                                                                                                                                                                                                                                                                               _tmp257_ = (ValaDataType*) _tmp256_;
-                                                                                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp255_);
-                                                                                                                                                                                                                                                                                                                                                               result = _tmp257_;
+                                                                                                                                                                                                                                                                                                                                                       const gchar* _tmp255_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                       _tmp255_ = n;
+                                                                                                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp255_, "iconv_t") == 0) {
+                                                                                                                                                                                                                                                                                                                                                               ValaVoidType* _tmp256_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                               ValaVoidType* _tmp257_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                               ValaPointerType* _tmp258_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                               ValaDataType* _tmp259_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                               _tmp256_ = vala_void_type_new (NULL);
+                                                                                                                                                                                                                                                                                                                                                               _tmp257_ = _tmp256_;
+                                                                                                                                                                                                                                                                                                                                                               _tmp258_ = vala_pointer_type_new ((ValaDataType*) _tmp257_, NULL);
+                                                                                                                                                                                                                                                                                                                                                               _tmp259_ = (ValaDataType*) _tmp258_;
+                                                                                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp257_);
+                                                                                                                                                                                                                                                                                                                                                               result = _tmp259_;
                                                                                                                                                                                                                                                                                                                                                                _g_free0 (n);
                                                                                                                                                                                                                                                                                                                                                                _vala_code_node_unref0 (type);
                                                                                                                                                                                                                                                                                                                                                                if (direction) {
@@ -11749,38 +11761,41 @@ static ValaDataType* vala_gidl_parser_parse_type (ValaGIdlParser* self, GIdlNode
                                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                                                                                return result;
                                                                                                                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                                                                                                                               const gchar* _tmp258_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                               _tmp258_ = n;
-                                                                                                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp258_, "GType") == 0) {
-                                                                                                                                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp259_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp260_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp261_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                               const gchar* _tmp260_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                               _tmp260_ = n;
+                                                                                                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp260_, "GType") == 0) {
+                                                                                                                                                                                                                                                                                                                                                                       ValaUnresolvedType* _tmp261_ = NULL;
                                                                                                                                                                                                                                                                                                                                                                        ValaUnresolvedSymbol* _tmp262_ = NULL;
                                                                                                                                                                                                                                                                                                                                                                        ValaUnresolvedSymbol* _tmp263_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                       GIdlNodeType* _tmp264_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                       gboolean _tmp265_ = FALSE;
-                                                                                                                                                                                                                                                                                                                                                                       _tmp259_ = type;
-                                                                                                                                                                                                                                                                                                                                                                       _tmp260_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
-                                                                                                                                                                                                                                                                                                                                                                       _tmp261_ = _tmp260_;
-                                                                                                                                                                                                                                                                                                                                                                       _tmp262_ = vala_unresolved_symbol_new (_tmp261_, "Type", NULL);
+                                                                                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp264_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                       ValaUnresolvedSymbol* _tmp265_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                       GIdlNodeType* _tmp266_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                       gboolean _tmp267_ = FALSE;
+                                                                                                                                                                                                                                                                                                                                                                       _tmp261_ = type;
+                                                                                                                                                                                                                                                                                                                                                                       _tmp262_ = vala_unresolved_symbol_new (NULL, "GLib", NULL);
                                                                                                                                                                                                                                                                                                                                                                        _tmp263_ = _tmp262_;
-                                                                                                                                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp259_, _tmp263_);
+                                                                                                                                                                                                                                                                                                                                                                       _tmp264_ = vala_unresolved_symbol_new (_tmp263_, "Type", NULL);
+                                                                                                                                                                                                                                                                                                                                                                       _tmp265_ = _tmp264_;
+                                                                                                                                                                                                                                                                                                                                                                       vala_unresolved_type_set_unresolved_symbol (_tmp261_, _tmp265_);
+                                                                                                                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp265_);
                                                                                                                                                                                                                                                                                                                                                                        _vala_code_node_unref0 (_tmp263_);
-                                                                                                                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp261_);
-                                                                                                                                                                                                                                                                                                                                                                       _tmp264_ = type_node;
-                                                                                                                                                                                                                                                                                                                                                                       _tmp265_ = _tmp264_->is_pointer;
-                                                                                                                                                                                                                                                                                                                                                                       if (_tmp265_) {
-                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp266_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp267_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaSourceReference* _tmp268_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaSourceReference* _tmp269_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaArrayType* _tmp270_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp266_ = type;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp267_ = type;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp268_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp267_);
-                                                                                                                                                                                                                                                                                                                                                                               _tmp269_ = _tmp268_;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp270_ = vala_array_type_new ((ValaDataType*) _tmp266_, 1, _tmp269_);
-                                                                                                                                                                                                                                                                                                                                                                               result = (ValaDataType*) _tmp270_;
+                                                                                                                                                                                                                                                                                                                                                                       _tmp266_ = type_node;
+                                                                                                                                                                                                                                                                                                                                                                       _tmp267_ = _tmp266_->is_pointer;
+                                                                                                                                                                                                                                                                                                                                                                       if (_tmp267_) {
+                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp268_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp269_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp270_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaSourceReference* _tmp271_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaSourceReference* _tmp272_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaArrayType* _tmp273_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp268_ = type;
+                                                                                                                                                                                                                                                                                                                                                                               vala_data_type_set_value_owned ((ValaDataType*) _tmp268_, TRUE);
+                                                                                                                                                                                                                                                                                                                                                                               _tmp269_ = type;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp270_ = type;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp271_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp270_);
+                                                                                                                                                                                                                                                                                                                                                                               _tmp272_ = _tmp271_;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp273_ = vala_array_type_new ((ValaDataType*) _tmp269_, 1, _tmp272_);
+                                                                                                                                                                                                                                                                                                                                                                               result = (ValaDataType*) _tmp273_;
                                                                                                                                                                                                                                                                                                                                                                                _g_free0 (n);
                                                                                                                                                                                                                                                                                                                                                                                _vala_code_node_unref0 (type);
                                                                                                                                                                                                                                                                                                                                                                                if (direction) {
@@ -11789,28 +11804,31 @@ static ValaDataType* vala_gidl_parser_parse_type (ValaGIdlParser* self, GIdlNode
                                                                                                                                                                                                                                                                                                                                                                                return result;
                                                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                                                                                                                       const gchar* _tmp271_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                       _tmp271_ = n;
-                                                                                                                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp271_, "GStrv") == 0) {
-                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp272_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp273_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp274_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                       const gchar* _tmp274_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                       _tmp274_ = n;
+                                                                                                                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp274_, "GStrv") == 0) {
                                                                                                                                                                                                                                                                                                                                                                                ValaUnresolvedType* _tmp275_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp276_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaSourceReference* _tmp277_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaSourceReference* _tmp278_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaArrayType* _tmp279_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp272_ = type;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp273_ = vala_unresolved_symbol_new (NULL, "string", NULL);
-                                                                                                                                                                                                                                                                                                                                                                               _tmp274_ = _tmp273_;
-                                                                                                                                                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp272_, _tmp274_);
-                                                                                                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp274_);
+                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp276_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedSymbol* _tmp277_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp278_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp279_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp280_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaSourceReference* _tmp281_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaSourceReference* _tmp282_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaArrayType* _tmp283_ = NULL;
                                                                                                                                                                                                                                                                                                                                                                                _tmp275_ = type;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp276_ = type;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp277_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp276_);
-                                                                                                                                                                                                                                                                                                                                                                               _tmp278_ = _tmp277_;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp279_ = vala_array_type_new ((ValaDataType*) _tmp275_, 1, _tmp278_);
-                                                                                                                                                                                                                                                                                                                                                                               result = (ValaDataType*) _tmp279_;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp276_ = vala_unresolved_symbol_new (NULL, "string", NULL);
+                                                                                                                                                                                                                                                                                                                                                                               _tmp277_ = _tmp276_;
+                                                                                                                                                                                                                                                                                                                                                                               vala_unresolved_type_set_unresolved_symbol (_tmp275_, _tmp277_);
+                                                                                                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp277_);
+                                                                                                                                                                                                                                                                                                                                                                               _tmp278_ = type;
+                                                                                                                                                                                                                                                                                                                                                                               vala_data_type_set_value_owned ((ValaDataType*) _tmp278_, TRUE);
+                                                                                                                                                                                                                                                                                                                                                                               _tmp279_ = type;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp280_ = type;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp281_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp280_);
+                                                                                                                                                                                                                                                                                                                                                                               _tmp282_ = _tmp281_;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp283_ = vala_array_type_new ((ValaDataType*) _tmp279_, 1, _tmp282_);
+                                                                                                                                                                                                                                                                                                                                                                               result = (ValaDataType*) _tmp283_;
                                                                                                                                                                                                                                                                                                                                                                                _g_free0 (n);
                                                                                                                                                                                                                                                                                                                                                                                _vala_code_node_unref0 (type);
                                                                                                                                                                                                                                                                                                                                                                                if (direction) {
@@ -11819,22 +11837,22 @@ static ValaDataType* vala_gidl_parser_parse_type (ValaGIdlParser* self, GIdlNode
                                                                                                                                                                                                                                                                                                                                                                                return result;
                                                                                                                                                                                                                                                                                                                                                                        } else {
                                                                                                                                                                                                                                                                                                                                                                                ValaDataType* named_type = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               const gchar* _tmp280_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaDataType* _tmp281_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaDataType* _tmp282_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp283_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp284_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               const gchar* _tmp285_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                               gboolean _tmp286_ = FALSE;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp280_ = n;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp281_ = vala_gidl_parser_parse_type_string (self, _tmp280_);
-                                                                                                                                                                                                                                                                                                                                                                               named_type = _tmp281_;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp282_ = named_type;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp283_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp282_, VALA_TYPE_UNRESOLVED_TYPE) ? ((ValaUnresolvedType*) _tmp282_) : NULL);
+                                                                                                                                                                                                                                                                                                                                                                               const gchar* _tmp284_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaDataType* _tmp285_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaDataType* _tmp286_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp287_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               ValaUnresolvedType* _tmp288_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               const gchar* _tmp289_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                               gboolean _tmp290_ = FALSE;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp284_ = n;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp285_ = vala_gidl_parser_parse_type_string (self, _tmp284_);
+                                                                                                                                                                                                                                                                                                                                                                               named_type = _tmp285_;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp286_ = named_type;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp287_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp286_, VALA_TYPE_UNRESOLVED_TYPE) ? ((ValaUnresolvedType*) _tmp286_) : NULL);
                                                                                                                                                                                                                                                                                                                                                                                _vala_code_node_unref0 (type);
-                                                                                                                                                                                                                                                                                                                                                                               type = _tmp283_;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp284_ = type;
-                                                                                                                                                                                                                                                                                                                                                                               if (_tmp284_ == NULL) {
+                                                                                                                                                                                                                                                                                                                                                                               type = _tmp287_;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp288_ = type;
+                                                                                                                                                                                                                                                                                                                                                                               if (_tmp288_ == NULL) {
                                                                                                                                                                                                                                                                                                                                                                                        result = named_type;
                                                                                                                                                                                                                                                                                                                                                                                        _g_free0 (n);
                                                                                                                                                                                                                                                                                                                                                                                        _vala_code_node_unref0 (type);
@@ -11843,24 +11861,24 @@ static ValaDataType* vala_gidl_parser_parse_type (ValaGIdlParser* self, GIdlNode
                                                                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                                                                        return result;
                                                                                                                                                                                                                                                                                                                                                                                }
-                                                                                                                                                                                                                                                                                                                                                                               _tmp285_ = n;
-                                                                                                                                                                                                                                                                                                                                                                               _tmp286_ = vala_gidl_parser_is_simple_type (self, _tmp285_);
-                                                                                                                                                                                                                                                                                                                                                                               if (_tmp286_) {
-                                                                                                                                                                                                                                                                                                                                                                                       GIdlNodeType* _tmp287_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                                       gboolean _tmp288_ = FALSE;
-                                                                                                                                                                                                                                                                                                                                                                                       _tmp287_ = type_node;
-                                                                                                                                                                                                                                                                                                                                                                                       _tmp288_ = _tmp287_->is_pointer;
-                                                                                                                                                                                                                                                                                                                                                                                       if (_tmp288_) {
+                                                                                                                                                                                                                                                                                                                                                                               _tmp289_ = n;
+                                                                                                                                                                                                                                                                                                                                                                               _tmp290_ = vala_gidl_parser_is_simple_type (self, _tmp289_);
+                                                                                                                                                                                                                                                                                                                                                                               if (_tmp290_) {
+                                                                                                                                                                                                                                                                                                                                                                                       GIdlNodeType* _tmp291_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                                       gboolean _tmp292_ = FALSE;
+                                                                                                                                                                                                                                                                                                                                                                                       _tmp291_ = type_node;
+                                                                                                                                                                                                                                                                                                                                                                                       _tmp292_ = _tmp291_->is_pointer;
+                                                                                                                                                                                                                                                                                                                                                                                       if (_tmp292_) {
                                                                                                                                                                                                                                                                                                                                                                                                _vala_direction = VALA_PARAMETER_DIRECTION_OUT;
                                                                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                                                                                                                                       GIdlNodeType* _tmp289_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                                       const gchar* _tmp290_ = NULL;
-                                                                                                                                                                                                                                                                                                                                                                                       gboolean _tmp291_ = FALSE;
-                                                                                                                                                                                                                                                                                                                                                                                       _tmp289_ = type_node;
-                                                                                                                                                                                                                                                                                                                                                                                       _tmp290_ = _tmp289_->unparsed;
-                                                                                                                                                                                                                                                                                                                                                                                       _tmp291_ = g_str_has_suffix (_tmp290_, "**");
-                                                                                                                                                                                                                                                                                                                                                                                       if (_tmp291_) {
+                                                                                                                                                                                                                                                                                                                                                                                       GIdlNodeType* _tmp293_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                                       const gchar* _tmp294_ = NULL;
+                                                                                                                                                                                                                                                                                                                                                                                       gboolean _tmp295_ = FALSE;
+                                                                                                                                                                                                                                                                                                                                                                                       _tmp293_ = type_node;
+                                                                                                                                                                                                                                                                                                                                                                                       _tmp294_ = _tmp293_->unparsed;
+                                                                                                                                                                                                                                                                                                                                                                                       _tmp295_ = g_str_has_suffix (_tmp294_, "**");
+                                                                                                                                                                                                                                                                                                                                                                                       if (_tmp295_) {
                                                                                                                                                                                                                                                                                                                                                                                                _vala_direction = VALA_PARAMETER_DIRECTION_OUT;
                                                                                                                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                                                                                                                }
@@ -11886,13 +11904,13 @@ static ValaDataType* vala_gidl_parser_parse_type (ValaGIdlParser* self, GIdlNode
                                                                                                                                                                                                                        }
                                                                                                                                                                                                                        _g_free0 (n);
                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                       FILE* _tmp292_ = NULL;
-                                                                                                                                                                                                                       GIdlNodeType* _tmp293_ = NULL;
-                                                                                                                                                                                                                       GITypeTag _tmp294_ = 0;
-                                                                                                                                                                                                                       _tmp292_ = stdout;
-                                                                                                                                                                                                                       _tmp293_ = type_node;
-                                                                                                                                                                                                                       _tmp294_ = _tmp293_->tag;
-                                                                                                                                                                                                                       fprintf (_tmp292_, "%d\n", (gint) _tmp294_);
+                                                                                                                                                                                                                       FILE* _tmp296_ = NULL;
+                                                                                                                                                                                                                       GIdlNodeType* _tmp297_ = NULL;
+                                                                                                                                                                                                                       GITypeTag _tmp298_ = 0;
+                                                                                                                                                                                                                       _tmp296_ = stdout;
+                                                                                                                                                                                                                       _tmp297_ = type_node;
+                                                                                                                                                                                                                       _tmp298_ = _tmp297_->tag;
+                                                                                                                                                                                                                       fprintf (_tmp296_, "%d\n", (gint) _tmp298_);
                                                                                                                                                                                                                }
                                                                                                                                                                                                        }
                                                                                                                                                                                                }
@@ -12841,10 +12859,10 @@ static ValaDataType* vala_gidl_parser_parse_type_from_string (ValaGIdlParser* se
        const gchar* _tmp66_ = NULL;
        gboolean _tmp75_ = FALSE;
        const gchar* _tmp76_ = NULL;
-       ValaDataType* _tmp86_ = NULL;
-       gboolean _tmp87_ = FALSE;
-       ValaDataType* _tmp88_ = NULL;
-       gboolean _tmp89_ = FALSE;
+       ValaDataType* _tmp87_ = NULL;
+       gboolean _tmp88_ = FALSE;
+       ValaDataType* _tmp89_ = NULL;
+       gboolean _tmp90_ = FALSE;
        GError * _inner_error_ = NULL;
        g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (type_string != NULL, NULL);
@@ -12857,7 +12875,7 @@ static ValaDataType* vala_gidl_parser_parse_type_from_string (ValaGIdlParser* se
                        _tmp2_ = g_regex_new ("^(?:(owned|unowned|weak) +)?([0-9a-zA-Z_\\.]+)(?:<(.+)>)?(\\*+)?(\\[(," \
 "*)?\\])?(\\?)?$", (G_REGEX_ANCHORED | G_REGEX_DOLLAR_ENDONLY) | G_REGEX_OPTIMIZE, 0, &_inner_error_);
                        _tmp1_ = _tmp2_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                if (_inner_error_->domain == G_REGEX_ERROR) {
                                        goto __catch2_g_regex_error;
                                }
@@ -12879,11 +12897,11 @@ static ValaDataType* vala_gidl_parser_parse_type_from_string (ValaGIdlParser* se
                        e = _inner_error_;
                        _inner_error_ = NULL;
                        _tmp4_ = e->message;
-                       g_error ("valagidlparser.vala:2111: Unable to compile regex: %s", _tmp4_);
+                       g_error ("valagidlparser.vala:2117: Unable to compile regex: %s", _tmp4_);
                        _g_error_free0 (e);
                }
                __finally2:
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                        g_clear_error (&_inner_error_);
                        return NULL;
@@ -13149,26 +13167,29 @@ static ValaDataType* vala_gidl_parser_parse_type_from_string (ValaGIdlParser* se
        }
        if (_tmp75_) {
                ValaDataType* _tmp80_ = NULL;
-               const gchar* _tmp81_ = NULL;
-               gint _tmp82_ = 0;
+               ValaDataType* _tmp81_ = NULL;
+               const gchar* _tmp82_ = NULL;
                gint _tmp83_ = 0;
-               ValaSourceReference* _tmp84_ = NULL;
-               ValaArrayType* _tmp85_ = NULL;
+               gint _tmp84_ = 0;
+               ValaSourceReference* _tmp85_ = NULL;
+               ValaArrayType* _tmp86_ = NULL;
                _tmp80_ = type;
-               _tmp81_ = array_dimension_data;
-               _tmp82_ = strlen (_tmp81_);
-               _tmp83_ = _tmp82_;
-               _tmp84_ = source_reference;
-               _tmp85_ = vala_array_type_new (_tmp80_, _tmp83_ + 1, _tmp84_);
+               vala_data_type_set_value_owned (_tmp80_, TRUE);
+               _tmp81_ = type;
+               _tmp82_ = array_dimension_data;
+               _tmp83_ = strlen (_tmp82_);
+               _tmp84_ = _tmp83_;
+               _tmp85_ = source_reference;
+               _tmp86_ = vala_array_type_new (_tmp81_, _tmp84_ + 1, _tmp85_);
                _vala_code_node_unref0 (type);
-               type = (ValaDataType*) _tmp85_;
+               type = (ValaDataType*) _tmp86_;
        }
-       _tmp86_ = type;
-       _tmp87_ = nullable;
-       vala_data_type_set_nullable (_tmp86_, _tmp87_);
-       _tmp88_ = type;
-       _tmp89_ = value_owned;
-       vala_data_type_set_value_owned (_tmp88_, _tmp89_);
+       _tmp87_ = type;
+       _tmp88_ = nullable;
+       vala_data_type_set_nullable (_tmp87_, _tmp88_);
+       _tmp89_ = type;
+       _tmp90_ = value_owned;
+       vala_data_type_set_value_owned (_tmp89_, _tmp90_);
        result = type;
        _vala_code_node_unref0 (sym);
        _g_free0 (nullable_data);
@@ -13290,19 +13311,19 @@ static ValaMethod* vala_gidl_parser_create_method (ValaGIdlParser* self, const g
        gboolean first = FALSE;
        ValaParameter* last_param = NULL;
        ValaDataType* last_param_type = NULL;
-       GList* _tmp342_ = NULL;
-       gboolean _tmp752_ = FALSE;
-       gboolean _tmp753_ = FALSE;
-       gboolean _tmp767_ = FALSE;
-       gboolean _tmp769_ = FALSE;
-       ValaParameter* _tmp770_ = NULL;
-       ValaSymbol* _tmp780_ = NULL;
-       const gchar* _tmp786_ = NULL;
-       ValaMethod* _tmp787_ = NULL;
-       ValaSymbol* _tmp788_ = NULL;
-       gchar* _tmp789_ = NULL;
-       gchar* _tmp790_ = NULL;
-       gboolean _tmp791_ = FALSE;
+       GList* _tmp343_ = NULL;
+       gboolean _tmp755_ = FALSE;
+       gboolean _tmp756_ = FALSE;
+       gboolean _tmp770_ = FALSE;
+       gboolean _tmp772_ = FALSE;
+       ValaParameter* _tmp773_ = NULL;
+       ValaSymbol* _tmp783_ = NULL;
+       const gchar* _tmp789_ = NULL;
+       ValaMethod* _tmp790_ = NULL;
+       ValaSymbol* _tmp791_ = NULL;
+       gchar* _tmp792_ = NULL;
+       gchar* _tmp793_ = NULL;
+       gboolean _tmp794_ = FALSE;
        g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (name != NULL, NULL);
        g_return_val_if_fail (symbol != NULL, NULL);
@@ -13834,578 +13855,581 @@ static ValaMethod* vala_gidl_parser_create_method (ValaGIdlParser* self, const g
                                                                                                                if (_tmp156_) {
                                                                                                                        ValaDataType* _tmp157_ = NULL;
                                                                                                                        ValaDataType* _tmp158_ = NULL;
-                                                                                                                       ValaSourceReference* _tmp159_ = NULL;
+                                                                                                                       ValaDataType* _tmp159_ = NULL;
                                                                                                                        ValaSourceReference* _tmp160_ = NULL;
-                                                                                                                       ValaArrayType* _tmp161_ = NULL;
-                                                                                                                       ValaMethod* _tmp162_ = NULL;
-                                                                                                                       ValaDataType* _tmp163_ = NULL;
+                                                                                                                       ValaSourceReference* _tmp161_ = NULL;
+                                                                                                                       ValaArrayType* _tmp162_ = NULL;
+                                                                                                                       ValaMethod* _tmp163_ = NULL;
+                                                                                                                       ValaDataType* _tmp164_ = NULL;
                                                                                                                        _tmp157_ = return_type;
+                                                                                                                       vala_data_type_set_value_owned (_tmp157_, TRUE);
                                                                                                                        _tmp158_ = return_type;
-                                                                                                                       _tmp159_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp158_);
-                                                                                                                       _tmp160_ = _tmp159_;
-                                                                                                                       _tmp161_ = vala_array_type_new (_tmp157_, 1, _tmp160_);
+                                                                                                                       _tmp159_ = return_type;
+                                                                                                                       _tmp160_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp159_);
+                                                                                                                       _tmp161_ = _tmp160_;
+                                                                                                                       _tmp162_ = vala_array_type_new (_tmp158_, 1, _tmp161_);
                                                                                                                        _vala_code_node_unref0 (return_type);
-                                                                                                                       return_type = (ValaDataType*) _tmp161_;
-                                                                                                                       _tmp162_ = m;
-                                                                                                                       _tmp163_ = return_type;
-                                                                                                                       vala_method_set_return_type (_tmp162_, _tmp163_);
+                                                                                                                       return_type = (ValaDataType*) _tmp162_;
+                                                                                                                       _tmp163_ = m;
+                                                                                                                       _tmp164_ = return_type;
+                                                                                                                       vala_method_set_return_type (_tmp163_, _tmp164_);
                                                                                                                }
                                                                                                        } else {
-                                                                                                               gchar** _tmp164_ = NULL;
-                                                                                                               gint _tmp164__length1 = 0;
-                                                                                                               const gchar* _tmp165_ = NULL;
-                                                                                                               _tmp164_ = nv;
-                                                                                                               _tmp164__length1 = nv_length1;
-                                                                                                               _tmp165_ = _tmp164_[0];
-                                                                                                               if (g_strcmp0 (_tmp165_, "is_pointer") == 0) {
-                                                                                                                       gchar** _tmp166_ = NULL;
-                                                                                                                       gint _tmp166__length1 = 0;
-                                                                                                                       const gchar* _tmp167_ = NULL;
-                                                                                                                       gchar* _tmp168_ = NULL;
+                                                                                                               gchar** _tmp165_ = NULL;
+                                                                                                               gint _tmp165__length1 = 0;
+                                                                                                               const gchar* _tmp166_ = NULL;
+                                                                                                               _tmp165_ = nv;
+                                                                                                               _tmp165__length1 = nv_length1;
+                                                                                                               _tmp166_ = _tmp165_[0];
+                                                                                                               if (g_strcmp0 (_tmp166_, "is_pointer") == 0) {
+                                                                                                                       gchar** _tmp167_ = NULL;
+                                                                                                                       gint _tmp167__length1 = 0;
+                                                                                                                       const gchar* _tmp168_ = NULL;
                                                                                                                        gchar* _tmp169_ = NULL;
-                                                                                                                       gboolean _tmp170_ = FALSE;
-                                                                                                                       _tmp166_ = nv;
-                                                                                                                       _tmp166__length1 = nv_length1;
-                                                                                                                       _tmp167_ = _tmp166_[1];
-                                                                                                                       _tmp168_ = vala_gidl_parser_eval (self, _tmp167_);
-                                                                                                                       _tmp169_ = _tmp168_;
-                                                                                                                       _tmp170_ = g_strcmp0 (_tmp169_, "1") == 0;
-                                                                                                                       _g_free0 (_tmp169_);
-                                                                                                                       if (_tmp170_) {
-                                                                                                                               ValaDataType* _tmp171_ = NULL;
+                                                                                                                       gchar* _tmp170_ = NULL;
+                                                                                                                       gboolean _tmp171_ = FALSE;
+                                                                                                                       _tmp167_ = nv;
+                                                                                                                       _tmp167__length1 = nv_length1;
+                                                                                                                       _tmp168_ = _tmp167_[1];
+                                                                                                                       _tmp169_ = vala_gidl_parser_eval (self, _tmp168_);
+                                                                                                                       _tmp170_ = _tmp169_;
+                                                                                                                       _tmp171_ = g_strcmp0 (_tmp170_, "1") == 0;
+                                                                                                                       _g_free0 (_tmp170_);
+                                                                                                                       if (_tmp171_) {
                                                                                                                                ValaDataType* _tmp172_ = NULL;
-                                                                                                                               ValaSourceReference* _tmp173_ = NULL;
+                                                                                                                               ValaDataType* _tmp173_ = NULL;
                                                                                                                                ValaSourceReference* _tmp174_ = NULL;
-                                                                                                                               ValaPointerType* _tmp175_ = NULL;
-                                                                                                                               ValaMethod* _tmp176_ = NULL;
-                                                                                                                               ValaDataType* _tmp177_ = NULL;
-                                                                                                                               _tmp171_ = return_type;
+                                                                                                                               ValaSourceReference* _tmp175_ = NULL;
+                                                                                                                               ValaPointerType* _tmp176_ = NULL;
+                                                                                                                               ValaMethod* _tmp177_ = NULL;
+                                                                                                                               ValaDataType* _tmp178_ = NULL;
                                                                                                                                _tmp172_ = return_type;
-                                                                                                                               _tmp173_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp172_);
-                                                                                                                               _tmp174_ = _tmp173_;
-                                                                                                                               _tmp175_ = vala_pointer_type_new (_tmp171_, _tmp174_);
+                                                                                                                               _tmp173_ = return_type;
+                                                                                                                               _tmp174_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp173_);
+                                                                                                                               _tmp175_ = _tmp174_;
+                                                                                                                               _tmp176_ = vala_pointer_type_new (_tmp172_, _tmp175_);
                                                                                                                                _vala_code_node_unref0 (return_type);
-                                                                                                                               return_type = (ValaDataType*) _tmp175_;
-                                                                                                                               _tmp176_ = m;
-                                                                                                                               _tmp177_ = return_type;
-                                                                                                                               vala_method_set_return_type (_tmp176_, _tmp177_);
+                                                                                                                               return_type = (ValaDataType*) _tmp176_;
+                                                                                                                               _tmp177_ = m;
+                                                                                                                               _tmp178_ = return_type;
+                                                                                                                               vala_method_set_return_type (_tmp177_, _tmp178_);
                                                                                                                        }
                                                                                                                } else {
-                                                                                                                       gchar** _tmp178_ = NULL;
-                                                                                                                       gint _tmp178__length1 = 0;
-                                                                                                                       const gchar* _tmp179_ = NULL;
-                                                                                                                       _tmp178_ = nv;
-                                                                                                                       _tmp178__length1 = nv_length1;
-                                                                                                                       _tmp179_ = _tmp178_[0];
-                                                                                                                       if (g_strcmp0 (_tmp179_, "throws") == 0) {
-                                                                                                                               gchar** _tmp180_ = NULL;
-                                                                                                                               gint _tmp180__length1 = 0;
-                                                                                                                               const gchar* _tmp181_ = NULL;
-                                                                                                                               gchar* _tmp182_ = NULL;
+                                                                                                                       gchar** _tmp179_ = NULL;
+                                                                                                                       gint _tmp179__length1 = 0;
+                                                                                                                       const gchar* _tmp180_ = NULL;
+                                                                                                                       _tmp179_ = nv;
+                                                                                                                       _tmp179__length1 = nv_length1;
+                                                                                                                       _tmp180_ = _tmp179_[0];
+                                                                                                                       if (g_strcmp0 (_tmp180_, "throws") == 0) {
+                                                                                                                               gchar** _tmp181_ = NULL;
+                                                                                                                               gint _tmp181__length1 = 0;
+                                                                                                                               const gchar* _tmp182_ = NULL;
                                                                                                                                gchar* _tmp183_ = NULL;
-                                                                                                                               gboolean _tmp184_ = FALSE;
-                                                                                                                               _tmp180_ = nv;
-                                                                                                                               _tmp180__length1 = nv_length1;
-                                                                                                                               _tmp181_ = _tmp180_[1];
-                                                                                                                               _tmp182_ = vala_gidl_parser_eval (self, _tmp181_);
-                                                                                                                               _tmp183_ = _tmp182_;
-                                                                                                                               _tmp184_ = g_strcmp0 (_tmp183_, "0") == 0;
-                                                                                                                               _g_free0 (_tmp183_);
-                                                                                                                               if (_tmp184_) {
+                                                                                                                               gchar* _tmp184_ = NULL;
+                                                                                                                               gboolean _tmp185_ = FALSE;
+                                                                                                                               _tmp181_ = nv;
+                                                                                                                               _tmp181__length1 = nv_length1;
+                                                                                                                               _tmp182_ = _tmp181_[1];
+                                                                                                                               _tmp183_ = vala_gidl_parser_eval (self, _tmp182_);
+                                                                                                                               _tmp184_ = _tmp183_;
+                                                                                                                               _tmp185_ = g_strcmp0 (_tmp184_, "0") == 0;
+                                                                                                                               _g_free0 (_tmp184_);
+                                                                                                                               if (_tmp185_) {
                                                                                                                                        suppress_throws = TRUE;
                                                                                                                                }
                                                                                                                        } else {
-                                                                                                                               gchar** _tmp185_ = NULL;
-                                                                                                                               gint _tmp185__length1 = 0;
-                                                                                                                               const gchar* _tmp186_ = NULL;
-                                                                                                                               _tmp185_ = nv;
-                                                                                                                               _tmp185__length1 = nv_length1;
-                                                                                                                               _tmp186_ = _tmp185_[0];
-                                                                                                                               if (g_strcmp0 (_tmp186_, "error_types") == 0) {
-                                                                                                                                       gchar** _tmp187_ = NULL;
-                                                                                                                                       gint _tmp187__length1 = 0;
-                                                                                                                                       const gchar* _tmp188_ = NULL;
-                                                                                                                                       gchar* _tmp189_ = NULL;
-                                                                                                                                       _tmp187_ = nv;
-                                                                                                                                       _tmp187__length1 = nv_length1;
-                                                                                                                                       _tmp188_ = _tmp187_[1];
-                                                                                                                                       _tmp189_ = vala_gidl_parser_eval (self, _tmp188_);
+                                                                                                                               gchar** _tmp186_ = NULL;
+                                                                                                                               gint _tmp186__length1 = 0;
+                                                                                                                               const gchar* _tmp187_ = NULL;
+                                                                                                                               _tmp186_ = nv;
+                                                                                                                               _tmp186__length1 = nv_length1;
+                                                                                                                               _tmp187_ = _tmp186_[0];
+                                                                                                                               if (g_strcmp0 (_tmp187_, "error_types") == 0) {
+                                                                                                                                       gchar** _tmp188_ = NULL;
+                                                                                                                                       gint _tmp188__length1 = 0;
+                                                                                                                                       const gchar* _tmp189_ = NULL;
+                                                                                                                                       gchar* _tmp190_ = NULL;
+                                                                                                                                       _tmp188_ = nv;
+                                                                                                                                       _tmp188__length1 = nv_length1;
+                                                                                                                                       _tmp189_ = _tmp188_[1];
+                                                                                                                                       _tmp190_ = vala_gidl_parser_eval (self, _tmp189_);
                                                                                                                                        _g_free0 (error_types);
-                                                                                                                                       error_types = _tmp189_;
+                                                                                                                                       error_types = _tmp190_;
                                                                                                                                } else {
-                                                                                                                                       gchar** _tmp190_ = NULL;
-                                                                                                                                       gint _tmp190__length1 = 0;
-                                                                                                                                       const gchar* _tmp191_ = NULL;
-                                                                                                                                       _tmp190_ = nv;
-                                                                                                                                       _tmp190__length1 = nv_length1;
-                                                                                                                                       _tmp191_ = _tmp190_[0];
-                                                                                                                                       if (g_strcmp0 (_tmp191_, "no_array_length") == 0) {
-                                                                                                                                               gchar** _tmp192_ = NULL;
-                                                                                                                                               gint _tmp192__length1 = 0;
-                                                                                                                                               const gchar* _tmp193_ = NULL;
-                                                                                                                                               gchar* _tmp194_ = NULL;
+                                                                                                                                       gchar** _tmp191_ = NULL;
+                                                                                                                                       gint _tmp191__length1 = 0;
+                                                                                                                                       const gchar* _tmp192_ = NULL;
+                                                                                                                                       _tmp191_ = nv;
+                                                                                                                                       _tmp191__length1 = nv_length1;
+                                                                                                                                       _tmp192_ = _tmp191_[0];
+                                                                                                                                       if (g_strcmp0 (_tmp192_, "no_array_length") == 0) {
+                                                                                                                                               gchar** _tmp193_ = NULL;
+                                                                                                                                               gint _tmp193__length1 = 0;
+                                                                                                                                               const gchar* _tmp194_ = NULL;
                                                                                                                                                gchar* _tmp195_ = NULL;
-                                                                                                                                               gboolean _tmp196_ = FALSE;
-                                                                                                                                               _tmp192_ = nv;
-                                                                                                                                               _tmp192__length1 = nv_length1;
-                                                                                                                                               _tmp193_ = _tmp192_[1];
-                                                                                                                                               _tmp194_ = vala_gidl_parser_eval (self, _tmp193_);
-                                                                                                                                               _tmp195_ = _tmp194_;
-                                                                                                                                               _tmp196_ = g_strcmp0 (_tmp195_, "1") == 0;
-                                                                                                                                               _g_free0 (_tmp195_);
-                                                                                                                                               if (_tmp196_) {
-                                                                                                                                                       ValaMethod* _tmp197_ = NULL;
-                                                                                                                                                       _tmp197_ = m;
-                                                                                                                                                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp197_, "CCode", "array_length", FALSE, NULL);
+                                                                                                                                               gchar* _tmp196_ = NULL;
+                                                                                                                                               gboolean _tmp197_ = FALSE;
+                                                                                                                                               _tmp193_ = nv;
+                                                                                                                                               _tmp193__length1 = nv_length1;
+                                                                                                                                               _tmp194_ = _tmp193_[1];
+                                                                                                                                               _tmp195_ = vala_gidl_parser_eval (self, _tmp194_);
+                                                                                                                                               _tmp196_ = _tmp195_;
+                                                                                                                                               _tmp197_ = g_strcmp0 (_tmp196_, "1") == 0;
+                                                                                                                                               _g_free0 (_tmp196_);
+                                                                                                                                               if (_tmp197_) {
+                                                                                                                                                       ValaMethod* _tmp198_ = NULL;
+                                                                                                                                                       _tmp198_ = m;
+                                                                                                                                                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp198_, "CCode", "array_length", FALSE, NULL);
                                                                                                                                                }
                                                                                                                                        } else {
-                                                                                                                                               gchar** _tmp198_ = NULL;
-                                                                                                                                               gint _tmp198__length1 = 0;
-                                                                                                                                               const gchar* _tmp199_ = NULL;
-                                                                                                                                               _tmp198_ = nv;
-                                                                                                                                               _tmp198__length1 = nv_length1;
-                                                                                                                                               _tmp199_ = _tmp198_[0];
-                                                                                                                                               if (g_strcmp0 (_tmp199_, "array_null_terminated") == 0) {
-                                                                                                                                                       gchar** _tmp200_ = NULL;
-                                                                                                                                                       gint _tmp200__length1 = 0;
-                                                                                                                                                       const gchar* _tmp201_ = NULL;
-                                                                                                                                                       gchar* _tmp202_ = NULL;
+                                                                                                                                               gchar** _tmp199_ = NULL;
+                                                                                                                                               gint _tmp199__length1 = 0;
+                                                                                                                                               const gchar* _tmp200_ = NULL;
+                                                                                                                                               _tmp199_ = nv;
+                                                                                                                                               _tmp199__length1 = nv_length1;
+                                                                                                                                               _tmp200_ = _tmp199_[0];
+                                                                                                                                               if (g_strcmp0 (_tmp200_, "array_null_terminated") == 0) {
+                                                                                                                                                       gchar** _tmp201_ = NULL;
+                                                                                                                                                       gint _tmp201__length1 = 0;
+                                                                                                                                                       const gchar* _tmp202_ = NULL;
                                                                                                                                                        gchar* _tmp203_ = NULL;
-                                                                                                                                                       gboolean _tmp204_ = FALSE;
-                                                                                                                                                       _tmp200_ = nv;
-                                                                                                                                                       _tmp200__length1 = nv_length1;
-                                                                                                                                                       _tmp201_ = _tmp200_[1];
-                                                                                                                                                       _tmp202_ = vala_gidl_parser_eval (self, _tmp201_);
-                                                                                                                                                       _tmp203_ = _tmp202_;
-                                                                                                                                                       _tmp204_ = g_strcmp0 (_tmp203_, "1") == 0;
-                                                                                                                                                       _g_free0 (_tmp203_);
-                                                                                                                                                       if (_tmp204_) {
-                                                                                                                                                               ValaMethod* _tmp205_ = NULL;
+                                                                                                                                                       gchar* _tmp204_ = NULL;
+                                                                                                                                                       gboolean _tmp205_ = FALSE;
+                                                                                                                                                       _tmp201_ = nv;
+                                                                                                                                                       _tmp201__length1 = nv_length1;
+                                                                                                                                                       _tmp202_ = _tmp201_[1];
+                                                                                                                                                       _tmp203_ = vala_gidl_parser_eval (self, _tmp202_);
+                                                                                                                                                       _tmp204_ = _tmp203_;
+                                                                                                                                                       _tmp205_ = g_strcmp0 (_tmp204_, "1") == 0;
+                                                                                                                                                       _g_free0 (_tmp204_);
+                                                                                                                                                       if (_tmp205_) {
                                                                                                                                                                ValaMethod* _tmp206_ = NULL;
-                                                                                                                                                               _tmp205_ = m;
-                                                                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp205_, "CCode", "array_length", FALSE, NULL);
+                                                                                                                                                               ValaMethod* _tmp207_ = NULL;
                                                                                                                                                                _tmp206_ = m;
-                                                                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp206_, "CCode", "array_null_terminated", TRUE, NULL);
+                                                                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp206_, "CCode", "array_length", FALSE, NULL);
+                                                                                                                                                               _tmp207_ = m;
+                                                                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp207_, "CCode", "array_null_terminated", TRUE, NULL);
                                                                                                                                                        }
                                                                                                                                                } else {
-                                                                                                                                                       gchar** _tmp207_ = NULL;
-                                                                                                                                                       gint _tmp207__length1 = 0;
-                                                                                                                                                       const gchar* _tmp208_ = NULL;
-                                                                                                                                                       _tmp207_ = nv;
-                                                                                                                                                       _tmp207__length1 = nv_length1;
-                                                                                                                                                       _tmp208_ = _tmp207_[0];
-                                                                                                                                                       if (g_strcmp0 (_tmp208_, "array_length_type") == 0) {
-                                                                                                                                                               ValaMethod* _tmp209_ = NULL;
-                                                                                                                                                               gchar** _tmp210_ = NULL;
-                                                                                                                                                               gint _tmp210__length1 = 0;
-                                                                                                                                                               const gchar* _tmp211_ = NULL;
-                                                                                                                                                               gchar* _tmp212_ = NULL;
+                                                                                                                                                       gchar** _tmp208_ = NULL;
+                                                                                                                                                       gint _tmp208__length1 = 0;
+                                                                                                                                                       const gchar* _tmp209_ = NULL;
+                                                                                                                                                       _tmp208_ = nv;
+                                                                                                                                                       _tmp208__length1 = nv_length1;
+                                                                                                                                                       _tmp209_ = _tmp208_[0];
+                                                                                                                                                       if (g_strcmp0 (_tmp209_, "array_length_type") == 0) {
+                                                                                                                                                               ValaMethod* _tmp210_ = NULL;
+                                                                                                                                                               gchar** _tmp211_ = NULL;
+                                                                                                                                                               gint _tmp211__length1 = 0;
+                                                                                                                                                               const gchar* _tmp212_ = NULL;
                                                                                                                                                                gchar* _tmp213_ = NULL;
-                                                                                                                                                               _tmp209_ = m;
-                                                                                                                                                               _tmp210_ = nv;
-                                                                                                                                                               _tmp210__length1 = nv_length1;
-                                                                                                                                                               _tmp211_ = _tmp210_[1];
-                                                                                                                                                               _tmp212_ = vala_gidl_parser_eval (self, _tmp211_);
-                                                                                                                                                               _tmp213_ = _tmp212_;
-                                                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp209_, "CCode", "array_length_type", _tmp213_, NULL);
-                                                                                                                                                               _g_free0 (_tmp213_);
+                                                                                                                                                               gchar* _tmp214_ = NULL;
+                                                                                                                                                               _tmp210_ = m;
+                                                                                                                                                               _tmp211_ = nv;
+                                                                                                                                                               _tmp211__length1 = nv_length1;
+                                                                                                                                                               _tmp212_ = _tmp211_[1];
+                                                                                                                                                               _tmp213_ = vala_gidl_parser_eval (self, _tmp212_);
+                                                                                                                                                               _tmp214_ = _tmp213_;
+                                                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp210_, "CCode", "array_length_type", _tmp214_, NULL);
+                                                                                                                                                               _g_free0 (_tmp214_);
                                                                                                                                                        } else {
-                                                                                                                                                               gchar** _tmp214_ = NULL;
-                                                                                                                                                               gint _tmp214__length1 = 0;
-                                                                                                                                                               const gchar* _tmp215_ = NULL;
-                                                                                                                                                               _tmp214_ = nv;
-                                                                                                                                                               _tmp214__length1 = nv_length1;
-                                                                                                                                                               _tmp215_ = _tmp214_[0];
-                                                                                                                                                               if (g_strcmp0 (_tmp215_, "type_name") == 0) {
-                                                                                                                                                                       ValaMethod* _tmp216_ = NULL;
-                                                                                                                                                                       gchar** _tmp217_ = NULL;
-                                                                                                                                                                       gint _tmp217__length1 = 0;
-                                                                                                                                                                       const gchar* _tmp218_ = NULL;
-                                                                                                                                                                       gchar* _tmp219_ = NULL;
+                                                                                                                                                               gchar** _tmp215_ = NULL;
+                                                                                                                                                               gint _tmp215__length1 = 0;
+                                                                                                                                                               const gchar* _tmp216_ = NULL;
+                                                                                                                                                               _tmp215_ = nv;
+                                                                                                                                                               _tmp215__length1 = nv_length1;
+                                                                                                                                                               _tmp216_ = _tmp215_[0];
+                                                                                                                                                               if (g_strcmp0 (_tmp216_, "type_name") == 0) {
+                                                                                                                                                                       ValaMethod* _tmp217_ = NULL;
+                                                                                                                                                                       gchar** _tmp218_ = NULL;
+                                                                                                                                                                       gint _tmp218__length1 = 0;
+                                                                                                                                                                       const gchar* _tmp219_ = NULL;
                                                                                                                                                                        gchar* _tmp220_ = NULL;
-                                                                                                                                                                       ValaDataType* _tmp221_ = NULL;
-                                                                                                                                                                       gboolean _tmp222_ = FALSE;
+                                                                                                                                                                       gchar* _tmp221_ = NULL;
+                                                                                                                                                                       ValaDataType* _tmp222_ = NULL;
                                                                                                                                                                        gboolean _tmp223_ = FALSE;
-                                                                                                                                                                       ValaDataType* _tmp224_ = NULL;
+                                                                                                                                                                       gboolean _tmp224_ = FALSE;
                                                                                                                                                                        ValaDataType* _tmp225_ = NULL;
-                                                                                                                                                                       _tmp216_ = m;
-                                                                                                                                                                       _tmp217_ = nv;
-                                                                                                                                                                       _tmp217__length1 = nv_length1;
-                                                                                                                                                                       _tmp218_ = _tmp217_[1];
-                                                                                                                                                                       _tmp219_ = vala_gidl_parser_eval (self, _tmp218_);
-                                                                                                                                                                       _tmp220_ = _tmp219_;
-                                                                                                                                                                       _tmp221_ = return_type;
-                                                                                                                                                                       _tmp222_ = vala_data_type_get_value_owned (_tmp221_);
-                                                                                                                                                                       _tmp223_ = _tmp222_;
-                                                                                                                                                                       _tmp224_ = vala_gidl_parser_parse_type_from_string (self, _tmp220_, _tmp223_, NULL);
+                                                                                                                                                                       ValaDataType* _tmp226_ = NULL;
+                                                                                                                                                                       _tmp217_ = m;
+                                                                                                                                                                       _tmp218_ = nv;
+                                                                                                                                                                       _tmp218__length1 = nv_length1;
+                                                                                                                                                                       _tmp219_ = _tmp218_[1];
+                                                                                                                                                                       _tmp220_ = vala_gidl_parser_eval (self, _tmp219_);
+                                                                                                                                                                       _tmp221_ = _tmp220_;
+                                                                                                                                                                       _tmp222_ = return_type;
+                                                                                                                                                                       _tmp223_ = vala_data_type_get_value_owned (_tmp222_);
+                                                                                                                                                                       _tmp224_ = _tmp223_;
+                                                                                                                                                                       _tmp225_ = vala_gidl_parser_parse_type_from_string (self, _tmp221_, _tmp224_, NULL);
                                                                                                                                                                        _vala_code_node_unref0 (return_type);
-                                                                                                                                                                       return_type = _tmp224_;
-                                                                                                                                                                       _tmp225_ = return_type;
-                                                                                                                                                                       vala_method_set_return_type (_tmp216_, _tmp225_);
-                                                                                                                                                                       _g_free0 (_tmp220_);
+                                                                                                                                                                       return_type = _tmp225_;
+                                                                                                                                                                       _tmp226_ = return_type;
+                                                                                                                                                                       vala_method_set_return_type (_tmp217_, _tmp226_);
+                                                                                                                                                                       _g_free0 (_tmp221_);
                                                                                                                                                                } else {
-                                                                                                                                                                       gchar** _tmp226_ = NULL;
-                                                                                                                                                                       gint _tmp226__length1 = 0;
-                                                                                                                                                                       const gchar* _tmp227_ = NULL;
-                                                                                                                                                                       _tmp226_ = nv;
-                                                                                                                                                                       _tmp226__length1 = nv_length1;
-                                                                                                                                                                       _tmp227_ = _tmp226_[0];
-                                                                                                                                                                       if (g_strcmp0 (_tmp227_, "ctype") == 0) {
-                                                                                                                                                                               ValaMethod* _tmp228_ = NULL;
-                                                                                                                                                                               gchar** _tmp229_ = NULL;
-                                                                                                                                                                               gint _tmp229__length1 = 0;
-                                                                                                                                                                               const gchar* _tmp230_ = NULL;
-                                                                                                                                                                               gchar* _tmp231_ = NULL;
+                                                                                                                                                                       gchar** _tmp227_ = NULL;
+                                                                                                                                                                       gint _tmp227__length1 = 0;
+                                                                                                                                                                       const gchar* _tmp228_ = NULL;
+                                                                                                                                                                       _tmp227_ = nv;
+                                                                                                                                                                       _tmp227__length1 = nv_length1;
+                                                                                                                                                                       _tmp228_ = _tmp227_[0];
+                                                                                                                                                                       if (g_strcmp0 (_tmp228_, "ctype") == 0) {
+                                                                                                                                                                               ValaMethod* _tmp229_ = NULL;
+                                                                                                                                                                               gchar** _tmp230_ = NULL;
+                                                                                                                                                                               gint _tmp230__length1 = 0;
+                                                                                                                                                                               const gchar* _tmp231_ = NULL;
                                                                                                                                                                                gchar* _tmp232_ = NULL;
-                                                                                                                                                                               _tmp228_ = m;
-                                                                                                                                                                               _tmp229_ = nv;
-                                                                                                                                                                               _tmp229__length1 = nv_length1;
-                                                                                                                                                                               _tmp230_ = _tmp229_[1];
-                                                                                                                                                                               _tmp231_ = vala_gidl_parser_eval (self, _tmp230_);
-                                                                                                                                                                               _tmp232_ = _tmp231_;
-                                                                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp228_, "CCode", "type", _tmp232_, NULL);
-                                                                                                                                                                               _g_free0 (_tmp232_);
+                                                                                                                                                                               gchar* _tmp233_ = NULL;
+                                                                                                                                                                               _tmp229_ = m;
+                                                                                                                                                                               _tmp230_ = nv;
+                                                                                                                                                                               _tmp230__length1 = nv_length1;
+                                                                                                                                                                               _tmp231_ = _tmp230_[1];
+                                                                                                                                                                               _tmp232_ = vala_gidl_parser_eval (self, _tmp231_);
+                                                                                                                                                                               _tmp233_ = _tmp232_;
+                                                                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp229_, "CCode", "type", _tmp233_, NULL);
+                                                                                                                                                                               _g_free0 (_tmp233_);
                                                                                                                                                                        } else {
-                                                                                                                                                                               gchar** _tmp233_ = NULL;
-                                                                                                                                                                               gint _tmp233__length1 = 0;
-                                                                                                                                                                               const gchar* _tmp234_ = NULL;
-                                                                                                                                                                               _tmp233_ = nv;
-                                                                                                                                                                               _tmp233__length1 = nv_length1;
-                                                                                                                                                                               _tmp234_ = _tmp233_[0];
-                                                                                                                                                                               if (g_strcmp0 (_tmp234_, "type_arguments") == 0) {
-                                                                                                                                                                                       ValaDataType* _tmp235_ = NULL;
-                                                                                                                                                                                       gchar** _tmp236_ = NULL;
-                                                                                                                                                                                       gint _tmp236__length1 = 0;
-                                                                                                                                                                                       const gchar* _tmp237_ = NULL;
-                                                                                                                                                                                       gchar* _tmp238_ = NULL;
+                                                                                                                                                                               gchar** _tmp234_ = NULL;
+                                                                                                                                                                               gint _tmp234__length1 = 0;
+                                                                                                                                                                               const gchar* _tmp235_ = NULL;
+                                                                                                                                                                               _tmp234_ = nv;
+                                                                                                                                                                               _tmp234__length1 = nv_length1;
+                                                                                                                                                                               _tmp235_ = _tmp234_[0];
+                                                                                                                                                                               if (g_strcmp0 (_tmp235_, "type_arguments") == 0) {
+                                                                                                                                                                                       ValaDataType* _tmp236_ = NULL;
+                                                                                                                                                                                       gchar** _tmp237_ = NULL;
+                                                                                                                                                                                       gint _tmp237__length1 = 0;
+                                                                                                                                                                                       const gchar* _tmp238_ = NULL;
                                                                                                                                                                                        gchar* _tmp239_ = NULL;
-                                                                                                                                                                                       _tmp235_ = return_type;
-                                                                                                                                                                                       _tmp236_ = nv;
-                                                                                                                                                                                       _tmp236__length1 = nv_length1;
-                                                                                                                                                                                       _tmp237_ = _tmp236_[1];
-                                                                                                                                                                                       _tmp238_ = vala_gidl_parser_eval (self, _tmp237_);
-                                                                                                                                                                                       _tmp239_ = _tmp238_;
-                                                                                                                                                                                       vala_gidl_parser_parse_type_arguments_from_string (self, _tmp235_, _tmp239_, NULL);
-                                                                                                                                                                                       _g_free0 (_tmp239_);
+                                                                                                                                                                                       gchar* _tmp240_ = NULL;
+                                                                                                                                                                                       _tmp236_ = return_type;
+                                                                                                                                                                                       _tmp237_ = nv;
+                                                                                                                                                                                       _tmp237__length1 = nv_length1;
+                                                                                                                                                                                       _tmp238_ = _tmp237_[1];
+                                                                                                                                                                                       _tmp239_ = vala_gidl_parser_eval (self, _tmp238_);
+                                                                                                                                                                                       _tmp240_ = _tmp239_;
+                                                                                                                                                                                       vala_gidl_parser_parse_type_arguments_from_string (self, _tmp236_, _tmp240_, NULL);
+                                                                                                                                                                                       _g_free0 (_tmp240_);
                                                                                                                                                                                } else {
-                                                                                                                                                                                       gchar** _tmp240_ = NULL;
-                                                                                                                                                                                       gint _tmp240__length1 = 0;
-                                                                                                                                                                                       const gchar* _tmp241_ = NULL;
-                                                                                                                                                                                       _tmp240_ = nv;
-                                                                                                                                                                                       _tmp240__length1 = nv_length1;
-                                                                                                                                                                                       _tmp241_ = _tmp240_[0];
-                                                                                                                                                                                       if (g_strcmp0 (_tmp241_, "deprecated") == 0) {
-                                                                                                                                                                                               gchar** _tmp242_ = NULL;
-                                                                                                                                                                                               gint _tmp242__length1 = 0;
-                                                                                                                                                                                               const gchar* _tmp243_ = NULL;
-                                                                                                                                                                                               gchar* _tmp244_ = NULL;
+                                                                                                                                                                                       gchar** _tmp241_ = NULL;
+                                                                                                                                                                                       gint _tmp241__length1 = 0;
+                                                                                                                                                                                       const gchar* _tmp242_ = NULL;
+                                                                                                                                                                                       _tmp241_ = nv;
+                                                                                                                                                                                       _tmp241__length1 = nv_length1;
+                                                                                                                                                                                       _tmp242_ = _tmp241_[0];
+                                                                                                                                                                                       if (g_strcmp0 (_tmp242_, "deprecated") == 0) {
+                                                                                                                                                                                               gchar** _tmp243_ = NULL;
+                                                                                                                                                                                               gint _tmp243__length1 = 0;
+                                                                                                                                                                                               const gchar* _tmp244_ = NULL;
                                                                                                                                                                                                gchar* _tmp245_ = NULL;
-                                                                                                                                                                                               gboolean _tmp246_ = FALSE;
-                                                                                                                                                                                               _tmp242_ = nv;
-                                                                                                                                                                                               _tmp242__length1 = nv_length1;
-                                                                                                                                                                                               _tmp243_ = _tmp242_[1];
-                                                                                                                                                                                               _tmp244_ = vala_gidl_parser_eval (self, _tmp243_);
-                                                                                                                                                                                               _tmp245_ = _tmp244_;
-                                                                                                                                                                                               _tmp246_ = g_strcmp0 (_tmp245_, "1") == 0;
-                                                                                                                                                                                               _g_free0 (_tmp245_);
-                                                                                                                                                                                               if (_tmp246_) {
-                                                                                                                                                                                                       ValaMethod* _tmp247_ = NULL;
-                                                                                                                                                                                                       _tmp247_ = m;
-                                                                                                                                                                                                       vala_code_node_set_attribute ((ValaCodeNode*) _tmp247_, "Deprecated", TRUE, NULL);
+                                                                                                                                                                                               gchar* _tmp246_ = NULL;
+                                                                                                                                                                                               gboolean _tmp247_ = FALSE;
+                                                                                                                                                                                               _tmp243_ = nv;
+                                                                                                                                                                                               _tmp243__length1 = nv_length1;
+                                                                                                                                                                                               _tmp244_ = _tmp243_[1];
+                                                                                                                                                                                               _tmp245_ = vala_gidl_parser_eval (self, _tmp244_);
+                                                                                                                                                                                               _tmp246_ = _tmp245_;
+                                                                                                                                                                                               _tmp247_ = g_strcmp0 (_tmp246_, "1") == 0;
+                                                                                                                                                                                               _g_free0 (_tmp246_);
+                                                                                                                                                                                               if (_tmp247_) {
+                                                                                                                                                                                                       ValaMethod* _tmp248_ = NULL;
+                                                                                                                                                                                                       _tmp248_ = m;
+                                                                                                                                                                                                       vala_code_node_set_attribute ((ValaCodeNode*) _tmp248_, "Deprecated", TRUE, NULL);
                                                                                                                                                                                                }
                                                                                                                                                                                        } else {
-                                                                                                                                                                                               gchar** _tmp248_ = NULL;
-                                                                                                                                                                                               gint _tmp248__length1 = 0;
-                                                                                                                                                                                               const gchar* _tmp249_ = NULL;
-                                                                                                                                                                                               _tmp248_ = nv;
-                                                                                                                                                                                               _tmp248__length1 = nv_length1;
-                                                                                                                                                                                               _tmp249_ = _tmp248_[0];
-                                                                                                                                                                                               if (g_strcmp0 (_tmp249_, "replacement") == 0) {
-                                                                                                                                                                                                       ValaMethod* _tmp250_ = NULL;
-                                                                                                                                                                                                       gchar** _tmp251_ = NULL;
-                                                                                                                                                                                                       gint _tmp251__length1 = 0;
-                                                                                                                                                                                                       const gchar* _tmp252_ = NULL;
-                                                                                                                                                                                                       gchar* _tmp253_ = NULL;
+                                                                                                                                                                                               gchar** _tmp249_ = NULL;
+                                                                                                                                                                                               gint _tmp249__length1 = 0;
+                                                                                                                                                                                               const gchar* _tmp250_ = NULL;
+                                                                                                                                                                                               _tmp249_ = nv;
+                                                                                                                                                                                               _tmp249__length1 = nv_length1;
+                                                                                                                                                                                               _tmp250_ = _tmp249_[0];
+                                                                                                                                                                                               if (g_strcmp0 (_tmp250_, "replacement") == 0) {
+                                                                                                                                                                                                       ValaMethod* _tmp251_ = NULL;
+                                                                                                                                                                                                       gchar** _tmp252_ = NULL;
+                                                                                                                                                                                                       gint _tmp252__length1 = 0;
+                                                                                                                                                                                                       const gchar* _tmp253_ = NULL;
                                                                                                                                                                                                        gchar* _tmp254_ = NULL;
-                                                                                                                                                                                                       _tmp250_ = m;
-                                                                                                                                                                                                       _tmp251_ = nv;
-                                                                                                                                                                                                       _tmp251__length1 = nv_length1;
-                                                                                                                                                                                                       _tmp252_ = _tmp251_[1];
-                                                                                                                                                                                                       _tmp253_ = vala_gidl_parser_eval (self, _tmp252_);
-                                                                                                                                                                                                       _tmp254_ = _tmp253_;
-                                                                                                                                                                                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp250_, "Deprecated", "replacement", _tmp254_, NULL);
-                                                                                                                                                                                                       _g_free0 (_tmp254_);
+                                                                                                                                                                                                       gchar* _tmp255_ = NULL;
+                                                                                                                                                                                                       _tmp251_ = m;
+                                                                                                                                                                                                       _tmp252_ = nv;
+                                                                                                                                                                                                       _tmp252__length1 = nv_length1;
+                                                                                                                                                                                                       _tmp253_ = _tmp252_[1];
+                                                                                                                                                                                                       _tmp254_ = vala_gidl_parser_eval (self, _tmp253_);
+                                                                                                                                                                                                       _tmp255_ = _tmp254_;
+                                                                                                                                                                                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp251_, "Deprecated", "replacement", _tmp255_, NULL);
+                                                                                                                                                                                                       _g_free0 (_tmp255_);
                                                                                                                                                                                                } else {
-                                                                                                                                                                                                       gchar** _tmp255_ = NULL;
-                                                                                                                                                                                                       gint _tmp255__length1 = 0;
-                                                                                                                                                                                                       const gchar* _tmp256_ = NULL;
-                                                                                                                                                                                                       _tmp255_ = nv;
-                                                                                                                                                                                                       _tmp255__length1 = nv_length1;
-                                                                                                                                                                                                       _tmp256_ = _tmp255_[0];
-                                                                                                                                                                                                       if (g_strcmp0 (_tmp256_, "deprecated_since") == 0) {
-                                                                                                                                                                                                               ValaMethod* _tmp257_ = NULL;
-                                                                                                                                                                                                               gchar** _tmp258_ = NULL;
-                                                                                                                                                                                                               gint _tmp258__length1 = 0;
-                                                                                                                                                                                                               const gchar* _tmp259_ = NULL;
-                                                                                                                                                                                                               gchar* _tmp260_ = NULL;
+                                                                                                                                                                                                       gchar** _tmp256_ = NULL;
+                                                                                                                                                                                                       gint _tmp256__length1 = 0;
+                                                                                                                                                                                                       const gchar* _tmp257_ = NULL;
+                                                                                                                                                                                                       _tmp256_ = nv;
+                                                                                                                                                                                                       _tmp256__length1 = nv_length1;
+                                                                                                                                                                                                       _tmp257_ = _tmp256_[0];
+                                                                                                                                                                                                       if (g_strcmp0 (_tmp257_, "deprecated_since") == 0) {
+                                                                                                                                                                                                               ValaMethod* _tmp258_ = NULL;
+                                                                                                                                                                                                               gchar** _tmp259_ = NULL;
+                                                                                                                                                                                                               gint _tmp259__length1 = 0;
+                                                                                                                                                                                                               const gchar* _tmp260_ = NULL;
                                                                                                                                                                                                                gchar* _tmp261_ = NULL;
-                                                                                                                                                                                                               _tmp257_ = m;
-                                                                                                                                                                                                               _tmp258_ = nv;
-                                                                                                                                                                                                               _tmp258__length1 = nv_length1;
-                                                                                                                                                                                                               _tmp259_ = _tmp258_[1];
-                                                                                                                                                                                                               _tmp260_ = vala_gidl_parser_eval (self, _tmp259_);
-                                                                                                                                                                                                               _tmp261_ = _tmp260_;
-                                                                                                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp257_, "Deprecated", "since", _tmp261_, NULL);
-                                                                                                                                                                                                               _g_free0 (_tmp261_);
+                                                                                                                                                                                                               gchar* _tmp262_ = NULL;
+                                                                                                                                                                                                               _tmp258_ = m;
+                                                                                                                                                                                                               _tmp259_ = nv;
+                                                                                                                                                                                                               _tmp259__length1 = nv_length1;
+                                                                                                                                                                                                               _tmp260_ = _tmp259_[1];
+                                                                                                                                                                                                               _tmp261_ = vala_gidl_parser_eval (self, _tmp260_);
+                                                                                                                                                                                                               _tmp262_ = _tmp261_;
+                                                                                                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp258_, "Deprecated", "since", _tmp262_, NULL);
+                                                                                                                                                                                                               _g_free0 (_tmp262_);
                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                               gchar** _tmp262_ = NULL;
-                                                                                                                                                                                                               gint _tmp262__length1 = 0;
-                                                                                                                                                                                                               const gchar* _tmp263_ = NULL;
-                                                                                                                                                                                                               _tmp262_ = nv;
-                                                                                                                                                                                                               _tmp262__length1 = nv_length1;
-                                                                                                                                                                                                               _tmp263_ = _tmp262_[0];
-                                                                                                                                                                                                               if (g_strcmp0 (_tmp263_, "cheader_filename") == 0) {
-                                                                                                                                                                                                                       ValaMethod* _tmp264_ = NULL;
-                                                                                                                                                                                                                       gchar** _tmp265_ = NULL;
-                                                                                                                                                                                                                       gint _tmp265__length1 = 0;
-                                                                                                                                                                                                                       const gchar* _tmp266_ = NULL;
-                                                                                                                                                                                                                       gchar* _tmp267_ = NULL;
+                                                                                                                                                                                                               gchar** _tmp263_ = NULL;
+                                                                                                                                                                                                               gint _tmp263__length1 = 0;
+                                                                                                                                                                                                               const gchar* _tmp264_ = NULL;
+                                                                                                                                                                                                               _tmp263_ = nv;
+                                                                                                                                                                                                               _tmp263__length1 = nv_length1;
+                                                                                                                                                                                                               _tmp264_ = _tmp263_[0];
+                                                                                                                                                                                                               if (g_strcmp0 (_tmp264_, "cheader_filename") == 0) {
+                                                                                                                                                                                                                       ValaMethod* _tmp265_ = NULL;
+                                                                                                                                                                                                                       gchar** _tmp266_ = NULL;
+                                                                                                                                                                                                                       gint _tmp266__length1 = 0;
+                                                                                                                                                                                                                       const gchar* _tmp267_ = NULL;
                                                                                                                                                                                                                        gchar* _tmp268_ = NULL;
-                                                                                                                                                                                                                       _tmp264_ = m;
-                                                                                                                                                                                                                       _tmp265_ = nv;
-                                                                                                                                                                                                                       _tmp265__length1 = nv_length1;
-                                                                                                                                                                                                                       _tmp266_ = _tmp265_[1];
-                                                                                                                                                                                                                       _tmp267_ = vala_gidl_parser_eval (self, _tmp266_);
-                                                                                                                                                                                                                       _tmp268_ = _tmp267_;
-                                                                                                                                                                                                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp264_, "CCode", "cheader_filename", _tmp268_, NULL);
-                                                                                                                                                                                                                       _g_free0 (_tmp268_);
+                                                                                                                                                                                                                       gchar* _tmp269_ = NULL;
+                                                                                                                                                                                                                       _tmp265_ = m;
+                                                                                                                                                                                                                       _tmp266_ = nv;
+                                                                                                                                                                                                                       _tmp266__length1 = nv_length1;
+                                                                                                                                                                                                                       _tmp267_ = _tmp266_[1];
+                                                                                                                                                                                                                       _tmp268_ = vala_gidl_parser_eval (self, _tmp267_);
+                                                                                                                                                                                                                       _tmp269_ = _tmp268_;
+                                                                                                                                                                                                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp265_, "CCode", "cheader_filename", _tmp269_, NULL);
+                                                                                                                                                                                                                       _g_free0 (_tmp269_);
                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                       gchar** _tmp269_ = NULL;
-                                                                                                                                                                                                                       gint _tmp269__length1 = 0;
-                                                                                                                                                                                                                       const gchar* _tmp270_ = NULL;
-                                                                                                                                                                                                                       _tmp269_ = nv;
-                                                                                                                                                                                                                       _tmp269__length1 = nv_length1;
-                                                                                                                                                                                                                       _tmp270_ = _tmp269_[0];
-                                                                                                                                                                                                                       if (g_strcmp0 (_tmp270_, "abstract") == 0) {
-                                                                                                                                                                                                                               gchar** _tmp271_ = NULL;
-                                                                                                                                                                                                                               gint _tmp271__length1 = 0;
-                                                                                                                                                                                                                               const gchar* _tmp272_ = NULL;
-                                                                                                                                                                                                                               gchar* _tmp273_ = NULL;
+                                                                                                                                                                                                                       gchar** _tmp270_ = NULL;
+                                                                                                                                                                                                                       gint _tmp270__length1 = 0;
+                                                                                                                                                                                                                       const gchar* _tmp271_ = NULL;
+                                                                                                                                                                                                                       _tmp270_ = nv;
+                                                                                                                                                                                                                       _tmp270__length1 = nv_length1;
+                                                                                                                                                                                                                       _tmp271_ = _tmp270_[0];
+                                                                                                                                                                                                                       if (g_strcmp0 (_tmp271_, "abstract") == 0) {
+                                                                                                                                                                                                                               gchar** _tmp272_ = NULL;
+                                                                                                                                                                                                                               gint _tmp272__length1 = 0;
+                                                                                                                                                                                                                               const gchar* _tmp273_ = NULL;
                                                                                                                                                                                                                                gchar* _tmp274_ = NULL;
-                                                                                                                                                                                                                               gboolean _tmp275_ = FALSE;
-                                                                                                                                                                                                                               _tmp271_ = nv;
-                                                                                                                                                                                                                               _tmp271__length1 = nv_length1;
-                                                                                                                                                                                                                               _tmp272_ = _tmp271_[1];
-                                                                                                                                                                                                                               _tmp273_ = vala_gidl_parser_eval (self, _tmp272_);
-                                                                                                                                                                                                                               _tmp274_ = _tmp273_;
-                                                                                                                                                                                                                               _tmp275_ = g_strcmp0 (_tmp274_, "1") == 0;
-                                                                                                                                                                                                                               _g_free0 (_tmp274_);
-                                                                                                                                                                                                                               if (_tmp275_) {
-                                                                                                                                                                                                                                       ValaMethod* _tmp276_ = NULL;
-                                                                                                                                                                                                                                       _tmp276_ = m;
-                                                                                                                                                                                                                                       vala_method_set_is_abstract (_tmp276_, TRUE);
+                                                                                                                                                                                                                               gchar* _tmp275_ = NULL;
+                                                                                                                                                                                                                               gboolean _tmp276_ = FALSE;
+                                                                                                                                                                                                                               _tmp272_ = nv;
+                                                                                                                                                                                                                               _tmp272__length1 = nv_length1;
+                                                                                                                                                                                                                               _tmp273_ = _tmp272_[1];
+                                                                                                                                                                                                                               _tmp274_ = vala_gidl_parser_eval (self, _tmp273_);
+                                                                                                                                                                                                                               _tmp275_ = _tmp274_;
+                                                                                                                                                                                                                               _tmp276_ = g_strcmp0 (_tmp275_, "1") == 0;
+                                                                                                                                                                                                                               _g_free0 (_tmp275_);
+                                                                                                                                                                                                                               if (_tmp276_) {
+                                                                                                                                                                                                                                       ValaMethod* _tmp277_ = NULL;
+                                                                                                                                                                                                                                       _tmp277_ = m;
+                                                                                                                                                                                                                                       vala_method_set_is_abstract (_tmp277_, TRUE);
                                                                                                                                                                                                                                }
                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                               gchar** _tmp277_ = NULL;
-                                                                                                                                                                                                                               gint _tmp277__length1 = 0;
-                                                                                                                                                                                                                               const gchar* _tmp278_ = NULL;
-                                                                                                                                                                                                                               _tmp277_ = nv;
-                                                                                                                                                                                                                               _tmp277__length1 = nv_length1;
-                                                                                                                                                                                                                               _tmp278_ = _tmp277_[0];
-                                                                                                                                                                                                                               if (g_strcmp0 (_tmp278_, "virtual") == 0) {
-                                                                                                                                                                                                                                       gchar** _tmp279_ = NULL;
-                                                                                                                                                                                                                                       gint _tmp279__length1 = 0;
-                                                                                                                                                                                                                                       const gchar* _tmp280_ = NULL;
-                                                                                                                                                                                                                                       gchar* _tmp281_ = NULL;
+                                                                                                                                                                                                                               gchar** _tmp278_ = NULL;
+                                                                                                                                                                                                                               gint _tmp278__length1 = 0;
+                                                                                                                                                                                                                               const gchar* _tmp279_ = NULL;
+                                                                                                                                                                                                                               _tmp278_ = nv;
+                                                                                                                                                                                                                               _tmp278__length1 = nv_length1;
+                                                                                                                                                                                                                               _tmp279_ = _tmp278_[0];
+                                                                                                                                                                                                                               if (g_strcmp0 (_tmp279_, "virtual") == 0) {
+                                                                                                                                                                                                                                       gchar** _tmp280_ = NULL;
+                                                                                                                                                                                                                                       gint _tmp280__length1 = 0;
+                                                                                                                                                                                                                                       const gchar* _tmp281_ = NULL;
                                                                                                                                                                                                                                        gchar* _tmp282_ = NULL;
-                                                                                                                                                                                                                                       gboolean _tmp283_ = FALSE;
-                                                                                                                                                                                                                                       _tmp279_ = nv;
-                                                                                                                                                                                                                                       _tmp279__length1 = nv_length1;
-                                                                                                                                                                                                                                       _tmp280_ = _tmp279_[1];
-                                                                                                                                                                                                                                       _tmp281_ = vala_gidl_parser_eval (self, _tmp280_);
-                                                                                                                                                                                                                                       _tmp282_ = _tmp281_;
-                                                                                                                                                                                                                                       _tmp283_ = g_strcmp0 (_tmp282_, "1") == 0;
-                                                                                                                                                                                                                                       _g_free0 (_tmp282_);
-                                                                                                                                                                                                                                       if (_tmp283_) {
-                                                                                                                                                                                                                                               ValaMethod* _tmp284_ = NULL;
-                                                                                                                                                                                                                                               _tmp284_ = m;
-                                                                                                                                                                                                                                               vala_method_set_is_virtual (_tmp284_, TRUE);
+                                                                                                                                                                                                                                       gchar* _tmp283_ = NULL;
+                                                                                                                                                                                                                                       gboolean _tmp284_ = FALSE;
+                                                                                                                                                                                                                                       _tmp280_ = nv;
+                                                                                                                                                                                                                                       _tmp280__length1 = nv_length1;
+                                                                                                                                                                                                                                       _tmp281_ = _tmp280_[1];
+                                                                                                                                                                                                                                       _tmp282_ = vala_gidl_parser_eval (self, _tmp281_);
+                                                                                                                                                                                                                                       _tmp283_ = _tmp282_;
+                                                                                                                                                                                                                                       _tmp284_ = g_strcmp0 (_tmp283_, "1") == 0;
+                                                                                                                                                                                                                                       _g_free0 (_tmp283_);
+                                                                                                                                                                                                                                       if (_tmp284_) {
+                                                                                                                                                                                                                                               ValaMethod* _tmp285_ = NULL;
+                                                                                                                                                                                                                                               _tmp285_ = m;
+                                                                                                                                                                                                                                               vala_method_set_is_virtual (_tmp285_, TRUE);
                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                       gchar** _tmp285_ = NULL;
-                                                                                                                                                                                                                                       gint _tmp285__length1 = 0;
-                                                                                                                                                                                                                                       const gchar* _tmp286_ = NULL;
-                                                                                                                                                                                                                                       _tmp285_ = nv;
-                                                                                                                                                                                                                                       _tmp285__length1 = nv_length1;
-                                                                                                                                                                                                                                       _tmp286_ = _tmp285_[0];
-                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp286_, "vfunc_name") == 0) {
-                                                                                                                                                                                                                                               ValaMethod* _tmp287_ = NULL;
-                                                                                                                                                                                                                                               gchar** _tmp288_ = NULL;
-                                                                                                                                                                                                                                               gint _tmp288__length1 = 0;
-                                                                                                                                                                                                                                               const gchar* _tmp289_ = NULL;
-                                                                                                                                                                                                                                               gchar* _tmp290_ = NULL;
+                                                                                                                                                                                                                                       gchar** _tmp286_ = NULL;
+                                                                                                                                                                                                                                       gint _tmp286__length1 = 0;
+                                                                                                                                                                                                                                       const gchar* _tmp287_ = NULL;
+                                                                                                                                                                                                                                       _tmp286_ = nv;
+                                                                                                                                                                                                                                       _tmp286__length1 = nv_length1;
+                                                                                                                                                                                                                                       _tmp287_ = _tmp286_[0];
+                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp287_, "vfunc_name") == 0) {
+                                                                                                                                                                                                                                               ValaMethod* _tmp288_ = NULL;
+                                                                                                                                                                                                                                               gchar** _tmp289_ = NULL;
+                                                                                                                                                                                                                                               gint _tmp289__length1 = 0;
+                                                                                                                                                                                                                                               const gchar* _tmp290_ = NULL;
                                                                                                                                                                                                                                                gchar* _tmp291_ = NULL;
-                                                                                                                                                                                                                                               _tmp287_ = m;
-                                                                                                                                                                                                                                               _tmp288_ = nv;
-                                                                                                                                                                                                                                               _tmp288__length1 = nv_length1;
-                                                                                                                                                                                                                                               _tmp289_ = _tmp288_[1];
-                                                                                                                                                                                                                                               _tmp290_ = vala_gidl_parser_eval (self, _tmp289_);
-                                                                                                                                                                                                                                               _tmp291_ = _tmp290_;
-                                                                                                                                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp287_, "CCode", "vfunc_name", _tmp291_, NULL);
-                                                                                                                                                                                                                                               _g_free0 (_tmp291_);
+                                                                                                                                                                                                                                               gchar* _tmp292_ = NULL;
+                                                                                                                                                                                                                                               _tmp288_ = m;
+                                                                                                                                                                                                                                               _tmp289_ = nv;
+                                                                                                                                                                                                                                               _tmp289__length1 = nv_length1;
+                                                                                                                                                                                                                                               _tmp290_ = _tmp289_[1];
+                                                                                                                                                                                                                                               _tmp291_ = vala_gidl_parser_eval (self, _tmp290_);
+                                                                                                                                                                                                                                               _tmp292_ = _tmp291_;
+                                                                                                                                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp288_, "CCode", "vfunc_name", _tmp292_, NULL);
+                                                                                                                                                                                                                                               _g_free0 (_tmp292_);
                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                               gchar** _tmp292_ = NULL;
-                                                                                                                                                                                                                                               gint _tmp292__length1 = 0;
-                                                                                                                                                                                                                                               const gchar* _tmp293_ = NULL;
-                                                                                                                                                                                                                                               _tmp292_ = nv;
-                                                                                                                                                                                                                                               _tmp292__length1 = nv_length1;
-                                                                                                                                                                                                                                               _tmp293_ = _tmp292_[0];
-                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp293_, "finish_name") == 0) {
-                                                                                                                                                                                                                                                       ValaMethod* _tmp294_ = NULL;
-                                                                                                                                                                                                                                                       gchar** _tmp295_ = NULL;
-                                                                                                                                                                                                                                                       gint _tmp295__length1 = 0;
-                                                                                                                                                                                                                                                       const gchar* _tmp296_ = NULL;
-                                                                                                                                                                                                                                                       gchar* _tmp297_ = NULL;
+                                                                                                                                                                                                                                               gchar** _tmp293_ = NULL;
+                                                                                                                                                                                                                                               gint _tmp293__length1 = 0;
+                                                                                                                                                                                                                                               const gchar* _tmp294_ = NULL;
+                                                                                                                                                                                                                                               _tmp293_ = nv;
+                                                                                                                                                                                                                                               _tmp293__length1 = nv_length1;
+                                                                                                                                                                                                                                               _tmp294_ = _tmp293_[0];
+                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp294_, "finish_name") == 0) {
+                                                                                                                                                                                                                                                       ValaMethod* _tmp295_ = NULL;
+                                                                                                                                                                                                                                                       gchar** _tmp296_ = NULL;
+                                                                                                                                                                                                                                                       gint _tmp296__length1 = 0;
+                                                                                                                                                                                                                                                       const gchar* _tmp297_ = NULL;
                                                                                                                                                                                                                                                        gchar* _tmp298_ = NULL;
-                                                                                                                                                                                                                                                       _tmp294_ = m;
-                                                                                                                                                                                                                                                       _tmp295_ = nv;
-                                                                                                                                                                                                                                                       _tmp295__length1 = nv_length1;
-                                                                                                                                                                                                                                                       _tmp296_ = _tmp295_[1];
-                                                                                                                                                                                                                                                       _tmp297_ = vala_gidl_parser_eval (self, _tmp296_);
-                                                                                                                                                                                                                                                       _tmp298_ = _tmp297_;
-                                                                                                                                                                                                                                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp294_, "CCode", "finish_name", _tmp298_, NULL);
-                                                                                                                                                                                                                                                       _g_free0 (_tmp298_);
+                                                                                                                                                                                                                                                       gchar* _tmp299_ = NULL;
+                                                                                                                                                                                                                                                       _tmp295_ = m;
+                                                                                                                                                                                                                                                       _tmp296_ = nv;
+                                                                                                                                                                                                                                                       _tmp296__length1 = nv_length1;
+                                                                                                                                                                                                                                                       _tmp297_ = _tmp296_[1];
+                                                                                                                                                                                                                                                       _tmp298_ = vala_gidl_parser_eval (self, _tmp297_);
+                                                                                                                                                                                                                                                       _tmp299_ = _tmp298_;
+                                                                                                                                                                                                                                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp295_, "CCode", "finish_name", _tmp299_, NULL);
+                                                                                                                                                                                                                                                       _g_free0 (_tmp299_);
                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                       gchar** _tmp299_ = NULL;
-                                                                                                                                                                                                                                                       gint _tmp299__length1 = 0;
-                                                                                                                                                                                                                                                       const gchar* _tmp300_ = NULL;
-                                                                                                                                                                                                                                                       _tmp299_ = nv;
-                                                                                                                                                                                                                                                       _tmp299__length1 = nv_length1;
-                                                                                                                                                                                                                                                       _tmp300_ = _tmp299_[0];
-                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp300_, "async") == 0) {
-                                                                                                                                                                                                                                                               gchar** _tmp301_ = NULL;
-                                                                                                                                                                                                                                                               gint _tmp301__length1 = 0;
-                                                                                                                                                                                                                                                               const gchar* _tmp302_ = NULL;
-                                                                                                                                                                                                                                                               gchar* _tmp303_ = NULL;
+                                                                                                                                                                                                                                                       gchar** _tmp300_ = NULL;
+                                                                                                                                                                                                                                                       gint _tmp300__length1 = 0;
+                                                                                                                                                                                                                                                       const gchar* _tmp301_ = NULL;
+                                                                                                                                                                                                                                                       _tmp300_ = nv;
+                                                                                                                                                                                                                                                       _tmp300__length1 = nv_length1;
+                                                                                                                                                                                                                                                       _tmp301_ = _tmp300_[0];
+                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp301_, "async") == 0) {
+                                                                                                                                                                                                                                                               gchar** _tmp302_ = NULL;
+                                                                                                                                                                                                                                                               gint _tmp302__length1 = 0;
+                                                                                                                                                                                                                                                               const gchar* _tmp303_ = NULL;
                                                                                                                                                                                                                                                                gchar* _tmp304_ = NULL;
-                                                                                                                                                                                                                                                               gboolean _tmp305_ = FALSE;
-                                                                                                                                                                                                                                                               _tmp301_ = nv;
-                                                                                                                                                                                                                                                               _tmp301__length1 = nv_length1;
-                                                                                                                                                                                                                                                               _tmp302_ = _tmp301_[1];
-                                                                                                                                                                                                                                                               _tmp303_ = vala_gidl_parser_eval (self, _tmp302_);
-                                                                                                                                                                                                                                                               _tmp304_ = _tmp303_;
-                                                                                                                                                                                                                                                               _tmp305_ = g_strcmp0 (_tmp304_, "1") == 0;
-                                                                                                                                                                                                                                                               _g_free0 (_tmp304_);
-                                                                                                                                                                                                                                                               if (_tmp305_) {
-                                                                                                                                                                                                                                                                       ValaMethod* _tmp306_ = NULL;
-                                                                                                                                                                                                                                                                       _tmp306_ = m;
-                                                                                                                                                                                                                                                                       vala_method_set_coroutine (_tmp306_, TRUE);
+                                                                                                                                                                                                                                                               gchar* _tmp305_ = NULL;
+                                                                                                                                                                                                                                                               gboolean _tmp306_ = FALSE;
+                                                                                                                                                                                                                                                               _tmp302_ = nv;
+                                                                                                                                                                                                                                                               _tmp302__length1 = nv_length1;
+                                                                                                                                                                                                                                                               _tmp303_ = _tmp302_[1];
+                                                                                                                                                                                                                                                               _tmp304_ = vala_gidl_parser_eval (self, _tmp303_);
+                                                                                                                                                                                                                                                               _tmp305_ = _tmp304_;
+                                                                                                                                                                                                                                                               _tmp306_ = g_strcmp0 (_tmp305_, "1") == 0;
+                                                                                                                                                                                                                                                               _g_free0 (_tmp305_);
+                                                                                                                                                                                                                                                               if (_tmp306_) {
+                                                                                                                                                                                                                                                                       ValaMethod* _tmp307_ = NULL;
+                                                                                                                                                                                                                                                                       _tmp307_ = m;
+                                                                                                                                                                                                                                                                       vala_method_set_coroutine (_tmp307_, TRUE);
                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                               gchar** _tmp307_ = NULL;
-                                                                                                                                                                                                                                                               gint _tmp307__length1 = 0;
-                                                                                                                                                                                                                                                               const gchar* _tmp308_ = NULL;
-                                                                                                                                                                                                                                                               _tmp307_ = nv;
-                                                                                                                                                                                                                                                               _tmp307__length1 = nv_length1;
-                                                                                                                                                                                                                                                               _tmp308_ = _tmp307_[0];
-                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp308_, "parent") == 0) {
-                                                                                                                                                                                                                                                                       gchar** _tmp309_ = NULL;
-                                                                                                                                                                                                                                                                       gint _tmp309__length1 = 0;
-                                                                                                                                                                                                                                                                       const gchar* _tmp310_ = NULL;
-                                                                                                                                                                                                                                                                       gchar* _tmp311_ = NULL;
+                                                                                                                                                                                                                                                               gchar** _tmp308_ = NULL;
+                                                                                                                                                                                                                                                               gint _tmp308__length1 = 0;
+                                                                                                                                                                                                                                                               const gchar* _tmp309_ = NULL;
+                                                                                                                                                                                                                                                               _tmp308_ = nv;
+                                                                                                                                                                                                                                                               _tmp308__length1 = nv_length1;
+                                                                                                                                                                                                                                                               _tmp309_ = _tmp308_[0];
+                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp309_, "parent") == 0) {
+                                                                                                                                                                                                                                                                       gchar** _tmp310_ = NULL;
+                                                                                                                                                                                                                                                                       gint _tmp310__length1 = 0;
+                                                                                                                                                                                                                                                                       const gchar* _tmp311_ = NULL;
                                                                                                                                                                                                                                                                        gchar* _tmp312_ = NULL;
-                                                                                                                                                                                                                                                                       ValaSymbol* _tmp313_ = NULL;
-                                                                                                                                                                                                                                                                       gchar* prefix = NULL;
+                                                                                                                                                                                                                                                                       gchar* _tmp313_ = NULL;
                                                                                                                                                                                                                                                                        ValaSymbol* _tmp314_ = NULL;
-                                                                                                                                                                                                                                                                       gchar* _tmp315_ = NULL;
-                                                                                                                                                                                                                                                                       const gchar* _tmp316_ = NULL;
+                                                                                                                                                                                                                                                                       gchar* prefix = NULL;
+                                                                                                                                                                                                                                                                       ValaSymbol* _tmp315_ = NULL;
+                                                                                                                                                                                                                                                                       gchar* _tmp316_ = NULL;
                                                                                                                                                                                                                                                                        const gchar* _tmp317_ = NULL;
-                                                                                                                                                                                                                                                                       gboolean _tmp318_ = FALSE;
-                                                                                                                                                                                                                                                                       _tmp309_ = nv;
-                                                                                                                                                                                                                                                                       _tmp309__length1 = nv_length1;
-                                                                                                                                                                                                                                                                       _tmp310_ = _tmp309_[1];
-                                                                                                                                                                                                                                                                       _tmp311_ = vala_gidl_parser_eval (self, _tmp310_);
-                                                                                                                                                                                                                                                                       _tmp312_ = _tmp311_;
-                                                                                                                                                                                                                                                                       _tmp313_ = vala_gidl_parser_get_container_from_name (self, _tmp312_);
+                                                                                                                                                                                                                                                                       const gchar* _tmp318_ = NULL;
+                                                                                                                                                                                                                                                                       gboolean _tmp319_ = FALSE;
+                                                                                                                                                                                                                                                                       _tmp310_ = nv;
+                                                                                                                                                                                                                                                                       _tmp310__length1 = nv_length1;
+                                                                                                                                                                                                                                                                       _tmp311_ = _tmp310_[1];
+                                                                                                                                                                                                                                                                       _tmp312_ = vala_gidl_parser_eval (self, _tmp311_);
+                                                                                                                                                                                                                                                                       _tmp313_ = _tmp312_;
+                                                                                                                                                                                                                                                                       _tmp314_ = vala_gidl_parser_get_container_from_name (self, _tmp313_);
                                                                                                                                                                                                                                                                        _vala_code_node_unref0 (container);
-                                                                                                                                                                                                                                                                       container = _tmp313_;
-                                                                                                                                                                                                                                                                       _g_free0 (_tmp312_);
-                                                                                                                                                                                                                                                                       _tmp314_ = container;
-                                                                                                                                                                                                                                                                       _tmp315_ = vala_gidl_parser_get_lower_case_cprefix (self, _tmp314_);
-                                                                                                                                                                                                                                                                       prefix = _tmp315_;
-                                                                                                                                                                                                                                                                       _tmp316_ = symbol;
-                                                                                                                                                                                                                                                                       _tmp317_ = prefix;
-                                                                                                                                                                                                                                                                       _tmp318_ = g_str_has_prefix (_tmp316_, _tmp317_);
-                                                                                                                                                                                                                                                                       if (_tmp318_) {
-                                                                                                                                                                                                                                                                               ValaMethod* _tmp319_ = NULL;
-                                                                                                                                                                                                                                                                               const gchar* _tmp320_ = NULL;
+                                                                                                                                                                                                                                                                       container = _tmp314_;
+                                                                                                                                                                                                                                                                       _g_free0 (_tmp313_);
+                                                                                                                                                                                                                                                                       _tmp315_ = container;
+                                                                                                                                                                                                                                                                       _tmp316_ = vala_gidl_parser_get_lower_case_cprefix (self, _tmp315_);
+                                                                                                                                                                                                                                                                       prefix = _tmp316_;
+                                                                                                                                                                                                                                                                       _tmp317_ = symbol;
+                                                                                                                                                                                                                                                                       _tmp318_ = prefix;
+                                                                                                                                                                                                                                                                       _tmp319_ = g_str_has_prefix (_tmp317_, _tmp318_);
+                                                                                                                                                                                                                                                                       if (_tmp319_) {
+                                                                                                                                                                                                                                                                               ValaMethod* _tmp320_ = NULL;
                                                                                                                                                                                                                                                                                const gchar* _tmp321_ = NULL;
-                                                                                                                                                                                                                                                                               gint _tmp322_ = 0;
+                                                                                                                                                                                                                                                                               const gchar* _tmp322_ = NULL;
                                                                                                                                                                                                                                                                                gint _tmp323_ = 0;
-                                                                                                                                                                                                                                                                               gchar* _tmp324_ = NULL;
+                                                                                                                                                                                                                                                                               gint _tmp324_ = 0;
                                                                                                                                                                                                                                                                                gchar* _tmp325_ = NULL;
-                                                                                                                                                                                                                                                                               _tmp319_ = m;
-                                                                                                                                                                                                                                                                               _tmp320_ = symbol;
-                                                                                                                                                                                                                                                                               _tmp321_ = prefix;
-                                                                                                                                                                                                                                                                               _tmp322_ = strlen (_tmp321_);
-                                                                                                                                                                                                                                                                               _tmp323_ = _tmp322_;
-                                                                                                                                                                                                                                                                               _tmp324_ = string_substring (_tmp320_, (glong) _tmp323_, (glong) (-1));
-                                                                                                                                                                                                                                                                               _tmp325_ = _tmp324_;
-                                                                                                                                                                                                                                                                               vala_symbol_set_name ((ValaSymbol*) _tmp319_, _tmp325_);
-                                                                                                                                                                                                                                                                               _g_free0 (_tmp325_);
+                                                                                                                                                                                                                                                                               gchar* _tmp326_ = NULL;
+                                                                                                                                                                                                                                                                               _tmp320_ = m;
+                                                                                                                                                                                                                                                                               _tmp321_ = symbol;
+                                                                                                                                                                                                                                                                               _tmp322_ = prefix;
+                                                                                                                                                                                                                                                                               _tmp323_ = strlen (_tmp322_);
+                                                                                                                                                                                                                                                                               _tmp324_ = _tmp323_;
+                                                                                                                                                                                                                                                                               _tmp325_ = string_substring (_tmp321_, (glong) _tmp324_, (glong) (-1));
+                                                                                                                                                                                                                                                                               _tmp326_ = _tmp325_;
+                                                                                                                                                                                                                                                                               vala_symbol_set_name ((ValaSymbol*) _tmp320_, _tmp326_);
+                                                                                                                                                                                                                                                                               _g_free0 (_tmp326_);
                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                        _g_free0 (prefix);
                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                       gchar** _tmp326_ = NULL;
-                                                                                                                                                                                                                                                                       gint _tmp326__length1 = 0;
-                                                                                                                                                                                                                                                                       const gchar* _tmp327_ = NULL;
-                                                                                                                                                                                                                                                                       _tmp326_ = nv;
-                                                                                                                                                                                                                                                                       _tmp326__length1 = nv_length1;
-                                                                                                                                                                                                                                                                       _tmp327_ = _tmp326_[0];
-                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp327_, "experimental") == 0) {
-                                                                                                                                                                                                                                                                               gchar** _tmp328_ = NULL;
-                                                                                                                                                                                                                                                                               gint _tmp328__length1 = 0;
-                                                                                                                                                                                                                                                                               const gchar* _tmp329_ = NULL;
-                                                                                                                                                                                                                                                                               gchar* _tmp330_ = NULL;
+                                                                                                                                                                                                                                                                       gchar** _tmp327_ = NULL;
+                                                                                                                                                                                                                                                                       gint _tmp327__length1 = 0;
+                                                                                                                                                                                                                                                                       const gchar* _tmp328_ = NULL;
+                                                                                                                                                                                                                                                                       _tmp327_ = nv;
+                                                                                                                                                                                                                                                                       _tmp327__length1 = nv_length1;
+                                                                                                                                                                                                                                                                       _tmp328_ = _tmp327_[0];
+                                                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp328_, "experimental") == 0) {
+                                                                                                                                                                                                                                                                               gchar** _tmp329_ = NULL;
+                                                                                                                                                                                                                                                                               gint _tmp329__length1 = 0;
+                                                                                                                                                                                                                                                                               const gchar* _tmp330_ = NULL;
                                                                                                                                                                                                                                                                                gchar* _tmp331_ = NULL;
-                                                                                                                                                                                                                                                                               gboolean _tmp332_ = FALSE;
-                                                                                                                                                                                                                                                                               _tmp328_ = nv;
-                                                                                                                                                                                                                                                                               _tmp328__length1 = nv_length1;
-                                                                                                                                                                                                                                                                               _tmp329_ = _tmp328_[1];
-                                                                                                                                                                                                                                                                               _tmp330_ = vala_gidl_parser_eval (self, _tmp329_);
-                                                                                                                                                                                                                                                                               _tmp331_ = _tmp330_;
-                                                                                                                                                                                                                                                                               _tmp332_ = g_strcmp0 (_tmp331_, "1") == 0;
-                                                                                                                                                                                                                                                                               _g_free0 (_tmp331_);
-                                                                                                                                                                                                                                                                               if (_tmp332_) {
-                                                                                                                                                                                                                                                                                       ValaMethod* _tmp333_ = NULL;
-                                                                                                                                                                                                                                                                                       _tmp333_ = m;
-                                                                                                                                                                                                                                                                                       vala_code_node_set_attribute ((ValaCodeNode*) _tmp333_, "Experimental", TRUE, NULL);
+                                                                                                                                                                                                                                                                               gchar* _tmp332_ = NULL;
+                                                                                                                                                                                                                                                                               gboolean _tmp333_ = FALSE;
+                                                                                                                                                                                                                                                                               _tmp329_ = nv;
+                                                                                                                                                                                                                                                                               _tmp329__length1 = nv_length1;
+                                                                                                                                                                                                                                                                               _tmp330_ = _tmp329_[1];
+                                                                                                                                                                                                                                                                               _tmp331_ = vala_gidl_parser_eval (self, _tmp330_);
+                                                                                                                                                                                                                                                                               _tmp332_ = _tmp331_;
+                                                                                                                                                                                                                                                                               _tmp333_ = g_strcmp0 (_tmp332_, "1") == 0;
+                                                                                                                                                                                                                                                                               _g_free0 (_tmp332_);
+                                                                                                                                                                                                                                                                               if (_tmp333_) {
+                                                                                                                                                                                                                                                                                       ValaMethod* _tmp334_ = NULL;
+                                                                                                                                                                                                                                                                                       _tmp334_ = m;
+                                                                                                                                                                                                                                                                                       vala_code_node_set_attribute ((ValaCodeNode*) _tmp334_, "Experimental", TRUE, NULL);
                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                                               gchar** _tmp334_ = NULL;
-                                                                                                                                                                                                                                                                               gint _tmp334__length1 = 0;
-                                                                                                                                                                                                                                                                               const gchar* _tmp335_ = NULL;
-                                                                                                                                                                                                                                                                               _tmp334_ = nv;
-                                                                                                                                                                                                                                                                               _tmp334__length1 = nv_length1;
-                                                                                                                                                                                                                                                                               _tmp335_ = _tmp334_[0];
-                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp335_, "simple_generics") == 0) {
-                                                                                                                                                                                                                                                                                       gchar** _tmp336_ = NULL;
-                                                                                                                                                                                                                                                                                       gint _tmp336__length1 = 0;
-                                                                                                                                                                                                                                                                                       const gchar* _tmp337_ = NULL;
-                                                                                                                                                                                                                                                                                       gchar* _tmp338_ = NULL;
+                                                                                                                                                                                                                                                                               gchar** _tmp335_ = NULL;
+                                                                                                                                                                                                                                                                               gint _tmp335__length1 = 0;
+                                                                                                                                                                                                                                                                               const gchar* _tmp336_ = NULL;
+                                                                                                                                                                                                                                                                               _tmp335_ = nv;
+                                                                                                                                                                                                                                                                               _tmp335__length1 = nv_length1;
+                                                                                                                                                                                                                                                                               _tmp336_ = _tmp335_[0];
+                                                                                                                                                                                                                                                                               if (g_strcmp0 (_tmp336_, "simple_generics") == 0) {
+                                                                                                                                                                                                                                                                                       gchar** _tmp337_ = NULL;
+                                                                                                                                                                                                                                                                                       gint _tmp337__length1 = 0;
+                                                                                                                                                                                                                                                                                       const gchar* _tmp338_ = NULL;
                                                                                                                                                                                                                                                                                        gchar* _tmp339_ = NULL;
-                                                                                                                                                                                                                                                                                       gboolean _tmp340_ = FALSE;
-                                                                                                                                                                                                                                                                                       _tmp336_ = nv;
-                                                                                                                                                                                                                                                                                       _tmp336__length1 = nv_length1;
-                                                                                                                                                                                                                                                                                       _tmp337_ = _tmp336_[1];
-                                                                                                                                                                                                                                                                                       _tmp338_ = vala_gidl_parser_eval (self, _tmp337_);
-                                                                                                                                                                                                                                                                                       _tmp339_ = _tmp338_;
-                                                                                                                                                                                                                                                                                       _tmp340_ = g_strcmp0 (_tmp339_, "1") == 0;
-                                                                                                                                                                                                                                                                                       _g_free0 (_tmp339_);
-                                                                                                                                                                                                                                                                                       if (_tmp340_) {
-                                                                                                                                                                                                                                                                                               ValaMethod* _tmp341_ = NULL;
-                                                                                                                                                                                                                                                                                               _tmp341_ = m;
-                                                                                                                                                                                                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp341_, "CCode", "simple_generics", TRUE, NULL);
+                                                                                                                                                                                                                                                                                       gchar* _tmp340_ = NULL;
+                                                                                                                                                                                                                                                                                       gboolean _tmp341_ = FALSE;
+                                                                                                                                                                                                                                                                                       _tmp337_ = nv;
+                                                                                                                                                                                                                                                                                       _tmp337__length1 = nv_length1;
+                                                                                                                                                                                                                                                                                       _tmp338_ = _tmp337_[1];
+                                                                                                                                                                                                                                                                                       _tmp339_ = vala_gidl_parser_eval (self, _tmp338_);
+                                                                                                                                                                                                                                                                                       _tmp340_ = _tmp339_;
+                                                                                                                                                                                                                                                                                       _tmp341_ = g_strcmp0 (_tmp340_, "1") == 0;
+                                                                                                                                                                                                                                                                                       _g_free0 (_tmp340_);
+                                                                                                                                                                                                                                                                                       if (_tmp341_) {
+                                                                                                                                                                                                                                                                                               ValaMethod* _tmp342_ = NULL;
+                                                                                                                                                                                                                                                                                               _tmp342_ = m;
+                                                                                                                                                                                                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp342_, "CCode", "simple_generics", TRUE, NULL);
                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                        }
@@ -14446,40 +14470,40 @@ static ValaMethod* vala_gidl_parser_create_method (ValaGIdlParser* self, const g
        first = TRUE;
        last_param = NULL;
        last_param_type = NULL;
-       _tmp342_ = parameters;
+       _tmp343_ = parameters;
        {
                GList* param_collection = NULL;
                GList* param_it = NULL;
-               param_collection = _tmp342_;
+               param_collection = _tmp343_;
                for (param_it = param_collection; param_it != NULL; param_it = param_it->next) {
                        GIdlNodeParam* param = NULL;
                        param = (GIdlNodeParam*) param_it->data;
                        {
                                GIdlNode* param_node = NULL;
-                               GIdlNodeParam* _tmp343_ = NULL;
-                               gboolean _tmp344_ = FALSE;
-                               gboolean _tmp404_ = FALSE;
-                               GIdlNodeParam* _tmp405_ = NULL;
-                               GIdlNodeType* _tmp406_ = NULL;
-                               const gchar* _tmp407_ = NULL;
-                               gboolean _tmp415_ = FALSE;
+                               GIdlNodeParam* _tmp344_ = NULL;
+                               gboolean _tmp345_ = FALSE;
+                               gboolean _tmp405_ = FALSE;
+                               GIdlNodeParam* _tmp406_ = NULL;
+                               GIdlNodeType* _tmp407_ = NULL;
+                               const gchar* _tmp408_ = NULL;
                                gboolean _tmp416_ = FALSE;
+                               gboolean _tmp417_ = FALSE;
                                gchar* param_name = NULL;
-                               GIdlNode* _tmp425_ = NULL;
-                               const gchar* _tmp426_ = NULL;
-                               gchar* _tmp427_ = NULL;
-                               const gchar* _tmp428_ = NULL;
+                               GIdlNode* _tmp426_ = NULL;
+                               const gchar* _tmp427_ = NULL;
+                               gchar* _tmp428_ = NULL;
+                               const gchar* _tmp429_ = NULL;
                                ValaParameterDirection direction = 0;
                                ValaDataType* param_type = NULL;
-                               GIdlNodeParam* _tmp432_ = NULL;
-                               ValaParameterDirection _tmp433_ = 0;
-                               ValaDataType* _tmp434_ = NULL;
+                               GIdlNodeParam* _tmp433_ = NULL;
+                               ValaParameterDirection _tmp434_ = 0;
+                               ValaDataType* _tmp435_ = NULL;
                                ValaParameter* p = NULL;
-                               const gchar* _tmp435_ = NULL;
-                               ValaDataType* _tmp436_ = NULL;
-                               ValaParameter* _tmp437_ = NULL;
+                               const gchar* _tmp436_ = NULL;
+                               ValaDataType* _tmp437_ = NULL;
                                ValaParameter* _tmp438_ = NULL;
-                               ValaParameterDirection _tmp439_ = 0;
+                               ValaParameter* _tmp439_ = NULL;
+                               ValaParameterDirection _tmp440_ = 0;
                                gboolean hide_param = FALSE;
                                gboolean show_param = FALSE;
                                gboolean set_array_length_pos = FALSE;
@@ -14488,286 +14512,286 @@ static ValaMethod* vala_gidl_parser_create_method (ValaGIdlParser* self, const g
                                gdouble delegate_target_pos = 0.0;
                                gboolean array_requested = FALSE;
                                gboolean out_requested = FALSE;
-                               const gchar* _tmp440_ = NULL;
-                               GIdlNode* _tmp441_ = NULL;
-                               const gchar* _tmp442_ = NULL;
-                               gchar* _tmp443_ = NULL;
+                               const gchar* _tmp441_ = NULL;
+                               GIdlNode* _tmp442_ = NULL;
+                               const gchar* _tmp443_ = NULL;
                                gchar* _tmp444_ = NULL;
-                               gint _tmp445_ = 0;
-                               gchar** _tmp446_ = NULL;
+                               gchar* _tmp445_ = NULL;
+                               gint _tmp446_ = 0;
                                gchar** _tmp447_ = NULL;
-                               gint _tmp447__length1 = 0;
-                               gboolean _tmp713_ = FALSE;
-                               ValaParameter* _tmp714_ = NULL;
-                               gboolean _tmp737_ = FALSE;
-                               gboolean _tmp738_ = FALSE;
-                               ValaParameter* _tmp748_ = NULL;
-                               ValaParameter* _tmp749_ = NULL;
-                               ValaDataType* _tmp750_ = NULL;
-                               ValaDataType* _tmp751_ = NULL;
-                               _tmp343_ = param;
-                               param_node = (GIdlNode*) _tmp343_;
-                               _tmp344_ = first;
-                               if (_tmp344_) {
-                                       gboolean _tmp345_ = FALSE;
+                               gchar** _tmp448_ = NULL;
+                               gint _tmp448__length1 = 0;
+                               gboolean _tmp715_ = FALSE;
+                               ValaParameter* _tmp716_ = NULL;
+                               gboolean _tmp740_ = FALSE;
+                               gboolean _tmp741_ = FALSE;
+                               ValaParameter* _tmp751_ = NULL;
+                               ValaParameter* _tmp752_ = NULL;
+                               ValaDataType* _tmp753_ = NULL;
+                               ValaDataType* _tmp754_ = NULL;
+                               _tmp344_ = param;
+                               param_node = (GIdlNode*) _tmp344_;
+                               _tmp345_ = first;
+                               if (_tmp345_) {
                                        gboolean _tmp346_ = FALSE;
                                        gboolean _tmp347_ = FALSE;
-                                       ValaMethod* _tmp348_ = NULL;
+                                       gboolean _tmp348_ = FALSE;
+                                       ValaMethod* _tmp349_ = NULL;
                                        first = FALSE;
-                                       _tmp348_ = m;
-                                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp348_, VALA_TYPE_CREATION_METHOD)) {
-                                               ValaTypeSymbol* _tmp349_ = NULL;
-                                               _tmp349_ = self->priv->current_data_type;
-                                               _tmp347_ = _tmp349_ != NULL;
+                                       _tmp349_ = m;
+                                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp349_, VALA_TYPE_CREATION_METHOD)) {
+                                               ValaTypeSymbol* _tmp350_ = NULL;
+                                               _tmp350_ = self->priv->current_data_type;
+                                               _tmp348_ = _tmp350_ != NULL;
                                        } else {
-                                               _tmp347_ = FALSE;
+                                               _tmp348_ = FALSE;
                                        }
-                                       if (_tmp347_) {
-                                               GIdlNodeParam* _tmp350_ = NULL;
-                                               GIdlNodeType* _tmp351_ = NULL;
-                                               gboolean _tmp352_ = FALSE;
-                                               _tmp350_ = param;
-                                               _tmp351_ = _tmp350_->type;
-                                               _tmp352_ = _tmp351_->is_interface;
-                                               _tmp346_ = _tmp352_;
+                                       if (_tmp348_) {
+                                               GIdlNodeParam* _tmp351_ = NULL;
+                                               GIdlNodeType* _tmp352_ = NULL;
+                                               gboolean _tmp353_ = FALSE;
+                                               _tmp351_ = param;
+                                               _tmp352_ = _tmp351_->type;
+                                               _tmp353_ = _tmp352_->is_interface;
+                                               _tmp347_ = _tmp353_;
                                        } else {
-                                               _tmp346_ = FALSE;
+                                               _tmp347_ = FALSE;
                                        }
-                                       if (_tmp346_) {
-                                               gboolean _tmp353_ = FALSE;
-                                               GIdlNode* _tmp354_ = NULL;
-                                               const gchar* _tmp355_ = NULL;
-                                               _tmp354_ = param_node;
-                                               _tmp355_ = _tmp354_->name;
-                                               if (g_strcmp0 (_tmp355_, "self") == 0) {
-                                                       _tmp353_ = TRUE;
+                                       if (_tmp347_) {
+                                               gboolean _tmp354_ = FALSE;
+                                               GIdlNode* _tmp355_ = NULL;
+                                               const gchar* _tmp356_ = NULL;
+                                               _tmp355_ = param_node;
+                                               _tmp356_ = _tmp355_->name;
+                                               if (g_strcmp0 (_tmp356_, "self") == 0) {
+                                                       _tmp354_ = TRUE;
                                                } else {
-                                                       GIdlNodeParam* _tmp356_ = NULL;
-                                                       GIdlNodeType* _tmp357_ = NULL;
-                                                       const gchar* _tmp358_ = NULL;
-                                                       ValaTypeSymbol* _tmp359_ = NULL;
-                                                       gchar* _tmp360_ = NULL;
+                                                       GIdlNodeParam* _tmp357_ = NULL;
+                                                       GIdlNodeType* _tmp358_ = NULL;
+                                                       const gchar* _tmp359_ = NULL;
+                                                       ValaTypeSymbol* _tmp360_ = NULL;
                                                        gchar* _tmp361_ = NULL;
-                                                       gboolean _tmp362_ = FALSE;
-                                                       _tmp356_ = param;
-                                                       _tmp357_ = _tmp356_->type;
-                                                       _tmp358_ = _tmp357_->interface;
-                                                       _tmp359_ = self->priv->current_data_type;
-                                                       _tmp360_ = vala_gidl_parser_get_cname (self, (ValaSymbol*) _tmp359_, NULL);
-                                                       _tmp361_ = _tmp360_;
-                                                       _tmp362_ = g_str_has_suffix (_tmp358_, _tmp361_);
-                                                       _tmp353_ = _tmp362_;
-                                                       _g_free0 (_tmp361_);
+                                                       gchar* _tmp362_ = NULL;
+                                                       gboolean _tmp363_ = FALSE;
+                                                       _tmp357_ = param;
+                                                       _tmp358_ = _tmp357_->type;
+                                                       _tmp359_ = _tmp358_->interface;
+                                                       _tmp360_ = self->priv->current_data_type;
+                                                       _tmp361_ = vala_gidl_parser_get_cname (self, (ValaSymbol*) _tmp360_, NULL);
+                                                       _tmp362_ = _tmp361_;
+                                                       _tmp363_ = g_str_has_suffix (_tmp359_, _tmp362_);
+                                                       _tmp354_ = _tmp363_;
+                                                       _g_free0 (_tmp362_);
                                                }
-                                               _tmp345_ = _tmp353_;
+                                               _tmp346_ = _tmp354_;
                                        } else {
-                                               _tmp345_ = FALSE;
+                                               _tmp346_ = FALSE;
                                        }
-                                       if (_tmp345_) {
+                                       if (_tmp346_) {
                                                continue;
                                        } else {
-                                               gboolean _tmp363_ = FALSE;
                                                gboolean _tmp364_ = FALSE;
                                                gboolean _tmp365_ = FALSE;
-                                               ValaMethod* _tmp366_ = NULL;
-                                               _tmp366_ = m;
-                                               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp366_, VALA_TYPE_CREATION_METHOD)) {
-                                                       ValaTypeSymbol* _tmp367_ = NULL;
-                                                       _tmp367_ = self->priv->current_data_type;
-                                                       _tmp365_ = _tmp367_ != NULL;
+                                               gboolean _tmp366_ = FALSE;
+                                               ValaMethod* _tmp367_ = NULL;
+                                               _tmp367_ = m;
+                                               if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp367_, VALA_TYPE_CREATION_METHOD)) {
+                                                       ValaTypeSymbol* _tmp368_ = NULL;
+                                                       _tmp368_ = self->priv->current_data_type;
+                                                       _tmp366_ = _tmp368_ != NULL;
                                                } else {
-                                                       _tmp365_ = FALSE;
+                                                       _tmp366_ = FALSE;
                                                }
-                                               if (_tmp365_) {
-                                                       GIdlNodeParam* _tmp368_ = NULL;
-                                                       GIdlNodeType* _tmp369_ = NULL;
-                                                       gboolean _tmp370_ = FALSE;
-                                                       _tmp368_ = param;
-                                                       _tmp369_ = _tmp368_->type;
-                                                       _tmp370_ = _tmp369_->is_interface;
-                                                       _tmp364_ = _tmp370_;
+                                               if (_tmp366_) {
+                                                       GIdlNodeParam* _tmp369_ = NULL;
+                                                       GIdlNodeType* _tmp370_ = NULL;
+                                                       gboolean _tmp371_ = FALSE;
+                                                       _tmp369_ = param;
+                                                       _tmp370_ = _tmp369_->type;
+                                                       _tmp371_ = _tmp370_->is_interface;
+                                                       _tmp365_ = _tmp371_;
                                                } else {
-                                                       _tmp364_ = FALSE;
+                                                       _tmp365_ = FALSE;
                                                }
-                                               if (_tmp364_) {
-                                                       gboolean _tmp371_ = FALSE;
-                                                       GIdlNode* _tmp372_ = NULL;
-                                                       const gchar* _tmp373_ = NULL;
-                                                       _tmp372_ = param_node;
-                                                       _tmp373_ = _tmp372_->name;
-                                                       if (g_strcmp0 (_tmp373_, "klass") == 0) {
-                                                               _tmp371_ = TRUE;
+                                               if (_tmp365_) {
+                                                       gboolean _tmp372_ = FALSE;
+                                                       GIdlNode* _tmp373_ = NULL;
+                                                       const gchar* _tmp374_ = NULL;
+                                                       _tmp373_ = param_node;
+                                                       _tmp374_ = _tmp373_->name;
+                                                       if (g_strcmp0 (_tmp374_, "klass") == 0) {
+                                                               _tmp372_ = TRUE;
                                                        } else {
-                                                               GIdlNodeParam* _tmp374_ = NULL;
-                                                               GIdlNodeType* _tmp375_ = NULL;
-                                                               const gchar* _tmp376_ = NULL;
-                                                               ValaTypeSymbol* _tmp377_ = NULL;
-                                                               gchar* _tmp378_ = NULL;
+                                                               GIdlNodeParam* _tmp375_ = NULL;
+                                                               GIdlNodeType* _tmp376_ = NULL;
+                                                               const gchar* _tmp377_ = NULL;
+                                                               ValaTypeSymbol* _tmp378_ = NULL;
                                                                gchar* _tmp379_ = NULL;
                                                                gchar* _tmp380_ = NULL;
                                                                gchar* _tmp381_ = NULL;
-                                                               gboolean _tmp382_ = FALSE;
-                                                               _tmp374_ = param;
-                                                               _tmp375_ = _tmp374_->type;
-                                                               _tmp376_ = _tmp375_->interface;
-                                                               _tmp377_ = self->priv->current_data_type;
-                                                               _tmp378_ = vala_gidl_parser_get_cname (self, (ValaSymbol*) _tmp377_, NULL);
-                                                               _tmp379_ = _tmp378_;
-                                                               _tmp380_ = g_strdup_printf ("%sClass", _tmp379_);
-                                                               _tmp381_ = _tmp380_;
-                                                               _tmp382_ = g_str_has_suffix (_tmp376_, _tmp381_);
-                                                               _tmp371_ = _tmp382_;
-                                                               _g_free0 (_tmp381_);
-                                                               _g_free0 (_tmp379_);
+                                                               gchar* _tmp382_ = NULL;
+                                                               gboolean _tmp383_ = FALSE;
+                                                               _tmp375_ = param;
+                                                               _tmp376_ = _tmp375_->type;
+                                                               _tmp377_ = _tmp376_->interface;
+                                                               _tmp378_ = self->priv->current_data_type;
+                                                               _tmp379_ = vala_gidl_parser_get_cname (self, (ValaSymbol*) _tmp378_, NULL);
+                                                               _tmp380_ = _tmp379_;
+                                                               _tmp381_ = g_strdup_printf ("%sClass", _tmp380_);
+                                                               _tmp382_ = _tmp381_;
+                                                               _tmp383_ = g_str_has_suffix (_tmp377_, _tmp382_);
+                                                               _tmp372_ = _tmp383_;
+                                                               _g_free0 (_tmp382_);
+                                                               _g_free0 (_tmp380_);
                                                        }
-                                                       _tmp363_ = _tmp371_;
+                                                       _tmp364_ = _tmp372_;
                                                } else {
-                                                       _tmp363_ = FALSE;
+                                                       _tmp364_ = FALSE;
                                                }
-                                               if (_tmp363_) {
-                                                       ValaMethod* _tmp383_ = NULL;
+                                               if (_tmp364_) {
                                                        ValaMethod* _tmp384_ = NULL;
-                                                       const gchar* _tmp385_ = NULL;
+                                                       ValaMethod* _tmp385_ = NULL;
                                                        const gchar* _tmp386_ = NULL;
-                                                       gboolean _tmp387_ = FALSE;
-                                                       _tmp383_ = m;
-                                                       vala_method_set_binding (_tmp383_, VALA_MEMBER_BINDING_CLASS);
+                                                       const gchar* _tmp387_ = NULL;
+                                                       gboolean _tmp388_ = FALSE;
                                                        _tmp384_ = m;
-                                                       _tmp385_ = vala_symbol_get_name ((ValaSymbol*) _tmp384_);
-                                                       _tmp386_ = _tmp385_;
-                                                       _tmp387_ = g_str_has_prefix (_tmp386_, "class_");
-                                                       if (_tmp387_) {
-                                                               ValaMethod* _tmp388_ = NULL;
+                                                       vala_method_set_binding (_tmp384_, VALA_MEMBER_BINDING_CLASS);
+                                                       _tmp385_ = m;
+                                                       _tmp386_ = vala_symbol_get_name ((ValaSymbol*) _tmp385_);
+                                                       _tmp387_ = _tmp386_;
+                                                       _tmp388_ = g_str_has_prefix (_tmp387_, "class_");
+                                                       if (_tmp388_) {
                                                                ValaMethod* _tmp389_ = NULL;
-                                                               const gchar* _tmp390_ = NULL;
+                                                               ValaMethod* _tmp390_ = NULL;
                                                                const gchar* _tmp391_ = NULL;
-                                                               gint _tmp392_ = 0;
+                                                               const gchar* _tmp392_ = NULL;
                                                                gint _tmp393_ = 0;
-                                                               ValaMethod* _tmp394_ = NULL;
-                                                               const gchar* _tmp395_ = NULL;
+                                                               gint _tmp394_ = 0;
+                                                               ValaMethod* _tmp395_ = NULL;
                                                                const gchar* _tmp396_ = NULL;
-                                                               gint _tmp397_ = 0;
+                                                               const gchar* _tmp397_ = NULL;
                                                                gint _tmp398_ = 0;
                                                                gint _tmp399_ = 0;
                                                                gint _tmp400_ = 0;
-                                                               gchar* _tmp401_ = NULL;
+                                                               gint _tmp401_ = 0;
                                                                gchar* _tmp402_ = NULL;
-                                                               _tmp388_ = m;
+                                                               gchar* _tmp403_ = NULL;
                                                                _tmp389_ = m;
-                                                               _tmp390_ = vala_symbol_get_name ((ValaSymbol*) _tmp389_);
-                                                               _tmp391_ = _tmp390_;
-                                                               _tmp392_ = strlen ("class_");
-                                                               _tmp393_ = _tmp392_;
-                                                               _tmp394_ = m;
-                                                               _tmp395_ = vala_symbol_get_name ((ValaSymbol*) _tmp394_);
-                                                               _tmp396_ = _tmp395_;
-                                                               _tmp397_ = strlen (_tmp396_);
-                                                               _tmp398_ = _tmp397_;
-                                                               _tmp399_ = strlen ("class_");
-                                                               _tmp400_ = _tmp399_;
-                                                               _tmp401_ = string_substring (_tmp391_, (glong) _tmp393_, (glong) (_tmp398_ - _tmp400_));
-                                                               _tmp402_ = _tmp401_;
-                                                               vala_symbol_set_name ((ValaSymbol*) _tmp388_, _tmp402_);
-                                                               _g_free0 (_tmp402_);
+                                                               _tmp390_ = m;
+                                                               _tmp391_ = vala_symbol_get_name ((ValaSymbol*) _tmp390_);
+                                                               _tmp392_ = _tmp391_;
+                                                               _tmp393_ = strlen ("class_");
+                                                               _tmp394_ = _tmp393_;
+                                                               _tmp395_ = m;
+                                                               _tmp396_ = vala_symbol_get_name ((ValaSymbol*) _tmp395_);
+                                                               _tmp397_ = _tmp396_;
+                                                               _tmp398_ = strlen (_tmp397_);
+                                                               _tmp399_ = _tmp398_;
+                                                               _tmp400_ = strlen ("class_");
+                                                               _tmp401_ = _tmp400_;
+                                                               _tmp402_ = string_substring (_tmp392_, (glong) _tmp394_, (glong) (_tmp399_ - _tmp401_));
+                                                               _tmp403_ = _tmp402_;
+                                                               vala_symbol_set_name ((ValaSymbol*) _tmp389_, _tmp403_);
+                                                               _g_free0 (_tmp403_);
                                                        }
                                                        continue;
                                                } else {
-                                                       ValaMethod* _tmp403_ = NULL;
-                                                       _tmp403_ = m;
-                                                       vala_method_set_binding (_tmp403_, VALA_MEMBER_BINDING_STATIC);
+                                                       ValaMethod* _tmp404_ = NULL;
+                                                       _tmp404_ = m;
+                                                       vala_method_set_binding (_tmp404_, VALA_MEMBER_BINDING_STATIC);
                                                }
                                        }
                                }
-                               _tmp405_ = param;
-                               _tmp406_ = _tmp405_->type;
-                               _tmp407_ = _tmp406_->interface;
-                               if (g_strcmp0 (_tmp407_, "GAsyncReadyCallback") == 0) {
-                                       gboolean _tmp408_ = FALSE;
-                                       const gchar* _tmp409_ = NULL;
-                                       gboolean _tmp410_ = FALSE;
-                                       _tmp409_ = symbol;
-                                       _tmp410_ = g_str_has_suffix (_tmp409_, "_async");
-                                       if (_tmp410_) {
-                                               _tmp408_ = TRUE;
+                               _tmp406_ = param;
+                               _tmp407_ = _tmp406_->type;
+                               _tmp408_ = _tmp407_->interface;
+                               if (g_strcmp0 (_tmp408_, "GAsyncReadyCallback") == 0) {
+                                       gboolean _tmp409_ = FALSE;
+                                       const gchar* _tmp410_ = NULL;
+                                       gboolean _tmp411_ = FALSE;
+                                       _tmp410_ = symbol;
+                                       _tmp411_ = g_str_has_suffix (_tmp410_, "_async");
+                                       if (_tmp411_) {
+                                               _tmp409_ = TRUE;
                                        } else {
-                                               ValaMethod* _tmp411_ = NULL;
-                                               gboolean _tmp412_ = FALSE;
+                                               ValaMethod* _tmp412_ = NULL;
                                                gboolean _tmp413_ = FALSE;
-                                               _tmp411_ = m;
-                                               _tmp412_ = vala_method_get_coroutine (_tmp411_);
-                                               _tmp413_ = _tmp412_;
-                                               _tmp408_ = _tmp413_;
+                                               gboolean _tmp414_ = FALSE;
+                                               _tmp412_ = m;
+                                               _tmp413_ = vala_method_get_coroutine (_tmp412_);
+                                               _tmp414_ = _tmp413_;
+                                               _tmp409_ = _tmp414_;
                                        }
-                                       _tmp404_ = _tmp408_;
+                                       _tmp405_ = _tmp409_;
                                } else {
-                                       _tmp404_ = FALSE;
+                                       _tmp405_ = FALSE;
                                }
-                               if (_tmp404_) {
-                                       ValaMethod* _tmp414_ = NULL;
-                                       _tmp414_ = m;
-                                       vala_method_set_coroutine (_tmp414_, TRUE);
+                               if (_tmp405_) {
+                                       ValaMethod* _tmp415_ = NULL;
+                                       _tmp415_ = m;
+                                       vala_method_set_coroutine (_tmp415_, TRUE);
                                        continue;
                                }
-                               _tmp416_ = suppress_throws;
-                               if (_tmp416_ == FALSE) {
-                                       GIdlNodeParam* _tmp417_ = NULL;
-                                       gboolean _tmp418_ = FALSE;
-                                       _tmp417_ = param;
-                                       _tmp418_ = vala_gidl_parser_param_is_exception (self, _tmp417_);
-                                       _tmp415_ = _tmp418_;
+                               _tmp417_ = suppress_throws;
+                               if (_tmp417_ == FALSE) {
+                                       GIdlNodeParam* _tmp418_ = NULL;
+                                       gboolean _tmp419_ = FALSE;
+                                       _tmp418_ = param;
+                                       _tmp419_ = vala_gidl_parser_param_is_exception (self, _tmp418_);
+                                       _tmp416_ = _tmp419_;
                                } else {
-                                       _tmp415_ = FALSE;
+                                       _tmp416_ = FALSE;
                                }
-                               if (_tmp415_) {
-                                       const gchar* _tmp419_ = NULL;
-                                       _tmp419_ = error_types;
-                                       if (_tmp419_ == NULL) {
-                                               ValaMethod* _tmp420_ = NULL;
-                                               GIdlNodeParam* _tmp421_ = NULL;
-                                               GIdlNodeType* _tmp422_ = NULL;
-                                               ValaDataType* _tmp423_ = NULL;
+                               if (_tmp416_) {
+                                       const gchar* _tmp420_ = NULL;
+                                       _tmp420_ = error_types;
+                                       if (_tmp420_ == NULL) {
+                                               ValaMethod* _tmp421_ = NULL;
+                                               GIdlNodeParam* _tmp422_ = NULL;
+                                               GIdlNodeType* _tmp423_ = NULL;
                                                ValaDataType* _tmp424_ = NULL;
-                                               _tmp420_ = m;
-                                               _tmp421_ = param;
-                                               _tmp422_ = _tmp421_->type;
-                                               _tmp423_ = vala_gidl_parser_parse_type (self, _tmp422_, NULL);
-                                               _tmp424_ = _tmp423_;
-                                               vala_code_node_add_error_type ((ValaCodeNode*) _tmp420_, _tmp424_);
-                                               _vala_code_node_unref0 (_tmp424_);
+                                               ValaDataType* _tmp425_ = NULL;
+                                               _tmp421_ = m;
+                                               _tmp422_ = param;
+                                               _tmp423_ = _tmp422_->type;
+                                               _tmp424_ = vala_gidl_parser_parse_type (self, _tmp423_, NULL);
+                                               _tmp425_ = _tmp424_;
+                                               vala_code_node_add_error_type ((ValaCodeNode*) _tmp421_, _tmp425_);
+                                               _vala_code_node_unref0 (_tmp425_);
                                        }
                                        continue;
                                }
-                               _tmp425_ = param_node;
-                               _tmp426_ = _tmp425_->name;
-                               _tmp427_ = g_strdup (_tmp426_);
-                               param_name = _tmp427_;
-                               _tmp428_ = param_name;
-                               if (g_strcmp0 (_tmp428_, "result") == 0) {
-                                       gchar* _tmp429_ = NULL;
-                                       _tmp429_ = g_strdup ("_result");
+                               _tmp426_ = param_node;
+                               _tmp427_ = _tmp426_->name;
+                               _tmp428_ = g_strdup (_tmp427_);
+                               param_name = _tmp428_;
+                               _tmp429_ = param_name;
+                               if (g_strcmp0 (_tmp429_, "result") == 0) {
+                                       gchar* _tmp430_ = NULL;
+                                       _tmp430_ = g_strdup ("_result");
                                        _g_free0 (param_name);
-                                       param_name = _tmp429_;
+                                       param_name = _tmp430_;
                                } else {
-                                       const gchar* _tmp430_ = NULL;
-                                       _tmp430_ = param_name;
-                                       if (g_strcmp0 (_tmp430_, "string") == 0) {
-                                               gchar* _tmp431_ = NULL;
-                                               _tmp431_ = g_strdup ("str");
+                                       const gchar* _tmp431_ = NULL;
+                                       _tmp431_ = param_name;
+                                       if (g_strcmp0 (_tmp431_, "string") == 0) {
+                                               gchar* _tmp432_ = NULL;
+                                               _tmp432_ = g_strdup ("str");
                                                _g_free0 (param_name);
-                                               param_name = _tmp431_;
+                                               param_name = _tmp432_;
                                        }
                                }
-                               _tmp432_ = param;
-                               _tmp434_ = vala_gidl_parser_parse_param (self, _tmp432_, &_tmp433_);
-                               direction = _tmp433_;
-                               param_type = _tmp434_;
-                               _tmp435_ = param_name;
-                               _tmp436_ = param_type;
-                               _tmp437_ = vala_parameter_new (_tmp435_, _tmp436_, NULL);
-                               p = _tmp437_;
-                               _tmp438_ = p;
-                               _tmp439_ = direction;
-                               vala_parameter_set_direction (_tmp438_, _tmp439_);
+                               _tmp433_ = param;
+                               _tmp435_ = vala_gidl_parser_parse_param (self, _tmp433_, &_tmp434_);
+                               direction = _tmp434_;
+                               param_type = _tmp435_;
+                               _tmp436_ = param_name;
+                               _tmp437_ = param_type;
+                               _tmp438_ = vala_parameter_new (_tmp436_, _tmp437_, NULL);
+                               p = _tmp438_;
+                               _tmp439_ = p;
+                               _tmp440_ = direction;
+                               vala_parameter_set_direction (_tmp439_, _tmp440_);
                                hide_param = FALSE;
                                show_param = FALSE;
                                set_array_length_pos = FALSE;
@@ -14776,836 +14800,839 @@ static ValaMethod* vala_gidl_parser_create_method (ValaGIdlParser* self, const g
                                delegate_target_pos = (gdouble) 0;
                                array_requested = FALSE;
                                out_requested = FALSE;
-                               _tmp440_ = symbol;
-                               _tmp441_ = param_node;
-                               _tmp442_ = _tmp441_->name;
-                               _tmp443_ = g_strdup_printf ("%s.%s", _tmp440_, _tmp442_);
-                               _tmp444_ = _tmp443_;
-                               _tmp446_ = vala_gidl_parser_get_attributes (self, _tmp444_, &_tmp445_);
+                               _tmp441_ = symbol;
+                               _tmp442_ = param_node;
+                               _tmp443_ = _tmp442_->name;
+                               _tmp444_ = g_strdup_printf ("%s.%s", _tmp441_, _tmp443_);
+                               _tmp445_ = _tmp444_;
+                               _tmp447_ = vala_gidl_parser_get_attributes (self, _tmp445_, &_tmp446_);
                                attributes = (_vala_array_free (attributes, attributes_length1, (GDestroyNotify) g_free), NULL);
-                               attributes = _tmp446_;
-                               attributes_length1 = _tmp445_;
+                               attributes = _tmp447_;
+                               attributes_length1 = _tmp446_;
                                _attributes_size_ = attributes_length1;
-                               _g_free0 (_tmp444_);
-                               _tmp447_ = attributes;
-                               _tmp447__length1 = attributes_length1;
-                               if (_tmp447_ != NULL) {
-                                       gchar** _tmp448_ = NULL;
-                                       gint _tmp448__length1 = 0;
-                                       _tmp448_ = attributes;
-                                       _tmp448__length1 = attributes_length1;
+                               _g_free0 (_tmp445_);
+                               _tmp448_ = attributes;
+                               _tmp448__length1 = attributes_length1;
+                               if (_tmp448_ != NULL) {
+                                       gchar** _tmp449_ = NULL;
+                                       gint _tmp449__length1 = 0;
+                                       _tmp449_ = attributes;
+                                       _tmp449__length1 = attributes_length1;
                                        {
                                                gchar** attr_collection = NULL;
                                                gint attr_collection_length1 = 0;
                                                gint _attr_collection_size_ = 0;
                                                gint attr_it = 0;
-                                               attr_collection = _tmp448_;
-                                               attr_collection_length1 = _tmp448__length1;
-                                               for (attr_it = 0; attr_it < _tmp448__length1; attr_it = attr_it + 1) {
-                                                       gchar* _tmp449_ = NULL;
+                                               attr_collection = _tmp449_;
+                                               attr_collection_length1 = _tmp449__length1;
+                                               for (attr_it = 0; attr_it < _tmp449__length1; attr_it = attr_it + 1) {
+                                                       gchar* _tmp450_ = NULL;
                                                        gchar* attr = NULL;
-                                                       _tmp449_ = g_strdup (attr_collection[attr_it]);
-                                                       attr = _tmp449_;
+                                                       _tmp450_ = g_strdup (attr_collection[attr_it]);
+                                                       attr = _tmp450_;
                                                        {
                                                                gchar** nv = NULL;
-                                                               const gchar* _tmp450_ = NULL;
-                                                               gchar** _tmp451_ = NULL;
+                                                               const gchar* _tmp451_ = NULL;
                                                                gchar** _tmp452_ = NULL;
+                                                               gchar** _tmp453_ = NULL;
                                                                gint nv_length1 = 0;
                                                                gint _nv_size_ = 0;
-                                                               gchar** _tmp453_ = NULL;
-                                                               gint _tmp453__length1 = 0;
-                                                               const gchar* _tmp454_ = NULL;
-                                                               _tmp450_ = attr;
-                                                               _tmp452_ = _tmp451_ = g_strsplit (_tmp450_, "=", 2);
-                                                               nv = _tmp452_;
-                                                               nv_length1 = _vala_array_length (_tmp451_);
+                                                               gchar** _tmp454_ = NULL;
+                                                               gint _tmp454__length1 = 0;
+                                                               const gchar* _tmp455_ = NULL;
+                                                               _tmp451_ = attr;
+                                                               _tmp453_ = _tmp452_ = g_strsplit (_tmp451_, "=", 2);
+                                                               nv = _tmp453_;
+                                                               nv_length1 = _vala_array_length (_tmp452_);
                                                                _nv_size_ = nv_length1;
-                                                               _tmp453_ = nv;
-                                                               _tmp453__length1 = nv_length1;
-                                                               _tmp454_ = _tmp453_[0];
-                                                               if (g_strcmp0 (_tmp454_, "is_array") == 0) {
-                                                                       gchar** _tmp455_ = NULL;
-                                                                       gint _tmp455__length1 = 0;
-                                                                       const gchar* _tmp456_ = NULL;
-                                                                       gchar* _tmp457_ = NULL;
+                                                               _tmp454_ = nv;
+                                                               _tmp454__length1 = nv_length1;
+                                                               _tmp455_ = _tmp454_[0];
+                                                               if (g_strcmp0 (_tmp455_, "is_array") == 0) {
+                                                                       gchar** _tmp456_ = NULL;
+                                                                       gint _tmp456__length1 = 0;
+                                                                       const gchar* _tmp457_ = NULL;
                                                                        gchar* _tmp458_ = NULL;
-                                                                       gboolean _tmp459_ = FALSE;
-                                                                       _tmp455_ = nv;
-                                                                       _tmp455__length1 = nv_length1;
-                                                                       _tmp456_ = _tmp455_[1];
-                                                                       _tmp457_ = vala_gidl_parser_eval (self, _tmp456_);
-                                                                       _tmp458_ = _tmp457_;
-                                                                       _tmp459_ = g_strcmp0 (_tmp458_, "1") == 0;
-                                                                       _g_free0 (_tmp458_);
-                                                                       if (_tmp459_) {
-                                                                               ValaDataType* _tmp460_ = NULL;
+                                                                       gchar* _tmp459_ = NULL;
+                                                                       gboolean _tmp460_ = FALSE;
+                                                                       _tmp456_ = nv;
+                                                                       _tmp456__length1 = nv_length1;
+                                                                       _tmp457_ = _tmp456_[1];
+                                                                       _tmp458_ = vala_gidl_parser_eval (self, _tmp457_);
+                                                                       _tmp459_ = _tmp458_;
+                                                                       _tmp460_ = g_strcmp0 (_tmp459_, "1") == 0;
+                                                                       _g_free0 (_tmp459_);
+                                                                       if (_tmp460_) {
                                                                                ValaDataType* _tmp461_ = NULL;
-                                                                               ValaSourceReference* _tmp462_ = NULL;
-                                                                               ValaSourceReference* _tmp463_ = NULL;
-                                                                               ValaArrayType* _tmp464_ = NULL;
-                                                                               ValaParameter* _tmp465_ = NULL;
-                                                                               ValaDataType* _tmp466_ = NULL;
-                                                                               gboolean _tmp467_ = FALSE;
-                                                                               _tmp460_ = param_type;
+                                                                               ValaDataType* _tmp462_ = NULL;
+                                                                               ValaDataType* _tmp463_ = NULL;
+                                                                               ValaSourceReference* _tmp464_ = NULL;
+                                                                               ValaSourceReference* _tmp465_ = NULL;
+                                                                               ValaArrayType* _tmp466_ = NULL;
+                                                                               ValaParameter* _tmp467_ = NULL;
+                                                                               ValaDataType* _tmp468_ = NULL;
+                                                                               gboolean _tmp469_ = FALSE;
                                                                                _tmp461_ = param_type;
-                                                                               _tmp462_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp461_);
-                                                                               _tmp463_ = _tmp462_;
-                                                                               _tmp464_ = vala_array_type_new (_tmp460_, 1, _tmp463_);
+                                                                               vala_data_type_set_value_owned (_tmp461_, TRUE);
+                                                                               _tmp462_ = param_type;
+                                                                               _tmp463_ = param_type;
+                                                                               _tmp464_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp463_);
+                                                                               _tmp465_ = _tmp464_;
+                                                                               _tmp466_ = vala_array_type_new (_tmp462_, 1, _tmp465_);
                                                                                _vala_code_node_unref0 (param_type);
-                                                                               param_type = (ValaDataType*) _tmp464_;
-                                                                               _tmp465_ = p;
-                                                                               _tmp466_ = param_type;
-                                                                               vala_variable_set_variable_type ((ValaVariable*) _tmp465_, _tmp466_);
-                                                                               _tmp467_ = out_requested;
-                                                                               if (!_tmp467_) {
-                                                                                       ValaParameter* _tmp468_ = NULL;
-                                                                                       _tmp468_ = p;
-                                                                                       vala_parameter_set_direction (_tmp468_, VALA_PARAMETER_DIRECTION_IN);
+                                                                               param_type = (ValaDataType*) _tmp466_;
+                                                                               _tmp467_ = p;
+                                                                               _tmp468_ = param_type;
+                                                                               vala_variable_set_variable_type ((ValaVariable*) _tmp467_, _tmp468_);
+                                                                               _tmp469_ = out_requested;
+                                                                               if (!_tmp469_) {
+                                                                                       ValaParameter* _tmp470_ = NULL;
+                                                                                       _tmp470_ = p;
+                                                                                       vala_parameter_set_direction (_tmp470_, VALA_PARAMETER_DIRECTION_IN);
                                                                                }
                                                                                array_requested = TRUE;
                                                                        }
                                                                } else {
-                                                                       gchar** _tmp469_ = NULL;
-                                                                       gint _tmp469__length1 = 0;
-                                                                       const gchar* _tmp470_ = NULL;
-                                                                       _tmp469_ = nv;
-                                                                       _tmp469__length1 = nv_length1;
-                                                                       _tmp470_ = _tmp469_[0];
-                                                                       if (g_strcmp0 (_tmp470_, "is_pointer") == 0) {
-                                                                               gchar** _tmp471_ = NULL;
-                                                                               gint _tmp471__length1 = 0;
-                                                                               const gchar* _tmp472_ = NULL;
-                                                                               gchar* _tmp473_ = NULL;
-                                                                               gchar* _tmp474_ = NULL;
-                                                                               gboolean _tmp475_ = FALSE;
-                                                                               _tmp471_ = nv;
-                                                                               _tmp471__length1 = nv_length1;
-                                                                               _tmp472_ = _tmp471_[1];
-                                                                               _tmp473_ = vala_gidl_parser_eval (self, _tmp472_);
-                                                                               _tmp474_ = _tmp473_;
-                                                                               _tmp475_ = g_strcmp0 (_tmp474_, "1") == 0;
-                                                                               _g_free0 (_tmp474_);
-                                                                               if (_tmp475_) {
-                                                                                       ValaDataType* _tmp476_ = NULL;
-                                                                                       ValaDataType* _tmp477_ = NULL;
-                                                                                       ValaSourceReference* _tmp478_ = NULL;
-                                                                                       ValaSourceReference* _tmp479_ = NULL;
-                                                                                       ValaPointerType* _tmp480_ = NULL;
-                                                                                       ValaParameter* _tmp481_ = NULL;
-                                                                                       ValaDataType* _tmp482_ = NULL;
-                                                                                       gboolean _tmp483_ = FALSE;
-                                                                                       _tmp476_ = param_type;
-                                                                                       _tmp477_ = return_type;
-                                                                                       _tmp478_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp477_);
-                                                                                       _tmp479_ = _tmp478_;
-                                                                                       _tmp480_ = vala_pointer_type_new (_tmp476_, _tmp479_);
+                                                                       gchar** _tmp471_ = NULL;
+                                                                       gint _tmp471__length1 = 0;
+                                                                       const gchar* _tmp472_ = NULL;
+                                                                       _tmp471_ = nv;
+                                                                       _tmp471__length1 = nv_length1;
+                                                                       _tmp472_ = _tmp471_[0];
+                                                                       if (g_strcmp0 (_tmp472_, "is_pointer") == 0) {
+                                                                               gchar** _tmp473_ = NULL;
+                                                                               gint _tmp473__length1 = 0;
+                                                                               const gchar* _tmp474_ = NULL;
+                                                                               gchar* _tmp475_ = NULL;
+                                                                               gchar* _tmp476_ = NULL;
+                                                                               gboolean _tmp477_ = FALSE;
+                                                                               _tmp473_ = nv;
+                                                                               _tmp473__length1 = nv_length1;
+                                                                               _tmp474_ = _tmp473_[1];
+                                                                               _tmp475_ = vala_gidl_parser_eval (self, _tmp474_);
+                                                                               _tmp476_ = _tmp475_;
+                                                                               _tmp477_ = g_strcmp0 (_tmp476_, "1") == 0;
+                                                                               _g_free0 (_tmp476_);
+                                                                               if (_tmp477_) {
+                                                                                       ValaDataType* _tmp478_ = NULL;
+                                                                                       ValaDataType* _tmp479_ = NULL;
+                                                                                       ValaSourceReference* _tmp480_ = NULL;
+                                                                                       ValaSourceReference* _tmp481_ = NULL;
+                                                                                       ValaPointerType* _tmp482_ = NULL;
+                                                                                       ValaParameter* _tmp483_ = NULL;
+                                                                                       ValaDataType* _tmp484_ = NULL;
+                                                                                       gboolean _tmp485_ = FALSE;
+                                                                                       _tmp478_ = param_type;
+                                                                                       _tmp479_ = return_type;
+                                                                                       _tmp480_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp479_);
+                                                                                       _tmp481_ = _tmp480_;
+                                                                                       _tmp482_ = vala_pointer_type_new (_tmp478_, _tmp481_);
                                                                                        _vala_code_node_unref0 (param_type);
-                                                                                       param_type = (ValaDataType*) _tmp480_;
-                                                                                       _tmp481_ = p;
-                                                                                       _tmp482_ = param_type;
-                                                                                       vala_variable_set_variable_type ((ValaVariable*) _tmp481_, _tmp482_);
-                                                                                       _tmp483_ = out_requested;
-                                                                                       if (!_tmp483_) {
-                                                                                               ValaParameter* _tmp484_ = NULL;
-                                                                                               _tmp484_ = p;
-                                                                                               vala_parameter_set_direction (_tmp484_, VALA_PARAMETER_DIRECTION_IN);
+                                                                                       param_type = (ValaDataType*) _tmp482_;
+                                                                                       _tmp483_ = p;
+                                                                                       _tmp484_ = param_type;
+                                                                                       vala_variable_set_variable_type ((ValaVariable*) _tmp483_, _tmp484_);
+                                                                                       _tmp485_ = out_requested;
+                                                                                       if (!_tmp485_) {
+                                                                                               ValaParameter* _tmp486_ = NULL;
+                                                                                               _tmp486_ = p;
+                                                                                               vala_parameter_set_direction (_tmp486_, VALA_PARAMETER_DIRECTION_IN);
                                                                                        }
                                                                                }
                                                                        } else {
-                                                                               gchar** _tmp485_ = NULL;
-                                                                               gint _tmp485__length1 = 0;
-                                                                               const gchar* _tmp486_ = NULL;
-                                                                               _tmp485_ = nv;
-                                                                               _tmp485__length1 = nv_length1;
-                                                                               _tmp486_ = _tmp485_[0];
-                                                                               if (g_strcmp0 (_tmp486_, "is_out") == 0) {
-                                                                                       gchar** _tmp487_ = NULL;
-                                                                                       gint _tmp487__length1 = 0;
-                                                                                       const gchar* _tmp488_ = NULL;
-                                                                                       gchar* _tmp489_ = NULL;
-                                                                                       gchar* _tmp490_ = NULL;
-                                                                                       gboolean _tmp491_ = FALSE;
-                                                                                       _tmp487_ = nv;
-                                                                                       _tmp487__length1 = nv_length1;
-                                                                                       _tmp488_ = _tmp487_[1];
-                                                                                       _tmp489_ = vala_gidl_parser_eval (self, _tmp488_);
-                                                                                       _tmp490_ = _tmp489_;
-                                                                                       _tmp491_ = g_strcmp0 (_tmp490_, "1") == 0;
-                                                                                       _g_free0 (_tmp490_);
-                                                                                       if (_tmp491_) {
-                                                                                               ValaParameter* _tmp492_ = NULL;
-                                                                                               gboolean _tmp493_ = FALSE;
-                                                                                               gboolean _tmp494_ = FALSE;
-                                                                                               _tmp492_ = p;
-                                                                                               vala_parameter_set_direction (_tmp492_, VALA_PARAMETER_DIRECTION_OUT);
+                                                                               gchar** _tmp487_ = NULL;
+                                                                               gint _tmp487__length1 = 0;
+                                                                               const gchar* _tmp488_ = NULL;
+                                                                               _tmp487_ = nv;
+                                                                               _tmp487__length1 = nv_length1;
+                                                                               _tmp488_ = _tmp487_[0];
+                                                                               if (g_strcmp0 (_tmp488_, "is_out") == 0) {
+                                                                                       gchar** _tmp489_ = NULL;
+                                                                                       gint _tmp489__length1 = 0;
+                                                                                       const gchar* _tmp490_ = NULL;
+                                                                                       gchar* _tmp491_ = NULL;
+                                                                                       gchar* _tmp492_ = NULL;
+                                                                                       gboolean _tmp493_ = FALSE;
+                                                                                       _tmp489_ = nv;
+                                                                                       _tmp489__length1 = nv_length1;
+                                                                                       _tmp490_ = _tmp489_[1];
+                                                                                       _tmp491_ = vala_gidl_parser_eval (self, _tmp490_);
+                                                                                       _tmp492_ = _tmp491_;
+                                                                                       _tmp493_ = g_strcmp0 (_tmp492_, "1") == 0;
+                                                                                       _g_free0 (_tmp492_);
+                                                                                       if (_tmp493_) {
+                                                                                               ValaParameter* _tmp494_ = NULL;
+                                                                                               gboolean _tmp495_ = FALSE;
+                                                                                               gboolean _tmp496_ = FALSE;
+                                                                                               _tmp494_ = p;
+                                                                                               vala_parameter_set_direction (_tmp494_, VALA_PARAMETER_DIRECTION_OUT);
                                                                                                out_requested = TRUE;
-                                                                                               _tmp494_ = array_requested;
-                                                                                               if (!_tmp494_) {
-                                                                                                       ValaDataType* _tmp495_ = NULL;
-                                                                                                       _tmp495_ = param_type;
-                                                                                                       _tmp493_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp495_, VALA_TYPE_ARRAY_TYPE);
+                                                                                               _tmp496_ = array_requested;
+                                                                                               if (!_tmp496_) {
+                                                                                                       ValaDataType* _tmp497_ = NULL;
+                                                                                                       _tmp497_ = param_type;
+                                                                                                       _tmp495_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp497_, VALA_TYPE_ARRAY_TYPE);
                                                                                                } else {
-                                                                                                       _tmp493_ = FALSE;
+                                                                                                       _tmp495_ = FALSE;
                                                                                                }
-                                                                                               if (_tmp493_) {
+                                                                                               if (_tmp495_) {
                                                                                                        ValaArrayType* array_type = NULL;
-                                                                                                       ValaDataType* _tmp496_ = NULL;
-                                                                                                       ValaArrayType* _tmp497_ = NULL;
-                                                                                                       ValaArrayType* _tmp498_ = NULL;
-                                                                                                       ValaDataType* _tmp499_ = NULL;
-                                                                                                       ValaDataType* _tmp500_ = NULL;
+                                                                                                       ValaDataType* _tmp498_ = NULL;
+                                                                                                       ValaArrayType* _tmp499_ = NULL;
+                                                                                                       ValaArrayType* _tmp500_ = NULL;
                                                                                                        ValaDataType* _tmp501_ = NULL;
-                                                                                                       ValaParameter* _tmp502_ = NULL;
+                                                                                                       ValaDataType* _tmp502_ = NULL;
                                                                                                        ValaDataType* _tmp503_ = NULL;
-                                                                                                       _tmp496_ = param_type;
-                                                                                                       _tmp497_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp496_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                                                                                       array_type = _tmp497_;
-                                                                                                       _tmp498_ = array_type;
-                                                                                                       _tmp499_ = vala_array_type_get_element_type (_tmp498_);
-                                                                                                       _tmp500_ = _tmp499_;
-                                                                                                       _tmp501_ = _vala_code_node_ref0 (_tmp500_);
+                                                                                                       ValaParameter* _tmp504_ = NULL;
+                                                                                                       ValaDataType* _tmp505_ = NULL;
+                                                                                                       _tmp498_ = param_type;
+                                                                                                       _tmp499_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp498_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                                                                                       array_type = _tmp499_;
+                                                                                                       _tmp500_ = array_type;
+                                                                                                       _tmp501_ = vala_array_type_get_element_type (_tmp500_);
+                                                                                                       _tmp502_ = _tmp501_;
+                                                                                                       _tmp503_ = _vala_code_node_ref0 (_tmp502_);
                                                                                                        _vala_code_node_unref0 (param_type);
-                                                                                                       param_type = _tmp501_;
-                                                                                                       _tmp502_ = p;
-                                                                                                       _tmp503_ = param_type;
-                                                                                                       vala_variable_set_variable_type ((ValaVariable*) _tmp502_, _tmp503_);
+                                                                                                       param_type = _tmp503_;
+                                                                                                       _tmp504_ = p;
+                                                                                                       _tmp505_ = param_type;
+                                                                                                       vala_variable_set_variable_type ((ValaVariable*) _tmp504_, _tmp505_);
                                                                                                        _vala_code_node_unref0 (array_type);
                                                                                                }
                                                                                        }
                                                                                } else {
-                                                                                       gchar** _tmp504_ = NULL;
-                                                                                       gint _tmp504__length1 = 0;
-                                                                                       const gchar* _tmp505_ = NULL;
-                                                                                       _tmp504_ = nv;
-                                                                                       _tmp504__length1 = nv_length1;
-                                                                                       _tmp505_ = _tmp504_[0];
-                                                                                       if (g_strcmp0 (_tmp505_, "is_ref") == 0) {
-                                                                                               gchar** _tmp506_ = NULL;
-                                                                                               gint _tmp506__length1 = 0;
-                                                                                               const gchar* _tmp507_ = NULL;
-                                                                                               gchar* _tmp508_ = NULL;
-                                                                                               gchar* _tmp509_ = NULL;
-                                                                                               gboolean _tmp510_ = FALSE;
-                                                                                               _tmp506_ = nv;
-                                                                                               _tmp506__length1 = nv_length1;
-                                                                                               _tmp507_ = _tmp506_[1];
-                                                                                               _tmp508_ = vala_gidl_parser_eval (self, _tmp507_);
-                                                                                               _tmp509_ = _tmp508_;
-                                                                                               _tmp510_ = g_strcmp0 (_tmp509_, "1") == 0;
-                                                                                               _g_free0 (_tmp509_);
-                                                                                               if (_tmp510_) {
-                                                                                                       ValaParameter* _tmp511_ = NULL;
-                                                                                                       gboolean _tmp512_ = FALSE;
-                                                                                                       gboolean _tmp513_ = FALSE;
-                                                                                                       _tmp511_ = p;
-                                                                                                       vala_parameter_set_direction (_tmp511_, VALA_PARAMETER_DIRECTION_REF);
-                                                                                                       _tmp513_ = array_requested;
-                                                                                                       if (!_tmp513_) {
-                                                                                                               ValaDataType* _tmp514_ = NULL;
-                                                                                                               _tmp514_ = param_type;
-                                                                                                               _tmp512_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp514_, VALA_TYPE_ARRAY_TYPE);
+                                                                                       gchar** _tmp506_ = NULL;
+                                                                                       gint _tmp506__length1 = 0;
+                                                                                       const gchar* _tmp507_ = NULL;
+                                                                                       _tmp506_ = nv;
+                                                                                       _tmp506__length1 = nv_length1;
+                                                                                       _tmp507_ = _tmp506_[0];
+                                                                                       if (g_strcmp0 (_tmp507_, "is_ref") == 0) {
+                                                                                               gchar** _tmp508_ = NULL;
+                                                                                               gint _tmp508__length1 = 0;
+                                                                                               const gchar* _tmp509_ = NULL;
+                                                                                               gchar* _tmp510_ = NULL;
+                                                                                               gchar* _tmp511_ = NULL;
+                                                                                               gboolean _tmp512_ = FALSE;
+                                                                                               _tmp508_ = nv;
+                                                                                               _tmp508__length1 = nv_length1;
+                                                                                               _tmp509_ = _tmp508_[1];
+                                                                                               _tmp510_ = vala_gidl_parser_eval (self, _tmp509_);
+                                                                                               _tmp511_ = _tmp510_;
+                                                                                               _tmp512_ = g_strcmp0 (_tmp511_, "1") == 0;
+                                                                                               _g_free0 (_tmp511_);
+                                                                                               if (_tmp512_) {
+                                                                                                       ValaParameter* _tmp513_ = NULL;
+                                                                                                       gboolean _tmp514_ = FALSE;
+                                                                                                       gboolean _tmp515_ = FALSE;
+                                                                                                       _tmp513_ = p;
+                                                                                                       vala_parameter_set_direction (_tmp513_, VALA_PARAMETER_DIRECTION_REF);
+                                                                                                       _tmp515_ = array_requested;
+                                                                                                       if (!_tmp515_) {
+                                                                                                               ValaDataType* _tmp516_ = NULL;
+                                                                                                               _tmp516_ = param_type;
+                                                                                                               _tmp514_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp516_, VALA_TYPE_ARRAY_TYPE);
                                                                                                        } else {
-                                                                                                               _tmp512_ = FALSE;
+                                                                                                               _tmp514_ = FALSE;
                                                                                                        }
-                                                                                                       if (_tmp512_) {
+                                                                                                       if (_tmp514_) {
                                                                                                                ValaArrayType* array_type = NULL;
-                                                                                                               ValaDataType* _tmp515_ = NULL;
-                                                                                                               ValaArrayType* _tmp516_ = NULL;
-                                                                                                               ValaArrayType* _tmp517_ = NULL;
-                                                                                                               ValaDataType* _tmp518_ = NULL;
-                                                                                                               ValaDataType* _tmp519_ = NULL;
+                                                                                                               ValaDataType* _tmp517_ = NULL;
+                                                                                                               ValaArrayType* _tmp518_ = NULL;
+                                                                                                               ValaArrayType* _tmp519_ = NULL;
                                                                                                                ValaDataType* _tmp520_ = NULL;
-                                                                                                               ValaParameter* _tmp521_ = NULL;
+                                                                                                               ValaDataType* _tmp521_ = NULL;
                                                                                                                ValaDataType* _tmp522_ = NULL;
-                                                                                                               _tmp515_ = param_type;
-                                                                                                               _tmp516_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp515_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
-                                                                                                               array_type = _tmp516_;
-                                                                                                               _tmp517_ = array_type;
-                                                                                                               _tmp518_ = vala_array_type_get_element_type (_tmp517_);
-                                                                                                               _tmp519_ = _tmp518_;
-                                                                                                               _tmp520_ = _vala_code_node_ref0 (_tmp519_);
+                                                                                                               ValaParameter* _tmp523_ = NULL;
+                                                                                                               ValaDataType* _tmp524_ = NULL;
+                                                                                                               _tmp517_ = param_type;
+                                                                                                               _tmp518_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp517_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
+                                                                                                               array_type = _tmp518_;
+                                                                                                               _tmp519_ = array_type;
+                                                                                                               _tmp520_ = vala_array_type_get_element_type (_tmp519_);
+                                                                                                               _tmp521_ = _tmp520_;
+                                                                                                               _tmp522_ = _vala_code_node_ref0 (_tmp521_);
                                                                                                                _vala_code_node_unref0 (param_type);
-                                                                                                               param_type = _tmp520_;
-                                                                                                               _tmp521_ = p;
-                                                                                                               _tmp522_ = param_type;
-                                                                                                               vala_variable_set_variable_type ((ValaVariable*) _tmp521_, _tmp522_);
+                                                                                                               param_type = _tmp522_;
+                                                                                                               _tmp523_ = p;
+                                                                                                               _tmp524_ = param_type;
+                                                                                                               vala_variable_set_variable_type ((ValaVariable*) _tmp523_, _tmp524_);
                                                                                                                _vala_code_node_unref0 (array_type);
                                                                                                        }
                                                                                                }
                                                                                        } else {
-                                                                                               gchar** _tmp523_ = NULL;
-                                                                                               gint _tmp523__length1 = 0;
-                                                                                               const gchar* _tmp524_ = NULL;
-                                                                                               _tmp523_ = nv;
-                                                                                               _tmp523__length1 = nv_length1;
-                                                                                               _tmp524_ = _tmp523_[0];
-                                                                                               if (g_strcmp0 (_tmp524_, "nullable") == 0) {
-                                                                                                       gboolean _tmp525_ = FALSE;
-                                                                                                       gchar** _tmp526_ = NULL;
-                                                                                                       gint _tmp526__length1 = 0;
-                                                                                                       const gchar* _tmp527_ = NULL;
-                                                                                                       gchar* _tmp528_ = NULL;
-                                                                                                       gchar* _tmp529_ = NULL;
-                                                                                                       gboolean _tmp530_ = FALSE;
-                                                                                                       _tmp526_ = nv;
-                                                                                                       _tmp526__length1 = nv_length1;
-                                                                                                       _tmp527_ = _tmp526_[1];
-                                                                                                       _tmp528_ = vala_gidl_parser_eval (self, _tmp527_);
-                                                                                                       _tmp529_ = _tmp528_;
-                                                                                                       _tmp530_ = g_strcmp0 (_tmp529_, "1") == 0;
-                                                                                                       _g_free0 (_tmp529_);
-                                                                                                       if (_tmp530_) {
-                                                                                                               ValaDataType* _tmp531_ = NULL;
-                                                                                                               _tmp531_ = param_type;
-                                                                                                               _tmp525_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp531_, VALA_TYPE_VOID_TYPE);
+                                                                                               gchar** _tmp525_ = NULL;
+                                                                                               gint _tmp525__length1 = 0;
+                                                                                               const gchar* _tmp526_ = NULL;
+                                                                                               _tmp525_ = nv;
+                                                                                               _tmp525__length1 = nv_length1;
+                                                                                               _tmp526_ = _tmp525_[0];
+                                                                                               if (g_strcmp0 (_tmp526_, "nullable") == 0) {
+                                                                                                       gboolean _tmp527_ = FALSE;
+                                                                                                       gchar** _tmp528_ = NULL;
+                                                                                                       gint _tmp528__length1 = 0;
+                                                                                                       const gchar* _tmp529_ = NULL;
+                                                                                                       gchar* _tmp530_ = NULL;
+                                                                                                       gchar* _tmp531_ = NULL;
+                                                                                                       gboolean _tmp532_ = FALSE;
+                                                                                                       _tmp528_ = nv;
+                                                                                                       _tmp528__length1 = nv_length1;
+                                                                                                       _tmp529_ = _tmp528_[1];
+                                                                                                       _tmp530_ = vala_gidl_parser_eval (self, _tmp529_);
+                                                                                                       _tmp531_ = _tmp530_;
+                                                                                                       _tmp532_ = g_strcmp0 (_tmp531_, "1") == 0;
+                                                                                                       _g_free0 (_tmp531_);
+                                                                                                       if (_tmp532_) {
+                                                                                                               ValaDataType* _tmp533_ = NULL;
+                                                                                                               _tmp533_ = param_type;
+                                                                                                               _tmp527_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp533_, VALA_TYPE_VOID_TYPE);
                                                                                                        } else {
-                                                                                                               _tmp525_ = FALSE;
+                                                                                                               _tmp527_ = FALSE;
                                                                                                        }
-                                                                                                       if (_tmp525_) {
-                                                                                                               ValaDataType* _tmp532_ = NULL;
-                                                                                                               _tmp532_ = param_type;
-                                                                                                               vala_data_type_set_nullable (_tmp532_, TRUE);
+                                                                                                       if (_tmp527_) {
+                                                                                                               ValaDataType* _tmp534_ = NULL;
+                                                                                                               _tmp534_ = param_type;
+                                                                                                               vala_data_type_set_nullable (_tmp534_, TRUE);
                                                                                                        }
                                                                                                } else {
-                                                                                                       gchar** _tmp533_ = NULL;
-                                                                                                       gint _tmp533__length1 = 0;
-                                                                                                       const gchar* _tmp534_ = NULL;
-                                                                                                       _tmp533_ = nv;
-                                                                                                       _tmp533__length1 = nv_length1;
-                                                                                                       _tmp534_ = _tmp533_[0];
-                                                                                                       if (g_strcmp0 (_tmp534_, "transfer_ownership") == 0) {
-                                                                                                               gchar** _tmp535_ = NULL;
-                                                                                                               gint _tmp535__length1 = 0;
-                                                                                                               const gchar* _tmp536_ = NULL;
-                                                                                                               gchar* _tmp537_ = NULL;
-                                                                                                               gchar* _tmp538_ = NULL;
-                                                                                                               gboolean _tmp539_ = FALSE;
-                                                                                                               _tmp535_ = nv;
-                                                                                                               _tmp535__length1 = nv_length1;
-                                                                                                               _tmp536_ = _tmp535_[1];
-                                                                                                               _tmp537_ = vala_gidl_parser_eval (self, _tmp536_);
-                                                                                                               _tmp538_ = _tmp537_;
-                                                                                                               _tmp539_ = g_strcmp0 (_tmp538_, "1") == 0;
-                                                                                                               _g_free0 (_tmp538_);
-                                                                                                               if (_tmp539_) {
-                                                                                                                       ValaDataType* _tmp540_ = NULL;
-                                                                                                                       _tmp540_ = param_type;
-                                                                                                                       vala_data_type_set_value_owned (_tmp540_, TRUE);
+                                                                                                       gchar** _tmp535_ = NULL;
+                                                                                                       gint _tmp535__length1 = 0;
+                                                                                                       const gchar* _tmp536_ = NULL;
+                                                                                                       _tmp535_ = nv;
+                                                                                                       _tmp535__length1 = nv_length1;
+                                                                                                       _tmp536_ = _tmp535_[0];
+                                                                                                       if (g_strcmp0 (_tmp536_, "transfer_ownership") == 0) {
+                                                                                                               gchar** _tmp537_ = NULL;
+                                                                                                               gint _tmp537__length1 = 0;
+                                                                                                               const gchar* _tmp538_ = NULL;
+                                                                                                               gchar* _tmp539_ = NULL;
+                                                                                                               gchar* _tmp540_ = NULL;
+                                                                                                               gboolean _tmp541_ = FALSE;
+                                                                                                               _tmp537_ = nv;
+                                                                                                               _tmp537__length1 = nv_length1;
+                                                                                                               _tmp538_ = _tmp537_[1];
+                                                                                                               _tmp539_ = vala_gidl_parser_eval (self, _tmp538_);
+                                                                                                               _tmp540_ = _tmp539_;
+                                                                                                               _tmp541_ = g_strcmp0 (_tmp540_, "1") == 0;
+                                                                                                               _g_free0 (_tmp540_);
+                                                                                                               if (_tmp541_) {
+                                                                                                                       ValaDataType* _tmp542_ = NULL;
+                                                                                                                       _tmp542_ = param_type;
+                                                                                                                       vala_data_type_set_value_owned (_tmp542_, TRUE);
                                                                                                                }
                                                                                                        } else {
-                                                                                                               gchar** _tmp541_ = NULL;
-                                                                                                               gint _tmp541__length1 = 0;
-                                                                                                               const gchar* _tmp542_ = NULL;
-                                                                                                               _tmp541_ = nv;
-                                                                                                               _tmp541__length1 = nv_length1;
-                                                                                                               _tmp542_ = _tmp541_[0];
-                                                                                                               if (g_strcmp0 (_tmp542_, "takes_ownership") == 0) {
-                                                                                                                       gchar** _tmp543_ = NULL;
-                                                                                                                       gint _tmp543__length1 = 0;
-                                                                                                                       const gchar* _tmp544_ = NULL;
-                                                                                                                       gchar* _tmp545_ = NULL;
-                                                                                                                       gchar* _tmp546_ = NULL;
-                                                                                                                       gboolean _tmp547_ = FALSE;
-                                                                                                                       _tmp543_ = nv;
-                                                                                                                       _tmp543__length1 = nv_length1;
-                                                                                                                       _tmp544_ = _tmp543_[1];
-                                                                                                                       _tmp545_ = vala_gidl_parser_eval (self, _tmp544_);
-                                                                                                                       _tmp546_ = _tmp545_;
-                                                                                                                       _tmp547_ = g_strcmp0 (_tmp546_, "1") == 0;
-                                                                                                                       _g_free0 (_tmp546_);
-                                                                                                                       if (_tmp547_) {
-                                                                                                                               ValaDataType* _tmp548_ = NULL;
-                                                                                                                               _tmp548_ = param_type;
-                                                                                                                               vala_data_type_set_value_owned (_tmp548_, TRUE);
+                                                                                                               gchar** _tmp543_ = NULL;
+                                                                                                               gint _tmp543__length1 = 0;
+                                                                                                               const gchar* _tmp544_ = NULL;
+                                                                                                               _tmp543_ = nv;
+                                                                                                               _tmp543__length1 = nv_length1;
+                                                                                                               _tmp544_ = _tmp543_[0];
+                                                                                                               if (g_strcmp0 (_tmp544_, "takes_ownership") == 0) {
+                                                                                                                       gchar** _tmp545_ = NULL;
+                                                                                                                       gint _tmp545__length1 = 0;
+                                                                                                                       const gchar* _tmp546_ = NULL;
+                                                                                                                       gchar* _tmp547_ = NULL;
+                                                                                                                       gchar* _tmp548_ = NULL;
+                                                                                                                       gboolean _tmp549_ = FALSE;
+                                                                                                                       _tmp545_ = nv;
+                                                                                                                       _tmp545__length1 = nv_length1;
+                                                                                                                       _tmp546_ = _tmp545_[1];
+                                                                                                                       _tmp547_ = vala_gidl_parser_eval (self, _tmp546_);
+                                                                                                                       _tmp548_ = _tmp547_;
+                                                                                                                       _tmp549_ = g_strcmp0 (_tmp548_, "1") == 0;
+                                                                                                                       _g_free0 (_tmp548_);
+                                                                                                                       if (_tmp549_) {
+                                                                                                                               ValaDataType* _tmp550_ = NULL;
+                                                                                                                               _tmp550_ = param_type;
+                                                                                                                               vala_data_type_set_value_owned (_tmp550_, TRUE);
                                                                                                                        }
                                                                                                                } else {
-                                                                                                                       gchar** _tmp549_ = NULL;
-                                                                                                                       gint _tmp549__length1 = 0;
-                                                                                                                       const gchar* _tmp550_ = NULL;
-                                                                                                                       _tmp549_ = nv;
-                                                                                                                       _tmp549__length1 = nv_length1;
-                                                                                                                       _tmp550_ = _tmp549_[0];
-                                                                                                                       if (g_strcmp0 (_tmp550_, "value_owned") == 0) {
-                                                                                                                               gchar** _tmp551_ = NULL;
-                                                                                                                               gint _tmp551__length1 = 0;
-                                                                                                                               const gchar* _tmp552_ = NULL;
-                                                                                                                               gchar* _tmp553_ = NULL;
-                                                                                                                               gchar* _tmp554_ = NULL;
-                                                                                                                               gboolean _tmp555_ = FALSE;
-                                                                                                                               _tmp551_ = nv;
-                                                                                                                               _tmp551__length1 = nv_length1;
-                                                                                                                               _tmp552_ = _tmp551_[1];
-                                                                                                                               _tmp553_ = vala_gidl_parser_eval (self, _tmp552_);
-                                                                                                                               _tmp554_ = _tmp553_;
-                                                                                                                               _tmp555_ = g_strcmp0 (_tmp554_, "0") == 0;
-                                                                                                                               _g_free0 (_tmp554_);
-                                                                                                                               if (_tmp555_) {
-                                                                                                                                       ValaDataType* _tmp556_ = NULL;
-                                                                                                                                       _tmp556_ = param_type;
-                                                                                                                                       vala_data_type_set_value_owned (_tmp556_, FALSE);
+                                                                                                                       gchar** _tmp551_ = NULL;
+                                                                                                                       gint _tmp551__length1 = 0;
+                                                                                                                       const gchar* _tmp552_ = NULL;
+                                                                                                                       _tmp551_ = nv;
+                                                                                                                       _tmp551__length1 = nv_length1;
+                                                                                                                       _tmp552_ = _tmp551_[0];
+                                                                                                                       if (g_strcmp0 (_tmp552_, "value_owned") == 0) {
+                                                                                                                               gchar** _tmp553_ = NULL;
+                                                                                                                               gint _tmp553__length1 = 0;
+                                                                                                                               const gchar* _tmp554_ = NULL;
+                                                                                                                               gchar* _tmp555_ = NULL;
+                                                                                                                               gchar* _tmp556_ = NULL;
+                                                                                                                               gboolean _tmp557_ = FALSE;
+                                                                                                                               _tmp553_ = nv;
+                                                                                                                               _tmp553__length1 = nv_length1;
+                                                                                                                               _tmp554_ = _tmp553_[1];
+                                                                                                                               _tmp555_ = vala_gidl_parser_eval (self, _tmp554_);
+                                                                                                                               _tmp556_ = _tmp555_;
+                                                                                                                               _tmp557_ = g_strcmp0 (_tmp556_, "0") == 0;
+                                                                                                                               _g_free0 (_tmp556_);
+                                                                                                                               if (_tmp557_) {
+                                                                                                                                       ValaDataType* _tmp558_ = NULL;
+                                                                                                                                       _tmp558_ = param_type;
+                                                                                                                                       vala_data_type_set_value_owned (_tmp558_, FALSE);
                                                                                                                                } else {
-                                                                                                                                       gchar** _tmp557_ = NULL;
-                                                                                                                                       gint _tmp557__length1 = 0;
-                                                                                                                                       const gchar* _tmp558_ = NULL;
-                                                                                                                                       gchar* _tmp559_ = NULL;
-                                                                                                                                       gchar* _tmp560_ = NULL;
-                                                                                                                                       gboolean _tmp561_ = FALSE;
-                                                                                                                                       _tmp557_ = nv;
-                                                                                                                                       _tmp557__length1 = nv_length1;
-                                                                                                                                       _tmp558_ = _tmp557_[1];
-                                                                                                                                       _tmp559_ = vala_gidl_parser_eval (self, _tmp558_);
-                                                                                                                                       _tmp560_ = _tmp559_;
-                                                                                                                                       _tmp561_ = g_strcmp0 (_tmp560_, "1") == 0;
-                                                                                                                                       _g_free0 (_tmp560_);
-                                                                                                                                       if (_tmp561_) {
-                                                                                                                                               ValaDataType* _tmp562_ = NULL;
-                                                                                                                                               _tmp562_ = param_type;
-                                                                                                                                               vala_data_type_set_value_owned (_tmp562_, TRUE);
+                                                                                                                                       gchar** _tmp559_ = NULL;
+                                                                                                                                       gint _tmp559__length1 = 0;
+                                                                                                                                       const gchar* _tmp560_ = NULL;
+                                                                                                                                       gchar* _tmp561_ = NULL;
+                                                                                                                                       gchar* _tmp562_ = NULL;
+                                                                                                                                       gboolean _tmp563_ = FALSE;
+                                                                                                                                       _tmp559_ = nv;
+                                                                                                                                       _tmp559__length1 = nv_length1;
+                                                                                                                                       _tmp560_ = _tmp559_[1];
+                                                                                                                                       _tmp561_ = vala_gidl_parser_eval (self, _tmp560_);
+                                                                                                                                       _tmp562_ = _tmp561_;
+                                                                                                                                       _tmp563_ = g_strcmp0 (_tmp562_, "1") == 0;
+                                                                                                                                       _g_free0 (_tmp562_);
+                                                                                                                                       if (_tmp563_) {
+                                                                                                                                               ValaDataType* _tmp564_ = NULL;
+                                                                                                                                               _tmp564_ = param_type;
+                                                                                                                                               vala_data_type_set_value_owned (_tmp564_, TRUE);
                                                                                                                                        }
                                                                                                                                }
                                                                                                                        } else {
-                                                                                                                               gchar** _tmp563_ = NULL;
-                                                                                                                               gint _tmp563__length1 = 0;
-                                                                                                                               const gchar* _tmp564_ = NULL;
-                                                                                                                               _tmp563_ = nv;
-                                                                                                                               _tmp563__length1 = nv_length1;
-                                                                                                                               _tmp564_ = _tmp563_[0];
-                                                                                                                               if (g_strcmp0 (_tmp564_, "hidden") == 0) {
-                                                                                                                                       gchar** _tmp565_ = NULL;
-                                                                                                                                       gint _tmp565__length1 = 0;
-                                                                                                                                       const gchar* _tmp566_ = NULL;
-                                                                                                                                       gchar* _tmp567_ = NULL;
-                                                                                                                                       gchar* _tmp568_ = NULL;
-                                                                                                                                       gboolean _tmp569_ = FALSE;
-                                                                                                                                       _tmp565_ = nv;
-                                                                                                                                       _tmp565__length1 = nv_length1;
-                                                                                                                                       _tmp566_ = _tmp565_[1];
-                                                                                                                                       _tmp567_ = vala_gidl_parser_eval (self, _tmp566_);
-                                                                                                                                       _tmp568_ = _tmp567_;
-                                                                                                                                       _tmp569_ = g_strcmp0 (_tmp568_, "1") == 0;
-                                                                                                                                       _g_free0 (_tmp568_);
-                                                                                                                                       if (_tmp569_) {
+                                                                                                                               gchar** _tmp565_ = NULL;
+                                                                                                                               gint _tmp565__length1 = 0;
+                                                                                                                               const gchar* _tmp566_ = NULL;
+                                                                                                                               _tmp565_ = nv;
+                                                                                                                               _tmp565__length1 = nv_length1;
+                                                                                                                               _tmp566_ = _tmp565_[0];
+                                                                                                                               if (g_strcmp0 (_tmp566_, "hidden") == 0) {
+                                                                                                                                       gchar** _tmp567_ = NULL;
+                                                                                                                                       gint _tmp567__length1 = 0;
+                                                                                                                                       const gchar* _tmp568_ = NULL;
+                                                                                                                                       gchar* _tmp569_ = NULL;
+                                                                                                                                       gchar* _tmp570_ = NULL;
+                                                                                                                                       gboolean _tmp571_ = FALSE;
+                                                                                                                                       _tmp567_ = nv;
+                                                                                                                                       _tmp567__length1 = nv_length1;
+                                                                                                                                       _tmp568_ = _tmp567_[1];
+                                                                                                                                       _tmp569_ = vala_gidl_parser_eval (self, _tmp568_);
+                                                                                                                                       _tmp570_ = _tmp569_;
+                                                                                                                                       _tmp571_ = g_strcmp0 (_tmp570_, "1") == 0;
+                                                                                                                                       _g_free0 (_tmp570_);
+                                                                                                                                       if (_tmp571_) {
                                                                                                                                                hide_param = TRUE;
                                                                                                                                        } else {
-                                                                                                                                               gchar** _tmp570_ = NULL;
-                                                                                                                                               gint _tmp570__length1 = 0;
-                                                                                                                                               const gchar* _tmp571_ = NULL;
-                                                                                                                                               gchar* _tmp572_ = NULL;
-                                                                                                                                               gchar* _tmp573_ = NULL;
-                                                                                                                                               gboolean _tmp574_ = FALSE;
-                                                                                                                                               _tmp570_ = nv;
-                                                                                                                                               _tmp570__length1 = nv_length1;
-                                                                                                                                               _tmp571_ = _tmp570_[1];
-                                                                                                                                               _tmp572_ = vala_gidl_parser_eval (self, _tmp571_);
-                                                                                                                                               _tmp573_ = _tmp572_;
-                                                                                                                                               _tmp574_ = g_strcmp0 (_tmp573_, "0") == 0;
-                                                                                                                                               _g_free0 (_tmp573_);
-                                                                                                                                               if (_tmp574_) {
+                                                                                                                                               gchar** _tmp572_ = NULL;
+                                                                                                                                               gint _tmp572__length1 = 0;
+                                                                                                                                               const gchar* _tmp573_ = NULL;
+                                                                                                                                               gchar* _tmp574_ = NULL;
+                                                                                                                                               gchar* _tmp575_ = NULL;
+                                                                                                                                               gboolean _tmp576_ = FALSE;
+                                                                                                                                               _tmp572_ = nv;
+                                                                                                                                               _tmp572__length1 = nv_length1;
+                                                                                                                                               _tmp573_ = _tmp572_[1];
+                                                                                                                                               _tmp574_ = vala_gidl_parser_eval (self, _tmp573_);
+                                                                                                                                               _tmp575_ = _tmp574_;
+                                                                                                                                               _tmp576_ = g_strcmp0 (_tmp575_, "0") == 0;
+                                                                                                                                               _g_free0 (_tmp575_);
+                                                                                                                                               if (_tmp576_) {
                                                                                                                                                        show_param = TRUE;
                                                                                                                                                }
                                                                                                                                        }
                                                                                                                                } else {
-                                                                                                                                       gchar** _tmp575_ = NULL;
-                                                                                                                                       gint _tmp575__length1 = 0;
-                                                                                                                                       const gchar* _tmp576_ = NULL;
-                                                                                                                                       _tmp575_ = nv;
-                                                                                                                                       _tmp575__length1 = nv_length1;
-                                                                                                                                       _tmp576_ = _tmp575_[0];
-                                                                                                                                       if (g_strcmp0 (_tmp576_, "no_array_length") == 0) {
-                                                                                                                                               gchar** _tmp577_ = NULL;
-                                                                                                                                               gint _tmp577__length1 = 0;
-                                                                                                                                               const gchar* _tmp578_ = NULL;
-                                                                                                                                               gchar* _tmp579_ = NULL;
-                                                                                                                                               gchar* _tmp580_ = NULL;
-                                                                                                                                               gboolean _tmp581_ = FALSE;
-                                                                                                                                               _tmp577_ = nv;
-                                                                                                                                               _tmp577__length1 = nv_length1;
-                                                                                                                                               _tmp578_ = _tmp577_[1];
-                                                                                                                                               _tmp579_ = vala_gidl_parser_eval (self, _tmp578_);
-                                                                                                                                               _tmp580_ = _tmp579_;
-                                                                                                                                               _tmp581_ = g_strcmp0 (_tmp580_, "1") == 0;
-                                                                                                                                               _g_free0 (_tmp580_);
-                                                                                                                                               if (_tmp581_) {
-                                                                                                                                                       ValaParameter* _tmp582_ = NULL;
-                                                                                                                                                       _tmp582_ = p;
-                                                                                                                                                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp582_, "CCode", "array_length", FALSE, NULL);
+                                                                                                                                       gchar** _tmp577_ = NULL;
+                                                                                                                                       gint _tmp577__length1 = 0;
+                                                                                                                                       const gchar* _tmp578_ = NULL;
+                                                                                                                                       _tmp577_ = nv;
+                                                                                                                                       _tmp577__length1 = nv_length1;
+                                                                                                                                       _tmp578_ = _tmp577_[0];
+                                                                                                                                       if (g_strcmp0 (_tmp578_, "no_array_length") == 0) {
+                                                                                                                                               gchar** _tmp579_ = NULL;
+                                                                                                                                               gint _tmp579__length1 = 0;
+                                                                                                                                               const gchar* _tmp580_ = NULL;
+                                                                                                                                               gchar* _tmp581_ = NULL;
+                                                                                                                                               gchar* _tmp582_ = NULL;
+                                                                                                                                               gboolean _tmp583_ = FALSE;
+                                                                                                                                               _tmp579_ = nv;
+                                                                                                                                               _tmp579__length1 = nv_length1;
+                                                                                                                                               _tmp580_ = _tmp579_[1];
+                                                                                                                                               _tmp581_ = vala_gidl_parser_eval (self, _tmp580_);
+                                                                                                                                               _tmp582_ = _tmp581_;
+                                                                                                                                               _tmp583_ = g_strcmp0 (_tmp582_, "1") == 0;
+                                                                                                                                               _g_free0 (_tmp582_);
+                                                                                                                                               if (_tmp583_) {
+                                                                                                                                                       ValaParameter* _tmp584_ = NULL;
+                                                                                                                                                       _tmp584_ = p;
+                                                                                                                                                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp584_, "CCode", "array_length", FALSE, NULL);
                                                                                                                                                }
                                                                                                                                        } else {
-                                                                                                                                               gchar** _tmp583_ = NULL;
-                                                                                                                                               gint _tmp583__length1 = 0;
-                                                                                                                                               const gchar* _tmp584_ = NULL;
-                                                                                                                                               _tmp583_ = nv;
-                                                                                                                                               _tmp583__length1 = nv_length1;
-                                                                                                                                               _tmp584_ = _tmp583_[0];
-                                                                                                                                               if (g_strcmp0 (_tmp584_, "array_length_type") == 0) {
-                                                                                                                                                       ValaParameter* _tmp585_ = NULL;
-                                                                                                                                                       gchar** _tmp586_ = NULL;
-                                                                                                                                                       gint _tmp586__length1 = 0;
-                                                                                                                                                       const gchar* _tmp587_ = NULL;
-                                                                                                                                                       gchar* _tmp588_ = NULL;
-                                                                                                                                                       gchar* _tmp589_ = NULL;
-                                                                                                                                                       _tmp585_ = p;
-                                                                                                                                                       _tmp586_ = nv;
-                                                                                                                                                       _tmp586__length1 = nv_length1;
-                                                                                                                                                       _tmp587_ = _tmp586_[1];
-                                                                                                                                                       _tmp588_ = vala_gidl_parser_eval (self, _tmp587_);
-                                                                                                                                                       _tmp589_ = _tmp588_;
-                                                                                                                                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp585_, "CCode", "array_length_type", _tmp589_, NULL);
-                                                                                                                                                       _g_free0 (_tmp589_);
+                                                                                                                                               gchar** _tmp585_ = NULL;
+                                                                                                                                               gint _tmp585__length1 = 0;
+                                                                                                                                               const gchar* _tmp586_ = NULL;
+                                                                                                                                               _tmp585_ = nv;
+                                                                                                                                               _tmp585__length1 = nv_length1;
+                                                                                                                                               _tmp586_ = _tmp585_[0];
+                                                                                                                                               if (g_strcmp0 (_tmp586_, "array_length_type") == 0) {
+                                                                                                                                                       ValaParameter* _tmp587_ = NULL;
+                                                                                                                                                       gchar** _tmp588_ = NULL;
+                                                                                                                                                       gint _tmp588__length1 = 0;
+                                                                                                                                                       const gchar* _tmp589_ = NULL;
+                                                                                                                                                       gchar* _tmp590_ = NULL;
+                                                                                                                                                       gchar* _tmp591_ = NULL;
+                                                                                                                                                       _tmp587_ = p;
+                                                                                                                                                       _tmp588_ = nv;
+                                                                                                                                                       _tmp588__length1 = nv_length1;
+                                                                                                                                                       _tmp589_ = _tmp588_[1];
+                                                                                                                                                       _tmp590_ = vala_gidl_parser_eval (self, _tmp589_);
+                                                                                                                                                       _tmp591_ = _tmp590_;
+                                                                                                                                                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp587_, "CCode", "array_length_type", _tmp591_, NULL);
+                                                                                                                                                       _g_free0 (_tmp591_);
                                                                                                                                                } else {
-                                                                                                                                                       gchar** _tmp590_ = NULL;
-                                                                                                                                                       gint _tmp590__length1 = 0;
-                                                                                                                                                       const gchar* _tmp591_ = NULL;
-                                                                                                                                                       _tmp590_ = nv;
-                                                                                                                                                       _tmp590__length1 = nv_length1;
-                                                                                                                                                       _tmp591_ = _tmp590_[0];
-                                                                                                                                                       if (g_strcmp0 (_tmp591_, "array_null_terminated") == 0) {
-                                                                                                                                                               gchar** _tmp592_ = NULL;
-                                                                                                                                                               gint _tmp592__length1 = 0;
-                                                                                                                                                               const gchar* _tmp593_ = NULL;
-                                                                                                                                                               gchar* _tmp594_ = NULL;
-                                                                                                                                                               gchar* _tmp595_ = NULL;
-                                                                                                                                                               gboolean _tmp596_ = FALSE;
-                                                                                                                                                               _tmp592_ = nv;
-                                                                                                                                                               _tmp592__length1 = nv_length1;
-                                                                                                                                                               _tmp593_ = _tmp592_[1];
-                                                                                                                                                               _tmp594_ = vala_gidl_parser_eval (self, _tmp593_);
-                                                                                                                                                               _tmp595_ = _tmp594_;
-                                                                                                                                                               _tmp596_ = g_strcmp0 (_tmp595_, "1") == 0;
-                                                                                                                                                               _g_free0 (_tmp595_);
-                                                                                                                                                               if (_tmp596_) {
-                                                                                                                                                                       ValaParameter* _tmp597_ = NULL;
-                                                                                                                                                                       ValaParameter* _tmp598_ = NULL;
-                                                                                                                                                                       _tmp597_ = p;
-                                                                                                                                                                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp597_, "CCode", "array_length", FALSE, NULL);
-                                                                                                                                                                       _tmp598_ = p;
-                                                                                                                                                                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp598_, "CCode", "array_null_terminated", TRUE, NULL);
+                                                                                                                                                       gchar** _tmp592_ = NULL;
+                                                                                                                                                       gint _tmp592__length1 = 0;
+                                                                                                                                                       const gchar* _tmp593_ = NULL;
+                                                                                                                                                       _tmp592_ = nv;
+                                                                                                                                                       _tmp592__length1 = nv_length1;
+                                                                                                                                                       _tmp593_ = _tmp592_[0];
+                                                                                                                                                       if (g_strcmp0 (_tmp593_, "array_null_terminated") == 0) {
+                                                                                                                                                               gchar** _tmp594_ = NULL;
+                                                                                                                                                               gint _tmp594__length1 = 0;
+                                                                                                                                                               const gchar* _tmp595_ = NULL;
+                                                                                                                                                               gchar* _tmp596_ = NULL;
+                                                                                                                                                               gchar* _tmp597_ = NULL;
+                                                                                                                                                               gboolean _tmp598_ = FALSE;
+                                                                                                                                                               _tmp594_ = nv;
+                                                                                                                                                               _tmp594__length1 = nv_length1;
+                                                                                                                                                               _tmp595_ = _tmp594_[1];
+                                                                                                                                                               _tmp596_ = vala_gidl_parser_eval (self, _tmp595_);
+                                                                                                                                                               _tmp597_ = _tmp596_;
+                                                                                                                                                               _tmp598_ = g_strcmp0 (_tmp597_, "1") == 0;
+                                                                                                                                                               _g_free0 (_tmp597_);
+                                                                                                                                                               if (_tmp598_) {
+                                                                                                                                                                       ValaParameter* _tmp599_ = NULL;
+                                                                                                                                                                       ValaParameter* _tmp600_ = NULL;
+                                                                                                                                                                       _tmp599_ = p;
+                                                                                                                                                                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp599_, "CCode", "array_length", FALSE, NULL);
+                                                                                                                                                                       _tmp600_ = p;
+                                                                                                                                                                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp600_, "CCode", "array_null_terminated", TRUE, NULL);
                                                                                                                                                                }
                                                                                                                                                        } else {
-                                                                                                                                                               gchar** _tmp599_ = NULL;
-                                                                                                                                                               gint _tmp599__length1 = 0;
-                                                                                                                                                               const gchar* _tmp600_ = NULL;
-                                                                                                                                                               _tmp599_ = nv;
-                                                                                                                                                               _tmp599__length1 = nv_length1;
-                                                                                                                                                               _tmp600_ = _tmp599_[0];
-                                                                                                                                                               if (g_strcmp0 (_tmp600_, "array_length_pos") == 0) {
-                                                                                                                                                                       gchar** _tmp601_ = NULL;
-                                                                                                                                                                       gint _tmp601__length1 = 0;
-                                                                                                                                                                       const gchar* _tmp602_ = NULL;
-                                                                                                                                                                       gchar* _tmp603_ = NULL;
-                                                                                                                                                                       gchar* _tmp604_ = NULL;
-                                                                                                                                                                       gdouble _tmp605_ = 0.0;
+                                                                                                                                                               gchar** _tmp601_ = NULL;
+                                                                                                                                                               gint _tmp601__length1 = 0;
+                                                                                                                                                               const gchar* _tmp602_ = NULL;
+                                                                                                                                                               _tmp601_ = nv;
+                                                                                                                                                               _tmp601__length1 = nv_length1;
+                                                                                                                                                               _tmp602_ = _tmp601_[0];
+                                                                                                                                                               if (g_strcmp0 (_tmp602_, "array_length_pos") == 0) {
+                                                                                                                                                                       gchar** _tmp603_ = NULL;
+                                                                                                                                                                       gint _tmp603__length1 = 0;
+                                                                                                                                                                       const gchar* _tmp604_ = NULL;
+                                                                                                                                                                       gchar* _tmp605_ = NULL;
+                                                                                                                                                                       gchar* _tmp606_ = NULL;
+                                                                                                                                                                       gdouble _tmp607_ = 0.0;
                                                                                                                                                                        set_array_length_pos = TRUE;
-                                                                                                                                                                       _tmp601_ = nv;
-                                                                                                                                                                       _tmp601__length1 = nv_length1;
-                                                                                                                                                                       _tmp602_ = _tmp601_[1];
-                                                                                                                                                                       _tmp603_ = vala_gidl_parser_eval (self, _tmp602_);
-                                                                                                                                                                       _tmp604_ = _tmp603_;
-                                                                                                                                                                       _tmp605_ = double_parse (_tmp604_);
-                                                                                                                                                                       array_length_pos = _tmp605_;
-                                                                                                                                                                       _g_free0 (_tmp604_);
+                                                                                                                                                                       _tmp603_ = nv;
+                                                                                                                                                                       _tmp603__length1 = nv_length1;
+                                                                                                                                                                       _tmp604_ = _tmp603_[1];
+                                                                                                                                                                       _tmp605_ = vala_gidl_parser_eval (self, _tmp604_);
+                                                                                                                                                                       _tmp606_ = _tmp605_;
+                                                                                                                                                                       _tmp607_ = double_parse (_tmp606_);
+                                                                                                                                                                       array_length_pos = _tmp607_;
+                                                                                                                                                                       _g_free0 (_tmp606_);
                                                                                                                                                                } else {
-                                                                                                                                                                       gchar** _tmp606_ = NULL;
-                                                                                                                                                                       gint _tmp606__length1 = 0;
-                                                                                                                                                                       const gchar* _tmp607_ = NULL;
-                                                                                                                                                                       _tmp606_ = nv;
-                                                                                                                                                                       _tmp606__length1 = nv_length1;
-                                                                                                                                                                       _tmp607_ = _tmp606_[0];
-                                                                                                                                                                       if (g_strcmp0 (_tmp607_, "delegate_target_pos") == 0) {
-                                                                                                                                                                               gchar** _tmp608_ = NULL;
-                                                                                                                                                                               gint _tmp608__length1 = 0;
-                                                                                                                                                                               const gchar* _tmp609_ = NULL;
-                                                                                                                                                                               gchar* _tmp610_ = NULL;
-                                                                                                                                                                               gchar* _tmp611_ = NULL;
-                                                                                                                                                                               gdouble _tmp612_ = 0.0;
+                                                                                                                                                                       gchar** _tmp608_ = NULL;
+                                                                                                                                                                       gint _tmp608__length1 = 0;
+                                                                                                                                                                       const gchar* _tmp609_ = NULL;
+                                                                                                                                                                       _tmp608_ = nv;
+                                                                                                                                                                       _tmp608__length1 = nv_length1;
+                                                                                                                                                                       _tmp609_ = _tmp608_[0];
+                                                                                                                                                                       if (g_strcmp0 (_tmp609_, "delegate_target_pos") == 0) {
+                                                                                                                                                                               gchar** _tmp610_ = NULL;
+                                                                                                                                                                               gint _tmp610__length1 = 0;
+                                                                                                                                                                               const gchar* _tmp611_ = NULL;
+                                                                                                                                                                               gchar* _tmp612_ = NULL;
+                                                                                                                                                                               gchar* _tmp613_ = NULL;
+                                                                                                                                                                               gdouble _tmp614_ = 0.0;
                                                                                                                                                                                set_delegate_target_pos = TRUE;
-                                                                                                                                                                               _tmp608_ = nv;
-                                                                                                                                                                               _tmp608__length1 = nv_length1;
-                                                                                                                                                                               _tmp609_ = _tmp608_[1];
-                                                                                                                                                                               _tmp610_ = vala_gidl_parser_eval (self, _tmp609_);
-                                                                                                                                                                               _tmp611_ = _tmp610_;
-                                                                                                                                                                               _tmp612_ = double_parse (_tmp611_);
-                                                                                                                                                                               delegate_target_pos = _tmp612_;
-                                                                                                                                                                               _g_free0 (_tmp611_);
+                                                                                                                                                                               _tmp610_ = nv;
+                                                                                                                                                                               _tmp610__length1 = nv_length1;
+                                                                                                                                                                               _tmp611_ = _tmp610_[1];
+                                                                                                                                                                               _tmp612_ = vala_gidl_parser_eval (self, _tmp611_);
+                                                                                                                                                                               _tmp613_ = _tmp612_;
+                                                                                                                                                                               _tmp614_ = double_parse (_tmp613_);
+                                                                                                                                                                               delegate_target_pos = _tmp614_;
+                                                                                                                                                                               _g_free0 (_tmp613_);
                                                                                                                                                                        } else {
-                                                                                                                                                                               gchar** _tmp613_ = NULL;
-                                                                                                                                                                               gint _tmp613__length1 = 0;
-                                                                                                                                                                               const gchar* _tmp614_ = NULL;
-                                                                                                                                                                               _tmp613_ = nv;
-                                                                                                                                                                               _tmp613__length1 = nv_length1;
-                                                                                                                                                                               _tmp614_ = _tmp613_[0];
-                                                                                                                                                                               if (g_strcmp0 (_tmp614_, "type_name") == 0) {
-                                                                                                                                                                                       ValaParameter* _tmp615_ = NULL;
-                                                                                                                                                                                       gchar** _tmp616_ = NULL;
-                                                                                                                                                                                       gint _tmp616__length1 = 0;
-                                                                                                                                                                                       const gchar* _tmp617_ = NULL;
-                                                                                                                                                                                       gchar* _tmp618_ = NULL;
-                                                                                                                                                                                       gchar* _tmp619_ = NULL;
-                                                                                                                                                                                       ValaDataType* _tmp620_ = NULL;
-                                                                                                                                                                                       ValaDataType* _tmp621_ = NULL;
-                                                                                                                                                                                       _tmp615_ = p;
-                                                                                                                                                                                       _tmp616_ = nv;
-                                                                                                                                                                                       _tmp616__length1 = nv_length1;
-                                                                                                                                                                                       _tmp617_ = _tmp616_[1];
-                                                                                                                                                                                       _tmp618_ = vala_gidl_parser_eval (self, _tmp617_);
-                                                                                                                                                                                       _tmp619_ = _tmp618_;
-                                                                                                                                                                                       _tmp620_ = vala_gidl_parser_parse_type_from_string (self, _tmp619_, FALSE, NULL);
+                                                                                                                                                                               gchar** _tmp615_ = NULL;
+                                                                                                                                                                               gint _tmp615__length1 = 0;
+                                                                                                                                                                               const gchar* _tmp616_ = NULL;
+                                                                                                                                                                               _tmp615_ = nv;
+                                                                                                                                                                               _tmp615__length1 = nv_length1;
+                                                                                                                                                                               _tmp616_ = _tmp615_[0];
+                                                                                                                                                                               if (g_strcmp0 (_tmp616_, "type_name") == 0) {
+                                                                                                                                                                                       ValaParameter* _tmp617_ = NULL;
+                                                                                                                                                                                       gchar** _tmp618_ = NULL;
+                                                                                                                                                                                       gint _tmp618__length1 = 0;
+                                                                                                                                                                                       const gchar* _tmp619_ = NULL;
+                                                                                                                                                                                       gchar* _tmp620_ = NULL;
+                                                                                                                                                                                       gchar* _tmp621_ = NULL;
+                                                                                                                                                                                       ValaDataType* _tmp622_ = NULL;
+                                                                                                                                                                                       ValaDataType* _tmp623_ = NULL;
+                                                                                                                                                                                       _tmp617_ = p;
+                                                                                                                                                                                       _tmp618_ = nv;
+                                                                                                                                                                                       _tmp618__length1 = nv_length1;
+                                                                                                                                                                                       _tmp619_ = _tmp618_[1];
+                                                                                                                                                                                       _tmp620_ = vala_gidl_parser_eval (self, _tmp619_);
+                                                                                                                                                                                       _tmp621_ = _tmp620_;
+                                                                                                                                                                                       _tmp622_ = vala_gidl_parser_parse_type_from_string (self, _tmp621_, FALSE, NULL);
                                                                                                                                                                                        _vala_code_node_unref0 (param_type);
-                                                                                                                                                                                       param_type = _tmp620_;
-                                                                                                                                                                                       _tmp621_ = param_type;
-                                                                                                                                                                                       vala_variable_set_variable_type ((ValaVariable*) _tmp615_, _tmp621_);
-                                                                                                                                                                                       _g_free0 (_tmp619_);
+                                                                                                                                                                                       param_type = _tmp622_;
+                                                                                                                                                                                       _tmp623_ = param_type;
+                                                                                                                                                                                       vala_variable_set_variable_type ((ValaVariable*) _tmp617_, _tmp623_);
+                                                                                                                                                                                       _g_free0 (_tmp621_);
                                                                                                                                                                                } else {
-                                                                                                                                                                                       gchar** _tmp622_ = NULL;
-                                                                                                                                                                                       gint _tmp622__length1 = 0;
-                                                                                                                                                                                       const gchar* _tmp623_ = NULL;
-                                                                                                                                                                                       _tmp622_ = nv;
-                                                                                                                                                                                       _tmp622__length1 = nv_length1;
-                                                                                                                                                                                       _tmp623_ = _tmp622_[0];
-                                                                                                                                                                                       if (g_strcmp0 (_tmp623_, "ctype") == 0) {
-                                                                                                                                                                                               ValaParameter* _tmp624_ = NULL;
-                                                                                                                                                                                               gchar** _tmp625_ = NULL;
-                                                                                                                                                                                               gint _tmp625__length1 = 0;
-                                                                                                                                                                                               const gchar* _tmp626_ = NULL;
-                                                                                                                                                                                               gchar* _tmp627_ = NULL;
-                                                                                                                                                                                               gchar* _tmp628_ = NULL;
-                                                                                                                                                                                               _tmp624_ = p;
-                                                                                                                                                                                               _tmp625_ = nv;
-                                                                                                                                                                                               _tmp625__length1 = nv_length1;
-                                                                                                                                                                                               _tmp626_ = _tmp625_[1];
-                                                                                                                                                                                               _tmp627_ = vala_gidl_parser_eval (self, _tmp626_);
-                                                                                                                                                                                               _tmp628_ = _tmp627_;
-                                                                                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp624_, "CCode", "type", _tmp628_, NULL);
-                                                                                                                                                                                               _g_free0 (_tmp628_);
+                                                                                                                                                                                       gchar** _tmp624_ = NULL;
+                                                                                                                                                                                       gint _tmp624__length1 = 0;
+                                                                                                                                                                                       const gchar* _tmp625_ = NULL;
+                                                                                                                                                                                       _tmp624_ = nv;
+                                                                                                                                                                                       _tmp624__length1 = nv_length1;
+                                                                                                                                                                                       _tmp625_ = _tmp624_[0];
+                                                                                                                                                                                       if (g_strcmp0 (_tmp625_, "ctype") == 0) {
+                                                                                                                                                                                               ValaParameter* _tmp626_ = NULL;
+                                                                                                                                                                                               gchar** _tmp627_ = NULL;
+                                                                                                                                                                                               gint _tmp627__length1 = 0;
+                                                                                                                                                                                               const gchar* _tmp628_ = NULL;
+                                                                                                                                                                                               gchar* _tmp629_ = NULL;
+                                                                                                                                                                                               gchar* _tmp630_ = NULL;
+                                                                                                                                                                                               _tmp626_ = p;
+                                                                                                                                                                                               _tmp627_ = nv;
+                                                                                                                                                                                               _tmp627__length1 = nv_length1;
+                                                                                                                                                                                               _tmp628_ = _tmp627_[1];
+                                                                                                                                                                                               _tmp629_ = vala_gidl_parser_eval (self, _tmp628_);
+                                                                                                                                                                                               _tmp630_ = _tmp629_;
+                                                                                                                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp626_, "CCode", "type", _tmp630_, NULL);
+                                                                                                                                                                                               _g_free0 (_tmp630_);
                                                                                                                                                                                        } else {
-                                                                                                                                                                                               gchar** _tmp629_ = NULL;
-                                                                                                                                                                                               gint _tmp629__length1 = 0;
-                                                                                                                                                                                               const gchar* _tmp630_ = NULL;
-                                                                                                                                                                                               _tmp629_ = nv;
-                                                                                                                                                                                               _tmp629__length1 = nv_length1;
-                                                                                                                                                                                               _tmp630_ = _tmp629_[0];
-                                                                                                                                                                                               if (g_strcmp0 (_tmp630_, "type_arguments") == 0) {
-                                                                                                                                                                                                       ValaDataType* _tmp631_ = NULL;
-                                                                                                                                                                                                       gchar** _tmp632_ = NULL;
-                                                                                                                                                                                                       gint _tmp632__length1 = 0;
-                                                                                                                                                                                                       const gchar* _tmp633_ = NULL;
-                                                                                                                                                                                                       gchar* _tmp634_ = NULL;
-                                                                                                                                                                                                       gchar* _tmp635_ = NULL;
-                                                                                                                                                                                                       _tmp631_ = param_type;
-                                                                                                                                                                                                       _tmp632_ = nv;
-                                                                                                                                                                                                       _tmp632__length1 = nv_length1;
-                                                                                                                                                                                                       _tmp633_ = _tmp632_[1];
-                                                                                                                                                                                                       _tmp634_ = vala_gidl_parser_eval (self, _tmp633_);
-                                                                                                                                                                                                       _tmp635_ = _tmp634_;
-                                                                                                                                                                                                       vala_gidl_parser_parse_type_arguments_from_string (self, _tmp631_, _tmp635_, NULL);
-                                                                                                                                                                                                       _g_free0 (_tmp635_);
+                                                                                                                                                                                               gchar** _tmp631_ = NULL;
+                                                                                                                                                                                               gint _tmp631__length1 = 0;
+                                                                                                                                                                                               const gchar* _tmp632_ = NULL;
+                                                                                                                                                                                               _tmp631_ = nv;
+                                                                                                                                                                                               _tmp631__length1 = nv_length1;
+                                                                                                                                                                                               _tmp632_ = _tmp631_[0];
+                                                                                                                                                                                               if (g_strcmp0 (_tmp632_, "type_arguments") == 0) {
+                                                                                                                                                                                                       ValaDataType* _tmp633_ = NULL;
+                                                                                                                                                                                                       gchar** _tmp634_ = NULL;
+                                                                                                                                                                                                       gint _tmp634__length1 = 0;
+                                                                                                                                                                                                       const gchar* _tmp635_ = NULL;
+                                                                                                                                                                                                       gchar* _tmp636_ = NULL;
+                                                                                                                                                                                                       gchar* _tmp637_ = NULL;
+                                                                                                                                                                                                       _tmp633_ = param_type;
+                                                                                                                                                                                                       _tmp634_ = nv;
+                                                                                                                                                                                                       _tmp634__length1 = nv_length1;
+                                                                                                                                                                                                       _tmp635_ = _tmp634_[1];
+                                                                                                                                                                                                       _tmp636_ = vala_gidl_parser_eval (self, _tmp635_);
+                                                                                                                                                                                                       _tmp637_ = _tmp636_;
+                                                                                                                                                                                                       vala_gidl_parser_parse_type_arguments_from_string (self, _tmp633_, _tmp637_, NULL);
+                                                                                                                                                                                                       _g_free0 (_tmp637_);
                                                                                                                                                                                                } else {
-                                                                                                                                                                                                       gchar** _tmp636_ = NULL;
-                                                                                                                                                                                                       gint _tmp636__length1 = 0;
-                                                                                                                                                                                                       const gchar* _tmp637_ = NULL;
-                                                                                                                                                                                                       _tmp636_ = nv;
-                                                                                                                                                                                                       _tmp636__length1 = nv_length1;
-                                                                                                                                                                                                       _tmp637_ = _tmp636_[0];
-                                                                                                                                                                                                       if (g_strcmp0 (_tmp637_, "default_value") == 0) {
+                                                                                                                                                                                                       gchar** _tmp638_ = NULL;
+                                                                                                                                                                                                       gint _tmp638__length1 = 0;
+                                                                                                                                                                                                       const gchar* _tmp639_ = NULL;
+                                                                                                                                                                                                       _tmp638_ = nv;
+                                                                                                                                                                                                       _tmp638__length1 = nv_length1;
+                                                                                                                                                                                                       _tmp639_ = _tmp638_[0];
+                                                                                                                                                                                                       if (g_strcmp0 (_tmp639_, "default_value") == 0) {
                                                                                                                                                                                                                gchar* val = NULL;
-                                                                                                                                                                                                               gchar** _tmp638_ = NULL;
-                                                                                                                                                                                                               gint _tmp638__length1 = 0;
-                                                                                                                                                                                                               const gchar* _tmp639_ = NULL;
-                                                                                                                                                                                                               gchar* _tmp640_ = NULL;
+                                                                                                                                                                                                               gchar** _tmp640_ = NULL;
+                                                                                                                                                                                                               gint _tmp640__length1 = 0;
                                                                                                                                                                                                                const gchar* _tmp641_ = NULL;
-                                                                                                                                                                                                               _tmp638_ = nv;
-                                                                                                                                                                                                               _tmp638__length1 = nv_length1;
-                                                                                                                                                                                                               _tmp639_ = _tmp638_[1];
-                                                                                                                                                                                                               _tmp640_ = vala_gidl_parser_eval (self, _tmp639_);
-                                                                                                                                                                                                               val = _tmp640_;
-                                                                                                                                                                                                               _tmp641_ = val;
-                                                                                                                                                                                                               if (g_strcmp0 (_tmp641_, "null") == 0) {
-                                                                                                                                                                                                                       ValaParameter* _tmp642_ = NULL;
-                                                                                                                                                                                                                       ValaDataType* _tmp643_ = NULL;
-                                                                                                                                                                                                                       ValaSourceReference* _tmp644_ = NULL;
-                                                                                                                                                                                                                       ValaSourceReference* _tmp645_ = NULL;
-                                                                                                                                                                                                                       ValaNullLiteral* _tmp646_ = NULL;
-                                                                                                                                                                                                                       ValaNullLiteral* _tmp647_ = NULL;
-                                                                                                                                                                                                                       _tmp642_ = p;
-                                                                                                                                                                                                                       _tmp643_ = param_type;
-                                                                                                                                                                                                                       _tmp644_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp643_);
-                                                                                                                                                                                                                       _tmp645_ = _tmp644_;
-                                                                                                                                                                                                                       _tmp646_ = vala_null_literal_new (_tmp645_);
+                                                                                                                                                                                                               gchar* _tmp642_ = NULL;
+                                                                                                                                                                                                               const gchar* _tmp643_ = NULL;
+                                                                                                                                                                                                               _tmp640_ = nv;
+                                                                                                                                                                                                               _tmp640__length1 = nv_length1;
+                                                                                                                                                                                                               _tmp641_ = _tmp640_[1];
+                                                                                                                                                                                                               _tmp642_ = vala_gidl_parser_eval (self, _tmp641_);
+                                                                                                                                                                                                               val = _tmp642_;
+                                                                                                                                                                                                               _tmp643_ = val;
+                                                                                                                                                                                                               if (g_strcmp0 (_tmp643_, "null") == 0) {
+                                                                                                                                                                                                                       ValaParameter* _tmp644_ = NULL;
+                                                                                                                                                                                                                       ValaDataType* _tmp645_ = NULL;
+                                                                                                                                                                                                                       ValaSourceReference* _tmp646_ = NULL;
+                                                                                                                                                                                                                       ValaSourceReference* _tmp647_ = NULL;
+                                                                                                                                                                                                                       ValaNullLiteral* _tmp648_ = NULL;
+                                                                                                                                                                                                                       ValaNullLiteral* _tmp649_ = NULL;
+                                                                                                                                                                                                                       _tmp644_ = p;
+                                                                                                                                                                                                                       _tmp645_ = param_type;
+                                                                                                                                                                                                                       _tmp646_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp645_);
                                                                                                                                                                                                                        _tmp647_ = _tmp646_;
-                                                                                                                                                                                                                       vala_variable_set_initializer ((ValaVariable*) _tmp642_, (ValaExpression*) _tmp647_);
-                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp647_);
+                                                                                                                                                                                                                       _tmp648_ = vala_null_literal_new (_tmp647_);
+                                                                                                                                                                                                                       _tmp649_ = _tmp648_;
+                                                                                                                                                                                                                       vala_variable_set_initializer ((ValaVariable*) _tmp644_, (ValaExpression*) _tmp649_);
+                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp649_);
                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                       const gchar* _tmp648_ = NULL;
-                                                                                                                                                                                                                       _tmp648_ = val;
-                                                                                                                                                                                                                       if (g_strcmp0 (_tmp648_, "true") == 0) {
-                                                                                                                                                                                                                               ValaParameter* _tmp649_ = NULL;
-                                                                                                                                                                                                                               ValaDataType* _tmp650_ = NULL;
-                                                                                                                                                                                                                               ValaSourceReference* _tmp651_ = NULL;
-                                                                                                                                                                                                                               ValaSourceReference* _tmp652_ = NULL;
-                                                                                                                                                                                                                               ValaBooleanLiteral* _tmp653_ = NULL;
-                                                                                                                                                                                                                               ValaBooleanLiteral* _tmp654_ = NULL;
-                                                                                                                                                                                                                               _tmp649_ = p;
-                                                                                                                                                                                                                               _tmp650_ = param_type;
-                                                                                                                                                                                                                               _tmp651_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp650_);
-                                                                                                                                                                                                                               _tmp652_ = _tmp651_;
-                                                                                                                                                                                                                               _tmp653_ = vala_boolean_literal_new (TRUE, _tmp652_);
+                                                                                                                                                                                                                       const gchar* _tmp650_ = NULL;
+                                                                                                                                                                                                                       _tmp650_ = val;
+                                                                                                                                                                                                                       if (g_strcmp0 (_tmp650_, "true") == 0) {
+                                                                                                                                                                                                                               ValaParameter* _tmp651_ = NULL;
+                                                                                                                                                                                                                               ValaDataType* _tmp652_ = NULL;
+                                                                                                                                                                                                                               ValaSourceReference* _tmp653_ = NULL;
+                                                                                                                                                                                                                               ValaSourceReference* _tmp654_ = NULL;
+                                                                                                                                                                                                                               ValaBooleanLiteral* _tmp655_ = NULL;
+                                                                                                                                                                                                                               ValaBooleanLiteral* _tmp656_ = NULL;
+                                                                                                                                                                                                                               _tmp651_ = p;
+                                                                                                                                                                                                                               _tmp652_ = param_type;
+                                                                                                                                                                                                                               _tmp653_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp652_);
                                                                                                                                                                                                                                _tmp654_ = _tmp653_;
-                                                                                                                                                                                                                               vala_variable_set_initializer ((ValaVariable*) _tmp649_, (ValaExpression*) _tmp654_);
-                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp654_);
+                                                                                                                                                                                                                               _tmp655_ = vala_boolean_literal_new (TRUE, _tmp654_);
+                                                                                                                                                                                                                               _tmp656_ = _tmp655_;
+                                                                                                                                                                                                                               vala_variable_set_initializer ((ValaVariable*) _tmp651_, (ValaExpression*) _tmp656_);
+                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp656_);
                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                               const gchar* _tmp655_ = NULL;
-                                                                                                                                                                                                                               _tmp655_ = val;
-                                                                                                                                                                                                                               if (g_strcmp0 (_tmp655_, "false") == 0) {
-                                                                                                                                                                                                                                       ValaParameter* _tmp656_ = NULL;
-                                                                                                                                                                                                                                       ValaDataType* _tmp657_ = NULL;
-                                                                                                                                                                                                                                       ValaSourceReference* _tmp658_ = NULL;
-                                                                                                                                                                                                                                       ValaSourceReference* _tmp659_ = NULL;
-                                                                                                                                                                                                                                       ValaBooleanLiteral* _tmp660_ = NULL;
-                                                                                                                                                                                                                                       ValaBooleanLiteral* _tmp661_ = NULL;
-                                                                                                                                                                                                                                       _tmp656_ = p;
-                                                                                                                                                                                                                                       _tmp657_ = param_type;
-                                                                                                                                                                                                                                       _tmp658_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp657_);
-                                                                                                                                                                                                                                       _tmp659_ = _tmp658_;
-                                                                                                                                                                                                                                       _tmp660_ = vala_boolean_literal_new (FALSE, _tmp659_);
+                                                                                                                                                                                                                               const gchar* _tmp657_ = NULL;
+                                                                                                                                                                                                                               _tmp657_ = val;
+                                                                                                                                                                                                                               if (g_strcmp0 (_tmp657_, "false") == 0) {
+                                                                                                                                                                                                                                       ValaParameter* _tmp658_ = NULL;
+                                                                                                                                                                                                                                       ValaDataType* _tmp659_ = NULL;
+                                                                                                                                                                                                                                       ValaSourceReference* _tmp660_ = NULL;
+                                                                                                                                                                                                                                       ValaSourceReference* _tmp661_ = NULL;
+                                                                                                                                                                                                                                       ValaBooleanLiteral* _tmp662_ = NULL;
+                                                                                                                                                                                                                                       ValaBooleanLiteral* _tmp663_ = NULL;
+                                                                                                                                                                                                                                       _tmp658_ = p;
+                                                                                                                                                                                                                                       _tmp659_ = param_type;
+                                                                                                                                                                                                                                       _tmp660_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp659_);
                                                                                                                                                                                                                                        _tmp661_ = _tmp660_;
-                                                                                                                                                                                                                                       vala_variable_set_initializer ((ValaVariable*) _tmp656_, (ValaExpression*) _tmp661_);
-                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp661_);
+                                                                                                                                                                                                                                       _tmp662_ = vala_boolean_literal_new (FALSE, _tmp661_);
+                                                                                                                                                                                                                                       _tmp663_ = _tmp662_;
+                                                                                                                                                                                                                                       vala_variable_set_initializer ((ValaVariable*) _tmp658_, (ValaExpression*) _tmp663_);
+                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp663_);
                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                       const gchar* _tmp662_ = NULL;
-                                                                                                                                                                                                                                       _tmp662_ = val;
-                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp662_, "") == 0) {
-                                                                                                                                                                                                                                               ValaParameter* _tmp663_ = NULL;
-                                                                                                                                                                                                                                               ValaDataType* _tmp664_ = NULL;
-                                                                                                                                                                                                                                               ValaSourceReference* _tmp665_ = NULL;
-                                                                                                                                                                                                                                               ValaSourceReference* _tmp666_ = NULL;
-                                                                                                                                                                                                                                               ValaStringLiteral* _tmp667_ = NULL;
-                                                                                                                                                                                                                                               ValaStringLiteral* _tmp668_ = NULL;
-                                                                                                                                                                                                                                               _tmp663_ = p;
-                                                                                                                                                                                                                                               _tmp664_ = param_type;
-                                                                                                                                                                                                                                               _tmp665_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp664_);
-                                                                                                                                                                                                                                               _tmp666_ = _tmp665_;
-                                                                                                                                                                                                                                               _tmp667_ = vala_string_literal_new ("\"\"", _tmp666_);
+                                                                                                                                                                                                                                       const gchar* _tmp664_ = NULL;
+                                                                                                                                                                                                                                       _tmp664_ = val;
+                                                                                                                                                                                                                                       if (g_strcmp0 (_tmp664_, "") == 0) {
+                                                                                                                                                                                                                                               ValaParameter* _tmp665_ = NULL;
+                                                                                                                                                                                                                                               ValaDataType* _tmp666_ = NULL;
+                                                                                                                                                                                                                                               ValaSourceReference* _tmp667_ = NULL;
+                                                                                                                                                                                                                                               ValaSourceReference* _tmp668_ = NULL;
+                                                                                                                                                                                                                                               ValaStringLiteral* _tmp669_ = NULL;
+                                                                                                                                                                                                                                               ValaStringLiteral* _tmp670_ = NULL;
+                                                                                                                                                                                                                                               _tmp665_ = p;
+                                                                                                                                                                                                                                               _tmp666_ = param_type;
+                                                                                                                                                                                                                                               _tmp667_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp666_);
                                                                                                                                                                                                                                                _tmp668_ = _tmp667_;
-                                                                                                                                                                                                                                               vala_variable_set_initializer ((ValaVariable*) _tmp663_, (ValaExpression*) _tmp668_);
-                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp668_);
+                                                                                                                                                                                                                                               _tmp669_ = vala_string_literal_new ("\"\"", _tmp668_);
+                                                                                                                                                                                                                                               _tmp670_ = _tmp669_;
+                                                                                                                                                                                                                                               vala_variable_set_initializer ((ValaVariable*) _tmp665_, (ValaExpression*) _tmp670_);
+                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp670_);
                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                               const gchar* _tmp669_ = NULL;
-                                                                                                                                                                                                                                               gboolean _tmp670_ = FALSE;
-                                                                                                                                                                                                                                               _tmp669_ = val;
-                                                                                                                                                                                                                                               _tmp670_ = int64_try_parse (_tmp669_, NULL);
-                                                                                                                                                                                                                                               if (_tmp670_) {
-                                                                                                                                                                                                                                                       ValaParameter* _tmp671_ = NULL;
-                                                                                                                                                                                                                                                       const gchar* _tmp672_ = NULL;
-                                                                                                                                                                                                                                                       ValaDataType* _tmp673_ = NULL;
-                                                                                                                                                                                                                                                       ValaSourceReference* _tmp674_ = NULL;
-                                                                                                                                                                                                                                                       ValaSourceReference* _tmp675_ = NULL;
-                                                                                                                                                                                                                                                       ValaIntegerLiteral* _tmp676_ = NULL;
-                                                                                                                                                                                                                                                       ValaIntegerLiteral* _tmp677_ = NULL;
-                                                                                                                                                                                                                                                       _tmp671_ = p;
-                                                                                                                                                                                                                                                       _tmp672_ = val;
-                                                                                                                                                                                                                                                       _tmp673_ = param_type;
-                                                                                                                                                                                                                                                       _tmp674_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp673_);
-                                                                                                                                                                                                                                                       _tmp675_ = _tmp674_;
-                                                                                                                                                                                                                                                       _tmp676_ = vala_integer_literal_new (_tmp672_, _tmp675_);
+                                                                                                                                                                                                                                               const gchar* _tmp671_ = NULL;
+                                                                                                                                                                                                                                               gboolean _tmp672_ = FALSE;
+                                                                                                                                                                                                                                               _tmp671_ = val;
+                                                                                                                                                                                                                                               _tmp672_ = int64_try_parse (_tmp671_, NULL);
+                                                                                                                                                                                                                                               if (_tmp672_) {
+                                                                                                                                                                                                                                                       ValaParameter* _tmp673_ = NULL;
+                                                                                                                                                                                                                                                       const gchar* _tmp674_ = NULL;
+                                                                                                                                                                                                                                                       ValaDataType* _tmp675_ = NULL;
+                                                                                                                                                                                                                                                       ValaSourceReference* _tmp676_ = NULL;
+                                                                                                                                                                                                                                                       ValaSourceReference* _tmp677_ = NULL;
+                                                                                                                                                                                                                                                       ValaIntegerLiteral* _tmp678_ = NULL;
+                                                                                                                                                                                                                                                       ValaIntegerLiteral* _tmp679_ = NULL;
+                                                                                                                                                                                                                                                       _tmp673_ = p;
+                                                                                                                                                                                                                                                       _tmp674_ = val;
+                                                                                                                                                                                                                                                       _tmp675_ = param_type;
+                                                                                                                                                                                                                                                       _tmp676_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp675_);
                                                                                                                                                                                                                                                        _tmp677_ = _tmp676_;
-                                                                                                                                                                                                                                                       vala_variable_set_initializer ((ValaVariable*) _tmp671_, (ValaExpression*) _tmp677_);
-                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp677_);
+                                                                                                                                                                                                                                                       _tmp678_ = vala_integer_literal_new (_tmp674_, _tmp677_);
+                                                                                                                                                                                                                                                       _tmp679_ = _tmp678_;
+                                                                                                                                                                                                                                                       vala_variable_set_initializer ((ValaVariable*) _tmp673_, (ValaExpression*) _tmp679_);
+                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp679_);
                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                       const gchar* _tmp678_ = NULL;
-                                                                                                                                                                                                                                                       gboolean _tmp679_ = FALSE;
-                                                                                                                                                                                                                                                       _tmp678_ = val;
-                                                                                                                                                                                                                                                       _tmp679_ = double_try_parse (_tmp678_, NULL);
-                                                                                                                                                                                                                                                       if (_tmp679_) {
-                                                                                                                                                                                                                                                               ValaParameter* _tmp680_ = NULL;
-                                                                                                                                                                                                                                                               const gchar* _tmp681_ = NULL;
-                                                                                                                                                                                                                                                               ValaDataType* _tmp682_ = NULL;
-                                                                                                                                                                                                                                                               ValaSourceReference* _tmp683_ = NULL;
-                                                                                                                                                                                                                                                               ValaSourceReference* _tmp684_ = NULL;
-                                                                                                                                                                                                                                                               ValaRealLiteral* _tmp685_ = NULL;
-                                                                                                                                                                                                                                                               ValaRealLiteral* _tmp686_ = NULL;
-                                                                                                                                                                                                                                                               _tmp680_ = p;
-                                                                                                                                                                                                                                                               _tmp681_ = val;
-                                                                                                                                                                                                                                                               _tmp682_ = param_type;
-                                                                                                                                                                                                                                                               _tmp683_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp682_);
-                                                                                                                                                                                                                                                               _tmp684_ = _tmp683_;
-                                                                                                                                                                                                                                                               _tmp685_ = vala_real_literal_new (_tmp681_, _tmp684_);
+                                                                                                                                                                                                                                                       const gchar* _tmp680_ = NULL;
+                                                                                                                                                                                                                                                       gboolean _tmp681_ = FALSE;
+                                                                                                                                                                                                                                                       _tmp680_ = val;
+                                                                                                                                                                                                                                                       _tmp681_ = double_try_parse (_tmp680_, NULL);
+                                                                                                                                                                                                                                                       if (_tmp681_) {
+                                                                                                                                                                                                                                                               ValaParameter* _tmp682_ = NULL;
+                                                                                                                                                                                                                                                               const gchar* _tmp683_ = NULL;
+                                                                                                                                                                                                                                                               ValaDataType* _tmp684_ = NULL;
+                                                                                                                                                                                                                                                               ValaSourceReference* _tmp685_ = NULL;
+                                                                                                                                                                                                                                                               ValaSourceReference* _tmp686_ = NULL;
+                                                                                                                                                                                                                                                               ValaRealLiteral* _tmp687_ = NULL;
+                                                                                                                                                                                                                                                               ValaRealLiteral* _tmp688_ = NULL;
+                                                                                                                                                                                                                                                               _tmp682_ = p;
+                                                                                                                                                                                                                                                               _tmp683_ = val;
+                                                                                                                                                                                                                                                               _tmp684_ = param_type;
+                                                                                                                                                                                                                                                               _tmp685_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp684_);
                                                                                                                                                                                                                                                                _tmp686_ = _tmp685_;
-                                                                                                                                                                                                                                                               vala_variable_set_initializer ((ValaVariable*) _tmp680_, (ValaExpression*) _tmp686_);
-                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp686_);
+                                                                                                                                                                                                                                                               _tmp687_ = vala_real_literal_new (_tmp683_, _tmp686_);
+                                                                                                                                                                                                                                                               _tmp688_ = _tmp687_;
+                                                                                                                                                                                                                                                               vala_variable_set_initializer ((ValaVariable*) _tmp682_, (ValaExpression*) _tmp688_);
+                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp688_);
                                                                                                                                                                                                                                                        } else {
-                                                                                                                                                                                                                                                               gboolean _tmp687_ = FALSE;
-                                                                                                                                                                                                                                                               const gchar* _tmp688_ = NULL;
                                                                                                                                                                                                                                                                gboolean _tmp689_ = FALSE;
-                                                                                                                                                                                                                                                               _tmp688_ = val;
-                                                                                                                                                                                                                                                               _tmp689_ = g_str_has_prefix (_tmp688_, "\"");
-                                                                                                                                                                                                                                                               if (_tmp689_) {
-                                                                                                                                                                                                                                                                       const gchar* _tmp690_ = NULL;
-                                                                                                                                                                                                                                                                       gboolean _tmp691_ = FALSE;
-                                                                                                                                                                                                                                                                       _tmp690_ = val;
-                                                                                                                                                                                                                                                                       _tmp691_ = g_str_has_suffix (_tmp690_, "\"");
-                                                                                                                                                                                                                                                                       _tmp687_ = _tmp691_;
+                                                                                                                                                                                                                                                               const gchar* _tmp690_ = NULL;
+                                                                                                                                                                                                                                                               gboolean _tmp691_ = FALSE;
+                                                                                                                                                                                                                                                               _tmp690_ = val;
+                                                                                                                                                                                                                                                               _tmp691_ = g_str_has_prefix (_tmp690_, "\"");
+                                                                                                                                                                                                                                                               if (_tmp691_) {
+                                                                                                                                                                                                                                                                       const gchar* _tmp692_ = NULL;
+                                                                                                                                                                                                                                                                       gboolean _tmp693_ = FALSE;
+                                                                                                                                                                                                                                                                       _tmp692_ = val;
+                                                                                                                                                                                                                                                                       _tmp693_ = g_str_has_suffix (_tmp692_, "\"");
+                                                                                                                                                                                                                                                                       _tmp689_ = _tmp693_;
                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                       _tmp687_ = FALSE;
+                                                                                                                                                                                                                                                                       _tmp689_ = FALSE;
                                                                                                                                                                                                                                                                }
-                                                                                                                                                                                                                                                               if (_tmp687_) {
-                                                                                                                                                                                                                                                                       ValaParameter* _tmp692_ = NULL;
-                                                                                                                                                                                                                                                                       const gchar* _tmp693_ = NULL;
-                                                                                                                                                                                                                                                                       ValaDataType* _tmp694_ = NULL;
-                                                                                                                                                                                                                                                                       ValaSourceReference* _tmp695_ = NULL;
-                                                                                                                                                                                                                                                                       ValaSourceReference* _tmp696_ = NULL;
-                                                                                                                                                                                                                                                                       ValaStringLiteral* _tmp697_ = NULL;
-                                                                                                                                                                                                                                                                       ValaStringLiteral* _tmp698_ = NULL;
-                                                                                                                                                                                                                                                                       _tmp692_ = p;
-                                                                                                                                                                                                                                                                       _tmp693_ = val;
-                                                                                                                                                                                                                                                                       _tmp694_ = param_type;
-                                                                                                                                                                                                                                                                       _tmp695_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp694_);
-                                                                                                                                                                                                                                                                       _tmp696_ = _tmp695_;
-                                                                                                                                                                                                                                                                       _tmp697_ = vala_string_literal_new (_tmp693_, _tmp696_);
+                                                                                                                                                                                                                                                               if (_tmp689_) {
+                                                                                                                                                                                                                                                                       ValaParameter* _tmp694_ = NULL;
+                                                                                                                                                                                                                                                                       const gchar* _tmp695_ = NULL;
+                                                                                                                                                                                                                                                                       ValaDataType* _tmp696_ = NULL;
+                                                                                                                                                                                                                                                                       ValaSourceReference* _tmp697_ = NULL;
+                                                                                                                                                                                                                                                                       ValaSourceReference* _tmp698_ = NULL;
+                                                                                                                                                                                                                                                                       ValaStringLiteral* _tmp699_ = NULL;
+                                                                                                                                                                                                                                                                       ValaStringLiteral* _tmp700_ = NULL;
+                                                                                                                                                                                                                                                                       _tmp694_ = p;
+                                                                                                                                                                                                                                                                       _tmp695_ = val;
+                                                                                                                                                                                                                                                                       _tmp696_ = param_type;
+                                                                                                                                                                                                                                                                       _tmp697_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp696_);
                                                                                                                                                                                                                                                                        _tmp698_ = _tmp697_;
-                                                                                                                                                                                                                                                                       vala_variable_set_initializer ((ValaVariable*) _tmp692_, (ValaExpression*) _tmp698_);
-                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp698_);
+                                                                                                                                                                                                                                                                       _tmp699_ = vala_string_literal_new (_tmp695_, _tmp698_);
+                                                                                                                                                                                                                                                                       _tmp700_ = _tmp699_;
+                                                                                                                                                                                                                                                                       vala_variable_set_initializer ((ValaVariable*) _tmp694_, (ValaExpression*) _tmp700_);
+                                                                                                                                                                                                                                                                       _vala_code_node_unref0 (_tmp700_);
                                                                                                                                                                                                                                                                } else {
-                                                                                                                                                                                                                                                                       const gchar* _tmp699_ = NULL;
-                                                                                                                                                                                                                                                                       gchar** _tmp700_ = NULL;
-                                                                                                                                                                                                                                                                       gchar** _tmp701_ = NULL;
-                                                                                                                                                                                                                                                                       _tmp699_ = val;
-                                                                                                                                                                                                                                                                       _tmp701_ = _tmp700_ = g_strsplit (_tmp699_, ".", 0);
+                                                                                                                                                                                                                                                                       const gchar* _tmp701_ = NULL;
+                                                                                                                                                                                                                                                                       gchar** _tmp702_ = NULL;
+                                                                                                                                                                                                                                                                       gchar** _tmp703_ = NULL;
+                                                                                                                                                                                                                                                                       _tmp701_ = val;
+                                                                                                                                                                                                                                                                       _tmp703_ = _tmp702_ = g_strsplit (_tmp701_, ".", 0);
                                                                                                                                                                                                                                                                        {
                                                                                                                                                                                                                                                                                gchar** member_collection = NULL;
                                                                                                                                                                                                                                                                                gint member_collection_length1 = 0;
                                                                                                                                                                                                                                                                                gint _member_collection_size_ = 0;
                                                                                                                                                                                                                                                                                gint member_it = 0;
-                                                                                                                                                                                                                                                                               member_collection = _tmp701_;
-                                                                                                                                                                                                                                                                               member_collection_length1 = _vala_array_length (_tmp700_);
-                                                                                                                                                                                                                                                                               for (member_it = 0; member_it < _vala_array_length (_tmp700_); member_it = member_it + 1) {
-                                                                                                                                                                                                                                                                                       gchar* _tmp702_ = NULL;
+                                                                                                                                                                                                                                                                               member_collection = _tmp703_;
+                                                                                                                                                                                                                                                                               member_collection_length1 = _vala_array_length (_tmp702_);
+                                                                                                                                                                                                                                                                               for (member_it = 0; member_it < _vala_array_length (_tmp702_); member_it = member_it + 1) {
+                                                                                                                                                                                                                                                                                       gchar* _tmp704_ = NULL;
                                                                                                                                                                                                                                                                                        gchar* member = NULL;
-                                                                                                                                                                                                                                                                                       _tmp702_ = g_strdup (member_collection[member_it]);
-                                                                                                                                                                                                                                                                                       member = _tmp702_;
+                                                                                                                                                                                                                                                                                       _tmp704_ = g_strdup (member_collection[member_it]);
+                                                                                                                                                                                                                                                                                       member = _tmp704_;
                                                                                                                                                                                                                                                                                        {
-                                                                                                                                                                                                                                                                                               ValaParameter* _tmp703_ = NULL;
-                                                                                                                                                                                                                                                                                               ValaParameter* _tmp704_ = NULL;
-                                                                                                                                                                                                                                                                                               ValaExpression* _tmp705_ = NULL;
-                                                                                                                                                                                                                                                                                               ValaExpression* _tmp706_ = NULL;
-                                                                                                                                                                                                                                                                                               const gchar* _tmp707_ = NULL;
-                                                                                                                                                                                                                                                                                               ValaDataType* _tmp708_ = NULL;
-                                                                                                                                                                                                                                                                                               ValaSourceReference* _tmp709_ = NULL;
-                                                                                                                                                                                                                                                                                               ValaSourceReference* _tmp710_ = NULL;
-                                                                                                                                                                                                                                                                                               ValaMemberAccess* _tmp711_ = NULL;
-                                                                                                                                                                                                                                                                                               ValaMemberAccess* _tmp712_ = NULL;
-                                                                                                                                                                                                                                                                                               _tmp703_ = p;
-                                                                                                                                                                                                                                                                                               _tmp704_ = p;
-                                                                                                                                                                                                                                                                                               _tmp705_ = vala_variable_get_initializer ((ValaVariable*) _tmp704_);
-                                                                                                                                                                                                                                                                                               _tmp706_ = _tmp705_;
-                                                                                                                                                                                                                                                                                               _tmp707_ = member;
-                                                                                                                                                                                                                                                                                               _tmp708_ = param_type;
-                                                                                                                                                                                                                                                                                               _tmp709_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp708_);
-                                                                                                                                                                                                                                                                                               _tmp710_ = _tmp709_;
-                                                                                                                                                                                                                                                                                               _tmp711_ = vala_member_access_new (_tmp706_, _tmp707_, _tmp710_);
+                                                                                                                                                                                                                                                                                               ValaParameter* _tmp705_ = NULL;
+                                                                                                                                                                                                                                                                                               ValaParameter* _tmp706_ = NULL;
+                                                                                                                                                                                                                                                                                               ValaExpression* _tmp707_ = NULL;
+                                                                                                                                                                                                                                                                                               ValaExpression* _tmp708_ = NULL;
+                                                                                                                                                                                                                                                                                               const gchar* _tmp709_ = NULL;
+                                                                                                                                                                                                                                                                                               ValaDataType* _tmp710_ = NULL;
+                                                                                                                                                                                                                                                                                               ValaSourceReference* _tmp711_ = NULL;
+                                                                                                                                                                                                                                                                                               ValaSourceReference* _tmp712_ = NULL;
+                                                                                                                                                                                                                                                                                               ValaMemberAccess* _tmp713_ = NULL;
+                                                                                                                                                                                                                                                                                               ValaMemberAccess* _tmp714_ = NULL;
+                                                                                                                                                                                                                                                                                               _tmp705_ = p;
+                                                                                                                                                                                                                                                                                               _tmp706_ = p;
+                                                                                                                                                                                                                                                                                               _tmp707_ = vala_variable_get_initializer ((ValaVariable*) _tmp706_);
+                                                                                                                                                                                                                                                                                               _tmp708_ = _tmp707_;
+                                                                                                                                                                                                                                                                                               _tmp709_ = member;
+                                                                                                                                                                                                                                                                                               _tmp710_ = param_type;
+                                                                                                                                                                                                                                                                                               _tmp711_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp710_);
                                                                                                                                                                                                                                                                                                _tmp712_ = _tmp711_;
-                                                                                                                                                                                                                                                                                               vala_variable_set_initializer ((ValaVariable*) _tmp703_, (ValaExpression*) _tmp712_);
-                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp712_);
+                                                                                                                                                                                                                                                                                               _tmp713_ = vala_member_access_new (_tmp708_, _tmp709_, _tmp712_);
+                                                                                                                                                                                                                                                                                               _tmp714_ = _tmp713_;
+                                                                                                                                                                                                                                                                                               vala_variable_set_initializer ((ValaVariable*) _tmp705_, (ValaExpression*) _tmp714_);
+                                                                                                                                                                                                                                                                                               _vala_code_node_unref0 (_tmp714_);
                                                                                                                                                                                                                                                                                                _g_free0 (member);
                                                                                                                                                                                                                                                                                        }
                                                                                                                                                                                                                                                                                }
@@ -15643,253 +15670,256 @@ static ValaMethod* vala_gidl_parser_create_method (ValaGIdlParser* self, const g
                                                }
                                        }
                                }
-                               _tmp714_ = last_param;
-                               if (_tmp714_ != NULL) {
-                                       ValaParameter* _tmp715_ = NULL;
-                                       const gchar* _tmp716_ = NULL;
-                                       const gchar* _tmp717_ = NULL;
-                                       ValaParameter* _tmp718_ = NULL;
+                               _tmp716_ = last_param;
+                               if (_tmp716_ != NULL) {
+                                       ValaParameter* _tmp717_ = NULL;
+                                       const gchar* _tmp718_ = NULL;
                                        const gchar* _tmp719_ = NULL;
-                                       const gchar* _tmp720_ = NULL;
-                                       gchar* _tmp721_ = NULL;
-                                       gchar* _tmp722_ = NULL;
-                                       _tmp715_ = p;
-                                       _tmp716_ = vala_symbol_get_name ((ValaSymbol*) _tmp715_);
-                                       _tmp717_ = _tmp716_;
-                                       _tmp718_ = last_param;
-                                       _tmp719_ = vala_symbol_get_name ((ValaSymbol*) _tmp718_);
-                                       _tmp720_ = _tmp719_;
-                                       _tmp721_ = g_strconcat ("n_", _tmp720_, NULL);
+                                       ValaParameter* _tmp720_ = NULL;
+                                       const gchar* _tmp721_ = NULL;
+                                       const gchar* _tmp722_ = NULL;
+                                       gchar* _tmp723_ = NULL;
+                                       gchar* _tmp724_ = NULL;
+                                       _tmp717_ = p;
+                                       _tmp718_ = vala_symbol_get_name ((ValaSymbol*) _tmp717_);
+                                       _tmp719_ = _tmp718_;
+                                       _tmp720_ = last_param;
+                                       _tmp721_ = vala_symbol_get_name ((ValaSymbol*) _tmp720_);
                                        _tmp722_ = _tmp721_;
-                                       _tmp713_ = g_strcmp0 (_tmp717_, _tmp722_) == 0;
-                                       _g_free0 (_tmp722_);
+                                       _tmp723_ = g_strconcat ("n_", _tmp722_, NULL);
+                                       _tmp724_ = _tmp723_;
+                                       _tmp715_ = g_strcmp0 (_tmp719_, _tmp724_) == 0;
+                                       _g_free0 (_tmp724_);
                                } else {
-                                       _tmp713_ = FALSE;
+                                       _tmp715_ = FALSE;
                                }
-                               if (_tmp713_) {
-                                       ValaDataType* _tmp723_ = NULL;
-                                       _tmp723_ = last_param_type;
-                                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp723_, VALA_TYPE_ARRAY_TYPE)) {
-                                               ValaDataType* _tmp724_ = NULL;
-                                               ValaDataType* _tmp725_ = NULL;
-                                               ValaSourceReference* _tmp726_ = NULL;
-                                               ValaSourceReference* _tmp727_ = NULL;
-                                               ValaArrayType* _tmp728_ = NULL;
-                                               ValaParameter* _tmp729_ = NULL;
-                                               ValaDataType* _tmp730_ = NULL;
-                                               ValaParameter* _tmp731_ = NULL;
-                                               _tmp724_ = last_param_type;
-                                               _tmp725_ = last_param_type;
-                                               _tmp726_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp725_);
-                                               _tmp727_ = _tmp726_;
-                                               _tmp728_ = vala_array_type_new (_tmp724_, 1, _tmp727_);
+                               if (_tmp715_) {
+                                       ValaDataType* _tmp725_ = NULL;
+                                       _tmp725_ = last_param_type;
+                                       if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp725_, VALA_TYPE_ARRAY_TYPE)) {
+                                               ValaDataType* _tmp726_ = NULL;
+                                               ValaDataType* _tmp727_ = NULL;
+                                               ValaDataType* _tmp728_ = NULL;
+                                               ValaSourceReference* _tmp729_ = NULL;
+                                               ValaSourceReference* _tmp730_ = NULL;
+                                               ValaArrayType* _tmp731_ = NULL;
+                                               ValaParameter* _tmp732_ = NULL;
+                                               ValaDataType* _tmp733_ = NULL;
+                                               ValaParameter* _tmp734_ = NULL;
+                                               _tmp726_ = last_param_type;
+                                               vala_data_type_set_value_owned (_tmp726_, TRUE);
+                                               _tmp727_ = last_param_type;
+                                               _tmp728_ = last_param_type;
+                                               _tmp729_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp728_);
+                                               _tmp730_ = _tmp729_;
+                                               _tmp731_ = vala_array_type_new (_tmp727_, 1, _tmp730_);
                                                _vala_code_node_unref0 (last_param_type);
-                                               last_param_type = (ValaDataType*) _tmp728_;
-                                               _tmp729_ = last_param;
-                                               _tmp730_ = last_param_type;
-                                               vala_variable_set_variable_type ((ValaVariable*) _tmp729_, _tmp730_);
-                                               _tmp731_ = last_param;
-                                               vala_parameter_set_direction (_tmp731_, VALA_PARAMETER_DIRECTION_IN);
+                                               last_param_type = (ValaDataType*) _tmp731_;
+                                               _tmp732_ = last_param;
+                                               _tmp733_ = last_param_type;
+                                               vala_variable_set_variable_type ((ValaVariable*) _tmp732_, _tmp733_);
+                                               _tmp734_ = last_param;
+                                               vala_parameter_set_direction (_tmp734_, VALA_PARAMETER_DIRECTION_IN);
                                        }
                                        hide_param = TRUE;
                                } else {
-                                       gboolean _tmp732_ = FALSE;
-                                       ValaParameter* _tmp733_ = NULL;
-                                       _tmp733_ = last_param;
-                                       if (_tmp733_ != NULL) {
-                                               ValaParameter* _tmp734_ = NULL;
-                                               const gchar* _tmp735_ = NULL;
-                                               const gchar* _tmp736_ = NULL;
-                                               _tmp734_ = p;
-                                               _tmp735_ = vala_symbol_get_name ((ValaSymbol*) _tmp734_);
-                                               _tmp736_ = _tmp735_;
-                                               _tmp732_ = g_strcmp0 (_tmp736_, "user_data") == 0;
+                                       gboolean _tmp735_ = FALSE;
+                                       ValaParameter* _tmp736_ = NULL;
+                                       _tmp736_ = last_param;
+                                       if (_tmp736_ != NULL) {
+                                               ValaParameter* _tmp737_ = NULL;
+                                               const gchar* _tmp738_ = NULL;
+                                               const gchar* _tmp739_ = NULL;
+                                               _tmp737_ = p;
+                                               _tmp738_ = vala_symbol_get_name ((ValaSymbol*) _tmp737_);
+                                               _tmp739_ = _tmp738_;
+                                               _tmp735_ = g_strcmp0 (_tmp739_, "user_data") == 0;
                                        } else {
-                                               _tmp732_ = FALSE;
+                                               _tmp735_ = FALSE;
                                        }
-                                       if (_tmp732_) {
+                                       if (_tmp735_) {
                                                hide_param = TRUE;
                                        }
                                }
-                               _tmp738_ = show_param;
-                               if (_tmp738_) {
-                                       _tmp737_ = TRUE;
+                               _tmp741_ = show_param;
+                               if (_tmp741_) {
+                                       _tmp740_ = TRUE;
                                } else {
-                                       gboolean _tmp739_ = FALSE;
-                                       _tmp739_ = hide_param;
-                                       _tmp737_ = !_tmp739_;
-                               }
-                               if (_tmp737_) {
-                                       ValaMethod* _tmp740_ = NULL;
-                                       ValaParameter* _tmp741_ = NULL;
                                        gboolean _tmp742_ = FALSE;
+                                       _tmp742_ = hide_param;
+                                       _tmp740_ = !_tmp742_;
+                               }
+                               if (_tmp740_) {
+                                       ValaMethod* _tmp743_ = NULL;
+                                       ValaParameter* _tmp744_ = NULL;
                                        gboolean _tmp745_ = FALSE;
-                                       _tmp740_ = m;
-                                       _tmp741_ = p;
-                                       vala_method_add_parameter (_tmp740_, _tmp741_);
-                                       _tmp742_ = set_array_length_pos;
-                                       if (_tmp742_) {
-                                               ValaParameter* _tmp743_ = NULL;
-                                               gdouble _tmp744_ = 0.0;
-                                               _tmp743_ = p;
-                                               _tmp744_ = array_length_pos;
-                                               vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp743_, "CCode", "array_length_pos", _tmp744_, NULL);
-                                       }
-                                       _tmp745_ = set_delegate_target_pos;
+                                       gboolean _tmp748_ = FALSE;
+                                       _tmp743_ = m;
+                                       _tmp744_ = p;
+                                       vala_method_add_parameter (_tmp743_, _tmp744_);
+                                       _tmp745_ = set_array_length_pos;
                                        if (_tmp745_) {
                                                ValaParameter* _tmp746_ = NULL;
                                                gdouble _tmp747_ = 0.0;
                                                _tmp746_ = p;
-                                               _tmp747_ = delegate_target_pos;
-                                               vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp746_, "CCode", "delegate_target_pos", _tmp747_, NULL);
+                                               _tmp747_ = array_length_pos;
+                                               vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp746_, "CCode", "array_length_pos", _tmp747_, NULL);
+                                       }
+                                       _tmp748_ = set_delegate_target_pos;
+                                       if (_tmp748_) {
+                                               ValaParameter* _tmp749_ = NULL;
+                                               gdouble _tmp750_ = 0.0;
+                                               _tmp749_ = p;
+                                               _tmp750_ = delegate_target_pos;
+                                               vala_code_node_set_attribute_double ((ValaCodeNode*) _tmp749_, "CCode", "delegate_target_pos", _tmp750_, NULL);
                                        }
                                }
-                               _tmp748_ = p;
-                               _tmp749_ = _vala_code_node_ref0 (_tmp748_);
+                               _tmp751_ = p;
+                               _tmp752_ = _vala_code_node_ref0 (_tmp751_);
                                _vala_code_node_unref0 (last_param);
-                               last_param = _tmp749_;
-                               _tmp750_ = param_type;
-                               _tmp751_ = _vala_code_node_ref0 (_tmp750_);
+                               last_param = _tmp752_;
+                               _tmp753_ = param_type;
+                               _tmp754_ = _vala_code_node_ref0 (_tmp753_);
                                _vala_code_node_unref0 (last_param_type);
-                               last_param_type = _tmp751_;
+                               last_param_type = _tmp754_;
                                _vala_code_node_unref0 (p);
                                _vala_code_node_unref0 (param_type);
                                _g_free0 (param_name);
                        }
                }
        }
-       _tmp753_ = suppress_throws;
-       if (_tmp753_ == FALSE) {
-               const gchar* _tmp754_ = NULL;
-               _tmp754_ = error_types;
-               _tmp752_ = _tmp754_ != NULL;
+       _tmp756_ = suppress_throws;
+       if (_tmp756_ == FALSE) {
+               const gchar* _tmp757_ = NULL;
+               _tmp757_ = error_types;
+               _tmp755_ = _tmp757_ != NULL;
        } else {
-               _tmp752_ = FALSE;
+               _tmp755_ = FALSE;
        }
-       if (_tmp752_) {
+       if (_tmp755_) {
                gchar** type_args = NULL;
-               const gchar* _tmp755_ = NULL;
-               gchar* _tmp756_ = NULL;
-               gchar* _tmp757_ = NULL;
-               gchar** _tmp758_ = NULL;
-               gchar** _tmp759_ = NULL;
-               gchar** _tmp760_ = NULL;
-               gint _tmp760__length1 = 0;
+               const gchar* _tmp758_ = NULL;
+               gchar* _tmp759_ = NULL;
+               gchar* _tmp760_ = NULL;
+               gchar** _tmp761_ = NULL;
+               gchar** _tmp762_ = NULL;
+               gchar** _tmp763_ = NULL;
+               gint _tmp763__length1 = 0;
                gint type_args_length1 = 0;
                gint _type_args_size_ = 0;
-               gchar** _tmp761_ = NULL;
-               gint _tmp761__length1 = 0;
-               _tmp755_ = error_types;
-               _tmp756_ = vala_gidl_parser_eval (self, _tmp755_);
-               _tmp757_ = _tmp756_;
-               _tmp759_ = _tmp758_ = g_strsplit (_tmp757_, ",", 0);
+               gchar** _tmp764_ = NULL;
+               gint _tmp764__length1 = 0;
+               _tmp758_ = error_types;
+               _tmp759_ = vala_gidl_parser_eval (self, _tmp758_);
                _tmp760_ = _tmp759_;
-               _tmp760__length1 = _vala_array_length (_tmp758_);
-               _g_free0 (_tmp757_);
-               type_args = _tmp760_;
-               type_args_length1 = _tmp760__length1;
+               _tmp762_ = _tmp761_ = g_strsplit (_tmp760_, ",", 0);
+               _tmp763_ = _tmp762_;
+               _tmp763__length1 = _vala_array_length (_tmp761_);
+               _g_free0 (_tmp760_);
+               type_args = _tmp763_;
+               type_args_length1 = _tmp763__length1;
                _type_args_size_ = type_args_length1;
-               _tmp761_ = type_args;
-               _tmp761__length1 = type_args_length1;
+               _tmp764_ = type_args;
+               _tmp764__length1 = type_args_length1;
                {
                        gchar** type_arg_collection = NULL;
                        gint type_arg_collection_length1 = 0;
                        gint _type_arg_collection_size_ = 0;
                        gint type_arg_it = 0;
-                       type_arg_collection = _tmp761_;
-                       type_arg_collection_length1 = _tmp761__length1;
-                       for (type_arg_it = 0; type_arg_it < _tmp761__length1; type_arg_it = type_arg_it + 1) {
-                               gchar* _tmp762_ = NULL;
+                       type_arg_collection = _tmp764_;
+                       type_arg_collection_length1 = _tmp764__length1;
+                       for (type_arg_it = 0; type_arg_it < _tmp764__length1; type_arg_it = type_arg_it + 1) {
+                               gchar* _tmp765_ = NULL;
                                gchar* type_arg = NULL;
-                               _tmp762_ = g_strdup (type_arg_collection[type_arg_it]);
-                               type_arg = _tmp762_;
+                               _tmp765_ = g_strdup (type_arg_collection[type_arg_it]);
+                               type_arg = _tmp765_;
                                {
-                                       ValaMethod* _tmp763_ = NULL;
-                                       const gchar* _tmp764_ = NULL;
-                                       ValaDataType* _tmp765_ = NULL;
-                                       ValaDataType* _tmp766_ = NULL;
-                                       _tmp763_ = m;
-                                       _tmp764_ = type_arg;
-                                       _tmp765_ = vala_gidl_parser_parse_type_from_string (self, _tmp764_, TRUE, NULL);
-                                       _tmp766_ = _tmp765_;
-                                       vala_code_node_add_error_type ((ValaCodeNode*) _tmp763_, _tmp766_);
-                                       _vala_code_node_unref0 (_tmp766_);
+                                       ValaMethod* _tmp766_ = NULL;
+                                       const gchar* _tmp767_ = NULL;
+                                       ValaDataType* _tmp768_ = NULL;
+                                       ValaDataType* _tmp769_ = NULL;
+                                       _tmp766_ = m;
+                                       _tmp767_ = type_arg;
+                                       _tmp768_ = vala_gidl_parser_parse_type_from_string (self, _tmp767_, TRUE, NULL);
+                                       _tmp769_ = _tmp768_;
+                                       vala_code_node_add_error_type ((ValaCodeNode*) _tmp766_, _tmp769_);
+                                       _vala_code_node_unref0 (_tmp769_);
                                        _g_free0 (type_arg);
                                }
                        }
                }
                type_args = (_vala_array_free (type_args, type_args_length1, (GDestroyNotify) g_free), NULL);
        }
-       _tmp767_ = first;
-       if (_tmp767_) {
-               ValaMethod* _tmp768_ = NULL;
-               _tmp768_ = m;
-               vala_method_set_binding (_tmp768_, VALA_MEMBER_BINDING_STATIC);
+       _tmp770_ = first;
+       if (_tmp770_) {
+               ValaMethod* _tmp771_ = NULL;
+               _tmp771_ = m;
+               vala_method_set_binding (_tmp771_, VALA_MEMBER_BINDING_STATIC);
        }
-       _tmp770_ = last_param;
-       if (_tmp770_ != NULL) {
-               ValaParameter* _tmp771_ = NULL;
-               const gchar* _tmp772_ = NULL;
-               const gchar* _tmp773_ = NULL;
-               gboolean _tmp774_ = FALSE;
-               _tmp771_ = last_param;
-               _tmp772_ = vala_symbol_get_name ((ValaSymbol*) _tmp771_);
-               _tmp773_ = _tmp772_;
-               _tmp774_ = g_str_has_prefix (_tmp773_, "first_");
-               _tmp769_ = _tmp774_;
+       _tmp773_ = last_param;
+       if (_tmp773_ != NULL) {
+               ValaParameter* _tmp774_ = NULL;
+               const gchar* _tmp775_ = NULL;
+               const gchar* _tmp776_ = NULL;
+               gboolean _tmp777_ = FALSE;
+               _tmp774_ = last_param;
+               _tmp775_ = vala_symbol_get_name ((ValaSymbol*) _tmp774_);
+               _tmp776_ = _tmp775_;
+               _tmp777_ = g_str_has_prefix (_tmp776_, "first_");
+               _tmp772_ = _tmp777_;
        } else {
-               _tmp769_ = FALSE;
+               _tmp772_ = FALSE;
        }
-       if (_tmp769_) {
-               ValaParameter* _tmp775_ = NULL;
-               _tmp775_ = last_param;
-               vala_parameter_set_ellipsis (_tmp775_, TRUE);
+       if (_tmp772_) {
+               ValaParameter* _tmp778_ = NULL;
+               _tmp778_ = last_param;
+               vala_parameter_set_ellipsis (_tmp778_, TRUE);
        } else {
-               gboolean _tmp776_ = FALSE;
-               _tmp776_ = add_ellipsis;
-               if (_tmp776_) {
-                       ValaMethod* _tmp777_ = NULL;
-                       ValaParameter* _tmp778_ = NULL;
-                       ValaParameter* _tmp779_ = NULL;
-                       _tmp777_ = m;
-                       _tmp778_ = vala_parameter_new_with_ellipsis (NULL);
-                       _tmp779_ = _tmp778_;
-                       vala_method_add_parameter (_tmp777_, _tmp779_);
-                       _vala_code_node_unref0 (_tmp779_);
+               gboolean _tmp779_ = FALSE;
+               _tmp779_ = add_ellipsis;
+               if (_tmp779_) {
+                       ValaMethod* _tmp780_ = NULL;
+                       ValaParameter* _tmp781_ = NULL;
+                       ValaParameter* _tmp782_ = NULL;
+                       _tmp780_ = m;
+                       _tmp781_ = vala_parameter_new_with_ellipsis (NULL);
+                       _tmp782_ = _tmp781_;
+                       vala_method_add_parameter (_tmp780_, _tmp782_);
+                       _vala_code_node_unref0 (_tmp782_);
                }
        }
-       _tmp780_ = container;
-       if (_tmp780_ == NULL) {
-               ValaTypeSymbol* _tmp781_ = NULL;
-               ValaSymbol* _tmp782_ = NULL;
-               ValaSymbol* _tmp783_ = NULL;
-               _tmp781_ = self->priv->current_data_type;
-               _tmp782_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp781_);
+       _tmp783_ = container;
+       if (_tmp783_ == NULL) {
+               ValaTypeSymbol* _tmp784_ = NULL;
+               ValaSymbol* _tmp785_ = NULL;
+               ValaSymbol* _tmp786_ = NULL;
+               _tmp784_ = self->priv->current_data_type;
+               _tmp785_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp784_);
                _vala_code_node_unref0 (container);
-               container = _tmp782_;
-               _tmp783_ = container;
-               if (_tmp783_ == NULL) {
-                       ValaNamespace* _tmp784_ = NULL;
-                       ValaSymbol* _tmp785_ = NULL;
-                       _tmp784_ = self->priv->current_namespace;
-                       _tmp785_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp784_);
+               container = _tmp785_;
+               _tmp786_ = container;
+               if (_tmp786_ == NULL) {
+                       ValaNamespace* _tmp787_ = NULL;
+                       ValaSymbol* _tmp788_ = NULL;
+                       _tmp787_ = self->priv->current_namespace;
+                       _tmp788_ = _vala_code_node_ref0 ((ValaSymbol*) _tmp787_);
                        _vala_code_node_unref0 (container);
-                       container = _tmp785_;
+                       container = _tmp788_;
                }
        }
-       _tmp786_ = symbol;
-       _tmp787_ = m;
-       _tmp788_ = container;
-       _tmp789_ = vala_gidl_parser_get_cname (self, (ValaSymbol*) _tmp787_, _tmp788_);
-       _tmp790_ = _tmp789_;
-       _tmp791_ = g_strcmp0 (_tmp786_, _tmp790_) != 0;
-       _g_free0 (_tmp790_);
-       if (_tmp791_) {
-               ValaMethod* _tmp792_ = NULL;
-               const gchar* _tmp793_ = NULL;
-               _tmp792_ = m;
-               _tmp793_ = symbol;
-               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp792_, "CCode", "cname", _tmp793_, NULL);
+       _tmp789_ = symbol;
+       _tmp790_ = m;
+       _tmp791_ = container;
+       _tmp792_ = vala_gidl_parser_get_cname (self, (ValaSymbol*) _tmp790_, _tmp791_);
+       _tmp793_ = _tmp792_;
+       _tmp794_ = g_strcmp0 (_tmp789_, _tmp793_) != 0;
+       _g_free0 (_tmp793_);
+       if (_tmp794_) {
+               ValaMethod* _tmp795_ = NULL;
+               const gchar* _tmp796_ = NULL;
+               _tmp795_ = m;
+               _tmp796_ = symbol;
+               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp795_, "CCode", "cname", _tmp796_, NULL);
        }
        result = m;
        _vala_code_node_unref0 (last_param_type);
@@ -17146,33 +17176,33 @@ static ValaField* vala_gidl_parser_parse_field (ValaGIdlParser* self, GIdlNodeFi
        gint _attributes_size_ = 0;
        gchar** _tmp15_ = NULL;
        gint _tmp15__length1 = 0;
-       gboolean _tmp134_ = FALSE;
-       GIdlNode* _tmp135_ = NULL;
-       const gchar* _tmp136_ = NULL;
-       gboolean _tmp137_ = FALSE;
-       ValaSet* _tmp139_ = NULL;
+       gboolean _tmp135_ = FALSE;
+       GIdlNode* _tmp136_ = NULL;
+       const gchar* _tmp137_ = NULL;
+       gboolean _tmp138_ = FALSE;
+       ValaSet* _tmp140_ = NULL;
        gchar* field_name = NULL;
-       GIdlNode* _tmp143_ = NULL;
-       const gchar* _tmp144_ = NULL;
-       gchar* _tmp145_ = NULL;
-       const gchar* _tmp146_ = NULL;
+       GIdlNode* _tmp144_ = NULL;
+       const gchar* _tmp145_ = NULL;
+       gchar* _tmp146_ = NULL;
+       const gchar* _tmp147_ = NULL;
        ValaField* field = NULL;
-       const gchar* _tmp148_ = NULL;
-       ValaDataType* _tmp149_ = NULL;
-       ValaSourceReference* _tmp150_ = NULL;
-       ValaField* _tmp151_ = NULL;
+       const gchar* _tmp149_ = NULL;
+       ValaDataType* _tmp150_ = NULL;
+       ValaSourceReference* _tmp151_ = NULL;
        ValaField* _tmp152_ = NULL;
-       const gchar* _tmp153_ = NULL;
-       GIdlNode* _tmp154_ = NULL;
-       const gchar* _tmp155_ = NULL;
-       gboolean _tmp159_ = FALSE;
-       gboolean _tmp167_ = FALSE;
-       const gchar* _tmp169_ = NULL;
-       const gchar* _tmp172_ = NULL;
-       gboolean _tmp175_ = FALSE;
-       gboolean _tmp177_ = FALSE;
-       const gchar* _tmp178_ = NULL;
-       gboolean _tmp190_ = FALSE;
+       ValaField* _tmp153_ = NULL;
+       const gchar* _tmp154_ = NULL;
+       GIdlNode* _tmp155_ = NULL;
+       const gchar* _tmp156_ = NULL;
+       gboolean _tmp160_ = FALSE;
+       gboolean _tmp168_ = FALSE;
+       const gchar* _tmp170_ = NULL;
+       const gchar* _tmp173_ = NULL;
+       gboolean _tmp176_ = FALSE;
+       gboolean _tmp178_ = FALSE;
+       const gchar* _tmp179_ = NULL;
+       gboolean _tmp191_ = FALSE;
        g_return_val_if_fail (self != NULL, NULL);
        g_return_val_if_fail (field_node != NULL, NULL);
        _tmp0_ = field_node;
@@ -17304,335 +17334,338 @@ static ValaField* vala_gidl_parser_parse_field (ValaGIdlParser* self, GIdlNodeFi
                                                        if (_tmp34_) {
                                                                ValaDataType* _tmp35_ = NULL;
                                                                ValaDataType* _tmp36_ = NULL;
-                                                               ValaSourceReference* _tmp37_ = NULL;
+                                                               ValaDataType* _tmp37_ = NULL;
                                                                ValaSourceReference* _tmp38_ = NULL;
-                                                               ValaArrayType* _tmp39_ = NULL;
+                                                               ValaSourceReference* _tmp39_ = NULL;
+                                                               ValaArrayType* _tmp40_ = NULL;
                                                                _tmp35_ = type;
+                                                               vala_data_type_set_value_owned (_tmp35_, TRUE);
                                                                _tmp36_ = type;
-                                                               _tmp37_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp36_);
-                                                               _tmp38_ = _tmp37_;
-                                                               _tmp39_ = vala_array_type_new (_tmp35_, 1, _tmp38_);
+                                                               _tmp37_ = type;
+                                                               _tmp38_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp37_);
+                                                               _tmp39_ = _tmp38_;
+                                                               _tmp40_ = vala_array_type_new (_tmp36_, 1, _tmp39_);
                                                                _vala_code_node_unref0 (type);
-                                                               type = (ValaDataType*) _tmp39_;
+                                                               type = (ValaDataType*) _tmp40_;
                                                        }
                                                } else {
-                                                       gchar** _tmp40_ = NULL;
-                                                       gint _tmp40__length1 = 0;
-                                                       const gchar* _tmp41_ = NULL;
-                                                       _tmp40_ = nv;
-                                                       _tmp40__length1 = nv_length1;
-                                                       _tmp41_ = _tmp40_[0];
-                                                       if (g_strcmp0 (_tmp41_, "weak") == 0) {
-                                                               gchar** _tmp42_ = NULL;
-                                                               gint _tmp42__length1 = 0;
-                                                               const gchar* _tmp43_ = NULL;
-                                                               gchar* _tmp44_ = NULL;
+                                                       gchar** _tmp41_ = NULL;
+                                                       gint _tmp41__length1 = 0;
+                                                       const gchar* _tmp42_ = NULL;
+                                                       _tmp41_ = nv;
+                                                       _tmp41__length1 = nv_length1;
+                                                       _tmp42_ = _tmp41_[0];
+                                                       if (g_strcmp0 (_tmp42_, "weak") == 0) {
+                                                               gchar** _tmp43_ = NULL;
+                                                               gint _tmp43__length1 = 0;
+                                                               const gchar* _tmp44_ = NULL;
                                                                gchar* _tmp45_ = NULL;
-                                                               gboolean _tmp46_ = FALSE;
-                                                               _tmp42_ = nv;
-                                                               _tmp42__length1 = nv_length1;
-                                                               _tmp43_ = _tmp42_[1];
-                                                               _tmp44_ = vala_gidl_parser_eval (self, _tmp43_);
-                                                               _tmp45_ = _tmp44_;
-                                                               _tmp46_ = g_strcmp0 (_tmp45_, "0") == 0;
-                                                               _g_free0 (_tmp45_);
-                                                               if (_tmp46_) {
-                                                                       ValaDataType* _tmp47_ = NULL;
-                                                                       _tmp47_ = type;
-                                                                       vala_data_type_set_value_owned (_tmp47_, TRUE);
+                                                               gchar* _tmp46_ = NULL;
+                                                               gboolean _tmp47_ = FALSE;
+                                                               _tmp43_ = nv;
+                                                               _tmp43__length1 = nv_length1;
+                                                               _tmp44_ = _tmp43_[1];
+                                                               _tmp45_ = vala_gidl_parser_eval (self, _tmp44_);
+                                                               _tmp46_ = _tmp45_;
+                                                               _tmp47_ = g_strcmp0 (_tmp46_, "0") == 0;
+                                                               _g_free0 (_tmp46_);
+                                                               if (_tmp47_) {
+                                                                       ValaDataType* _tmp48_ = NULL;
+                                                                       _tmp48_ = type;
+                                                                       vala_data_type_set_value_owned (_tmp48_, TRUE);
                                                                }
                                                        } else {
-                                                               gchar** _tmp48_ = NULL;
-                                                               gint _tmp48__length1 = 0;
-                                                               const gchar* _tmp49_ = NULL;
-                                                               _tmp48_ = nv;
-                                                               _tmp48__length1 = nv_length1;
-                                                               _tmp49_ = _tmp48_[0];
-                                                               if (g_strcmp0 (_tmp49_, "value_owned") == 0) {
-                                                                       gchar** _tmp50_ = NULL;
-                                                                       gint _tmp50__length1 = 0;
-                                                                       const gchar* _tmp51_ = NULL;
-                                                                       gchar* _tmp52_ = NULL;
+                                                               gchar** _tmp49_ = NULL;
+                                                               gint _tmp49__length1 = 0;
+                                                               const gchar* _tmp50_ = NULL;
+                                                               _tmp49_ = nv;
+                                                               _tmp49__length1 = nv_length1;
+                                                               _tmp50_ = _tmp49_[0];
+                                                               if (g_strcmp0 (_tmp50_, "value_owned") == 0) {
+                                                                       gchar** _tmp51_ = NULL;
+                                                                       gint _tmp51__length1 = 0;
+                                                                       const gchar* _tmp52_ = NULL;
                                                                        gchar* _tmp53_ = NULL;
-                                                                       gboolean _tmp54_ = FALSE;
-                                                                       _tmp50_ = nv;
-                                                                       _tmp50__length1 = nv_length1;
-                                                                       _tmp51_ = _tmp50_[1];
-                                                                       _tmp52_ = vala_gidl_parser_eval (self, _tmp51_);
-                                                                       _tmp53_ = _tmp52_;
-                                                                       _tmp54_ = g_strcmp0 (_tmp53_, "0") == 0;
-                                                                       _g_free0 (_tmp53_);
-                                                                       if (_tmp54_) {
-                                                                               ValaDataType* _tmp55_ = NULL;
-                                                                               _tmp55_ = type;
-                                                                               vala_data_type_set_value_owned (_tmp55_, FALSE);
+                                                                       gchar* _tmp54_ = NULL;
+                                                                       gboolean _tmp55_ = FALSE;
+                                                                       _tmp51_ = nv;
+                                                                       _tmp51__length1 = nv_length1;
+                                                                       _tmp52_ = _tmp51_[1];
+                                                                       _tmp53_ = vala_gidl_parser_eval (self, _tmp52_);
+                                                                       _tmp54_ = _tmp53_;
+                                                                       _tmp55_ = g_strcmp0 (_tmp54_, "0") == 0;
+                                                                       _g_free0 (_tmp54_);
+                                                                       if (_tmp55_) {
+                                                                               ValaDataType* _tmp56_ = NULL;
+                                                                               _tmp56_ = type;
+                                                                               vala_data_type_set_value_owned (_tmp56_, FALSE);
                                                                        } else {
-                                                                               gchar** _tmp56_ = NULL;
-                                                                               gint _tmp56__length1 = 0;
-                                                                               const gchar* _tmp57_ = NULL;
-                                                                               gchar* _tmp58_ = NULL;
+                                                                               gchar** _tmp57_ = NULL;
+                                                                               gint _tmp57__length1 = 0;
+                                                                               const gchar* _tmp58_ = NULL;
                                                                                gchar* _tmp59_ = NULL;
-                                                                               gboolean _tmp60_ = FALSE;
-                                                                               _tmp56_ = nv;
-                                                                               _tmp56__length1 = nv_length1;
-                                                                               _tmp57_ = _tmp56_[1];
-                                                                               _tmp58_ = vala_gidl_parser_eval (self, _tmp57_);
-                                                                               _tmp59_ = _tmp58_;
-                                                                               _tmp60_ = g_strcmp0 (_tmp59_, "1") == 0;
-                                                                               _g_free0 (_tmp59_);
-                                                                               if (_tmp60_) {
-                                                                                       ValaDataType* _tmp61_ = NULL;
-                                                                                       _tmp61_ = type;
-                                                                                       vala_data_type_set_value_owned (_tmp61_, TRUE);
+                                                                               gchar* _tmp60_ = NULL;
+                                                                               gboolean _tmp61_ = FALSE;
+                                                                               _tmp57_ = nv;
+                                                                               _tmp57__length1 = nv_length1;
+                                                                               _tmp58_ = _tmp57_[1];
+                                                                               _tmp59_ = vala_gidl_parser_eval (self, _tmp58_);
+                                                                               _tmp60_ = _tmp59_;
+                                                                               _tmp61_ = g_strcmp0 (_tmp60_, "1") == 0;
+                                                                               _g_free0 (_tmp60_);
+                                                                               if (_tmp61_) {
+                                                                                       ValaDataType* _tmp62_ = NULL;
+                                                                                       _tmp62_ = type;
+                                                                                       vala_data_type_set_value_owned (_tmp62_, TRUE);
                                                                                }
                                                                        }
                                                                } else {
-                                                                       gchar** _tmp62_ = NULL;
-                                                                       gint _tmp62__length1 = 0;
-                                                                       const gchar* _tmp63_ = NULL;
-                                                                       _tmp62_ = nv;
-                                                                       _tmp62__length1 = nv_length1;
-                                                                       _tmp63_ = _tmp62_[0];
-                                                                       if (g_strcmp0 (_tmp63_, "type_name") == 0) {
-                                                                               gchar** _tmp64_ = NULL;
-                                                                               gint _tmp64__length1 = 0;
-                                                                               const gchar* _tmp65_ = NULL;
-                                                                               gchar* _tmp66_ = NULL;
+                                                                       gchar** _tmp63_ = NULL;
+                                                                       gint _tmp63__length1 = 0;
+                                                                       const gchar* _tmp64_ = NULL;
+                                                                       _tmp63_ = nv;
+                                                                       _tmp63__length1 = nv_length1;
+                                                                       _tmp64_ = _tmp63_[0];
+                                                                       if (g_strcmp0 (_tmp64_, "type_name") == 0) {
+                                                                               gchar** _tmp65_ = NULL;
+                                                                               gint _tmp65__length1 = 0;
+                                                                               const gchar* _tmp66_ = NULL;
                                                                                gchar* _tmp67_ = NULL;
-                                                                               ValaDataType* _tmp68_ = NULL;
-                                                                               _tmp64_ = nv;
-                                                                               _tmp64__length1 = nv_length1;
-                                                                               _tmp65_ = _tmp64_[1];
-                                                                               _tmp66_ = vala_gidl_parser_eval (self, _tmp65_);
-                                                                               _tmp67_ = _tmp66_;
-                                                                               _tmp68_ = vala_gidl_parser_parse_type_from_string (self, _tmp67_, TRUE, NULL);
+                                                                               gchar* _tmp68_ = NULL;
+                                                                               ValaDataType* _tmp69_ = NULL;
+                                                                               _tmp65_ = nv;
+                                                                               _tmp65__length1 = nv_length1;
+                                                                               _tmp66_ = _tmp65_[1];
+                                                                               _tmp67_ = vala_gidl_parser_eval (self, _tmp66_);
+                                                                               _tmp68_ = _tmp67_;
+                                                                               _tmp69_ = vala_gidl_parser_parse_type_from_string (self, _tmp68_, TRUE, NULL);
                                                                                _vala_code_node_unref0 (type);
-                                                                               type = _tmp68_;
-                                                                               _g_free0 (_tmp67_);
+                                                                               type = _tmp69_;
+                                                                               _g_free0 (_tmp68_);
                                                                        } else {
-                                                                               gchar** _tmp69_ = NULL;
-                                                                               gint _tmp69__length1 = 0;
-                                                                               const gchar* _tmp70_ = NULL;
-                                                                               _tmp69_ = nv;
-                                                                               _tmp69__length1 = nv_length1;
-                                                                               _tmp70_ = _tmp69_[0];
-                                                                               if (g_strcmp0 (_tmp70_, "type_arguments") == 0) {
-                                                                                       ValaDataType* _tmp71_ = NULL;
-                                                                                       gchar** _tmp72_ = NULL;
-                                                                                       gint _tmp72__length1 = 0;
-                                                                                       const gchar* _tmp73_ = NULL;
-                                                                                       gchar* _tmp74_ = NULL;
+                                                                               gchar** _tmp70_ = NULL;
+                                                                               gint _tmp70__length1 = 0;
+                                                                               const gchar* _tmp71_ = NULL;
+                                                                               _tmp70_ = nv;
+                                                                               _tmp70__length1 = nv_length1;
+                                                                               _tmp71_ = _tmp70_[0];
+                                                                               if (g_strcmp0 (_tmp71_, "type_arguments") == 0) {
+                                                                                       ValaDataType* _tmp72_ = NULL;
+                                                                                       gchar** _tmp73_ = NULL;
+                                                                                       gint _tmp73__length1 = 0;
+                                                                                       const gchar* _tmp74_ = NULL;
                                                                                        gchar* _tmp75_ = NULL;
-                                                                                       _tmp71_ = type;
-                                                                                       _tmp72_ = nv;
-                                                                                       _tmp72__length1 = nv_length1;
-                                                                                       _tmp73_ = _tmp72_[1];
-                                                                                       _tmp74_ = vala_gidl_parser_eval (self, _tmp73_);
-                                                                                       _tmp75_ = _tmp74_;
-                                                                                       vala_gidl_parser_parse_type_arguments_from_string (self, _tmp71_, _tmp75_, NULL);
-                                                                                       _g_free0 (_tmp75_);
+                                                                                       gchar* _tmp76_ = NULL;
+                                                                                       _tmp72_ = type;
+                                                                                       _tmp73_ = nv;
+                                                                                       _tmp73__length1 = nv_length1;
+                                                                                       _tmp74_ = _tmp73_[1];
+                                                                                       _tmp75_ = vala_gidl_parser_eval (self, _tmp74_);
+                                                                                       _tmp76_ = _tmp75_;
+                                                                                       vala_gidl_parser_parse_type_arguments_from_string (self, _tmp72_, _tmp76_, NULL);
+                                                                                       _g_free0 (_tmp76_);
                                                                                } else {
-                                                                                       gchar** _tmp76_ = NULL;
-                                                                                       gint _tmp76__length1 = 0;
-                                                                                       const gchar* _tmp77_ = NULL;
-                                                                                       _tmp76_ = nv;
-                                                                                       _tmp76__length1 = nv_length1;
-                                                                                       _tmp77_ = _tmp76_[0];
-                                                                                       if (g_strcmp0 (_tmp77_, "deprecated") == 0) {
-                                                                                               gchar** _tmp78_ = NULL;
-                                                                                               gint _tmp78__length1 = 0;
-                                                                                               const gchar* _tmp79_ = NULL;
-                                                                                               gchar* _tmp80_ = NULL;
+                                                                                       gchar** _tmp77_ = NULL;
+                                                                                       gint _tmp77__length1 = 0;
+                                                                                       const gchar* _tmp78_ = NULL;
+                                                                                       _tmp77_ = nv;
+                                                                                       _tmp77__length1 = nv_length1;
+                                                                                       _tmp78_ = _tmp77_[0];
+                                                                                       if (g_strcmp0 (_tmp78_, "deprecated") == 0) {
+                                                                                               gchar** _tmp79_ = NULL;
+                                                                                               gint _tmp79__length1 = 0;
+                                                                                               const gchar* _tmp80_ = NULL;
                                                                                                gchar* _tmp81_ = NULL;
-                                                                                               gboolean _tmp82_ = FALSE;
-                                                                                               _tmp78_ = nv;
-                                                                                               _tmp78__length1 = nv_length1;
-                                                                                               _tmp79_ = _tmp78_[1];
-                                                                                               _tmp80_ = vala_gidl_parser_eval (self, _tmp79_);
-                                                                                               _tmp81_ = _tmp80_;
-                                                                                               _tmp82_ = g_strcmp0 (_tmp81_, "1") == 0;
-                                                                                               _g_free0 (_tmp81_);
-                                                                                               if (_tmp82_) {
+                                                                                               gchar* _tmp82_ = NULL;
+                                                                                               gboolean _tmp83_ = FALSE;
+                                                                                               _tmp79_ = nv;
+                                                                                               _tmp79__length1 = nv_length1;
+                                                                                               _tmp80_ = _tmp79_[1];
+                                                                                               _tmp81_ = vala_gidl_parser_eval (self, _tmp80_);
+                                                                                               _tmp82_ = _tmp81_;
+                                                                                               _tmp83_ = g_strcmp0 (_tmp82_, "1") == 0;
+                                                                                               _g_free0 (_tmp82_);
+                                                                                               if (_tmp83_) {
                                                                                                        deprecated = TRUE;
                                                                                                }
                                                                                        } else {
-                                                                                               gchar** _tmp83_ = NULL;
-                                                                                               gint _tmp83__length1 = 0;
-                                                                                               const gchar* _tmp84_ = NULL;
-                                                                                               _tmp83_ = nv;
-                                                                                               _tmp83__length1 = nv_length1;
-                                                                                               _tmp84_ = _tmp83_[0];
-                                                                                               if (g_strcmp0 (_tmp84_, "replacement") == 0) {
-                                                                                                       gchar** _tmp85_ = NULL;
-                                                                                                       gint _tmp85__length1 = 0;
-                                                                                                       const gchar* _tmp86_ = NULL;
-                                                                                                       gchar* _tmp87_ = NULL;
-                                                                                                       _tmp85_ = nv;
-                                                                                                       _tmp85__length1 = nv_length1;
-                                                                                                       _tmp86_ = _tmp85_[1];
-                                                                                                       _tmp87_ = vala_gidl_parser_eval (self, _tmp86_);
+                                                                                               gchar** _tmp84_ = NULL;
+                                                                                               gint _tmp84__length1 = 0;
+                                                                                               const gchar* _tmp85_ = NULL;
+                                                                                               _tmp84_ = nv;
+                                                                                               _tmp84__length1 = nv_length1;
+                                                                                               _tmp85_ = _tmp84_[0];
+                                                                                               if (g_strcmp0 (_tmp85_, "replacement") == 0) {
+                                                                                                       gchar** _tmp86_ = NULL;
+                                                                                                       gint _tmp86__length1 = 0;
+                                                                                                       const gchar* _tmp87_ = NULL;
+                                                                                                       gchar* _tmp88_ = NULL;
+                                                                                                       _tmp86_ = nv;
+                                                                                                       _tmp86__length1 = nv_length1;
+                                                                                                       _tmp87_ = _tmp86_[1];
+                                                                                                       _tmp88_ = vala_gidl_parser_eval (self, _tmp87_);
                                                                                                        _g_free0 (replacement);
-                                                                                                       replacement = _tmp87_;
+                                                                                                       replacement = _tmp88_;
                                                                                                } else {
-                                                                                                       gchar** _tmp88_ = NULL;
-                                                                                                       gint _tmp88__length1 = 0;
-                                                                                                       const gchar* _tmp89_ = NULL;
-                                                                                                       _tmp88_ = nv;
-                                                                                                       _tmp88__length1 = nv_length1;
-                                                                                                       _tmp89_ = _tmp88_[0];
-                                                                                                       if (g_strcmp0 (_tmp89_, "deprecated_since") == 0) {
-                                                                                                               gchar** _tmp90_ = NULL;
-                                                                                                               gint _tmp90__length1 = 0;
-                                                                                                               const gchar* _tmp91_ = NULL;
-                                                                                                               gchar* _tmp92_ = NULL;
-                                                                                                               _tmp90_ = nv;
-                                                                                                               _tmp90__length1 = nv_length1;
-                                                                                                               _tmp91_ = _tmp90_[1];
-                                                                                                               _tmp92_ = vala_gidl_parser_eval (self, _tmp91_);
+                                                                                                       gchar** _tmp89_ = NULL;
+                                                                                                       gint _tmp89__length1 = 0;
+                                                                                                       const gchar* _tmp90_ = NULL;
+                                                                                                       _tmp89_ = nv;
+                                                                                                       _tmp89__length1 = nv_length1;
+                                                                                                       _tmp90_ = _tmp89_[0];
+                                                                                                       if (g_strcmp0 (_tmp90_, "deprecated_since") == 0) {
+                                                                                                               gchar** _tmp91_ = NULL;
+                                                                                                               gint _tmp91__length1 = 0;
+                                                                                                               const gchar* _tmp92_ = NULL;
+                                                                                                               gchar* _tmp93_ = NULL;
+                                                                                                               _tmp91_ = nv;
+                                                                                                               _tmp91__length1 = nv_length1;
+                                                                                                               _tmp92_ = _tmp91_[1];
+                                                                                                               _tmp93_ = vala_gidl_parser_eval (self, _tmp92_);
                                                                                                                _g_free0 (deprecated_since);
-                                                                                                               deprecated_since = _tmp92_;
+                                                                                                               deprecated_since = _tmp93_;
                                                                                                        } else {
-                                                                                                               gchar** _tmp93_ = NULL;
-                                                                                                               gint _tmp93__length1 = 0;
-                                                                                                               const gchar* _tmp94_ = NULL;
-                                                                                                               _tmp93_ = nv;
-                                                                                                               _tmp93__length1 = nv_length1;
-                                                                                                               _tmp94_ = _tmp93_[0];
-                                                                                                               if (g_strcmp0 (_tmp94_, "cheader_filename") == 0) {
-                                                                                                                       gchar** _tmp95_ = NULL;
-                                                                                                                       gint _tmp95__length1 = 0;
-                                                                                                                       const gchar* _tmp96_ = NULL;
-                                                                                                                       gchar* _tmp97_ = NULL;
-                                                                                                                       _tmp95_ = nv;
-                                                                                                                       _tmp95__length1 = nv_length1;
-                                                                                                                       _tmp96_ = _tmp95_[1];
-                                                                                                                       _tmp97_ = vala_gidl_parser_eval (self, _tmp96_);
+                                                                                                               gchar** _tmp94_ = NULL;
+                                                                                                               gint _tmp94__length1 = 0;
+                                                                                                               const gchar* _tmp95_ = NULL;
+                                                                                                               _tmp94_ = nv;
+                                                                                                               _tmp94__length1 = nv_length1;
+                                                                                                               _tmp95_ = _tmp94_[0];
+                                                                                                               if (g_strcmp0 (_tmp95_, "cheader_filename") == 0) {
+                                                                                                                       gchar** _tmp96_ = NULL;
+                                                                                                                       gint _tmp96__length1 = 0;
+                                                                                                                       const gchar* _tmp97_ = NULL;
+                                                                                                                       gchar* _tmp98_ = NULL;
+                                                                                                                       _tmp96_ = nv;
+                                                                                                                       _tmp96__length1 = nv_length1;
+                                                                                                                       _tmp97_ = _tmp96_[1];
+                                                                                                                       _tmp98_ = vala_gidl_parser_eval (self, _tmp97_);
                                                                                                                        _g_free0 (cheader_filename);
-                                                                                                                       cheader_filename = _tmp97_;
+                                                                                                                       cheader_filename = _tmp98_;
                                                                                                                } else {
-                                                                                                                       gchar** _tmp98_ = NULL;
-                                                                                                                       gint _tmp98__length1 = 0;
-                                                                                                                       const gchar* _tmp99_ = NULL;
-                                                                                                                       _tmp98_ = nv;
-                                                                                                                       _tmp98__length1 = nv_length1;
-                                                                                                                       _tmp99_ = _tmp98_[0];
-                                                                                                                       if (g_strcmp0 (_tmp99_, "ctype") == 0) {
-                                                                                                                               gchar** _tmp100_ = NULL;
-                                                                                                                               gint _tmp100__length1 = 0;
-                                                                                                                               const gchar* _tmp101_ = NULL;
-                                                                                                                               gchar* _tmp102_ = NULL;
-                                                                                                                               _tmp100_ = nv;
-                                                                                                                               _tmp100__length1 = nv_length1;
-                                                                                                                               _tmp101_ = _tmp100_[1];
-                                                                                                                               _tmp102_ = vala_gidl_parser_eval (self, _tmp101_);
+                                                                                                                       gchar** _tmp99_ = NULL;
+                                                                                                                       gint _tmp99__length1 = 0;
+                                                                                                                       const gchar* _tmp100_ = NULL;
+                                                                                                                       _tmp99_ = nv;
+                                                                                                                       _tmp99__length1 = nv_length1;
+                                                                                                                       _tmp100_ = _tmp99_[0];
+                                                                                                                       if (g_strcmp0 (_tmp100_, "ctype") == 0) {
+                                                                                                                               gchar** _tmp101_ = NULL;
+                                                                                                                               gint _tmp101__length1 = 0;
+                                                                                                                               const gchar* _tmp102_ = NULL;
+                                                                                                                               gchar* _tmp103_ = NULL;
+                                                                                                                               _tmp101_ = nv;
+                                                                                                                               _tmp101__length1 = nv_length1;
+                                                                                                                               _tmp102_ = _tmp101_[1];
+                                                                                                                               _tmp103_ = vala_gidl_parser_eval (self, _tmp102_);
                                                                                                                                _g_free0 (ctype);
-                                                                                                                               ctype = _tmp102_;
+                                                                                                                               ctype = _tmp103_;
                                                                                                                        } else {
-                                                                                                                               gchar** _tmp103_ = NULL;
-                                                                                                                               gint _tmp103__length1 = 0;
-                                                                                                                               const gchar* _tmp104_ = NULL;
-                                                                                                                               _tmp103_ = nv;
-                                                                                                                               _tmp103__length1 = nv_length1;
-                                                                                                                               _tmp104_ = _tmp103_[0];
-                                                                                                                               if (g_strcmp0 (_tmp104_, "array_null_terminated") == 0) {
-                                                                                                                                       gchar** _tmp105_ = NULL;
-                                                                                                                                       gint _tmp105__length1 = 0;
-                                                                                                                                       const gchar* _tmp106_ = NULL;
-                                                                                                                                       gchar* _tmp107_ = NULL;
+                                                                                                                               gchar** _tmp104_ = NULL;
+                                                                                                                               gint _tmp104__length1 = 0;
+                                                                                                                               const gchar* _tmp105_ = NULL;
+                                                                                                                               _tmp104_ = nv;
+                                                                                                                               _tmp104__length1 = nv_length1;
+                                                                                                                               _tmp105_ = _tmp104_[0];
+                                                                                                                               if (g_strcmp0 (_tmp105_, "array_null_terminated") == 0) {
+                                                                                                                                       gchar** _tmp106_ = NULL;
+                                                                                                                                       gint _tmp106__length1 = 0;
+                                                                                                                                       const gchar* _tmp107_ = NULL;
                                                                                                                                        gchar* _tmp108_ = NULL;
-                                                                                                                                       gboolean _tmp109_ = FALSE;
-                                                                                                                                       _tmp105_ = nv;
-                                                                                                                                       _tmp105__length1 = nv_length1;
-                                                                                                                                       _tmp106_ = _tmp105_[1];
-                                                                                                                                       _tmp107_ = vala_gidl_parser_eval (self, _tmp106_);
-                                                                                                                                       _tmp108_ = _tmp107_;
-                                                                                                                                       _tmp109_ = g_strcmp0 (_tmp108_, "1") == 0;
-                                                                                                                                       _g_free0 (_tmp108_);
-                                                                                                                                       if (_tmp109_) {
+                                                                                                                                       gchar* _tmp109_ = NULL;
+                                                                                                                                       gboolean _tmp110_ = FALSE;
+                                                                                                                                       _tmp106_ = nv;
+                                                                                                                                       _tmp106__length1 = nv_length1;
+                                                                                                                                       _tmp107_ = _tmp106_[1];
+                                                                                                                                       _tmp108_ = vala_gidl_parser_eval (self, _tmp107_);
+                                                                                                                                       _tmp109_ = _tmp108_;
+                                                                                                                                       _tmp110_ = g_strcmp0 (_tmp109_, "1") == 0;
+                                                                                                                                       _g_free0 (_tmp109_);
+                                                                                                                                       if (_tmp110_) {
                                                                                                                                                array_null_terminated = TRUE;
                                                                                                                                        }
                                                                                                                                } else {
-                                                                                                                                       gchar** _tmp110_ = NULL;
-                                                                                                                                       gint _tmp110__length1 = 0;
-                                                                                                                                       const gchar* _tmp111_ = NULL;
-                                                                                                                                       _tmp110_ = nv;
-                                                                                                                                       _tmp110__length1 = nv_length1;
-                                                                                                                                       _tmp111_ = _tmp110_[0];
-                                                                                                                                       if (g_strcmp0 (_tmp111_, "array_length_cname") == 0) {
-                                                                                                                                               gchar** _tmp112_ = NULL;
-                                                                                                                                               gint _tmp112__length1 = 0;
-                                                                                                                                               const gchar* _tmp113_ = NULL;
-                                                                                                                                               gchar* _tmp114_ = NULL;
-                                                                                                                                               _tmp112_ = nv;
-                                                                                                                                               _tmp112__length1 = nv_length1;
-                                                                                                                                               _tmp113_ = _tmp112_[1];
-                                                                                                                                               _tmp114_ = vala_gidl_parser_eval (self, _tmp113_);
+                                                                                                                                       gchar** _tmp111_ = NULL;
+                                                                                                                                       gint _tmp111__length1 = 0;
+                                                                                                                                       const gchar* _tmp112_ = NULL;
+                                                                                                                                       _tmp111_ = nv;
+                                                                                                                                       _tmp111__length1 = nv_length1;
+                                                                                                                                       _tmp112_ = _tmp111_[0];
+                                                                                                                                       if (g_strcmp0 (_tmp112_, "array_length_cname") == 0) {
+                                                                                                                                               gchar** _tmp113_ = NULL;
+                                                                                                                                               gint _tmp113__length1 = 0;
+                                                                                                                                               const gchar* _tmp114_ = NULL;
+                                                                                                                                               gchar* _tmp115_ = NULL;
+                                                                                                                                               _tmp113_ = nv;
+                                                                                                                                               _tmp113__length1 = nv_length1;
+                                                                                                                                               _tmp114_ = _tmp113_[1];
+                                                                                                                                               _tmp115_ = vala_gidl_parser_eval (self, _tmp114_);
                                                                                                                                                _g_free0 (array_length_cname);
-                                                                                                                                               array_length_cname = _tmp114_;
+                                                                                                                                               array_length_cname = _tmp115_;
                                                                                                                                        } else {
-                                                                                                                                               gchar** _tmp115_ = NULL;
-                                                                                                                                               gint _tmp115__length1 = 0;
-                                                                                                                                               const gchar* _tmp116_ = NULL;
-                                                                                                                                               _tmp115_ = nv;
-                                                                                                                                               _tmp115__length1 = nv_length1;
-                                                                                                                                               _tmp116_ = _tmp115_[0];
-                                                                                                                                               if (g_strcmp0 (_tmp116_, "array_length_type") == 0) {
-                                                                                                                                                       gchar** _tmp117_ = NULL;
-                                                                                                                                                       gint _tmp117__length1 = 0;
-                                                                                                                                                       const gchar* _tmp118_ = NULL;
-                                                                                                                                                       gchar* _tmp119_ = NULL;
-                                                                                                                                                       _tmp117_ = nv;
-                                                                                                                                                       _tmp117__length1 = nv_length1;
-                                                                                                                                                       _tmp118_ = _tmp117_[1];
-                                                                                                                                                       _tmp119_ = vala_gidl_parser_eval (self, _tmp118_);
+                                                                                                                                               gchar** _tmp116_ = NULL;
+                                                                                                                                               gint _tmp116__length1 = 0;
+                                                                                                                                               const gchar* _tmp117_ = NULL;
+                                                                                                                                               _tmp116_ = nv;
+                                                                                                                                               _tmp116__length1 = nv_length1;
+                                                                                                                                               _tmp117_ = _tmp116_[0];
+                                                                                                                                               if (g_strcmp0 (_tmp117_, "array_length_type") == 0) {
+                                                                                                                                                       gchar** _tmp118_ = NULL;
+                                                                                                                                                       gint _tmp118__length1 = 0;
+                                                                                                                                                       const gchar* _tmp119_ = NULL;
+                                                                                                                                                       gchar* _tmp120_ = NULL;
+                                                                                                                                                       _tmp118_ = nv;
+                                                                                                                                                       _tmp118__length1 = nv_length1;
+                                                                                                                                                       _tmp119_ = _tmp118_[1];
+                                                                                                                                                       _tmp120_ = vala_gidl_parser_eval (self, _tmp119_);
                                                                                                                                                        _g_free0 (array_length_type);
-                                                                                                                                                       array_length_type = _tmp119_;
+                                                                                                                                                       array_length_type = _tmp120_;
                                                                                                                                                } else {
-                                                                                                                                                       gchar** _tmp120_ = NULL;
-                                                                                                                                                       gint _tmp120__length1 = 0;
-                                                                                                                                                       const gchar* _tmp121_ = NULL;
-                                                                                                                                                       _tmp120_ = nv;
-                                                                                                                                                       _tmp120__length1 = nv_length1;
-                                                                                                                                                       _tmp121_ = _tmp120_[0];
-                                                                                                                                                       if (g_strcmp0 (_tmp121_, "no_delegate_target") == 0) {
-                                                                                                                                                               gchar** _tmp122_ = NULL;
-                                                                                                                                                               gint _tmp122__length1 = 0;
-                                                                                                                                                               const gchar* _tmp123_ = NULL;
-                                                                                                                                                               gchar* _tmp124_ = NULL;
+                                                                                                                                                       gchar** _tmp121_ = NULL;
+                                                                                                                                                       gint _tmp121__length1 = 0;
+                                                                                                                                                       const gchar* _tmp122_ = NULL;
+                                                                                                                                                       _tmp121_ = nv;
+                                                                                                                                                       _tmp121__length1 = nv_length1;
+                                                                                                                                                       _tmp122_ = _tmp121_[0];
+                                                                                                                                                       if (g_strcmp0 (_tmp122_, "no_delegate_target") == 0) {
+                                                                                                                                                               gchar** _tmp123_ = NULL;
+                                                                                                                                                               gint _tmp123__length1 = 0;
+                                                                                                                                                               const gchar* _tmp124_ = NULL;
                                                                                                                                                                gchar* _tmp125_ = NULL;
-                                                                                                                                                               gboolean _tmp126_ = FALSE;
-                                                                                                                                                               _tmp122_ = nv;
-                                                                                                                                                               _tmp122__length1 = nv_length1;
-                                                                                                                                                               _tmp123_ = _tmp122_[1];
-                                                                                                                                                               _tmp124_ = vala_gidl_parser_eval (self, _tmp123_);
-                                                                                                                                                               _tmp125_ = _tmp124_;
-                                                                                                                                                               _tmp126_ = g_strcmp0 (_tmp125_, "1") == 0;
-                                                                                                                                                               _g_free0 (_tmp125_);
-                                                                                                                                                               if (_tmp126_) {
+                                                                                                                                                               gchar* _tmp126_ = NULL;
+                                                                                                                                                               gboolean _tmp127_ = FALSE;
+                                                                                                                                                               _tmp123_ = nv;
+                                                                                                                                                               _tmp123__length1 = nv_length1;
+                                                                                                                                                               _tmp124_ = _tmp123_[1];
+                                                                                                                                                               _tmp125_ = vala_gidl_parser_eval (self, _tmp124_);
+                                                                                                                                                               _tmp126_ = _tmp125_;
+                                                                                                                                                               _tmp127_ = g_strcmp0 (_tmp126_, "1") == 0;
+                                                                                                                                                               _g_free0 (_tmp126_);
+                                                                                                                                                               if (_tmp127_) {
                                                                                                                                                                        no_delegate_target = TRUE;
                                                                                                                                                                }
                                                                                                                                                        } else {
-                                                                                                                                                               gchar** _tmp127_ = NULL;
-                                                                                                                                                               gint _tmp127__length1 = 0;
-                                                                                                                                                               const gchar* _tmp128_ = NULL;
-                                                                                                                                                               _tmp127_ = nv;
-                                                                                                                                                               _tmp127__length1 = nv_length1;
-                                                                                                                                                               _tmp128_ = _tmp127_[0];
-                                                                                                                                                               if (g_strcmp0 (_tmp128_, "experimental") == 0) {
-                                                                                                                                                                       gchar** _tmp129_ = NULL;
-                                                                                                                                                                       gint _tmp129__length1 = 0;
-                                                                                                                                                                       const gchar* _tmp130_ = NULL;
-                                                                                                                                                                       gchar* _tmp131_ = NULL;
+                                                                                                                                                               gchar** _tmp128_ = NULL;
+                                                                                                                                                               gint _tmp128__length1 = 0;
+                                                                                                                                                               const gchar* _tmp129_ = NULL;
+                                                                                                                                                               _tmp128_ = nv;
+                                                                                                                                                               _tmp128__length1 = nv_length1;
+                                                                                                                                                               _tmp129_ = _tmp128_[0];
+                                                                                                                                                               if (g_strcmp0 (_tmp129_, "experimental") == 0) {
+                                                                                                                                                                       gchar** _tmp130_ = NULL;
+                                                                                                                                                                       gint _tmp130__length1 = 0;
+                                                                                                                                                                       const gchar* _tmp131_ = NULL;
                                                                                                                                                                        gchar* _tmp132_ = NULL;
-                                                                                                                                                                       gboolean _tmp133_ = FALSE;
-                                                                                                                                                                       _tmp129_ = nv;
-                                                                                                                                                                       _tmp129__length1 = nv_length1;
-                                                                                                                                                                       _tmp130_ = _tmp129_[1];
-                                                                                                                                                                       _tmp131_ = vala_gidl_parser_eval (self, _tmp130_);
-                                                                                                                                                                       _tmp132_ = _tmp131_;
-                                                                                                                                                                       _tmp133_ = g_strcmp0 (_tmp132_, "1") == 0;
-                                                                                                                                                                       _g_free0 (_tmp132_);
-                                                                                                                                                                       if (_tmp133_) {
+                                                                                                                                                                       gchar* _tmp133_ = NULL;
+                                                                                                                                                                       gboolean _tmp134_ = FALSE;
+                                                                                                                                                                       _tmp130_ = nv;
+                                                                                                                                                                       _tmp130__length1 = nv_length1;
+                                                                                                                                                                       _tmp131_ = _tmp130_[1];
+                                                                                                                                                                       _tmp132_ = vala_gidl_parser_eval (self, _tmp131_);
+                                                                                                                                                                       _tmp133_ = _tmp132_;
+                                                                                                                                                                       _tmp134_ = g_strcmp0 (_tmp133_, "1") == 0;
+                                                                                                                                                                       _g_free0 (_tmp133_);
+                                                                                                                                                                       if (_tmp134_) {
                                                                                                                                                                                experimental = TRUE;
                                                                                                                                                                        }
                                                                                                                                                                }
@@ -17657,17 +17690,17 @@ static ValaField* vala_gidl_parser_parse_field (ValaGIdlParser* self, GIdlNodeFi
                        }
                }
        }
-       _tmp135_ = node;
-       _tmp136_ = _tmp135_->name;
-       _tmp137_ = g_str_has_prefix (_tmp136_, "_");
-       if (_tmp137_) {
-               gboolean _tmp138_ = FALSE;
-               _tmp138_ = unhidden;
-               _tmp134_ = !_tmp138_;
+       _tmp136_ = node;
+       _tmp137_ = _tmp136_->name;
+       _tmp138_ = g_str_has_prefix (_tmp137_, "_");
+       if (_tmp138_) {
+               gboolean _tmp139_ = FALSE;
+               _tmp139_ = unhidden;
+               _tmp135_ = !_tmp139_;
        } else {
-               _tmp134_ = FALSE;
+               _tmp135_ = FALSE;
        }
-       if (_tmp134_) {
+       if (_tmp135_) {
                result = NULL;
                attributes = (_vala_array_free (attributes, attributes_length1, (GDestroyNotify) g_free), NULL);
                _g_free0 (replacement);
@@ -17679,143 +17712,143 @@ static ValaField* vala_gidl_parser_parse_field (ValaGIdlParser* self, GIdlNodeFi
                _vala_code_node_unref0 (type);
                return result;
        }
-       _tmp139_ = self->priv->current_type_symbol_set;
-       if (_tmp139_ != NULL) {
-               ValaSet* _tmp140_ = NULL;
-               GIdlNode* _tmp141_ = NULL;
-               const gchar* _tmp142_ = NULL;
-               _tmp140_ = self->priv->current_type_symbol_set;
-               _tmp141_ = node;
-               _tmp142_ = _tmp141_->name;
-               vala_collection_add ((ValaCollection*) _tmp140_, _tmp142_);
+       _tmp140_ = self->priv->current_type_symbol_set;
+       if (_tmp140_ != NULL) {
+               ValaSet* _tmp141_ = NULL;
+               GIdlNode* _tmp142_ = NULL;
+               const gchar* _tmp143_ = NULL;
+               _tmp141_ = self->priv->current_type_symbol_set;
+               _tmp142_ = node;
+               _tmp143_ = _tmp142_->name;
+               vala_collection_add ((ValaCollection*) _tmp141_, _tmp143_);
        }
-       _tmp143_ = node;
-       _tmp144_ = _tmp143_->name;
-       _tmp145_ = g_strdup (_tmp144_);
-       field_name = _tmp145_;
-       _tmp146_ = field_name;
-       if (g_strcmp0 (_tmp146_, "string") == 0) {
-               gchar* _tmp147_ = NULL;
-               _tmp147_ = g_strdup ("str");
+       _tmp144_ = node;
+       _tmp145_ = _tmp144_->name;
+       _tmp146_ = g_strdup (_tmp145_);
+       field_name = _tmp146_;
+       _tmp147_ = field_name;
+       if (g_strcmp0 (_tmp147_, "string") == 0) {
+               gchar* _tmp148_ = NULL;
+               _tmp148_ = g_strdup ("str");
                _g_free0 (field_name);
-               field_name = _tmp147_;
+               field_name = _tmp148_;
        }
-       _tmp148_ = field_name;
-       _tmp149_ = type;
-       _tmp150_ = self->priv->current_source_reference;
-       _tmp151_ = vala_field_new (_tmp148_, _tmp149_, NULL, _tmp150_, NULL);
-       field = _tmp151_;
-       _tmp152_ = field;
-       vala_symbol_set_access ((ValaSymbol*) _tmp152_, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
-       _tmp153_ = field_name;
-       _tmp154_ = node;
-       _tmp155_ = _tmp154_->name;
-       if (g_strcmp0 (_tmp153_, _tmp155_) != 0) {
-               ValaField* _tmp156_ = NULL;
-               GIdlNode* _tmp157_ = NULL;
-               const gchar* _tmp158_ = NULL;
-               _tmp156_ = field;
-               _tmp157_ = node;
-               _tmp158_ = _tmp157_->name;
-               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp156_, "CCode", "cname", _tmp158_, NULL);
+       _tmp149_ = field_name;
+       _tmp150_ = type;
+       _tmp151_ = self->priv->current_source_reference;
+       _tmp152_ = vala_field_new (_tmp149_, _tmp150_, NULL, _tmp151_, NULL);
+       field = _tmp152_;
+       _tmp153_ = field;
+       vala_symbol_set_access ((ValaSymbol*) _tmp153_, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
+       _tmp154_ = field_name;
+       _tmp155_ = node;
+       _tmp156_ = _tmp155_->name;
+       if (g_strcmp0 (_tmp154_, _tmp156_) != 0) {
+               ValaField* _tmp157_ = NULL;
+               GIdlNode* _tmp158_ = NULL;
+               const gchar* _tmp159_ = NULL;
+               _tmp157_ = field;
+               _tmp158_ = node;
+               _tmp159_ = _tmp158_->name;
+               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp157_, "CCode", "cname", _tmp159_, NULL);
        }
-       _tmp159_ = deprecated;
-       if (_tmp159_) {
-               ValaField* _tmp160_ = NULL;
-               const gchar* _tmp161_ = NULL;
-               const gchar* _tmp164_ = NULL;
-               _tmp160_ = field;
-               vala_code_node_set_attribute ((ValaCodeNode*) _tmp160_, "Deprecated", TRUE, NULL);
-               _tmp161_ = deprecated_since;
-               if (_tmp161_ != NULL) {
-                       ValaField* _tmp162_ = NULL;
-                       const gchar* _tmp163_ = NULL;
-                       _tmp162_ = field;
-                       _tmp163_ = deprecated_since;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp162_, "Deprecated", "since", _tmp163_, NULL);
+       _tmp160_ = deprecated;
+       if (_tmp160_) {
+               ValaField* _tmp161_ = NULL;
+               const gchar* _tmp162_ = NULL;
+               const gchar* _tmp165_ = NULL;
+               _tmp161_ = field;
+               vala_code_node_set_attribute ((ValaCodeNode*) _tmp161_, "Deprecated", TRUE, NULL);
+               _tmp162_ = deprecated_since;
+               if (_tmp162_ != NULL) {
+                       ValaField* _tmp163_ = NULL;
+                       const gchar* _tmp164_ = NULL;
+                       _tmp163_ = field;
+                       _tmp164_ = deprecated_since;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp163_, "Deprecated", "since", _tmp164_, NULL);
                }
-               _tmp164_ = replacement;
-               if (_tmp164_ != NULL) {
-                       ValaField* _tmp165_ = NULL;
-                       const gchar* _tmp166_ = NULL;
-                       _tmp165_ = field;
-                       _tmp166_ = replacement;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp165_, "Deprecated", "replacement", _tmp166_, NULL);
+               _tmp165_ = replacement;
+               if (_tmp165_ != NULL) {
+                       ValaField* _tmp166_ = NULL;
+                       const gchar* _tmp167_ = NULL;
+                       _tmp166_ = field;
+                       _tmp167_ = replacement;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp166_, "Deprecated", "replacement", _tmp167_, NULL);
                }
        }
-       _tmp167_ = experimental;
-       if (_tmp167_) {
-               ValaField* _tmp168_ = NULL;
-               _tmp168_ = field;
-               vala_code_node_set_attribute ((ValaCodeNode*) _tmp168_, "Experimental", TRUE, NULL);
+       _tmp168_ = experimental;
+       if (_tmp168_) {
+               ValaField* _tmp169_ = NULL;
+               _tmp169_ = field;
+               vala_code_node_set_attribute ((ValaCodeNode*) _tmp169_, "Experimental", TRUE, NULL);
        }
-       _tmp169_ = ctype;
-       if (_tmp169_ != NULL) {
-               ValaField* _tmp170_ = NULL;
-               const gchar* _tmp171_ = NULL;
-               _tmp170_ = field;
-               _tmp171_ = ctype;
-               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp170_, "CCode", "type", _tmp171_, NULL);
+       _tmp170_ = ctype;
+       if (_tmp170_ != NULL) {
+               ValaField* _tmp171_ = NULL;
+               const gchar* _tmp172_ = NULL;
+               _tmp171_ = field;
+               _tmp172_ = ctype;
+               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp171_, "CCode", "type", _tmp172_, NULL);
        }
-       _tmp172_ = cheader_filename;
-       if (_tmp172_ != NULL) {
-               ValaField* _tmp173_ = NULL;
-               const gchar* _tmp174_ = NULL;
-               _tmp173_ = field;
-               _tmp174_ = cheader_filename;
-               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp173_, "CCode", "cheader_filename", _tmp174_, NULL);
+       _tmp173_ = cheader_filename;
+       if (_tmp173_ != NULL) {
+               ValaField* _tmp174_ = NULL;
+               const gchar* _tmp175_ = NULL;
+               _tmp174_ = field;
+               _tmp175_ = cheader_filename;
+               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp174_, "CCode", "cheader_filename", _tmp175_, NULL);
        }
-       _tmp175_ = array_null_terminated;
-       if (_tmp175_) {
-               ValaField* _tmp176_ = NULL;
-               _tmp176_ = field;
-               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp176_, "CCode", "array_null_terminated", TRUE, NULL);
+       _tmp176_ = array_null_terminated;
+       if (_tmp176_) {
+               ValaField* _tmp177_ = NULL;
+               _tmp177_ = field;
+               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp177_, "CCode", "array_null_terminated", TRUE, NULL);
        }
-       _tmp178_ = array_length_cname;
-       if (_tmp178_ != NULL) {
-               _tmp177_ = TRUE;
+       _tmp179_ = array_length_cname;
+       if (_tmp179_ != NULL) {
+               _tmp178_ = TRUE;
        } else {
-               const gchar* _tmp179_ = NULL;
-               _tmp179_ = array_length_type;
-               _tmp177_ = _tmp179_ != NULL;
-       }
-       if (_tmp177_) {
                const gchar* _tmp180_ = NULL;
-               const gchar* _tmp183_ = NULL;
-               _tmp180_ = array_length_cname;
-               if (_tmp180_ != NULL) {
-                       ValaField* _tmp181_ = NULL;
-                       const gchar* _tmp182_ = NULL;
-                       _tmp181_ = field;
-                       _tmp182_ = array_length_cname;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp181_, "CCode", "array_length_cname", _tmp182_, NULL);
+               _tmp180_ = array_length_type;
+               _tmp178_ = _tmp180_ != NULL;
+       }
+       if (_tmp178_) {
+               const gchar* _tmp181_ = NULL;
+               const gchar* _tmp184_ = NULL;
+               _tmp181_ = array_length_cname;
+               if (_tmp181_ != NULL) {
+                       ValaField* _tmp182_ = NULL;
+                       const gchar* _tmp183_ = NULL;
+                       _tmp182_ = field;
+                       _tmp183_ = array_length_cname;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp182_, "CCode", "array_length_cname", _tmp183_, NULL);
                }
-               _tmp183_ = array_length_type;
-               if (_tmp183_ != NULL) {
-                       ValaField* _tmp184_ = NULL;
-                       const gchar* _tmp185_ = NULL;
-                       _tmp184_ = field;
-                       _tmp185_ = array_length_type;
-                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp184_, "CCode", "array_length_type", _tmp185_, NULL);
+               _tmp184_ = array_length_type;
+               if (_tmp184_ != NULL) {
+                       ValaField* _tmp185_ = NULL;
+                       const gchar* _tmp186_ = NULL;
+                       _tmp185_ = field;
+                       _tmp186_ = array_length_type;
+                       vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp185_, "CCode", "array_length_type", _tmp186_, NULL);
                }
        } else {
-               ValaField* _tmp186_ = NULL;
-               ValaDataType* _tmp187_ = NULL;
+               ValaField* _tmp187_ = NULL;
                ValaDataType* _tmp188_ = NULL;
-               _tmp186_ = field;
-               _tmp187_ = vala_variable_get_variable_type ((ValaVariable*) _tmp186_);
-               _tmp188_ = _tmp187_;
-               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp188_, VALA_TYPE_ARRAY_TYPE)) {
-                       ValaField* _tmp189_ = NULL;
-                       _tmp189_ = field;
-                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp189_, "CCode", "array_length", FALSE, NULL);
+               ValaDataType* _tmp189_ = NULL;
+               _tmp187_ = field;
+               _tmp188_ = vala_variable_get_variable_type ((ValaVariable*) _tmp187_);
+               _tmp189_ = _tmp188_;
+               if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp189_, VALA_TYPE_ARRAY_TYPE)) {
+                       ValaField* _tmp190_ = NULL;
+                       _tmp190_ = field;
+                       vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp190_, "CCode", "array_length", FALSE, NULL);
                }
        }
-       _tmp190_ = no_delegate_target;
-       if (_tmp190_) {
-               ValaField* _tmp191_ = NULL;
-               _tmp191_ = field;
-               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp191_, "CCode", "delegate_target", FALSE, NULL);
+       _tmp191_ = no_delegate_target;
+       if (_tmp191_) {
+               ValaField* _tmp192_ = NULL;
+               _tmp192_ = field;
+               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp192_, "CCode", "delegate_target", FALSE, NULL);
        }
        result = field;
        _g_free0 (field_name);
@@ -18763,8 +18796,8 @@ static ValaSignal* vala_gidl_parser_parse_signal (ValaGIdlParser* self, GIdlNode
                                gchar** _tmp158_ = NULL;
                                gchar** _tmp159_ = NULL;
                                gint _tmp159__length1 = 0;
-                               gboolean _tmp278_ = FALSE;
                                gboolean _tmp279_ = FALSE;
+                               gboolean _tmp280_ = FALSE;
                                _tmp136_ = first;
                                if (_tmp136_) {
                                        first = FALSE;
@@ -18809,7 +18842,7 @@ static ValaSignal* vala_gidl_parser_parse_signal (ValaGIdlParser* self, GIdlNode
                                        gchar* ns_name = NULL;
                                        gchar** _tmp160_ = NULL;
                                        gint _tmp160__length1 = 0;
-                                       const gchar* _tmp271_ = NULL;
+                                       const gchar* _tmp272_ = NULL;
                                        ns_name = NULL;
                                        _tmp160_ = attributes;
                                        _tmp160__length1 = attributes_length1;
@@ -18901,281 +18934,284 @@ static ValaSignal* vala_gidl_parser_parse_signal (ValaGIdlParser* self, GIdlNode
                                                                                if (_tmp183_) {
                                                                                        ValaDataType* _tmp184_ = NULL;
                                                                                        ValaDataType* _tmp185_ = NULL;
-                                                                                       ValaSourceReference* _tmp186_ = NULL;
+                                                                                       ValaDataType* _tmp186_ = NULL;
                                                                                        ValaSourceReference* _tmp187_ = NULL;
-                                                                                       ValaArrayType* _tmp188_ = NULL;
-                                                                                       ValaParameter* _tmp189_ = NULL;
-                                                                                       ValaDataType* _tmp190_ = NULL;
-                                                                                       ValaParameter* _tmp191_ = NULL;
+                                                                                       ValaSourceReference* _tmp188_ = NULL;
+                                                                                       ValaArrayType* _tmp189_ = NULL;
+                                                                                       ValaParameter* _tmp190_ = NULL;
+                                                                                       ValaDataType* _tmp191_ = NULL;
+                                                                                       ValaParameter* _tmp192_ = NULL;
                                                                                        _tmp184_ = param_type;
+                                                                                       vala_data_type_set_value_owned (_tmp184_, TRUE);
                                                                                        _tmp185_ = param_type;
-                                                                                       _tmp186_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp185_);
-                                                                                       _tmp187_ = _tmp186_;
-                                                                                       _tmp188_ = vala_array_type_new (_tmp184_, 1, _tmp187_);
+                                                                                       _tmp186_ = param_type;
+                                                                                       _tmp187_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp186_);
+                                                                                       _tmp188_ = _tmp187_;
+                                                                                       _tmp189_ = vala_array_type_new (_tmp185_, 1, _tmp188_);
                                                                                        _vala_code_node_unref0 (param_type);
-                                                                                       param_type = (ValaDataType*) _tmp188_;
-                                                                                       _tmp189_ = p;
-                                                                                       _tmp190_ = param_type;
-                                                                                       vala_variable_set_variable_type ((ValaVariable*) _tmp189_, _tmp190_);
-                                                                                       _tmp191_ = p;
-                                                                                       vala_parameter_set_direction (_tmp191_, VALA_PARAMETER_DIRECTION_IN);
+                                                                                       param_type = (ValaDataType*) _tmp189_;
+                                                                                       _tmp190_ = p;
+                                                                                       _tmp191_ = param_type;
+                                                                                       vala_variable_set_variable_type ((ValaVariable*) _tmp190_, _tmp191_);
+                                                                                       _tmp192_ = p;
+                                                                                       vala_parameter_set_direction (_tmp192_, VALA_PARAMETER_DIRECTION_IN);
                                                                                }
                                                                        } else {
-                                                                               gchar** _tmp192_ = NULL;
-                                                                               gint _tmp192__length1 = 0;
-                                                                               const gchar* _tmp193_ = NULL;
-                                                                               _tmp192_ = nv;
-                                                                               _tmp192__length1 = nv_length1;
-                                                                               _tmp193_ = _tmp192_[0];
-                                                                               if (g_strcmp0 (_tmp193_, "no_array_length") == 0) {
-                                                                                       gchar** _tmp194_ = NULL;
-                                                                                       gint _tmp194__length1 = 0;
-                                                                                       const gchar* _tmp195_ = NULL;
-                                                                                       gchar* _tmp196_ = NULL;
+                                                                               gchar** _tmp193_ = NULL;
+                                                                               gint _tmp193__length1 = 0;
+                                                                               const gchar* _tmp194_ = NULL;
+                                                                               _tmp193_ = nv;
+                                                                               _tmp193__length1 = nv_length1;
+                                                                               _tmp194_ = _tmp193_[0];
+                                                                               if (g_strcmp0 (_tmp194_, "no_array_length") == 0) {
+                                                                                       gchar** _tmp195_ = NULL;
+                                                                                       gint _tmp195__length1 = 0;
+                                                                                       const gchar* _tmp196_ = NULL;
                                                                                        gchar* _tmp197_ = NULL;
-                                                                                       gboolean _tmp198_ = FALSE;
-                                                                                       _tmp194_ = nv;
-                                                                                       _tmp194__length1 = nv_length1;
-                                                                                       _tmp195_ = _tmp194_[1];
-                                                                                       _tmp196_ = vala_gidl_parser_eval (self, _tmp195_);
-                                                                                       _tmp197_ = _tmp196_;
-                                                                                       _tmp198_ = g_strcmp0 (_tmp197_, "1") == 0;
-                                                                                       _g_free0 (_tmp197_);
-                                                                                       if (_tmp198_) {
-                                                                                               ValaParameter* _tmp199_ = NULL;
-                                                                                               _tmp199_ = p;
-                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp199_, "CCode", "array_length", FALSE, NULL);
+                                                                                       gchar* _tmp198_ = NULL;
+                                                                                       gboolean _tmp199_ = FALSE;
+                                                                                       _tmp195_ = nv;
+                                                                                       _tmp195__length1 = nv_length1;
+                                                                                       _tmp196_ = _tmp195_[1];
+                                                                                       _tmp197_ = vala_gidl_parser_eval (self, _tmp196_);
+                                                                                       _tmp198_ = _tmp197_;
+                                                                                       _tmp199_ = g_strcmp0 (_tmp198_, "1") == 0;
+                                                                                       _g_free0 (_tmp198_);
+                                                                                       if (_tmp199_) {
+                                                                                               ValaParameter* _tmp200_ = NULL;
+                                                                                               _tmp200_ = p;
+                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp200_, "CCode", "array_length", FALSE, NULL);
                                                                                        }
                                                                                } else {
-                                                                                       gchar** _tmp200_ = NULL;
-                                                                                       gint _tmp200__length1 = 0;
-                                                                                       const gchar* _tmp201_ = NULL;
-                                                                                       _tmp200_ = nv;
-                                                                                       _tmp200__length1 = nv_length1;
-                                                                                       _tmp201_ = _tmp200_[0];
-                                                                                       if (g_strcmp0 (_tmp201_, "array_length_type") == 0) {
-                                                                                               ValaParameter* _tmp202_ = NULL;
-                                                                                               gchar** _tmp203_ = NULL;
-                                                                                               gint _tmp203__length1 = 0;
-                                                                                               const gchar* _tmp204_ = NULL;
-                                                                                               _tmp202_ = p;
-                                                                                               _tmp203_ = nv;
-                                                                                               _tmp203__length1 = nv_length1;
-                                                                                               _tmp204_ = _tmp203_[1];
-                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp202_, "CCode", "array_length_type", _tmp204_, NULL);
+                                                                                       gchar** _tmp201_ = NULL;
+                                                                                       gint _tmp201__length1 = 0;
+                                                                                       const gchar* _tmp202_ = NULL;
+                                                                                       _tmp201_ = nv;
+                                                                                       _tmp201__length1 = nv_length1;
+                                                                                       _tmp202_ = _tmp201_[0];
+                                                                                       if (g_strcmp0 (_tmp202_, "array_length_type") == 0) {
+                                                                                               ValaParameter* _tmp203_ = NULL;
+                                                                                               gchar** _tmp204_ = NULL;
+                                                                                               gint _tmp204__length1 = 0;
+                                                                                               const gchar* _tmp205_ = NULL;
+                                                                                               _tmp203_ = p;
+                                                                                               _tmp204_ = nv;
+                                                                                               _tmp204__length1 = nv_length1;
+                                                                                               _tmp205_ = _tmp204_[1];
+                                                                                               vala_code_node_set_attribute_string ((ValaCodeNode*) _tmp203_, "CCode", "array_length_type", _tmp205_, NULL);
                                                                                        } else {
-                                                                                               gchar** _tmp205_ = NULL;
-                                                                                               gint _tmp205__length1 = 0;
-                                                                                               const gchar* _tmp206_ = NULL;
-                                                                                               _tmp205_ = nv;
-                                                                                               _tmp205__length1 = nv_length1;
-                                                                                               _tmp206_ = _tmp205_[0];
-                                                                                               if (g_strcmp0 (_tmp206_, "array_null_terminated") == 0) {
-                                                                                                       gchar** _tmp207_ = NULL;
-                                                                                                       gint _tmp207__length1 = 0;
-                                                                                                       const gchar* _tmp208_ = NULL;
-                                                                                                       gchar* _tmp209_ = NULL;
+                                                                                               gchar** _tmp206_ = NULL;
+                                                                                               gint _tmp206__length1 = 0;
+                                                                                               const gchar* _tmp207_ = NULL;
+                                                                                               _tmp206_ = nv;
+                                                                                               _tmp206__length1 = nv_length1;
+                                                                                               _tmp207_ = _tmp206_[0];
+                                                                                               if (g_strcmp0 (_tmp207_, "array_null_terminated") == 0) {
+                                                                                                       gchar** _tmp208_ = NULL;
+                                                                                                       gint _tmp208__length1 = 0;
+                                                                                                       const gchar* _tmp209_ = NULL;
                                                                                                        gchar* _tmp210_ = NULL;
-                                                                                                       gboolean _tmp211_ = FALSE;
-                                                                                                       _tmp207_ = nv;
-                                                                                                       _tmp207__length1 = nv_length1;
-                                                                                                       _tmp208_ = _tmp207_[1];
-                                                                                                       _tmp209_ = vala_gidl_parser_eval (self, _tmp208_);
-                                                                                                       _tmp210_ = _tmp209_;
-                                                                                                       _tmp211_ = g_strcmp0 (_tmp210_, "1") == 0;
-                                                                                                       _g_free0 (_tmp210_);
-                                                                                                       if (_tmp211_) {
-                                                                                                               ValaParameter* _tmp212_ = NULL;
+                                                                                                       gchar* _tmp211_ = NULL;
+                                                                                                       gboolean _tmp212_ = FALSE;
+                                                                                                       _tmp208_ = nv;
+                                                                                                       _tmp208__length1 = nv_length1;
+                                                                                                       _tmp209_ = _tmp208_[1];
+                                                                                                       _tmp210_ = vala_gidl_parser_eval (self, _tmp209_);
+                                                                                                       _tmp211_ = _tmp210_;
+                                                                                                       _tmp212_ = g_strcmp0 (_tmp211_, "1") == 0;
+                                                                                                       _g_free0 (_tmp211_);
+                                                                                                       if (_tmp212_) {
                                                                                                                ValaParameter* _tmp213_ = NULL;
-                                                                                                               _tmp212_ = p;
-                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp212_, "CCode", "array_length", FALSE, NULL);
+                                                                                                               ValaParameter* _tmp214_ = NULL;
                                                                                                                _tmp213_ = p;
-                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp213_, "CCode", "array_null_terminated", TRUE, NULL);
+                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp213_, "CCode", "array_length", FALSE, NULL);
+                                                                                                               _tmp214_ = p;
+                                                                                                               vala_code_node_set_attribute_bool ((ValaCodeNode*) _tmp214_, "CCode", "array_null_terminated", TRUE, NULL);
                                                                                                        }
                                                                                                } else {
-                                                                                                       gchar** _tmp214_ = NULL;
-                                                                                                       gint _tmp214__length1 = 0;
-                                                                                                       const gchar* _tmp215_ = NULL;
-                                                                                                       _tmp214_ = nv;
-                                                                                                       _tmp214__length1 = nv_length1;
-                                                                                                       _tmp215_ = _tmp214_[0];
-                                                                                                       if (g_strcmp0 (_tmp215_, "is_out") == 0) {
-                                                                                                               gchar** _tmp216_ = NULL;
-                                                                                                               gint _tmp216__length1 = 0;
-                                                                                                               const gchar* _tmp217_ = NULL;
-                                                                                                               gchar* _tmp218_ = NULL;
+                                                                                                       gchar** _tmp215_ = NULL;
+                                                                                                       gint _tmp215__length1 = 0;
+                                                                                                       const gchar* _tmp216_ = NULL;
+                                                                                                       _tmp215_ = nv;
+                                                                                                       _tmp215__length1 = nv_length1;
+                                                                                                       _tmp216_ = _tmp215_[0];
+                                                                                                       if (g_strcmp0 (_tmp216_, "is_out") == 0) {
+                                                                                                               gchar** _tmp217_ = NULL;
+                                                                                                               gint _tmp217__length1 = 0;
+                                                                                                               const gchar* _tmp218_ = NULL;
                                                                                                                gchar* _tmp219_ = NULL;
-                                                                                                               gboolean _tmp220_ = FALSE;
-                                                                                                               _tmp216_ = nv;
-                                                                                                               _tmp216__length1 = nv_length1;
-                                                                                                               _tmp217_ = _tmp216_[1];
-                                                                                                               _tmp218_ = vala_gidl_parser_eval (self, _tmp217_);
-                                                                                                               _tmp219_ = _tmp218_;
-                                                                                                               _tmp220_ = g_strcmp0 (_tmp219_, "1") == 0;
-                                                                                                               _g_free0 (_tmp219_);
-                                                                                                               if (_tmp220_) {
-                                                                                                                       ValaParameter* _tmp221_ = NULL;
-                                                                                                                       _tmp221_ = p;
-                                                                                                                       vala_parameter_set_direction (_tmp221_, VALA_PARAMETER_DIRECTION_OUT);
+                                                                                                               gchar* _tmp220_ = NULL;
+                                                                                                               gboolean _tmp221_ = FALSE;
+                                                                                                               _tmp217_ = nv;
+                                                                                                               _tmp217__length1 = nv_length1;
+                                                                                                               _tmp218_ = _tmp217_[1];
+                                                                                                               _tmp219_ = vala_gidl_parser_eval (self, _tmp218_);
+                                                                                                               _tmp220_ = _tmp219_;
+                                                                                                               _tmp221_ = g_strcmp0 (_tmp220_, "1") == 0;
+                                                                                                               _g_free0 (_tmp220_);
+                                                                                                               if (_tmp221_) {
+                                                                                                                       ValaParameter* _tmp222_ = NULL;
+                                                                                                                       _tmp222_ = p;
+                                                                                                                       vala_parameter_set_direction (_tmp222_, VALA_PARAMETER_DIRECTION_OUT);
                                                                                                                }
                                                                                                        } else {
-                                                                                                               gchar** _tmp222_ = NULL;
-                                                                                                               gint _tmp222__length1 = 0;
-                                                                                                               const gchar* _tmp223_ = NULL;
-                                                                                                               _tmp222_ = nv;
-                                                                                                               _tmp222__length1 = nv_length1;
-                                                                                                               _tmp223_ = _tmp222_[0];
-                                                                                                               if (g_strcmp0 (_tmp223_, "is_ref") == 0) {
-                                                                                                                       gchar** _tmp224_ = NULL;
-                                                                                                                       gint _tmp224__length1 = 0;
-                                                                                                                       const gchar* _tmp225_ = NULL;
-                                                                                                                       gchar* _tmp226_ = NULL;
+                                                                                                               gchar** _tmp223_ = NULL;
+                                                                                                               gint _tmp223__length1 = 0;
+                                                                                                               const gchar* _tmp224_ = NULL;
+                                                                                                               _tmp223_ = nv;
+                                                                                                               _tmp223__length1 = nv_length1;
+                                                                                                               _tmp224_ = _tmp223_[0];
+                                                                                                               if (g_strcmp0 (_tmp224_, "is_ref") == 0) {
+                                                                                                                       gchar** _tmp225_ = NULL;
+                                                                                                                       gint _tmp225__length1 = 0;
+                                                                                                                       const gchar* _tmp226_ = NULL;
                                                                                                                        gchar* _tmp227_ = NULL;
-                                                                                                                       gboolean _tmp228_ = FALSE;
-                                                                                                                       _tmp224_ = nv;
-                                                                                                                       _tmp224__length1 = nv_length1;
-                                                                                                                       _tmp225_ = _tmp224_[1];
-                                                                                                                       _tmp226_ = vala_gidl_parser_eval (self, _tmp225_);
-                                                                                                                       _tmp227_ = _tmp226_;
-                                                                                                                       _tmp228_ = g_strcmp0 (_tmp227_, "1") == 0;
-                                                                                                                       _g_free0 (_tmp227_);
-                                                                                                                       if (_tmp228_) {
-                                                                                                                               ValaParameter* _tmp229_ = NULL;
-                                                                                                                               _tmp229_ = p;
-                                                                                                                               vala_parameter_set_direction (_tmp229_, VALA_PARAMETER_DIRECTION_REF);
+                                                                                                                       gchar* _tmp228_ = NULL;
+                                                                                                                       gboolean _tmp229_ = FALSE;
+                                                                                                                       _tmp225_ = nv;
+                                                                                                                       _tmp225__length1 = nv_length1;
+                                                                                                                       _tmp226_ = _tmp225_[1];
+                                                                                                                       _tmp227_ = vala_gidl_parser_eval (self, _tmp226_);
+                                                                                                                       _tmp228_ = _tmp227_;
+                                                                                                                       _tmp229_ = g_strcmp0 (_tmp228_, "1") == 0;
+                                                                                                                       _g_free0 (_tmp228_);
+                                                                                                                       if (_tmp229_) {
+                                                                                                                               ValaParameter* _tmp230_ = NULL;
+                                                                                                                               _tmp230_ = p;
+                                                                                                                               vala_parameter_set_direction (_tmp230_, VALA_PARAMETER_DIRECTION_REF);
                                                                                                                        }
                                                                                                                } else {
-                                                                                                                       gchar** _tmp230_ = NULL;
-                                                                                                                       gint _tmp230__length1 = 0;
-                                                                                                                       const gchar* _tmp231_ = NULL;
-                                                                                                                       _tmp230_ = nv;
-                                                                                                                       _tmp230__length1 = nv_length1;
-                                                                                                                       _tmp231_ = _tmp230_[0];
-                                                                                                                       if (g_strcmp0 (_tmp231_, "nullable") == 0) {
-                                                                                                                               gboolean _tmp232_ = FALSE;
-                                                                                                                               gchar** _tmp233_ = NULL;
-                                                                                                                               gint _tmp233__length1 = 0;
-                                                                                                                               const gchar* _tmp234_ = NULL;
-                                                                                                                               gchar* _tmp235_ = NULL;
+                                                                                                                       gchar** _tmp231_ = NULL;
+                                                                                                                       gint _tmp231__length1 = 0;
+                                                                                                                       const gchar* _tmp232_ = NULL;
+                                                                                                                       _tmp231_ = nv;
+                                                                                                                       _tmp231__length1 = nv_length1;
+                                                                                                                       _tmp232_ = _tmp231_[0];
+                                                                                                                       if (g_strcmp0 (_tmp232_, "nullable") == 0) {
+                                                                                                                               gboolean _tmp233_ = FALSE;
+                                                                                                                               gchar** _tmp234_ = NULL;
+                                                                                                                               gint _tmp234__length1 = 0;
+                                                                                                                               const gchar* _tmp235_ = NULL;
                                                                                                                                gchar* _tmp236_ = NULL;
-                                                                                                                               gboolean _tmp237_ = FALSE;
-                                                                                                                               _tmp233_ = nv;
-                                                                                                                               _tmp233__length1 = nv_length1;
-                                                                                                                               _tmp234_ = _tmp233_[1];
-                                                                                                                               _tmp235_ = vala_gidl_parser_eval (self, _tmp234_);
-                                                                                                                               _tmp236_ = _tmp235_;
-                                                                                                                               _tmp237_ = g_strcmp0 (_tmp236_, "1") == 0;
-                                                                                                                               _g_free0 (_tmp236_);
-                                                                                                                               if (_tmp237_) {
-                                                                                                                                       ValaDataType* _tmp238_ = NULL;
-                                                                                                                                       _tmp238_ = param_type;
-                                                                                                                                       _tmp232_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp238_, VALA_TYPE_VOID_TYPE);
-                                                                                                                               } else {
-                                                                                                                                       _tmp232_ = FALSE;
-                                                                                                                               }
-                                                                                                                               if (_tmp232_) {
+                                                                                                                               gchar* _tmp237_ = NULL;
+                                                                                                                               gboolean _tmp238_ = FALSE;
+                                                                                                                               _tmp234_ = nv;
+                                                                                                                               _tmp234__length1 = nv_length1;
+                                                                                                                               _tmp235_ = _tmp234_[1];
+                                                                                                                               _tmp236_ = vala_gidl_parser_eval (self, _tmp235_);
+                                                                                                                               _tmp237_ = _tmp236_;
+                                                                                                                               _tmp238_ = g_strcmp0 (_tmp237_, "1") == 0;
+                                                                                                                               _g_free0 (_tmp237_);
+                                                                                                                               if (_tmp238_) {
                                                                                                                                        ValaDataType* _tmp239_ = NULL;
                                                                                                                                        _tmp239_ = param_type;
-                                                                                                                                       vala_data_type_set_nullable (_tmp239_, TRUE);
+                                                                                                                                       _tmp233_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp239_, VALA_TYPE_VOID_TYPE);
+                                                                                                                               } else {
+                                                                                                                                       _tmp233_ = FALSE;
+                                                                                                                               }
+                                                                                                                               if (_tmp233_) {
+                                                                                                                                       ValaDataType* _tmp240_ = NULL;
+                                                                                                                                       _tmp240_ = param_type;
+                                                                                                                                       vala_data_type_set_nullable (_tmp240_, TRUE);
                                                                                                                                }
                                                                                                                        } else {
-                                                                                                                               gchar** _tmp240_ = NULL;
-                                                                                                                               gint _tmp240__length1 = 0;
-                                                                                                                               const gchar* _tmp241_ = NULL;
-                                                                                                                               _tmp240_ = nv;
-                                                                                                                               _tmp240__length1 = nv_length1;
-                                                                                                                               _tmp241_ = _tmp240_[0];
-                                                                                                                               if (g_strcmp0 (_tmp241_, "transfer_ownership") == 0) {
-                                                                                                                                       gchar** _tmp242_ = NULL;
-                                                                                                                                       gint _tmp242__length1 = 0;
-                                                                                                                                       const gchar* _tmp243_ = NULL;
-                                                                                                                                       gchar* _tmp244_ = NULL;
+                                                                                                                               gchar** _tmp241_ = NULL;
+                                                                                                                               gint _tmp241__length1 = 0;
+                                                                                                                               const gchar* _tmp242_ = NULL;
+                                                                                                                               _tmp241_ = nv;
+                                                                                                                               _tmp241__length1 = nv_length1;
+                                                                                                                               _tmp242_ = _tmp241_[0];
+                                                                                                                               if (g_strcmp0 (_tmp242_, "transfer_ownership") == 0) {
+                                                                                                                                       gchar** _tmp243_ = NULL;
+                                                                                                                                       gint _tmp243__length1 = 0;
+                                                                                                                                       const gchar* _tmp244_ = NULL;
                                                                                                                                        gchar* _tmp245_ = NULL;
-                                                                                                                                       gboolean _tmp246_ = FALSE;
-                                                                                                                                       _tmp242_ = nv;
-                                                                                                                                       _tmp242__length1 = nv_length1;
-                                                                                                                                       _tmp243_ = _tmp242_[1];
-                                                                                                                                       _tmp244_ = vala_gidl_parser_eval (self, _tmp243_);
-                                                                                                                                       _tmp245_ = _tmp244_;
-                                                                                                                                       _tmp246_ = g_strcmp0 (_tmp245_, "1") == 0;
-                                                                                                                                       _g_free0 (_tmp245_);
-                                                                                                                                       if (_tmp246_) {
-                                                                                                                                               ValaDataType* _tmp247_ = NULL;
-                                                                                                                                               _tmp247_ = param_type;
-                                                                                                                                               vala_data_type_set_value_owned (_tmp247_, TRUE);
+                                                                                                                                       gchar* _tmp246_ = NULL;
+                                                                                                                                       gboolean _tmp247_ = FALSE;
+                                                                                                                                       _tmp243_ = nv;
+                                                                                                                                       _tmp243__length1 = nv_length1;
+                                                                                                                                       _tmp244_ = _tmp243_[1];
+                                                                                                                                       _tmp245_ = vala_gidl_parser_eval (self, _tmp244_);
+                                                                                                                                       _tmp246_ = _tmp245_;
+                                                                                                                                       _tmp247_ = g_strcmp0 (_tmp246_, "1") == 0;
+                                                                                                                                       _g_free0 (_tmp246_);
+                                                                                                                                       if (_tmp247_) {
+                                                                                                                                               ValaDataType* _tmp248_ = NULL;
+                                                                                                                                               _tmp248_ = param_type;
+                                                                                                                                               vala_data_type_set_value_owned (_tmp248_, TRUE);
                                                                                                                                        }
                                                                                                                                } else {
-                                                                                                                                       gchar** _tmp248_ = NULL;
-                                                                                                                                       gint _tmp248__length1 = 0;
-                                                                                                                                       const gchar* _tmp249_ = NULL;
-                                                                                                                                       _tmp248_ = nv;
-                                                                                                                                       _tmp248__length1 = nv_length1;
-                                                                                                                                       _tmp249_ = _tmp248_[0];
-                                                                                                                                       if (g_strcmp0 (_tmp249_, "type_name") == 0) {
-                                                                                                                                               ValaParameter* _tmp250_ = NULL;
-                                                                                                                                               gchar** _tmp251_ = NULL;
-                                                                                                                                               gint _tmp251__length1 = 0;
-                                                                                                                                               const gchar* _tmp252_ = NULL;
-                                                                                                                                               gchar* _tmp253_ = NULL;
+                                                                                                                                       gchar** _tmp249_ = NULL;
+                                                                                                                                       gint _tmp249__length1 = 0;
+                                                                                                                                       const gchar* _tmp250_ = NULL;
+                                                                                                                                       _tmp249_ = nv;
+                                                                                                                                       _tmp249__length1 = nv_length1;
+                                                                                                                                       _tmp250_ = _tmp249_[0];
+                                                                                                                                       if (g_strcmp0 (_tmp250_, "type_name") == 0) {
+                                                                                                                                               ValaParameter* _tmp251_ = NULL;
+                                                                                                                                               gchar** _tmp252_ = NULL;
+                                                                                                                                               gint _tmp252__length1 = 0;
+                                                                                                                                               const gchar* _tmp253_ = NULL;
                                                                                                                                                gchar* _tmp254_ = NULL;
-                                                                                                                                               ValaDataType* _tmp255_ = NULL;
+                                                                                                                                               gchar* _tmp255_ = NULL;
                                                                                                                                                ValaDataType* _tmp256_ = NULL;
-                                                                                                                                               _tmp250_ = p;
-                                                                                                                                               _tmp251_ = nv;
-                                                                                                                                               _tmp251__length1 = nv_length1;
-                                                                                                                                               _tmp252_ = _tmp251_[1];
-                                                                                                                                               _tmp253_ = vala_gidl_parser_eval (self, _tmp252_);
-                                                                                                                                               _tmp254_ = _tmp253_;
-                                                                                                                                               _tmp255_ = vala_gidl_parser_parse_type_from_string (self, _tmp254_, FALSE, NULL);
+                                                                                                                                               ValaDataType* _tmp257_ = NULL;
+                                                                                                                                               _tmp251_ = p;
+                                                                                                                                               _tmp252_ = nv;
+                                                                                                                                               _tmp252__length1 = nv_length1;
+                                                                                                                                               _tmp253_ = _tmp252_[1];
+                                                                                                                                               _tmp254_ = vala_gidl_parser_eval (self, _tmp253_);
+                                                                                                                                               _tmp255_ = _tmp254_;
+                                                                                                                                               _tmp256_ = vala_gidl_parser_parse_type_from_string (self, _tmp255_, FALSE, NULL);
                                                                                                                                                _vala_code_node_unref0 (param_type);
-                                                                                                                                               param_type = _tmp255_;
-                                                                                                                                               _tmp256_ = param_type;
-                                                                                                                                               vala_variable_set_variable_type ((ValaVariable*) _tmp250_, _tmp256_);
-                                                                                                                                               _g_free0 (_tmp254_);
+                                                                                                                                               param_type = _tmp256_;
+                                                                                                                                               _tmp257_ = param_type;
+                                                                                                                                               vala_variable_set_variable_type ((ValaVariable*) _tmp251_, _tmp257_);
+                                                                                                                                               _g_free0 (_tmp255_);
                                                                                                                                        } else {
-                                                                                                                                               gchar** _tmp257_ = NULL;
-                                                                                                                                               gint _tmp257__length1 = 0;
-                                                                                                                                               const gchar* _tmp258_ = NULL;
-                                                                                                                                               _tmp257_ = nv;
-                                                                                                                                               _tmp257__length1 = nv_length1;
-                                                                                                                                               _tmp258_ = _tmp257_[0];
-                                                                                                                                               if (g_strcmp0 (_tmp258_, "type_arguments") == 0) {
-                                                                                                                                                       ValaParameter* _tmp259_ = NULL;
-                                                                                                                                                       ValaDataType* _tmp260_ = NULL;
+                                                                                                                                               gchar** _tmp258_ = NULL;
+                                                                                                                                               gint _tmp258__length1 = 0;
+                                                                                                                                               const gchar* _tmp259_ = NULL;
+                                                                                                                                               _tmp258_ = nv;
+                                                                                                                                               _tmp258__length1 = nv_length1;
+                                                                                                                                               _tmp259_ = _tmp258_[0];
+                                                                                                                                               if (g_strcmp0 (_tmp259_, "type_arguments") == 0) {
+                                                                                                                                                       ValaParameter* _tmp260_ = NULL;
                                                                                                                                                        ValaDataType* _tmp261_ = NULL;
-                                                                                                                                                       gchar** _tmp262_ = NULL;
-                                                                                                                                                       gint _tmp262__length1 = 0;
-                                                                                                                                                       const gchar* _tmp263_ = NULL;
-                                                                                                                                                       gchar* _tmp264_ = NULL;
+                                                                                                                                                       ValaDataType* _tmp262_ = NULL;
+                                                                                                                                                       gchar** _tmp263_ = NULL;
+                                                                                                                                                       gint _tmp263__length1 = 0;
+                                                                                                                                                       const gchar* _tmp264_ = NULL;
                                                                                                                                                        gchar* _tmp265_ = NULL;
-                                                                                                                                                       _tmp259_ = p;
-                                                                                                                                                       _tmp260_ = vala_variable_get_variable_type ((ValaVariable*) _tmp259_);
-                                                                                                                                                       _tmp261_ = _tmp260_;
-                                                                                                                                                       _tmp262_ = nv;
-                                                                                                                                                       _tmp262__length1 = nv_length1;
-                                                                                                                                                       _tmp263_ = _tmp262_[1];
-                                                                                                                                                       _tmp264_ = vala_gidl_parser_eval (self, _tmp263_);
-                                                                                                                                                       _tmp265_ = _tmp264_;
-                                                                                                                                                       vala_gidl_parser_parse_type_arguments_from_string (self, _tmp261_, _tmp265_, NULL);
-                                                                                                                                                       _g_free0 (_tmp265_);
+                                                                                                                                                       gchar* _tmp266_ = NULL;
+                                                                                                                                                       _tmp260_ = p;
+                                                                                                                                                       _tmp261_ = vala_variable_get_variable_type ((ValaVariable*) _tmp260_);
+                                                                                                                                                       _tmp262_ = _tmp261_;
+                                                                                                                                                       _tmp263_ = nv;
+                                                                                                                                                       _tmp263__length1 = nv_length1;
+                                                                                                                                                       _tmp264_ = _tmp263_[1];
+                                                                                                                                                       _tmp265_ = vala_gidl_parser_eval (self, _tmp264_);
+                                                                                                                                                       _tmp266_ = _tmp265_;
+                                                                                                                                                       vala_gidl_parser_parse_type_arguments_from_string (self, _tmp262_, _tmp266_, NULL);
+                                                                                                                                                       _g_free0 (_tmp266_);
                                                                                                                                                } else {
-                                                                                                                                                       gchar** _tmp266_ = NULL;
-                                                                                                                                                       gint _tmp266__length1 = 0;
-                                                                                                                                                       const gchar* _tmp267_ = NULL;
-                                                                                                                                                       _tmp266_ = nv;
-                                                                                                                                                       _tmp266__length1 = nv_length1;
-                                                                                                                                                       _tmp267_ = _tmp266_[0];
-                                                                                                                                                       if (g_strcmp0 (_tmp267_, "namespace_name") == 0) {
-                                                                                                                                                               gchar** _tmp268_ = NULL;
-                                                                                                                                                               gint _tmp268__length1 = 0;
-                                                                                                                                                               const gchar* _tmp269_ = NULL;
-                                                                                                                                                               gchar* _tmp270_ = NULL;
-                                                                                                                                                               _tmp268_ = nv;
-                                                                                                                                                               _tmp268__length1 = nv_length1;
-                                                                                                                                                               _tmp269_ = _tmp268_[1];
-                                                                                                                                                               _tmp270_ = vala_gidl_parser_eval (self, _tmp269_);
+                                                                                                                                                       gchar** _tmp267_ = NULL;
+                                                                                                                                                       gint _tmp267__length1 = 0;
+                                                                                                                                                       const gchar* _tmp268_ = NULL;
+                                                                                                                                                       _tmp267_ = nv;
+                                                                                                                                                       _tmp267__length1 = nv_length1;
+                                                                                                                                                       _tmp268_ = _tmp267_[0];
+                                                                                                                                                       if (g_strcmp0 (_tmp268_, "namespace_name") == 0) {
+                                                                                                                                                               gchar** _tmp269_ = NULL;
+                                                                                                                                                               gint _tmp269__length1 = 0;
+                                                                                                                                                               const gchar* _tmp270_ = NULL;
+                                                                                                                                                               gchar* _tmp271_ = NULL;
+                                                                                                                                                               _tmp269_ = nv;
+                                                                                                                                                               _tmp269__length1 = nv_length1;
+                                                                                                                                                               _tmp270_ = _tmp269_[1];
+                                                                                                                                                               _tmp271_ = vala_gidl_parser_eval (self, _tmp270_);
                                                                                                                                                                _g_free0 (ns_name);
-                                                                                                                                                               ns_name = _tmp270_;
+                                                                                                                                                               ns_name = _tmp271_;
                                                                                                                                                        }
                                                                                                                                                }
                                                                                                                                        }
@@ -19193,39 +19229,39 @@ static ValaSignal* vala_gidl_parser_parse_signal (ValaGIdlParser* self, GIdlNode
                                                        }
                                                }
                                        }
-                                       _tmp271_ = ns_name;
-                                       if (_tmp271_ != NULL) {
-                                               ValaDataType* _tmp272_ = NULL;
-                                               ValaUnresolvedSymbol* _tmp273_ = NULL;
+                                       _tmp272_ = ns_name;
+                                       if (_tmp272_ != NULL) {
+                                               ValaDataType* _tmp273_ = NULL;
                                                ValaUnresolvedSymbol* _tmp274_ = NULL;
-                                               const gchar* _tmp275_ = NULL;
-                                               ValaUnresolvedSymbol* _tmp276_ = NULL;
+                                               ValaUnresolvedSymbol* _tmp275_ = NULL;
+                                               const gchar* _tmp276_ = NULL;
                                                ValaUnresolvedSymbol* _tmp277_ = NULL;
-                                               _tmp272_ = param_type;
-                                               _tmp273_ = vala_unresolved_type_get_unresolved_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp272_, VALA_TYPE_UNRESOLVED_TYPE, ValaUnresolvedType));
-                                               _tmp274_ = _tmp273_;
-                                               _tmp275_ = ns_name;
-                                               _tmp276_ = vala_unresolved_symbol_new (NULL, _tmp275_, NULL);
-                                               _tmp277_ = _tmp276_;
-                                               vala_unresolved_symbol_set_inner (_tmp274_, _tmp277_);
-                                               _vala_code_node_unref0 (_tmp277_);
+                                               ValaUnresolvedSymbol* _tmp278_ = NULL;
+                                               _tmp273_ = param_type;
+                                               _tmp274_ = vala_unresolved_type_get_unresolved_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp273_, VALA_TYPE_UNRESOLVED_TYPE, ValaUnresolvedType));
+                                               _tmp275_ = _tmp274_;
+                                               _tmp276_ = ns_name;
+                                               _tmp277_ = vala_unresolved_symbol_new (NULL, _tmp276_, NULL);
+                                               _tmp278_ = _tmp277_;
+                                               vala_unresolved_symbol_set_inner (_tmp275_, _tmp278_);
+                                               _vala_code_node_unref0 (_tmp278_);
                                        }
                                        _g_free0 (ns_name);
                                }
-                               _tmp279_ = show_param;
-                               if (_tmp279_) {
-                                       _tmp278_ = TRUE;
+                               _tmp280_ = show_param;
+                               if (_tmp280_) {
+                                       _tmp279_ = TRUE;
                                } else {
-                                       gboolean _tmp280_ = FALSE;
-                                       _tmp280_ = hide_param;
-                                       _tmp278_ = !_tmp280_;
+                                       gboolean _tmp281_ = FALSE;
+                                       _tmp281_ = hide_param;
+                                       _tmp279_ = !_tmp281_;
                                }
-                               if (_tmp278_) {
-                                       ValaSignal* _tmp281_ = NULL;
-                                       ValaParameter* _tmp282_ = NULL;
-                                       _tmp281_ = sig;
-                                       _tmp282_ = p;
-                                       vala_signal_add_parameter (_tmp281_, _tmp282_);
+                               if (_tmp279_) {
+                                       ValaSignal* _tmp282_ = NULL;
+                                       ValaParameter* _tmp283_ = NULL;
+                                       _tmp282_ = sig;
+                                       _tmp283_ = p;
+                                       vala_signal_add_parameter (_tmp282_, _tmp283_);
                                }
                                _vala_code_node_unref0 (p);
                                _vala_code_node_unref0 (param_type);
@@ -19252,16 +19288,16 @@ ValaGIdlParser* vala_gidl_parser_new (void) {
 
 static void vala_gidl_parser_class_init (ValaGIdlParserClass * klass) {
        vala_gidl_parser_parent_class = g_type_class_peek_parent (klass);
-       VALA_CODE_VISITOR_CLASS (klass)->finalize = vala_gidl_parser_finalize;
+       ((ValaCodeVisitorClass *) klass)->finalize = vala_gidl_parser_finalize;
        g_type_class_add_private (klass, sizeof (ValaGIdlParserPrivate));
-       VALA_CODE_VISITOR_CLASS (klass)->visit_namespace = vala_gidl_parser_real_visit_namespace;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_class = vala_gidl_parser_real_visit_class;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_struct = vala_gidl_parser_real_visit_struct;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_interface = vala_gidl_parser_real_visit_interface;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_enum = vala_gidl_parser_real_visit_enum;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_error_domain = vala_gidl_parser_real_visit_error_domain;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_delegate = vala_gidl_parser_real_visit_delegate;
-       VALA_CODE_VISITOR_CLASS (klass)->visit_source_file = vala_gidl_parser_real_visit_source_file;
+       ((ValaCodeVisitorClass *) klass)->visit_namespace = vala_gidl_parser_real_visit_namespace;
+       ((ValaCodeVisitorClass *) klass)->visit_class = vala_gidl_parser_real_visit_class;
+       ((ValaCodeVisitorClass *) klass)->visit_struct = vala_gidl_parser_real_visit_struct;
+       ((ValaCodeVisitorClass *) klass)->visit_interface = vala_gidl_parser_real_visit_interface;
+       ((ValaCodeVisitorClass *) klass)->visit_enum = vala_gidl_parser_real_visit_enum;
+       ((ValaCodeVisitorClass *) klass)->visit_error_domain = vala_gidl_parser_real_visit_error_domain;
+       ((ValaCodeVisitorClass *) klass)->visit_delegate = vala_gidl_parser_real_visit_delegate;
+       ((ValaCodeVisitorClass *) klass)->visit_source_file = vala_gidl_parser_real_visit_source_file;
 }
 
 
index ee9f76a..48c18a3 100644 (file)
@@ -602,6 +602,7 @@ public class Vala.GIdlParser : CodeVisitor {
                                        }
                                } else if (nv[0] == "is_array") {
                                        if (eval (nv[1]) == "1") {
+                                               return_type.value_owned = true;
                                                return_type = new ArrayType (return_type, 1, return_type.source_reference);
                                                cb.return_type = return_type;
                                        }
@@ -685,6 +686,7 @@ public class Vala.GIdlParser : CodeVisitor {
                                                        }
                                                } else if (nv[0] == "is_array") {
                                                        if (eval (nv[1]) == "1") {
+                                                               param_type.value_owned = true;
                                                                param_type = new ArrayType (param_type, 1, param_type.source_reference);
                                                                p.variable_type = param_type;
                                                                if (!out_requested) {
@@ -1882,6 +1884,7 @@ public class Vala.GIdlParser : CodeVisitor {
                        if (type == null) {
                                return element_type;
                        }
+                       element_type.value_owned = true;
                        return new ArrayType (element_type, 1, element_type.source_reference);
                } else if (type_node.tag == TypeTag.LIST) {
                        type.unresolved_symbol = new UnresolvedSymbol (new UnresolvedSymbol (null, "GLib"), "List");
@@ -1915,6 +1918,7 @@ public class Vala.GIdlParser : CodeVisitor {
                        } else if (n == "guchar" || n == "guint8") {
                                type.unresolved_symbol = new UnresolvedSymbol (null, "uchar");
                                if (type_node.is_pointer) {
+                                       type.value_owned = true;
                                        return new ArrayType (type, 1, type.source_reference);
                                }
                        } else if (n == "gushort") {
@@ -1946,10 +1950,12 @@ public class Vala.GIdlParser : CodeVisitor {
                        } else if (n == "GType") {
                                type.unresolved_symbol = new UnresolvedSymbol (new UnresolvedSymbol (null, "GLib"), "Type");
                                if (type_node.is_pointer) {
+                                       type.value_owned = true;
                                        return new ArrayType (type, 1, type.source_reference);
                                }
                        } else if (n == "GStrv") {
                                type.unresolved_symbol = new UnresolvedSymbol (null, "string");
+                               type.value_owned = true;
                                return new ArrayType (type, 1, type.source_reference);
                        } else {
                                var named_type = parse_type_string (n);
@@ -2172,6 +2178,7 @@ public class Vala.GIdlParser : CodeVisitor {
                }
 
                if (array_data != null && array_data.length > 0) {
+                       type.value_owned = true;
                        type = new ArrayType (type, array_dimension_data.length + 1, source_reference);
                }
 
@@ -2264,6 +2271,7 @@ public class Vala.GIdlParser : CodeVisitor {
                                        m.set_attribute_string ("CCode", "sentinel", eval (nv[1]));
                                } else if (nv[0] == "is_array") {
                                        if (eval (nv[1]) == "1") {
+                                               return_type.value_owned = true;
                                                return_type = new ArrayType (return_type, 1, return_type.source_reference);
                                                m.return_type = return_type;
                                        }
@@ -2412,6 +2420,7 @@ public class Vala.GIdlParser : CodeVisitor {
                                        var nv = attr.split ("=", 2);
                                        if (nv[0] == "is_array") {
                                                if (eval (nv[1]) == "1") {
+                                                       param_type.value_owned = true;
                                                        param_type = new ArrayType (param_type, 1, param_type.source_reference);
                                                        p.variable_type = param_type;
                                                        if (!out_requested) {
@@ -2527,6 +2536,7 @@ public class Vala.GIdlParser : CodeVisitor {
                        if (last_param != null && p.name == "n_" + last_param.name) {
                                if (!(last_param_type is ArrayType)) {
                                        // last_param is array, p is array length
+                                       last_param_type.value_owned = true;
                                        last_param_type = new ArrayType (last_param_type, 1, last_param_type.source_reference);
                                        last_param.variable_type = last_param_type;
                                        last_param.direction = ParameterDirection.IN;
@@ -2824,6 +2834,7 @@ public class Vala.GIdlParser : CodeVisitor {
                                        }
                                } else if (nv[0] == "is_array") {
                                        if (eval (nv[1]) == "1") {
+                                               type.value_owned = true;
                                                type = new ArrayType (type, 1, type.source_reference);
                                        }
                                } else if (nv[0] == "weak") {
@@ -3096,6 +3107,7 @@ public class Vala.GIdlParser : CodeVisitor {
                                                }
                                        } else if (nv[0] == "is_array") {
                                                if (eval (nv[1]) == "1") {
+                                                       param_type.value_owned = true;
                                                        param_type = new ArrayType (param_type, 1, param_type.source_reference);
                                                        p.variable_type = param_type;
                                                        p.direction = ParameterDirection.IN;
index 396ba6f..3c8e8bd 100644 (file)
@@ -306,7 +306,7 @@ static void vala_vapi_check_parse_gidl (ValaVAPICheck* self) {
                _tmp8_ = _tmp7_;
                _tmp9_ = g_idl_parse_file (_tmp8_, &_inner_error_);
                _tmp5_ = _tmp9_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        if (_inner_error_->domain == G_MARKUP_ERROR) {
                                goto __catch0_g_markup_error;
                        }
@@ -361,7 +361,7 @@ static void vala_vapi_check_parse_gidl (ValaVAPICheck* self) {
                _g_error_free0 (e);
        }
        __finally0:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return;
@@ -607,7 +607,7 @@ static gint vala_vapi_check_check_metadata (ValaVAPICheck* self) {
                _tmp2_ = _tmp1_;
                _tmp3_ = g_io_channel_new_file (_tmp2_, "r", &_inner_error_);
                metafile = _tmp3_;
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        goto __catch1_g_error;
                }
                lineno = 1;
@@ -637,7 +637,7 @@ static gint vala_vapi_check_check_metadata (ValaVAPICheck* self) {
                        _g_free0 (line);
                        line = _tmp6_;
                        _tmp4_ = _tmp7_;
-                       if (_inner_error_ != NULL) {
+                       if (G_UNLIKELY (_inner_error_ != NULL)) {
                                _g_free0 (line);
                                _g_io_channel_unref0 (metafile);
                                goto __catch1_g_error;
index d3f3c3a..6826eb1 100644 (file)
@@ -948,7 +948,7 @@ static gint vala_vapi_gen_main (gchar** args, int args_length1) {
                g_option_context_add_main_entries (_tmp2_, VALA_VAPI_GEN_options, NULL);
                _tmp3_ = opt_context;
                g_option_context_parse (_tmp3_, &args_length1, &args, &_inner_error_);
-               if (_inner_error_ != NULL) {
+               if (G_UNLIKELY (_inner_error_ != NULL)) {
                        _g_option_context_free0 (opt_context);
                        if (_inner_error_->domain == G_OPTION_ERROR) {
                                goto __catch3_g_option_error;
@@ -987,7 +987,7 @@ static gint vala_vapi_gen_main (gchar** args, int args_length1) {
                return result;
        }
        __finally3:
-       if (_inner_error_ != NULL) {
+       if (G_UNLIKELY (_inner_error_ != NULL)) {
                g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
                g_clear_error (&_inner_error_);
                return 0;